@assistant-ui/mcp-docs-server 0.1.32 → 0.1.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.docs/organized/code-examples/waterfall.md +20 -22
- package/.docs/organized/code-examples/with-a2a.md +24 -24
- package/.docs/organized/code-examples/with-ag-ui.md +30 -25
- package/.docs/organized/code-examples/with-ai-sdk-v6.md +11 -9
- package/.docs/organized/code-examples/with-artifacts.md +49 -37
- package/.docs/organized/code-examples/with-assistant-transport.md +63 -51
- package/.docs/organized/code-examples/with-browser-extension.md +22 -10
- package/.docs/organized/code-examples/with-chain-of-thought.md +406 -87
- package/.docs/organized/code-examples/with-cloud-standalone.md +25 -24
- package/.docs/organized/code-examples/with-cloud.md +11 -9
- package/.docs/organized/code-examples/with-custom-thread-list.md +14 -12
- package/.docs/organized/code-examples/with-elevenlabs-conversational.md +23 -21
- package/.docs/organized/code-examples/with-elevenlabs-scribe.md +14 -13
- package/.docs/organized/code-examples/with-expo.md +44 -29
- package/.docs/organized/code-examples/with-external-store.md +9 -7
- package/.docs/organized/code-examples/with-ffmpeg.md +322 -285
- package/.docs/organized/code-examples/with-generative-ui.md +1066 -256
- package/.docs/organized/code-examples/with-google-adk.md +10 -8
- package/.docs/organized/code-examples/with-heat-graph.md +13 -11
- package/.docs/organized/code-examples/with-image-generation.md +19 -17
- package/.docs/organized/code-examples/with-interactables.md +317 -239
- package/.docs/organized/code-examples/with-langchain.md +14 -12
- package/.docs/organized/code-examples/with-langgraph.md +91 -83
- package/.docs/organized/code-examples/with-livekit.md +24 -22
- package/.docs/organized/code-examples/with-mcp.md +18 -12
- package/.docs/organized/code-examples/with-opencode.md +66 -66
- package/.docs/organized/code-examples/with-react-hook-form.md +19 -17
- package/.docs/organized/code-examples/with-react-ink.md +297 -102
- package/.docs/organized/code-examples/with-react-router.md +17 -15
- package/.docs/organized/code-examples/with-resumable-stream.md +15 -14
- package/.docs/organized/code-examples/with-store.md +78 -76
- package/.docs/organized/code-examples/with-tanstack.md +13 -14
- package/.docs/organized/code-examples/with-tap-runtime.md +26 -24
- package/.docs/raw/docs/(docs)/architecture.mdx +94 -42
- package/.docs/raw/docs/(docs)/cli.mdx +1 -2
- package/.docs/raw/docs/(docs)/installation.mdx +1 -1
- package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +5 -1
- package/.docs/raw/docs/(reference)/api-reference/external-store/message-conversion.mdx +15 -15
- package/.docs/raw/docs/(reference)/api-reference/external-store/runtime.mdx +14 -1
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/index.mdx +18 -0
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/rendering.mdx +33 -0
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/spec.mdx +45 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/composer-triggers.mdx +41 -41
- package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +19 -1
- package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +122 -122
- package/.docs/raw/docs/(reference)/api-reference/integrations/react-ai-sdk.mdx +43 -2
- package/.docs/raw/docs/(reference)/api-reference/model-context/context.mdx +6 -0
- package/.docs/raw/docs/(reference)/api-reference/overview.mdx +4 -6
- package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +30 -0
- package/.docs/raw/docs/(reference)/api-reference/tools/component-tools.mdx +20 -3
- package/.docs/raw/docs/(reference)/api-reference/tools/index.mdx +8 -8
- package/.docs/raw/docs/(reference)/api-reference/tools/rendering.mdx +52 -4
- package/.docs/raw/docs/(reference)/api-reference/tools/toolkits.mdx +100 -10
- package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +7 -59
- package/.docs/raw/docs/cloud/ai-sdk.mdx +0 -2
- package/.docs/raw/docs/{(docs)/copilots → copilots}/model-context.mdx +34 -26
- package/.docs/raw/docs/{(docs)/copilots → copilots}/motivation.mdx +32 -26
- package/.docs/raw/docs/guides/chain-of-thought.mdx +7 -9
- package/.docs/raw/docs/guides/context-api.mdx +2 -1
- package/.docs/raw/docs/guides/index.mdx +3 -12
- package/.docs/raw/docs/guides/mentions.mdx +4 -4
- package/.docs/raw/docs/guides/slash-commands.mdx +1 -1
- package/.docs/raw/docs/guides/suggestions.mdx +1 -1
- package/.docs/raw/docs/ink/adapters.mdx +23 -1
- package/.docs/raw/docs/ink/hooks.mdx +101 -85
- package/.docs/raw/docs/ink/migration.mdx +1 -1
- package/.docs/raw/docs/ink/primitives.mdx +2 -2
- package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +1 -1
- package/.docs/raw/docs/integrations/index.mdx +2 -2
- package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +17 -2
- package/.docs/raw/docs/migrations/toolkit-tools.mdx +232 -0
- package/.docs/raw/docs/primitives/chain-of-thought.mdx +10 -16
- package/.docs/raw/docs/primitives/message.mdx +9 -10
- package/.docs/raw/docs/react-native/hooks.mdx +62 -79
- package/.docs/raw/docs/react-native/migration.mdx +1 -1
- package/.docs/raw/docs/react-native/primitives.mdx +2 -2
- package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +3 -0
- package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +41 -0
- package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +122 -1
- package/.docs/raw/docs/runtimes/concepts/architecture.mdx +46 -4
- package/.docs/raw/docs/runtimes/concepts/threads.mdx +7 -1
- package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +54 -12
- package/.docs/raw/docs/runtimes/custom/external-store.mdx +62 -4
- package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +30 -7
- package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +108 -38
- package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +2 -2
- package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +14 -1
- package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +64 -50
- package/.docs/raw/docs/runtimes/langgraph/tutorial/part-3.mdx +98 -86
- package/.docs/raw/docs/tools/backend.mdx +144 -0
- package/.docs/raw/docs/tools/defining-tools.mdx +538 -0
- package/.docs/raw/docs/tools/dynamic-tools.mdx +110 -0
- package/.docs/raw/docs/tools/generative-ui.mdx +214 -0
- package/.docs/raw/docs/tools/index.mdx +71 -0
- package/.docs/raw/docs/{guides → tools}/interactables.mdx +1 -1
- package/.docs/raw/docs/{integrations/tools → tools}/mcp.mdx +145 -50
- package/.docs/raw/docs/{guides → tools}/multi-agent.mdx +15 -17
- package/.docs/raw/docs/tools/tool-ui.mdx +967 -0
- package/.docs/raw/docs/{integrations/tools/react-mcp.mdx → tools/user-managed-mcp.mdx} +7 -7
- package/.docs/raw/docs/ui/directive-text.mdx +3 -3
- package/.docs/raw/docs/ui/mcp-config.mdx +4 -4
- package/.docs/raw/docs/ui/mermaid.mdx +16 -9
- package/.docs/raw/docs/ui/part-grouping.mdx +84 -50
- package/.docs/raw/docs/ui/reasoning.mdx +4 -5
- package/.docs/raw/docs/ui/tool-fallback.mdx +16 -0
- package/.docs/raw/docs/ui/tool-group.mdx +5 -6
- package/.docs/raw/docs/utilities/heat-graph.mdx +1 -1
- package/.docs/raw/docs/utilities/react-o11y.mdx +2 -2
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/prepare-docs/code-examples.d.ts.map +1 -1
- package/dist/prepare-docs/code-examples.js.map +1 -1
- package/dist/prepare-docs/copy-raw.d.ts.map +1 -1
- package/dist/prepare-docs/copy-raw.js.map +1 -1
- package/dist/prepare-docs/prepare.js.map +1 -1
- package/dist/stdio.js.map +1 -1
- package/dist/tools/docs.js.map +1 -1
- package/dist/tools/examples.js.map +1 -1
- package/dist/tools/tests/test-setup.js.map +1 -1
- package/dist/utils/mdx.js.map +1 -1
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js.map +1 -1
- package/package.json +5 -5
- package/.docs/organized/code-examples/with-parent-id-grouping.md +0 -596
- package/.docs/raw/docs/(docs)/copilots/make-assistant-tool-ui.mdx +0 -151
- package/.docs/raw/docs/(docs)/copilots/make-assistant-tool.mdx +0 -230
- package/.docs/raw/docs/guides/generative-ui.mdx +0 -142
- package/.docs/raw/docs/guides/tool-ui.mdx +0 -858
- package/.docs/raw/docs/guides/tools.mdx +0 -736
- /package/.docs/raw/docs/{(docs)/copilots → copilots}/assistant-frame.mdx +0 -0
- /package/.docs/raw/docs/{(docs)/copilots → copilots}/make-assistant-visible.mdx +0 -0
- /package/.docs/raw/docs/{(docs)/copilots → copilots}/use-assistant-instructions.mdx +0 -0
- /package/.docs/raw/docs/{guides → tools}/mcp-apps.mdx +0 -0
|
@@ -82,10 +82,10 @@ export default function Home() {
|
|
|
82
82
|
<div className="min-h-screen bg-linear-to-br from-gray-50 to-gray-100 p-8 dark:from-gray-900 dark:to-gray-800">
|
|
83
83
|
<div className="mx-auto max-w-4xl">
|
|
84
84
|
<div className="mb-8">
|
|
85
|
-
<h1 className="mb-2 font-bold text-
|
|
85
|
+
<h1 className="mb-2 text-4xl font-bold text-gray-900 dark:text-white">
|
|
86
86
|
@assistant-ui/store Example
|
|
87
87
|
</h1>
|
|
88
|
-
<p className="text-gray-600
|
|
88
|
+
<p className="text-lg text-gray-600 dark:text-gray-400">
|
|
89
89
|
Demonstrating tap-based state management with scopes, lists, and
|
|
90
90
|
providers
|
|
91
91
|
</p>
|
|
@@ -134,15 +134,15 @@ const Foo = () => {
|
|
|
134
134
|
<div className="rounded-lg border border-gray-200 bg-white p-6 shadow-md transition-shadow hover:shadow-lg dark:border-gray-700 dark:bg-gray-800">
|
|
135
135
|
<div className="space-y-3">
|
|
136
136
|
<div className="flex items-center gap-2">
|
|
137
|
-
<span className="font-semibold text-gray-500
|
|
137
|
+
<span className="text-sm font-semibold text-gray-500 dark:text-gray-400">
|
|
138
138
|
ID:
|
|
139
139
|
</span>
|
|
140
|
-
<span className="font-mono text-gray-900
|
|
140
|
+
<span className="font-mono text-sm text-gray-900 dark:text-white">
|
|
141
141
|
{fooId}
|
|
142
142
|
</span>
|
|
143
143
|
</div>
|
|
144
144
|
<div className="flex items-center gap-2">
|
|
145
|
-
<span className="font-semibold text-gray-500
|
|
145
|
+
<span className="text-sm font-semibold text-gray-500 dark:text-gray-400">
|
|
146
146
|
Value:
|
|
147
147
|
</span>
|
|
148
148
|
<span className="text-gray-900 dark:text-white">{fooBar}</span>
|
|
@@ -151,14 +151,14 @@ const Foo = () => {
|
|
|
151
151
|
<button
|
|
152
152
|
type="button"
|
|
153
153
|
onClick={handleUpdate}
|
|
154
|
-
className="flex-1 rounded-md bg-blue-600 px-4 py-2 font-medium text-white transition-colors hover:bg-blue-700 focus:
|
|
154
|
+
className="flex-1 rounded-md bg-blue-600 px-4 py-2 font-medium text-white transition-colors hover:bg-blue-700 focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 focus:outline-none dark:focus:ring-offset-gray-800"
|
|
155
155
|
>
|
|
156
156
|
Update
|
|
157
157
|
</button>
|
|
158
158
|
<button
|
|
159
159
|
type="button"
|
|
160
160
|
onClick={() => aui.foo().remove()}
|
|
161
|
-
className="rounded-md bg-red-600 px-4 py-2 font-medium text-white transition-colors hover:bg-red-700 focus:
|
|
161
|
+
className="rounded-md bg-red-600 px-4 py-2 font-medium text-white transition-colors hover:bg-red-700 focus:ring-2 focus:ring-red-500 focus:ring-offset-2 focus:outline-none dark:focus:ring-offset-gray-800"
|
|
162
162
|
>
|
|
163
163
|
Delete
|
|
164
164
|
</button>
|
|
@@ -183,7 +183,7 @@ const AddFooButton = () => {
|
|
|
183
183
|
<button
|
|
184
184
|
type="button"
|
|
185
185
|
onClick={() => aui.fooList().addFoo()}
|
|
186
|
-
className="rounded-md bg-green-600 px-4 py-2 font-medium text-white transition-colors hover:bg-green-700 focus:
|
|
186
|
+
className="rounded-md bg-green-600 px-4 py-2 font-medium text-white transition-colors hover:bg-green-700 focus:ring-2 focus:ring-green-500 focus:ring-offset-2 focus:outline-none dark:focus:ring-offset-gray-800"
|
|
187
187
|
>
|
|
188
188
|
Add New
|
|
189
189
|
</button>
|
|
@@ -224,7 +224,7 @@ const EventLog = () => {
|
|
|
224
224
|
</h3>
|
|
225
225
|
<div className="max-h-48 space-y-2 overflow-y-auto">
|
|
226
226
|
{logs.length === 0 ? (
|
|
227
|
-
<p className="text-gray-500
|
|
227
|
+
<p className="text-sm text-gray-500 dark:text-gray-400">
|
|
228
228
|
No events yet. Try updating or deleting a foo.
|
|
229
229
|
</p>
|
|
230
230
|
) : (
|
|
@@ -266,12 +266,12 @@ export const ExampleApp = () => {
|
|
|
266
266
|
<div className="space-y-6">
|
|
267
267
|
<div className="rounded-lg border border-gray-200 bg-white p-4 shadow-sm dark:border-gray-700 dark:bg-gray-800">
|
|
268
268
|
<div className="flex items-center justify-between">
|
|
269
|
-
<h2 className="font-semibold text-gray-900
|
|
269
|
+
<h2 className="text-xl font-semibold text-gray-900 dark:text-white">
|
|
270
270
|
Foo List <FooListLength />
|
|
271
271
|
</h2>
|
|
272
272
|
<AddFooButton />
|
|
273
273
|
</div>
|
|
274
|
-
<p className="mt-1 text-gray-600
|
|
274
|
+
<p className="mt-1 text-sm text-gray-600 dark:text-gray-400">
|
|
275
275
|
Each item is rendered in its own FooProvider with scoped access
|
|
276
276
|
</p>
|
|
277
277
|
</div>
|
|
@@ -339,80 +339,80 @@ declare module "@assistant-ui/store" {
|
|
|
339
339
|
|
|
340
340
|
import "./foo-scope";
|
|
341
341
|
|
|
342
|
-
import { type ReactNode, useMemo } from "react";
|
|
343
|
-
import { resource
|
|
342
|
+
import { type ReactNode, useMemo, useState } from "react";
|
|
343
|
+
import { resource } from "@assistant-ui/tap";
|
|
344
344
|
import {
|
|
345
345
|
useAui,
|
|
346
346
|
useAuiState,
|
|
347
347
|
AuiProvider,
|
|
348
|
-
|
|
348
|
+
useClientList,
|
|
349
349
|
Derived,
|
|
350
|
-
|
|
350
|
+
useAssistantEmit,
|
|
351
351
|
RenderChildrenWithAccessor,
|
|
352
352
|
type ClientOutput,
|
|
353
353
|
} from "@assistant-ui/store";
|
|
354
354
|
|
|
355
355
|
type FooData = { id: string; bar: string };
|
|
356
356
|
|
|
357
|
-
export const FooItemResource = resource(
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
const emit = tapAssistantEmit();
|
|
357
|
+
export const FooItemResource = resource(function FooItemResource({
|
|
358
|
+
getInitialData,
|
|
359
|
+
remove,
|
|
360
|
+
}: useClientList.ResourceProps<FooData>): ClientOutput<"foo"> {
|
|
361
|
+
const emit = useAssistantEmit();
|
|
363
362
|
|
|
364
|
-
|
|
363
|
+
const [state, setState] = useState<FooData>(getInitialData);
|
|
365
364
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
365
|
+
const updateBar = (newBar: string) => {
|
|
366
|
+
setState({ ...state, bar: newBar });
|
|
367
|
+
emit("foo.updated", { id: state.id, newValue: newBar });
|
|
368
|
+
};
|
|
370
369
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
370
|
+
const handleRemove = () => {
|
|
371
|
+
emit("foo.removed", { id: state.id });
|
|
372
|
+
remove();
|
|
373
|
+
};
|
|
375
374
|
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
);
|
|
375
|
+
return {
|
|
376
|
+
getState: () => state,
|
|
377
|
+
updateBar,
|
|
378
|
+
remove: handleRemove,
|
|
379
|
+
};
|
|
380
|
+
});
|
|
383
381
|
|
|
384
382
|
let counter = 3;
|
|
385
|
-
export const FooListResource = resource(
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
383
|
+
export const FooListResource = resource(function FooListResource({
|
|
384
|
+
initialValues,
|
|
385
|
+
}: {
|
|
386
|
+
initialValues: boolean;
|
|
387
|
+
}): ClientOutput<"fooList"> {
|
|
388
|
+
const emit = useAssistantEmit();
|
|
389
|
+
|
|
390
|
+
const foos = useClientList({
|
|
391
|
+
initialValues: initialValues
|
|
392
|
+
? [
|
|
393
|
+
{ id: "foo-1", bar: "First Foo" },
|
|
394
|
+
{ id: "foo-2", bar: "Second Foo" },
|
|
395
|
+
{ id: "foo-3", bar: "Third Foo" },
|
|
396
|
+
]
|
|
397
|
+
: [],
|
|
398
|
+
getKey: (foo) => foo.id,
|
|
399
|
+
resource: FooItemResource,
|
|
400
|
+
});
|
|
400
401
|
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
402
|
+
const addFoo = () => {
|
|
403
|
+
const id = `foo-${++counter}`;
|
|
404
|
+
foos.add({ id: id, bar: `New Foo` });
|
|
405
|
+
emit("fooList.added", { id: id });
|
|
406
|
+
};
|
|
406
407
|
|
|
407
|
-
|
|
408
|
+
const state = useMemo(() => ({ foos: foos.state }), [foos.state]);
|
|
408
409
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
);
|
|
410
|
+
return {
|
|
411
|
+
getState: () => state,
|
|
412
|
+
foo: foos.get,
|
|
413
|
+
addFoo,
|
|
414
|
+
};
|
|
415
|
+
});
|
|
416
416
|
|
|
417
417
|
const FooProvider = ({
|
|
418
418
|
index,
|
|
@@ -465,13 +465,14 @@ export const FooList = ({
|
|
|
465
465
|
## next.config.ts
|
|
466
466
|
|
|
467
467
|
```typescript
|
|
468
|
+
import { withAui } from "@assistant-ui/next";
|
|
468
469
|
import type { NextConfig } from "next";
|
|
469
470
|
|
|
470
471
|
const nextConfig: NextConfig = {
|
|
471
472
|
/* config options here */
|
|
472
473
|
};
|
|
473
474
|
|
|
474
|
-
export default nextConfig;
|
|
475
|
+
export default withAui(nextConfig);
|
|
475
476
|
|
|
476
477
|
```
|
|
477
478
|
|
|
@@ -491,15 +492,16 @@ export default nextConfig;
|
|
|
491
492
|
"dependencies": {
|
|
492
493
|
"@assistant-ui/store": "workspace:*",
|
|
493
494
|
"@assistant-ui/tap": "workspace:*",
|
|
494
|
-
"next": "^16.2.
|
|
495
|
-
"react": "^19.2.
|
|
496
|
-
"react-dom": "^19.2.
|
|
495
|
+
"next": "^16.2.7",
|
|
496
|
+
"react": "^19.2.7",
|
|
497
|
+
"react-dom": "^19.2.7"
|
|
497
498
|
},
|
|
498
499
|
"devDependencies": {
|
|
500
|
+
"@assistant-ui/next": "workspace:*",
|
|
499
501
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
500
502
|
"@tailwindcss/postcss": "^4.3.0",
|
|
501
|
-
"@types/node": "^25.9.
|
|
502
|
-
"@types/react": "^19.2.
|
|
503
|
+
"@types/node": "^25.9.2",
|
|
504
|
+
"@types/react": "^19.2.17",
|
|
503
505
|
"@types/react-dom": "^19.2.3",
|
|
504
506
|
"postcss": "^8.5.15",
|
|
505
507
|
"tailwindcss": "^4.3.0",
|
|
@@ -520,8 +522,8 @@ This is a Next.js application demonstrating the `@assistant-ui/store` package.
|
|
|
520
522
|
## Features Demonstrated
|
|
521
523
|
|
|
522
524
|
- **Client Registry**: Module augmentation for type-safe client definitions
|
|
523
|
-
- **
|
|
524
|
-
- **
|
|
525
|
+
- **useClientList**: Managing lists with index and key lookup
|
|
526
|
+
- **useAssistantEmit**: Emitting and subscribing to scoped events
|
|
525
527
|
- **Derived**: Creating derived client scopes from parent resources
|
|
526
528
|
- **Provider Pattern**: Scoped access to list items via FooProvider
|
|
527
529
|
- **Component Composition**: Render props pattern with components prop
|
|
@@ -585,10 +587,10 @@ declare module "@assistant-ui/store" {
|
|
|
585
587
|
|
|
586
588
|
```typescript
|
|
587
589
|
const FooListResource = resource(
|
|
588
|
-
({ initialValues }): ClientOutput<"fooList">
|
|
589
|
-
const emit =
|
|
590
|
+
function FooListResource({ initialValues }): ClientOutput<"fooList"> {
|
|
591
|
+
const emit = useAssistantEmit();
|
|
590
592
|
|
|
591
|
-
const foos =
|
|
593
|
+
const foos = useClientList({
|
|
592
594
|
initialValues: initialValues ? [/* ... */] : [],
|
|
593
595
|
getKey: (foo) => foo.id,
|
|
594
596
|
resource: FooItemResource,
|
|
@@ -65,15 +65,15 @@
|
|
|
65
65
|
"@assistant-ui/react": "workspace:*",
|
|
66
66
|
"@assistant-ui/react-markdown": "workspace:*",
|
|
67
67
|
"@tailwindcss/vite": "^4.3.0",
|
|
68
|
-
"@tanstack/react-router": "^1.170.
|
|
69
|
-
"@tanstack/react-start": "^1.168.
|
|
68
|
+
"@tanstack/react-router": "^1.170.15",
|
|
69
|
+
"@tanstack/react-start": "^1.168.25",
|
|
70
70
|
"class-variance-authority": "^0.7.1",
|
|
71
71
|
"clsx": "^2.1.1",
|
|
72
|
-
"lucide-react": "^1.
|
|
72
|
+
"lucide-react": "^1.17.0",
|
|
73
73
|
"nitro": "^3.0.260311-beta",
|
|
74
|
-
"openai": "^6.
|
|
75
|
-
"react": "^19.2.
|
|
76
|
-
"react-dom": "^19.2.
|
|
74
|
+
"openai": "^6.42.0",
|
|
75
|
+
"react": "^19.2.7",
|
|
76
|
+
"react-dom": "^19.2.7",
|
|
77
77
|
"remark-gfm": "^4.0.1",
|
|
78
78
|
"tailwind-merge": "^3.6.0",
|
|
79
79
|
"tailwindcss": "^4.3.0",
|
|
@@ -81,12 +81,12 @@
|
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
83
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
84
|
-
"@types/node": "^25.9.
|
|
85
|
-
"@types/react": "^19.2.
|
|
84
|
+
"@types/node": "^25.9.2",
|
|
85
|
+
"@types/react": "^19.2.17",
|
|
86
86
|
"@types/react-dom": "^19.2.3",
|
|
87
87
|
"@vitejs/plugin-react": "^6.0.2",
|
|
88
88
|
"typescript": "^6.0.3",
|
|
89
|
-
"vite": "^8.0.
|
|
89
|
+
"vite": "^8.0.16"
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
|
|
@@ -303,7 +303,6 @@ export const Route = createRootRoute({
|
|
|
303
303
|
function RootDocument({ children }: { children: React.ReactNode }) {
|
|
304
304
|
return (
|
|
305
305
|
<html lang="en">
|
|
306
|
-
{/* biome-ignore lint/style/noHeadElement: TanStack Start uses standard HTML head */}
|
|
307
306
|
<head>
|
|
308
307
|
<HeadContent />
|
|
309
308
|
</head>
|
|
@@ -556,15 +555,16 @@ export const chatStream = createServerFn({ method: "POST" })
|
|
|
556
555
|
}
|
|
557
556
|
body {
|
|
558
557
|
@apply bg-background text-foreground m-0;
|
|
559
|
-
font-family:
|
|
558
|
+
font-family:
|
|
559
|
+
-apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
|
|
560
560
|
"Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
|
|
561
561
|
sans-serif;
|
|
562
562
|
-webkit-font-smoothing: antialiased;
|
|
563
563
|
-moz-osx-font-smoothing: grayscale;
|
|
564
564
|
}
|
|
565
565
|
code {
|
|
566
|
-
font-family:
|
|
567
|
-
monospace;
|
|
566
|
+
font-family:
|
|
567
|
+
source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;
|
|
568
568
|
}
|
|
569
569
|
}
|
|
570
570
|
|
|
@@ -737,7 +737,6 @@ export const chatStream = createServerFn({ method: "POST" })
|
|
|
737
737
|
{
|
|
738
738
|
"extends": "@assistant-ui/x-buildutils/ts/base",
|
|
739
739
|
"compilerOptions": {
|
|
740
|
-
"types": ["vite/client"],
|
|
741
740
|
"paths": {
|
|
742
741
|
"@/*": ["./src/*"],
|
|
743
742
|
"@/components/assistant-ui/*": [
|
|
@@ -363,7 +363,7 @@ export function MyRuntimeProvider({ children }: { children: React.ReactNode }) {
|
|
|
363
363
|
{children}
|
|
364
364
|
|
|
365
365
|
{/* Control panel */}
|
|
366
|
-
<div className="border-t
|
|
366
|
+
<div className="bg-card border-t p-4">
|
|
367
367
|
<div className="mx-auto flex max-w-2xl flex-col gap-2">
|
|
368
368
|
<div className="flex items-center gap-2">
|
|
369
369
|
<span className="text-muted-foreground text-sm">Controls:</span>
|
|
@@ -379,7 +379,7 @@ export function MyRuntimeProvider({ children }: { children: React.ReactNode }) {
|
|
|
379
379
|
},
|
|
380
380
|
]);
|
|
381
381
|
}}
|
|
382
|
-
className="
|
|
382
|
+
className="bg-primary text-primary-foreground hover:bg-primary/90 rounded-md px-3 py-1 text-sm font-medium"
|
|
383
383
|
>
|
|
384
384
|
Add User Message
|
|
385
385
|
</button>
|
|
@@ -397,21 +397,21 @@ export function MyRuntimeProvider({ children }: { children: React.ReactNode }) {
|
|
|
397
397
|
},
|
|
398
398
|
]);
|
|
399
399
|
}}
|
|
400
|
-
className="
|
|
400
|
+
className="bg-secondary text-secondary-foreground hover:bg-secondary/80 rounded-md px-3 py-1 text-sm font-medium"
|
|
401
401
|
>
|
|
402
402
|
Add Assistant Message
|
|
403
403
|
</button>
|
|
404
404
|
<button
|
|
405
405
|
type="button"
|
|
406
406
|
onClick={() => setIsRunning(!isRunning)}
|
|
407
|
-
className="
|
|
407
|
+
className="bg-accent text-accent-foreground hover:bg-accent/80 rounded-md px-3 py-1 text-sm font-medium"
|
|
408
408
|
>
|
|
409
409
|
{isRunning ? "Stop" : "Start"} Running
|
|
410
410
|
</button>
|
|
411
411
|
<button
|
|
412
412
|
type="button"
|
|
413
413
|
onClick={() => updateCurrentThreadMessages(() => [])}
|
|
414
|
-
className="
|
|
414
|
+
className="bg-destructive hover:bg-destructive/90 rounded-md px-3 py-1 text-sm font-medium text-white"
|
|
415
415
|
>
|
|
416
416
|
Clear
|
|
417
417
|
</button>
|
|
@@ -431,9 +431,9 @@ export function MyRuntimeProvider({ children }: { children: React.ReactNode }) {
|
|
|
431
431
|
|
|
432
432
|
function ThreadListSidebar() {
|
|
433
433
|
return (
|
|
434
|
-
<ThreadListPrimitive.Root className="flex w-64 flex-col border-r
|
|
434
|
+
<ThreadListPrimitive.Root className="bg-muted/30 flex w-64 flex-col border-r">
|
|
435
435
|
<div className="border-b p-4">
|
|
436
|
-
<h2 className="font-semibold
|
|
436
|
+
<h2 className="text-lg font-semibold">Threads</h2>
|
|
437
437
|
</div>
|
|
438
438
|
|
|
439
439
|
<div className="flex-1 overflow-y-auto p-2">
|
|
@@ -443,7 +443,7 @@ function ThreadListSidebar() {
|
|
|
443
443
|
</div>
|
|
444
444
|
|
|
445
445
|
<div className="border-t p-2">
|
|
446
|
-
<ThreadListPrimitive.New className="w-full rounded-md
|
|
446
|
+
<ThreadListPrimitive.New className="bg-primary text-primary-foreground hover:bg-primary/90 w-full rounded-md px-3 py-2 text-sm font-medium">
|
|
447
447
|
+ New Thread
|
|
448
448
|
</ThreadListPrimitive.New>
|
|
449
449
|
</div>
|
|
@@ -453,7 +453,7 @@ function ThreadListSidebar() {
|
|
|
453
453
|
|
|
454
454
|
function ThreadListItem() {
|
|
455
455
|
return (
|
|
456
|
-
<ThreadListItemPrimitive.Root className="mb-1 w-full rounded-md p-3 text-left transition-colors
|
|
456
|
+
<ThreadListItemPrimitive.Root className="hover:bg-muted data-active:bg-primary data-active:text-primary-foreground mb-1 w-full rounded-md p-3 text-left transition-colors">
|
|
457
457
|
<ThreadListItemPrimitive.Trigger className="w-full text-left">
|
|
458
458
|
<div className="font-medium">
|
|
459
459
|
<ThreadListItemPrimitive.Title fallback="New Thread" />
|
|
@@ -486,8 +486,8 @@ export default function Home() {
|
|
|
486
486
|
|
|
487
487
|
return (
|
|
488
488
|
<div className="flex h-full flex-col">
|
|
489
|
-
<header className="border-b
|
|
490
|
-
<h1 className="font-bold
|
|
489
|
+
<header className="bg-card border-b px-6 py-4">
|
|
490
|
+
<h1 className="text-2xl font-bold">Tap-Native Runtime Example</h1>
|
|
491
491
|
<p className="text-muted-foreground text-sm">
|
|
492
492
|
Built with ExternalThread and InMemoryThreadList
|
|
493
493
|
</p>
|
|
@@ -497,7 +497,7 @@ export default function Home() {
|
|
|
497
497
|
{isEmpty ? (
|
|
498
498
|
<div className="flex h-full items-center justify-center">
|
|
499
499
|
<div className="text-center">
|
|
500
|
-
<h2 className="mb-2 font-semibold
|
|
500
|
+
<h2 className="mb-2 text-xl font-semibold">No messages yet</h2>
|
|
501
501
|
<p className="text-muted-foreground text-sm">
|
|
502
502
|
Use the controls below to add messages
|
|
503
503
|
</p>
|
|
@@ -507,14 +507,14 @@ export default function Home() {
|
|
|
507
507
|
<>
|
|
508
508
|
<Thread />
|
|
509
509
|
<div className="mx-auto mt-4 max-w-2xl space-y-2">
|
|
510
|
-
<div className="rounded-lg border
|
|
511
|
-
<h3 className="mb-2 font-semibold
|
|
510
|
+
<div className="bg-card rounded-lg border p-4">
|
|
511
|
+
<h3 className="mb-2 text-sm font-semibold">
|
|
512
512
|
About This Example
|
|
513
513
|
</h3>
|
|
514
|
-
<ul className="space-y-1 text-
|
|
514
|
+
<ul className="text-muted-foreground space-y-1 text-sm">
|
|
515
515
|
<li>
|
|
516
516
|
• Uses{" "}
|
|
517
|
-
<code className="
|
|
517
|
+
<code className="bg-muted rounded px-1">
|
|
518
518
|
ExternalThread
|
|
519
519
|
</code>{" "}
|
|
520
520
|
to display messages
|
|
@@ -525,7 +525,7 @@ export default function Home() {
|
|
|
525
525
|
</ul>
|
|
526
526
|
</div>
|
|
527
527
|
|
|
528
|
-
<div className="text-
|
|
528
|
+
<div className="text-muted-foreground text-center text-xs">
|
|
529
529
|
This is a minimal implementation. Features like editing,
|
|
530
530
|
branching, and attachments can be added.
|
|
531
531
|
</div>
|
|
@@ -572,13 +572,14 @@ export default function Home() {
|
|
|
572
572
|
## next.config.ts
|
|
573
573
|
|
|
574
574
|
```typescript
|
|
575
|
+
import { withAui } from "@assistant-ui/next";
|
|
575
576
|
import type { NextConfig } from "next";
|
|
576
577
|
|
|
577
578
|
const nextConfig: NextConfig = {
|
|
578
579
|
/* config options here */
|
|
579
580
|
};
|
|
580
581
|
|
|
581
|
-
export default nextConfig;
|
|
582
|
+
export default withAui(nextConfig);
|
|
582
583
|
|
|
583
584
|
```
|
|
584
585
|
|
|
@@ -601,17 +602,18 @@ export default nextConfig;
|
|
|
601
602
|
"@assistant-ui/ui": "workspace:*",
|
|
602
603
|
"class-variance-authority": "^0.7.1",
|
|
603
604
|
"clsx": "^2.1.1",
|
|
604
|
-
"lucide-react": "^1.
|
|
605
|
-
"next": "^16.2.
|
|
606
|
-
"react": "^19.2.
|
|
607
|
-
"react-dom": "^19.2.
|
|
605
|
+
"lucide-react": "^1.17.0",
|
|
606
|
+
"next": "^16.2.7",
|
|
607
|
+
"react": "^19.2.7",
|
|
608
|
+
"react-dom": "^19.2.7",
|
|
608
609
|
"tailwind-merge": "^3.6.0"
|
|
609
610
|
},
|
|
610
611
|
"devDependencies": {
|
|
612
|
+
"@assistant-ui/next": "workspace:*",
|
|
611
613
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
612
614
|
"@tailwindcss/postcss": "^4.3.0",
|
|
613
|
-
"@types/node": "^25.9.
|
|
614
|
-
"@types/react": "^19.2.
|
|
615
|
+
"@types/node": "^25.9.2",
|
|
616
|
+
"@types/react": "^19.2.17",
|
|
615
617
|
"@types/react-dom": "^19.2.3",
|
|
616
618
|
"postcss": "^8.5.15",
|
|
617
619
|
"tailwindcss": "^4.3.0",
|