From 51aad5e6e5bb97f35a52dbce74b96da80ae82dfa Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Wed, 26 Aug 2026 18:36:51 +0200 Subject: [PATCH 1/4] feat(ui): add typed headless createUI adapters --- .changeset/typed-headless-chat-ui.md | 9 + docs/api/ai-client.md | 2 + docs/api/ai-react.md | 2 + docs/api/ai-solid.md | 2 + docs/api/ai-svelte.md | 2 + docs/api/ai-vue.md | 2 + docs/config.json | 46 +- docs/migration/create-ui.md | 116 +++++ docs/ui/custom-adapters.md | 34 ++ docs/ui/react.md | 224 ++++++++++ docs/ui/solid.md | 65 +++ docs/ui/svelte.md | 58 +++ docs/ui/vue.md | 72 ++++ examples/ag-ui/src/App.tsx | 96 +++-- examples/ts-solid-chat/src/routeTree.gen.ts | 27 +- .../ts-solid-chat/src/routes/solid-ui.tsx | 61 +++ examples/ts-svelte-chat/package.json | 1 + .../src/routes/svelte-ui/+page.svelte | 71 ++++ .../src/routes/svelte-ui/Fallback.svelte | 7 + .../src/routes/svelte-ui/Layout.svelte | 35 ++ .../src/routes/svelte-ui/Message.svelte | 15 + examples/ts-vue-chat/src/views/VueUIView.vue | 114 +++-- kiira.config.ts | 2 +- packages/ai-client/package.json | 4 + packages/ai-client/src/ui.ts | 30 ++ packages/ai-client/src/ui/selectors.ts | 204 +++++++++ packages/ai-client/src/ui/types.ts | 156 +++++++ packages/ai-client/tests/ui-fixtures.ts | 261 ++++++++++++ packages/ai-client/tests/ui-selectors.test.ts | 175 ++++++++ packages/ai-client/tests/ui-types.test-d.ts | 23 + packages/ai-client/vite.config.ts | 7 +- packages/ai-react-ui/src/chat-input.tsx | 3 + packages/ai-react-ui/src/chat-message.tsx | 2 + packages/ai-react-ui/src/chat-messages.tsx | 3 + packages/ai-react-ui/src/chat.tsx | 6 + packages/ai-react-ui/src/create-ui.tsx | 392 +++++++++++++++++ packages/ai-react-ui/src/index.ts | 12 + packages/ai-react-ui/src/tool-approval.tsx | 3 + .../ai-react-ui/tests/coexistence.test.ts | 22 + .../tests/create-ui-types.test.tsx | 39 ++ packages/ai-react-ui/tests/create-ui.test.tsx | 309 ++++++++++++++ .../ai-react-ui/tests/react-dom-server.d.ts | 4 + packages/ai-react-ui/tsconfig.json | 8 +- packages/ai-react-ui/vite.config.ts | 2 +- packages/ai-solid-ui/src/chat-input.tsx | 3 + packages/ai-solid-ui/src/chat-message.tsx | 3 + packages/ai-solid-ui/src/chat-messages.tsx | 3 + packages/ai-solid-ui/src/chat.tsx | 6 + packages/ai-solid-ui/src/create-ui.tsx | 389 +++++++++++++++++ packages/ai-solid-ui/src/index.ts | 12 + packages/ai-solid-ui/src/tool-approval.tsx | 3 + .../ai-solid-ui/tests/coexistence.test.ts | 21 + .../tests/create-ui-types.test.tsx | 40 ++ packages/ai-solid-ui/tests/create-ui.test.tsx | 65 +++ packages/ai-solid-ui/tsconfig.json | 8 +- packages/ai-solid-ui/vite.config.ts | 2 +- packages/ai-svelte-ui/LICENSE | 21 + packages/ai-svelte-ui/README.md | 5 + packages/ai-svelte-ui/package.json | 70 +++ packages/ai-svelte-ui/src/create-ui.ts | 186 ++++++++ packages/ai-svelte-ui/src/index.ts | 20 + .../ai-svelte-ui/src/selected-part.svelte | 61 +++ packages/ai-svelte-ui/src/ui-chat.svelte | 35 ++ packages/ai-svelte-ui/src/ui-interrupt.svelte | 28 ++ .../ai-svelte-ui/src/ui-interrupts.svelte | 24 ++ packages/ai-svelte-ui/src/ui-message.svelte | 31 ++ packages/ai-svelte-ui/src/ui-messages.svelte | 25 ++ packages/ai-svelte-ui/src/ui-part.svelte | 26 ++ packages/ai-svelte-ui/src/ui-provider.svelte | 23 + packages/ai-svelte-ui/svelte.config.js | 11 + .../tests/create-ui-types.test.ts | 20 + packages/ai-svelte-ui/tests/create-ui.test.ts | 11 + .../tests/fixtures/automatic.svelte | 6 + .../ai-svelte-ui/tests/fixtures/empty.svelte | 2 + .../tests/fixtures/fallback.svelte | 9 + .../tests/fixtures/fixture-data.ts | 25 ++ .../ai-svelte-ui/tests/fixtures/layout.svelte | 9 + .../ai-svelte-ui/tests/fixtures/manual.svelte | 12 + .../tests/fixtures/message.svelte | 9 + .../tests/fixtures/weather.svelte | 9 + packages/ai-svelte-ui/tsconfig.json | 10 + packages/ai-svelte-ui/vite.config.ts | 37 ++ packages/ai-vue-ui/package.json | 1 + packages/ai-vue-ui/src/chat-input.vue | 1 + packages/ai-vue-ui/src/chat-message.vue | 1 + packages/ai-vue-ui/src/chat-messages.vue | 1 + packages/ai-vue-ui/src/chat.vue | 1 + packages/ai-vue-ui/src/create-ui.ts | 398 ++++++++++++++++++ packages/ai-vue-ui/src/index.ts | 20 + packages/ai-vue-ui/src/tool-approval.vue | 1 + packages/ai-vue-ui/src/types.ts | 8 + packages/ai-vue-ui/src/use-chat-context.ts | 1 + packages/ai-vue-ui/tests/coexistence.test.ts | 22 + .../ai-vue-ui/tests/create-ui-types.test.ts | 27 ++ packages/ai-vue-ui/tests/create-ui.test.ts | 110 +++++ packages/ai-vue-ui/tests/test-renderer.ts | 6 + packages/ai-vue-ui/tsconfig.json | 6 +- pnpm-lock.yaml | 40 ++ testing/e2e/src/routeTree.gen.ts | 21 + testing/e2e/src/routes/headless-ui.tsx | 245 +++++++++++ testing/e2e/tests/headless-ui.spec.ts | 14 + 101 files changed, 4841 insertions(+), 91 deletions(-) create mode 100644 .changeset/typed-headless-chat-ui.md create mode 100644 docs/migration/create-ui.md create mode 100644 docs/ui/custom-adapters.md create mode 100644 docs/ui/react.md create mode 100644 docs/ui/solid.md create mode 100644 docs/ui/svelte.md create mode 100644 docs/ui/vue.md create mode 100644 examples/ts-solid-chat/src/routes/solid-ui.tsx create mode 100644 examples/ts-svelte-chat/src/routes/svelte-ui/+page.svelte create mode 100644 examples/ts-svelte-chat/src/routes/svelte-ui/Fallback.svelte create mode 100644 examples/ts-svelte-chat/src/routes/svelte-ui/Layout.svelte create mode 100644 examples/ts-svelte-chat/src/routes/svelte-ui/Message.svelte create mode 100644 packages/ai-client/src/ui.ts create mode 100644 packages/ai-client/src/ui/selectors.ts create mode 100644 packages/ai-client/src/ui/types.ts create mode 100644 packages/ai-client/tests/ui-fixtures.ts create mode 100644 packages/ai-client/tests/ui-selectors.test.ts create mode 100644 packages/ai-client/tests/ui-types.test-d.ts create mode 100644 packages/ai-react-ui/src/create-ui.tsx create mode 100644 packages/ai-react-ui/tests/coexistence.test.ts create mode 100644 packages/ai-react-ui/tests/create-ui-types.test.tsx create mode 100644 packages/ai-react-ui/tests/create-ui.test.tsx create mode 100644 packages/ai-react-ui/tests/react-dom-server.d.ts create mode 100644 packages/ai-solid-ui/src/create-ui.tsx create mode 100644 packages/ai-solid-ui/tests/coexistence.test.ts create mode 100644 packages/ai-solid-ui/tests/create-ui-types.test.tsx create mode 100644 packages/ai-solid-ui/tests/create-ui.test.tsx create mode 100644 packages/ai-svelte-ui/LICENSE create mode 100644 packages/ai-svelte-ui/README.md create mode 100644 packages/ai-svelte-ui/package.json create mode 100644 packages/ai-svelte-ui/src/create-ui.ts create mode 100644 packages/ai-svelte-ui/src/index.ts create mode 100644 packages/ai-svelte-ui/src/selected-part.svelte create mode 100644 packages/ai-svelte-ui/src/ui-chat.svelte create mode 100644 packages/ai-svelte-ui/src/ui-interrupt.svelte create mode 100644 packages/ai-svelte-ui/src/ui-interrupts.svelte create mode 100644 packages/ai-svelte-ui/src/ui-message.svelte create mode 100644 packages/ai-svelte-ui/src/ui-messages.svelte create mode 100644 packages/ai-svelte-ui/src/ui-part.svelte create mode 100644 packages/ai-svelte-ui/src/ui-provider.svelte create mode 100644 packages/ai-svelte-ui/svelte.config.js create mode 100644 packages/ai-svelte-ui/tests/create-ui-types.test.ts create mode 100644 packages/ai-svelte-ui/tests/create-ui.test.ts create mode 100644 packages/ai-svelte-ui/tests/fixtures/automatic.svelte create mode 100644 packages/ai-svelte-ui/tests/fixtures/empty.svelte create mode 100644 packages/ai-svelte-ui/tests/fixtures/fallback.svelte create mode 100644 packages/ai-svelte-ui/tests/fixtures/fixture-data.ts create mode 100644 packages/ai-svelte-ui/tests/fixtures/layout.svelte create mode 100644 packages/ai-svelte-ui/tests/fixtures/manual.svelte create mode 100644 packages/ai-svelte-ui/tests/fixtures/message.svelte create mode 100644 packages/ai-svelte-ui/tests/fixtures/weather.svelte create mode 100644 packages/ai-svelte-ui/tsconfig.json create mode 100644 packages/ai-svelte-ui/vite.config.ts create mode 100644 packages/ai-vue-ui/src/create-ui.ts create mode 100644 packages/ai-vue-ui/tests/coexistence.test.ts create mode 100644 packages/ai-vue-ui/tests/create-ui-types.test.ts create mode 100644 packages/ai-vue-ui/tests/create-ui.test.ts create mode 100644 packages/ai-vue-ui/tests/test-renderer.ts create mode 100644 testing/e2e/src/routes/headless-ui.tsx create mode 100644 testing/e2e/tests/headless-ui.spec.ts diff --git a/.changeset/typed-headless-chat-ui.md b/.changeset/typed-headless-chat-ui.md new file mode 100644 index 0000000000..9a201bca4e --- /dev/null +++ b/.changeset/typed-headless-chat-ui.md @@ -0,0 +1,9 @@ +--- +'@tanstack/ai-client': minor +'@tanstack/ai-react-ui': minor +'@tanstack/ai-solid-ui': minor +'@tanstack/ai-vue-ui': minor +'@tanstack/ai-svelte-ui': minor +--- + +Add typed headless `createUI()` adapters. Chat options control the types of message parts, tools, structured output, and interrupts. Old Chat orchestration stays importable and deprecated until 1.0. diff --git a/docs/api/ai-client.md b/docs/api/ai-client.md index 59af3902b1..e5aad09ddc 100644 --- a/docs/api/ai-client.md +++ b/docs/api/ai-client.md @@ -15,6 +15,8 @@ keywords: Framework-agnostic headless client for managing chat state and streaming. +For typed headless chat UI types and selectors, import `@tanstack/ai-client/ui`. See [Custom Chat UI Adapters](../ui/custom-adapters). + ## Installation ```bash diff --git a/docs/api/ai-react.md b/docs/api/ai-react.md index 7d86fa3839..241a8a251d 100644 --- a/docs/api/ai-react.md +++ b/docs/api/ai-react.md @@ -13,6 +13,8 @@ keywords: --- React hooks for TanStack AI, providing convenient React bindings for the headless client. + +For a typed headless chat UI, see [React Chat UI](../ui/react) and [Migrate to createUI](../migration/create-ui). For React Native, the documented support surface is narrow: `useChat` with chat connection adapters. React DOM-specific UI packages and TanStack AI devtools UI are not part of the React Native support surface. diff --git a/docs/api/ai-solid.md b/docs/api/ai-solid.md index f495993822..2cc7cccb7a 100644 --- a/docs/api/ai-solid.md +++ b/docs/api/ai-solid.md @@ -15,6 +15,8 @@ keywords: SolidJS primitives for TanStack AI, providing convenient SolidJS bindings for the headless client. +For a typed headless chat UI, see [Solid Chat UI](../ui/solid) and [Migrate to createUI](../migration/create-ui). + ## Installation ```bash diff --git a/docs/api/ai-svelte.md b/docs/api/ai-svelte.md index 60488ce058..639f39ae15 100644 --- a/docs/api/ai-svelte.md +++ b/docs/api/ai-svelte.md @@ -15,6 +15,8 @@ keywords: Svelte 5 bindings for TanStack AI, providing reactive factory functions for the headless client using Svelte runes. +For a typed headless chat UI, see [Svelte Chat UI](../ui/svelte) and [Migrate to createUI](../migration/create-ui). + ## Installation ```bash diff --git a/docs/api/ai-vue.md b/docs/api/ai-vue.md index 6606cf4444..8e82e46e8b 100644 --- a/docs/api/ai-vue.md +++ b/docs/api/ai-vue.md @@ -15,6 +15,8 @@ keywords: Vue composables for TanStack AI, providing convenient Vue 3 bindings for the headless client. +For a typed headless chat UI, see [Vue Chat UI](../ui/vue) and [Migrate to createUI](../migration/create-ui). + ## Installation ```bash diff --git a/docs/config.json b/docs/config.json index 46eb82d575..5a12079ba9 100644 --- a/docs/config.json +++ b/docs/config.json @@ -211,6 +211,37 @@ } ] }, + { + "label": "UI", + "tab": "guides", + "children": [ + { + "label": "React", + "to": "ui/react", + "addedAt": "2026-08-26" + }, + { + "label": "Solid", + "to": "ui/solid", + "addedAt": "2026-08-26" + }, + { + "label": "Vue", + "to": "ui/vue", + "addedAt": "2026-08-26" + }, + { + "label": "Svelte", + "to": "ui/svelte", + "addedAt": "2026-08-26" + }, + { + "label": "Custom Adapters", + "to": "ui/custom-adapters", + "addedAt": "2026-08-26" + } + ] + }, { "label": "Interrupts", "tab": "guides", @@ -843,6 +874,11 @@ "addedAt": "2026-04-15", "updatedAt": "2026-07-22" }, + { + "label": "createUI", + "to": "migration/create-ui", + "addedAt": "2026-08-26" + }, { "label": "From Vercel AI SDK", "to": "migration/migration-from-vercel-ai", @@ -875,19 +911,19 @@ "label": "@tanstack/ai-client", "to": "api/ai-client", "addedAt": "2026-04-15", - "updatedAt": "2026-08-24" + "updatedAt": "2026-08-26" }, { "label": "@tanstack/ai-react", "to": "api/ai-react", "addedAt": "2026-04-15", - "updatedAt": "2026-08-24" + "updatedAt": "2026-08-26" }, { "label": "@tanstack/ai-solid", "to": "api/ai-solid", "addedAt": "2026-04-15", - "updatedAt": "2026-08-24" + "updatedAt": "2026-08-26" }, { "label": "@tanstack/ai-preact", @@ -899,13 +935,13 @@ "label": "@tanstack/ai-vue", "to": "api/ai-vue", "addedAt": "2026-04-15", - "updatedAt": "2026-08-24" + "updatedAt": "2026-08-26" }, { "label": "@tanstack/ai-svelte", "to": "api/ai-svelte", "addedAt": "2026-04-15", - "updatedAt": "2026-08-24" + "updatedAt": "2026-08-26" }, { "label": "@tanstack/ai-angular", diff --git a/docs/migration/create-ui.md b/docs/migration/create-ui.md new file mode 100644 index 0000000000..715da0c66d --- /dev/null +++ b/docs/migration/create-ui.md @@ -0,0 +1,116 @@ +--- +title: Migrate to createUI +id: migrate-create-ui +order: 5 +description: "Move chat-state ownership out of the old Chat component and onto createUI with a typed component map." +keywords: + - tanstack ai + - createUI + - migration + - deprecation +--- + +The old `Chat` component owned chat state and lost configured types. `createUI` keeps types from your `chatOptions` and leaves `useChat` in your app. + +This is a semantic migration. There is no codemod. + +## What changes + +1. You call `useChat` or `createChat` yourself. +2. You supply every visible component. +3. Tool inputs stay optional while they stream. +4. Tool approvals come from `chat.interrupts`. +5. Unknown runtime keys can use a fallback or render nothing. +6. `createUI()` must run at module scope so identity stays stable. + +## Why + +The old APIs drop configured types, keep unused properties, use a deprecated approval path, cover only part of the message protocol, and own chat state. Two orchestration models duplicate fixes. + +## Minimum versions + +- `@tanstack/ai-react-ui` 0.9.0 +- `@tanstack/ai-solid-ui` 0.8.0 +- `@tanstack/ai-vue-ui` 0.3.0 +- `@tanstack/ai-svelte-ui` 0.1.0 + +Old orchestration exports stay importable until each package's `1.0.0`. `TextPart` and `ThinkingPart` stay supported. + +## Before + +```tsx +import { fetchServerSentEvents } from '@tanstack/ai-react' +import { Chat, ChatMessages, ChatInput } from '@tanstack/ai-react-ui' + +const connection = fetchServerSentEvents('/api/chat') + +export function OldChat() { + return ( + + + + + ) +} +``` + +## After + +```tsx +import { fetchServerSentEvents, useChat } from '@tanstack/ai-react' +import { createUI } from '@tanstack/ai-react-ui' + +const chatOptions = { + connection: fetchServerSentEvents('/api/chat'), +} + +const UI = createUI(chatOptions) + +const components = UI.defineComponents({ + layout: ({ renderMessages, renderInput }) => ( +
+ {renderMessages()} + {renderInput()} +
+ ), + message: ({ renderParts }) =>
{renderParts()}
, + input: ({ chat }) => ( +
{ + event.preventDefault() + const field = event.currentTarget.elements.namedItem('message') + if (!(field instanceof HTMLInputElement)) return + const text = field.value.trim() + if (!text) return + field.value = '' + void chat.sendMessage?.(text) + }} + > + +
+ ), + parts: { fallback: () => null }, +}) + +export function NewChat() { + const chat = useChat(chatOptions) + return +} +``` + +## Steps + +1. Move `connection`, `tools`, and `interrupts` into a module-level `chatOptions` object. +2. Call `createUI(chatOptions)` next to that object. +3. Call `useChat(chatOptions)` in the screen component. +4. Define `layout`, `message`, `parts`, `tools`, and `interrupts` in `defineComponents`. +5. Replace `` with ``. + +## Gotchas + +- A shared `chatOptions` variable does not need `as const`. +- `{ component, placement: 'inline' }` puts a tool approval in the tool slot. A direct tool interrupt component uses the list. +- Matched `tool-result` parts are hidden in automatic traversal. Unmatched results stay visible. +- Nested providers use the nearest chat instance. + +See the [React UI guide](../ui/react) for a full map. diff --git a/docs/ui/custom-adapters.md b/docs/ui/custom-adapters.md new file mode 100644 index 0000000000..928211206e --- /dev/null +++ b/docs/ui/custom-adapters.md @@ -0,0 +1,34 @@ +--- +title: Custom Chat UI Adapters +id: typed-headless-ui-custom-adapters +order: 5 +description: "Build a framework adapter on @tanstack/ai-client/ui. The core is types and selectors only." +keywords: + - tanstack ai + - createUI + - custom adapter + - headless ui +--- + +Import `@tanstack/ai-client/ui`. Do not import it from the main client entry. + +The subpath gives you: + +1. `selectChatUI` to match tool results and split list vs inline interrupts +2. `partTypeToKey` to turn `tool-call` into `toolCall` +3. Option types for tools, registered interrupts, and `outputSchema` + +Your adapter owns: + +1. Native components and context +2. Native reactivity +3. Render callbacks, slots, or snippets +4. Development warnings for missing mapped keys + +Do not add default markup. Do not add a new store. The app owns `useChat` or `createChat`. + +Call `selectChatUI({ messages, interrupts, inlineToolNames })`. Automatic traversal skips a `tool-result` only when `matched` is true. Keep unmatched results. + +Warn once per missing runtime key in development. Each build tool detects development mode differently, so the adapter prints the warning. + +See the [React](./react), [Solid](./solid), [Vue](./vue), and [Svelte](./svelte) adapters for the public names to match: `Chat`, `Provider`, `Messages`, `Message`, `Part`, `Interrupts`, `Interrupt`, and `defineComponents`. diff --git a/docs/ui/react.md b/docs/ui/react.md new file mode 100644 index 0000000000..bca04db11d --- /dev/null +++ b/docs/ui/react.md @@ -0,0 +1,224 @@ +--- +title: React Chat UI +id: typed-headless-ui-react +order: 1 +description: "Build a typed, headless React chat UI with createUI. Your chat options control the types of tools, parts, and interrupts." +keywords: + - tanstack ai + - createUI + - react + - headless ui + - useChat +--- + +Install `@tanstack/ai-react-ui`, then call `createUI(chatOptions)` once at module scope. Your app owns `useChat`. The UI only renders. + +You supply every visible component. There is no default markup, style, or copy. + +## Server + +```ts +import { chat, toServerSentEventsResponse } from '@tanstack/ai' +import { openaiText } from '@tanstack/ai-openai' + +export async function POST(request: Request) { + const json: unknown = await request.json() + if (typeof json !== 'object' || json === null || !('messages' in json)) { + return new Response('Invalid body', { status: 400 }) + } + const messages = json.messages + const stream = chat({ + adapter: openaiText('gpt-5.2'), + messages: Array.isArray(messages) ? messages : [], + }) + return toServerSentEventsResponse(stream) +} +``` + +## Client + +```tsx +import { fetchServerSentEvents, useChat } from '@tanstack/ai-react' +import { createUI } from '@tanstack/ai-react-ui' +import { defineInterrupt, toolDefinition } from '@tanstack/ai' +import { z } from 'zod' + +const getWeather = toolDefinition({ + name: 'getWeather', + description: 'Look up weather', + inputSchema: z.object({ city: z.string() }), + outputSchema: z.object({ temperature: z.number() }), +}).client() + +const purchaseItem = toolDefinition({ + name: 'purchaseItem', + description: 'Buy an item', + needsApproval: true, + inputSchema: z.object({ item: z.string() }), + outputSchema: z.object({ ok: z.boolean() }), +}).client() + +const choosePlan = defineInterrupt({ + id: 'choosePlan', + payloadSchema: z.object({ title: z.string() }), + responseSchema: z.string(), +}) + +const chatOptions = { + connection: fetchServerSentEvents('/api/chat'), + tools: [getWeather, purchaseItem], + interrupts: [choosePlan], + outputSchema: z.object({ answer: z.string() }), +} + +const UI = createUI(chatOptions) + +const components = UI.defineComponents({ + layout: function Layout({ + chat, + renderMessages, + renderInterrupts, + renderInput, + }) { + if (chat.error) return

{chat.error.message}

+ if (chat.isLoading && chat.messages.length === 0) return

Loading

+ if (chat.messages.length === 0) return

Empty

+ return ( +
+ {renderMessages()} + {renderInterrupts()} + {renderInput()} +
+ ) + }, + message: function Message({ message, renderParts }) { + return
{renderParts()}
+ }, + input: function Input({ chat }) { + return ( +
{ + event.preventDefault() + const form = event.currentTarget + const field = form.elements.namedItem('message') + if (!(field instanceof HTMLInputElement)) return + void chat.sendMessage?.(field.value) + field.value = '' + }} + > + + +
+ ) + }, + parts: { + text: ({ part }) => (part.type === 'text' ?

{part.content}

: null), + structuredOutput: ({ part }) => + part.type === 'structured-output' ? ( +
{part.raw}
+ ) : null, + toolResult: ({ part }) => + part.type === 'tool-result' ? {String(part.content)} : null, + fallback: ({ part }) => {part.type}, + }, + tools: { + getWeather: ({ part, result }) => { + if (part.state === 'awaiting-input') return

Waiting

+ if (part.state === 'input-streaming') return

Streaming input

+ if (part.state === 'input-complete') return

{part.input?.city}

+ if (part.state === 'approval-requested') return

Need approval

+ if (part.state === 'approval-responded') return

Responded

+ if (part.state === 'error') return

Error

+ return ( +

+ {part.input?.city}: {String(part.output?.temperature ?? result?.content)} +

+ ) + }, + purchaseItem: ({ part, renderInterrupt }) => ( +
+ {part.input?.item} + {renderInterrupt()} +
+ ), + }, + interrupts: { + tools: { + purchaseItem: { + component: ({ interrupt }) => + interrupt.kind === 'tool-approval' ? ( + interrupt.status === 'pending' ? ( + + ) : ( + {interrupt.status} + ) + ) : null, + placement: 'inline', + }, + }, + registered: { + choosePlan: ({ interrupt }) => ( + + ), + }, + generic: ({ interrupt }) =>

{interrupt.reason}

, + unbound: ({ interrupt }) =>

{interrupt.reason}

, + fallback: ({ interrupt }) =>

{interrupt.reason}

, + }, +}) + +export function ChatScreen() { + const chat = useChat(chatOptions) + return +} +``` + +## Manual traversal + +```tsx +import { fetchServerSentEvents, useChat } from '@tanstack/ai-react' +import { createUI } from '@tanstack/ai-react-ui' + +const chatOptions = { + connection: fetchServerSentEvents('/api/chat'), +} + +const UI = createUI(chatOptions) + +const components = UI.defineComponents({ + layout: ({ renderMessages }) => renderMessages(), + message: ({ renderParts }) =>
{renderParts()}
, + parts: { fallback: () => null }, +}) + +export function ManualChat() { + const chat = useChat(chatOptions) + return ( + + + {(messages) => + messages.map((message) => ( + + {(parts) => + parts.map((part, index) => ( + {part.key} + )) + } + + )) + } + + + ) +} +``` + +Read chat from context with `UI.useChat()` inside the provider. + +Unknown runtime tool names warn once in development and render nothing. Add a `parts.fallback` for unknown part types. + +See also [Solid](./solid), [Vue](./vue), [Svelte](./svelte), and [custom adapters](./custom-adapters). diff --git a/docs/ui/solid.md b/docs/ui/solid.md new file mode 100644 index 0000000000..eff06ae6e2 --- /dev/null +++ b/docs/ui/solid.md @@ -0,0 +1,65 @@ +--- +title: Solid Chat UI +id: typed-headless-ui-solid +order: 2 +description: "Build a typed, headless Solid chat UI with createUI. Accessors stay tracked. Your app owns useChat." +keywords: + - tanstack ai + - createUI + - solid + - headless ui +--- + +Install `@tanstack/ai-solid-ui`, then call `createUI(chatOptions)` once at module scope. Do not destructure reactive props. + +The server route matches the [React page](./react). Use `gpt-5.2` on the OpenAI text adapter. + +## Client + +```tsx +import { fetchServerSentEvents, useChat } from '@tanstack/ai-solid' +import { createUI } from '@tanstack/ai-solid-ui' +import { toolDefinition } from '@tanstack/ai' +import { z } from 'zod' + +const getWeather = toolDefinition({ + name: 'getWeather', + description: 'Look up weather', + inputSchema: z.object({ city: z.string() }), + outputSchema: z.object({ temperature: z.number() }), +}).client() + +const chatOptions = { + connection: fetchServerSentEvents('/api/chat'), + tools: [getWeather], +} + +const UI = createUI(chatOptions) + +const components = UI.defineComponents({ + layout: (props) => ( + <> + {props.renderMessages()} + {props.renderInterrupts()} + {props.renderInput()} + + ), + message: (props) =>
{props.renderParts()}
, + parts: { + fallback: (props) => {props.part.type}, + }, + tools: { + getWeather: (props) => {props.part.input?.city}, + }, + interrupts: { fallback: () => null }, +}) + +export function ChatScreen() { + const chat = useChat(chatOptions) + return +} +``` + +Manual list: `{(messages) => {messages().length}}`. + +The full component map, tool states, interrupt statuses, inline approvals, and context access match the [React contract](./react). Solid keeps accessors. Pass `props.chat`, `props.part`, and `props.renderParts()` without destructure. diff --git a/docs/ui/svelte.md b/docs/ui/svelte.md new file mode 100644 index 0000000000..a2d7046197 --- /dev/null +++ b/docs/ui/svelte.md @@ -0,0 +1,58 @@ +--- +title: Svelte Chat UI +id: typed-headless-ui-svelte +order: 4 +description: "Build a typed, headless Svelte 5 chat UI with createUI, snippets, and static components." +keywords: + - tanstack ai + - createUI + - svelte + - headless ui +--- + +Install `@tanstack/ai-svelte-ui`. Call `createUI(chatOptions)` once. Pass `{ui}`, `{chat}`, and `{components}` into `UIChat`. + +The server route matches the [React page](./react). Use `gpt-5.2` on the OpenAI text adapter. + +## Client + +```svelte + + + +``` + +`Layout.svelte` receives snippets `messages`, `interrupts`, and `input`. `Message.svelte` receives snippet `parts`. + +The typed tool map, interrupt map, and fallback rules match the [React contract](./react). diff --git a/docs/ui/vue.md b/docs/ui/vue.md new file mode 100644 index 0000000000..49e483448f --- /dev/null +++ b/docs/ui/vue.md @@ -0,0 +1,72 @@ +--- +title: Vue Chat UI +id: typed-headless-ui-vue +order: 3 +description: "Build a typed, headless Vue chat UI with createUI and static primitives. Slots replace render callbacks." +keywords: + - tanstack ai + - createUI + - vue + - headless ui +--- + +Install `@tanstack/ai-vue-ui`. Call `createUI(chatOptions)` once. Pass the descriptor as `ui` into `UIChat`, `UIProvider`, and the other static primitives. + +The server route matches the [React page](./react). Use `gpt-5.2` on the OpenAI text adapter. + +## Client + +```ts +import { defineComponent, h } from 'vue' +import { fetchServerSentEvents, useChat } from '@tanstack/ai-vue' +import { createUI, UIChat } from '@tanstack/ai-vue-ui' +import { toolDefinition } from '@tanstack/ai' +import { z } from 'zod' + +const getWeather = toolDefinition({ + name: 'getWeather', + description: 'Look up weather', + inputSchema: z.object({ city: z.string() }), + outputSchema: z.object({ temperature: z.number() }), +}).client() + +const chatOptions = { + connection: fetchServerSentEvents('/api/chat'), + tools: [getWeather], +} + +const ui = createUI(chatOptions) + +const components = ui.defineComponents({ + layout: defineComponent((_, { slots }) => () => slots.messages?.()), + message: defineComponent((_, { slots }) => () => h('article', slots.parts?.())), + parts: { + fallback: defineComponent({ + props: ['part'], + setup(props) { + return () => h('span', props.part.type) + }, + }), + }, + tools: { + getWeather: defineComponent({ + props: ['part'], + setup(props) { + return () => h('strong', props.part.input?.city) + }, + }), + }, + interrupts: { fallback: defineComponent(() => () => null) }, +}) + +export default defineComponent({ + setup() { + const chat = useChat(chatOptions) + return () => h(UIChat, { ui, chat, components }) + }, +}) +``` + +Layout uses slots `messages`, `interrupts`, and `input`. Message uses slot `parts`. Manual lists use the default slot on `UIMessages` with `{ messages }`. + +The typed tool map, interrupt map, and fallback rules match the [React contract](./react). diff --git a/examples/ag-ui/src/App.tsx b/examples/ag-ui/src/App.tsx index 8fca0f93a2..74fd4ded5d 100644 --- a/examples/ag-ui/src/App.tsx +++ b/examples/ag-ui/src/App.tsx @@ -1,12 +1,68 @@ import { useEffect, useMemo, useState } from 'react' -import { fetchServerSentEvents } from '@tanstack/ai-react' -import type { UIMessage } from '@tanstack/ai-react' -import { - Chat, - ChatInput, - ChatMessage, - ChatMessages, -} from '@tanstack/ai-react-ui' +import { fetchServerSentEvents, useChat } from '@tanstack/ai-react' +import type { ConnectionAdapter } from '@tanstack/ai-react' +import { ChatMessage, createUI } from '@tanstack/ai-react-ui' + +const UI = createUI({}) + +function AgUiChat({ + connection, + placeholder, + emptyLabel, +}: { + connection: ConnectionAdapter + placeholder: string + emptyLabel: string +}) { + const chat = useChat({ connection }) + const [draft, setDraft] = useState('') + const components = UI.defineComponents({ + layout: ({ chat: current, renderMessages, renderInput }) => ( +
+ {current.error ? ( +

{current.error.message}

+ ) : current.messages.length === 0 ? ( +
+ {emptyLabel} +
+ ) : ( +
+ {renderMessages()} +
+ )} +
{renderInput()}
+
+ ), + message: ({ message }) => , + input: () => ( +
{ + event.preventDefault() + const text = draft.trim() + if (!text) return + setDraft('') + void chat.sendMessage(text) + }} + > + setDraft(event.target.value)} + /> + +
+ ), + parts: { fallback: () => null }, + }) + return +} type Backend = 'go' | 'rust' | 'php' | 'zig' | 'bash' | 'python' type Provider = 'openai' | 'anthropic' @@ -280,28 +336,12 @@ export function App() { Loading backend availability… ) : active.available && connection ? ( - - - Chat with {active.label} over AG-UI SSE using{' '} - {activeProvider.label}. - - } - > - {(message: UIMessage) => } - -
- -
-
+ placeholder={`Message via ${active.label} + ${activeProvider.label}…`} + emptyLabel={`Chat with ${active.label} over AG-UI SSE using ${activeProvider.label}.`} + /> ) : ( )} diff --git a/examples/ts-solid-chat/src/routeTree.gen.ts b/examples/ts-solid-chat/src/routeTree.gen.ts index f474ce588d..09f7e9514c 100644 --- a/examples/ts-solid-chat/src/routeTree.gen.ts +++ b/examples/ts-solid-chat/src/routeTree.gen.ts @@ -9,11 +9,17 @@ // Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. import { Route as rootRouteImport } from './routes/__root' +import { Route as SolidUiRouteImport } from './routes/solid-ui' import { Route as IndexRouteImport } from './routes/index' import { Route as ApiChatRouteImport } from './routes/api.chat' import { Route as ExampleGuitarsIndexRouteImport } from './routes/example.guitars/index' import { Route as ExampleGuitarsGuitarIdRouteImport } from './routes/example.guitars/$guitarId' +const SolidUiRoute = SolidUiRouteImport.update({ + id: '/solid-ui', + path: '/solid-ui', + getParentRoute: () => rootRouteImport, +} as any) const IndexRoute = IndexRouteImport.update({ id: '/', path: '/', @@ -37,12 +43,14 @@ const ExampleGuitarsGuitarIdRoute = ExampleGuitarsGuitarIdRouteImport.update({ export interface FileRoutesByFullPath { '/': typeof IndexRoute + '/solid-ui': typeof SolidUiRoute '/api/chat': typeof ApiChatRoute '/example/guitars/$guitarId': typeof ExampleGuitarsGuitarIdRoute '/example/guitars': typeof ExampleGuitarsIndexRoute } export interface FileRoutesByTo { '/': typeof IndexRoute + '/solid-ui': typeof SolidUiRoute '/api/chat': typeof ApiChatRoute '/example/guitars/$guitarId': typeof ExampleGuitarsGuitarIdRoute '/example/guitars': typeof ExampleGuitarsIndexRoute @@ -50,6 +58,7 @@ export interface FileRoutesByTo { export interface FileRoutesById { __root__: typeof rootRouteImport '/': typeof IndexRoute + '/solid-ui': typeof SolidUiRoute '/api/chat': typeof ApiChatRoute '/example/guitars/$guitarId': typeof ExampleGuitarsGuitarIdRoute '/example/guitars/': typeof ExampleGuitarsIndexRoute @@ -58,14 +67,21 @@ export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' + | '/solid-ui' | '/api/chat' | '/example/guitars/$guitarId' | '/example/guitars' fileRoutesByTo: FileRoutesByTo - to: '/' | '/api/chat' | '/example/guitars/$guitarId' | '/example/guitars' + to: + | '/' + | '/solid-ui' + | '/api/chat' + | '/example/guitars/$guitarId' + | '/example/guitars' id: | '__root__' | '/' + | '/solid-ui' | '/api/chat' | '/example/guitars/$guitarId' | '/example/guitars/' @@ -73,6 +89,7 @@ export interface FileRouteTypes { } export interface RootRouteChildren { IndexRoute: typeof IndexRoute + SolidUiRoute: typeof SolidUiRoute ApiChatRoute: typeof ApiChatRoute ExampleGuitarsGuitarIdRoute: typeof ExampleGuitarsGuitarIdRoute ExampleGuitarsIndexRoute: typeof ExampleGuitarsIndexRoute @@ -80,6 +97,13 @@ export interface RootRouteChildren { declare module '@tanstack/solid-router' { interface FileRoutesByPath { + '/solid-ui': { + id: '/solid-ui' + path: '/solid-ui' + fullPath: '/solid-ui' + preLoaderRoute: typeof SolidUiRouteImport + parentRoute: typeof rootRouteImport + } '/': { id: '/' path: '/' @@ -113,6 +137,7 @@ declare module '@tanstack/solid-router' { const rootRouteChildren: RootRouteChildren = { IndexRoute: IndexRoute, + SolidUiRoute: SolidUiRoute, ApiChatRoute: ApiChatRoute, ExampleGuitarsGuitarIdRoute: ExampleGuitarsGuitarIdRoute, ExampleGuitarsIndexRoute: ExampleGuitarsIndexRoute, diff --git a/examples/ts-solid-chat/src/routes/solid-ui.tsx b/examples/ts-solid-chat/src/routes/solid-ui.tsx new file mode 100644 index 0000000000..22e60f6e98 --- /dev/null +++ b/examples/ts-solid-chat/src/routes/solid-ui.tsx @@ -0,0 +1,61 @@ +import { createFileRoute } from '@tanstack/solid-router' +import { fetchServerSentEvents, useChat } from '@tanstack/ai-solid' +import { createUI } from '@tanstack/ai-solid-ui' +import { createSignal } from 'solid-js' +import { clientTools } from '@/lib/guitar-tools' + +const chatOptions = { + connection: fetchServerSentEvents('/api/chat'), + tools: clientTools, +} + +const UI = createUI(chatOptions) + +function SolidUIPage() { + const chat = useChat(chatOptions) + const [draft, setDraft] = createSignal('') + const components = UI.defineComponents({ + layout: (props) => ( +
+
+ {props.renderMessages()} +
+ {props.renderInput()} +
+ ), + message: (props) => ( +
+ {props.renderParts()} +
+ ), + input: () => ( +
{ + event.preventDefault() + const text = draft().trim() + if (!text) return + setDraft('') + void chat.sendMessage(text) + }} + > + setDraft(event.currentTarget.value)} + /> +
+ ), + parts: { + fallback: (props) => + props.part.type === 'text' ?

{props.part.content}

: null, + }, + }) + + return +} + +export const Route = createFileRoute('/solid-ui')({ + component: SolidUIPage, +}) diff --git a/examples/ts-svelte-chat/package.json b/examples/ts-svelte-chat/package.json index 80a3e08237..5ce76cb7c7 100644 --- a/examples/ts-svelte-chat/package.json +++ b/examples/ts-svelte-chat/package.json @@ -20,6 +20,7 @@ "@tanstack/ai-ollama": "workspace:*", "@tanstack/ai-openai": "workspace:*", "@tanstack/ai-svelte": "workspace:*", + "@tanstack/ai-svelte-ui": "workspace:*", "highlight.js": "^11.11.1", "lucide-svelte": "^0.468.0", "marked": "^15.0.6", diff --git a/examples/ts-svelte-chat/src/routes/svelte-ui/+page.svelte b/examples/ts-svelte-chat/src/routes/svelte-ui/+page.svelte new file mode 100644 index 0000000000..7a354b566d --- /dev/null +++ b/examples/ts-svelte-chat/src/routes/svelte-ui/+page.svelte @@ -0,0 +1,71 @@ + + + + TanStack AI - Svelte createUI + + + diff --git a/examples/ts-svelte-chat/src/routes/svelte-ui/Fallback.svelte b/examples/ts-svelte-chat/src/routes/svelte-ui/Fallback.svelte new file mode 100644 index 0000000000..636744520d --- /dev/null +++ b/examples/ts-svelte-chat/src/routes/svelte-ui/Fallback.svelte @@ -0,0 +1,7 @@ + + +{#if part.type === 'text'} +

{part.content}

+{/if} diff --git a/examples/ts-svelte-chat/src/routes/svelte-ui/Layout.svelte b/examples/ts-svelte-chat/src/routes/svelte-ui/Layout.svelte new file mode 100644 index 0000000000..1dab0ceebb --- /dev/null +++ b/examples/ts-svelte-chat/src/routes/svelte-ui/Layout.svelte @@ -0,0 +1,35 @@ + + +
+
+ {@render messages?.()} +
+
{ + event.preventDefault() + const text = draft.trim() + if (!text) return + draft = '' + void chat.sendMessage(text) + }} + > + +
+
diff --git a/examples/ts-svelte-chat/src/routes/svelte-ui/Message.svelte b/examples/ts-svelte-chat/src/routes/svelte-ui/Message.svelte new file mode 100644 index 0000000000..d3dd175e52 --- /dev/null +++ b/examples/ts-svelte-chat/src/routes/svelte-ui/Message.svelte @@ -0,0 +1,15 @@ + + +
+ {@render parts?.()} +
diff --git a/examples/ts-vue-chat/src/views/VueUIView.vue b/examples/ts-vue-chat/src/views/VueUIView.vue index c45bb4b937..763de0b8ce 100644 --- a/examples/ts-vue-chat/src/views/VueUIView.vue +++ b/examples/ts-vue-chat/src/views/VueUIView.vue @@ -1,8 +1,8 @@ diff --git a/kiira.config.ts b/kiira.config.ts index b85ad1212a..ffb8cef276 100644 --- a/kiira.config.ts +++ b/kiira.config.ts @@ -74,7 +74,7 @@ export default defineConfig({ }, // Solid snippets compile JSX through solid-js. { - include: ['docs/api/ai-solid.md'], + include: ['docs/api/ai-solid.md', 'docs/ui/solid.md'], jsx: 'preserve', jsxImportSource: 'solid-js', }, diff --git a/packages/ai-client/package.json b/packages/ai-client/package.json index 476bed9921..4b09cfa379 100644 --- a/packages/ai-client/package.json +++ b/packages/ai-client/package.json @@ -46,6 +46,10 @@ "./byok": { "types": "./dist/esm/byok.d.ts", "import": "./dist/esm/byok.js" + }, + "./ui": { + "types": "./dist/esm/ui.d.ts", + "import": "./dist/esm/ui.js" } }, "files": [ diff --git a/packages/ai-client/src/ui.ts b/packages/ai-client/src/ui.ts new file mode 100644 index 0000000000..c57654aeaf --- /dev/null +++ b/packages/ai-client/src/ui.ts @@ -0,0 +1,30 @@ +export { partTypeToKey, selectChatUI } from './ui/selectors' +export { + automaticPartsForMessage, + collectInlineToolNames, + getMappedComponent, + isInlineInterruptConfig, + resolveInterruptComponent, + selectMessageUI, +} from './ui/selectors' +export type { + ChatUIData, + ChatUIInterrupt, + ChatUIInterruptsOf, + ChatUIMessages, + ChatUIPartKey, + ChatUIRegisteredInterruptId, + ChatUISchemaOf, + ChatUISelectInput, + ChatUISelectedGenericPart, + ChatUISelectedMessage, + ChatUISelectedPart, + ChatUISelectedResultPart, + ChatUISelectedToolPart, + ChatUISelection, + ChatUIStructuredPart, + ChatUIToolName, + ChatUIToolPart, + ChatUIToolsOf, + RegisteredUIInterrupt, +} from './ui/types' diff --git a/packages/ai-client/src/ui/selectors.ts b/packages/ai-client/src/ui/selectors.ts new file mode 100644 index 0000000000..1d0273dd7d --- /dev/null +++ b/packages/ai-client/src/ui/selectors.ts @@ -0,0 +1,204 @@ +import type { + MessagePart, + ToolApprovalInterrupt, + ToolCallPart, + ToolResultPart, + UIMessage, +} from '../types' +import type { + ChatUIInterrupt, + ChatUIPartKey, + ChatUISelectInput, + ChatUISelectedMessage, + ChatUISelectedPart, + ChatUISelection, +} from './types' + +const PART_KEY_BY_TYPE: Record = { + text: 'text', + image: 'image', + audio: 'audio', + video: 'video', + document: 'document', + thinking: 'thinking', + 'tool-call': 'toolCall', + 'tool-result': 'toolResult', + 'structured-output': 'structuredOutput', + 'ui-resource': 'uiResource', +} + +export function partTypeToKey(type: string): ChatUIPartKey | string { + const mapped = PART_KEY_BY_TYPE[type] + if (mapped) return mapped + return type.replace(/-([a-z])/g, (_, letter: string) => letter.toUpperCase()) +} + +export function isInlineInterruptConfig(entry: unknown): boolean { + return ( + typeof entry === 'object' && + entry !== null && + 'placement' in entry && + (entry as { placement?: unknown }).placement === 'inline' + ) +} + +export function getMappedComponent(entry: unknown): unknown { + if ( + typeof entry === 'object' && + entry !== null && + 'component' in entry && + 'placement' in entry + ) { + return (entry as { component: unknown }).component + } + return entry +} + +export function collectInlineToolNames( + toolInterrupts?: Record, +): Array { + if (!toolInterrupts) return [] + return Object.keys(toolInterrupts).filter((name) => + isInlineInterruptConfig(toolInterrupts[name]), + ) +} + +export function resolveInterruptComponent( + interrupt: ChatUIInterrupt, + interruptsMap: + | { + tools?: Record + registered?: Record + generic?: unknown + unbound?: unknown + fallback?: unknown + } + | undefined, +): unknown { + if (!interruptsMap) return undefined + if (interrupt.kind === 'tool-approval') { + return getMappedComponent(interruptsMap.tools?.[interrupt.toolName]) + } + if (interrupt.kind === 'unbound') { + return interruptsMap.unbound ?? interruptsMap.fallback + } + const definitionId = + 'definitionId' in interrupt && typeof interrupt.definitionId === 'string' + ? interrupt.definitionId + : undefined + if (definitionId) { + const registered = interruptsMap.registered?.[definitionId] + if (registered) return getMappedComponent(registered) + } + return interruptsMap.generic ?? interruptsMap.fallback +} + +function isToolCallPart(part: MessagePart): part is ToolCallPart { + return part.type === 'tool-call' +} + +function isToolResultPart(part: MessagePart): part is ToolResultPart { + return part.type === 'tool-result' +} + +function isToolApproval( + interrupt: ChatUIInterrupt, +): interrupt is ToolApprovalInterrupt { + return interrupt.kind === 'tool-approval' +} + +export function selectChatUI(input: ChatUISelectInput): ChatUISelection { + const messages = input.messages + const interrupts = input.interrupts ?? [] + const inlineToolNames = new Set(input.inlineToolNames ?? []) + + const resultsByCallId = new Map() + const callIds = new Set() + for (const message of messages) { + for (const part of message.parts) { + if (isToolCallPart(part)) callIds.add(part.id) + if (isToolResultPart(part)) resultsByCallId.set(part.toolCallId, part) + } + } + + const approvalByCallId = new Map() + for (const interrupt of interrupts) { + if (isToolApproval(interrupt)) { + approvalByCallId.set(interrupt.toolCallId, interrupt) + } + } + + const selectedMessages: Array = messages.map( + (message) => ({ + message, + parts: message.parts.map((part) => + toSelectedPart(part, resultsByCallId, approvalByCallId, callIds), + ), + }), + ) + + return { + messages: selectedMessages, + interrupts: interrupts.filter((interrupt) => { + if (!isToolApproval(interrupt)) return true + if (!inlineToolNames.has(interrupt.toolName)) return true + return !callIds.has(interrupt.toolCallId) + }), + } +} + +function toSelectedPart( + part: MessagePart, + resultsByCallId: Map, + approvalByCallId: Map, + callIds: Set, +): ChatUISelectedPart { + if (isToolCallPart(part)) { + const result = resultsByCallId.get(part.id) + const interrupt = approvalByCallId.get(part.id) + return { + key: 'toolCall', + part, + ...(result ? { result } : {}), + ...(interrupt ? { interrupt } : {}), + input: part.input, + output: part.output, + } + } + + if (isToolResultPart(part)) { + return { + key: 'toolResult', + part, + matched: callIds.has(part.toolCallId), + } + } + + return { + key: partTypeToKey(part.type) as Exclude< + ChatUIPartKey, + 'toolCall' | 'toolResult' + >, + part, + } +} + +export function automaticPartsForMessage( + selected: ChatUISelectedMessage, +): Array { + return selected.parts.filter( + (part) => !(part.key === 'toolResult' && part.matched), + ) +} + +export function selectMessageUI( + message: UIMessage, + input: Omit, +): ChatUISelectedMessage { + return ( + selectChatUI({ ...input, messages: [message] }).messages[0] ?? { + message, + parts: [], + } + ) +} diff --git a/packages/ai-client/src/ui/types.ts b/packages/ai-client/src/ui/types.ts new file mode 100644 index 0000000000..026e71f564 --- /dev/null +++ b/packages/ai-client/src/ui/types.ts @@ -0,0 +1,156 @@ +import type { + AnyClientTool, + InferSchemaType, + InferToolInput, + InferToolOutput, + InterruptDefinition, + SchemaInput, +} from '@tanstack/ai/client' +import type { + ChatInterrupt, + MessagePart, + RegisteredGenericInterrupt, + StructuredOutputPart, + ToolApprovalInterrupt, + ToolCallPart, + ToolResultPart, + UIMessage, +} from '../types' + +export type ChatUIPartKey = + | 'text' + | 'image' + | 'audio' + | 'video' + | 'document' + | 'thinking' + | 'toolCall' + | 'toolResult' + | 'structuredOutput' + | 'uiResource' + +export type ChatUIToolsOf = TOptions extends { + tools: infer TTools +} + ? TTools extends ReadonlyArray + ? TTools + : ReadonlyArray + : ReadonlyArray + +export type ChatUIInterruptsOf = TOptions extends { + interrupts: infer TInterrupts +} + ? TInterrupts extends ReadonlyArray> + ? TInterrupts + : readonly [] + : readonly [] + +export type ChatUISchemaOf = TOptions extends { + outputSchema: infer TSchema +} + ? TSchema extends SchemaInput + ? TSchema + : undefined + : undefined + +export type ChatUIData = TOptions extends { + outputSchema: infer TSchema +} + ? TSchema extends SchemaInput + ? InferSchemaType + : unknown + : unknown + +export type ChatUIToolName = + ChatUIToolsOf[number] extends infer TTool + ? TTool extends AnyClientTool + ? TTool['name'] + : string + : string + +export type ChatUIRegisteredInterruptId = + ChatUIInterruptsOf[number] extends infer TDefinition + ? TDefinition extends InterruptDefinition + ? TId + : string + : string + +type ToolByName = Extract< + ChatUIToolsOf extends ReadonlyArray ? TTool : never, + { name: TName } +> + +export type ChatUIInterrupt = ChatInterrupt | ToolApprovalInterrupt + +export type ChatUIToolPart< + TOptions, + TName extends ChatUIToolName = ChatUIToolName, +> = { + key: 'toolCall' + part: Extract>, { name: TName }> + result?: ToolResultPart + interrupt?: Extract< + ChatInterrupt, ChatUIInterruptsOf>, + { kind: 'tool-approval'; toolName: TName } + > + input?: InferToolInput> + output?: InferToolOutput> +} + +export type RegisteredUIInterrupt< + TOptions, + TId extends ChatUIRegisteredInterruptId = + ChatUIRegisteredInterruptId, +> = Extract< + RegisteredGenericInterrupt>, + { definitionId: TId } +> + +export type ChatUISelectedToolPart = { + key: 'toolCall' + part: ToolCallPart + result?: ToolResultPart + interrupt?: ChatUIInterrupt + input?: unknown + output?: unknown +} + +export type ChatUISelectedResultPart = { + key: 'toolResult' + part: ToolResultPart + matched: boolean +} + +export type ChatUISelectedGenericPart = { + key: Exclude + part: MessagePart +} + +export type ChatUISelectedPart = + | ChatUISelectedToolPart + | ChatUISelectedResultPart + | ChatUISelectedGenericPart + +export type ChatUISelectedMessage = { + message: UIMessage + parts: Array +} + +export type ChatUISelection = { + messages: Array + interrupts: Array +} + +export type ChatUISelectInput = { + messages: ReadonlyArray + interrupts?: ReadonlyArray + inlineToolNames?: ReadonlyArray +} + +export type ChatUIMessages = Array< + UIMessage, ChatUIData> +> + +export type ChatUIStructuredPart = StructuredOutputPart< + ChatUIData +> diff --git a/packages/ai-client/tests/ui-fixtures.ts b/packages/ai-client/tests/ui-fixtures.ts new file mode 100644 index 0000000000..19f833bc15 --- /dev/null +++ b/packages/ai-client/tests/ui-fixtures.ts @@ -0,0 +1,261 @@ +import { defineInterrupt, toolDefinition } from '@tanstack/ai/client' +import { z } from 'zod' +import type { ChatUIInterrupt } from '../src/ui' +import type { UIMessage } from '../src/types' + +const getWeather = toolDefinition({ + name: 'getWeather', + description: 'Look up weather', + inputSchema: z.object({ city: z.string() }), + outputSchema: z.object({ temperature: z.number() }), +}).client() + +const purchaseItem = toolDefinition({ + name: 'purchaseItem', + description: 'Purchase an item', + needsApproval: true, + inputSchema: z.object({ item: z.string() }), + outputSchema: z.object({ ok: z.boolean() }), +}).client() + +const choosePlan = defineInterrupt({ + id: 'choosePlan', + payloadSchema: z.object({ title: z.string() }), + responseSchema: z.string(), +}) + +const answerSchema = z.object({ answer: z.string() }) + +const stubConnection = { + connect: async function* () { + return + }, +} + +export const chatOptions = { + connection: stubConnection, + tools: [getWeather, purchaseItem], + interrupts: [choosePlan], + outputSchema: answerSchema, +} + +function noop(): void { + return +} + +export const approvalInterrupt = { + kind: 'tool-approval', + id: 'approval-1', + interruptId: 'approval-1', + reason: 'tool_call', + message: 'Approve purchase', + threadId: 'thread-1', + interruptedRunId: 'run-1', + generation: 0, + status: 'pending', + errors: [], + canResolve: true, + toolName: 'purchaseItem', + toolCallId: 'call-weather', + originalArgs: { item: 'keyboard' }, + binding: { + kind: 'tool-approval', + toolCallId: 'call-weather', + toolName: 'purchaseItem', + }, + cancel: noop, + clearResolution: noop, + resolveInterrupt: noop, +} as unknown as ChatUIInterrupt + +export const genericInterrupt = { + kind: 'generic', + id: 'generic-1', + interruptId: 'generic-1', + reason: 'choose-plan', + message: 'Choose a plan', + threadId: 'thread-1', + interruptedRunId: 'run-1', + generation: 0, + status: 'pending', + errors: [], + canResolve: true, + definitionId: 'choosePlan', + key: 'choosePlan', + payload: { title: 'Pro' }, + binding: { + kind: 'generic', + definitionId: 'choosePlan', + key: 'choosePlan', + batchIndex: 0, + }, + cancel: noop, + clearResolution: noop, + resolveInterrupt: noop, +} as unknown as ChatUIInterrupt + +export const unboundInterrupt = { + kind: 'unbound', + id: 'unbound-1', + interruptId: 'unbound-1', + reason: 'foreign', + message: 'Owned elsewhere', + threadId: 'thread-1', + interruptedRunId: 'run-1', + generation: 0, + status: 'pending', + errors: [], + canResolve: false, +} as unknown as ChatUIInterrupt + +export const messageWithToolResults: UIMessage = { + id: 'message-1', + role: 'assistant', + parts: [ + { + type: 'tool-call', + id: 'call-weather', + name: 'getWeather', + arguments: '{"city":"Paris"}', + input: { city: 'Paris' }, + output: { temperature: 18 }, + state: 'complete', + }, + { + type: 'tool-result', + toolCallId: 'call-weather', + content: '{"temperature":18}', + state: 'complete', + }, + { + type: 'structured-output', + status: 'complete', + raw: '{"answer":"yes"}', + data: { answer: 'yes' }, + }, + ], +} + +export const unknownToolMessage: UIMessage = { + id: 'message-unknown', + role: 'assistant', + parts: [ + { + type: 'tool-call', + id: 'call-unknown', + name: 'notConfigured', + arguments: '{}', + state: 'complete', + }, + ], +} + +export const orphanResultMessage: UIMessage = { + id: 'message-orphan-result', + role: 'assistant', + parts: [ + { + type: 'text', + content: 'result follows', + }, + { + type: 'tool-result', + toolCallId: 'missing-call', + content: 'standalone', + state: 'complete', + }, + ], +} + +export const purchaseApprovalMessage: UIMessage = { + id: 'message-purchase', + role: 'assistant', + parts: [ + { + type: 'tool-call', + id: 'call-purchase', + name: 'purchaseItem', + arguments: '{"item":"keyboard"}', + input: { item: 'keyboard' }, + state: 'approval-requested', + approval: { + id: 'approval-purchase', + needsApproval: true, + }, + }, + ], +} + +export const purchaseApprovalInterrupt = { + ...approvalInterrupt, + id: 'approval-purchase', + interruptId: 'approval-purchase', + toolCallId: 'call-purchase', + binding: { + kind: 'tool-approval', + toolCallId: 'call-purchase', + toolName: 'purchaseItem', + }, +} as unknown as ChatUIInterrupt + +export function createChatResult(init: { + messages?: Array + interrupts?: Array + error?: Error + isLoading?: boolean + status?: 'ready' | 'submitted' | 'streaming' | 'error' +}) { + const interrupts = init.interrupts ?? [] + return { + messages: init.messages ?? [], + interrupts, + pendingInterrupts: interrupts, + error: init.error, + isLoading: init.isLoading ?? false, + status: init.status ?? 'ready', + sendMessage: async () => undefined, + stop: noop, + reload: async () => undefined, + clear: noop, + setMessages: noop, + } +} + +export function createSolidChatResult( + messages: Array, + interrupts: Array = [], +) { + const chat = createChatResult({ messages, interrupts }) + return { + ...chat, + messages: () => chat.messages, + interrupts: () => chat.interrupts, + pendingInterrupts: () => chat.pendingInterrupts, + error: () => chat.error, + isLoading: () => chat.isLoading, + status: () => chat.status, + } +} + +export function createVueChatResult( + messages: Array, + interrupts: Array = [], +) { + const chat = createChatResult({ messages, interrupts }) + return { + ...chat, + messages: { value: chat.messages }, + interrupts: { value: chat.interrupts }, + pendingInterrupts: { value: chat.pendingInterrupts }, + error: { value: chat.error }, + isLoading: { value: chat.isLoading }, + status: { value: chat.status }, + } +} + +export function createSvelteChatResult( + messages: Array, + interrupts: Array = [], +) { + return createChatResult({ messages, interrupts }) +} diff --git a/packages/ai-client/tests/ui-selectors.test.ts b/packages/ai-client/tests/ui-selectors.test.ts new file mode 100644 index 0000000000..5489d737e9 --- /dev/null +++ b/packages/ai-client/tests/ui-selectors.test.ts @@ -0,0 +1,175 @@ +import { describe, expect, it } from 'vitest' +import { partTypeToKey, selectChatUI } from '../src/ui' +import { + approvalInterrupt, + genericInterrupt, + messageWithToolResults, + orphanResultMessage, + purchaseApprovalInterrupt, + purchaseApprovalMessage, + unboundInterrupt, +} from './ui-fixtures' + +describe('selectChatUI', () => { + it('matches results and partitions interrupts', () => { + const selected = selectChatUI({ + messages: [messageWithToolResults], + interrupts: [approvalInterrupt, genericInterrupt], + inlineToolNames: ['purchaseItem'], + }) + + const parts = selected.messages[0]?.parts + expect(parts?.map((part) => part.key)).toEqual([ + 'toolCall', + 'toolResult', + 'structuredOutput', + ]) + + const call = parts?.[0] + expect(call?.key).toBe('toolCall') + if (call?.key === 'toolCall') { + expect(call.result?.toolCallId).toBe(call.part.id) + expect(call.interrupt).toBe(approvalInterrupt) + } + + expect(selected.interrupts).toEqual([genericInterrupt]) + }) + + it('uses camel-case component keys', () => { + expect(partTypeToKey('tool-call')).toBe('toolCall') + expect(partTypeToKey('tool-result')).toBe('toolResult') + expect(partTypeToKey('structured-output')).toBe('structuredOutput') + expect(partTypeToKey('ui-resource')).toBe('uiResource') + }) + + it('keeps unmatched tool-result parts', () => { + const selected = selectChatUI({ + messages: [orphanResultMessage], + interrupts: [], + }) + const resultPart = selected.messages[0]?.parts[1] + expect(resultPart?.key).toBe('toolResult') + if (resultPart?.key === 'toolResult') { + expect(resultPart.matched).toBe(false) + expect(resultPart.part.toolCallId).toBe('missing-call') + } + }) + + it('keeps orphan approvals in the interrupt list', () => { + const selected = selectChatUI({ + messages: [messageWithToolResults], + interrupts: [purchaseApprovalInterrupt], + inlineToolNames: ['purchaseItem'], + }) + expect(selected.interrupts).toEqual([purchaseApprovalInterrupt]) + }) + + it('attaches list-placement approvals to the call and keeps them in the list', () => { + const selected = selectChatUI({ + messages: [purchaseApprovalMessage], + interrupts: [purchaseApprovalInterrupt], + inlineToolNames: [], + }) + const call = selected.messages[0]?.parts[0] + expect(call?.key).toBe('toolCall') + if (call?.key === 'toolCall') { + expect(call.interrupt).toBe(purchaseApprovalInterrupt) + } + expect(selected.interrupts).toEqual([purchaseApprovalInterrupt]) + }) + + it('hides inline approvals from the interrupt list when a call matches', () => { + const selected = selectChatUI({ + messages: [purchaseApprovalMessage], + interrupts: [purchaseApprovalInterrupt, genericInterrupt], + inlineToolNames: ['purchaseItem'], + }) + expect(selected.interrupts).toEqual([genericInterrupt]) + }) + + it('preserves empty arrays', () => { + const selected = selectChatUI({ messages: [], interrupts: [] }) + expect(selected.messages).toEqual([]) + expect(selected.interrupts).toEqual([]) + }) + + it('preserves message and part order across every part key', () => { + const selected = selectChatUI({ + messages: [ + { + id: 'ordered', + role: 'assistant', + parts: [ + { type: 'thinking', content: 'hmm' }, + { type: 'text', content: 'hi' }, + { + type: 'image', + source: { type: 'url', value: 'https://example.com/a.png' }, + }, + { + type: 'audio', + source: { type: 'url', value: 'https://example.com/a.wav' }, + }, + { + type: 'video', + source: { type: 'url', value: 'https://example.com/a.mp4' }, + }, + { + type: 'document', + source: { type: 'url', value: 'https://example.com/a.pdf' }, + }, + { + type: 'tool-call', + id: 'call-a', + name: 'getWeather', + arguments: '{}', + state: 'awaiting-input', + }, + { + type: 'tool-result', + toolCallId: 'other', + content: 'orphan', + state: 'complete', + }, + { + type: 'structured-output', + status: 'streaming', + raw: '{', + }, + { + type: 'ui-resource', + resource: { + uri: 'ui://widget', + mimeType: 'text/html', + text: '

', + }, + toolCallId: 'call-a', + toolName: 'getWeather', + }, + ], + }, + ], + }) + + expect(selected.messages[0]?.parts.map((part) => part.key)).toEqual([ + 'thinking', + 'text', + 'image', + 'audio', + 'video', + 'document', + 'toolCall', + 'toolResult', + 'structuredOutput', + 'uiResource', + ]) + }) + + it('keeps unbound and registered generic interrupts in the list', () => { + const selected = selectChatUI({ + messages: [], + interrupts: [genericInterrupt, unboundInterrupt], + }) + expect(selected.interrupts).toEqual([genericInterrupt, unboundInterrupt]) + }) +}) diff --git a/packages/ai-client/tests/ui-types.test-d.ts b/packages/ai-client/tests/ui-types.test-d.ts new file mode 100644 index 0000000000..b8de8adb42 --- /dev/null +++ b/packages/ai-client/tests/ui-types.test-d.ts @@ -0,0 +1,23 @@ +import { expectTypeOf } from 'vitest' +import type { + ChatUIData, + ChatUIToolPart, + RegisteredUIInterrupt, +} from '../src/ui' +import { chatOptions } from './ui-fixtures' + +type WeatherPart = ChatUIToolPart +type PlanInterrupt = RegisteredUIInterrupt + +expectTypeOf().toEqualTypeOf< + { city: string } | undefined +>() +expectTypeOf().toEqualTypeOf< + { temperature: number } | undefined +>() +expectTypeOf().toEqualTypeOf< + { title: string } | undefined +>() +expectTypeOf>().toEqualTypeOf<{ + answer: string +}>() diff --git a/packages/ai-client/vite.config.ts b/packages/ai-client/vite.config.ts index 40c5f49c43..2e3210f99b 100644 --- a/packages/ai-client/vite.config.ts +++ b/packages/ai-client/vite.config.ts @@ -40,7 +40,12 @@ export default mergeConfig( // implementations; declare it as its own entry so the build emits // it independently and the main entry can stay free of the bridge // classes (they're imported only via `import type` from clients). - entry: ['./src/index.ts', './src/devtools.ts', './src/byok.ts'], + entry: [ + './src/index.ts', + './src/devtools.ts', + './src/byok.ts', + './src/ui.ts', + ], srcDir: './src', cjs: false, }), diff --git a/packages/ai-react-ui/src/chat-input.tsx b/packages/ai-react-ui/src/chat-input.tsx index d90cdcd5a9..f20e9e989b 100644 --- a/packages/ai-react-ui/src/chat-input.tsx +++ b/packages/ai-react-ui/src/chat-input.tsx @@ -31,6 +31,9 @@ export interface ChatInputProps { } /** + * @deprecated Use `createUI()` and an application-owned input component. + * Deprecated in 0.9.0. Removed in 1.0.0. + * * Chat input component - handles message input and submission * * Features: diff --git a/packages/ai-react-ui/src/chat-message.tsx b/packages/ai-react-ui/src/chat-message.tsx index 7665b1ba06..83ce913149 100644 --- a/packages/ai-react-ui/src/chat-message.tsx +++ b/packages/ai-react-ui/src/chat-message.tsx @@ -41,6 +41,8 @@ export interface ChatMessageProps { } /** + * @deprecated Use `createUI()` Message instead. Deprecated in 0.9.0. Removed in 1.0.0. + * * Message component - renders a single message with all its parts * * This component natively understands TanStack AI's parts-based message format: diff --git a/packages/ai-react-ui/src/chat-messages.tsx b/packages/ai-react-ui/src/chat-messages.tsx index 2cdf27b391..804abb34f8 100644 --- a/packages/ai-react-ui/src/chat-messages.tsx +++ b/packages/ai-react-ui/src/chat-messages.tsx @@ -4,6 +4,7 @@ import { ChatMessage } from './chat-message' import type { ReactNode } from 'react' import type { UIMessage } from '@tanstack/ai-react' +/** @deprecated Use `createUI()` Messages instead. Deprecated in 0.9.0. Removed in 1.0.0. */ export interface ChatMessagesProps { /** Custom render function for each message */ children?: (message: UIMessage, index: number) => ReactNode @@ -23,6 +24,8 @@ export interface ChatMessagesProps { } /** + * @deprecated Use `createUI()` Messages instead. Deprecated in 0.9.0. Removed in 1.0.0. + * * Messages container - renders all messages in the conversation * * @example diff --git a/packages/ai-react-ui/src/chat.tsx b/packages/ai-react-ui/src/chat.tsx index 09b00572ff..c0f20791f6 100644 --- a/packages/ai-react-ui/src/chat.tsx +++ b/packages/ai-react-ui/src/chat.tsx @@ -16,6 +16,7 @@ const ChatContext = createContext(null) * Hook to access chat context * @throws Error if used outside of Chat component */ +/** @deprecated Use `createUI().useChat()` instead. Deprecated in 0.9.0. Removed in 1.0.0. */ export function useChatContext() { const context = useContext(ChatContext) if (!context) { @@ -26,6 +27,7 @@ export function useChatContext() { return context } +/** @deprecated Use `createUI()` Chat/Provider instead. Deprecated in 0.9.0. Removed in 1.0.0. */ export interface ChatProps { /** Child components (Chat.Messages, Chat.Input, etc.) */ children: ReactNode @@ -52,6 +54,10 @@ export interface ChatProps { } /** + * @deprecated Use `createUI()` from `@tanstack/ai-react-ui` instead. + * See https://tanstack.com/ai/latest/docs/migration/create-ui + * Deprecated in 0.9.0. Removed in 1.0.0. + * * Root Chat component - provides context for all chat subcomponents * * @example diff --git a/packages/ai-react-ui/src/create-ui.tsx b/packages/ai-react-ui/src/create-ui.tsx new file mode 100644 index 0000000000..7fefb46f02 --- /dev/null +++ b/packages/ai-react-ui/src/create-ui.tsx @@ -0,0 +1,392 @@ +import { createContext, useContext } from 'react' +import type { ComponentType, ReactNode } from 'react' +import { + automaticPartsForMessage, + collectInlineToolNames, + resolveInterruptComponent, + selectChatUI, + selectMessageUI, +} from '@tanstack/ai-client/ui' +import type { + ChatUIData, + ChatUIInterrupt, + ChatUIPartKey, + ChatUIRegisteredInterruptId, + ChatUISelectedPart, + ChatUIToolName, + ChatUIToolsOf, + RegisteredUIInterrupt, +} from '@tanstack/ai-client/ui' +import type { + MessagePart, + ToolCallPart, + ToolResultPart, + UIMessage, +} from '@tanstack/ai-client' + +// ponytail: duck-typed so UseChatReturn assigns; UIMessage generics are invariant +export type ChatUIHost = { + messages: ReadonlyArray + interrupts?: ReadonlyArray + error?: Error + isLoading?: boolean + status?: string + sendMessage?: (content: string, ...args: Array) => Promise | void +} + +export type LayoutProps = { + chat: ChatUIHost + renderMessages: () => ReactNode + renderInterrupts: () => ReactNode + renderInput: () => ReactNode + readonly __ui?: TOptions +} + +export type MessageProps = { + chat: ChatUIHost + message: UIMessage, ChatUIData> + renderParts: () => ReactNode +} + +export type InputProps = { + chat: ChatUIHost + readonly __ui?: TOptions +} + +export type PartProps = { + chat: ChatUIHost + part: MessagePart, ChatUIData> +} + +export type ToolProps< + TOptions, + TName extends ChatUIToolName = ChatUIToolName, +> = { + chat: ChatUIHost + part: Extract>, { name: TName }> + result?: ToolResultPart + interrupt?: Extract< + ChatUIInterrupt, + { kind: 'tool-approval'; toolName: TName } + > + renderInterrupt: () => ReactNode +} + +export type InterruptProps = { + chat: ChatUIHost + interrupt: ChatUIInterrupt + readonly __ui?: TOptions +} + +type InterruptEntry = + | ComponentType> + | { + component: ComponentType> + placement?: 'inline' | 'list' + } + +export type ChatUIComponents = { + layout: ComponentType> + message: ComponentType> + input?: ComponentType> + parts: { + [K in ChatUIPartKey]?: ComponentType> + } & { + fallback?: ComponentType> + } + tools?: { + [K in ChatUIToolName]?: ComponentType> + } + interrupts?: { + tools?: { + [K in ChatUIToolName]?: InterruptEntry + } + registered?: { + [K in ChatUIRegisteredInterruptId]?: ComponentType<{ + chat: ChatUIHost + interrupt: RegisteredUIInterrupt + }> + } + generic?: ComponentType> + unbound?: ComponentType> + fallback?: ComponentType> + } +} + +type UIContextValue = { + chat: ChatUIHost + components: ChatUIComponents + warn: (key: string, message: string) => void +} + +function createWarnOnce() { + const seen = new Set() + return (key: string, message: string) => { + if (process.env.NODE_ENV === 'production') return + if (seen.has(key)) return + seen.add(key) + console.warn(message) + } +} + +function readInterrupts(chat: ChatUIHost) { + return chat.interrupts ?? [] +} + +export function createUI(options: TOptions) { + void options + const warn = createWarnOnce() + const UIContext = createContext | null>(null) + + function useUIContext() { + const value = useContext(UIContext) + if (!value) { + throw new Error( + 'Chat UI components must be wrapped in UI.Provider or UI.Chat.', + ) + } + return value + } + + function useChat() { + return useUIContext().chat + } + + function defineComponents( + components: ChatUIComponents, + ): ChatUIComponents { + return components + } + + function inlineNames(components: ChatUIComponents) { + return collectInlineToolNames( + components.interrupts?.tools as Record | undefined, + ) + } + + function Provider({ + chat, + components, + children, + }: { + chat: ChatUIHost + components: ChatUIComponents + children?: ReactNode + }) { + return ( + + {children} + + ) + } + + function Chat({ + chat, + components, + }: { + chat: ChatUIHost + components: ChatUIComponents + }) { + const Layout = components.layout + return ( + + } + renderInterrupts={() => } + renderInput={() => { + const Input = components.input + return Input ? : null + }} + /> + + ) + } + + function Messages({ + children, + }: { + children?: (messages: ChatUIHost['messages']) => ReactNode + } = {}) { + const { chat } = useUIContext() + if (children) return <>{children(chat.messages)} + return ( + <> + {chat.messages.map((message) => ( + + ))} + + ) + } + + function Message({ + message, + children, + }: { + message: ChatUIHost['messages'][number] + children?: (parts: Array) => ReactNode + }) { + const { chat, components } = useUIContext() + const inlineToolNames = inlineNames(components) + const selected = selectMessageUI(message, { + interrupts: readInterrupts(chat), + inlineToolNames, + }) + if (children) return <>{children(selected.parts)} + const MessageComponent = components.message + return ( + } + /> + ) + } + + function AutomaticParts({ + message, + }: { + message: ChatUIHost['messages'][number] + }) { + const { chat, components } = useUIContext() + const inlineToolNames = inlineNames(components) + const selected = selectMessageUI(message, { + interrupts: readInterrupts(chat), + inlineToolNames, + }) + return ( + <> + {automaticPartsForMessage(selected).map((part, index) => ( + + ))} + + ) + } + + function SelectedPartView({ + selected, + inline, + }: { + selected: ChatUISelectedPart + inline: boolean + }) { + const { chat, components, warn: warnMissing } = useUIContext() + if (selected.key === 'toolCall') { + const name = selected.part.name + const Tool = components.tools?.[name as ChatUIToolName] as + | ComponentType> + | undefined + if (!Tool) { + warnMissing( + `tool:${name}`, + `[tanstack-ai-ui] Missing tools.${name} component`, + ) + return null + } + return ( + ['part']} + result={selected.result} + interrupt={selected.interrupt as ToolProps['interrupt']} + renderInterrupt={() => + inline ? : null + } + /> + ) + } + + const PartComponent = + components.parts[selected.key] ?? components.parts.fallback + if (!PartComponent) { + warnMissing( + `part:${selected.key}`, + `[tanstack-ai-ui] Missing parts.${selected.key} component`, + ) + return null + } + return ( + ['part']} + /> + ) + } + + function InlineInterrupt({ interrupt }: { interrupt?: ChatUIInterrupt }) { + const { chat, components } = useUIContext() + if (!interrupt || interrupt.kind !== 'tool-approval') return null + const inlineToolNames = inlineNames(components) + if (!inlineToolNames.includes(interrupt.toolName)) return null + const Component = resolveInterruptComponent( + interrupt, + components.interrupts, + ) as ComponentType> | undefined + if (!Component) return null + return + } + + function Part({ part }: { part: MessagePart }) { + const { chat } = useUIContext() + const selected = selectMessageUI( + { id: 'part', role: 'assistant', parts: [part] }, + { interrupts: readInterrupts(chat), inlineToolNames: [] }, + ).parts[0] + if (!selected) return null + return + } + + function Interrupts({ + children, + }: { + children?: (interrupts: ReadonlyArray) => ReactNode + } = {}) { + const { chat, components } = useUIContext() + const inlineToolNames = inlineNames(components) + const selected = selectChatUI({ + messages: chat.messages, + interrupts: readInterrupts(chat), + inlineToolNames, + }) + if (children) return <>{children(selected.interrupts)} + return ( + <> + {selected.interrupts.map((interrupt) => ( + + ))} + + ) + } + + function Interrupt({ interrupt }: { interrupt: ChatUIInterrupt }) { + const { chat, components, warn: warnMissing } = useUIContext() + const Component = resolveInterruptComponent( + interrupt, + components.interrupts, + ) as ComponentType> | undefined + if (!Component) { + warnMissing( + `interrupt:${interrupt.id}`, + `[tanstack-ai-ui] Missing interrupt component for ${interrupt.kind}`, + ) + return null + } + return + } + + return { + Chat, + Provider, + Messages, + Message, + Part, + Interrupts, + Interrupt, + defineComponents, + useChat, + } +} diff --git a/packages/ai-react-ui/src/index.ts b/packages/ai-react-ui/src/index.ts index eec1ce48e4..6bbccc1ceb 100644 --- a/packages/ai-react-ui/src/index.ts +++ b/packages/ai-react-ui/src/index.ts @@ -24,6 +24,18 @@ * ``` */ +export { + createUI, + type ChatUIComponents, + type ChatUIHost, + type InputProps, + type InterruptProps, + type LayoutProps, + type MessageProps, + type PartProps, + type ToolProps, +} from './create-ui' + // Main components export { Chat, useChatContext, type ChatProps } from './chat' export { ChatMessages, type ChatMessagesProps } from './chat-messages' diff --git a/packages/ai-react-ui/src/tool-approval.tsx b/packages/ai-react-ui/src/tool-approval.tsx index 2c0707aedf..c079ae8aa4 100644 --- a/packages/ai-react-ui/src/tool-approval.tsx +++ b/packages/ai-react-ui/src/tool-approval.tsx @@ -36,6 +36,9 @@ export interface ToolApprovalRenderProps { } /** + * @deprecated Use `createUI()` interrupt components with `chat.interrupts`. + * Deprecated in 0.9.0. Removed in 1.0.0. + * * Tool approval component - renders approve/deny buttons for tools that need approval * * @example diff --git a/packages/ai-react-ui/tests/coexistence.test.ts b/packages/ai-react-ui/tests/coexistence.test.ts new file mode 100644 index 0000000000..7391e81b02 --- /dev/null +++ b/packages/ai-react-ui/tests/coexistence.test.ts @@ -0,0 +1,22 @@ +import { describe, expect, it } from 'vitest' +import { + Chat, + ChatInput, + ChatMessage, + ChatMessages, + TextPart, + ThinkingPart, + createUI, +} from '../src' + +describe('public coexistence', () => { + it('exports old and new APIs before 1.0', () => { + expect(Chat).toBeDefined() + expect(ChatInput).toBeDefined() + expect(ChatMessage).toBeDefined() + expect(ChatMessages).toBeDefined() + expect(TextPart).toBeDefined() + expect(ThinkingPart).toBeDefined() + expect(createUI).toBeDefined() + }) +}) diff --git a/packages/ai-react-ui/tests/create-ui-types.test.tsx b/packages/ai-react-ui/tests/create-ui-types.test.tsx new file mode 100644 index 0000000000..1ddcc58e1f --- /dev/null +++ b/packages/ai-react-ui/tests/create-ui-types.test.tsx @@ -0,0 +1,39 @@ +import { expectTypeOf } from 'vitest' +import { createUI } from '../src/create-ui' +import { chatOptions } from '../../ai-client/tests/ui-fixtures' + +const UI = createUI(chatOptions) + +UI.defineComponents({ + layout: ({ chat, renderMessages }) => { + expectTypeOf(chat.messages).toMatchTypeOf>() + return renderMessages() + }, + message: ({ renderParts }) => renderParts(), + parts: { + fallback: () => null, + }, + tools: { + getWeather: ({ part, result }) => { + expectTypeOf(part.input).toEqualTypeOf<{ city: string } | undefined>() + expectTypeOf(part.output).toEqualTypeOf< + { temperature: number } | undefined + >() + expectTypeOf(result?.toolCallId).toEqualTypeOf() + return null + }, + // @ts-expect-error This tool is not in chatOptions. + unknownTool: () => null, + }, + interrupts: { + registered: { + choosePlan: ({ interrupt }) => { + interrupt.resolveInterrupt('approved') + // @ts-expect-error The response schema accepts a string. + interrupt.resolveInterrupt(42) + return null + }, + }, + fallback: () => null, + }, +}) diff --git a/packages/ai-react-ui/tests/create-ui.test.tsx b/packages/ai-react-ui/tests/create-ui.test.tsx new file mode 100644 index 0000000000..b24f461d47 --- /dev/null +++ b/packages/ai-react-ui/tests/create-ui.test.tsx @@ -0,0 +1,309 @@ +import { renderToStaticMarkup } from 'react-dom/server' +import { describe, expect, it, vi } from 'vitest' +import { createUI } from '../src/create-ui' +import { + chatOptions, + createChatResult, + genericInterrupt, + messageWithToolResults, + orphanResultMessage, + purchaseApprovalInterrupt, + purchaseApprovalMessage, + unboundInterrupt, + unknownToolMessage, +} from '../../ai-client/tests/ui-fixtures' +import type { ToolCallState } from '@tanstack/ai-client' + +describe('createUI', () => { + it('renders automatic and manual trees', () => { + const UI = createUI(chatOptions) + const components = UI.defineComponents({ + layout: ({ renderMessages, renderInterrupts }) => ( + <> + {renderMessages()} + {renderInterrupts()} + + ), + message: ({ renderParts }) =>
{renderParts()}
, + parts: { fallback: ({ part }) => {part.type} }, + tools: { + getWeather: ({ part }) => {part.input?.city}, + purchaseItem: () => null, + }, + interrupts: { fallback: ({ interrupt }) => {interrupt.reason} }, + }) + + const chat = createChatResult({ messages: [messageWithToolResults] }) + const automatic = renderToStaticMarkup( + , + ) + expect(automatic).toContain('Paris') + + const manual = renderToStaticMarkup( + + + {(messages) => {messages.length}} + + , + ) + expect(manual).toContain('1') + }) + + it('warns once for a missing runtime key', () => { + const warn = vi.spyOn(console, 'warn').mockImplementation(() => undefined) + const UI = createUI(chatOptions) + const chat = createChatResult({ messages: [unknownToolMessage] }) + const components = UI.defineComponents({ + layout: ({ renderMessages }) => renderMessages(), + message: ({ renderParts }) => renderParts(), + parts: { fallback: () => null }, + tools: { + getWeather: () => null, + purchaseItem: () => null, + }, + interrupts: { fallback: () => null }, + }) + renderToStaticMarkup() + renderToStaticMarkup() + expect(warn).toHaveBeenCalledTimes(1) + warn.mockRestore() + }) + + it('keeps unmatched tool results and suppresses matched ones', () => { + const UI = createUI(chatOptions) + const components = UI.defineComponents({ + layout: ({ renderMessages }) => renderMessages(), + message: ({ renderParts }) => renderParts(), + parts: { + toolResult: ({ part }) => + part.type === 'tool-result' ? {String(part.content)} : null, + fallback: () => null, + }, + tools: { + getWeather: () => weather, + purchaseItem: () => null, + }, + interrupts: { fallback: () => null }, + }) + + const matched = renderToStaticMarkup( + , + ) + expect(matched).toContain('weather') + expect(matched).not.toContain('') + + const unmatched = renderToStaticMarkup( + , + ) + expect(unmatched).toContain('standalone') + }) + + it('puts inline approvals in the tool slot and list approvals in Interrupts', () => { + const UI = createUI(chatOptions) + const inline = UI.defineComponents({ + layout: ({ renderMessages, renderInterrupts }) => ( + <> + {renderMessages()} + {renderInterrupts()} + + ), + message: ({ renderParts }) => renderParts(), + parts: { fallback: () => null }, + tools: { + getWeather: () => null, + purchaseItem: ({ renderInterrupt }) => ( +
+ tool + {renderInterrupt()} +
+ ), + }, + interrupts: { + tools: { + purchaseItem: { + component: () => inline-approval, + placement: 'inline', + }, + }, + fallback: ({ interrupt }) => {interrupt.reason}, + }, + }) + + const inlineMarkup = renderToStaticMarkup( + , + ) + expect(inlineMarkup).toContain('inline-approval') + expect(inlineMarkup).not.toContain('') + + const list = UI.defineComponents({ + layout: ({ renderMessages, renderInterrupts }) => ( + <> + {renderMessages()} + {renderInterrupts()} + + ), + message: ({ renderParts }) => renderParts(), + parts: { fallback: () => null }, + tools: { + getWeather: () => null, + purchaseItem: ({ renderInterrupt }) => ( +
+ tool + {renderInterrupt()} +
+ ), + }, + interrupts: { + tools: { + purchaseItem: () => list-approval, + }, + fallback: () => null, + }, + }) + + const listMarkup = renderToStaticMarkup( + , + ) + expect(listMarkup).toContain('list-approval') + }) + + it('renders generic and unbound interrupts through specific entries or fallback', () => { + const UI = createUI(chatOptions) + const components = UI.defineComponents({ + layout: ({ renderInterrupts }) => renderInterrupts(), + message: ({ renderParts }) => renderParts(), + parts: { fallback: () => null }, + tools: { + getWeather: () => null, + purchaseItem: () => null, + }, + interrupts: { + registered: { + choosePlan: () => plan, + }, + unbound: () => foreign, + fallback: () => fallback, + }, + }) + + const markup = renderToStaticMarkup( + , + ) + expect(markup).toContain('plan') + expect(markup).toContain('foreign') + }) + + it('omits input when no input component exists', () => { + const UI = createUI(chatOptions) + const components = UI.defineComponents({ + layout: ({ renderInput }) =>
{renderInput()}
, + message: ({ renderParts }) => renderParts(), + parts: { fallback: () => null }, + }) + const markup = renderToStaticMarkup( + , + ) + expect(markup).toBe('
') + }) + + it('reads chat from nested provider context and throws outside a provider', () => { + const UI = createUI(chatOptions) + const components = UI.defineComponents({ + layout: () => { + const chat = UI.useChat() + return

{chat.messages.length}

+ }, + message: ({ renderParts }) => renderParts(), + parts: { fallback: () => null }, + }) + + const inner = createChatResult({ messages: [messageWithToolResults] }) + const outer = createChatResult({ messages: [] }) + const markup = renderToStaticMarkup( + + + , + ) + expect(markup).toContain('

1

') + + function Broken() { + UI.useChat() + return null + } + expect(() => renderToStaticMarkup()).toThrow( + /UI.Provider or UI.Chat/, + ) + }) + + it('renders a tool component for every ToolCallState', () => { + const states: Array = [ + 'awaiting-input', + 'input-streaming', + 'input-complete', + 'approval-requested', + 'approval-responded', + 'complete', + 'error', + ] + const UI = createUI(chatOptions) + const components = UI.defineComponents({ + layout: ({ renderMessages }) => renderMessages(), + message: ({ renderParts }) => renderParts(), + parts: { fallback: () => null }, + tools: { + getWeather: ({ part }) => {part.state}, + purchaseItem: () => null, + }, + interrupts: { fallback: () => null }, + }) + + for (const state of states) { + const markup = renderToStaticMarkup( + , + ) + expect(markup).toContain(`${state}`) + } + }) +}) diff --git a/packages/ai-react-ui/tests/react-dom-server.d.ts b/packages/ai-react-ui/tests/react-dom-server.d.ts new file mode 100644 index 0000000000..df9bff243d --- /dev/null +++ b/packages/ai-react-ui/tests/react-dom-server.d.ts @@ -0,0 +1,4 @@ +declare module 'react-dom/server' { + import type { ReactNode } from 'react' + export function renderToStaticMarkup(node: ReactNode): string +} diff --git a/packages/ai-react-ui/tsconfig.json b/packages/ai-react-ui/tsconfig.json index 65915cd005..d3e610bff5 100644 --- a/packages/ai-react-ui/tsconfig.json +++ b/packages/ai-react-ui/tsconfig.json @@ -2,12 +2,10 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "./dist", - "rootDir": "./src", "jsx": "react-jsx", - "declarationMap": true, - "composite": true, - "lib": ["ES2022", "DOM"] + "lib": ["ES2022", "DOM"], + "rootDir": "../.." }, - "include": ["src"], + "include": ["src", "tests"], "exclude": ["node_modules", "dist"] } diff --git a/packages/ai-react-ui/vite.config.ts b/packages/ai-react-ui/vite.config.ts index 77bcc2e60b..782c82ec49 100644 --- a/packages/ai-react-ui/vite.config.ts +++ b/packages/ai-react-ui/vite.config.ts @@ -9,7 +9,7 @@ const config = defineConfig({ watch: false, globals: true, environment: 'node', - include: ['tests/**/*.test.ts'], + include: ['tests/**/*.test.ts', 'tests/**/*.test.tsx'], coverage: { provider: 'v8', reporter: ['text', 'json', 'html', 'lcov'], diff --git a/packages/ai-solid-ui/src/chat-input.tsx b/packages/ai-solid-ui/src/chat-input.tsx index b720b9c1cc..7be552ad9e 100644 --- a/packages/ai-solid-ui/src/chat-input.tsx +++ b/packages/ai-solid-ui/src/chat-input.tsx @@ -17,6 +17,7 @@ export interface ChatInputRenderProps { ref: (el: HTMLInputElement | HTMLTextAreaElement) => void } +/** @deprecated Use `createUI()` and an application-owned input component. Deprecated in 0.8.0. Removed in 1.0.0. */ export interface ChatInputProps { /** Render prop for full control */ children?: (props: ChatInputRenderProps) => JSX.Element @@ -31,6 +32,8 @@ export interface ChatInputProps { } /** + * @deprecated Use `createUI()` and an application-owned input component. Deprecated in 0.8.0. Removed in 1.0.0. + * * Chat input component - handles message input and submission * * Features: diff --git a/packages/ai-solid-ui/src/chat-message.tsx b/packages/ai-solid-ui/src/chat-message.tsx index 10b3c5715e..1f623cc33b 100644 --- a/packages/ai-solid-ui/src/chat-message.tsx +++ b/packages/ai-solid-ui/src/chat-message.tsx @@ -12,6 +12,7 @@ export interface ToolCallRenderProps { output?: any } +/** @deprecated Use `createUI()` Message instead. Deprecated in 0.8.0. Removed in 1.0.0. */ export interface ChatMessageProps { /** The message to render */ message: UIMessage @@ -41,6 +42,8 @@ export interface ChatMessageProps { } /** + * @deprecated Use `createUI()` Message instead. Deprecated in 0.8.0. Removed in 1.0.0. + * * Message component - renders a single message with all its parts * * This component natively understands TanStack AI's parts-based message format: diff --git a/packages/ai-solid-ui/src/chat-messages.tsx b/packages/ai-solid-ui/src/chat-messages.tsx index c0136696a3..071d4ef50e 100644 --- a/packages/ai-solid-ui/src/chat-messages.tsx +++ b/packages/ai-solid-ui/src/chat-messages.tsx @@ -4,6 +4,7 @@ import { ChatMessage } from './chat-message' import type { JSX } from 'solid-js' import type { UIMessage } from '@tanstack/ai-solid' +/** @deprecated Use `createUI()` Messages instead. Deprecated in 0.8.0. Removed in 1.0.0. */ export interface ChatMessagesProps { /** Custom render function for each message */ children?: (message: UIMessage, index: number) => JSX.Element @@ -23,6 +24,8 @@ export interface ChatMessagesProps { } /** + * @deprecated Use `createUI()` Messages instead. Deprecated in 0.8.0. Removed in 1.0.0. + * * Messages container - renders all messages in the conversation * * @example diff --git a/packages/ai-solid-ui/src/chat.tsx b/packages/ai-solid-ui/src/chat.tsx index 2a94bcd9d0..dda77eb0a4 100644 --- a/packages/ai-solid-ui/src/chat.tsx +++ b/packages/ai-solid-ui/src/chat.tsx @@ -16,6 +16,7 @@ const ChatContext = createContext(null) * Hook to access chat context * @throws Error if used outside of Chat component */ +/** @deprecated Use `createUI().useChat()` instead. Deprecated in 0.8.0. Removed in 1.0.0. */ export function useChatContext(): UseChatReturn { const context = useContext(ChatContext) if (!context) { @@ -26,6 +27,7 @@ export function useChatContext(): UseChatReturn { return context } +/** @deprecated Use `createUI()` Chat/Provider instead. Deprecated in 0.8.0. Removed in 1.0.0. */ export interface ChatProps { /** Child components (Chat.Messages, Chat.Input, etc.) */ children: JSX.Element @@ -57,6 +59,10 @@ export interface ChatProps { } /** + * @deprecated Use `createUI()` from `@tanstack/ai-solid-ui` instead. + * See https://tanstack.com/ai/latest/docs/migration/create-ui + * Deprecated in 0.8.0. Removed in 1.0.0. + * * Root Chat component - provides context for all chat subcomponents * * @example diff --git a/packages/ai-solid-ui/src/create-ui.tsx b/packages/ai-solid-ui/src/create-ui.tsx new file mode 100644 index 0000000000..eeb82ce91d --- /dev/null +++ b/packages/ai-solid-ui/src/create-ui.tsx @@ -0,0 +1,389 @@ +import { createContext, useContext } from 'solid-js' +import type { Accessor, Component, JSX } from 'solid-js' +import { + automaticPartsForMessage, + collectInlineToolNames, + resolveInterruptComponent, + selectChatUI, + selectMessageUI, +} from '@tanstack/ai-client/ui' +import type { + ChatUIData, + ChatUIInterrupt, + ChatUIPartKey, + ChatUIRegisteredInterruptId, + ChatUISelectedPart, + ChatUIToolName, + ChatUIToolsOf, + RegisteredUIInterrupt, +} from '@tanstack/ai-client/ui' +import type { + MessagePart, + ToolCallPart, + ToolResultPart, + UIMessage, +} from '@tanstack/ai-client' + +// ponytail: duck-typed so UseChatReturn assigns; accessors and UIMessage generics are invariant +export type ChatUIHost = { + messages: Accessor> | ReadonlyArray + interrupts?: Accessor> | ReadonlyArray + error?: Accessor | Error + isLoading?: Accessor | boolean + status?: Accessor | string + sendMessage?: (content: string, ...args: Array) => Promise | void +} + +export type LayoutProps = { + chat: ChatUIHost + renderMessages: () => JSX.Element + renderInterrupts: () => JSX.Element + renderInput: () => JSX.Element + readonly __ui?: TOptions +} + +export type MessageProps = { + chat: ChatUIHost + message: UIMessage, ChatUIData> + renderParts: () => JSX.Element +} + +export type InputProps = { + chat: ChatUIHost + readonly __ui?: TOptions +} + +export type PartProps = { + chat: ChatUIHost + part: MessagePart, ChatUIData> +} + +export type ToolProps< + TOptions, + TName extends ChatUIToolName = ChatUIToolName, +> = { + chat: ChatUIHost + part: Extract>, { name: TName }> + result?: ToolResultPart + interrupt?: Extract< + ChatUIInterrupt, + { kind: 'tool-approval'; toolName: TName } + > + renderInterrupt: () => JSX.Element +} + +export type InterruptProps = { + chat: ChatUIHost + interrupt: ChatUIInterrupt + readonly __ui?: TOptions +} + +type InterruptEntry = + | Component> + | { + component: Component> + placement?: 'inline' | 'list' + } + +export type ChatUIComponents = { + layout: Component> + message: Component> + input?: Component> + parts: { + [K in ChatUIPartKey]?: Component> + } & { + fallback?: Component> + } + tools?: { + [K in ChatUIToolName]?: Component> + } + interrupts?: { + tools?: { + [K in ChatUIToolName]?: InterruptEntry + } + registered?: { + [K in ChatUIRegisteredInterruptId]?: Component<{ + chat: ChatUIHost + interrupt: RegisteredUIInterrupt + }> + } + generic?: Component> + unbound?: Component> + fallback?: Component> + } +} + +type UIContextValue = { + chat: ChatUIHost + components: ChatUIComponents + warn: (key: string, message: string) => void +} + +function createWarnOnce() { + const seen = new Set() + return (key: string, message: string) => { + if (process.env.NODE_ENV === 'production') return + if (seen.has(key)) return + seen.add(key) + console.warn(message) + } +} + +function readMessages(chat: ChatUIHost): ReadonlyArray { + return typeof chat.messages === 'function' ? chat.messages() : chat.messages +} + +function readInterrupts(chat: ChatUIHost): ReadonlyArray { + const value = chat.interrupts + if (typeof value === 'function') return value() + return value ?? [] +} + +function messagesAccessor(chat: ChatUIHost): Accessor> { + const value = chat.messages + if (typeof value === 'function') return value + return () => value +} + +export function createUI(options: TOptions) { + void options + const warn = createWarnOnce() + const UIContext = createContext | null>(null) + + function useUIContext() { + const value = useContext(UIContext) + if (!value) { + throw new Error( + 'Chat UI components must be wrapped in UI.Provider or UI.Chat.', + ) + } + return value + } + + function useChat() { + return useUIContext().chat + } + + function defineComponents(components: ChatUIComponents) { + return components + } + + function inlineNames(components: ChatUIComponents) { + return collectInlineToolNames( + components.interrupts?.tools as Record | undefined, + ) + } + + function Provider(props: { + chat: ChatUIHost + components: ChatUIComponents + children?: JSX.Element + }) { + return ( + + {props.children} + + ) + } + + function Chat(props: { + chat: ChatUIHost + components: ChatUIComponents + }) { + const Layout = props.components.layout + return ( + + } + renderInterrupts={() => } + renderInput={() => { + const Input = props.components.input + return Input ? : null + }} + /> + + ) + } + + function Messages(props: { + children?: ( + messages: Accessor>>, + ) => JSX.Element + }) { + const ctx = useUIContext() + if (props.children) return <>{props.children(messagesAccessor(ctx.chat))} + return ( + <> + {readMessages(ctx.chat).map((message) => ( + + ))} + + ) + } + + function Message(props: { + message: UIMessage + children?: (parts: Array) => JSX.Element + }) { + const ctx = useUIContext() + const inlineToolNames = inlineNames(ctx.components) + const selected = selectMessageUI(props.message, { + interrupts: readInterrupts(ctx.chat), + inlineToolNames, + }) + if (props.children) return <>{props.children(selected.parts)} + const MessageComponent = ctx.components.message + return ( + ['message']} + renderParts={() => } + /> + ) + } + + function AutomaticParts(props: { message: UIMessage }) { + const ctx = useUIContext() + const selected = selectMessageUI(props.message, { + interrupts: readInterrupts(ctx.chat), + inlineToolNames: inlineNames(ctx.components), + }) + return ( + <> + {automaticPartsForMessage(selected).map((part) => ( + + ))} + + ) + } + + function SelectedPartView(props: { + selected: ChatUISelectedPart + inline: boolean + }) { + const ctx = useUIContext() + if (props.selected.key === 'toolCall') { + const name = props.selected.part.name + const Tool = ctx.components.tools?.[name as ChatUIToolName] as + | Component> + | undefined + if (!Tool) { + ctx.warn( + `tool:${name}`, + `[tanstack-ai-ui] Missing tools.${name} component`, + ) + return null + } + return ( + ['part']} + result={props.selected.result} + interrupt={ + (props.selected.key === 'toolCall' + ? props.selected.interrupt + : undefined) as ToolProps['interrupt'] + } + renderInterrupt={() => + props.inline && props.selected.key === 'toolCall' ? ( + + ) : null + } + /> + ) + } + const PartComponent = + ctx.components.parts[props.selected.key] ?? ctx.components.parts.fallback + if (!PartComponent) { + ctx.warn( + `part:${props.selected.key}`, + `[tanstack-ai-ui] Missing parts.${props.selected.key} component`, + ) + return null + } + return ( + ['part']} + /> + ) + } + + function InlineInterrupt(props: { interrupt?: ChatUIInterrupt }) { + const ctx = useUIContext() + const interrupt = props.interrupt + if (!interrupt || interrupt.kind !== 'tool-approval') return null + if (!inlineNames(ctx.components).includes(interrupt.toolName)) return null + const Component = resolveInterruptComponent( + interrupt, + ctx.components.interrupts, + ) as Component> | undefined + if (!Component) return null + return + } + + function Part(props: { part: MessagePart }) { + const ctx = useUIContext() + const selected = selectMessageUI( + { id: 'part', role: 'assistant', parts: [props.part] }, + { interrupts: readInterrupts(ctx.chat), inlineToolNames: [] }, + ).parts[0] + if (!selected) return null + return + } + + function Interrupts(props: { + children?: ( + interrupts: Accessor>, + ) => JSX.Element + }) { + const ctx = useUIContext() + const selected = () => + selectChatUI({ + messages: readMessages(ctx.chat), + interrupts: readInterrupts(ctx.chat), + inlineToolNames: inlineNames(ctx.components), + }) + if (props.children) { + return <>{props.children(() => selected().interrupts)} + } + return ( + <> + {selected().interrupts.map((interrupt) => ( + + ))} + + ) + } + + function Interrupt(props: { interrupt: ChatUIInterrupt }) { + const ctx = useUIContext() + const Component = resolveInterruptComponent( + props.interrupt, + ctx.components.interrupts, + ) as Component> | undefined + if (!Component) { + ctx.warn( + `interrupt:${props.interrupt.id}`, + `[tanstack-ai-ui] Missing interrupt component for ${props.interrupt.kind}`, + ) + return null + } + return + } + + return { + Chat, + Provider, + Messages, + Message, + Part, + Interrupts, + Interrupt, + defineComponents, + useChat, + } +} diff --git a/packages/ai-solid-ui/src/index.ts b/packages/ai-solid-ui/src/index.ts index 415bdd200b..0024fa6ddc 100644 --- a/packages/ai-solid-ui/src/index.ts +++ b/packages/ai-solid-ui/src/index.ts @@ -24,6 +24,18 @@ * ``` */ +export { + createUI, + type ChatUIComponents, + type ChatUIHost, + type InputProps, + type InterruptProps, + type LayoutProps, + type MessageProps, + type PartProps, + type ToolProps, +} from './create-ui' + // Main components export { Chat, useChatContext, type ChatProps } from './chat' export { ChatMessages, type ChatMessagesProps } from './chat-messages' diff --git a/packages/ai-solid-ui/src/tool-approval.tsx b/packages/ai-solid-ui/src/tool-approval.tsx index 51129ff264..79f1f0f694 100644 --- a/packages/ai-solid-ui/src/tool-approval.tsx +++ b/packages/ai-solid-ui/src/tool-approval.tsx @@ -1,6 +1,7 @@ import { useChatContext } from './chat' import type { JSX } from 'solid-js' +/** @deprecated Use `createUI()` interrupt components with `chat.interrupts`. Deprecated in 0.8.0. Removed in 1.0.0. */ export interface ToolApprovalProps { /** Tool call ID */ toolCallId: string @@ -36,6 +37,8 @@ export interface ToolApprovalRenderProps { } /** + * @deprecated Use `createUI()` interrupt components with `chat.interrupts`. Deprecated in 0.8.0. Removed in 1.0.0. + * * Tool approval component - renders approve/deny buttons for tools that need approval * * @example diff --git a/packages/ai-solid-ui/tests/coexistence.test.ts b/packages/ai-solid-ui/tests/coexistence.test.ts new file mode 100644 index 0000000000..86bc7944d8 --- /dev/null +++ b/packages/ai-solid-ui/tests/coexistence.test.ts @@ -0,0 +1,21 @@ +import { describe, expect, it } from 'vitest' +import { createUI } from '../src/create-ui' +import { readFileSync } from 'node:fs' +import { dirname, join } from 'node:path' +import { fileURLToPath } from 'node:url' + +const src = dirname(fileURLToPath(import.meta.url)) +const index = readFileSync(join(src, '../src/index.ts'), 'utf8') + +describe('public coexistence', () => { + it('exports old and new APIs before 1.0', () => { + expect(createUI).toBeDefined() + expect(index).toContain('export { Chat') + expect(index).toContain('ChatInput') + expect(index).toContain('ChatMessage') + expect(index).toContain('ChatMessages') + expect(index).toContain('TextPart') + expect(index).toContain('ThinkingPart') + expect(index).toContain('createUI') + }) +}) diff --git a/packages/ai-solid-ui/tests/create-ui-types.test.tsx b/packages/ai-solid-ui/tests/create-ui-types.test.tsx new file mode 100644 index 0000000000..247334789e --- /dev/null +++ b/packages/ai-solid-ui/tests/create-ui-types.test.tsx @@ -0,0 +1,40 @@ +import { expectTypeOf } from 'vitest' +import { createUI } from '../src/create-ui' +import { chatOptions } from '../../ai-client/tests/ui-fixtures' + +const UI = createUI(chatOptions) + +UI.defineComponents({ + layout: (props) => { + expectTypeOf(props.chat.messages).toMatchTypeOf() + return props.renderMessages() + }, + message: (props) => props.renderParts(), + parts: { + fallback: () => null, + }, + tools: { + getWeather: (props) => { + expectTypeOf(props.part.input).toEqualTypeOf< + { city: string } | undefined + >() + expectTypeOf(props.part.output).toEqualTypeOf< + { temperature: number } | undefined + >() + return null + }, + // @ts-expect-error This tool is not in chatOptions. + unknownTool: () => null, + }, + interrupts: { + registered: { + choosePlan: (props) => { + props.interrupt.resolveInterrupt('approved') + // @ts-expect-error The response schema accepts a string. + props.interrupt.resolveInterrupt(42) + return null + }, + }, + fallback: () => null, + }, +}) diff --git a/packages/ai-solid-ui/tests/create-ui.test.tsx b/packages/ai-solid-ui/tests/create-ui.test.tsx new file mode 100644 index 0000000000..8f5b9bbd25 --- /dev/null +++ b/packages/ai-solid-ui/tests/create-ui.test.tsx @@ -0,0 +1,65 @@ +import { render } from 'solid-js/web' +import { describe, expect, it, vi } from 'vitest' +import { createUI } from '../src/create-ui' +import { + chatOptions, + createSolidChatResult, + messageWithToolResults, + unknownToolMessage, +} from '../../ai-client/tests/ui-fixtures' + +function renderHtml(node: () => unknown) { + const container = document.createElement('div') + render(node as () => import('solid-js').JSX.Element, container) + return container.innerHTML +} + +describe('Solid createUI', () => { + it('renders automatic and manual traversal', () => { + const UI = createUI(chatOptions) + const chat = createSolidChatResult([messageWithToolResults]) + const components = UI.defineComponents({ + layout: (props) => <>{props.renderMessages()}, + message: (props) =>
{props.renderParts()}
, + parts: { fallback: (props) => {props.part.type} }, + tools: { + getWeather: (props) => {props.part.input?.city}, + purchaseItem: () => null, + }, + interrupts: { fallback: () => null }, + }) + + expect( + renderHtml(() => ), + ).toContain('Paris') + expect( + renderHtml(() => ( + + + {(messages) => {messages().length}} + + + )), + ).toContain('1') + }) + + it('warns once for a missing runtime key', () => { + const warn = vi.spyOn(console, 'warn').mockImplementation(() => undefined) + const UI = createUI(chatOptions) + const chat = createSolidChatResult([unknownToolMessage]) + const components = UI.defineComponents({ + layout: (props) => props.renderMessages(), + message: (props) => props.renderParts(), + parts: { fallback: () => null }, + tools: { + getWeather: () => null, + purchaseItem: () => null, + }, + interrupts: { fallback: () => null }, + }) + renderHtml(() => ) + renderHtml(() => ) + expect(warn).toHaveBeenCalledTimes(1) + warn.mockRestore() + }) +}) diff --git a/packages/ai-solid-ui/tsconfig.json b/packages/ai-solid-ui/tsconfig.json index 92effd4795..3cd8594f74 100644 --- a/packages/ai-solid-ui/tsconfig.json +++ b/packages/ai-solid-ui/tsconfig.json @@ -2,13 +2,11 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "./dist", - "rootDir": "./src", "jsx": "preserve", "jsxImportSource": "solid-js", - "declarationMap": true, - "composite": true, - "lib": ["ES2022", "DOM"] + "lib": ["ES2022", "DOM"], + "rootDir": "../.." }, - "include": ["src"], + "include": ["src", "tests"], "exclude": ["node_modules", "dist"] } diff --git a/packages/ai-solid-ui/vite.config.ts b/packages/ai-solid-ui/vite.config.ts index 36849e034e..31293a7dbd 100644 --- a/packages/ai-solid-ui/vite.config.ts +++ b/packages/ai-solid-ui/vite.config.ts @@ -18,7 +18,7 @@ const config = defineConfig({ // vite-plugin-solid transforms them into the test graph, so tests run in // a DOM environment rather than 'node'. environment: 'happy-dom', - include: ['tests/**/*.test.ts'], + include: ['tests/**/*.test.ts', 'tests/**/*.test.tsx'], coverage: { provider: 'v8', reporter: ['text', 'json', 'html', 'lcov'], diff --git a/packages/ai-svelte-ui/LICENSE b/packages/ai-svelte-ui/LICENSE new file mode 100644 index 0000000000..308cb68dc0 --- /dev/null +++ b/packages/ai-svelte-ui/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Tanner Linsley + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/ai-svelte-ui/README.md b/packages/ai-svelte-ui/README.md new file mode 100644 index 0000000000..26f3915c3b --- /dev/null +++ b/packages/ai-svelte-ui/README.md @@ -0,0 +1,5 @@ +# @tanstack/ai-svelte-ui + +Headless Svelte 5 chat UI. Call `createUI(chatOptions)` and supply every visible component. + +See https://tanstack.com/ai/latest/docs/ui/svelte diff --git a/packages/ai-svelte-ui/package.json b/packages/ai-svelte-ui/package.json new file mode 100644 index 0000000000..65726a9803 --- /dev/null +++ b/packages/ai-svelte-ui/package.json @@ -0,0 +1,70 @@ +{ + "name": "@tanstack/ai-svelte-ui", + "version": "0.1.0", + "description": "Headless Svelte 5 components for building TanStack AI chat interfaces with typed createUI adapters.", + "author": "Tanner Linsley", + "license": "MIT", + "homepage": "https://tanstack.com/ai", + "repository": { + "type": "git", + "url": "git+https://github.com/TanStack/ai.git", + "directory": "packages/ai-svelte-ui" + }, + "bugs": { + "url": "https://github.com/TanStack/ai/issues" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "type": "module", + "svelte": "./dist/index.js", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "svelte": "./dist/index.js", + "import": "./dist/index.js" + } + }, + "files": [ + "dist", + "src" + ], + "scripts": { + "clean": "rm -rf ./dist", + "test:oxlint": "oxlint src --type-aware", + "test:lib": "vitest run", + "test:lib:dev": "pnpm test:lib --watch", + "test:types": "svelte-check", + "test:build": "publint --strict", + "build": "svelte-package -i src -o dist" + }, + "keywords": [ + "ai", + "tanstack", + "svelte", + "svelte5", + "chat", + "ui", + "headless" + ], + "dependencies": { + "@tanstack/ai-client": "workspace:^" + }, + "peerDependencies": { + "@tanstack/ai-svelte": "workspace:^", + "svelte": "^5.0.0" + }, + "devDependencies": { + "@sveltejs/package": "^2.3.10", + "@sveltejs/vite-plugin-svelte": "^7.3.0", + "@types/node": "^24.10.1", + "@vitest/coverage-v8": "4.1.10", + "svelte": "^5.56.9", + "svelte-check": "^4.2.0", + "typescript": "5.9.3", + "vite": "^8.2.1" + } +} diff --git a/packages/ai-svelte-ui/src/create-ui.ts b/packages/ai-svelte-ui/src/create-ui.ts new file mode 100644 index 0000000000..077790daa2 --- /dev/null +++ b/packages/ai-svelte-ui/src/create-ui.ts @@ -0,0 +1,186 @@ +import { getContext, setContext } from 'svelte' +import { + automaticPartsForMessage, + collectInlineToolNames, + resolveInterruptComponent, + selectChatUI, + selectMessageUI, +} from '@tanstack/ai-client/ui' +import type { + ChatUIData, + ChatUIInterrupt, + ChatUIPartKey, + ChatUIRegisteredInterruptId, + ChatUISelectedPart, + ChatUIToolName, + ChatUIToolsOf, + RegisteredUIInterrupt, +} from '@tanstack/ai-client/ui' +import type { MessagePart, UIMessage } from '@tanstack/ai-client' + +// ponytail: duck-typed so createChat assigns; UIMessage generics are invariant +export type ChatUIHost = { + messages: ReadonlyArray + interrupts?: ReadonlyArray + error?: Error + isLoading?: boolean + status?: string + sendMessage?: (content: string, ...args: Array) => Promise | void +} + +export type ChatUIComponents = { + layout: unknown + message: unknown + input?: unknown + parts: { + [K in ChatUIPartKey]?: unknown + } & { + fallback?: unknown + } + tools?: { + [K in ChatUIToolName]?: unknown + } + interrupts?: { + tools?: { + [K in ChatUIToolName]?: + | unknown + | { component: unknown; placement?: 'inline' | 'list' } + } + registered?: { + [K in ChatUIRegisteredInterruptId]?: unknown + } + generic?: unknown + unbound?: unknown + fallback?: unknown + } +} + +export type UIDescriptor = { + key: symbol + warn: (key: string, message: string) => void + defineComponents: ( + components: ChatUIComponents, + ) => ChatUIComponents +} + +export type UIContextValue = { + chat: ChatUIHost + components: ChatUIComponents + ui: UIDescriptor +} + +function createWarnOnce() { + const seen = new Set() + return (key: string, message: string) => { + if (process.env.NODE_ENV === 'production') return + if (seen.has(key)) return + seen.add(key) + console.warn(message) + } +} + +export function createUI( + options: TOptions, +): UIDescriptor { + void options + return { + key: Symbol('tanstack-ai-ui'), + warn: createWarnOnce(), + defineComponents(components) { + return components + }, + } +} + +export function setUIContext(value: UIContextValue) { + setContext(value.ui.key, value) +} + +export function getUIContext(ui: UIDescriptor) { + const value = getContext | undefined>(ui.key) + if (!value) { + throw new Error( + 'Chat UI components must be wrapped in UIProvider or UIChat.', + ) + } + return value +} + +export function readMessages(chat: ChatUIHost) { + return chat.messages ?? [] +} + +export function readInterrupts(chat: ChatUIHost) { + return chat.interrupts ?? [] +} + +export function inlineNames(components: ChatUIComponents) { + return collectInlineToolNames( + components.interrupts?.tools as Record | undefined, + ) +} + +export function messageParts( + ctx: UIContextValue, + message: UIMessage, +): Array { + return automaticPartsForMessage( + selectMessageUI(message, { + interrupts: readInterrupts(ctx.chat), + inlineToolNames: inlineNames(ctx.components), + }), + ) +} + +export function listInterrupts(ctx: UIContextValue) { + return selectChatUI({ + messages: readMessages(ctx.chat), + interrupts: readInterrupts(ctx.chat), + inlineToolNames: inlineNames(ctx.components), + }).interrupts +} + +export function toolComponent(ctx: UIContextValue, name: string) { + return ctx.components.tools?.[name as never] +} + +export function partComponent(ctx: UIContextValue, key: string) { + return ( + ctx.components.parts[key as ChatUIPartKey] ?? ctx.components.parts.fallback + ) +} + +export function interruptComponent( + ctx: UIContextValue, + interrupt: ChatUIInterrupt, +) { + return resolveInterruptComponent(interrupt, ctx.components.interrupts) +} + +export type LayoutProps = { + chat: ChatUIHost + readonly __ui?: TOptions +} +export type MessageProps = { + chat: ChatUIHost + message: UIMessage, ChatUIData> +} +export type InputProps = { + chat: ChatUIHost + readonly __ui?: TOptions +} +export type PartProps = { + chat: ChatUIHost + part: MessagePart, ChatUIData> +} +export type ToolProps = { + chat: ChatUIHost + part: unknown + result?: unknown + interrupt?: unknown + readonly __ui?: TOptions +} +export type InterruptProps = { + chat: ChatUIHost + interrupt: ChatUIInterrupt | RegisteredUIInterrupt +} diff --git a/packages/ai-svelte-ui/src/index.ts b/packages/ai-svelte-ui/src/index.ts new file mode 100644 index 0000000000..a72781628e --- /dev/null +++ b/packages/ai-svelte-ui/src/index.ts @@ -0,0 +1,20 @@ +export { createUI } from './create-ui' +export type { + ChatUIComponents, + ChatUIHost, + InputProps, + InterruptProps, + LayoutProps, + MessageProps, + PartProps, + ToolProps, + UIDescriptor, +} from './create-ui' + +export { default as UIChat } from './ui-chat.svelte' +export { default as UIProvider } from './ui-provider.svelte' +export { default as UIMessages } from './ui-messages.svelte' +export { default as UIMessage } from './ui-message.svelte' +export { default as UIPart } from './ui-part.svelte' +export { default as UIInterrupts } from './ui-interrupts.svelte' +export { default as UIInterrupt } from './ui-interrupt.svelte' diff --git a/packages/ai-svelte-ui/src/selected-part.svelte b/packages/ai-svelte-ui/src/selected-part.svelte new file mode 100644 index 0000000000..c4f4eb8182 --- /dev/null +++ b/packages/ai-svelte-ui/src/selected-part.svelte @@ -0,0 +1,61 @@ + + +{#if selected.key === 'toolCall'} + {@const Tool = toolComponent(ctx, selected.part.name) as any} + {#if Tool} + {@const Interrupt = ( + selected.interrupt + ? interruptComponent(ctx, selected.interrupt) + : undefined + ) as any} + + {#snippet renderInterrupt()} + {#if inline && selected.interrupt?.kind === 'tool-approval' && Interrupt && inlineNames(ctx.components).includes(selected.interrupt.toolName)} + + {/if} + {/snippet} + + {:else} + {ctx.ui.warn( + `tool:${selected.part.name}`, + `[tanstack-ai-ui] Missing tools.${selected.part.name} component`, + )} + {/if} +{:else} + {@const Part = partComponent(ctx, selected.key) as any} + {#if Part} + + {:else} + {ctx.ui.warn( + `part:${selected.key}`, + `[tanstack-ai-ui] Missing parts.${selected.key} component`, + )} + {/if} +{/if} diff --git a/packages/ai-svelte-ui/src/ui-chat.svelte b/packages/ai-svelte-ui/src/ui-chat.svelte new file mode 100644 index 0000000000..a3beb92838 --- /dev/null +++ b/packages/ai-svelte-ui/src/ui-chat.svelte @@ -0,0 +1,35 @@ + + + + + {#snippet messages()} + + {/snippet} + {#snippet interrupts()} + + {/snippet} + {#snippet input()} + {#if Input} + + {/if} + {/snippet} + + diff --git a/packages/ai-svelte-ui/src/ui-interrupt.svelte b/packages/ai-svelte-ui/src/ui-interrupt.svelte new file mode 100644 index 0000000000..960fe585cc --- /dev/null +++ b/packages/ai-svelte-ui/src/ui-interrupt.svelte @@ -0,0 +1,28 @@ + + +{#if Component} + +{:else} + {ctx.ui.warn( + `interrupt:${interrupt.id}`, + `[tanstack-ai-ui] Missing interrupt component for ${interrupt.kind}`, + )} +{/if} diff --git a/packages/ai-svelte-ui/src/ui-interrupts.svelte b/packages/ai-svelte-ui/src/ui-interrupts.svelte new file mode 100644 index 0000000000..e062a7cb1c --- /dev/null +++ b/packages/ai-svelte-ui/src/ui-interrupts.svelte @@ -0,0 +1,24 @@ + + +{#if children} + {@render children(interrupts)} +{:else} + {#each interrupts as interrupt (interrupt.id)} + + {/each} +{/if} diff --git a/packages/ai-svelte-ui/src/ui-message.svelte b/packages/ai-svelte-ui/src/ui-message.svelte new file mode 100644 index 0000000000..ae6ac8d433 --- /dev/null +++ b/packages/ai-svelte-ui/src/ui-message.svelte @@ -0,0 +1,31 @@ + + +{#if children} + {@render children(selectedParts)} +{:else} + + {#snippet parts()} + {#each selectedParts as part, index (`${message.id}-${index}`)} + + {/each} + {/snippet} + +{/if} diff --git a/packages/ai-svelte-ui/src/ui-messages.svelte b/packages/ai-svelte-ui/src/ui-messages.svelte new file mode 100644 index 0000000000..f3e53bdede --- /dev/null +++ b/packages/ai-svelte-ui/src/ui-messages.svelte @@ -0,0 +1,25 @@ + + +{#if children} + {@render children(messages)} +{:else} + {#each messages as message (message.id)} + + {/each} +{/if} diff --git a/packages/ai-svelte-ui/src/ui-part.svelte b/packages/ai-svelte-ui/src/ui-part.svelte new file mode 100644 index 0000000000..a1ef07bfe1 --- /dev/null +++ b/packages/ai-svelte-ui/src/ui-part.svelte @@ -0,0 +1,26 @@ + + +{#if selected} + +{/if} diff --git a/packages/ai-svelte-ui/src/ui-provider.svelte b/packages/ai-svelte-ui/src/ui-provider.svelte new file mode 100644 index 0000000000..3e81e18ec7 --- /dev/null +++ b/packages/ai-svelte-ui/src/ui-provider.svelte @@ -0,0 +1,23 @@ + + +{@render children?.()} diff --git a/packages/ai-svelte-ui/svelte.config.js b/packages/ai-svelte-ui/svelte.config.js new file mode 100644 index 0000000000..bfa43e59d7 --- /dev/null +++ b/packages/ai-svelte-ui/svelte.config.js @@ -0,0 +1,11 @@ +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' + +/** @type {import('@sveltejs/package').Config} */ +const config = { + preprocess: vitePreprocess(), + compilerOptions: { + runes: true, + }, +} + +export default config diff --git a/packages/ai-svelte-ui/tests/create-ui-types.test.ts b/packages/ai-svelte-ui/tests/create-ui-types.test.ts new file mode 100644 index 0000000000..8bf48919c9 --- /dev/null +++ b/packages/ai-svelte-ui/tests/create-ui-types.test.ts @@ -0,0 +1,20 @@ +import { describe, expectTypeOf, it } from 'vitest' +import { createUI } from '../src/create-ui' +import { chatOptions } from '../../ai-client/tests/ui-fixtures' + +describe('Svelte createUI types', () => { + it('infers defineComponents from a bare options variable', () => { + const ui = createUI(chatOptions) + ui.defineComponents({ + layout: {}, + message: {}, + parts: { fallback: {} }, + tools: { + getWeather: {}, + // @ts-expect-error This tool is not in chatOptions. + unknownTool: {}, + }, + }) + expectTypeOf(ui.defineComponents).toBeFunction() + }) +}) diff --git a/packages/ai-svelte-ui/tests/create-ui.test.ts b/packages/ai-svelte-ui/tests/create-ui.test.ts new file mode 100644 index 0000000000..5627d4ca15 --- /dev/null +++ b/packages/ai-svelte-ui/tests/create-ui.test.ts @@ -0,0 +1,11 @@ +import { render } from 'svelte/server' +import { describe, expect, it } from 'vitest' +import Automatic from './fixtures/automatic.svelte' +import Manual from './fixtures/manual.svelte' + +describe('Svelte createUI', () => { + it('renders automatic and snippet traversal', () => { + expect(render(Automatic).body).toContain('Paris') + expect(render(Manual).body).toContain('1') + }) +}) diff --git a/packages/ai-svelte-ui/tests/fixtures/automatic.svelte b/packages/ai-svelte-ui/tests/fixtures/automatic.svelte new file mode 100644 index 0000000000..bbf61eedd8 --- /dev/null +++ b/packages/ai-svelte-ui/tests/fixtures/automatic.svelte @@ -0,0 +1,6 @@ + + + diff --git a/packages/ai-svelte-ui/tests/fixtures/empty.svelte b/packages/ai-svelte-ui/tests/fixtures/empty.svelte new file mode 100644 index 0000000000..0fbba99789 --- /dev/null +++ b/packages/ai-svelte-ui/tests/fixtures/empty.svelte @@ -0,0 +1,2 @@ + diff --git a/packages/ai-svelte-ui/tests/fixtures/fallback.svelte b/packages/ai-svelte-ui/tests/fixtures/fallback.svelte new file mode 100644 index 0000000000..b8933a3bab --- /dev/null +++ b/packages/ai-svelte-ui/tests/fixtures/fallback.svelte @@ -0,0 +1,9 @@ + + +{part.type} diff --git a/packages/ai-svelte-ui/tests/fixtures/fixture-data.ts b/packages/ai-svelte-ui/tests/fixtures/fixture-data.ts new file mode 100644 index 0000000000..9ea9d7fc9b --- /dev/null +++ b/packages/ai-svelte-ui/tests/fixtures/fixture-data.ts @@ -0,0 +1,25 @@ +import { createUI } from '../../src/create-ui' +import { + chatOptions, + createSvelteChatResult, + messageWithToolResults, +} from '../../../ai-client/tests/ui-fixtures' +import Layout from './layout.svelte' +import Message from './message.svelte' +import Weather from './weather.svelte' +import Fallback from './fallback.svelte' +import Empty from './empty.svelte' + +export const ui = createUI(chatOptions) +export const chat: ReturnType = + createSvelteChatResult([messageWithToolResults]) +export const components = ui.defineComponents({ + layout: Layout, + message: Message, + parts: { fallback: Fallback }, + tools: { + getWeather: Weather, + purchaseItem: Empty, + }, + interrupts: { fallback: Empty }, +}) diff --git a/packages/ai-svelte-ui/tests/fixtures/layout.svelte b/packages/ai-svelte-ui/tests/fixtures/layout.svelte new file mode 100644 index 0000000000..c12834c129 --- /dev/null +++ b/packages/ai-svelte-ui/tests/fixtures/layout.svelte @@ -0,0 +1,9 @@ + + +{@render messages?.()} diff --git a/packages/ai-svelte-ui/tests/fixtures/manual.svelte b/packages/ai-svelte-ui/tests/fixtures/manual.svelte new file mode 100644 index 0000000000..1d01724890 --- /dev/null +++ b/packages/ai-svelte-ui/tests/fixtures/manual.svelte @@ -0,0 +1,12 @@ + + + + + {#snippet children(messages)} + {messages.length} + {/snippet} + + diff --git a/packages/ai-svelte-ui/tests/fixtures/message.svelte b/packages/ai-svelte-ui/tests/fixtures/message.svelte new file mode 100644 index 0000000000..308f1005b6 --- /dev/null +++ b/packages/ai-svelte-ui/tests/fixtures/message.svelte @@ -0,0 +1,9 @@ + + +
{@render parts?.()}
diff --git a/packages/ai-svelte-ui/tests/fixtures/weather.svelte b/packages/ai-svelte-ui/tests/fixtures/weather.svelte new file mode 100644 index 0000000000..be8834f402 --- /dev/null +++ b/packages/ai-svelte-ui/tests/fixtures/weather.svelte @@ -0,0 +1,9 @@ + + +{part.input?.city} diff --git a/packages/ai-svelte-ui/tsconfig.json b/packages/ai-svelte-ui/tsconfig.json new file mode 100644 index 0000000000..ad7559ac3d --- /dev/null +++ b/packages/ai-svelte-ui/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "dist", + "lib": ["ES2022", "DOM"], + "rootDir": "../.." + }, + "include": ["src", "tests", "**/*.svelte"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/ai-svelte-ui/vite.config.ts b/packages/ai-svelte-ui/vite.config.ts new file mode 100644 index 0000000000..6e8a02a816 --- /dev/null +++ b/packages/ai-svelte-ui/vite.config.ts @@ -0,0 +1,37 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { svelte } from '@sveltejs/vite-plugin-svelte' +import { tanstackViteConfig } from '@tanstack/vite-config' +import packageJson from './package.json' + +const config = defineConfig({ + plugins: [ + svelte({ + compilerOptions: { + runes: true, + }, + }), + ], + test: { + name: packageJson.name, + dir: './', + watch: false, + globals: true, + environment: 'node', + include: ['tests/**/*.test.ts'], + coverage: { + provider: 'v8', + reporter: ['text', 'json', 'html', 'lcov'], + exclude: ['node_modules/', 'dist/', 'tests/'], + include: ['src/**/*.ts', 'src/**/*.svelte'], + }, + }, +}) + +export default mergeConfig( + config, + tanstackViteConfig({ + entry: ['./src/index.ts'], + srcDir: './src', + cjs: false, + }), +) diff --git a/packages/ai-vue-ui/package.json b/packages/ai-vue-ui/package.json index 64ea5e45d7..8b0d6e5064 100644 --- a/packages/ai-vue-ui/package.json +++ b/packages/ai-vue-ui/package.json @@ -54,6 +54,7 @@ ], "dependencies": { "@crazydos/vue-markdown": "^1.1.4", + "@tanstack/ai-client": "workspace:^", "@tanstack/ai-vue": "workspace:^", "rehype-highlight": "^7.0.2", "rehype-raw": "^7.0.0", diff --git a/packages/ai-vue-ui/src/chat-input.vue b/packages/ai-vue-ui/src/chat-input.vue index 6462db48c4..76f82b7d33 100644 --- a/packages/ai-vue-ui/src/chat-input.vue +++ b/packages/ai-vue-ui/src/chat-input.vue @@ -1,4 +1,5 @@ ``` -`Layout.svelte` receives snippets `messages`, `interrupts`, and `input`. `Message.svelte` receives snippet `parts`. +`Layout.svelte` receives snippets `messages`, `interrupts`, and `input`. `Message.svelte` receives snippet `parts`. A tool with an inline approval receives snippet `renderInterrupt`. -The typed tool map, interrupt map, and fallback rules match the [React contract](./react). +## Type a component in its own file + +Type the `$props()` of a tool file with `ToolProps`. Share the same `chatOptions` module that you pass to `createUI`. + +```svelte + + +{part.input?.city} +``` + +Registered generic interrupts use `RegisteredInterruptProps`. + +## Read chat from `ui.useChat()` + +Import the same `ui` descriptor in a child file. Call `ui.useChat()` only under `UIChat` or `UIProvider`. + +```svelte + + +

{chat.messages.length} messages

+``` + +`createChat(chatOptions)` owns the state. `ui.useChat()` reads the instance you passed into `UIChat`. A call outside that tree throws. + +## Interrupts + +Tool approvals can sit in the tool (`placement: 'inline'` plus the `renderInterrupt` snippet) or in the list (a direct component). Generic interrupts always sit in the list under `interrupts.generic`: `{ choosePlan, fallback }`. An unbound interrupt uses `fallback`. Branch on `interrupt.kind === 'unbound'` if the copy must differ. + +The full map is on the [React page](./react). diff --git a/docs/ui/vue.md b/docs/ui/vue.md index 49e483448f..de35f5845f 100644 --- a/docs/ui/vue.md +++ b/docs/ui/vue.md @@ -8,6 +8,7 @@ keywords: - createUI - vue - headless ui + - ToolProps --- Install `@tanstack/ai-vue-ui`. Call `createUI(chatOptions)` once. Pass the descriptor as `ui` into `UIChat`, `UIProvider`, and the other static primitives. @@ -56,7 +57,7 @@ const components = ui.defineComponents({ }, }), }, - interrupts: { fallback: defineComponent(() => () => null) }, + interrupts: { generic: { fallback: defineComponent(() => () => null) } }, }) export default defineComponent({ @@ -69,4 +70,92 @@ export default defineComponent({ Layout uses slots `messages`, `interrupts`, and `input`. Message uses slot `parts`. Manual lists use the default slot on `UIMessages` with `{ messages }`. -The typed tool map, interrupt map, and fallback rules match the [React contract](./react). +## Type a component in its own file + +Use `ToolProps` on the component props. Share the same `chatOptions` object that you pass to `createUI`. + +```ts +import { defineComponent, h } from 'vue' +import { fetchServerSentEvents } from '@tanstack/ai-vue' +import { createUI, type ToolProps } from '@tanstack/ai-vue-ui' +import { toolDefinition } from '@tanstack/ai' +import { z } from 'zod' + +const getWeather = toolDefinition({ + name: 'getWeather', + description: 'Look up weather', + inputSchema: z.object({ city: z.string() }), + outputSchema: z.object({ temperature: z.number() }), +}).client() + +const chatOptions = { + connection: fetchServerSentEvents('/api/chat'), + tools: [getWeather], +} + +export const WeatherTool = defineComponent( + (props: ToolProps) => { + return () => h('strong', props.part.input?.city) + }, +) + +const ui = createUI(chatOptions) + +export const components = ui.defineComponents({ + layout: defineComponent((_, { slots }) => () => slots.messages?.()), + message: defineComponent((_, { slots }) => () => h('article', slots.parts?.())), + parts: { fallback: defineComponent(() => () => null) }, + tools: { getWeather: WeatherTool }, +}) +``` + +Registered generic interrupts use `RegisteredInterruptProps`. + +## Read chat from `ui.useChat()` + +Call `ui.useChat()` inside a child of `UIChat` or `UIProvider`. + +```ts +import { defineComponent, h } from 'vue' +import { fetchServerSentEvents, useChat } from '@tanstack/ai-vue' +import { createUI, UIChat } from '@tanstack/ai-vue-ui' + +const chatOptions = { + connection: fetchServerSentEvents('/api/chat'), +} + +const ui = createUI(chatOptions) + +const StatusLine = defineComponent({ + setup() { + const chat = ui.useChat() + return () => { + const messages = Array.isArray(chat.messages) ? chat.messages : [] + return h('p', String(messages.length) + ' messages') + } + }, +}) + +const components = ui.defineComponents({ + layout: defineComponent((_, { slots }) => () => + h('main', [h(StatusLine), slots.messages?.()]), + ), + message: defineComponent((_, { slots }) => () => h('article', slots.parts?.())), + parts: { fallback: defineComponent(() => () => null) }, +}) + +export default defineComponent({ + setup() { + const chat = useChat(chatOptions) + return () => h(UIChat, { ui, chat, components }) + }, +}) +``` + +`useChat(chatOptions)` from `@tanstack/ai-vue` owns the state. `ui.useChat()` reads the instance you passed into `UIChat`. + +## Interrupts + +Tool approvals can sit in the tool (`placement: 'inline'` plus the `renderInterrupt` slot) or in the list (a direct component). Generic interrupts always sit in the list under `interrupts.generic`: `{ choosePlan, fallback }`. An unbound interrupt uses `fallback`. Branch on `interrupt.kind === 'unbound'` if the copy must differ. + +The full map is on the [React page](./react). diff --git a/packages/ai-client/src/ui/selectors.ts b/packages/ai-client/src/ui/selectors.ts index 1d0273dd7d..5527548fce 100644 --- a/packages/ai-client/src/ui/selectors.ts +++ b/packages/ai-client/src/ui/selectors.ts @@ -68,10 +68,7 @@ export function resolveInterruptComponent( interruptsMap: | { tools?: Record - registered?: Record - generic?: unknown - unbound?: unknown - fallback?: unknown + generic?: Record } | undefined, ): unknown { @@ -79,18 +76,17 @@ export function resolveInterruptComponent( if (interrupt.kind === 'tool-approval') { return getMappedComponent(interruptsMap.tools?.[interrupt.toolName]) } - if (interrupt.kind === 'unbound') { - return interruptsMap.unbound ?? interruptsMap.fallback - } + const generic = interruptsMap.generic + if (!generic) return undefined const definitionId = 'definitionId' in interrupt && typeof interrupt.definitionId === 'string' ? interrupt.definitionId : undefined - if (definitionId) { - const registered = interruptsMap.registered?.[definitionId] + if (definitionId && definitionId !== 'fallback') { + const registered = generic[definitionId] if (registered) return getMappedComponent(registered) } - return interruptsMap.generic ?? interruptsMap.fallback + return generic.fallback } function isToolCallPart(part: MessagePart): part is ToolCallPart { diff --git a/packages/ai-client/tests/ui-selectors.test.ts b/packages/ai-client/tests/ui-selectors.test.ts index 5489d737e9..12e590e91e 100644 --- a/packages/ai-client/tests/ui-selectors.test.ts +++ b/packages/ai-client/tests/ui-selectors.test.ts @@ -1,5 +1,9 @@ import { describe, expect, it } from 'vitest' -import { partTypeToKey, selectChatUI } from '../src/ui' +import { + partTypeToKey, + resolveInterruptComponent, + selectChatUI, +} from '../src/ui' import { approvalInterrupt, genericInterrupt, @@ -173,3 +177,28 @@ describe('selectChatUI', () => { expect(selected.interrupts).toEqual([genericInterrupt, unboundInterrupt]) }) }) + +describe('resolveInterruptComponent', () => { + const Plan = { id: 'plan' } + const Fallback = { id: 'fallback' } + const Purchase = { id: 'purchase' } + const map = { + tools: { purchaseItem: Purchase }, + generic: { + choosePlan: Plan, + fallback: Fallback, + }, + } + + it('resolves a registered generic interrupt from generic[id]', () => { + expect(resolveInterruptComponent(genericInterrupt, map)).toBe(Plan) + }) + + it('resolves unbound through generic.fallback', () => { + expect(resolveInterruptComponent(unboundInterrupt, map)).toBe(Fallback) + }) + + it('resolves a tool approval from tools[name]', () => { + expect(resolveInterruptComponent(approvalInterrupt, map)).toBe(Purchase) + }) +}) diff --git a/packages/ai-react-ui/src/create-ui.tsx b/packages/ai-react-ui/src/create-ui.tsx index 7fefb46f02..33813ba6e1 100644 --- a/packages/ai-react-ui/src/create-ui.tsx +++ b/packages/ai-react-ui/src/create-ui.tsx @@ -78,6 +78,15 @@ export type InterruptProps = { readonly __ui?: TOptions } +export type RegisteredInterruptProps< + TOptions, + TId extends ChatUIRegisteredInterruptId = + ChatUIRegisteredInterruptId, +> = { + chat: ChatUIHost + interrupt: RegisteredUIInterrupt +} + type InterruptEntry = | ComponentType> | { @@ -85,6 +94,14 @@ type InterruptEntry = placement?: 'inline' | 'list' } +type GenericInterruptComponents = { + [K in ChatUIRegisteredInterruptId as K extends 'fallback' + ? never + : K]?: ComponentType> +} & { + fallback?: ComponentType> +} + export type ChatUIComponents = { layout: ComponentType> message: ComponentType> @@ -101,15 +118,7 @@ export type ChatUIComponents = { tools?: { [K in ChatUIToolName]?: InterruptEntry } - registered?: { - [K in ChatUIRegisteredInterruptId]?: ComponentType<{ - chat: ChatUIHost - interrupt: RegisteredUIInterrupt - }> - } - generic?: ComponentType> - unbound?: ComponentType> - fallback?: ComponentType> + generic?: GenericInterruptComponents } } diff --git a/packages/ai-react-ui/src/index.ts b/packages/ai-react-ui/src/index.ts index 6bbccc1ceb..b2e71e47b6 100644 --- a/packages/ai-react-ui/src/index.ts +++ b/packages/ai-react-ui/src/index.ts @@ -33,6 +33,7 @@ export { type LayoutProps, type MessageProps, type PartProps, + type RegisteredInterruptProps, type ToolProps, } from './create-ui' diff --git a/packages/ai-react-ui/tests/create-ui-types.test.tsx b/packages/ai-react-ui/tests/create-ui-types.test.tsx index 1ddcc58e1f..036d2b2369 100644 --- a/packages/ai-react-ui/tests/create-ui-types.test.tsx +++ b/packages/ai-react-ui/tests/create-ui-types.test.tsx @@ -1,39 +1,57 @@ -import { expectTypeOf } from 'vitest' +import { expectTypeOf, it } from 'vitest' import { createUI } from '../src/create-ui' +import type { RegisteredInterruptProps, ToolProps } from '../src/create-ui' import { chatOptions } from '../../ai-client/tests/ui-fixtures' -const UI = createUI(chatOptions) +it('types tool and interrupt component props from chatOptions', () => { + type WeatherToolProps = ToolProps + expectTypeOf().toEqualTypeOf< + { city: string } | undefined + >() -UI.defineComponents({ - layout: ({ chat, renderMessages }) => { - expectTypeOf(chat.messages).toMatchTypeOf>() - return renderMessages() - }, - message: ({ renderParts }) => renderParts(), - parts: { - fallback: () => null, - }, - tools: { - getWeather: ({ part, result }) => { - expectTypeOf(part.input).toEqualTypeOf<{ city: string } | undefined>() - expectTypeOf(part.output).toEqualTypeOf< - { temperature: number } | undefined - >() - expectTypeOf(result?.toolCallId).toEqualTypeOf() - return null + type ChoosePlanProps = RegisteredInterruptProps< + typeof chatOptions, + 'choosePlan' + > + expectTypeOf().toEqualTypeOf< + { title: string } | undefined + >() + + const UI = createUI(chatOptions) + + UI.defineComponents({ + layout: ({ chat, renderMessages }) => { + expectTypeOf(chat.messages).toMatchTypeOf>() + return renderMessages() + }, + message: ({ renderParts }) => renderParts(), + parts: { + fallback: () => null, }, - // @ts-expect-error This tool is not in chatOptions. - unknownTool: () => null, - }, - interrupts: { - registered: { - choosePlan: ({ interrupt }) => { - interrupt.resolveInterrupt('approved') - // @ts-expect-error The response schema accepts a string. - interrupt.resolveInterrupt(42) + tools: { + getWeather: ({ part, result }) => { + expectTypeOf(part.input).toEqualTypeOf<{ city: string } | undefined>() + expectTypeOf(part.output).toEqualTypeOf< + { temperature: number } | undefined + >() + expectTypeOf(result?.toolCallId).toEqualTypeOf() return null }, + // @ts-expect-error This tool is not in chatOptions. + unknownTool: () => null, + }, + interrupts: { + generic: { + choosePlan: ({ interrupt }) => { + interrupt.resolveInterrupt('approved') + // @ts-expect-error The response schema accepts a string. + interrupt.resolveInterrupt(42) + return null + }, + // @ts-expect-error This interrupt is not in chatOptions. + unknownInterrupt: () => null, + fallback: () => null, + }, }, - fallback: () => null, - }, + }) }) diff --git a/packages/ai-react-ui/tests/create-ui.test.tsx b/packages/ai-react-ui/tests/create-ui.test.tsx index b24f461d47..1fb766d64a 100644 --- a/packages/ai-react-ui/tests/create-ui.test.tsx +++ b/packages/ai-react-ui/tests/create-ui.test.tsx @@ -30,7 +30,9 @@ describe('createUI', () => { getWeather: ({ part }) => {part.input?.city}, purchaseItem: () => null, }, - interrupts: { fallback: ({ interrupt }) => {interrupt.reason} }, + interrupts: { + generic: { fallback: ({ interrupt }) => {interrupt.reason} }, + }, }) const chat = createChatResult({ messages: [messageWithToolResults] }) @@ -61,7 +63,7 @@ describe('createUI', () => { getWeather: () => null, purchaseItem: () => null, }, - interrupts: { fallback: () => null }, + interrupts: { generic: { fallback: () => null } }, }) renderToStaticMarkup() renderToStaticMarkup() @@ -83,7 +85,7 @@ describe('createUI', () => { getWeather: () => weather, purchaseItem: () => null, }, - interrupts: { fallback: () => null }, + interrupts: { generic: { fallback: () => null } }, }) const matched = renderToStaticMarkup( @@ -131,7 +133,7 @@ describe('createUI', () => { placement: 'inline', }, }, - fallback: ({ interrupt }) => {interrupt.reason}, + generic: { fallback: ({ interrupt }) => {interrupt.reason} }, }, }) @@ -169,7 +171,7 @@ describe('createUI', () => { tools: { purchaseItem: () => list-approval, }, - fallback: () => null, + generic: { fallback: () => null }, }, }) @@ -185,7 +187,7 @@ describe('createUI', () => { expect(listMarkup).toContain('list-approval') }) - it('renders generic and unbound interrupts through specific entries or fallback', () => { + it('renders registered generic interrupts and sends the rest to fallback', () => { const UI = createUI(chatOptions) const components = UI.defineComponents({ layout: ({ renderInterrupts }) => renderInterrupts(), @@ -196,11 +198,10 @@ describe('createUI', () => { purchaseItem: () => null, }, interrupts: { - registered: { + generic: { choosePlan: () => plan, + fallback: () => fallback, }, - unbound: () => foreign, - fallback: () => fallback, }, }) @@ -213,7 +214,7 @@ describe('createUI', () => { />, ) expect(markup).toContain('plan') - expect(markup).toContain('foreign') + expect(markup).toContain('fallback') }) it('omits input when no input component exists', () => { @@ -277,7 +278,7 @@ describe('createUI', () => { getWeather: ({ part }) => {part.state}, purchaseItem: () => null, }, - interrupts: { fallback: () => null }, + interrupts: { generic: { fallback: () => null } }, }) for (const state of states) { diff --git a/packages/ai-solid-ui/src/create-ui.tsx b/packages/ai-solid-ui/src/create-ui.tsx index eeb82ce91d..d36217ff07 100644 --- a/packages/ai-solid-ui/src/create-ui.tsx +++ b/packages/ai-solid-ui/src/create-ui.tsx @@ -78,6 +78,15 @@ export type InterruptProps = { readonly __ui?: TOptions } +export type RegisteredInterruptProps< + TOptions, + TId extends ChatUIRegisteredInterruptId = + ChatUIRegisteredInterruptId, +> = { + chat: ChatUIHost + interrupt: RegisteredUIInterrupt +} + type InterruptEntry = | Component> | { @@ -85,6 +94,14 @@ type InterruptEntry = placement?: 'inline' | 'list' } +type GenericInterruptComponents = { + [K in ChatUIRegisteredInterruptId as K extends 'fallback' + ? never + : K]?: Component> +} & { + fallback?: Component> +} + export type ChatUIComponents = { layout: Component> message: Component> @@ -101,15 +118,7 @@ export type ChatUIComponents = { tools?: { [K in ChatUIToolName]?: InterruptEntry } - registered?: { - [K in ChatUIRegisteredInterruptId]?: Component<{ - chat: ChatUIHost - interrupt: RegisteredUIInterrupt - }> - } - generic?: Component> - unbound?: Component> - fallback?: Component> + generic?: GenericInterruptComponents } } diff --git a/packages/ai-solid-ui/src/index.ts b/packages/ai-solid-ui/src/index.ts index 0024fa6ddc..434411c513 100644 --- a/packages/ai-solid-ui/src/index.ts +++ b/packages/ai-solid-ui/src/index.ts @@ -33,6 +33,7 @@ export { type LayoutProps, type MessageProps, type PartProps, + type RegisteredInterruptProps, type ToolProps, } from './create-ui' diff --git a/packages/ai-solid-ui/tests/create-ui-types.test.tsx b/packages/ai-solid-ui/tests/create-ui-types.test.tsx index 247334789e..09f679d0dd 100644 --- a/packages/ai-solid-ui/tests/create-ui-types.test.tsx +++ b/packages/ai-solid-ui/tests/create-ui-types.test.tsx @@ -27,14 +27,14 @@ UI.defineComponents({ unknownTool: () => null, }, interrupts: { - registered: { + generic: { choosePlan: (props) => { props.interrupt.resolveInterrupt('approved') // @ts-expect-error The response schema accepts a string. props.interrupt.resolveInterrupt(42) return null }, + fallback: () => null, }, - fallback: () => null, }, }) diff --git a/packages/ai-solid-ui/tests/create-ui.test.tsx b/packages/ai-solid-ui/tests/create-ui.test.tsx index 8f5b9bbd25..1722a2c474 100644 --- a/packages/ai-solid-ui/tests/create-ui.test.tsx +++ b/packages/ai-solid-ui/tests/create-ui.test.tsx @@ -26,7 +26,7 @@ describe('Solid createUI', () => { getWeather: (props) => {props.part.input?.city}, purchaseItem: () => null, }, - interrupts: { fallback: () => null }, + interrupts: { generic: { fallback: () => null } }, }) expect( @@ -55,7 +55,7 @@ describe('Solid createUI', () => { getWeather: () => null, purchaseItem: () => null, }, - interrupts: { fallback: () => null }, + interrupts: { generic: { fallback: () => null } }, }) renderHtml(() => ) renderHtml(() => ) diff --git a/packages/ai-svelte-ui/src/create-ui.ts b/packages/ai-svelte-ui/src/create-ui.ts index 077790daa2..bb74433c81 100644 --- a/packages/ai-svelte-ui/src/create-ui.ts +++ b/packages/ai-svelte-ui/src/create-ui.ts @@ -16,7 +16,12 @@ import type { ChatUIToolsOf, RegisteredUIInterrupt, } from '@tanstack/ai-client/ui' -import type { MessagePart, UIMessage } from '@tanstack/ai-client' +import type { + MessagePart, + ToolCallPart, + ToolResultPart, + UIMessage, +} from '@tanstack/ai-client' // ponytail: duck-typed so createChat assigns; UIMessage generics are invariant export type ChatUIHost = { @@ -28,6 +33,14 @@ export type ChatUIHost = { sendMessage?: (content: string, ...args: Array) => Promise | void } +type GenericInterruptComponents = { + [K in ChatUIRegisteredInterruptId as K extends 'fallback' + ? never + : K]?: unknown +} & { + fallback?: unknown +} + export type ChatUIComponents = { layout: unknown message: unknown @@ -46,12 +59,7 @@ export type ChatUIComponents = { | unknown | { component: unknown; placement?: 'inline' | 'list' } } - registered?: { - [K in ChatUIRegisteredInterruptId]?: unknown - } - generic?: unknown - unbound?: unknown - fallback?: unknown + generic?: GenericInterruptComponents } } @@ -61,6 +69,7 @@ export type UIDescriptor = { defineComponents: ( components: ChatUIComponents, ) => ChatUIComponents + useChat: () => ChatUIHost } export type UIContextValue = { @@ -83,13 +92,17 @@ export function createUI( options: TOptions, ): UIDescriptor { void options - return { + const ui: UIDescriptor = { key: Symbol('tanstack-ai-ui'), warn: createWarnOnce(), defineComponents(components) { return components }, + useChat() { + return getUIContext(ui).chat + }, } + return ui } export function setUIContext(value: UIContextValue) { @@ -173,14 +186,29 @@ export type PartProps = { chat: ChatUIHost part: MessagePart, ChatUIData> } -export type ToolProps = { +export type ToolProps< + TOptions, + TName extends ChatUIToolName = ChatUIToolName, +> = { chat: ChatUIHost - part: unknown - result?: unknown - interrupt?: unknown + part: Extract>, { name: TName }> + result?: ToolResultPart + interrupt?: Extract< + ChatUIInterrupt, + { kind: 'tool-approval'; toolName: TName } + > readonly __ui?: TOptions } export type InterruptProps = { chat: ChatUIHost - interrupt: ChatUIInterrupt | RegisteredUIInterrupt + interrupt: ChatUIInterrupt + readonly __ui?: TOptions +} +export type RegisteredInterruptProps< + TOptions, + TId extends ChatUIRegisteredInterruptId = + ChatUIRegisteredInterruptId, +> = { + chat: ChatUIHost + interrupt: RegisteredUIInterrupt } diff --git a/packages/ai-svelte-ui/src/index.ts b/packages/ai-svelte-ui/src/index.ts index a72781628e..b0139f8880 100644 --- a/packages/ai-svelte-ui/src/index.ts +++ b/packages/ai-svelte-ui/src/index.ts @@ -1,4 +1,4 @@ -export { createUI } from './create-ui' +export { createUI, getUIContext } from './create-ui' export type { ChatUIComponents, ChatUIHost, @@ -7,6 +7,7 @@ export type { LayoutProps, MessageProps, PartProps, + RegisteredInterruptProps, ToolProps, UIDescriptor, } from './create-ui' diff --git a/packages/ai-svelte-ui/tests/fixtures/fixture-data.ts b/packages/ai-svelte-ui/tests/fixtures/fixture-data.ts index 9ea9d7fc9b..b89c2c69ad 100644 --- a/packages/ai-svelte-ui/tests/fixtures/fixture-data.ts +++ b/packages/ai-svelte-ui/tests/fixtures/fixture-data.ts @@ -21,5 +21,5 @@ export const components = ui.defineComponents({ getWeather: Weather, purchaseItem: Empty, }, - interrupts: { fallback: Empty }, + interrupts: { generic: { fallback: Empty } }, }) diff --git a/packages/ai-vue-ui/src/create-ui.ts b/packages/ai-vue-ui/src/create-ui.ts index 394982b966..2a543d0350 100644 --- a/packages/ai-vue-ui/src/create-ui.ts +++ b/packages/ai-vue-ui/src/create-ui.ts @@ -73,6 +73,15 @@ export type InterruptProps = { readonly __ui?: TOptions } +export type RegisteredInterruptProps< + TOptions, + TId extends ChatUIRegisteredInterruptId = + ChatUIRegisteredInterruptId, +> = { + chat: ChatUIHost + interrupt: RegisteredUIInterrupt +} + type InterruptEntry = | Component> | { @@ -80,6 +89,14 @@ type InterruptEntry = placement?: 'inline' | 'list' } +type GenericInterruptComponents = { + [K in ChatUIRegisteredInterruptId as K extends 'fallback' + ? never + : K]?: Component> +} & { + fallback?: Component> +} + export type ChatUIComponents = { layout: Component message: Component @@ -96,15 +113,7 @@ export type ChatUIComponents = { tools?: { [K in ChatUIToolName]?: InterruptEntry } - registered?: { - [K in ChatUIRegisteredInterruptId]?: Component<{ - chat: ChatUIHost - interrupt: RegisteredUIInterrupt - }> - } - generic?: Component> - unbound?: Component> - fallback?: Component> + generic?: GenericInterruptComponents } } @@ -114,6 +123,7 @@ export type UIDescriptor = { defineComponents: ( components: ChatUIComponents, ) => ChatUIComponents + useChat: () => ChatUIHost } type UIContextValue = { @@ -225,13 +235,17 @@ export function createUI( ): UIDescriptor { void options const key = Symbol('tanstack-ai-ui') as InjectionKey> - return { + const ui: UIDescriptor = { key, warn: createWarnOnce(), defineComponents(components) { return components }, + useChat() { + return useUI(ui).chat + }, } + return ui } export const UIProvider = defineComponent({ diff --git a/packages/ai-vue-ui/src/index.ts b/packages/ai-vue-ui/src/index.ts index 33d61ba2dc..9ee9ee3694 100644 --- a/packages/ai-vue-ui/src/index.ts +++ b/packages/ai-vue-ui/src/index.ts @@ -22,6 +22,7 @@ export { type LayoutProps, type MessageProps, type PartProps, + type RegisteredInterruptProps, type ToolProps, type UIDescriptor, } from './create-ui' diff --git a/packages/ai-vue-ui/tests/create-ui-types.test.ts b/packages/ai-vue-ui/tests/create-ui-types.test.ts index 8ec7a52235..8abefb01bb 100644 --- a/packages/ai-vue-ui/tests/create-ui-types.test.ts +++ b/packages/ai-vue-ui/tests/create-ui-types.test.ts @@ -14,14 +14,14 @@ ui.defineComponents({ unknownTool: () => null, }, interrupts: { - registered: { + generic: { choosePlan: (props: { interrupt: { resolveInterrupt: (value: string) => void } }) => { expectTypeOf(props.interrupt.resolveInterrupt).toBeFunction() return null }, + fallback: () => null, }, - fallback: () => null, }, }) diff --git a/packages/ai-vue-ui/tests/create-ui.test.ts b/packages/ai-vue-ui/tests/create-ui.test.ts index 6f8fbcceab..3d245ca085 100644 --- a/packages/ai-vue-ui/tests/create-ui.test.ts +++ b/packages/ai-vue-ui/tests/create-ui.test.ts @@ -41,7 +41,7 @@ describe('Vue createUI', () => { }), purchaseItem: defineComponent(() => () => null), }, - interrupts: { fallback: defineComponent(() => () => null) }, + interrupts: { generic: { fallback: defineComponent(() => () => null) } }, }) const automatic = await renderVueText( @@ -92,7 +92,7 @@ describe('Vue createUI', () => { getWeather: defineComponent(() => () => null), purchaseItem: defineComponent(() => () => null), }, - interrupts: { fallback: defineComponent(() => () => null) }, + interrupts: { generic: { fallback: defineComponent(() => () => null) } }, }) await renderVueText( defineComponent(() => () => h(UIChat, { ui, chat, components })), diff --git a/testing/e2e/src/routes/headless-ui.tsx b/testing/e2e/src/routes/headless-ui.tsx index f7e100d1be..db750761a8 100644 --- a/testing/e2e/src/routes/headless-ui.tsx +++ b/testing/e2e/src/routes/headless-ui.tsx @@ -231,7 +231,7 @@ const components = UI.defineComponents({ placement: 'inline', }, }, - fallback: () => null, + generic: { fallback: () => null }, }, }) From f8337497e957b7fe09b3f43a0d4c99a2028a32d3 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Thu, 27 Aug 2026 15:36:20 +0200 Subject: [PATCH 3/4] feat(ui): pin InterruptProps and add the typed chatbot example InterruptProps takes a tool name or a registered interrupt id. A tool approval renders in the tool when interrupts.tools omits that name. examples/ts-react-ui-chatbot shows parts, list vs in-tool approval, BYOK, and transcription. --- .changeset/typed-headless-chat-ui.md | 2 +- docs/config.json | 10 +- docs/migration/create-ui.md | 12 +- docs/ui/react.md | 134 +- docs/ui/solid.md | 11 +- docs/ui/svelte.md | 13 +- docs/ui/vue.md | 11 +- examples/ag-ui/src/App.tsx | 35 +- examples/ts-react-ui-chatbot/.gitignore | 11 + examples/ts-react-ui-chatbot/README.md | 12 + examples/ts-react-ui-chatbot/env.example | 1 + examples/ts-react-ui-chatbot/package.json | 48 + .../brand/fonts/BricolageGrotesque-Bold.ttf | Bin 0 -> 82204 bytes .../public/brand/fonts/Inter-Regular.ttf | Bin 0 -> 324820 bytes .../public/brand/fonts/Inter-latin.woff2 | Bin 0 -> 72920 bytes .../brand/fonts/OFL-Bricolage-Grotesque.txt | 93 ++ .../brand/logos/tanstack-emblem-cream.svg | 1 + .../brand/logos/tanstack-landscape-white.svg | 23 + .../ts-react-ui-chatbot/public/favicon.ico | Bin 0 -> 3870 bytes .../public/tanstack-circle-logo.png | Bin 0 -> 265387 bytes .../public/tanstack-word-logo-white.svg | 1 + examples/ts-react-ui-chatbot/src/chat/byok.ts | 9 + .../src/chat/interrupts.ts | 17 + .../ts-react-ui-chatbot/src/chat/model.ts | 7 + .../ts-react-ui-chatbot/src/chat/options.ts | 17 + .../ts-react-ui-chatbot/src/chat/schema.ts | 12 + .../ts-react-ui-chatbot/src/chat/tools.ts | 48 + .../src/components/ai/conversation.tsx | 103 ++ .../src/components/ai/message.tsx | 89 ++ .../src/components/ai/model-selector.tsx | 42 + .../src/components/ai/prompt-input.tsx | 124 ++ .../src/components/ai/reasoning.tsx | 69 ++ .../src/components/ai/sources.tsx | 71 ++ .../src/components/ai/suggestions.tsx | 30 + .../src/components/ai/tool.tsx | 107 ++ .../src/components/chat/book-stay-tool.tsx | 57 + .../src/components/chat/choose-budget.tsx | 32 + .../components/chat/confirm-payment-tool.tsx | 59 + .../components/chat/fallback-interrupt.tsx | 14 + .../src/components/chat/fallback-part.tsx | 8 + .../src/components/chat/input.tsx | 281 +++++ .../src/components/chat/layout.tsx | 86 ++ .../src/components/chat/lookup-place-tool.tsx | 42 + .../src/components/chat/media-parts.tsx | 93 ++ .../src/components/chat/message.tsx | 16 + .../src/components/chat/openai-key.tsx | 108 ++ .../src/components/chat/structured-output.tsx | 27 + .../src/components/chat/text-part.tsx | 7 + .../src/components/chat/thinking-part.tsx | 18 + .../src/components/chat/ui-components.tsx | 53 + .../src/components/ui/button.tsx | 61 + .../src/components/ui/collapsible.tsx | 26 + .../src/components/ui/select.tsx | 186 +++ .../ts-react-ui-chatbot/src/routeTree.gen.ts | 104 ++ examples/ts-react-ui-chatbot/src/router.tsx | 10 + .../ts-react-ui-chatbot/src/routes/__root.tsx | 31 + .../src/routes/api.chat.ts | 121 ++ .../src/routes/api.transcribe.ts | 48 + .../ts-react-ui-chatbot/src/routes/index.tsx | 38 + examples/ts-react-ui-chatbot/src/styles.css | 98 ++ examples/ts-react-ui-chatbot/src/utils/cn.ts | 9 + examples/ts-react-ui-chatbot/tsconfig.json | 28 + examples/ts-react-ui-chatbot/vite.config.ts | 13 + .../ts-solid-chat/src/routes/solid-ui.tsx | 32 + packages/ai-client/src/ui.ts | 10 +- packages/ai-client/src/ui/selectors.ts | 32 +- packages/ai-client/src/ui/types.ts | 79 +- packages/ai-client/tests/ui-selectors.test.ts | 13 + packages/ai-client/tests/ui-types.test-d.ts | 14 + packages/ai-react-ui/src/create-ui.tsx | 349 +++--- packages/ai-react-ui/src/index.ts | 1 - .../tests/create-ui-types.test.tsx | 96 +- packages/ai-react-ui/tests/create-ui.test.tsx | 121 +- packages/ai-solid-ui/src/create-ui.tsx | 340 +++--- packages/ai-solid-ui/src/index.ts | 1 - .../tests/create-ui-types.test.tsx | 127 +- packages/ai-solid-ui/tests/create-ui.test.tsx | 17 +- packages/ai-svelte-ui/src/create-ui.ts | 201 +-- packages/ai-svelte-ui/src/index.ts | 1 - .../ai-svelte-ui/src/selected-part.svelte | 32 +- packages/ai-svelte-ui/src/ui-chat.svelte | 8 +- packages/ai-svelte-ui/src/ui-interrupt.svelte | 12 +- .../ai-svelte-ui/src/ui-interrupts.svelte | 12 +- packages/ai-svelte-ui/src/ui-message.svelte | 26 +- packages/ai-svelte-ui/src/ui-messages.svelte | 14 +- packages/ai-svelte-ui/src/ui-part.svelte | 12 +- packages/ai-svelte-ui/src/ui-provider.svelte | 4 +- .../tests/create-ui-types.test.ts | 61 + .../tests/fixtures/fixture-data.ts | 2 +- packages/ai-vue-ui/src/create-ui.ts | 323 +++-- packages/ai-vue-ui/src/index.ts | 1 - .../ai-vue-ui/tests/create-ui-types.test.ts | 98 +- packages/ai-vue-ui/tests/create-ui.test.ts | 14 +- pnpm-lock.yaml | 1079 ++++++++++++++++- testing/e2e/src/routes/headless-ui.tsx | 60 +- 95 files changed, 5165 insertions(+), 864 deletions(-) create mode 100644 examples/ts-react-ui-chatbot/.gitignore create mode 100644 examples/ts-react-ui-chatbot/README.md create mode 100644 examples/ts-react-ui-chatbot/env.example create mode 100644 examples/ts-react-ui-chatbot/package.json create mode 100644 examples/ts-react-ui-chatbot/public/brand/fonts/BricolageGrotesque-Bold.ttf create mode 100644 examples/ts-react-ui-chatbot/public/brand/fonts/Inter-Regular.ttf create mode 100644 examples/ts-react-ui-chatbot/public/brand/fonts/Inter-latin.woff2 create mode 100644 examples/ts-react-ui-chatbot/public/brand/fonts/OFL-Bricolage-Grotesque.txt create mode 100644 examples/ts-react-ui-chatbot/public/brand/logos/tanstack-emblem-cream.svg create mode 100644 examples/ts-react-ui-chatbot/public/brand/logos/tanstack-landscape-white.svg create mode 100644 examples/ts-react-ui-chatbot/public/favicon.ico create mode 100644 examples/ts-react-ui-chatbot/public/tanstack-circle-logo.png create mode 100644 examples/ts-react-ui-chatbot/public/tanstack-word-logo-white.svg create mode 100644 examples/ts-react-ui-chatbot/src/chat/byok.ts create mode 100644 examples/ts-react-ui-chatbot/src/chat/interrupts.ts create mode 100644 examples/ts-react-ui-chatbot/src/chat/model.ts create mode 100644 examples/ts-react-ui-chatbot/src/chat/options.ts create mode 100644 examples/ts-react-ui-chatbot/src/chat/schema.ts create mode 100644 examples/ts-react-ui-chatbot/src/chat/tools.ts create mode 100644 examples/ts-react-ui-chatbot/src/components/ai/conversation.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/ai/message.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/ai/model-selector.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/ai/prompt-input.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/ai/reasoning.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/ai/sources.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/ai/suggestions.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/ai/tool.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/chat/book-stay-tool.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/chat/choose-budget.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/chat/confirm-payment-tool.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/chat/fallback-interrupt.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/chat/fallback-part.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/chat/input.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/chat/layout.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/chat/lookup-place-tool.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/chat/media-parts.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/chat/message.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/chat/openai-key.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/chat/structured-output.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/chat/text-part.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/chat/thinking-part.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/chat/ui-components.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/ui/button.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/ui/collapsible.tsx create mode 100644 examples/ts-react-ui-chatbot/src/components/ui/select.tsx create mode 100644 examples/ts-react-ui-chatbot/src/routeTree.gen.ts create mode 100644 examples/ts-react-ui-chatbot/src/router.tsx create mode 100644 examples/ts-react-ui-chatbot/src/routes/__root.tsx create mode 100644 examples/ts-react-ui-chatbot/src/routes/api.chat.ts create mode 100644 examples/ts-react-ui-chatbot/src/routes/api.transcribe.ts create mode 100644 examples/ts-react-ui-chatbot/src/routes/index.tsx create mode 100644 examples/ts-react-ui-chatbot/src/styles.css create mode 100644 examples/ts-react-ui-chatbot/src/utils/cn.ts create mode 100644 examples/ts-react-ui-chatbot/tsconfig.json create mode 100644 examples/ts-react-ui-chatbot/vite.config.ts diff --git a/.changeset/typed-headless-chat-ui.md b/.changeset/typed-headless-chat-ui.md index 9a201bca4e..11c8e999d8 100644 --- a/.changeset/typed-headless-chat-ui.md +++ b/.changeset/typed-headless-chat-ui.md @@ -6,4 +6,4 @@ '@tanstack/ai-svelte-ui': minor --- -Add typed headless `createUI()` adapters. Chat options control the types of message parts, tools, structured output, and interrupts. Old Chat orchestration stays importable and deprecated until 1.0. +Add typed headless `createUI()` adapters. Chat options control the types of message parts, tools, structured output, and interrupts. `defineComponents` requires a component for every tool name and every registered interrupt id. `InterruptProps` pins a tool approval or a registered generic interrupt. Old Chat orchestration stays importable and deprecated until 1.0. diff --git a/docs/config.json b/docs/config.json index 1f072426ad..d6e9effbf9 100644 --- a/docs/config.json +++ b/docs/config.json @@ -219,25 +219,25 @@ "label": "React", "to": "ui/react", "addedAt": "2026-08-26", - "updatedAt": "2026-08-26" + "updatedAt": "2026-08-27" }, { "label": "Solid", "to": "ui/solid", "addedAt": "2026-08-26", - "updatedAt": "2026-08-26" + "updatedAt": "2026-08-27" }, { "label": "Vue", "to": "ui/vue", "addedAt": "2026-08-26", - "updatedAt": "2026-08-26" + "updatedAt": "2026-08-27" }, { "label": "Svelte", "to": "ui/svelte", "addedAt": "2026-08-26", - "updatedAt": "2026-08-26" + "updatedAt": "2026-08-27" }, { "label": "Custom Adapters", @@ -883,7 +883,7 @@ "label": "createUI", "to": "migration/create-ui", "addedAt": "2026-08-26", - "updatedAt": "2026-08-26" + "updatedAt": "2026-08-27" }, { "label": "From Vercel AI SDK", diff --git a/docs/migration/create-ui.md b/docs/migration/create-ui.md index 9d311c293b..9cec6eb678 100644 --- a/docs/migration/create-ui.md +++ b/docs/migration/create-ui.md @@ -74,7 +74,9 @@ const components = UI.defineComponents({ ), message: ({ renderParts }) =>
{renderParts()}
, - input: ({ chat }) => ( + input: () => { + const chat = UI.useChat() + return (
{ event.preventDefault() @@ -83,12 +85,13 @@ const components = UI.defineComponents({ const text = field.value.trim() if (!text) return field.value = '' - void chat.sendMessage?.(text) + void chat.sendMessage(text) }} >
- ), + ) + }, parts: { fallback: () => null }, }) @@ -109,8 +112,9 @@ export function NewChat() { ## Gotchas - A shared `chatOptions` variable does not need `as const`. -- `{ component, placement: 'inline' }` puts a tool approval in the tool slot. A direct tool interrupt component uses the list. +- A mapped tool can read `interrupt` and render the approval itself. That approval stays off the list. A component on `interrupts.tools` uses the list. - Generic interrupts live under `interrupts.generic`: a registered id such as `choosePlan`, plus `fallback`. Unbound interrupts use `fallback`. +- TypeScript requires a `tools` component for every tool name and an `interrupts.generic` component for every interrupt id. `generic.fallback` is optional. - Matched `tool-result` parts are hidden in automatic traversal. Unmatched results stay visible. - Nested providers use the nearest chat instance. diff --git a/docs/ui/react.md b/docs/ui/react.md index 0a1732bde2..0e8246560f 100644 --- a/docs/ui/react.md +++ b/docs/ui/react.md @@ -12,10 +12,12 @@ keywords: - ToolProps --- -Install `@tanstack/ai-react-ui`, then call `createUI(chatOptions)` once at module scope. Your app owns `useChat`. The UI only renders. +Install `@tanstack/ai-react-ui`, then call `createUI(chatOptions)` once at module scope. Your app owns `useChat`. The UI only renders. Call `UI.useChat()` inside a mapped component when it needs live chat. That call is the same value you passed into `UI.Chat`. You supply every visible component. There is no default markup, style, or copy. +`defineComponents` needs a `tools` entry for every tool name in `chatOptions`. It also needs an `interrupts.generic` entry for every interrupt id. `generic.fallback` is optional. + ## Server ```ts @@ -76,11 +78,11 @@ const UI = createUI(chatOptions) const components = UI.defineComponents({ layout: function Layout({ - chat, renderMessages, renderInterrupts, renderInput, }) { + const chat = UI.useChat() if (chat.error) return

{chat.error.message}

if (chat.isLoading && chat.messages.length === 0) return

Loading

if (chat.messages.length === 0) return

Empty

@@ -95,7 +97,8 @@ const components = UI.defineComponents({ message: function Message({ message, renderParts }) { return
{renderParts()}
}, - input: function Input({ chat }) { + input: function Input() { + const chat = UI.useChat() return (
{ @@ -103,7 +106,7 @@ const components = UI.defineComponents({ const form = event.currentTarget const field = form.elements.namedItem('message') if (!(field instanceof HTMLInputElement)) return - void chat.sendMessage?.(field.value) + void chat.sendMessage(field.value) field.value = '' }} > @@ -113,13 +116,9 @@ const components = UI.defineComponents({ ) }, parts: { - text: ({ part }) => (part.type === 'text' ?

{part.content}

: null), - structuredOutput: ({ part }) => - part.type === 'structured-output' ? ( -
{part.raw}
- ) : null, - toolResult: ({ part }) => - part.type === 'tool-result' ? {String(part.content)} : null, + text: ({ part }) =>

{part.content}

, + structuredOutput: ({ part }) =>
{part.raw}
, + toolResult: ({ part }) => {String(part.content)}, fallback: ({ part }) => {part.type}, }, tools: { @@ -136,29 +135,18 @@ const components = UI.defineComponents({

) }, - purchaseItem: ({ part, renderInterrupt }) => ( + purchaseItem: ({ part, interrupt }) => (
{part.input?.item} - {renderInterrupt()} + {interrupt?.status === 'pending' ? ( + + ) : null}
), }, interrupts: { - tools: { - purchaseItem: { - component: ({ interrupt }) => - interrupt.kind === 'tool-approval' ? ( - interrupt.status === 'pending' ? ( - - ) : ( - {interrupt.status} - ) - ) : null, - placement: 'inline', - }, - }, generic: { choosePlan: ({ interrupt }) => ( + ) : null} + + ) +} + const components = UI.defineComponents({ layout: ({ renderMessages, renderInterrupts }) => (
@@ -362,25 +377,7 @@ const components = UI.defineComponents({ message: ({ renderParts }) =>
{renderParts()}
, parts: { fallback: () => null }, tools: { - purchaseItem: ({ part, renderInterrupt }) => ( -
- {part.input?.item} - {renderInterrupt()} -
- ), - }, - interrupts: { - tools: { - purchaseItem: { - component: ({ interrupt }) => - interrupt.kind === 'tool-approval' ? ( - - ) : null, - placement: 'inline', - }, - }, + purchaseItem: PurchaseItem, }, }) @@ -390,9 +387,11 @@ export function InlineApprovalChat() { } ``` +To split the approval into its own file, type it with `InterruptProps`. Render that component from the tool. + ### List, in `renderInterrupts()` -Pass the approval component directly. Do not set `placement: 'inline'`. The tool can skip `renderInterrupt()`. The approval appears in the interrupt list. +Register the approval under `interrupts.tools`. That component appears in the interrupt list. Do not also render `interrupt` on the tool unless you want it in both places. ```tsx import { fetchServerSentEvents, useChat } from '@tanstack/ai-react' @@ -429,12 +428,11 @@ const components = UI.defineComponents({ }, interrupts: { tools: { - purchaseItem: ({ interrupt }) => - interrupt.kind === 'tool-approval' ? ( - - ) : null, + purchaseItem: ({ interrupt }) => ( + + ), }, }, }) @@ -445,8 +443,6 @@ export function ListApprovalChat() { } ``` -`placement: 'list'` is the same as a direct component. - ## Generic interrupts Generic interrupts always render in the list (`renderInterrupts()` / ``). They never render inside a tool. diff --git a/docs/ui/solid.md b/docs/ui/solid.md index da5ab4ace1..91435899fb 100644 --- a/docs/ui/solid.md +++ b/docs/ui/solid.md @@ -13,6 +13,8 @@ keywords: Install `@tanstack/ai-solid-ui`, then call `createUI(chatOptions)` once at module scope. Do not destructure reactive props. +`defineComponents` needs a `tools` entry for every tool name in `chatOptions`. It also needs an `interrupts.generic` entry for every interrupt id. `generic.fallback` is optional. + The server route matches the [React page](./react). Use `gpt-5.2` on the OpenAI text adapter. ## Client @@ -52,7 +54,6 @@ const components = UI.defineComponents({ tools: { getWeather: (props) => {props.part.input?.city}, }, - interrupts: { generic: { fallback: () => null } }, }) export function ChatScreen() { @@ -99,7 +100,11 @@ export const components = UI.defineComponents({ }) ``` -Registered generic interrupts use `RegisteredInterruptProps`. +Part components use `PartProps`. Then `part` is already a text part. + +Interrupt components use `InterruptProps`. Then `interrupt.payload` matches the definition. + +Mapped components do not receive `chat` as a prop. Call `UI.useChat()` when a component needs live chat. That call opts the component into chat updates. Nested children can call it too. ## Read chat from `UI.useChat()` @@ -139,7 +144,7 @@ Call `UI.useChat()` only inside `UI.Chat` or `UI.Provider`. ## Interrupts -Tool approvals can sit in the tool (`placement: 'inline'` plus `props.renderInterrupt()`) or in the list (a direct component). Generic interrupts always sit in the list under `interrupts.generic`: `{ choosePlan, fallback }`. An unbound interrupt uses `fallback`. Branch on `interrupt.kind === 'unbound'` if the copy must differ. +Tool approvals sit in the tool when you read `props.interrupt`. Put a component on `interrupts.tools` to send that approval to the list instead. Generic interrupts always sit in the list under `interrupts.generic`: `{ choosePlan, fallback }`. An unbound interrupt uses `fallback`. Branch on `interrupt.kind === 'unbound'` if the copy must differ. The full map is on the [React page](./react). diff --git a/docs/ui/svelte.md b/docs/ui/svelte.md index 2041b07586..dbc7020ba6 100644 --- a/docs/ui/svelte.md +++ b/docs/ui/svelte.md @@ -13,6 +13,8 @@ keywords: Install `@tanstack/ai-svelte-ui`. Call `createUI(chatOptions)` once. Pass `{ui}`, `{chat}`, and `{components}` into `UIChat`. +`defineComponents` needs a `tools` entry for every tool name in `chatOptions`. It also needs an `interrupts.generic` entry for every interrupt id. `generic.fallback` is optional. + The server route matches the [React page](./react). Use `gpt-5.2` on the OpenAI text adapter. ## Client @@ -47,14 +49,13 @@ The server route matches the [React page](./react). Use `gpt-5.2` on the OpenAI message: Message, parts: { fallback: Fallback }, tools: { getWeather: Weather }, - interrupts: { generic: { fallback: Fallback } }, }) ``` -`Layout.svelte` receives snippets `messages`, `interrupts`, and `input`. `Message.svelte` receives snippet `parts`. A tool with an inline approval receives snippet `renderInterrupt`. +`Layout.svelte` receives snippets `messages`, `interrupts`, and `input`. `Message.svelte` receives snippet `parts`. A tool with an approval receives prop `interrupt`. ## Type a component in its own file @@ -71,7 +72,11 @@ Type the `$props()` of a tool file with `ToolProps`. Share the same `chatOptions {part.input?.city} ``` -Registered generic interrupts use `RegisteredInterruptProps`. +Part components use `PartProps`. Then `part` is already a text part. + +Interrupt components use `InterruptProps`. Then `interrupt.payload` matches the definition. + +Mapped components do not receive `chat` as a prop. Call `ui.useChat()` when a component needs live chat. That call opts the component into chat updates. Nested children can call it too. ## Read chat from `ui.useChat()` @@ -91,6 +96,6 @@ Import the same `ui` descriptor in a child file. Call `ui.useChat()` only under ## Interrupts -Tool approvals can sit in the tool (`placement: 'inline'` plus the `renderInterrupt` snippet) or in the list (a direct component). Generic interrupts always sit in the list under `interrupts.generic`: `{ choosePlan, fallback }`. An unbound interrupt uses `fallback`. Branch on `interrupt.kind === 'unbound'` if the copy must differ. +Tool approvals sit in the tool when you read the `interrupt` prop. Put a component on `interrupts.tools` to send that approval to the list instead. Generic interrupts always sit in the list under `interrupts.generic`: `{ choosePlan, fallback }`. An unbound interrupt uses `fallback`. Branch on `interrupt.kind === 'unbound'` if the copy must differ. The full map is on the [React page](./react). diff --git a/docs/ui/vue.md b/docs/ui/vue.md index de35f5845f..852de225a5 100644 --- a/docs/ui/vue.md +++ b/docs/ui/vue.md @@ -13,6 +13,8 @@ keywords: Install `@tanstack/ai-vue-ui`. Call `createUI(chatOptions)` once. Pass the descriptor as `ui` into `UIChat`, `UIProvider`, and the other static primitives. +`defineComponents` needs a `tools` entry for every tool name in `chatOptions`. It also needs an `interrupts.generic` entry for every interrupt id. `generic.fallback` is optional. + The server route matches the [React page](./react). Use `gpt-5.2` on the OpenAI text adapter. ## Client @@ -57,7 +59,6 @@ const components = ui.defineComponents({ }, }), }, - interrupts: { generic: { fallback: defineComponent(() => () => null) } }, }) export default defineComponent({ @@ -109,7 +110,11 @@ export const components = ui.defineComponents({ }) ``` -Registered generic interrupts use `RegisteredInterruptProps`. +Part components use `PartProps`. Then `part` is already a text part. + +Interrupt components use `InterruptProps`. Then `interrupt.payload` matches the definition. + +Mapped components do not receive `chat` as a prop. Call `ui.useChat()` when a component needs live chat. That call opts the component into chat updates. Nested children can call it too. ## Read chat from `ui.useChat()` @@ -156,6 +161,6 @@ export default defineComponent({ ## Interrupts -Tool approvals can sit in the tool (`placement: 'inline'` plus the `renderInterrupt` slot) or in the list (a direct component). Generic interrupts always sit in the list under `interrupts.generic`: `{ choosePlan, fallback }`. An unbound interrupt uses `fallback`. Branch on `interrupt.kind === 'unbound'` if the copy must differ. +Tool approvals sit in the tool when you read the `interrupt` prop. Put a component on `interrupts.tools` to send that approval to the list instead. Generic interrupts always sit in the list under `interrupts.generic`: `{ choosePlan, fallback }`. An unbound interrupt uses `fallback`. Branch on `interrupt.kind === 'unbound'` if the copy must differ. The full map is on the [React page](./react). diff --git a/examples/ag-ui/src/App.tsx b/examples/ag-ui/src/App.tsx index 74fd4ded5d..f279928aa2 100644 --- a/examples/ag-ui/src/App.tsx +++ b/examples/ag-ui/src/App.tsx @@ -17,22 +17,25 @@ function AgUiChat({ const chat = useChat({ connection }) const [draft, setDraft] = useState('') const components = UI.defineComponents({ - layout: ({ chat: current, renderMessages, renderInput }) => ( -
- {current.error ? ( -

{current.error.message}

- ) : current.messages.length === 0 ? ( -
- {emptyLabel} -
- ) : ( -
- {renderMessages()} -
- )} -
{renderInput()}
-
- ), + layout: ({ renderMessages, renderInput }) => { + const current = UI.useChat() + return ( +
+ {current.error ? ( +

{current.error.message}

+ ) : current.messages.length === 0 ? ( +
+ {emptyLabel} +
+ ) : ( +
+ {renderMessages()} +
+ )} +
{renderInput()}
+
+ ) + }, message: ({ message }) => , input: () => ( vFPOf_J@^bR%w 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%0Ds8~X5xc?yvLf^(V3~X?aJOPQ9 zFOQOg9sBtuIWXNw_pr2-Y-BZgJuO+`)r@3|R!Wj(z0N8_5g+5dPSzv5F~)jZ%MX$n z8_0f$xI90!FVU|?^&m@zBlMh6cIo*HyoBt50GM5>;$OK*+c6KF!sjSl*234B{8r$R z@-rL#x(rtdwiAcB<^Dw6DcJEPpT$Q@D{Z>@rUXNrnQ*(HRwlga>U7|k`Sh^j*q?y7 zHM8ns+NvvH)qfl5^hPGma@(B+`6b20VOQ44+Li^0iuOvAR&XcV-HADkC92dqI=x#{ zT;p^lOPzIIi^o!^*s1o`O$yg8Zq;hF;l>Vw&gZh{2!3-@TeZ6!`dFE4aTTZ(xdxri zUZfA${fQp0G1y)i?g;A3rmXJ~CyT8OQv-p?HMQg28k3{2#9JRUx_hbv7$H{Xn@fuh z_zZ?zZHe89@Pa_vFn-Myp2SQ)EYINFYIk8FBJ$Y!5og;nr0Lp7*jytT*yJM zdqry{=7lBNlG^e>#3b%gIvZwb0^Q5&n^sONFP{((mR6cf!A4*81b=C?*yitul|YN6 z`clw}`{mK_MVti*E^0vsUt3M@PQma!1|?GDgML3f@9}B*cM~O+@M$=w&B$btq0NoA zZrGeqqWPa0xDIawQPAvz>>5V5VkQ(KM-34+lpT*F!iAK!Ew7F&?uvI+=9|>Hs{LE_ zxuJ2?8M13~_4a_-6SI|6Y0zdp6rNV*Q z!wV=g|x5%4?KM)6KN~X0gLy-cp40vd4#R%>k-&`Yyl*FV-O+(GgJKV8_4S{LR zxh93JYUZXXrnzUX=&H~;J63ktf{ubBXUOJ>TdaxopM}2AI+_+Xj9*h<+STZoIJqmS znVuIPH*4|INXv?GzD+t;tW;&L^cww5Zcl@UK5ji;lpxoP#Ja{uJ@J&Gw} zAkpCnOsbwWRcp3utuPmC-B7BT^^Qm6-tl~zf0KFZ$Zo#cDT z8{JPJA2C~|68^&=P17#ECPOi*4&n<~@LHecqpBCPnvpWh_xL@$R$i9t1jG0m=MQTl z$HQUT(>PA?GbY)d$nS3kVG4qBCoZ~F@+5eRh+iGWl^yR4zMkRvH%C3Skrm{P^iw_p zver}yMawgC5|}lS+E@omD8V5iZhg{lCLzf(x`h;EgWX!kBN-M_Ilh)(&(WR$S!u8FYnsEp)>7a++zgH#6MW zRZ%!>Msp6e z)K)L=%(uIB2CXIk5`9ZcMeE*KjU6S0R%_0#a<8qnEE0)^Lsh1VUs$XBp*oe`RAQ^h z*DJbfV^hKdCR28(tgOi`C^Uv_b&f(=T$`wy=-HTGV$>V6MTOUFG-lKBVPBvs95Ot<2NZTp4%!=E8H;1vBH5|DBmsv$+d2{nmA1{!)FQpElz?1rCPp z^N*~rlu5h_yPp1$p~5FHD%gC+&8!W>1Zq;CMvmdL_)`1%8(CxxbP2P#Ex-;4@}!}|@j`3~k|!S~e#X)-?^M#v z%)t7WeA%{9rwO%IgqvK-0&RR;FxXmQ++XCgJ0muFuHIMTiWE~i_19O|P4JaZsIH&r zakclir9L@a-Q%g89Q*9QH9fw{sZn&hbdR<&8_Osd>CJ_5FwfAond_eu1l5Jo;=5twgOy-zv;m`>0$t1P!m~}`V(=jzA zm~S*jb)q)2CdFE~k&oL_tuAKYGSsk_L!fKC0p zWAjh1De@WeYC{)z$EDUEEsML9%B@AE0h6_9itny5DCJ}Er@Tfj-~Tmg2EghZnPT#h zgGQ!o?daS#Y09?Faof8632RAB&|7Wm&@}H@xNv)8(~gCUb~K#m>8VOiDs%TFX3Yhs z%rj`@mWu71WIo@^8PA}R`-uz=UvDex-8?t<6B!hK;#SE|{405#KlPxkm~Y9RGC%QI z$xlQsMY=3j1ngKN=l;1oIvz7&=G=^I!}=Ds)?zO>cMHFbJ^I$s-e4p521nCw$7-!a zJLDiTZ*cTe8yU=agN@u9WKZD@u9c(#e!2EAD6_+iUp7nPGUc4QGCl$J(;Xcc;C!+e z(zmr-F7tZ7mAx-BzFi}?=Moim%y8LGOGd?1eD5s>tCD5ttfTi@eW&2*JAJgGOf9a; zDU7^6wnovn@*JfJ?6PvFbl*lE>qim|=+zV}AV+AIhtZaSOOlgxWGY55iDryc$4@mE zR)|hH%vm3$I4rbXTO}4F1ED(Pr2d&~ujU20EqLMSo6AxoQ^nBg@cETVG-Ervj;PVWxp!(1)c-em8r ziFEoZrwz7?Q-p@<;H0Xlv$Uqt!V*_~(BkfjRdfYb7x|hhLTzO_t*1F0X%7_fabtKc zqI6a%N@s#cXfln2<|M)~LK@&}vsbh*GJCJs0HQ&eou$}uWYF+BdWb$c5-^-Sq>oyV4ABdO9I`o(6}uc~4azS@RoMoOO6$@1 zYuu_7)!x-UGeE`5)hbVW~xsrJh zM^`0k(=o>y>~RO(a*goc5Fe(b6n2+FvN6_^GCQuAk{z+(ito4LQ%`xjl^$>4`BVc6 zPh&6?vsL@NlUmEF`np?}HRoF_8PG5D0(_Lft$F2FodHVA9MU4~Ix7wQH zO_MxT%QS^f^Gr=)c8=bzclmXyg+*l!w^vhC;&y9N3+W}5(^|vD<PvD)h)qYBKl zpbwa7Nn5VCRmXN&gPX0mf4*?h{!rLfZr9TNL$pX+*{RvNo7z*KPnuwhb@<;;J^rVI zO;fz6LBhqf%PDIYW_}s?OBr}E_D(R0cz)(3^8D~DcVwW7*yQ(EE=rh3H5Mmwq)eiYjrS5ab{3bHslEwc&P~G|^fwu9Zi2@m!Lcui z!FeA`OTmM^E9r70&m~SoE)7=REcwLW!V7bQM(w&fmMv=F8?OXmAg3srI{0l&(vObb zcg6U|GvwIW3PzIpl3U_uYBzV8P(!KN0d$E9e!6KSwU? ze-fuc$H&+Qb-|uX#_Q(ZzChP~(W#G4FPtpor~2uYEFJ!gUY1$~4y4jdtFd#IwI^M~ zDdljky%O9EKZZ{a$e~)+^_NR`=o}hd-2axugN}DT_ zY)3pF@7es7ug$W}^7!Zl%?`}yDK2v?4JXEVMU^q9vNK#e*}uO$X!2RL`;Ec2IX~By zns+#z!FlZq+GhIehGxC;%SF>IkNG}s1_!>s`b`<6D&q!Em?In?SIit72WR!@I^WBkn9FBgoC-cS zkT|sCTZ0)6xz#=J!aL)Y)`Dw+d9s! z78K%2K}EF%J)+L%$QFtUgCU=}l;#$Po#hd8j;P4e=I843wKko-w6a9wtE)HEn-kSm zZQN8*GozryP^ZYrRpsc53}(<;gzu+bEL?|J3>;d}D*LTt#6^rR%vuwjQ#- z`PehLlD?BN^K{v!O`wOpQL{?89&ZOCf+wx@NGqe66;U|?$EQdWnpckxjNdbT*2$e^ z6IV4BN3nF=RPJmEn*4E1XwJ#gHe4}z>g5A7PMK4=!JL@YJYjV**f*zfPSOfBVrv<+ z5c~YHpi7AI!C8nG?(PjYX78jA?{Y@@K2W@cAcTa2Okd&&Zxi2*CYGceLn1GPbjemabyd-v$eOyqu3)DJ+TsBy|ZESyw_3>(&wLD zvNqhXT~i$Et|%+TQo1qZuBb6&O+PPN+;qmiY-MClyk#+_Pn3Bq!aUT5_DLpKtQR}w zVaU|jVbB_f+jH zxUtC=au($j78lW7Tkpqrk@`Dlo`^{R(~OUWWoQXMe~%`usfbUHY>zO-ed+0`ynH@d zS(YBSvitOfk?GClS!XDHQH!s}Q>awtParO8LUFH0?vMFu;p#q!Vpg@g67oi^o8K0T4(#Y=bl!Zt=PP^e9O64Pe)8I49=E;WGJ0R^-@sQ`839J!@B&zq4}p?#fPI=dPK?aKPee z^7YhqnXhCaWN}F%`HG}If zn@9&s;%-k_5o@{9hy|3g_h;ITZT_BRHKw4)fa#>6 z!fP^kDkXz+`IHfZGrI`}$DEkk+AyaE7Dr&-1HMAb_EIzNgWDWtbl48#FZWfqxm3GS z*9taRAC1Rxc+J+WOs8N6@wM7xEs*IL3*@Fn#X+YIvtCcUREy6mH=i_b^5%ADZKwNZ zboWI!7dX7-7H)!)juOcPMJBbxbjz3tLQQNYI|14&OX6E>kUYVQv@dV-C{Gn&Y3+eV zchmL-Z{uCQ*Zw?yc|&p2&TlnB3Tst|PqspcFyKqPV_G47q^H`iffX{>w|eL;+zKtI zl?1aG+m>^(}}Uy|G-JK743Xc$dS8fraL)gGyB&MPi2(K~F0oC}NTld0Ra zx!S6BU;Dhuj%}KXsddL#Ay=hQHbYEbKE`SmvqDK;uQXmBmla~8Jsr1if9KBG6_XnL zS*I&pm3n8)p%oQ5)P->(KD)}CTs+?7w`nXDB^6Ef(6J_{I5Cz9YOaD(qXn6Mb&X+v zZgO^>(33hrC`m5r@V1|~?@0R-2T%3?_x2|_c~h&axqRF9@ma+)`+BXpQAITx|;^ERAcrx=*aHZu&p5KM8Qu{_XY$o2#T4-H3J^V}E>+X^npM zX)2@5QRuIB6~OPxb|#zbk=Y4z&HVPor?hqMo^K16*s;gY%Nne}RMAoCF7_I7V1B~b zb1|m*sd9}nKd=by;b-vm@+}xK5OKh~HSK`$Z(qqPQ|VU<->8`tiO;EF$GP!*hsj@B z;LsZ#(a55%@rx@%i^laV2`ws&MeAD(Rh8icJTOWe!!O}G^n=XDF(qUlXMUaCr5Fr+ zae~R2T8%v3;g{%XbO)y(G4c+90R~1g&luFzhNK~IXTC{evlLrYo9Oas(TNp0M}=kT z6M>D()I}zZ-efGv(~g^5QjZ@A_S*ByvJ5L21qN`qhpuD(CHR9;fz9X9V&>PVWxoa^ z*5mVLWUZyTQbVc3*%sUUYg)Hw>ZAqH=2}CcDW}+Av}=?#O=?B&2~D|KwRH{S7;XzF zKLp$b+>a3?KZZr2oCZrp#GLiQX1qaVrzIr=wNskysa14V#aw^R0+bAasfV3kr+X8w+XGb6GjLNw2@!8k`cf#oa|ZeTk*W zs>#p)pm&bG*iq+?w>fwVKaH=}?|@Z>8^awW|H#%$ZBJBohHyOOx`H)M?stxXXcY&|7PG{AY+Dsm8acpqKge4)Zt;}lD>P%6; z#+c>yDPiKi{A+qT#d#Oq-am`4WCZU>)Bf0Ai$8fR{4K)m8O8Z7^Xt3nW&r z469UqiwzyK7Kh-YxQ3s`H~4qJV|0O!4q0k!bIvFiCA|v3SLBTBs|4xwa>ff>6sF$1 z&v6gsb!c*;Z1IwkGE;a~jmDak;0sve`FjskbaO3wy(rQ9t~Wc#7~l{Qd@~9_J0xP7b;hzth7wb__p*Zwii;qgN>8 zIlRNqD4K+4P?qz{aL~)y{GImV_sS$3FNtT4iDMc4JI`Sleo0X*JdCnjLLA3#j$@fH zB;$Bmym(9;EAXo-tQN!Y(+dBXI93Sf@*E-LDCao1jCn1m@>*8l7l{}S)9};cZ#fPw zVV(o=YVfiGZ^a6Hfe4l$wB3|AzyER#$HTOiK};w$gO_45We^wgT*31&txcD@l0%r*R>SUTh7Zsvv{s2o z2i|a~24))e0mP`|Iwl<IR%Y5(ja%?^k&_h0>7YR2amV!u0($}Pb$z=YD z+RyAfn=5D(rcpGkQtCZHza{K5#bf3yYh8n_d}6K37L1fzgg7TH{9>pfP-64q8@PE! z?T!L{F6MQi@|u9d6>?=r7D&PHiS%5&8^~*>MjkkWXHkuJV_?bo>l4^Y&ss-fgVrl_ z-tvGY>M_Tvj9JBX^(EyK>zuY=ILN9Fg&-DMTiM9!w))+92JQ9&Lyi&e&Y*6mE96Ao zjPL2J6{rBO>POIHv;ux@ip~5lq*3%W46w-&iK}iL*VQ!+|1NB3ZfR&}X>LGv{2o>_ ze!cuj7R$zq;C_G7giipgP1xO!7oPp@%THJ>oa@`Aw4Gs7?Fj6nt4?UlqRkVRWEJl2 zQSRHP?AcwIwPfOMW;uF>ms0j6WFLKzYr%`;?>I|e%w59mv;4hDC*E>q-)K?d%)ixY z{?X2xQ@e!f!+*Q^q?>o*hf`p@Z(h9`$nXiTYge)^GyL!2Tj)mNF=pk}D3|l)-Y@5f zrQf{Co_&gEgVHmlTf`8s_shL_2%1z>K^~&FaGm{#7GjaHo|=chq`&46FZDnIcKohW z8=b%~v(L%csps)Mdt~@mqv5Y);G%LAT==I1C&Md*^5J(F9s}?Q|oOYy6h9MgmloAGA zT$=K#-ON)62{~7Iu=XDGT;T{6=UFg3be?l|dplC?p7SR}`cGKP${UAIrQ?KOvB)|i zY>57{&rp~QKJ*NYh*eV2WEa@lB-2!Ujt)UylR}Bl=y>woI*Z>#smT{InL>DTlo|sT zohQ$o@S2ngqvwOAiqght+w7QLA+8nj!f}67g;ilvS}Pg@@klORBP#T<*=-?wCJd`L zprS>h!V4#!zcl7g7$F7({SqM&HLDXWPzQGu|7i=pJEBmUya{)nM_24OQfl^wOh)up z5ahRD;nb7x8kGu@$M}KLUKf(cSVMCo@jzpRRcTUKE1LZAaGtPMA|u*ZszB@X44+La zg0Twsb4WCW^Gb+EEZQkS`A&UR! zw9}AZE+EVqfX2zT7E$pVFgmgOd-1DQKS!^)0r4j_jt}9C--5<3GMy|u1)GeXhkd#R zH&X~We$oX!nc3$;i*_bI7i)y4D!HLC@zX zj-Tk#Nbf%emyCnl3ml9#-~d(wezEE<`UGfxg!kk}*bYL_Yz6$6fal|ic-^2Ei}7(d z(@>-%?&zL<8m~_0)$GeDDJUp;d!NRm*L&o7JhM>gwvM>gt}Jo(Ua0PN=Fnv$joGIF*vEueAj9cM03JH`D@~5{3aN zJ}Y8Qba7Hrar8+bl*8NPI|-Bdtwm?W#bve4M?F(%gVEHygzqg%zqNvP5@^I*4-=0h zvj#1+EdG`Rv$~~4c2sq4wlCvJjqr}_3xq@&QZQ+qTKwPa7HuNaZcCeyc50gc6BFI_ zoW4bQ{Tj|Xt?T9EAAO`p_hBQhzi{}V-hHmMe>-PRvvcR2x7fEOm-ntI=~5UP8#1a- z=V2w6m6X@ioK{(0ULu;cqchw03_EzSTAX#s*evdxVQXg>7{6&JD2k`;>zVX}I>Pw% zXF*9RNy*-u`ex_Ur)GBTI`gTi7e0M?w{Dj|ec{D-4;pmO)Mv10R!7oJnp(8d3oj-zTSdJV|*6%}UJ=4DhT#V5yBb&KhE%0-t=tLiYW zwsJsaez*3__;$(3=0%$1tl_7Q>sOw_JFEo}mt2^glsKp>Yf>T$`*&#Hr!>izl-4ab zr#dY$zBH#?zT%wcoMT@`PujZod2oE|)RF2W-guGi&uf#-IjQH|(!Xrrxt$mEd28T| zmR#6UsU8evSA3 zr#s7^qnk#=u6<@*NzLdUg&E!II(JK{n=-J^ zq+XF%1n1S}SGOx@EN(x%OHOjv#%_&Cou~H7u1HBQE{`kgkXlswx1^HJ1=VR~X?eM6 zc`0Gx$%S1i^BYRSBO@#7Q#ipE73Jbiih z?w3Dx;l=k19C**g)8-BwICs{db31lCrynmhgk9#V%8tuPjZUk|$}UQ+Q)v>MkZ#>?{|W6bU)1Z!KD<_O8%!}W+pZ%A;Rg0f6Wdevv6ojUnCvM`mObj+ zIgvth%9Oc7hRmIE-aSKy-gDlNb82eN8N%mu%ysR07MGW1g~gAK3`xw$$&;y&#IVZy zd);u>SvT}@&y!0>_v$se^t6c+PpdI$xO!qVhfm;PXeRxUX8)W@ctclsnV$PDr?-ZXjgCNt>O zSN)4uty;NKdZBc_^Ei?x+HvyMQQ(O-^^*!pyXJzK)WoG5OdjHSX-_=sJ5*sjrQ*P;E{(Stn_7s0M z7jdW5tYJqB);Qox4s2dVv^w`7cEsS>Px$JZd8LFs{95mXGU^hs)cdn%KVka%-?9@- zfuH3>Jf=0p=4D@sJf%wvt@n)YVxOmM|bQc|&V+?Q-Wi>2N{ z>Um;bIyE0a>dnt}|~$23HOoTUI;1S7GqDhc3F{;qjv%n;9IvFuJ@fvu90*Zkc9sX!z4~L1|g# zWsxt1BY8X#4eAE>`Dn2`c?Z<+fH}DBp1oc_@@pLFOE;1JgDvgb?BZ+x11`<1^0>4( zBR3B&EiePe9BjLx@4x2SP&jQ4Hc5<1mh9)xS7T*wK(SnEai*3Q!2MVD$zP+UNBuVH zl4$?ur$kNPcuMpo{x$#3PMLK-N6Qm)=FGY7-fzOm;Sa3oqvEWW%gO)t; zAYUv2WGBXVJnfG3%hFCy@BAM(Ua$w;d1uSCJMX-P2eaLD1BPK8tMaN-QYyQbb{bNa zryDTTqP}Fu)5oDqXlv_r66!Rt6>Dl}EzU>S_aCX`Oe{IiKe6h}!ogLi<&2nEa(?80 zCfCTMrty zY*R6~rn*~RY5$52XAQ0He)*WuSM|1UOf0I)FKx)K8d6np>d~ zl~RcBeEJW>@9L$~KAxDdFMi75y8!jF+bcCC>G2_FdpfseC7< zZGRcqRhC`|drxfSllF&@7f??zoBSXC7n?7X$Sw`P9Wda^|8fHcyQ&KFBNFFB#S>;gbuTV<9V^yf{vb()OL%vSAwTh~dCdTFK9AKMCK(!J= z&4p**&?_(5bc$){*`+wIXLUuNs<4|vs|TO!ztz6EBVWu#VILO1*Mg}Dw&*UY`n3tF_`%Ll$64x#FDJy z4g*U`onME!qcfTIYAl7o9GI^@v6elD17CWuQ`f9o%KMWEE%Wc$XWwiJ$C+&ZJ7NBp zbPlX=+&HOyJ37OA(G{{ga*57yGHnugN_0|-@CHBo#Kkwnr{WHj4{XS(8h71@G1m{a zuMer{Q{7=qhx{&sOM}=8bd>+0`cCy{RYaC|8(Z7$qS5U-p3}Fms%uX9sr@>i*{d+^ zEWQIW%-o&ezbwMcOYl#`_Th_Td+nDQGc>Y$^8|Jdnq)E0-TE{!g~>yGnurM|tU+%K zlJ3M#sLM8V*^C`xZ0XCHa?D{q$~8qxQ>B6UPKON4aH;IxSc-dd^l61%iz^xuVohdw zVn%*$Ze~$JT5(ZYw~P8Vp4OOU-)533ipnbzv$GPD+l@A{^~2kRN2Nq&kr5)oUN`m8JB1$`@hR4PP`(g`X3kNn9nc~`Zr`5JQy?sdi z8SR7H(@L0%&Y?fQ5Jm{oeg_EXv2&g%8oCnK|S)8qZW zzw53W%^Us!;ts_%p4uhr5<4ohT}h((6Z4?2P98gH;G{8=v4=WS!c0og{h@2!ZDk>- z>@e#|CAMa5eCL#!zGpRdp3tu*?Y897hQgXY#gooAbsbLW+b%7&y3hDJ|3{`>Y1gvE z!U1*u&xFzFkMgWg-&yut)kR`WFw-NA5$rXH_-(Bn`|+jC?|%5C7Zx7=+CCvZ^kgbDuLzp}S>5LzSDe$cC*eq~9w z5U0%4e^FkcS>Qk8>Ad>}4(L7Lp~rhp8CcTqw#h%w=`?oi?c>Io8I64#yI+#scxu;S z7u3IM-_~*sqlLlFz95|mcXw_!Y4%?jE%>Z_=ZKw6y^Fn7&dhkaY#~#*J~pz@^>xgR z;-{ttbeK7{ASSnc#a%Zi)wat?$}1^~ey6Y^A-Q^RUH3s1@#X$X)9ep2&0%8;YqKs2 zPU})zRFfXbZXfMJimEdTyHsa}#Q0cscb2(r*sz7ur^BHq}Z3Y*D2vv#de*4>J4U^Y-Do5x*|AKl!$Zz;?+k6@iUO|8E4gZfsC5{}Nt!3o8qW zi~T3D9n?2|th7l2{7~lgz4E*Sxd{+{?LGeI?39-6b_yS`Z#iP_nKkRpQKN)@}3}VM!eYIGANLo-*8z`~@7(P5n z(th!Ffp7fM<|w4ip0Tv~lY9R>G4isPXGTo=!+q~v5;6Uk64$biEfvIFBR*J%urhxJ zPm0CLh-9W!pLU3}@#QqWvgEyXk=#kDyzGIu{R?+J^ZSrH{<8CqGtO9e28aKPmF6w~ za?``#ZxsTJ_P^4swG$Mc(oH(t)mQkBm`AQOkNPJ+$n?1(mEWx8d8YStrO`a%zwt)R zeKomLyxgViqG1}$oukdr(WCq?k21rq9%F`$VG-Z3vHn-2of@q=(hne{I!UCqw9T_E zUz;#xe3DyUk&|Cuo|otPl)1Dhzo4)vKd;z7t0=Fas5n2b$gRb_;J4kyBN3?5a|)JI z%p+#%O*efFwo-aWN*|`Fgi8t&YbBky73Xa}&p*e_(9zEL@x~h^i`Kk9c_u(@C|%4i z7`R3L@699q@4Y1Uk_TUS?H8$vNkqR8Y}QKQBrNLx!fP))NLr;=JT;l%_Zbs+jS{Iq!%gNy^ef^Ke{MhqSDASvl=8Guu~On;xDr@U-^bCUPPsL|kjVlTF@XKwSK_NEd8#9g#46_kgN zId(8>Wz3ZWt~{l>!|7M{>wm>5?b@GuRiCVGwfULtdln|QXCt=Ujy?Q8*l`!P>|sIt z>z?o zSju9yP7R4lKbb-e3H619+?Ldf8`LeL-)k}HQ)41h3+>?1 z!xECGMn|R;wHzNcT%eZ1&>PXy*udzkdYO^dEh)V@Xt5o1zRP>oK?j;#`hK5N$`flw zUNv^?)gx;X%TMX^zW*Q0Hs&{+(YfKwP6f4{lV>Hw^f|ksaLky#<>h_Hj4A4LPVbn6 zS+@jdbQsZj;5qGiU%d0k4(Y+Sh&1v1)?PyItxpYQuWs3YTZTOeO>3GS`Frf&%gmQz zM9G(aFTY$QX)teOxB0RgcGEw9*=?b(Tl0J3><@Y8#8_qI$+Q0`YqC@86Xo%EesZFZ zQ`zgUnysrrgZE!#7L42Es3$^CWu#BS0w8~Ct>9wW#^+icRDU|~*9GHCGA161ar+4Uo zYF*>Re#KqSX($=o7!&_heuvz+f=;=)T?(@sMszG1(5*VvzOMb~^Dpku>CC|$v+{eM z)-dSonv@Q#4hd#dyVkdu=g)EUydA9G?C$kzv&Zg?xQDFK(WN|3Yn@#_>AuL&*A1t3 zDCj((u;J8>jT5Sven=@w;+$G!SN^Lzypkwu)J)g%Q+hQFtx76CrT3syiY|^V%Hb`D zxT4(L(s+OSU*5~j<6dEIZdrV9HPvZrY7~5Kn;MOAM`FJ+Cw>yv|FKs8JGC~8{}nx& zhx~uhn-!}g2s_e*n!};t}l%SViF`{eSh}f>fYm5ocD$nM7=5|hHP6X&x=kX5*UKH3};9)0^akZi{uqfuo z!@1}=v7Kx3s&m8djUcOe-`_R6JS(T)MX4iWyN;;L@7tKHrNwpSAsK5G>`APzS%=jq z^lM{jp&%I9BOP>qraZ5-G%v5DbZ1^^Nq%lwsXZyHAU``hzc4eiP<+`7i**V18P>b3 z8pDc$Pg`?eTv1(JQCVGWpHYaFR#ccTD|3?UQ}`mJ?0zP5w5d1oBB%G>Y}-4`Zr^;# z(7Ud)b{z- zGrDdHumBw+z$Hm*js;VpbS69|2#3dvo#Kk8HmhtvT_6yh`7MS^07FbbA`*vl~ z@nOC`443kf+trjtC4~C=!~_-CBjb|evl9w?mBuB-p>2CJ4<{`%-Sn_O*OsA+N-`Dp z^z)ena@%YJZ=W;1NaO`Lo)W`n#VU!Bo7vIt8xi5>Uebr#vOyOYK4PC#JSw&$F8#ac{d9!j_& zDK_|)tmsWW#-!Dbr+bt%DJGQ^$a|`oG%~Gahw_xr`;<>fQc`S(js?NV9cvT4voclnFez)~YC7)#VYAnvK zNgGqrJ~cNd?1NwvU0Re~lEIq1`0BXm*dSw56Xh@2;fj@q7Gu(6p5ZTtd%Sq~jvD@w z^H|=O`b+NPLjXhCaG<-VzYB%^kUZ!)%sVZo)JV8`fbY@P_;!4uRpOIukrsAp=X;JW zHj}LN%F7y$lt^2O9JRA+Q$Zo|K!D%fZR>wN31vrpjm9NITE9?4Fm78FT4axgT#2 zF~jWdJRK-@rZ0^z`hQ z{9c|6oo6!jDU^<4l1!+5-n3~lmI~-wb|up_WC5MYu8L6Bm9byZi<;Bbm?7|j3(3`n zA&j)$YgeQ3j=l%!-)J!41vFTQ@PNX1^-_q2X6IcOj5Xj*w2--Q;O@)PfdjDc69nDG!z5{ zvGZEf3Z$+4jP)346RbJbt=3I^rQ!tzo{doG&nY9;H%)}e(b>CRd zi+%5KUhbR0`B`5b=jVJ+ael=otFR}c&5U)0{S)VB?5j90w=d^>xqT<+XL-W_2=*U1 zzh*aazRtds^SO*-jdiho8Rz%xSz;+9e~bG9w;IRFwdCcvCAe2{i*V24p29tbdk`n_ z0Vio)ht**x*ok&B-vdiy&!Y@>-pOKqGRMxfi|tZo#menUyQ-BkLf<-mSoToHM+?Nz ze;Vr^=T^?=_`l|Sp)*JNgrx1bjktBh`RshVfcBR*HIgGaCvlAxlr+JLG7}S*p%dOn zd^z!X&tK^I^V?iM!u>$H`@MMHXV83ic>XP(e?yz=w)tjx@iRStn&%7Lw(01^6z;?} z_XWQR-t{=oAAvsz*9X@P*9q4iSK;|Zo-gstcPAomdY|@7jKYO@zGYbn#|V3V!U3*# zC2URj$@9PW{I#C{X`Abnqzj~f&x>E``HMaOMbDRXZPP#J#V=@cU&?*LyM74&KHOZ~ z?YNsgU#@54uJW!g#h;3sf;$^`8g5L&Fsj3mFf3t!d!5kB^BX&|^89N(|B4gW@t4Hk+M4b{FMg8epXvH?|D<%| zPsF!{|F6=;kMiIR@%(2z_!93r544Bw(G|=d)LIr z9m4IwZO3i&{B@o$@n7S_UjwX5akP8fN4O7g%RFDM-@v^b_k7&KxcPC9c>evKe~;(i z;rWv87SaXM-_ROA%ggWjFUQUD(z(|+a4qm>dj2#o-}$Zi-SQ`T*E2nT0=SLCjld1U z_3`{}p5Mvy1NYl=U4bjY<>1mhA34_RD9@Ms$aHHu%Z-mc=H2(`6nlW{HuQ?!-nF0{>nDj?{PnnZmAc)*z=Kd&HtR|FKBb!Hs2Fo{6n69pXUqQw&~y( zg?D?K`-0!i-t}zHzX~5-h=mtKo?@rq&c>bQ`C~j^;)me|c-OsR8-;$czx3;ftBEa( zE%5v-&rk9ExHi`jqzj}Ea^qwCo`1yi_j&0hU7PeVP2T;@ZSGTU%my$1Tg!_10=F8s z0=L}rmv}yP)%ZpD&*GlKJ%)P_cQ0;^=ilo2H+lZGo*zgj{uQ`D`b)g~7ycsMB=7o6 z{PDO^o<9V?A5Q!pxXv*hW2*2=JU?(Pejf1|F-b8o_+j)pgYa$3if+ao^87unukqUn zZ}j5V;eU-=6a7*22hq!--|+mGJ^%SO*9*BHNH^b$f5h|e_k6kEHr+jK;@iUiSLyEX z(%<6wH~b?1Ebn?II8Vc!kDG{_fE$M!fusJ>eLTOL=SzGiTzgyvuE_IqJYV9|aN;N6 zqHrNNE9zL(fnWH$EGuej)K76aQQt?c_54pgf2HTY=lPN@gmi)QOIza?d-+{|Yt&*d zoqN5MYk~iw=RfD=ThN-{E&mDc`bE!2{-f^0&Bfi0yV>(+d;V3PAGm)h*Hdv*aA)IA z^ZYTMKg{#x{s3GcT`w=b(evx@Yj99}U5k3o4EFb2V$vkc+5rhapy3BJ{G{f3lG#FImTCMljUUFy)i6Sx!}(!N(-*chrZ00N z#>h@Z#+2KPcX-2AAdl5tH);4LFD#hcB$!y=^InOun%H~N7@q--wO>lKR85ZhC8hnMq_kg>yX<-(a2Rg^=PS9( zo9En>ybOqE>X|W-Nsw`nVN|IxQm;DRoHo2!$9RgZ^cgXkj*O3tX>af3++EXGITJNr z(idyqV!n1}%!`_Gk*0i0Q@*TsU*u_sF%=pv*Oav~I-?ZEYbH!f>?CKtG%NA-T6(QQ z>!{Fb?N5pCDKHs3fvxWEClG*ay{n_7&lG-wEi_!EC63UT5fa0fP8ms=BY zk`%)@#@iAjaDJ7P+h6Y87hBU6B>T8-r4pYcxDd!<#g`NyD{Tm-bq(U@y#Q z6dDRWJ7|qM_{I@#?_18fGb1||xyjhpw9}e)(>mtMh|a+6)N~x*3laKDx!ts^ZW`{V z@Ef#Vy|qTev_{AZDSJyA+m^HSy2f?LoeMM!|5$hGDEm$wanF(3@fBg}LOk5US@`*WrQw~L_fCOEyzt&Ig*;3k zn?V{Lq~S8XTPovpQ>HDR?M&8i40%N-akhn46#M*Qwn!b z3KuJdOO;j~l~(sT&7|k)C+AY7*bJeA>7zVTt}rWQB#w*=&(v!!o|>H!!Wt{7LtmOdm4vA67l`_AC?6J=?e2= zg*n|fp1ZRYhrc+72u~N7Nd0{h)^nWlUXCw~m>exJN8`I{{BUiH!Mq<~%s5{%=fRq0 zuzfG#v6`l@<{hb}^wqo*HO)i~AJ*_;4Np^??_i$On9G@AG4|W`0}|HrRIOc4t=&|c z-Am2ITCb^IjlLyjY7i1+rfN+u_eqT|)S6zY)ccJ{vHhx)MXA&jCph1xFt1i@f2Y{q zquBmV(wN^VZmjem>}dE@4gW#mtk-jkZpVkRQ_UG!0MF@Koi)v$XW7 z+SXI`?o_?Y^ei%673Xu5 z^UqPt&sEINQJg0#&gUr37b&)9DYoZmDd+f>fX}%>m7LGf8cp?mBVm_HT9-d-S?9QC zO0=0*HI_)o4C`I|_nALk&bps?YcmTK2CzTIBz}F&6n=fp1^oJ%Y5e+|OZW{im+>2D zt}<8i%GXW&hOkG|&3ya&cl?H#JNOMZbNG#5`N7?0r1=NGQRZ9olNoKcnH^?=*<<#x zn{O%@EX6Ixy@-1bw*dD9PB=j*J{Na8?q=LEjp5kFc|lxNv73F%iyg)<6X_L!RQiv~butj{gjm&K~Ee#5+H8 zs#2QpgxC4f;>dNl$&KBA#&iRg?-zs&M@hl4} zIxC$W&Ne8T$U7j_lpH24>U=?-WS8!;vK&c^rd8h*x;T$=9l&>mhF!c?Nx1cp7K$d_ zL3Utxi*TOip=Qn-@PK>Be)9}Sp!v(P@4WMa^P{tq^y`V)3N4DDZ!@^XIombe&(2S@ zU$*lZb)v6ues;D9{lUF~wasF6a5$fH%9JM-9A&st)&w;>A1jx=q_Og>+j4%8u*VNV zQ?FHslNJI;=w0coA)GEZ?RHQ*$+QV5vj5nMi_g@tCwl(aRJ_MxwolW6B1 zU?Z&-3C>?B7pVkkdYA6U!AkUIF!awL^?rrA4=A!G1k2S5Gj*ns-f=j6;0xw0vy^&; z5?9B&$&IFw@GwR%!Q3Bi1(9a7Ws~j&%SYO`$S+S-wdZJ*_sOju?Hj+gMtVKR7Awlx zgidVX`+aaMvcFHme-rvTt2ORB^w55(h4Z$v3cCI5Y$o*&u zalUc>;VdI0?=mHE_apcLE>X(7M+u+O9zNovL|0Ni2aj(^u>yUwL}Hb5jzEPFG}JrV z`kxS93lD}XWKJSe%IjW)w(y%kY<4zC6fNi0-g4eYG!{-r5|F8V_`A9A(N?RK z4-QegpMcSVyoh8RRH&|IKwm(a{pglBVnr)(0H@j6Byiv+_z;+)$@V&|X>q=A)@vH% z8Eq??lLJ49687T`C|wS~i*PaN_ke?FF41oBsxzeb{u+unxV`9T)l{UBr`=L}AGrJ^ zI)OU;3=bwjIpIm+-lN1Z2GTMQfu%?;bjM!U$GbU_{~PKjbeC_$i@uZ{Cq!y&@+Xl~ zJAiNx)u=F)QL4=wd`C>2Hh z4^g{~&St0}GTBTi-l6FXJR@&f1zME!?rrqVZs}=}UD33Ao$ryiFW^+kFD>XmU2Fxp z0=o7@dewSzzSj~xJ*K)>a_xdjvZtEhe$=xc(9oLpIJ|y@*4u)Hz-9saW0bfJ-Mdpu z+$c4W0?5hQ1!@q3=Cjc;yjw09aRQH=ujEhPOc*;dh}u+7>%-9Tbt!7HR_o=}X9q_2S`v zPbNnhIH{K%Q!O7W5m9DI=g+3 z)LPmoz+YRnW+MIcof50HJqSIai)2;KI0}s;=n>%nsUNX>pbpUCx}$1u!f9N!K-*Z_ zK>3{%`c+!FbK(&Afx`_e)Ie0LFVq7f8V~r$k{+t%pqkX6NhpiI7e9#dqoee z&oR!j3XC2RjUuhl1O)5>OPdww z5NRp;6}Upmwcy0v%BP~=<$AT2F8cjvu)$W;SgaH7xpZgN3%)rheL0u~YPSMB4~#k%@y+nqGa&xWq@l^*Y#o%bho!b@1(XRu=wF;YQ?SAHCT- z&U^HU>CWGY7wxwMz4fJn$U9Dvh432JQh@xKXtizKrM6 z;aTYoMKc{k0@W@jEb@B{9FSF&Q}~&fJwOmy6%_xEJaj zu_c60Tuq`Jqw(%38!r!j94YN%)#9Xfy+k$`bL;4wbL*iza15S2a(tfm#P5)u)Y{Ri8J@42Y*^q_5XrSdu8THhNEcK(Q%W6nFHnrf~Zv;Yutc zg_GhIL&#g99xFWwZs|TV3%QZ~?lzv4L|ve2c|^y(s;6 zmPRLW7M{=&+Cb8qI**bKt=mcctd6)eT%k&<^uX!Zoh}^F0FEm~t+b>S(b~tc-vXQ) zNz7rEFcUq2wTlEau^kbm!rw`nwR>W4qTgaC{YCkfAq=9WL?XU$LG8iEUZ4Pj~LvZ3K zWG}Kr2{4oOy|aO9n;EVjY3T+uL@Jnk&rRdJ&)L;UhP;d#XcuXb?Qn^-^iR^7k`jIj z19qbJ>WQ>UD1Bd~vyyu!EcbG;g7uchKTu)d)uJC__p9*kWLw(%*NzkX$z3U35AB;|%p{ruOgY?oDNpIOp1@yrs8m}_N&p}1 zNcX;S-!a-x<|e?#r5iPM`zHECm4*{=rEkJ2cH;whlg}nrMu^Nj=vjI~!nD7n6{}Fk zY}(p3WBBdFNLz^=oh-O$A1?ea^n)j`clOJkW?-@#+fd%j6`c~09LXW|GQt(`m3&W5 zI7()IWR66}LdT)C52=t=JVZDJx_?6|SLT>q)4Iv^cZ#c8uw2R98)0}apb;(RH)R~g zh#z128MqtxB5QKQPzSL~1aIln9c-*!vlC4SsSpQ^@{h2Xc2i%Aa7^r%qD3MGe03*6_!4a8ayp4pFXvAvdWLc>Hb=G*F03e5eqx@ZhJbd*6^z!r%72rJhL zKgc2T_tO3{f4`M$q1GOxQZdnM;R?C(xPz;mv^Z~Y5EExra@|bpOTQ`HC3BHBxQI<4 zv)^L3#Gz4-sl_S0+CrSpOslqQPtEs=MFtcD&BERKa=lU@0?*}M*ZQPx#0pHoDUI65 zxJ70zMOH;e?he10rZvUI7dk>cXoI*+D%&bP&*Mg z(rXBZRe;ext)b8l`_{!B`tT(K^i?o;$pPIpJWr$viA18{-y-3DtiP9>zrZWIREKZY zIE!bze{}ArjM-4JBQp+ffOWj{Cw?o1L%^VhyYdAc!2}KJTuCWcQ=0_onVGYbUe(cO zz+X#B^z(1P#xIsUzUY}v&h?shHrim8^QqLCdrdrPmD$#}owrm&y~&K&xAcMOVCWZV zWbRi+yZ>O8<0#JqpM>+|dCx*@#qR|Ic4La-Wt_k290yN7Nxc9KQ3B1QkmUEs;W+ap zF)-!4R5S#44)A1oq3kck{l)0lPq``c&|yezByV`iST%%HxnSUOkjyYjAJ4OC@~@&+ zJH+0EPdB>~OZY|Hk665$RrcRfE%F_h)3ZtpcYk)<7~cL~>^zNof%sLLMq!F^sdxGv0VU-1icpA97CCUEz?twPZL-d`+dXmem zEAjj4)h|!CiDo5o6!f&Lvt-w5>ogoZe$sJj>y?Dgz|GN^nVdz+uaRCw_UW_6diW4T zp9t(<98gSp6VdW=hz33;F2K3e{h)H2&en6azg1H92$kGJ`bcE%xVBx}QruBmfCho& zfn2UM>}kbOAP6ssedCQtxMqwGf6Ez8(yVdxaKcq@a`(8(6)gl_JduOPpCOI6mV}V2 z_3lT4pLC^M$73Nm}cwPg=iCTdry zO}1akAcgS1v_U!&FSxo?&d`2LdmXXS1d^QHz7${XAYqhsL`nh!i{3?AGDvd@=R|4h z5Jolf1XS=&=UybbAzi}EMMqJ0>BCro1fCh_5JvozB=3m|&4Y+JK%1;Vu6foWr3fBS zS!^EHp502RVsQ)4x%}roT`!ds9#3fNc{Ot(z@4-_+DQ3L`f<_V@`T;h2HtZUs1vH~ zq;?$lWTk@G#9I{?;c?M1K|)2aXhwSM(taH;kAK0mENt_VhPD1m@2lkwj9C* znp%8;Ejht)8(6CS3~!)yrPt!D67Shw$FK<)n;;k4z>ryC`kuX{&7!V;`g<9B#n5&< zc_(Wjz36eJDWeH^JeJ5uTQC z;7~q950WDr+}S34dL#6ttU_V7 z4(#%<$Xsjm3EJmlfTbhF?yRCn(r3ho9UzDFT-jI?N5EZlj*Gkd{9>sjP+Z-!rxRZ{SE9nME-{o^jJh&0qR z7Q00IXW~!vO|0$la*0%;-9!okX9;n*J+icn$NMfHlS(92ED^EBI5gz0I6LG@hQzoB zcf+(D0y)HfC)_$Blw_f3L(wUmRZEJ*|0LSNg#k>75sFCL9)ZU~=u=q#&6RwiCktO@ zrsxqQ2h zS*%FWo_YvBNV^}=`FFAR#U@ZIO4>~zK>2-~_aXU~P!K9ID!9m(oPFs%ko^ zxzyPQd}&o?F@S*d0^x|(VW(HqE!6r59Ez@^MS+a(!a0m4meJ}4a!UKMo&?MMfY&!L zj+eG0_kQTIAMLYAVH`vP#r~8di+;+L`}eSHw-Xj^wVz&2G)_3Ywt`gp%}L<9{BVT) z$Dp&&znPS18G5(_YAwmSTX_N+rt(DVY1^?L0w^K0hOGIJl6_#34CR|CPoT=&ggfSY zh59&*jEw4wBJRNviiHNfo{q5dIU|qn@IUj$eD7<&tEu$lj`==S>qj*qmU@f!0j@o? zg;XvtX%C>b%W|b`0Z@g)+4wIiKQi)g^((%Npgxy+Km)P4WUg4&GRpcpcXTB+jDSWi zU+B|#ku>rg7jET{uV4xPg)ln&MCbt3e^YAYF+uM#an`tQK62?!RPktu05WmFizb#97AOZ*|?quipQkiqz)_GS~4BItGwF|;kU@C{9l%b$Ny)f{d-7a0os~qgCM1qEKbs|on^!%d zf@_($)Qj+JF&Q~@V14{izH37N>~b1BD&=j^{5$lF&gN*)v(Q^*59~_BHdnfr3Z2pN zqB}*7WxkI?#u(jxb* ztsdstd7@!zn6o=BZy0djwd-8l&E=V0lHHwA3#|PR`$5NLJE^hsAy`N{_ayzdXSaZl zd+1vf=rdgx>&4;0EwWRs)KBK8V&IujvFW)ESAImcmH!0ia1UFVl@{yOJt7EuEAv|K zi@p|)b`RvH_3-eL-q)k5)B<^vL)wi)`Z1X&V=N?>|M!R2JAk1}X?X`m-gr4lA_1${ znNrU{O1CV@VO7Lwl9L7$RKbq%8STW8je53cVYYN6H9EUR`sbwbgaq z)KL2<TnhS&uH^MI>`TBXuW+U6`H7AWy?o2dVlpkgWd;RjEW zlq0}P+R!Jx0Y^4hvi@Ax^>Ur66r+C-%g^OkRyP(~dE65@{Q*A(Z6wxDF}t;8qbFkY z8AA+Krh~kTwv(0cFjDRcSW5qyj!_Cx4@3(kmd3AukuC(ZiM$+scmCj@-EZ#EI{PbZ^Rk&3~ zGfBwB4rUs5^83;4DM-E3(?n=txXkSXL|+EzAdp<$C;CooUJm!Jd*x~sEG&8J#?2+X zD9@7hfX78Xo8a`%DgB^Y<$Hwlz5DNRcRRK`&ru0|s$9Q~`4A3I(%gh6oz;f@%2{+$ znbm&L8|Df|Uzb&Gn zH2rt3tg5xPR!0U+|AfA37?0N4-deMV-G&WiKVMYtM!3x&mH$^zqdZ94Q?j@y17KsSR?w2 z=>PG{fKGzqI=jW0_n`F0YBO+fwS&hW+zse3T|K6KSU^KWc>M-A>N8sUuE2p^6s20< zuWQ<&gVc_bNG!URE8#VH`fx&;(U-*R)R`F3S;#c}3irqnkT$qZSkUyj$l;XayI_Kc7V-18>Fqa|{#yqZDCyC{d61;c5z*$y^9HIA8-KIA7 zPvmjyna2E#*sIuDI{(9}G6A477xHF&q`s%DQJj>=y$ctEjdB&xk=`9`LAAidhDg>F zp9Jo44Ia>NCuey>_XxZqJ-j>TB5#UEp!qiwr*9aOE{l{%AzD}aIzp~A%exLLgTSW7 zfhVwDNoxD*m_;L?mGBm&a`xI-Z&d5qm0VZXY4731x;&=2$S3`}jSXekFUsOe_1*D% z@$1H_{r+4HWYv9dYq&LzC(+~C1z`kxKFs2|^0n;8e5v)5wb5E@ZQ=KgwawbjPB={_ zi(Q^__(hvMK9>+<>P;6@V7jvJLn%8w3?Xg=yE)XEF=i~E0D7EX7c#fejcac4^w9bYa_a;1$U%54i`Wk9Fg12l&vd6Ze z<`Ff+_pu!Boms*z-z5{_6Mg*s{Hm-6*k3rt zdfb{1w>)V*gXBKTo)uBnOYB||V!h5U%6fxei1jAFaBGS67F@NIU!?W6wT$pP?6r|% zy~nRJJ8pbH%!lm170JHhYY2bNFVgygUxf7~zew6;E#LO}iZ)5LzT+3pektG6sz2~c zu-5SlqYc*+zky#r+VW@OH}dPREt)`!ZX;$pzX4X0wU?Cp_zhz3FL{1&%woR=tJ&CA zwDFk;-aw8ttY|V(CWdgVi6tCon8Psf>>&i){YR*Fe7$;70X6k<|MD&aKv zCedWG<5w8GlV@d_d{fK&%<_iwnZiR>lD_AB7M#?_ie+Ds0ahCPFxVO`TxDglf5=da zcc6I-dV;aNH=;$a~SJzF0rZf@thNWV9~w@#NGNvs~`PIIT#P4*=r&0Xd$YrL6j=31R(j}mLBdBQwl zjfIcrS)M)=!mr*CMVY8IJAR(p8; zC9AJ_*}P)q!11qHBg|s6*cxfxFmG5L%o4MNZ&JN&-nNR&GPBGoHt(2s2roCw3BPOJ zwerk+<~^&IdEdNG_yhBS)!Te%R#=5d%qpwetTCTk`AE(IE5jT#2d%;8kU2#7usLGo zB1=cDp2*WNYoJJ!Rbxl7Q%M0legzhmJmnCH>Yx%8k3B@byE&ROKG7I_;-%JJ5@NYNzg0<`#r z$XyVU=gQu6N)y=&QrXK;*-KE_%SZNZp~T-=cOYqZB8MR=hxICli7JPkR1PCl4l|L% z*O6Y4I-g2i7E-s2zU>`;$?RwYWs$jet)41%SxDWNq!hX8qjHsvRDF+Bh(txHM1`tE zMX4-BsVpU{EJdkyj6#ZbqEmKRyMe!lUold(m$1myV3n(I>zH9YW) zDM~;pM1De%pH#R+WF|#)E!>lb%(O>l%D7u@YOFZZ4*3aH$w^h2iBy@%RcWbI+32UT z(N|@ook~TCN=2n;W%xk2d6;r@59Q|W%E!HwgNLJ~pMgh(kGm-E4p81LRo)${yjx^m zH?Jdm!ofx8@Hdek;oxfJ;2P!NYUSV><=`^q;Bw{QGUecM<=`r`{z|J+`M5zjxIj60 zh;ncN9DEpF7Y^>P96U%lxHD~Q)2GRPb-Umf%i349y=p_%%Bp4j-q7E|s`>opRNY)P zyJ}KZ=c<~jw90QQzo=YYxuSAu<(ZXzDn6`VzD4kn+VQEFlBPC->s!BqNn~U!)y1nRzqAQBdE*e+3x^Pb6_=2W_ zbp>A+tSNY|V1B{0g7XW`EErQzRgh6&+b|O^fRj7ZkfDc6Mx!*t*z~m``KIuy5-P(Pu{Yh&nB*CMqt{ANgS9 z%*eWkHzIC|C<%Wqd~W!(@bkk5g?$?~Dy$~7Idom&PBc zSE0$SK_Aswzv0&fJ@g0q;`^;XqZ1$I*9#5wI8f*D>w_M8lGT9E@#}|8@FM;1%lrmd zukjm*c3OhAT#6Mi6utC5<*(p3hQ5C_Yx}-H6OBU;{lF^0_4L$dpktcQo4fd3h=$pV z<+9&8fDS!Mk3HRL<~M`y<6^s@U81bZ&@S=TO!P{Mbp;wF&6;I0Or~`WeQ~~ZohdfO z)=lV=cGho92h+j2nI5^``YnBNSL=6JYu&Be*vo6Ib-Ov+%(VVwX44x!i~g8zEv4^! z##(Nkr*~T+mYlUpEIIc2e2ZS`bFt*C_1Y`_$j)9^A4v8=Ya`O^SX;FB*@Ja3&q@VW zq*>@3GS4|H%wlJ+dE2?qEOY*3-f8v$# zoYm$o=NmKE`N7=neA^1`Nvw>g7*H_20rFvm{1W@7yo`GVC#5WLj!@EkN_v!%7EscY z^s@2vv9a{9@$|1r=0oQ%W(Bjox%3H^^%bM!?an?^2d?$bQPb5qXoff~W~j5%40AS{ z;m+q~gyWczlsJm`(avjTjI+&*<$9j;rkU@&Y!*1%!Ds^*9WpOagV%tw*!c=W2fFQ(MDxff>*WR!6~Fo%H8P-->IIR-9% z@Hhw_he*B6TtvB3ohCEGS!XT-_G{c*?EFNzKeLm}Xs})klwj*xX9qA^fZ-6komieY zQ}Z2CbBlQqYQ4|H!4K5^=3=1D0H4>K1Ek&uMC^9Pd+FrbORk;dItroT!TWR z!0iD>)NfLP+aiZ4;Q)}gfYXoYfVGT-z9PL_izDFE3_gDFIba6k4*~0;;5kfc=N!kf zw7_jY^g9ZaAHnaSw&R7Q7g}C|KLb1kzj>sa5B{$~oyD}n658`^+F==a-@#vw{~`BQ z;CLg`9H5W;&d436z_G z99#x=uR)Q;&KgQRMyW?A?I5MGLm2hlL|wN~*Im?gJ9TZMq|br$1ub{LOhXc;b6@Im zDQPaFtUxT!O7JS?J8ff1cp0j|{ zXGovWc{F9;h0H8wRxuO`&V_=HBM~2%mz*!Li&M?J$n*QGX9`npW`S*D;vxqM|A4I#eof6zUg4G;TX|yKD| z8)?(c^e9{DD_9$4SWRi-py)hjA(%g7p2mO1S&qi+Ni7zdmvOJ)J|OKXaNG~&S;Y!x zZ(}n4Bc7KTW{=a*K!Qm<`ll@>f`woprME401YGeKcvwn$9yylMUZ;Li%1W=KKq<`p z8J^El+A4HO8f9OE1k8Yzmmwjyas3w5`2btn&|d6(^Q&n@&q}(bU>VAck`1*E0qHQ1 zc1k|;7b}7?jxk=3U`EQV(GF^pVU0&iOhv!E%+ssSn05XRdVf!Uy`Iz?sNIkBz8j(c zRz^ud@I(|Y1FkKG&-+lq9pE|7c?jA*M2%mErq4ms=fLG5YP^*i|47Np==sx}=b+;* zO55d?Qa}mC&@Ko5`mhzsU#Rsn&KuC~IIXk@h%W%~1rOpbAnu^G-lwH@0(m8)5yLu{ zH0KGR@6ft{x8f+cJwq?>JpN1cHE%hOwZZ8%s9|_xDuU+}k+>LK8qXgy&}M>XJ-$$A z1n*x6&hNo_-@~0A&QL^3IY?UzzOO63ix`J4b-Gi^2|V}14+r1{!S|R_<834-4eKZ$ zi2c#}BPeMq^My0$1K95b-aU-f5X8=6q3lE!iyU=FjvfL6+(HY7lPiK;>#&X3B~)`o zlfx!QEIE?kDL-wNPw(Q&Pd2H)po|vAb`~|+?X^HXwJD>G>#0o_AXwC>i8lRNY4$pl zUTS4io4ru|C#Zf1&3}kmtTruZT8CNXAoB!TaUN|oAM9SIw+fXq6xQSLW?bZ^qq%4*VS&_bzDk2D<4WyxxV@I6@uPGn2cX)^O|6NH5X@ zoO@zL_M>(BL(2i!i6eNQXFO@9A_Fphy@nZ3si*7+=kjz1czPf8ZBKo>!qeq&UM2KS zk-9_kEqn!To8e7KMuH)R=b_3&U6J7agr|YoZTPp-+INudaojVE8=t4G7BL?o68;t= z{iTcO5NXq*O%i~ z@a|RENq1j{uD?vdo7-r@e0ZQ9o{-jV6e?h&&!8o~hYy%>^`Pvftv=OqUbkY9hD{!{ zMU=Nl%gcxRh4Xhq%iUNb?^@T>68G?=?+?uDKEU2M*lm`)YxX{FEp71?ZLuBuTC9wC z885>>b@Vy))XME!H`AByLDO%dA3ccW^%?z3G4n0O^bxD!?T@MPYB2cN>mycR@1?PV zD<92Nfa`$<8o`rh(Nga*+x$It|9Uui1OAU#{2P(U&7|4NSa=Awz-;Gfb3L}+4bI=p zjn1p^*%R>D^YGcz=C|mLThREwgT4zG#fxTG#3=kN=Ur&Al2-bjk%~bsQ*Z<6Z>~i? zABT!hLg6J)_ifx~P&9`=vW_{mq40{>gkrIb!lD*iZY*3r4<4A0+`ItaEJh>yXb+K5 z3$Bs3zi261VkO)w`(S2JpF&(cZanT<>U|IO{R92;13X1sf;N61x1Es|D?ce^CpukL zs%JnE`d(5Tpj{4;>L4i&m^4z&V|HT!T45o*$4h7=Y)t6x!*1nU2ZZ0jUylDS?mgn) z$Nvz{iGudu!tFP}?X$4>uYu!xVewyud|rjMKMQOBI@L(a(MrOnvGnGC<_4p&-W;^~ zaWLFZ>fMyP8|}Rt8c4a3W*OfpTaM$o2xZx31+|FKcDoJR;&$5T_qaRI)OVt>?;<>x z_`7j35=cPXwLnFm8Ayu`;_eXm?l$LHa=uQ^XUO>naxNg}3*=l#&S#)O2-xaqhQ2gG zF%IahW?Jbul-VgQB(S-999u)I{^e#SoIH21gokqoG=qR`wrS|9!D&jPnog?q7f}cR%8e%qttLi~G?E zkJI~{z*$lV&O0@~lpy&xwL*Ui`4AYwH3CQ0TYrHZ>?YL#QoT+oPg9E)YT=M_Eh!H( z7Zn87VM@O>C#8G=o0m5z6xOd%_dW6pb+@6%GO$GIX@&9hz1PySU(ZvXdswgh2N}oF z@4kc${TgE<_I}`;fz)CblVhFL1-~n95N-%=ByJRLJZYxmUy8fdc>svt0CBztu@HzG z6k-T>7jWk-?tF#rKzemlwNuO5;+3_9vVNefEtIu|vbIpx7RuT}SzElawouj)AJ z1F-~%`+>Lz?n|ey%%Cr<(>`-G5Z427JrLIeaXk>%193eNKL#RCnQ&K7musCnfVu*x z_W|{J_+=MRzX9qu*edDNB!j21jAg)c^S`P2W}pUY{zo8g0OB)1Txvbw{1)xB7wxp$ zBq2HT;cd}MjGmC|4BD=cTGlIWg3rU`{+8TNl6wicZzlI1`j@XvKDq1R%=ygNy6wjJ z3thI~c^ZA1fh^bK#w)G<43sTE`5RDH0O7E8fL=>_s~kp0F6|D2!(MW~iRL@Od0&Bp zaNb&SyPP)<-Eo5Zwvl5VGZkmk!%sv{oJ-F)$ysWq(8r#SG+Y4u+0G;MMbFX~JxO2m zBK&kKebGYtqQ~fqmeCi@r!RU6+-K4ra$b*46kB5^?*_>AH+ueB&p+syw-<=tuIG<* z?nY)Kn#|j1y=6L+@*F*>=*xv>jq{%QoW5;8a(w_gM=|@cUpe}1^ye~q{pHRpq?UOW zN&OY6zasTkNsaBY35`ApY~~>Y^J%MvSV_DIPFXTW{gT{k$-Ru+?~waAxsQ{JH}1T0 zm?JroCynqwC^Rs#DIV9R{No8)*C*n7z#ZM1_NyU4LwbL;~f z8Ed{mj>Y6yLXMZo@k*Pzd`6Bn#uo0wk^dz~>6 zGsqV0WnoQPSW#B1Mfrcqy8quQt1|%L@4clKN(CHWly3?$g3BB(QOrb#8_~co3@r)s zr~LtD3I0G#>}X+|n>xnCh2XMZq~*%YoVYR9)!GT@SR1yuI5*L;Dn%@J1%%pGXeoA| z=e)PoWNDth_rC9Y&UwC{=RD`jUGMY#pdM@h&7cL8#P4l*Vn$m;7k%m}l0T(|(*@@= z$#0EI>O7qK{Stx|8zfZ)FTVx@zi;s~>%skK-{AhZX5`!r`mYr0@L--f;Dt(zis}Z< z*Je02On-*x&wx4DYvHm;?;nxgu(A5EXfJZAA_3HQkk=vayaryUU4LdHU9NV6!}lzF zN8uVeVU>?s^GGYN@eMVOsL6gIPujKD5?&tuUASD}Tl>Ws9lTnM?}CFtS8y!26`7V; zPhR!8r^BM8c4NT&-H&53!C~zl0g<&n?tZrz>?DZ&p=W*n2-xFRn5Bj5fb}%S6K35> z^>KXIZdAAfSDTHeqL15)Yb6%7FPkftUxqIq;Pgot-j>f>8)F~JZWhmfSrj=cf*ch+ z-j36^8@&Wpv0^BwK1v?3zIRc=`xSH?@g$Ao*jTqW<7B`%TO{_t+h4AyzMRGq*DJl4 zq;6y7Mk#R3*i)G;on#3;wBiHSP-aJc@TR5SE#YSPEHdJ^M#SJFeAWQ@S<{5FYH!?t zza2bJ6`ilqKfYhsFVezuk_*nq9?Jvd(++Feguhp^gCMAJUUK5$Iu^LatVQG4)8zS- zo_2?tcIs)L(9`bH(>|l8-L9wIrS_0&c%?WQppP!b2!9VMo7qtdj+a88#l8_yn7hW| z*!z8i>_gAGL2$EJu+I!7_EEwz_J=nZA;X(jB;2W48DuC2X5-oE{uY z8aGL+Q?)uvi!;>|7Bj|w$4K)Sh}A?^@lDh>t}%<%9eyc%!G2nE)Kzu?R-sRaSVony zEDCn!ci{esxN{!4=Q)C?zeld7*R?DY72J$EBi?O>#qZs(!SA8;WEyJ@N{*79)sgHf z&LMf#JE1+1Vd;T$FN&PAtKF)g-TIZxT9wdjzsHBi&3M_u#!58$Mc1|%QKYwLo9~;E zEGV~@1?sy~UH5r9f81iM8@YycOyPsBVI4~+tf4JiO-6UIfF=CQ5}Lo9<}auDdP1#! z-lA*a{R-TAWq;yKvfynD!G8HWEkaj!y!Y=Eaij}AH)e-rX zps|fSI$2P(JEy|=pmwfWYEjxFHk~PNwG0Ne72i-xpXxkWuFP!M)WW7VVG=d&(Aqw_ z@tkWL3Om^JA>8Za1G?0+EL$Z9vX&fonrYolx=+i3zXGSXVR78Gn_Nzq2|ei=`)|*> z7qj&P@Nv?nk+k2#13~+OM91X9qR7#+%@wXI>G&FP`s3vFq!mFWJlMxKh8JpsO$S~d zB#T3A=CJE)uH)FvNt_N%3%fZbS0`qj;CNVvb#vxLtLbHMJuBP`B45#_)()*6q`}r^ zsrf23*Q$9gy5oe5F&EVELbVl!cRq}MR+}XnSZxglufX{zaZ~1?Erl#-~5z~go zHM_PXt(wCl%*L@Ij@ikCmNE{+`5p~oIDATcdyl5ClvxQ2jyzoG6--k5ky)EbcEQu| zh%v|fSuOXFrM1M`pC?Zi8S`FaxtPPKr{NL*hyevZa z1~yyp$8=}DyDN-OSMg$=$~SjszcGjMl39dSdGR-l9^Ujh&OYtsF-Fxe$tdY+{83Y3 zJ^tsj(~+@!j7I)Q&>F^L*|nk(r_~i_|oObeH12=uK~0Pmec+N1M3JA@9Xy;tq0D^#D#o|O?gfbv%PnRfkOr_XN~HNI*7@+}#c_i?jF zl+-I*Z&pr*{iLk=*$VYBvpT{a_oKc9gNraYE^-hyEqF?0$Zgv0be8x9K*53s8vikV#nOtv1 zaPCujvj;bx!MT`k_z&GZjeGCX(l~c;iG1-27;R1-=(J46kW5CmJjiL;ly|ac@HVn{ zKjxht15b!ke!|+etLdk{?*Km|uO~%!&3N2qWOfiHhe4;7y3|uN2UA3IoaB@1>WDmd z_~q(!x6H!V=`-s2u5EN=3j4iGQkimDK6~Zr#7I8(3Y{!O>@FJ=XGF)kicPe3w>~v8 z@W=$R*yanQP(l{;INnBR>6vfA%78b+X&PU#PEJZqZ zC9Gt)$oM&Q<^KJYzUo1(gbuGG-FhX%^K7B}jj{_(W6!h1c6{0;a{X;(zTzNH`fHKv z3klb;?0X5%SaEViZ=X$!A@bNUeorZv!ytRBfmt!}X$#G38>|B$9^u-h!g1I#QvCrSO8Xt3-9oKja6D} zUDt#AKt0&#*#qDqpEsl7VbGxOXrvEKU?(kYPUER+JT*<@bGp(0HKlS)mjMl#| zmfp&;#-dM8mUWm_y=J_LPL_4qSoOOsD}LptSA98;ljoG_QSxr9?N*CC zd*pE1Z|?TOfEI#G1aQNtLfNOo+8%GU&Z=rMU%IREM$zVGwrbAxl@LqE9uQD zC0AQz{4ngJ{i@KLG`0;b`Vvb#Bab|g-2j#VYm&0Bq4o~f@CtXjuAymbUCrZV*8j*< z56~Pw1w7>QW?J6>8u^Fad|V6OJ2}$IqhX`&^V#d*i0}V4F6-v+PJ%v~Y5$!O?Vu6u zppo}ERvR;9{WR?o4iDmRKP$bcpDw_D2?%+t0UN<)&;UX%Pl4Tl?WOpmVks$pjF=`O z&qnfU(n@Y=eJria()#f}n~1qy^tlVzt%b9>^e>TFH9eX}cczG9W|2xfc@S6fKIVFF zOu_#Q<`?w|p=J66-|JIf9(}@I?Y~g*CWl$@FSY-&_Dh8y$}~R8%f#$w-rt|&A99O{ zo!fWQiUQd=+b3~6a_RjQ-1M3-2{}BHVv+e;uB)^hHWN|AkQT0}d5o?{w7Alp@avI} zY2szJvc4ipK1D@Fmo|B)@=a~i)i&9?Q_*k%-v3NI+b^aW=g*LGvRB@yhqpI;vyx1m z8}&zPjJ(75%%tb@QFRMFzlom4nHihV;a4Jkj!%!cvr|M<;OSphxIg1UMXZyx8a&+Sc-<%WiyGQNRQtqQjT%?K=iNnHMcTCysl4OiMy1N+e7xfX z5p{u7+B8b8mfU1Pwcoj(&ULHyJ=^xFb@9zRMCOzhX+N`b+b8;%-0;ti9q!!YsZRG6 zxHwz%4=JLvwC>WeZHF>jTP(%D4gTf2;E-cP-rKpZ#C5?gJyQmh>$|HcQRj)2IMAba z`?k@~zfBRjdnnh3dbS%WcSPxqI>swVxTH7(!X<;6h-b`Q`+`WRf$nZa)|52)vB6F)l0*|)S?yn=rwUS zttv>O7s7Um;p2!nciEreG9zZ|&t$BAjTqvXytUYeM5kqyIcZ)jjE0RKY9#AL($Zpe z4}YsClOb`aXe(zoRuUQ$$tZIvld>bo<5jV^tR$+E;8zPAN-kr^v&eX< zp1{2%u6>DF$Mfrmd^!Tglk8w+Y_=U8a1JNLMd`K8a4VU>hdid>(?>g&~IQa&|5G+ z)jKeE>Rp(7^%2aY`ZDHKi&$1&s~P5_7W1Ih*?JOlfb|sSAZrlj)7E6nsn%i4Bi2RC z%hnZozSu5i*bZYx?I>nuyC7yEy9j1+y98!Q`%cWVHZz4?!LEy0&#s4A-)@MRZ1=?M zZTH4}-0q8+Vw1bw-yVWF)Sia6CNIVU~C9#k|j{ zf?3O{g;~d`gZYs25az>91I(sQQ_SX0bIeXoXUrZBb#Y#GW@FBG-W28LaC2hjck^T3 z?vk2Y&8?34po<3F1}-{xTe#gYd$`1P`?>uw2fKqYhq%vRzUaP)`I0*x^EG!a<~(;E z=6u(r|Bm|(=292UxbM3wF+X%a#QfCVEtY%4JtittK2#p_kx+Nco}pftPlnKNsDFsO zLgPYjVZI$&g!x|RJU?xZ3#9SR+jkzJZ0pCxepJ09;rFTWs zqG@6!BqUI_giHyUL?>iT$cmgTAsg+;ao&@54!Fmq zT}We}g!51*M!NDvJlTX#U+#YxKXg{grpKuysW*__O_oZ5+ddiS{Ac=jVKz&udyu%; zf6MohJ$k348tl*iuQJl)=Nv+n zFYB^03p>@SBJFVBW(}2g)+ltm2@b$k*a^4Ah^0rm`_o3m;>5~fJufZ)YouLFAJ3uf zx!bg3&Tr?^_AYJjnzr8_!w+lUn^wuDF9g>Uq=RkvDsCe?ZD@nP!Cg*T^YQB$^S4K$ z&%cm%HE`P~W$ZbU-R(#FRQ&h2A^O2TBJHPt5-#)y>E)%LrYF}8*XjNKPs=8+8}ak_ zk^Wl%yEP-bpa_eCwHuArtnYhM36hcqNZa`blgX#2vUt(^?-LfsiWF3#e=uV3U5 z=@Nclx_Gu753>;ae~u3NxE#~xCA*%-{c8z!8*F5^2lfa!E>%36Fz#x}&b^|Gf%}1H z``3T52TMbHBdkWht7Q~KJXUcHp;tZkS?ry%I~hpV^H2N0UTu&;K)kefV|Fa8IwgZ) zmUT#GsZ(i7;C~V&qiq&LFUf8-go3n~y$erRIOaZY9;O z<3)59PlNmXb?N!;|0}i=V!aW^i#LiiyUUP&3jJpR_q$Z*3Dz8}E1jw`*4vv6myztJ z28N=nC5y6t{e$%+aN5%@RF(D0U@&_y_BvtqI-zf3xO37b{l_pSy?o@=nlv}E=E0^M z*`4C-At;NzhWpJp(pxMQLVKlxeOjJ&%pRmMuzzqa$JVya7G&z~&L*u*>?s^;bP@oN;b&3!BFQTP&4*>jY$2S^Hg(4yDR!OWTC zsLNI9Vy*fw&pUsar|36boI%Y06}YeU!TxW={zPip>#4(Y+zXx#h_HSt;trB(?(0&` zIw!4y_G&`=FM}cQE`8dj-ZSE?V2l){%wWF{U*O+8E}QFA(nn9uGvrsCIcOwoiMiXa zVXp;jcQTkf1`xjx;kgIcC&&Xr9i?cf1lJR#gS!s9x0JFQv!-a{xpi?XqPv>JSx$Jy zh`mnAnLVSohVCSJ?H{Cz(m(LUc%-Z8}8DbvI3>zy4k-QJV-OK^^tfqQK=X~PNr3=cDR z6qf<^hm7Oz7{BM)BR!9O78{xM=Rm78^Q9T%Cfu92gHu|@!S}EhrovOO45q!q? za8Gk>!mKms*xAr{Y@Z%hlB7W&Xc)6qf%x^`x;v#+{TT9LJY8cO_QXlW{wN*BFJ3O? zBL5fS$!5wdK2BlA8*{OKNM_UbW*eLJ#cVsLGz^!NhR6+(JK2fYiPA~`BKx5Y9F8*x zdyv&t#={`meIVEA!(8XblavCSQw`9ESx>#CTwPSw8`)Yc<86+>sZ$&C1lV8?RX$~r zTXEl*2s4p$-5CDgh1EHzm!XsFX3XriM#^lDRx&`Hq%1k40oM)GR_SDokxmYCZ-~04 zzgEA=IO{7Jr|UEC)kjCi(a}uOL=NZ{^YgBet!&Z(8gNhP01cc6Wik8;JK`M1HhcuT z(_#GIg!%AaiF3%BZ{ARlz8)Xbc3S#!ZupUtEFCzLSm49BY-sP0hR$R-%G~smwBnxI z%6dbFS##um>wwf(Q=}Qs@!HtCr5B{yV_7#m&D@Yx<~rGkw^df@6KO}C2y?(d(&$3} zFDEsvA@Zbkza(QPTTLWcmysmSPLoONNz&}0rl$RAmGI;znfISG?pAj%{F5e*uETX+ z_HyTmXZ%{o-S#3WW8E#~tX6Wjb&vG4-jT<2Z)tChX53AX&h(3p)^qg77v(X|UK?67 zu#t6PnFRIWRp?;#lF?Rgc>#Os|DVdLMqlk?Wu_jt$bzm-_Ax*l$RCw>x$s_md-@ zd;8Gy^tToAsC$^}mn4Pt=7a7x$U|@+B`NL%sb%~k3b$|MX!KnMihvxFa$0{ECr6}=b z&Ui1vw{b3-I6Thx;u_ms6lYn?jue({u*OgGKc)Yd^wQ;J@@7qaFqBh`3+IqdhEQYf z=Z$6kU#`naRev7AUVkIuF6gLmma+Jg$sN*r8 z$SPS3tHM0z;aT;_&{6anW4mwjgnK*d|5XP2+ZYLXC6`AAsd}C5yZ^spoBIDhh*^8O zJl8bilXbKAEXsR+V%D}DyfeD~>|ea|Gs}|x=KMyRGZoHJ7~<0z^RwcNU~Od9O0zX< zCLeR1{+Yvdvj3dgta~@JzJgd5-Dr)xGDLY2Wc&5oD>sFS|W5?P@6gye)WE z=0AH%Z|9=UX8&)VC8d8}bmMa%|JlyJdrsp&%VBO~A06QM&rf*1;rPU#Z5Vy~&mny~ z{d0utWdCf=oXa1LbHh2hIoI~irB|nIVm~$2?5Q{xoyNK9$1yzFoDF;DzouQ|XR%Yv z*{gqcYR)@7uAOsUJ6AO4kH($y&<_k#41af?r)TlJIDYOH?C<_=&uz}Uj5}vU>CcvI z{~RgZ`IGIR^Y}Wr!8Y~P^C(wA>gJsnv)3M)wuyc^)%4YWTMlzhX3D|)1g2k^a}aYL zW6ol{eq{OzXD8m-6K5{wT*b5-&oerhy=<_LHTq%yX!e?BZ)whY*yo!z@zO``2cP)Y z#%Am+yAjsY%XG2WzQgxpeH{x|h&VSw8cq{c)Q5GYdC!)2UxWMlGGq_d2}RM>RJWBX z>YeqE@cPPBlaGmS{B>6LAeC54fxSc(jFT7J5W8N54XiU(8dwwTGH|Ar8r{LT;=K?j zs|+wUdi3_5jN_rKiQC0V!G9R%PN|WcjQgR)o6h{hd}Q{&?t_e*Y&@6UA-zKPv-Z!y znmrTgWnzuqOqv;Y#!;%>Qd&4)a84BK53`(4q_5qSb$2t)ADT-Gvlh4W(k^XqH|?dV zli9x;(mZ=0`}9`MPqb08O!mf+i62X2fM@&H&1IyQ9{tOl-8lKF=PjIzj%F`F80S{z z!=tRfo{~bW%d*>#;x?9W7tuu`Yq$GYKLF(#YtBWSFX^u{3HyT-;tjr<>=kMgr-hS? zJ-bOSkvX`fj6zQ<>^g+utizmvSe$iOuShSmKh*`;Gai&tjN{ZuZ|Q-1JIyn6>s8*( zEhN>wGe&dH=#loPnJc|{)XaTm-ZgWaIa6i6;`}4k874Vc!={>fI`j@hbQop|Sm%o*m4#*9nv+=n**%Q!W8 z_;Xyk@#@VxBk3z2Qct5NGv-Ylv2Ak?IY0HzEX`Oa9OHkBmv_9LE@yD8$EO)+vsOlbgim$*qQ|%6?eMmgjqH-L z34hQgui$3d>J_OF*}xn%(krKT{|s^Oqd)Yqc%H|Z(O|c?45nWdb2dw{aBC?SeHcB~ z_uTHrt`@E=)y(rVbB4v)P)leB z0+EY3p#(Djvv3)|EA3z|av7Kmya_2q)H2R<;^4lg2>k6sJ9QG3bEb=onXx|0~c62zNQJ$fZHpZJ-ZjB8@9}T`mhrarXk) z8*$|Cau@tfT}NW)h74fBrr=o>NZ+gXeYj_Z>M<_0As@J0FYZ>Ku(M%L+(y2v33C+x zFf#6!DdXi8Kwg(C!&v;$-KCny~afhr|e-2tbz0NyJUTW`_huwzFqy6cF64Gz3bgF&*X8e)Xd@%YO6T|Z-%$3}%ABygAut|><%=RirUm0Z1- zJZ8yQHJ5Y9Dl$iPkTU9h4E!4bGj?Ceki zYCua!fw3?T*1#S(!3n7id7v!RgAOnPWUU)v73eYCd)e53-qC^E|h}j;8plUB-;Z( z-^(6?d~gpu44vT_mm25~D?AG?!&3MT&{t0Ml@opCL|-}4 zS5EYmlYDc2B$6u$m=kj~fbsAvToJkXCb$DA)6JCW<|pArcmvkLm++fNZpxaQ`&(|x zn!73VhiUKud#Th>n(MG_P&MozJ>O_g?a22`oJyw;FL(7Fi@U6lqV16$={_<>wgK%EtR`hpk4k!sVp%wIlaWEgy^{smWUFRii-n>u_NH=d67y#5aFLlXF zUGh@zd`xrsZUOpjKKgAw`fWb?Z9dvL-`jw`@_hqmMUoQWHng83fSw8z2HLOyZCHRdEI_{~@ICw~a$7ZM4sXH- zK)<_JkbYM%8G677m;p;*r^xN(dpr5wP8;4%8{SU6Z~qLw1?pa?7PN-` z@Dh+mp$~!b6{38FLy!;9Z4uhC$P4f~tcEY(7m=a~a0^h^q7T9<*bT>7ifEVvD`6M> zEK*#-&2T5wfwu50ybRR6ICU@nJ^ac4f@XoDPz{>H<1iZLz)IK!Ka1RK5t^lN6nzT!A z7rB%EdS`8D13!zDnE>>=yXbd!(eLh}-`!OoI>8W_3d>=KNZC3-x$Z6u=<;rKc{jQ& zX92n_cNd_`a_wOdOoI2|BawR=!x}gQ7evZuh9XcEnn52J1)l)rsepS0`alKxUWL#3 z2Oi2*k#bd}Toox-MaoriF>Ho|a9-rzL?{H6p$YVYkuVFE!wxtKS4Ar2fRa!XT0uV; z2lHVa?1hse_o37K=%4q^gjD|Tn0{NC`LZ(eWo72e%9CLcY!a!0UlshS;8z8|D)?2I z2S2goyayfz+NLUPQ*|1=3tQkj_(P;xCScB~))&UWT%cc8qhD5|Usk7IR?iJ(fPAWx zPj&LCj()0>NA)z3`*T7ms0FQowC^YF8X@Q?@<0UWa}Urj9-v=5KtFn5G|U0o_JLjS zvq((^gsVxonuM#_6`p}9@HWtcS0@r7`RXN`dy@V0^A1o!lUp6ya2BNeX36>*dy|Ieb@^pg`*ZA z&%WJYC@^!#82TATeTTgWw9PQW4X15}=Z6YF z-x*Hd8BX6B&O9~zeUTBg>xjlc+Ru#_8Ce_J0J>-jJwK~-n~^rcbs zhf!aNjHWK5i8Gq8V_Jy3kPE2O3-7`f_zo!3*o<&H+y~@6mUbWep2&-ZpfWUp9xwvv zgD=ttU!p1wCB6BGu@G@%i6hv7ij36yQZr|>=eDKe4tCX(L7C9o9^!3B{?nSnY? zss!|pN%W;jLxH|DiM}*x6C8kZB9nkf;vE1UZLEtJP(xR74n#w9cYJ{w98D=oJk%t zX^WXhfP7x1ue`cUWEMJ}g^p)cfu=y6W|7XU*Wh=N*QnEL)c3Uy;S9%N^q<+2_+Ay# zpF=t4oDlD5Z*Cs!vQQ5?z+jjR=y>iXH~{BFUMJq`gnK<1QeZNq!X7v$GA{$5|9Q0C z8?@aUMPLT}EHXa_lmT=y|1ew>d6V(~Cgpqc1vts;C#8V8ETAq67K^;a^;@-I9DEI@ zMHWUN8Qz8OfWG$j!_XPf-6Hz)q6s4JWCQf@&Lxq>$cu}^J0kB=?;Wa&7cpEe(HQc zpYOMZw?vlH*OsH(<>>B%u`p9)MOoM`vXcI`lKQNqzpbRdt)w2SsK+Ymv5I)BNN06s zK*y`;539*%HTkR_1=MTx3fKw9IBpZj3zeV+3;@Q^npD^gr$p8!LP4kwq_s8$PKd0# z9T>yw8bNn>7N!CEU$+HlgLSmQhZ*5Er~r>ZS0L<%FT+xi_2_l|dXWwE$qkfo17+Mm z88=YIjr4(ygxN@+{m22v$47TU9cT+r!302OA8mlI;k3x62;>Ly+(aMP)DZ^3B$1Ev z0C|5*nwy8hbXWpg;SgL9*^(KGKvkg5Tl&CwAl#Ona7turW+)8}pbw0P1wcAmN#_%R zZoGbELvMHqR>3}zPl@;GNSGzEJs(iU?S$D*KlluNe^v;3z%n>1vLgY|;f}lDL3k9N zfaM~eqqooRfJV?B$a`lK=mq4llRS3*1Zg~a%?XT~UG%eEly%o-k=@y$KhTGF(}%xE zhCLitHimg3U($YGQkE}i^SyK6XOXW4z!>;gWM3yZBJwqT;cKqsNzHJJ>iX5aY2TAX{w!ru}G)&}s3uyE2&x!niE`Fe`exO`O>Hy)6 z{3h~a2*~4THCP0c_os4D9}bHgD*)3)ekR|a--mBRj!zQ#1wH+;5a^pH(Bld8a{|5m z`V>%ylj!GUVYmk<+eylKvNQCD=V6-2Z`mOkIzS4HfXOf)Xpi4^0Chg4AuCXpQ?HAh zCf(Dddzy4llkREKJx#i&N%u7Ao_-Tn!lyuaPouxnmqgAaz%5W5?u7^8QRohX;01UE z-hmHc7yJOfi<}L?%|P6C~3HAWx zyn2D}m5KsmKCL7$p3@paFQEUX(Pn9+m$n!9UK?JcR>Jq6$ldS|bcJVO4)9$ias>Dm zAI{a4;(J~c--e>v!8lk9d|Qq>2p2^0ghO$ru5@J}98W)$o(OzzjOIIBIJH+6-?(Bu z2+zYtz>RN3P&RIMN8r0v>{G(`=fG#8+(JOUZe3^zyqG0en9X zZ=$FW-?bB}0|Vg$Fy9qZ6=sX#KX6sFFz^jS2}?v};9FHPq>9Rz3HUamjC_|&B6%cI z_e=xefT+xTUrc7ci6`^Ruvb);k40r&FDhFjm;uPysay7Dfd5VT;Vn@)GD08NBZ~82 zm2m)Unf8>N#vV^j*?c1%1;{ke-u?938+JX!SEVvf$v4#MjyB>H;f2ONSkqBsXt1<^~vB2W?PK`WrX1&6_8m=7yp8ytX>qHY(+ z3I(AY)P@$&1BSqOmQ;=p z6)OPrg<>OsIu!d!RB^uRtoTh(7%Bk$ulQro8=i$p@CMKhoQtaBv_Wz5D$X|yaW<+- z(3YHwsuE8CeYOPQN_-8MMBQ;KRDrfYd*4AiccAM#eil_S0q%f@;c+0JlJCP;qDm6zX@srbt}JHRE1K2 zT!FGxr0f-`S4H~py|mH29pEETmAZ<$kMVgQY2WvSsLFQ%x~oF?DztsoJAuAlm3~%r zKhR&QUKCX=3b~;eRD`1WMAanUnmt6-vf*b@wb6B*GVlz%1hjcw#!%e` zFab!v9{sCcN1$x=Hi~)(Jv>AkKE(K|{|FH0VaoULc=$zBgYwW0-hln09?1wbU=S>W zNnI*Wd&A9Daf{QIF+>Qcw$8Lw|S)-h>a~EBH-Rs}SUad*ET{49~zcco(+7ckqX( z)|sF%RDq_@8=i;P-~;#^eu6YnZE`{>piSFs64jRZv~7Lp1k9yvr@~^`42lR_~_IJM!{@Y0gSaygzL;0?wkbl;m(YK&Rt+AOot_~6%N4#QC%`a z5vU5ypbw0P1+X6W!6{K)3D=cyT?yBfa9s)4brj5o6|fVIiRu=HBq$FJfNtP?964fINNl+ddKo=Ma(_sm0g+p*bRL@*MxSsW) z0}KZ4n>}gIp6Iye0XQeBR|Y5n^#5Khfd1c${@;uK-)j}n|9jE@dkc_e@6te;y}JQ< z_oi)o)3&{7+ulb-^>HCDlmo)`=>#KTCeXfpw!vYb4?Lb3ia=Fp2K`_h%!hTb7tV|7 zn+S!VG9&|e_ZKkC$vvi55Ny@2}nBWypy z_S*qR;i{kv@$oFY<`E&|U#;2zO`8>_NXNUvbTZTLcV}SAx*$L?G znXFI{%0Wl?1i1eVEe@1tXmgF6i8zP zdL1zY_KA9~JiH}pBzcUaZX>Dl^Y4lpl?`e^YxqLcXzsD2y8}8MLtV%GDe494F;)ZR z97`L$m=g-aUN|Od9Dd_wi+YLs<4bRf8eaxp0Pd~h(?m_^4YcQkbD}2FhbB^wNfm(d zPa?g^q&0bls40bDv#6C@qGqD^nRQ{3s8_4Q zb1((AiJC<}oV8xmYoz-c>CV0fDBtW;qUPKV=wS|ha_-&m0JMPtFdfc_dc8KFqj~wD z9Sj4?Id2(k1#~ozwB8V)@4t}*==lxey|DxcGoSj-e_zy__`Qk#7tr6|vH-omMf<)* z`@V(F-+BVj*;~~2t@q$l_y*33T9^R0!M)H3y2EfF?84Qe-p2jy6|fVIiQ*_jEy@L@ zfwC-W1D}g}2YtVjDrzz9v-ks1@3s}iS*2Q104Vp82G9kD!gyE!>tP?9619|cm*#+y zPy?vj(mp`jES(FKVJZ4tdQ#Lf(q6U!j*EKlAwYibYd9?`RY4Y@T&cT7y-%Ni|AMIH z)Ny$)Q6DhoK3FVjMPv9v)JpWS@(5fOwJJN%{;R43`LF5=V_-Ir|Ek}BKDU~5R@3)a z(|1=dhaGSb&Wl<@9oEn{)--`mK)5xtfIQc%1H!I32fE$OW#+*-n|#eZEQ zP>yw#pe2ljnXm}fz;;m|mW9RedyMt8(|YQcQhM9jN0rbo43deA*BO0PXPU zRyZYUJN4O4|Jyzqeh~E;@@GAP`tIlj)Zue<`#J6R`9V=TnFn@02PZ}CqTIXY1Mzl~ z?{50SZo=&*&o7Dt<=nGK)R*Y=OUCG4^s{%fsIQ6wu8`g>X<^fR$hKl;O5KzW%>2Ke@4dit&6HJ78upB7ccZB<{HM{{QL>;26hX%n} zQQwo#_mt!Ny`m1chaoTyX2Ee$KjeVQ&>3+1;k>9L#h@vSfTchm{*n6pSQ9z`^UjYe zU>h6}bucRk^El&O<>bGpr3|@l6 zqE0n|O`=Xy2F@qd8T#KD@;-A~)LGj0>^f2BZUfrk+(A*lzar{O=t$)U@**uFGQ=%&>XtMPSN^q*Z{jkTg9OZ zybI?<^Pg+lCZ7GZXwLdH{}H5}H(@1^mUBt8%QyDBh%Qhw?)us1MJ=1bACC z-yW^QV_-gf2>alS=twrW3kV+>4Wt|SO>{IX6oUugX_x|sL?`5i%J4G$E}HjXb%vXO z@@1ed83>=DF?56{VHT{0uS93e15dywq7xJ0F<1sCMQ6Gn&{d}4FcUro;$%t_ow*Q{ zhoL~enTeBmI~*0Ag|cU1?27Ph`=b;ku2HjIvUKXvHl>#&N=vcsua=x7)gOAeUXqk( z`0ztXl0*1a0nT)VSXwM`CB#+a23O~AUG2E5O>C1&C`cuiMznp~9w{=lefyq$WMqe4 zy?e^gPJP?9mv;P$L=S1{nN2*iL9Zu!_LaJQu%t$cF)Mp%mGMkY!6{v$XHqicsAnc% zW|Yj5RkBl$T#{SzNM1>j0#Z;4dGC`e$wU|zOx+wLQ&U@tNpUGDrR1(k6)R;gzP|XZ z;vh{b9FYsAjaB9JR1#{iDG5@Ii1M|1YUo5|!zgW^y*bMVvDBzw{2EzG^ zUf+CUyYq-2FRcltU{I4RDP zPCuu=Gr)Pu8R!gh20KHXXPlwVv(7MQxHH0e&Kc=E?~HOrJ7b)uofn+3&WrrtmzFHf zy$(+~oGMN=v7Gyzn&NujBp-EN;k!u_oY$P!B+;4U%#}>eJm)RKFLjnmPG_yNmT!3d z#yKE2JKs5ny_ee$eJNG-ObVH5rbt;+fu6L?B)yT7k z^MF&6TuIHOMM|$YGfkd+Q~hh?`i8T>dCTGZ>dAYpbKLpGIpO^3oOFJ3PC2KYGtOD( zob$VL-izxhGM&~1Elk>5&+1Wxl|4nWo9kN1p$O*ZjP$VQ0CshL`ETbH0;o)SLfD zMzayg?;dwA(W^~Aejt()@x8BbSj|n#jR|*#jCx*_2_J%fw7KJ8<28LROYKO{% zchd~|x~dMVZEA^{too_4Dz6I5DcLU@Wr2)mMCs^>DEDAl!Mwc4lSE46 zZrPKgd!pQNWi~#@p2lN71EZ_>wg@F7d7fhISPUg8$h`>NE;=`G)pkAMo^I|PcD?A> zbna!jrzojP8YW&W4IOP2HKAE?c($K%Zrrlt#@){gsd$QHdWLIyWqd4XZ!9=YZKs|@ z7@tiT13r^a$HR3=P<&&k5`U^ z>3nQwocVa=*p$xQVwUUYm4l7nwe~}2tX-J-mA;m~Y0-JkLRxgKvxQO~VxG$C{J{*B zjrkxdNsQ8LlAoBCI;YMNQ|a~BWYYI~sM@FY@xM`u|LoB*DezgR*6B_7i~;PpyH@k{ zB3$~C*8G?p_>A?QXVQN;WMHKoxTolW#Hb3`aaX13Kbl|dQLR)fBM0vFaAysoYHFmw zwH!}TStV=ixEmT$$HY;`Vjuo1G`-IbvDFUq(c$admy_diKJ04JrNhWov(^6V+!%q1 z^}k;N*~;}m!VOfZxN(P7U1A?uj!zeu>$%&if%(WRT-Xz-F`lcXDyoVyitCDy;<;&6 z$jk(oO11G^l(a);{Hpq~YgHN9Mh?oMN+6#h|3ZAK#zW=8?I5E(tCYY+(@Vc_56Aq> z^J(TV#oEF6+{*9N@|!i!OE>+Zeo?yXm-I5evm;f1z_+ul z)azt2Gv&uJLvPWa$ZUSg=5u*n@1ox<(1-L%S*|bZ%knY5Ws@wMttM6rb*t6V>Zc0u zD>ft5ebxkPvZ}|-yHqu>c3bCF59^ZcstI-@CzpEF$?fFU?cHPUG2J12HFCG^80i@q zuV0N!jl5&l$IMXX4kF$i#B$6X#P;qWA@2^7;N3y8dUud)-W?>#yMyE>W}S|`X< z)+2M|W0@>lZD3hr_@EY&icdpQ+;BG?1pN)bBj}6=VArX zQkQdHa$eHSoC(eh-P~F1ET+7<-Q2nZv)XIAqdUi)qdU8=yYqAxccHsbcXJoH@9OUE zGIyo!?f&5Yp!W#;kwm$Bn_3@U?ztOX0~JBh54$b!AOq^8Dhx?%C!%jPhv&{1$yq=7!$sv}S_Ew;lmvb3P zlE;hb`^|JXxnP7Wb(T4)j0dxtThF@jDz1u^Rcz)6GlvY3u&SgoNE2#bLn^Xk$U$lu z#0_O+KY773e~G(f@LY`f3+dSIpMiA2lPu<%y|N8mE@F2(UB<}>87O_EleF^EugQ+4 z9Cx=uO3V2WzZ}P!^-|nE>Deda*C(Bmp+wLBLfrnvvrkeY<9^clg|(z@;^X2=zMBaZ zbMwQIZrsgCv2f%OxDk%_E+R=@PsqTxQ&4yJjHy*9Azlt+6T>|l%b(Fup7tmr1<-vC z$!s(g3LBlcr$Xo`6mrpu`ma$)+Qa3BfBByr<1IyFEKa$V%E>sTE^=+ zX18S8LQ|5pp1Cw#h+!rLuO*J-zm&0H_H_+}?*n9~X!?d`w3qezh{zprmj+Td?ouM| zl8bwQqFqeiCmnVE9)knfJVKiu_EdjCS}~3u}{W6 z3F{??l7!g_QxnD}3`-c0&?})sLW_h32{jWcC6q}h!tXR?PlzT+^gJu*!_j@w9nnp! zi2FS@7PqwWEBx4YF{=cY36&vvJ}W8Goy z0JoRhf!`Ht;MR02xn~nUoW?bbgVb?d)naI9%2s_+v?0B0v z^_=Sb`dLY*Aa}*gj%#1$H`R{W2kkxl=GuCDxxL7qYfooqGr}Hd_pv+KE!p4Hwkz9Z z?PBb5a@ZMcZC$WV@+)!st)13pYmK$cT42qxCR<~yp;kYuhtNisV?h=in@$0 zrVHrYI=fEPVQu=fcGi35I?qh?%w?DsbCU5fw(&Fe+PG~(nQK4XQtz5sEN;ibuZxFY z=fuLVi-%w5#KNzQhiCrt;<1B|+p+L#7i>r^dsl#>1z^(@%|uPmPCP77xEH z9)4LoJhQHs&$4*raO`~JcC5afH-z{ZKcgRF_|m#SS{q2IfwU}; z{J2J2vAFBV&zJnTMrXd8AJ^zD=4LeKOMYCVJ>SibYc%M)`EiXFV{S%|zU0R>y7b-r zxJI8bH=|Ks^5Yt<`fh$)qgmh0k889Wb2Iw&B|omwvG3-`_4RD-j)E*ZaeX}-H$SegXF>&WO&>MoGj4v|wL!kVo{g`cudiov2;!O^ z8%xF4v+?!w_4Q0if_zQijm7ZwY<&It`g%5Qe!jk*sYMXi^yFA7zMhS*pRccHY8%hj zNU?m46pL%5SiVMz#WhkaUvCZLzVw6xW1l^n;+NLvvKp|`g*3s z@wi5c)z?U|xJHWU%1E)eMvCc*ItFolJsUSauCHg~=EwE*j8=lUzMhSnAJ^Bjar5K) zdPa{yTwl+|&5!Hr*|_;}eLdq6#P#)T-2Aw{o{gIy*Vi*?1aW;m8#h0$uV>@t$MyA0 zuJO1=is{)%vA9Nx>DfrJxJHWUnQ{hkeLWjDKd!H5)E*ZaeY0by&$fyXXEC__4RDr{J6fJv4gn2o{gIy*VnUg^W*w@ zCT2XYkz#r_QY@~KVtO`GEUuAadM2+RuCHg~=EwE*Y~1{~zMd&v5ZBkUar5K)dNyu; zTwl-BCy49o*|_;}eLWjDKd!H5G!Vq~^=#byxW1l^n;+NLGdc_6`g%5Qeq3MA#?6n5 z%&u&{nyDtLQECY19^F(M)kM`()m3>_QWaFWRc7UKW^_i5vCG@TE^j^OTV|g(gMIrL zPCy4rU!HBYV>h16_g1rKbW%NY8Ky-Y&6TnJ>!sc`HHq6XcWU8XQ_8pVZ^ z%=pDqHc~8QBgNvHHjI_ZYfUe%k$hi2Wv{*BzNWp3TMc<$QQ0cXdOgX?VP#;oenFqq zM_8-x)SLAhR_Y7%EIpZZ`cU0Z_h6OYOxM>nSfiKLg>)XBRfl=DaZc?~+tntuhSzo$ zsRB}*HUBAoh57(1{;hf)r+o|cY&}(vWwk#*_tG6$>+@Z2x)Lk>B04YY{HW#;zB<8E zl6{=4Zc?jwR$}_nVER!H)q%6LWK~V$4eZ+J&m(;JBTEmLub&MXNM=%5q?Q~r`k*jm#GD67SCbEsG&TI>7m-GW}JA{-~^+r zDnT#Jqq1{?Wz$awNZ$~{Qz5Cb}N`l=8ZyF32t=vv$>Gb%wLz zgXm$KTF)8qA~jb{SL4(O&UE{zPL#i)s;w%MM=?&!a*zYxq%9}q2v31_%4S)|NLb8y z)-28w$MH;Oh?jfF%bh3ZoFRn0z03vAUdO3}xn3K$Q{(osxV_XXvl%JBP^5dG- zPb?3!mhmM&u325g+{~)Mm;AV9O#5zrTt-LS&D=3#zUEHoOMYB4LVY(st{H^=t{HE>8*$y!@tNkAxMbQO=0+=clF8SXd|#7q%*~8$U-Es;_>GquoI+ zPtCmNYFX2TBuzU}qKuRqKjXc$Z@)gQbyy{5OOf z&xzT(YaeA!T=|-+8$xyCdV26V;f1;NhA=fbtMku-w|XINxgkVBPNn!ZQ9koM|C?{{ zx6y7HJ|jKfoY(tm-XcNkT|7VDWI^XIx;$y{u1(8mo|t99ZJhZ9cz1$3(VgT@cBgR8 zGsAtwebt@mzU)qOr{9pO(Q~ZMyg5ahgM##wt|&W#&{~&Z);py*JtWV}a+BJq=5bf< z!7Nl>CGqt6j2z&pQ!4k~@iLV2)pp!*Yje_P&eN}bM6!5gru<$?G27_e{3+AF;y%7~ z&CmAyV)3rY*ZiHhe=J1$t7~E0AWSUO_1D+Jh0=wKg}l+_T3B=1nf_xm^jEiQ;Um|D z_Urq1uGiv3{}Lxws=s%?7SFs<@z;+j;lJ{U#Z}HbUOdfduz4>$S=7}B@T*>NuS=6}%Rm1NUPE$1Jk9z22Y#)N4@JIq^O z&JU(m>gH>w%Gdn)p4qs+J`{`=^B$Dud5#%bTHTBfDWP*Oq<1Bppr>;qZKHSIHpGn0 zx-Ka&9@KcwL7%ynGkU&H@6ek#^IW3m>zSN*j{5IgMW`G+DO<)nC9`-MIfijfnL{t~ z9N}S48XHKwlNWaz6-dtq(hGq!CXhx3(sO|{JdlP3(zAgyG?1PNq#=PcB9M3wFkTkk zXpBpP0*R;Makr-eX+R+L52Sv9#QTBq7%73o`+;${zJc_3AoU5P-hsp$H1QZc1F1(K zbq}O&fz&mSx&%_^Kp*H1NWAYDFKNp_dNhz)1XA-r zY8FUM1F147vY zkfsLGq9Kc^x? z)r;yCcA#6;r)oEQ-BW*ipR2|Db9J1$&VxL)o8U}w-sbMTly&|uvHPldcat^xah?oc zcCWZsL)k+&T^n8I-7jxNV~56h<+^T6vMNnvjCw0FuO5n#8jQ?Lo1}W;p~St3n-Ui$ z4oIw-acIVV87pOsW*C`aaE68%awS|%NcEnuj_1j0rO469qVU0RYIttAPqo;V(`XV~NIes&4(iD46-6tW7|L)h)lU~O7oRg%NP zZyI>_F78|ovlHK%Y@}MAiy$Z4h1sQS=MHY(!!S>msg>>G^QGY;03cVkDT8C04rCS?iYL*?Tc5$h*$DtP_N3ZvA3HTE_|bxy7E}-D$D+j<&E^ zRk*vXUok)9doxJc`VlkPx`^4@I)?jpw8&F->wC}r5N2ccDrISl;OV|~5ZC6`w_aKY zObC9p(4_K>iEr)qQvVtk=3+0cFTId^Fn6+B@yf{>C4NbGaAt&Bayl@3f<4>v)8qWWVJ?mA)mwCVvWH3(i%?4UDhz<#;mh= zQ`LGFmrt#s$W8wyg}%5Sw)%LndV8_BpHt>uUaTI-t*q{tO)T!@Xz#CO=z#B+Ry!|+ zw#bdGHkcc%*0}7jS|K;J9`jOb>7@{ByNA7y^*xvLZC3%8T~>L_oz^{sX~8cXnzp;! z3rSzMDtc1(f7W{Zie7P2`N=AVxymYvxxz9dq_I^9bGdap<_4=EY3{HJAh)*iV>Y!) zVYaYJ;=YUDB4nIdNtkP`e3;FwytsdEetn zZmq6hHq(qW%3((65uF3GxlX`L*12)tsToPpCcM*ZYL^-F2HmOi_$7h#1=Y>6s z*;JjuY^+Y3cZ&(&efoyv^57V40f)_0hnDaKVaS$%`q zME!=@nzx@#ikflcD(+|an$gwx`u0(~yfk(iAN9ExYKMuZKJ!u~zJF&_+q{sUU|x4; zRGU3_GkSI^Zv-kvCM7Z>b35XD@kt$?`j*JnepC2F;>y#d&sTTGR(F7BQ&j|mS8qh@8bKpT8z0<{eP6b z3A|0!8~?xNz1P03c?$QOb8*cfV}1Er8ciRMzKP)LQ6<|0GpDCAyT zb5|r(hX3a|&-wNpU;p3l$LoFG`|fkj-fOS*?0xoHYwx|@#hmWA{hD$I`z*E(`z+G< znb2+%-uV>XjJYd?j=E$13NqG%D?jn~28embgW}f$1Ld zHN5tcui|xpd>!-Gqhve&kCLV1zybMu@|)9>-+VUt&FAPla$55HQ}NnUPQjcFawgKz z3(KE@^lm^|{?`#2*FjTSCM1{mB&K^v`X&EDj>nwu<>Q#{B_B&JeH<+@6(2Z4;FI?! z=lshtTMomVEpjMcH_IXTOkX(|(;MZW2x>)-fSqHB>Fd_`4xfZ5-$g7emsfp=cvIeHt z%j$UDAg{#h-@n7MBL3PUD>MeqMttR?W?8cF90J7h-k)0vnaLalFDOKHqmFX>3M z;a`7sWzpp4izGi^nBJ9zFsGL+NS~))97)Hpo}wVGh#rkL>05Dq^8nEsE%5(&B*Ok5 z?G-!l`UU!tQC4&pEROd(Y1z1b7-c24;`U zh&-fpJzh5=W|Di^zaN6^4~^~TvbeG^+QCMV~XK;Onc`vL!t=kDSzd}}X`T__E48(s$>&nQpm z_wsvj4_-H;N1bwGB&N6E7)R;239kcD7oc=tpFuik-`XUwZy`@;-|8u7-`arM0_Dja z$%x&6`U6GqMsZ&<@;0N4k`XCJCI8-tqbNn@f7HqZ{SvQ1t%J55`%kn3B}!@Oh3OtR ztD+SBTRl!-@58)~$@gg=?1}QH)O5l05YY~=fB#P7e2kVz``i}P>1c^c;8zA`rnE&( zlHa5JjqqL{)D!n0UN(rY(N6jSt~{9YfAzafar=`%++yj7TjXycEcbhnAJe_)T6g4c zv1AI;F+C9Lr#wwdrodx57sp0gyT)sGq=iZ)z%-qq(RNw9ZbZ~4_kU3UrsI1I?u{j9 zknw(*q&Hw2D3>>jE68}iWb*HgbcbCs_a)_nNEiSAZ4oVGOSDJ)qcvi|Kiea44^L4Q zNAGr9)dT(M6L8ngbGQQFJzNQ}M(tGD>Ll*PvA9;?3S8gYPIuQg;Z7Xfg@e0qe!yLs z2lWM00c{!`5Y?%+e|fvehi|V;%cnlWH3jREOWKU3tx5Z5PbKcj!twJg>J#bs9^HTR zzy4E6(o*?9P2o-)w*k2!qmog1yjF`G@p?JBj3-_eNkgw4u34{y*P3ZH zlc~>#oW)h}Y6Z^x1Kbbwk!Bf?<}NNAG%vbbfo*WXu3T9LOJ1Y zjXi|^&WBgg;RL;+2l!!j@|DUn!Jz+``eu{ZXW_DpT@ROI>>{{4V@tzXj9Ug*VC+=5 zB4gLVl|W^>uNSVu;J#fUsxtOhnC?OY7SDpk{Rl}c9y)`TmLzr$T!XRi!ZiWzf42?c z+Mq6`o51zJHJEM=H(+pAixBiVVE4mxpA*0x3Ih965}OCpUG)Hc@fe_mu`}SNjGYZ% zmx9WrSqhp*>m%BL7Afd1tClGS!q=ym1h-1@4BR@!n=pN!_y)9PWCXWkB;B#!oA-SZiV|Wau?i}kyO6@7)!n7be{;YOX2>EeFGlAxDclN0?xvN821T0n2~?MLl{Nn zFqBc0XTumpX&=t08{rhVYY~HZFu3a!19mX#b@&zrd#}K+ZW8RD7=(jSJK@_Il?~s) zs7vsjjHWc-#pvSj2u4#Gj$|~I!`+Og{Jw|Ll&*UjeLp;k(a*x88BO_2WeM~TFntct zz4PJ$MjwP9Wb_4i3}Y$A9%Afbn2rU&z6DcE0DBgm#klP-eFxa-Fntc#GVpB1#^5=O zeFvV)*bI0cW0%158AsoxcmnQIcmd<`!3!Bj`L>9$M_^hma0aGy1D6KVa)J92rg#Fb z7)<2{>=}3&cpvkxgFj&0$MA=Yo&hgsTq$@3V-LV98TTFh5#yS|^nKt;z^fR06#j&9 zlsBsxN3l)Y2^{6qXN-Lj{v1%+DQ3P(LEHFs3JrggB80z9aV@+i1;y1`upSHo8^HH~ z{@#>=KD(I-55ij*c_mEogmOlW1`laxP~QLxs0ONIK-$p ze3(&mETmXDCIs4+ggDNiZ#mWYDu9#3e?xfiE-YeW0K1BskB+ z#SRQwg>Wjt&@Z_}OeDebB=U<8=`do5P(@*E13|wP5@kTBjxb_~px+JY8Py4n82SxC zeJzRV4Ac4m{hml#2T)z${7mxqpa7-;TIU36eMv%;C+dMoR8P1tL&s)G+XK|?Fr^jH zaatB*)EzL&n4n{}L|zkUQ^W(l89IK`?;oM=f)OhO9m`QuO@j7FAm1jKcmd zV+?9+c)&NKX2J;u^*JFk8MLShS(ZU5x8LrDu+f4TJD9sHU*VQ zV+O7GsfSMEa;-c}H)YV?FX-GQ36(=L2E74zKy(VqgBA>W9)xU}g7V{f2K^FvNOTIy zo7N0^Ere{Fg0`<6qeHlTiZ*ZuMpL|WOhMo4#Gq#d4~R}d%jm*rileS6M#J40P3!NT zVjSFq(Ko<7Q#=OuVswAFcZ$d1K8zj!_f0VcrhO0STVYxjF%{7FfxZoDm;`y@0>uJ9rGGY`z_F8VcJ(gcnZFW(T~74r&tW%!l2JkNJ=ZQ z1W@{bei^1T5laE31E9ZA$U9TK2j9h@H&VzEDJafIGU%(sgK<;558uP+*Wr6pY=B2G znqr&EiP#P9W6&=w&}zx-fgeag+xQ@3Bs?a?Y4{-qJ=AyrY>MAt$_s%0YdqwY!Lu`j zq`U));+kRtP+bA7s7by>yE48!{3Ju?^=O|>LUjl^kx}j8NerET z%cmGR$Cs0t@BsWYqbSxWeZbSUP@DleuS~`k;wwCiX^JNh=EBc1=%2>JUKvaK2$eSw z_zqg5lbFiz3`Wg?XEJntAzxs`ckqiTO298MxYh^{gJslynBoKYQZU5?2!Dqu4v2by z${y%6_>B}47qe2dgx_Q|E$1yJ{1u+f_%bl1m7p@8%jgd9JSIE?&rd<=eVfq~YYUk0 z5WJA_4qn7)im!K4&^q5`d|8Z{1NyV`J4}4#n{I1CyZ?duV#EX_)`YY4#a~{8DAIv9DIr8 zG=jfkd_(vfhU$Xo_er9L!fTlD7kF(7T0X@GP(Q%ynD8XLK1EY_1EY(=8yU3n;UT1q z((on*EzWodDWkrCx1?wfZ)J2QOrIktFSj$eZUPS^O+ooeX#$$!YiA0|V~SmXYcB9G z(iD{6KQXu>gO5SGVaoeG46fI}gGm|n1pG523c&jqMdgysh=Onqqv$jH8EWH@2N;!r z4>Dp3oXe=^VTunRXqxtOfIenCR5V2)_$Y&(c05Eh1?>yR8C@1Wk)k6^*IFAWw z8B}J#M=7(TN#ochoP@PR7tx3LwX&r#-a8zGP@)eAjNXA7cIGxeu;rtAp zzfgP-ItxbJ5cE5Pp6VoeAWUfm^qWI<5<(Axi!yX#%ZoA8_CWQ(Bn#mL6P|-nPD%R0WtkA=uMmHP zuK-hC0E!Vs+YdC#R?&L^eFQ>POhNfqiJ>+jRXN2ya21Bm0aaB-(=w_tbUvuAWHc?W zIz#7%ss^KJ*)lF3}Lf-;6W%OnEIwr)vrJ6CG(%+mBE#Vdn z9oH584Z=U+>ltdtQmsv@C+sNaX=M#T_lHSBl;+@EYy|5Nkew`+*zqTYN9vpE38r z0~j+J9++Y+JSfFBS!;8Q>SbkObUB(xH7lS2$mc5j5)!_FS-wa;Hxa#oxjH?HK!1(6yhm5}tUe5TY z@CwE?gjX`|TKFUIu@Lr0coh?!g+F2JckpT^`W^n1!T5MWea1u=;LpJqco_9L_)G9L zw((c^8wStT7V2BZ(P!5%j=YwM{)B0L>#-cl%MDC)3Es#=6mQ=%(I4<8COQpoW}-7N zl|6`lgSRrCKEI9e=i%)P9?m7uOPR#e=YL>4<-<vds0f_PMET%DOhhqu zn28F)wEuvJV(cgrrNgwosYc z3IrXO30$)vsJ)E9l@5Z=eF=vc(a0kr>IWBNq8s4S4Eo-a=k9d=?hq?YYFX0!% zW5C0hehGeru_#+=pGvk-p}h2X#;t~*VBA{xNrw8j^#sNqgeNlMA$Sramcmal;wSiN zhT6CE6o%?ddMaZOt9lw^UWT7#s9&A>00_|G@- z%^1qhISjRJ(0M#Tbw@pqG5KM756GSH+h75<5wWEgGGaH3{fD5srGAGo6u0j(=5CnE z7?^P|Z9g!yeN-O6EQjA?48{2}@FC{k3DbKkFio+r5`2Vd%D;~pPkFqGF_e~10Aj>b zet*gsO4ny88p5B0FR&a+>GqB zwVR43VU?mQtQp@D#)p!$hb=>GfyRLV-#r3{4E0AD53qk2`fgf^CU8E+w}uhNguDi( z?*QKcE|8)gT#%t_OiZB^*cRHi3DF8J!uS?&(G*w0#TfAfTs%c}xI_wCW=V$nQp^>M zYyg)^aTQ!TMIE>dL;XS~gP}fW6Jw~&+r$BmXTA+w4wMJ=K^B8CJCdXbNZ>Y5>|sN-LoHx1luE28eA#X(A~9>oRnnZ7A=Eqkz^;+jkt$`hXt+({>Vh zfYwd?1{$R}3tyY!JlvR}-wH!zNg$4rX+?T#Z=LB0dg1fy;oc0LTbVwfFFubLHT@Vh3%-HzcfAaEgw0$=*eiVE&<7r!OVf<+LR>sqI z-^Td+;M*Bbc|iFB{QdBqjHmp#i}4S@BN&f7GPIq*KM2$I6LkS?571P`lvaY$Pw4}; z6ijIXp7NN|0sI)4)(t%6H?0q7D)X_7r?gXi13wL>G6w!Q{5Y6^^A?KPiC_|@DW;!d zsL#_(PVo!;G~+1`o?&c0cnU*(N@gmf+rzXzqAGYc#Uc1P#QDH^~ZGPVS~JVhgT1!FC|G6luMM~rpw$0-`a zs~D=wnom-6gjX}RB>XAkY5)F=@rXxr_ z2#T?747K%|?Tly&Q+WVt(=|UZg7&|ij2aK`O3?}ak?}PDC&mwhcQgJ8cn{-;!+RP3 zB>XeuZ-nPSF|8VeA#~envKg4=|q6c94;c;9LgdXbE$Ok$1y~8Qls#!cc#8 z@;CJ;%J(TuA7kVw_&DPy!zUPj6Z{L~pN8`oP5Dn{59s{P{L1L_Fzv&D&h^Y`hR*4d zzs>k8o%b1f5BQs5`WyIX;IoXs9;S5weB!%NvDXNJ5K7|f!Rd^@8ZOOv`b=}iWx>d6!c~A+wa#F@U^}UVu?<87P}*wh-7= zlZc|QWT>AfrWnx-){H{T#0(>v!2pGXlsQY1LG$F9>$KnjNE5{Oy zKzYS78EW^9m1V?SxEw=mtFiKomWo+mW4|KQhj2|sQhs9}BdEPFR*Ru)2V>aZ2x>cw)nO!+ zLtTd25o7fjy6!JlpP}}<*wu`r{JVxxCt$=hAt^5#GU^w&5hD}uwG6fS#Tqk`@~jC% z?RK%IjHLX#j-mFu7{xu1l$R9ifZFn66yHG7_O)a*#o+afq-|}*Xo|k)i9(Vx1UG<<^;@YtUj{7;4Xpb!F&!v{*MrQ+al0 zB*i4H187<{Ef>fKU|JT?v>y6CkWa#W7(E!K{SC+oa6g9H2V*xdaw6QHq4vVq07g!N z2QqpXJcyy|jbgN1Ky8aLS{9Jc!}NWiN5J$QAZNhC89frdk&!dun;3mJd^00ofNx>+ zJ@BmzU0W2pjnR+6w=;4UdAjMfe0Dwx&> zsO>FwFC#yJM={g}7aPsU)$n}`waLY(oPhikrm_LlP8WNSk)Oe17;3kRJ;cy;HnE2p zy&Zmpk?Y_`8NCA@%gBxJI7a^jQ(gf1JxtpV^lq588OTjAZ70w>VTunRH^USYfZDNQ z6bC?VfvM~PwQ0qkV&pb>GNZHMrx{6UeumLG@Dzrwqlryr^l^9^BhSFkGSm(gdybL6 z!_ygRmx?{l$g?oT5TG`y7{v`xOJIr>KyA;l7a2|KeTmU0;FlS?h9dR~Lw$y^*BDRx z+Uty@&r+NLUmd2{0)oCv@dW7lju^!d5XIry3|-R^o5SG#LJ^zGDB6~Jj3^0H3;`9u z6gNOz0aL616~YuBK$L>WmwhTmlr<;h}3lz}N<09{8DTguRhTkJhXVX?7g z44qKK-e>5Vn%D=7h{GQ;bZt#+IU^GA3PxUrS2AKG{1HR_%CV0bLHpJ!hWeRfv@ZdH zeJr+`p+4u>r;NB4{)|x%!Jji?6#NCF9)`bU#Ax^{hWe{xUo+x9_#1}$tz+LZ;(mAy zqsGE(8Sw-B9Yg(vG1~Wl*a@#^sQ)mwfsuV++7E%IIQgEDec?@vt^w0N24p{Y3!`ho zTN!x+O#2nkSHasE*&p7)=vpwP572eSF-jBAwc%Zi90>o&=sNIEj2r~-W^`S64;Tkn5u^PXNGhXW80y1_Erp-Wf*HcK^<3TJ~8+QXZURG_B`6L)QSt{$Qx>KlUdR{spJ-6b~1ekbIHx z6c3k}kmg-xJmMiP0FD#XmKn!!AzlD8%E1LeG0aCi$4i0?%zqe8fQp#^7+eWpopire z9P5aqJk4t`$}ipo^AQX2rl2MA_FA|#=zzSv8SV^v;qxECeHe*yizAK+c?9myNR(TA zAR|$3@j>7wd>8vloR)PLri;KM7-~_0JObat__;8S1q8ME#YZuI9z2?% z_O1ARjGqrvUI6L`jX%Kn1u%{~1hwPD$1r{&{18L!AMuA7kC=>)1rzXj+NOzMD)I{Z zT6`LK0rMxrFM>BP{}Xr?!1}4(B>py7g6T5wQt$z$kr(mhUl*H@=o{cdNg&P=F-)WU5^=_Efsu$rCeq;GvW#60mt!o-J%Mc?JjyAN#aNV2 zq5@-)SBZ*@{|TL3kU;kuwcrV$H?s~J!Ea1CgH`LtaP8Bfb^ z#MtNHYZ?0z+?eru;3kYmyd;`3{zv#a#_xigF`m}joUtq67K|GMW1k`H>+toAodr{w zA>Qpw7%@uN=V8P>VW+|E7>9gMU>`^zX6?r?;*9Xwa3{u79(D#@Fh2+G%0yJ2-9Qh_ zM~o+WF_!XkAmb?gBN#{9J(6)(!uNs)kmt004}ym zv`w#oS22GGOnD8W;_#b{tq#A%*qZQc#!~FeVQgi1E@NxM^B7wVp3m4U7{?&O)`J%? zwi3LMv31}@j2aHV!`QO$yNsoHUksLDIf(DXdyJ)hVi{wpEGX_jz-Ow!A2QT#nxL2i z7W-A=BgU44KW1zK{)Dl0;nj@AzMA-yvGw847)$xQn~5HSX@39_l`ZW*h_!&??g$e- z4*$yFX&iKUjL4M8f21i>GwvX48MgvG9%mpxCG;X&Y0#4~*tc}Muo@OZ{kTAlz; zV*VC*660pU(-?OQewJ|;;O7{35}wYui}3S|I}gub++}zspnc~IjJVBQh%&|IXHuFF ze?dza@kRtK;18If6-;>ng61${EOQm68^N>F?|9?ewIZ(29LonFu@b>i%fv>ET@^EE^L?p z`&v0{3lU(Qn;4MsN!V4Mu3A~I6uwP~&Mu?y^ zjO7r)74QlsKt5+7PKe}u#7h>%49%xyfuK0Nnh8)=S)Vfj@+RvGCMW}c%_Qf4gK3bQ z|1G9LfIQ1u!vvM!b&M+yuV;b;jBO_wQyzM1_Fco)-@ z&c%!y1TSISjqpf7>1jwU2#1;{3fbRoiF#SD@I3t3M@WbE{OmBl91&?9+2l#O&*a44c zf}dc@7m!BVN9mr5&m-USrh%6*AMup;G826Qzrv)^w!X>)yW!WsJbXR|&j(vkM5|#+ z2S`hUw*#aFPkj@4DCfMNF^#y(qr3ybK{y+roYQIxaTc*dIK;rE%Z$gflgf(U_8BPY7UGO&uEj;A)|9f*Nom7{W6AUyqYm9V^zkw zjI9|vGY)4Q&GiOjN@6*8-4R?n=J*)X$1=D^HHGoQ?ylsO~w zrObty?`3|NxhivW=GM&Znfo$xGY@ATE33-7vIWW(E?cT>tZdb?^~$y`JE-jNvM-ji zHSrv;^EK#v%#bFgERywEmE~i)$-LIs`luWm#deY_s0Co z3#w=1S1P+|cH8Vu**9bl$i6juZ1#lgXR~K!&(3~7dv*4P?A+`_*}vzwoG7P2PLZ6F zIc0Oo=Tyn5pL1$qVwLyux`!^Gf7p<+aRfl{YeP zeBOk-sd+Euy_z>KZ)@HUc|Ygnoc-$3<;#dY{7Z;gVzF#1zrmP?kEkc{EXa8n+3~z~ z{}vM!5EJ!vGkv`ts_)eg>hXw)DSEcvqkq+Z;E9l9&8&ZmiB^b-PKb$~h>0PonD{JX zea5zoT^UC*j%8ekp)V_r_ThNJc*%GoUMXHPes#QQymh?u-!U;Lesg?8d~AGTd|Ld) z_^kNb@ul(Q@o(cl#COH_#!tu3CeT)usF93`5s7;f4<^PYo=Qwh%u2kMSef`Fu{#+P zs6%GjWK0y#j3Fkf{2ddWGY4fpj+mI1IWu!X=F-gfGe1tn#Lt-rQ!!x?6NUaQCWe)r zQBET!vi^>V?-3J&$}dMu%tA~o%UYiGan|QqUuUiRJ0|RZ#l%>|#P6w?DEvQTLS^U6 zu9n>{yK{Db#KdjchMl%XzQm&ClDGw<~X7Dkku& z^xyvi{C407)J}gEv<_MY&8S}^s1sBPWRO91Tl#kq$IE~Jclq11f1ap!qUwp*k^Q(t zAIHTbI0hcUG4aUcBTpT{vHQfApeuOy1dgskROIeCn%vU;$8tZ(UA3?8!JWA`BV9PB%Pj#0fdhpwMFg$Siz}W+f4!nC{>H++|U=F=gl z`S!oEe_YPEY&!1#{V%8UzAe~etL9Y6&dXkpa(pCP?z^;a%f5B{PUIXCV(;<29rsk- zQ+Q9UJ(YgkyJO5=vGcK^vj;aFG_PXi#EitxndeY9d;|5d^zwVM%4O9>ZDSBvoAqhd zds#nMxuSA17c0M6`Sr>(E6=DrtwLMWBW|m3dxbm7Z!K@KYF4gUL01T}PIH2azEN~- zvD=D0UE+!orGzLm`HJpkP$p%@l_`$bZbB3cqwNB@gz--|sDq}Yja(&nH^z;7j@n&< z>w^J*Zx|+mzW@9y=pOVAhG5?9!E?c%!G$mkBX4};e|`ez>%Rh|B*__mhwhb&LV)u? zyyi=5_OIXg-_vRMef`&eX}{)6Mr*#Z7}Tu==$daVy`OJwip}|U<@+@~e|qusQt1hL zhyJCL2s}{V!fdI?D5(|I!QobNZiC=`Ou+`oFF1 zAAhCSqEFE)0A+AXtF?K&EN(0PmpxEo^_?ZHS!|7+a9eRe;_H_F2Z zM>Fhfp~V0DI7+YCrS=UMI_o~cGmQWF{9=B3@uuXni}}gL?R1yFpIiL*Q;Y4JcCmfS zo^{*pbX&&8>^nBYE^%etr!Jo>ZjU(Q(%hG>m_6gJbIshxdWI`y54i7KQ&++sb+g?Y zZjOCXSm8tTr1j%L1M5NB8H0fVuRQy)`SP;m3Y!|E1YLFm(A>Hj61wgF2ZQR z@5-M{phv5M@`5rLQ#cJ{7spixbqmHDzD?bP@dH<3H0BRXH~jLJ)@5{tE~!h{-|!UX z7xatzCH|v*@I{h@PrnxL@@Y!_@6!xVl5! zsO}Uusk_9@YJ`}kW{79iO!1t0K}=UKirH#`SfJh(->coln-#>9VHIFYD`2w$U-!R>x&Kosgq- zYdKEeARp8H<>PvQoT6`)Q}t~$a-w`z-yvVskIL8d*zlBoL@w6TA2GJutp!(pc zR1b!S@!YAWY+Ot=mDL=vOME9ws9kEmFBSeS>*+Lkk8G(+g}?eTa*XZ}o{=x8vY{7 zsUO0VvZ=<{R7#6&>I>OkXUY%s8}dUvOD@-M$`$%8xl+$oPly64pD3sbh{h@*rl{w| z^Xes8Nc|)`=(4h-E*Bp4k=ll5+w@n1#SHbbSR9^}SLp(H+*S$EL}kk1x`8O9B2ics z7PqL8;#PIH*si`5JJeUQlP)hi>nu5550p>nLGmL#M}Dm5%IEZ*@^w8fJdS6i%ux%& zbEV+6DZH#&`k3madVB2yADVm3 zD080~jZwm<`-19KvmXykpNlcQXRD9QOBgxxfXY<|eQ7PURF_c`2~Z1ZsoVGrAJ@Hn zLig5vbss%k->7fKFGxvm^}{&-oat-(I(nPlg*wS!2G2|IX}*vz?u&Wpj`%9(9`%~9 zk0)dQtS;)VzOXN5b(WU6G=#S`hbSC=E|KZO^Y5q5V z*8lFla^JXb-8%P$TNM?K3i)HMrmOE7MMa`~QU0i4R3J)^7Dey)KmA{Jqd()%MJB=z zYZOHIiHst*5o2xO>F*dRq<7QJIH0ntEz!v7*0`^Ekx|FVC@=E`)p+O0*i z_CfKGSSo&!xu&prS!9aVCPcgT82N`-Vj}UQEGZhv%Cd<`lQ)`t@*$Hh=gWg8zuajG zpig7BJY;&9yUjTBidk;Dn>)>2W`r4O9>qERi{>Ri(=75Y_!rGPx}ka3EH=x``{o1l zp;@C3nD5Lw^Qu{)8<~}6y?@TX?%yyKOhr@4to5_}YyMgPs(;hJrMju@@-9CccZYV9 zRm^*Sx_{o!5KoE;rmJsh+RGQk5ph)JH!aQeripJYukjrW#%?oJL@VFITq&L~)lE%| zYuvzGW$MVPVwD`}+xWJ=oo{dIo2z|CbB$?enwslOGt=C(Fs)2$(?*ps2h2f}YmTUK z=BPPtPWTZf&-`Z2n)CX4b5VCz-OVL^%3Rj_t+K`jHnfpVv)&f8g=}GrWdFE&)8Ao> z>3i{<^$lu=&2I~+S^jQ6QlGZkck=i6&Nkh5@%Q?!ew6R#NBi#nKHtON?|b?Od@ui? zsjFLPxHs|^!mn8lc;HQUDPmYB(F8U_}gth`JirZs+vQ-mA}ih zwM9$~bIkYk56R-@S5wQJlEutvu?Tlgyleh6?QBug!4~)Z{KNhR|A_DJAN2$LSh>SW z)4-N6jjT1-Vnn{iYN_dHOZtI+oFC)|`^QXebJ7nnXT(DDmw3lq@I(FMvXVKcE{LmC zhNz`tqNyq?CaUqKlOOMg`6v8v|D?asPcWVB6|$k9C>!}n@^0Nq-s_)|qx@ullYd&D z)4%ES`V8uVzx$j0GyZyir@zHdG1bgr`GXbyRzKBMz}aJESHoT9>bR@jHLkZC?1s7F zehEFDKY9{R=N}hMj3z}-MU$haqbxk>zhYD=svOOTX5t=$qUs9KOkFRUt5%|gYArge zuA-N^LG)JrMISXl^i=~zKQ&0)uI?3gs8QlhHCo)I?h_-_{bDk%g`cTj5p!{k`#fCF zJ|EYvzop&~Z{wQub-4a~t@=;S5IYW<>Gxgo_1$~cvLq8^G>Br@pdc1r~KOtA?dGZrIU#`|~%TM(J`I%lQzth|0 zI=w?~)IZ7Z^=`RI@06SM9=S#DmD_Z-+^%!v&-%DLV~qUWSb5eswM0Luf7T~dF*Vg+ zDPP7_p~X~wQCt-gC6pBn$(;R?pl>Jf1tu1vgNjTJxOio>1i8`(!!mwj~&*-zJ$H|VQme_cxs(6!}2 zT}KYmb>(1PPY%)bJ)V`*(OKcDMy&nrjRKgb&Xp2!~TeU-!8Ks z*bgy6=25%WerGq?&31#`Xur2xoO6L)Za?z7?ay|v|HErYb)BTY%N>CUTLe?s zDISyxN@BcGqC!x~l@Ai`xck-p;qu&X?k}}6HR8x--9z`Y*|xtOUgQm!nJel zT^HBYb#pyjPdCWj=x%nmxY6#uXmMJBXi2m*dM~YDFd>*2JQYk1o(`U|IUSQ66=P#o}G@omeA= zN+q>4(n==-8A^|_X47OonJ)8V%-MpnkSr{V$fB~CEG|pPk{E@ylq@aF$P5{iahZ^r zIBP2>%gZcTK~|KNa1KyKR+ZIIKdCNj$eQvhSxeTIb!1&JP1ck3<<%lfULzaGh7!L? zvaxI;D#)f{n7D|MZJUY9sL#-tGS`cW$=XdDv>CRO?PUjy>)J_n7L`x~8ZOp~b+U`> zD!WOHdnJ3yUb46BBm2sJ@&?&o4v+)oAURkLkwfJ$Ib7Z-Z<065TjZ_sHhH_e1AEzB za)cZy@5Y(>y>gVOEJtGuoBKr-`G9;-juGeOL-JvavHK{-wHYTLlaI^s@(KB*oFFI4 zNw|iiD&q5LjK4cYPLmV8sbC1=Yy zIPaf_GorWUf`8Q1L^Zisd@q;CrSd(oiRyK7nS5VB&*I=xj@8mj+|BI3Bam zD1uRdilGi#LX}ikpgvj}&vvLKZW2pSOUw}4#Aeh6W2m7fRHiDc%Bk`yOI1)6RV7tf zRZ&${HFc$`u4<^7>MB)B)mC*>T~$xjS68cRR0GveHB#5A#;S>Gs;)y_y}4?kTB_?+ zE7e-HQEhR)T3fYK?NR^js5+tcS_ie)x~ePA6uVQi)lc1k-}icI0Dj&7 z5(m{FH5g~|L)9=f9Ag*Vq;3}VQ#I(@)g9_ib(b2UMyk8jJva-v8fO7Ni0xtr>c6Aa zed>PofO-%;9}lUA(bD~>8mq=7&+*2qC(!Oa;a~RiXVermRa}D}l4nH&w1`hv&#M_~ zCTh+N)r;yS^|E?Jy(${1*Tix4x>%*&P_xvV$vVv()NN3!P;aXRYN1-B-cj$W#cGLK zs@}th=*!Tzc1V4oK2*ywhR;fj;`6a+f!Z9^{8y__aV+~>eSuopm+C9^HOBY(R;|JL z%vy}|vrer?jcHesGQoGe2wHNiCeHh6p zN9{-b>L6-Zhty$pL>*Pf)Nyq}{i5>F^Yg1ZrB18g)EV`=I;+m9^Xd=LQvIp^QWw-k zbxB?ywjk?$#yHl0johajQm5$8|zy>ax0=F0Zq61ziz6PL(yrxkVqtmAbmFp=;`^ zL>pa8*Vc7(U0n}74_E7JbOYT`wAGFDwYstRLpRY)^>yfxXpT{)TZ(q*nP{b3>o&SA z#;j_uJLrzOlkSXmpsu6=mCy;a|)Z`XI|J8{og2R%ZM)OYK9(El+?j}{&EeHa((0n|mu=!Z}z zeMEE;2hdwKR*%z<>BrGS@&wMpCg_QJ5_-@kqrc=C^q5T5(=e9Sb9y?))0&}YrrLI1 z7M=Ag`c?g!eqFzzXNfN2e)PD#h5nT}daj1FzT{ek{aFV`#dO8t@kSg+Eb=+*jD{h9t;f1$tBU+J&)H~L$>Mz7W1 z>2-R&-k>+?@AW3VS#QDUUfc9`y#r%>?L@8mNBxs{Pw&=yL^t&N{fu$HvUQH=uJ`K$ zq6fwR%hiYUVSPj&)yMR4eM0}D^Ylsd1)b8TQ4=_$e-}MbGe3tq!5`v+$i?sJU;2W+ zs4wZuMi?n386|odZH%$TnSg4nCNgOzpGi0Qsa}e6t-_{=DQb$D;--WtX|6D(L~k(; zXJKVb2A+5GD0(x;nz%`rOjFjBGv!TIs_t3YR6#wenz<6S#u}z3>WsBe>#1YvntD`Q zL|w4~YKx7`wWhIY@-MZ1=gG=t1w(a#JqL(MQV94%5Gn;UTj{Rwlkxy9USZlg2Qzw6a^n|qRN zBBRkNazA=g9~Aw~81s;M*gQgYZgChj@yE>L;ukaCJYk+R6U;<2$vkByo2Sh)W{R1L z5!RnI&;9f4mTKu3cl{OA#9uS7n>WlX^QL*r%rH(&5MF`W&YHD+zHp1K8u&@nXHS{asEMC3 zzoRyO&YU-YpicXjxnM4uOXyt|R-#6(Q75<7CF|urSu@XP)2R;5^>bUq7PZA}aa#go z&tG9n+0tm$%|N?u+$L-$&TPxs@-_=+wiU%IINPn9Jio1m^W5q<%dMF_>#c3;;7qq3 z&UCM~*VqQBcI(EriEV1Hv(0RC+rqZA*V|UMwQXbD+IF_R?O;3FPPVh{V!PUIw!7_N zd)i*Mx9wy5+J5$i)EVd?JJ=4fL+vm-+}>z!vNzjX?5*}Td%L~E-f8c$BkV|fx4p;S zYe(79_C9;ReZW3w$JmGL!}byTs2yv^*~jeTcD#MUK4~Y|iFT5G%1*XV+h^<)w7E}1 z3;c6v$9^7d(c{HT@r0O%cJ-O4H@s+HvM*DMynPLIi8oN2coVJOv+W!^*Uq!^?b~*N zU5K{(cf>ig)GroAaBqGwyF?ThB}7TPR9qoSiPEABTJo2nj`M;25H*<LT_N zyV`zgKeM0PFYK50EBm$m#(rzpBx^wH&?m4VSp(XHy3m$XeP;*Pc&Jqk{R4aKUet;9 z;Y>XT{Q(E;L7Pi8A$!CgMeo3Id&2&LK7y0zOE_gu+u!UN`@21B&)M_B+duH=uRq0X z`xn~0F4&9WEqlpc7HJ}%XzYY&>ZBNe*7$NxIgPe_OSLc;qP2cCu6-DY7N#bmpjhU- zcpq0wO+Z_JK9}zDqb5@j^_jx1h%4%fx#F%wvgT0Al@`mz3S5t4#RuX;@s0QzJp~yq z=Hf2lGF@3$&XsprcuqtCQAjLu6-5TMZitxp%2mNrB0d$Li3MVzh@(C3c`-vI#8i=A zoD{!`m14S>F9y46sKr%BYe-GBhtzVl(I!&Y)k90+)nbllCLR-CqK72iT_c_nlU)PX zP(1A#xocfx)c%^HKKq(@oq8$6MAsbcXwQik#Y^I4@v4~XT8NKaOLx6%8!(Eifr?^@yj)Ds7}!ET5f>V~=D?nZZ0vaWQiyUpG1?r?XyyW9vj z61{)-Bx{Ng=NR{pdl-F!kGipLoO{eY?#8<(+>>sCo9HIFr`%-sw0p))aZ}wi z_bhr2r@QCf3^&ug;9hhuxtGN!?iKf{d(FL${*_tD`s8dk=ilm-i~g=vE=7%V8P%oT zhp3OPa4X$M?qj#ged1P&Gw8?p%zZ9?7iZD-`X$<7zfQKqu5oM8hqKPD$0(8;(P#6m z`yOMQZgyMTR<}(&Bld~rZo8O*J4AMgAH`2%xBEft5qojT+D`Ga$acHjkM1Y8+wF0C z-Op~H&@S8Mxc#UNA9T6ykUQ*-xTC1$9(O0)FQ}ECMD6sHJB`}u8TY$8>&~I(`-l6} z{e^n)MRy6cV1Zt973jbOHgG`@gnEx0nM9@GeG23G~Og4*bxuZwzh z{orcUts4XlgGRx%LE~gC`#RLKo1-?~5`DO>(4*fbXdAQ(+6Ntij#S$Zx&&Q=Zs^19 z5%dgtp(nRb&^PE8+z|8+1_T3xLBZf)NH8=Q77Pz=3~mZ;4sHo<4Q@kU?;XLN!Ck?K zU}SK2a8Gb=Fe(@w+!x#*JPj0qkJ9u6J}9u39@YjnXG+J`bYgcm=a74 zrUlQU*LZsHJZjoAgBOAqgO`GrgI9uAgV%!BgExX%!JENb!R%m8FgKVN%n#lU76c1} zMZr74yTRgMNw73{FIX15AAAse7%UG~1S^A&f{%k$!6(7$;M3r<;Pc>%;LG5v;OpR< z;9Jz?*9PAO>w@*D({KEjTKzWE>395HtN$t39qbAA20sV;g6tqC*dH7S4hFfwq2O?E zBsdxz3yudTf?tBX;AHS?a4I+*{1%)Eeh)5H8>fv{j$C@dTn35$ls!s20xuw-~eSSlxK2htHW!;24TanQFv|G zIBXI&4X+EEh0VhjVaxFPuvOSPY!kK(+lB4J4q?ZzQ`kA|5_S!{h26s*Vb8Ev*gNbK z_6_@mH-!De0pY-KP&hao5)KWA{eR5837i~NwLjinT~%FGJ-y668AHrNMAo6V*$^Q! z(_Jh^mKY!eNSLLQnPf6E%o0e%5CZ~2gcw=EDj*`VMr0EKF@`N5A`cM|dB{UvL_kD9 zK+OEU=iF1>HIqRW-}C>U`{{Gf-S0hjKj+*Ut6(j%7F)empS8qVYV}*otO0A#8nTYJ zhOH56)EcvvTPIj2S}UxT)>o{Ptgl+Dtdp(P*4L~x)+yGh*4M4mtkbPCtZ!InT4z~n zt#4XqTjyBotZ!NCt#4cBTIX5kTNhXxtP8D+tc$HntV^xStnXNtTUS_DTHm#)|iqji(D(fXlvv-KnE7VB2)HtTll4(rF(oz_pRyR5sdd#s;Y z_gX)*Hd#NnHe2^u_gfEG4_XgdTdaqzN3361k6OR99q+Z3)>GEg z)-%>`t!J&@S(*ba zH>|%}Z(46zZ(Dz}-m%`b-n0I0y>I=4BxH8L4%!;zW4dkFCP~R4zj7eKf~*m;skohh zEUN>>Y3*q@ z*n8PYI|c3=BxI0SHrdT~i`{DPZGT>*m;2eXAnR&}#4Bg#!KvThKERWv*k7^_hFs%N z$Ta3ao-r4)j3Xe&m}egaNyO2RG#m>l!$OuMbU|{^1KGeL@c(t6!dM!&rbeE&gv z$UYuYk`c&7#vl_p0rHR)_DV=VPJ*;z6(kj_A&ppLp91;9*CAUt-9E$qhJ7X^32Pxa zINLr4GLmmWn#58f`+SlL%Kn~xwf%kj8v6(Kwf1%P_4W;r zkKJT%w0~&dZ2!o<#lF?P&A#2f!~U^-r~MQAF8gl#9{Z>Ez4p)SP4>_2&Gvov{q_U) zgZ4xA7W-lQ5&IYRqxLVsy9DRb{!jY}``7l9_HV$OecFD;{w+AQzXLD!zrc|NKUQ&L z!T$v}*#4vavi&EL(Alrqe-?S+Um@Ll3o^mK+3!F?2zj6VzWon-n?3G;$>?ZKXrkoL zi9kXag^Vx`DPcKehm}s1Q|;6^wfN7+)0}$eQ_gf}2WN)!X=kSMAI^@>XPljUQj*=A z-JLz0J)H(;FDL1woV1g1vQDGZps@+in5k9Ll6jwMN?bDY!ZbUEElk5h0KIg6cMr_Wj9 zEOq+v|Ca}xL1)N0-WhgA=>IS~%bgSOpO{xTE1j=6CplkrRyilr|6~Sd`IMsErzG|H zrgOG)j3r9@3jf9VYWxpp zC6R?x)w#jBQSo)1o1Gsyx8OfJ-{#!z+~NG#xzqWHa~J)OXXmHRz4$NBo1C9Jo1Odc zpPnDU|9O7M+2TBm|MdI|=TYaE&STE6=>I)CPdLA(|M=`Y=ME6%IVYtEmY*PXvWGW=J_hTn4DCJ8bm#qU90 z{5~Yg+nn)8AOiJ@NGPI5jEETtN34h)alkJwi$o)_NIa5=lt(J?-=wP|)sdP=ZKN(T zEm9x(RAhQ&hscb`rz0~X{}I_S@|nm^knIpSL_K55mX^8BF|2>_Gq>1Ys zX^b>Qnj$l1#On}T!+9BKc^+s^zEqFA8gpj8SWYsnnh0B( zm{t_dr=;mA8A>V7U+R^TdP$GwRZn6_dHyoQI%J4-2uV96-wuzYO-6onYwX+c)T>Xg4LDo>EnCQ_|^D6*ncF-XVjeLs2%HYE-=?vniXD-pi>fq*~bxl7b^a zRnhkcVL3^vH51w2*QfiJXvyOzoi_I`(K6*q+tSI<{tYRUvS~=!9J4jkkc#@UYDii8 zbN@7?%1XI)s=*<^!MINcICpj11qaXKY*PYb=%UY(>L({1_zUh}dY z&5AN={YYj#im7!ZnR1&#`O!`bKVNsq2yxTW9ck%~v~)*W=3rX7BQ0|7figu7RBQ2p6V_tR4ikc_16x%iFQY2o(WW1WnQar;f4ERs${5q9jQo1~3d4nw zK3Om`(x{9y%3J8vDv)wB(x{9yDkF``NTYI+J}2pOLX?~kPo`})*&I5sAr(2$E4?^a z^4E*Fggz`4JGnsN+F5Rio9gNqQShSVdx%MoDg0y9j;&? zU=eFmSPDceVxFIy@%-FOtAx6lQfPb857nm01fu1Nm^2T5Qf|u474yp#^UD?U%SnF8 zY_dt^0t}>y98_w)nn_tT05Z*LKxAb=q%yK>EWX5H9#wD|Ab53T}IL0t+ zF}~P2G}MV5hzfn*e=Oo-a8K^x2{z5OAkNKRWS0}hsUY+1zrz3}q^mmT*D$*aatd9yh(;<6PJcTsJ8f2n=JKeZ%C$7ZRT9AEbqc_ zdRu3cRIf>@*ChSk%msoH9c46%VK;PjjugUk6(v-~Gx^Zm&N1U~8pGz{YD+m>hVtP& zl#Rpb5)eIn!hk;9zs=<2D4CO*=hRl5QVV@DB@297ox{))X>qeqqFE@>?D-4bo26lD z`e6V{xVKt)LqJU=giFI+)$p{p05l6>n)8t(OTA+r$=il`B=?(rq_^GhkjbkfZ7MIP z^t_zT^XgQd%&KcfGV6API(qwwN)6&J^ZI=YQAzZzv;HOhQylnqztS;I-N3min{3D5#jxMX{wEV5?Tu)4CC0h4UFF`QqCGNVT@v{mc4#6eauplU^N;aO=qG{b;7yUs}IY znGUnRIHGW2k-n3AZeH%U`Ap92Zx|U#rX&4)3}#$)0~S6Ch!qPjg{7N1*kMz#j73!0 zr6{O?1aK{i0aO*gqt)+d_d9azV8UiQTpiWq(Vt8=r;KGhaT)d$M!>}DQ4>S1<#{ZR zJl4Pv98eSs73X87(HiJq#B+f&PqpUF0UzbEP3Az6a=3ZPuAP-xfb~yh?fI)YnCj@z z2T(<0kZ(?dGOh=CTt^2d95lIG)y)N4lcdk{vWDf-v%OP+3QsF`4UQ|~?~NU~aOATx zYt{0W%6l7+;$35cNVwYgaYK?Zrw+JqOS^=Vkyi&?_{(yuPANE$3TgA1$e{1$G$=PG zvHdqEb?$PdPh52e1~X1oz?BoND+G3%<<8KY(FeU*n^k-l+>n}$!GbpuvdwB>DwS&E{}v#NZC4qN`06Js~4Sj(&igoeVCepv)gjANBmXFxaJ5K5gD1Z+N8aW zvPpWPNqVwLTCG<9RK7{5qo@Juw3IC_3@_^(=;`VoQ5P+EwueV2lq*|ETZ=JDB+*B` zK1elX%u#HK=+`WVVX85X&12qWtC-GX#^sy6^Dx?43>B6h+AYjD z)DZbtV-t?jc@z?6`g_IZi|2N?*jf2vr{;^Dnn$O`Cv=At4Z;$pde6(XnRD=t=V9(l zs*Iez)w#a8SadULYAmNgtXAx1p>4BkpWxBKIDzN=2_?#zC#Wm*3B?JH3$yf=h_&*< z3eSsJE3d>^IF&bsx{DWQxn5@7$cj?#YGv^Ddl7r(TU*T){)@B>5?6}#ct;}M$|_zB z7DFB+xUZ`PC+lX66<%`@%A5m)s>4YZR|g#BN!F>az;dIn^d@#%9q=GNONLjfwZL4- zt#?*pfAUu@B zDTa%yZruo1j1yOG=Wd%~u()!|cij$47!&HMm644)BRAztE^Bg|h3K-{XBB$^j5FzCbrw%%mADADclK7J zEUS12VBvWFvWbcSH>-}zNGJZ@4MO;`S#_pIxLV(`a?H*u=?eUr>ab-{$tff&Oq8sW zXrsPTAJq$}kK`xoXjUZWS;Zbh{It=@l5B>)Q-g@mUBx8930rY(T)9WPBKmdZKJ6+& z3*xCc<0?iW_~vr@P$FTtB_DM^hnp)5Tg^FFcx0|jc~?a6t}uOE5yiX0{BcDj?<&Hl z-1cU@3sb;YOw+>XDfC19ToCS;*xbsfIJ)}>M+#6VQ&Cb855b|M+=r`Zai0&JOn6;$ zMda+tW!@E5uPf&dS473GT)5rlw7wEm4B=vtTtDc3s+cft}Gj_8Z|gt3(?iwfLl6Ggwd{C>0J>@yGkgXayy!hQCev9 zJ}gh=1ibZ}8)K6XV`cs@MJkyiPaTxfh#9hSHuRcoM2rMAGmUob%ojOiaw32IHXw1 zWil&v72HByxd*tSXX6S7)>YiIl&kLPuqD25tX;R+u{B6ON^%a#q*uQ9i!Mf^x9AGbFsm5O$WIn$ z;o4gq8(3IW4paxGu0;_5QwLFOWMPk$AiykO>5LI@&!5 zUSRjw@Ni+Edxd1hD+gln=!DICCTwmNY%koa9+M6J++E03?Xh{)U2rRMq(u2D)!yN( zEDR4e@a@~efsPm@sqknoW+9Hsiw4JVt%Q#?(sv>w_CTK(i4%@4GAR|T(Gvz?St{x1 zqA;f=yAQet2&WtnJ_3!n0YVCWi+e|bggM92MN!F5)g_{Gk7`==M-yxNoqBieuseQB-c|27{LJ8!3R!OV|Owj~9H8fXhpHTkn`cHzWs?EGM|h>t8dY88b-pGiXV#wQKP#N>hIWva$BHGv1cnh)gUL61J98BOkRr?QPGwi6GSO`of`{e?c>d7zb(w|V|^1H2W09I=V>s(iai<&NUHR)vc@^WnnXn zTuYR-R9TQKkmoXGfrU>lY_4PtDeHJ;VOJ&35oJN{L9Q`nfq_e|6O@H*mt0`8khPL6 zTkYBKP+K-3wEa>P*(?c_?VB;$gvn2Bd_t%h4x(&Y2P)8_Fa={-?bg>k(baO1*nNh<;yfKwW4QW za2byvMyM5p$Os}-wL)Puf;b+Xx;UO{1*57J9FbeW7}tS=RUK4JK5G!_8)4-1k1%pa zUEK##>OumyI?<=pO&V^#u)tPZeM((;;8rL8 zRAbV{QJGuOTgC@vg^xsN+zF0jE>7Lzkb0;~N=n`6p|~P$*>6*d2?m`%sZTN)>+I=) zy7LIe&yqs-sKJ+VoRE|bbOVnijQo`8cp4)u(7O9Gsm)QT>B`3sMf1v0?$zsZ88*08_k7`17?CV!Eb8PXYU8fgXW?hk-3Q zt~?geouaqUH(I9LOAGzW`&f#A%}b?j?8w`Nkx}R`j23$A&f(#~6X-I*B{sW_*q#@S z&W5r`8-=8yI0Op^3}2iUXl=oh4`7n4DbB7^x~P}VA4@eSrI==r2FhSlLJ7EARdu=s zN7VtY*=;VC@AGVfRujq}8&c7G22W5eY)xg9&)86pv{_xap`O_m<1~D2;v)$iThLrS zQ&moEGy9c$4Vavyg@fZ9TsnjD8LioE;=rm +?~FT?E;L7#)pMI27eWT#}<%#LDZ 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 bHMl=0(Q~0LR5-gXY4J4AOyh!-RjU63fx4pI literal 0 HcmV?d00001 diff --git a/examples/ts-react-ui-chatbot/public/brand/fonts/Inter-latin.woff2 b/examples/ts-react-ui-chatbot/public/brand/fonts/Inter-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b0d0e2e5c6bc11bf3696f830d73b4f7077cc33a4 GIT binary patch literal 72920 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

PA1kxM>X}C)4Cw|l0ri~kthJMgZmD5j;BYmD! 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

{Pegpj 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

oR9O3D4_(l&vOI_L+1e*rKJ`%!KeXK-?Z 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 literal 0 HcmV?d00001 diff --git a/examples/ts-react-ui-chatbot/public/tanstack-word-logo-white.svg b/examples/ts-react-ui-chatbot/public/tanstack-word-logo-white.svg new file mode 100644 index 0000000000..b6ec5086c2 --- /dev/null +++ b/examples/ts-react-ui-chatbot/public/tanstack-word-logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/ts-react-ui-chatbot/src/chat/byok.ts b/examples/ts-react-ui-chatbot/src/chat/byok.ts new file mode 100644 index 0000000000..c902cf3d37 --- /dev/null +++ b/examples/ts-react-ui-chatbot/src/chat/byok.ts @@ -0,0 +1,9 @@ +import { defineByok, defaultByokStorage } from '@tanstack/ai-client/byok' + +export const byok = defineByok({ + storage: defaultByokStorage(), +}) + +// Env OPENAI_API_KEY on the server can fill the request. Do not block send +// when the browser has no saved key. +byok.setServerCoverage(true) diff --git a/examples/ts-react-ui-chatbot/src/chat/interrupts.ts b/examples/ts-react-ui-chatbot/src/chat/interrupts.ts new file mode 100644 index 0000000000..67dbed365c --- /dev/null +++ b/examples/ts-react-ui-chatbot/src/chat/interrupts.ts @@ -0,0 +1,17 @@ +import { defineInterrupt } from '@tanstack/ai' +import { z } from 'zod' + +export const BUDGET_OPTIONS = ['thrifty', 'comfort', 'splash'] as const + +export const chooseBudget = defineInterrupt({ + id: 'chooseBudget', + payloadSchema: z.object({ + city: z.string(), + options: z.array(z.enum(BUDGET_OPTIONS)), + }), + responseSchema: z.object({ + budget: z.enum(BUDGET_OPTIONS), + }), +}) + +export const chatInterrupts = [chooseBudget] diff --git a/examples/ts-react-ui-chatbot/src/chat/model.ts b/examples/ts-react-ui-chatbot/src/chat/model.ts new file mode 100644 index 0000000000..9c2910f112 --- /dev/null +++ b/examples/ts-react-ui-chatbot/src/chat/model.ts @@ -0,0 +1,7 @@ +import type { ChatModelId } from '@/components/ai/model-selector' + +export let selectedModel: ChatModelId = 'gpt-5.5' + +export function setSelectedModel(next: ChatModelId) { + selectedModel = next +} diff --git a/examples/ts-react-ui-chatbot/src/chat/options.ts b/examples/ts-react-ui-chatbot/src/chat/options.ts new file mode 100644 index 0000000000..2e26e39013 --- /dev/null +++ b/examples/ts-react-ui-chatbot/src/chat/options.ts @@ -0,0 +1,17 @@ +import { fetchServerSentEvents } from '@tanstack/ai-react' +import { createUI } from '@tanstack/ai-react-ui' +import { byok } from './byok' +import { chatInterrupts } from './interrupts' +import { itinerarySchema } from './schema' +import { clientTools } from './tools' + +export const chatOptions = { + connection: fetchServerSentEvents('/api/chat'), + tools: clientTools, + interrupts: chatInterrupts, + outputSchema: itinerarySchema, + byok, + byokProvider: () => 'openai' as const, +} + +export const UI = createUI(chatOptions) diff --git a/examples/ts-react-ui-chatbot/src/chat/schema.ts b/examples/ts-react-ui-chatbot/src/chat/schema.ts new file mode 100644 index 0000000000..76bcb1fa77 --- /dev/null +++ b/examples/ts-react-ui-chatbot/src/chat/schema.ts @@ -0,0 +1,12 @@ +import { z } from 'zod' + +export const itinerarySchema = z.object({ + title: z.string(), + summary: z.string(), + days: z.array( + z.object({ + label: z.string(), + plan: z.string(), + }), + ), +}) diff --git a/examples/ts-react-ui-chatbot/src/chat/tools.ts b/examples/ts-react-ui-chatbot/src/chat/tools.ts new file mode 100644 index 0000000000..278a2e47b6 --- /dev/null +++ b/examples/ts-react-ui-chatbot/src/chat/tools.ts @@ -0,0 +1,48 @@ +import { toolDefinition } from '@tanstack/ai' +import { z } from 'zod' + +export const lookupPlace = toolDefinition({ + name: 'lookupPlace', + description: 'Look up a place, weather, and citation links.', + inputSchema: z.object({ city: z.string() }), + outputSchema: z.object({ + city: z.string(), + blurb: z.string(), + sources: z.array(z.object({ title: z.string(), url: z.string() })), + }), +}) + +export const bookStay = toolDefinition({ + name: 'bookStay', + description: 'Hold a hotel or guesthouse. Needs approval before it runs.', + needsApproval: true, + inputSchema: z.object({ + city: z.string(), + nights: z.number(), + }), + outputSchema: z.object({ + ok: z.boolean(), + confirmation: z.string(), + }), +}) + +export const confirmPayment = toolDefinition({ + name: 'confirmPayment', + description: + 'Demo hold for a trip amount. Call this when the user asks to pay or hold a charge. Not a real card charge.', + needsApproval: true, + inputSchema: z.object({ + city: z.string(), + amount: z.number(), + }), + outputSchema: z.object({ + ok: z.boolean(), + receipt: z.string(), + }), +}) + +export const clientTools = [ + lookupPlace.client(), + bookStay.client(), + confirmPayment.client(), +] diff --git a/examples/ts-react-ui-chatbot/src/components/ai/conversation.tsx b/examples/ts-react-ui-chatbot/src/components/ai/conversation.tsx new file mode 100644 index 0000000000..e016d9b095 --- /dev/null +++ b/examples/ts-react-ui-chatbot/src/components/ai/conversation.tsx @@ -0,0 +1,103 @@ +import type { ComponentProps } from 'react' +import { useCallback } from 'react' +import { ArrowDownIcon } from 'lucide-react' +import { StickToBottom, useStickToBottomContext } from 'use-stick-to-bottom' +import { Button } from '@/components/ui/button' +import cn from '@/utils/cn' + +export type ConversationProps = ComponentProps + +export function Conversation({ className, ...props }: ConversationProps) { + return ( + + ) +} + +export type ConversationContentProps = ComponentProps< + typeof StickToBottom.Content +> + +export function ConversationContent({ + className, + ...props +}: ConversationContentProps) { + return ( + + ) +} + +export type ConversationEmptyStateProps = ComponentProps<'div'> & { + title?: string + description?: string + icon?: React.ReactNode +} + +export function ConversationEmptyState({ + className, + title = 'No messages yet', + description = 'Start a conversation to see messages here', + icon, + children, + ...props +}: ConversationEmptyStateProps) { + return ( +

+ ) +} + +export type ConversationScrollButtonProps = ComponentProps + +export function ConversationScrollButton({ + className, + ...props +}: ConversationScrollButtonProps) { + const { isAtBottom, scrollToBottom } = useStickToBottomContext() + const handleScrollToBottom = useCallback(() => { + scrollToBottom() + }, [scrollToBottom]) + + if (isAtBottom) return null + + return ( + + ) +} diff --git a/examples/ts-react-ui-chatbot/src/components/ai/message.tsx b/examples/ts-react-ui-chatbot/src/components/ai/message.tsx new file mode 100644 index 0000000000..38bc30f689 --- /dev/null +++ b/examples/ts-react-ui-chatbot/src/components/ai/message.tsx @@ -0,0 +1,89 @@ +import type { HTMLAttributes } from 'react' +import { memo } from 'react' +import Markdown from 'react-markdown' +import remarkGfm from 'remark-gfm' +import cn from '@/utils/cn' + +export type MessageProps = HTMLAttributes & { + from: 'user' | 'assistant' | 'system' +} + +export function Message({ className, from, ...props }: MessageProps) { + return ( +
+ ) +} + +export type MessageContentProps = HTMLAttributes + +export function MessageContent({ + children, + className, + ...props +}: MessageContentProps) { + return ( +
+ {children} +
+ ) +} + +export type MessageAvatarProps = { + name?: string + src?: string + className?: string +} + +export function MessageAvatar({ name, src, className }: MessageAvatarProps) { + const initials = (name ?? '?').slice(0, 1).toUpperCase() + return ( +
+ {src ? ( + {name} + ) : ( + initials + )} +
+ ) +} + +export const MessageResponse = memo(function MessageResponse({ + className, + children, +}: { + className?: string + children?: React.ReactNode +}) { + const text = typeof children === 'string' ? children : String(children ?? '') + return ( +
*:first-child]:mt-0 [&>*:last-child]:mb-0', + className, + )} + > + {text} +
+ ) +}) diff --git a/examples/ts-react-ui-chatbot/src/components/ai/model-selector.tsx b/examples/ts-react-ui-chatbot/src/components/ai/model-selector.tsx new file mode 100644 index 0000000000..1b751fddf7 --- /dev/null +++ b/examples/ts-react-ui-chatbot/src/components/ai/model-selector.tsx @@ -0,0 +1,42 @@ +import { + PromptInputModelSelect, + PromptInputModelSelectContent, + PromptInputModelSelectItem, + PromptInputModelSelectTrigger, + PromptInputModelSelectValue, +} from '@/components/ai/prompt-input' + +export const CHAT_MODELS = [ + { id: 'gpt-5.5', label: 'GPT-5.5' }, + { id: 'gpt-5.2', label: 'GPT-5.2' }, +] as const + +export type ChatModelId = (typeof CHAT_MODELS)[number]['id'] + +export function ModelSelector({ + value, + onChange, +}: { + value: ChatModelId + onChange: (value: ChatModelId) => void +}) { + return ( + { + if (next === 'gpt-5.5' || next === 'gpt-5.2') onChange(next) + }} + value={value} + > + + + + + {CHAT_MODELS.map((model) => ( + + {model.label} + + ))} + + + ) +} diff --git a/examples/ts-react-ui-chatbot/src/components/ai/prompt-input.tsx b/examples/ts-react-ui-chatbot/src/components/ai/prompt-input.tsx new file mode 100644 index 0000000000..dc3fde7661 --- /dev/null +++ b/examples/ts-react-ui-chatbot/src/components/ai/prompt-input.tsx @@ -0,0 +1,124 @@ +import type { ComponentProps, FormEvent } from 'react' +import { Loader2Icon, SendIcon, SquareIcon } from 'lucide-react' +import { Button } from '@/components/ui/button' +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '@/components/ui/select' +import cn from '@/utils/cn' + +export function PromptInput({ + className, + onSubmit, + ...props +}: ComponentProps<'form'>) { + return ( + + ) +} + +export function PromptInputTextarea({ + className, + ...props +}: ComponentProps<'textarea'>) { + return ( +

pc1s;McND3OpYOB1w(~IhfaAR@krpZ&3xU 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 TLuMqV=vyDN|CE#X0RR91K>c5) literal 0 HcmV?d00001 diff --git a/examples/ts-react-ui-chatbot/public/brand/fonts/OFL-Bricolage-Grotesque.txt b/examples/ts-react-ui-chatbot/public/brand/fonts/OFL-Bricolage-Grotesque.txt new file mode 100644 index 0000000000..4dfd4fe066 --- /dev/null +++ b/examples/ts-react-ui-chatbot/public/brand/fonts/OFL-Bricolage-Grotesque.txt @@ -0,0 +1,93 @@ +Copyright 2022 The Bricolage Grotesque Project Authors (https://github.com/ateliertriay/bricolage) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/examples/ts-react-ui-chatbot/public/brand/logos/tanstack-emblem-cream.svg b/examples/ts-react-ui-chatbot/public/brand/logos/tanstack-emblem-cream.svg new file mode 100644 index 0000000000..ce610b729e --- /dev/null +++ b/examples/ts-react-ui-chatbot/public/brand/logos/tanstack-emblem-cream.svg @@ -0,0 +1 @@ + diff --git a/examples/ts-react-ui-chatbot/public/brand/logos/tanstack-landscape-white.svg b/examples/ts-react-ui-chatbot/public/brand/logos/tanstack-landscape-white.svg new file mode 100644 index 0000000000..50ad4162f5 --- /dev/null +++ b/examples/ts-react-ui-chatbot/public/brand/logos/tanstack-landscape-white.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + diff --git a/examples/ts-react-ui-chatbot/public/favicon.ico b/examples/ts-react-ui-chatbot/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/examples/ts-react-ui-chatbot/public/tanstack-circle-logo.png b/examples/ts-react-ui-chatbot/public/tanstack-circle-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9db3e67bade15d9ced50bdfc2393359c5f6f5712 GIT binary patch literal 265387 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ϟKoY=Snqfy1)i`l$#Yvv>#w{lM68ok2%j-k9O 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%0A(FZ&@S*K}LKE%X8U=5NC^*)q#N-fWN^U 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