@assistant-ui/mcp-docs-server 0.2.0 → 0.2.2

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.
Files changed (155) hide show
  1. package/.docs/organized/code-examples/waterfall.md +12 -13
  2. package/.docs/organized/code-examples/with-a2a.md +16 -11
  3. package/.docs/organized/code-examples/with-ag-ui.md +15 -13
  4. package/.docs/organized/code-examples/with-ai-sdk-v7.md +14 -13
  5. package/.docs/organized/code-examples/with-artifacts.md +14 -13
  6. package/.docs/organized/code-examples/with-assistant-transport.md +20 -28
  7. package/.docs/organized/code-examples/with-browser-extension.md +18 -11
  8. package/.docs/organized/code-examples/with-chain-of-thought.md +17 -15
  9. package/.docs/organized/code-examples/with-cloud-standalone.md +10 -11
  10. package/.docs/organized/code-examples/with-cloud.md +19 -14
  11. package/.docs/organized/code-examples/with-custom-thread-list.md +15 -14
  12. package/.docs/organized/code-examples/with-elevenlabs-conversational.md +14 -14
  13. package/.docs/organized/code-examples/with-elevenlabs-scribe.md +19 -17
  14. package/.docs/organized/code-examples/with-eve.md +66 -12
  15. package/.docs/organized/code-examples/with-expo.md +26 -31
  16. package/.docs/organized/code-examples/with-external-store.md +17 -12
  17. package/.docs/organized/code-examples/with-ffmpeg.md +21 -15
  18. package/.docs/organized/code-examples/with-generative-ui.md +271 -36
  19. package/.docs/organized/code-examples/with-google-adk.md +17 -12
  20. package/.docs/organized/code-examples/with-heat-graph.md +6 -7
  21. package/.docs/organized/code-examples/with-image-generation.md +9 -10
  22. package/.docs/organized/code-examples/with-interactables.md +14 -13
  23. package/.docs/organized/code-examples/with-langchain.md +12 -13
  24. package/.docs/organized/code-examples/with-langgraph.md +19 -13
  25. package/.docs/organized/code-examples/with-livekit.md +13 -13
  26. package/.docs/organized/code-examples/with-mcp.md +14 -15
  27. package/.docs/organized/code-examples/with-nuxt.md +2428 -0
  28. package/.docs/organized/code-examples/with-opencode.md +23 -14
  29. package/.docs/organized/code-examples/with-openui.md +449 -0
  30. package/.docs/organized/code-examples/with-pi.md +59 -57
  31. package/.docs/organized/code-examples/with-react-hook-form.md +16 -15
  32. package/.docs/organized/code-examples/with-react-ink-web.md +7 -8
  33. package/.docs/organized/code-examples/with-react-ink.md +6 -6
  34. package/.docs/organized/code-examples/with-react-router.md +17 -11
  35. package/.docs/organized/code-examples/with-resumable-stream.md +12 -13
  36. package/.docs/organized/code-examples/with-store.md +27 -16
  37. package/.docs/organized/code-examples/with-svelte.md +415 -0
  38. package/.docs/organized/code-examples/with-sveltekit.md +1061 -0
  39. package/.docs/organized/code-examples/with-tanstack.md +19 -13
  40. package/.docs/organized/code-examples/with-tap-runtime.md +15 -15
  41. package/.docs/organized/code-examples/with-virtualized-thread.md +8 -9
  42. package/.docs/organized/code-examples/with-vue.md +408 -0
  43. package/.docs/raw/docs/(docs)/cli.mdx +7 -2
  44. package/.docs/raw/docs/(docs)/index.mdx +9 -76
  45. package/.docs/raw/docs/(docs)/installation.mdx +6 -20
  46. package/.docs/raw/docs/(reference)/api-reference/context-providers/assistant-runtime-provider.mdx +24 -4
  47. package/.docs/raw/docs/(reference)/api-reference/generative-ui/slack.mdx +5 -1
  48. package/.docs/raw/docs/(reference)/api-reference/generative-ui/teams.mdx +9 -2
  49. package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +2 -2
  50. package/.docs/raw/docs/(reference)/api-reference/integrations/eve.mdx +47 -1
  51. package/.docs/raw/docs/(reference)/api-reference/integrations/react-ai-sdk.mdx +29 -4
  52. package/.docs/raw/docs/(reference)/api-reference/tools/status.mdx +1 -1
  53. package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +52 -1
  54. package/.docs/raw/docs/(reference)/api-reference/voice/session.mdx +1 -1
  55. package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +2 -2
  56. package/.docs/raw/docs/cloud/ai-sdk.mdx +4 -4
  57. package/.docs/raw/docs/cloud/index.mdx +1 -1
  58. package/.docs/raw/docs/copilots/model-context.mdx +4 -3
  59. package/.docs/raw/docs/copilots/motivation.mdx +4 -4
  60. package/.docs/raw/docs/guides/attachments.mdx +2 -2
  61. package/.docs/raw/docs/guides/chain-of-thought.mdx +1 -1
  62. package/.docs/raw/docs/guides/context-api.mdx +15 -17
  63. package/.docs/raw/docs/guides/dictation.mdx +1 -1
  64. package/.docs/raw/docs/guides/electron.mdx +1 -1
  65. package/.docs/raw/docs/guides/mentions.mdx +2 -0
  66. package/.docs/raw/docs/guides/resumable-streams.mdx +74 -3
  67. package/.docs/raw/docs/guides/suggestions.mdx +15 -12
  68. package/.docs/raw/docs/ink/hooks.mdx +9 -4
  69. package/.docs/raw/docs/ink/primitives.mdx +5 -4
  70. package/.docs/raw/docs/integrations/attachments/custom-adapter.mdx +16 -0
  71. package/.docs/raw/docs/integrations/auth/better-auth.mdx +1 -1
  72. package/.docs/raw/docs/integrations/auth/clerk.mdx +1 -1
  73. package/.docs/raw/docs/integrations/auth/next-auth.mdx +1 -1
  74. package/.docs/raw/docs/integrations/frameworks/cloudflare-agents/overview.mdx +1 -1
  75. package/.docs/raw/docs/integrations/frameworks/mastra/full-stack.mdx +2 -2
  76. package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +1 -1
  77. package/.docs/raw/docs/integrations/gateways/index.mdx +2 -2
  78. package/.docs/raw/docs/integrations/observability/helicone.mdx +2 -2
  79. package/.docs/raw/docs/integrations/observability/langfuse.mdx +1 -1
  80. package/.docs/raw/docs/integrations/observability/langsmith.mdx +2 -2
  81. package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +146 -128
  82. package/.docs/raw/docs/migrations/toolkit-tools.mdx +15 -13
  83. package/.docs/raw/docs/migrations/v0-15.mdx +118 -4
  84. package/.docs/raw/docs/primitives/attachment.mdx +2 -2
  85. package/.docs/raw/docs/primitives/composer.mdx +2 -2
  86. package/.docs/raw/docs/primitives/message.mdx +33 -1
  87. package/.docs/raw/docs/primitives/suggestion.mdx +4 -2
  88. package/.docs/raw/docs/primitives/thread.mdx +1 -1
  89. package/.docs/raw/docs/react-native/hooks.mdx +14 -4
  90. package/.docs/raw/docs/react-native/index.mdx +1 -1
  91. package/.docs/raw/docs/react-native/primitives.mdx +2 -2
  92. package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +35 -5
  93. package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +1 -1
  94. package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +1 -1
  95. package/.docs/raw/docs/runtimes/ai-sdk/v6-legacy.mdx +9 -10
  96. package/.docs/raw/docs/runtimes/ai-sdk/v7.mdx +9 -10
  97. package/.docs/raw/docs/runtimes/claude-managed-agents.mdx +118 -0
  98. package/.docs/raw/docs/runtimes/concepts/stability.mdx +2 -1
  99. package/.docs/raw/docs/runtimes/concepts/threads.mdx +106 -27
  100. package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +19 -1
  101. package/.docs/raw/docs/runtimes/custom/external-store.mdx +34 -1
  102. package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +36 -9
  103. package/.docs/raw/docs/runtimes/eve/overview.mdx +51 -0
  104. package/.docs/raw/docs/runtimes/eve/quickstart.mdx +51 -2
  105. package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +9 -12
  106. package/.docs/raw/docs/runtimes/langchain.mdx +1 -1
  107. package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +5 -1
  108. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +7 -7
  109. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-3.mdx +4 -4
  110. package/.docs/raw/docs/runtimes/opencode/hooks.mdx +1 -0
  111. package/.docs/raw/docs/runtimes/opencode/overview.mdx +10 -0
  112. package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +8 -1
  113. package/.docs/raw/docs/tools/backend.mdx +2 -2
  114. package/.docs/raw/docs/tools/defining-tools.mdx +28 -7
  115. package/.docs/raw/docs/tools/dynamic-tools.mdx +6 -4
  116. package/.docs/raw/docs/tools/generative-ui-primitive.mdx +180 -0
  117. package/.docs/raw/docs/tools/generative-ui-slack.mdx +167 -0
  118. package/.docs/raw/docs/tools/generative-ui-teams.mdx +160 -0
  119. package/.docs/raw/docs/tools/generative-ui.mdx +224 -211
  120. package/.docs/raw/docs/tools/index.mdx +2 -1
  121. package/.docs/raw/docs/tools/interactables.mdx +29 -17
  122. package/.docs/raw/docs/tools/mcp-apps.mdx +35 -6
  123. package/.docs/raw/docs/tools/mcp.mdx +9 -7
  124. package/.docs/raw/docs/tools/openui.mdx +175 -0
  125. package/.docs/raw/docs/tools/tool-ui.mdx +27 -24
  126. package/.docs/raw/docs/tools/user-managed-mcp.mdx +17 -8
  127. package/.docs/raw/docs/ui/attachment.mdx +27 -0
  128. package/.docs/raw/docs/ui/file.mdx +7 -2
  129. package/.docs/raw/docs/ui/image.mdx +1 -1
  130. package/.docs/raw/docs/ui/mcp-config.mdx +8 -3
  131. package/.docs/raw/docs/ui/model-selector.mdx +8 -8
  132. package/.docs/raw/docs/ui/part-grouping.mdx +1 -1
  133. package/.docs/raw/docs/ui/thread.mdx +24 -5
  134. package/.docs/raw/docs/utilities/react-o11y.mdx +7 -9
  135. package/dist/constants.js +2 -2
  136. package/dist/constants.js.map +1 -1
  137. package/dist/index.js.map +1 -1
  138. package/dist/prepare-docs/prepare.js.map +1 -1
  139. package/dist/tools/docs.js +4 -2
  140. package/dist/tools/docs.js.map +1 -1
  141. package/dist/tools/examples.js +2 -1
  142. package/dist/tools/examples.js.map +1 -1
  143. package/dist/tools/resources.js +2 -1
  144. package/dist/tools/resources.js.map +1 -1
  145. package/dist/tools/tests/test-setup.js +2 -1
  146. package/dist/tools/tests/test-setup.js.map +1 -1
  147. package/dist/tools/xulux-templates.js +4 -2
  148. package/dist/tools/xulux-templates.js.map +1 -1
  149. package/dist/utils/mdx.js +2 -1
  150. package/dist/utils/mdx.js.map +1 -1
  151. package/dist/xulux/catalog-client.js +1 -1
  152. package/dist/xulux/catalog-client.js.map +1 -1
  153. package/package.json +4 -4
  154. package/src/tools/tests/docs.test.ts +2 -2
  155. package/.docs/raw/docs/tools/interactables-legacy.mdx +0 -410
@@ -0,0 +1,415 @@
1
+ # Example: with-svelte
2
+
3
+ ## package.json
4
+
5
+ ```json
6
+ {
7
+ "name": "with-svelte",
8
+ "version": "0.0.0",
9
+ "private": true,
10
+ "type": "module",
11
+ "scripts": {
12
+ "dev": "vite dev --port 3000",
13
+ "build": "vite build",
14
+ "serve": "vite preview"
15
+ },
16
+ "dependencies": {
17
+ "@assistant-ui/core": "workspace:*",
18
+ "@assistant-ui/store": "workspace:*",
19
+ "@assistant-ui/svelte": "workspace:*",
20
+ "@assistant-ui/tap": "workspace:*",
21
+ "@lucide/svelte": "^1.31.0",
22
+ "svelte": "^5.56.8"
23
+ },
24
+ "devDependencies": {
25
+ "@sveltejs/vite-plugin-svelte": "^7.3.0",
26
+ "@tailwindcss/vite": "^4.3.3",
27
+ "@types/react": "^19.2.18",
28
+ "tailwindcss": "^4.3.3",
29
+ "typescript": "^7.0.2",
30
+ "vite": "^8.2.1"
31
+ }
32
+ }
33
+
34
+ ```
35
+
36
+ ## src/env.d.ts
37
+
38
+ ```typescript
39
+ declare module "*.svelte" {
40
+ import type { Component } from "svelte";
41
+ const component: Component<Record<string, never>>;
42
+ export default component;
43
+ }
44
+
45
+ ```
46
+
47
+ ## src/main.ts
48
+
49
+ ```typescript
50
+ import { mount } from "svelte";
51
+ import "./styles.css";
52
+ import Root from "./Root.svelte";
53
+
54
+ mount(Root, { target: document.getElementById("app")! });
55
+
56
+ ```
57
+
58
+ ## src/runtime.ts
59
+
60
+ ```typescript
61
+ import type { AppendMessage, ExternalStoreAdapter } from "@assistant-ui/core";
62
+ import {
63
+ AssistantRuntimeImpl,
64
+ ExternalStoreRuntimeCore,
65
+ } from "@assistant-ui/core/internal";
66
+
67
+ export type EchoMessage = {
68
+ id: string;
69
+ role: "user" | "assistant";
70
+ text: string;
71
+ };
72
+
73
+ type EchoThread = {
74
+ id: string;
75
+ title: string;
76
+ messages: EchoMessage[];
77
+ };
78
+
79
+ let nextId = 0;
80
+ const freshId = (prefix: string) => `${prefix}-${nextId++}`;
81
+
82
+ const messageText = (message: AppendMessage) =>
83
+ message.content
84
+ .map((part) => (part.type === "text" ? part.text : ""))
85
+ .join("");
86
+
87
+ const convertEchoMessage = (message: EchoMessage) => ({
88
+ id: message.id,
89
+ role: message.role,
90
+ content: [{ type: "text" as const, text: message.text }],
91
+ });
92
+
93
+ export const createEchoRuntime = () => {
94
+ let threads: EchoThread[] = [
95
+ { id: freshId("thread"), title: "", messages: [] },
96
+ ];
97
+ let currentId = threads[0]!.id;
98
+ let isRunning = false;
99
+ let replyTimer: ReturnType<typeof setTimeout> | undefined;
100
+
101
+ const current = () => threads.find((thread) => thread.id === currentId)!;
102
+ const updateCurrent = (updater: (thread: EchoThread) => EchoThread) => {
103
+ threads = threads.map((thread) =>
104
+ thread.id === currentId ? updater(thread) : thread,
105
+ );
106
+ };
107
+
108
+ const reply = (text: string) => {
109
+ const replyTo = currentId;
110
+ isRunning = true;
111
+ sync();
112
+ replyTimer = setTimeout(() => {
113
+ if (currentId !== replyTo) return;
114
+ updateCurrent((thread) => ({
115
+ ...thread,
116
+ messages: [
117
+ ...thread.messages,
118
+ {
119
+ id: freshId("assistant"),
120
+ role: "assistant",
121
+ text: `Echo: ${text}`,
122
+ },
123
+ ],
124
+ }));
125
+ isRunning = false;
126
+ sync();
127
+ }, 600);
128
+ };
129
+
130
+ const appendUser = (text: string) => {
131
+ updateCurrent((thread) => ({
132
+ ...thread,
133
+ title: thread.title || text.slice(0, 40),
134
+ messages: [
135
+ ...thread.messages,
136
+ { id: freshId("user"), role: "user", text },
137
+ ],
138
+ }));
139
+ };
140
+
141
+ const makeAdapter = (): ExternalStoreAdapter<EchoMessage> => ({
142
+ messages: current().messages,
143
+ isRunning,
144
+ convertMessage: convertEchoMessage,
145
+ setMessages: (next) => {
146
+ updateCurrent((thread) => ({ ...thread, messages: next }));
147
+ sync();
148
+ },
149
+ onNew: async (message) => {
150
+ const text = messageText(message);
151
+ appendUser(text);
152
+ reply(text);
153
+ },
154
+ onEdit: async (message) => {
155
+ const text = messageText(message);
156
+ const parentIndex = message.parentId
157
+ ? current().messages.findIndex(
158
+ (entry) => entry.id === message.parentId,
159
+ ) + 1
160
+ : 0;
161
+ updateCurrent((thread) => ({
162
+ ...thread,
163
+ messages: thread.messages.slice(0, parentIndex),
164
+ }));
165
+ appendUser(text);
166
+ reply(text);
167
+ },
168
+ onReload: async (parentId) => {
169
+ let parentIndex = 0;
170
+ if (parentId) {
171
+ const index = current().messages.findIndex(
172
+ (entry) => entry.id === parentId,
173
+ );
174
+ if (index === -1) return;
175
+ parentIndex = index + 1;
176
+ }
177
+ const sliced = current().messages.slice(0, parentIndex);
178
+ const lastUser = [...sliced]
179
+ .reverse()
180
+ .find((entry) => entry.role === "user");
181
+ updateCurrent((thread) => ({ ...thread, messages: sliced }));
182
+ reply(`${lastUser?.text ?? ""} (again)`);
183
+ },
184
+ onCancel: async () => {
185
+ clearTimeout(replyTimer);
186
+ if (isRunning && current().messages.at(-1)?.role === "user") {
187
+ updateCurrent((thread) => ({
188
+ ...thread,
189
+ messages: thread.messages.slice(0, -1),
190
+ }));
191
+ }
192
+ isRunning = false;
193
+ // cancelRun restores the trailing user message into the composer
194
+ // synchronously after onCancel returns; an eager sync would delete it
195
+ // before that restore reads it.
196
+ queueMicrotask(sync);
197
+ },
198
+ adapters: {
199
+ threadList: {
200
+ threadId: currentId,
201
+ threads: threads.map((thread) => ({
202
+ status: "regular" as const,
203
+ id: thread.id,
204
+ title: thread.title,
205
+ })),
206
+ onSwitchToThread: (threadId) => {
207
+ clearTimeout(replyTimer);
208
+ isRunning = false;
209
+ currentId = threadId;
210
+ sync();
211
+ },
212
+ onSwitchToNewThread: () => {
213
+ clearTimeout(replyTimer);
214
+ isRunning = false;
215
+ const id = freshId("thread");
216
+ threads = [...threads, { id, title: "", messages: [] }];
217
+ currentId = id;
218
+ sync();
219
+ },
220
+ },
221
+ },
222
+ });
223
+
224
+ const core = new ExternalStoreRuntimeCore(makeAdapter());
225
+ const sync = () => core.setAdapter(makeAdapter());
226
+ return new AssistantRuntimeImpl(core);
227
+ };
228
+
229
+ ```
230
+
231
+ ## src/styles.css
232
+
233
+ ```css
234
+ @import "tailwindcss";
235
+
236
+ @custom-variant dark (&:is(.dark *));
237
+
238
+ @theme inline {
239
+ --radius-sm: calc(var(--radius) - 4px);
240
+ --radius-md: calc(var(--radius) - 2px);
241
+ --radius-lg: var(--radius);
242
+ --radius-xl: calc(var(--radius) + 4px);
243
+ --color-background: var(--background);
244
+ --color-foreground: var(--foreground);
245
+ --color-card: var(--card);
246
+ --color-card-foreground: var(--card-foreground);
247
+ --color-popover: var(--popover);
248
+ --color-popover-foreground: var(--popover-foreground);
249
+ --color-primary: var(--primary);
250
+ --color-primary-foreground: var(--primary-foreground);
251
+ --color-secondary: var(--secondary);
252
+ --color-secondary-foreground: var(--secondary-foreground);
253
+ --color-muted: var(--muted);
254
+ --color-muted-foreground: var(--muted-foreground);
255
+ --color-accent: var(--accent);
256
+ --color-accent-foreground: var(--accent-foreground);
257
+ --color-destructive: var(--destructive);
258
+ --color-border: var(--border);
259
+ --color-input: var(--input);
260
+ --color-ring: var(--ring);
261
+ --color-chart-1: var(--chart-1);
262
+ --color-chart-2: var(--chart-2);
263
+ --color-chart-3: var(--chart-3);
264
+ --color-chart-4: var(--chart-4);
265
+ --color-chart-5: var(--chart-5);
266
+ --color-sidebar: var(--sidebar);
267
+ --color-sidebar-foreground: var(--sidebar-foreground);
268
+ --color-sidebar-primary: var(--sidebar-primary);
269
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
270
+ --color-sidebar-accent: var(--sidebar-accent);
271
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
272
+ --color-sidebar-border: var(--sidebar-border);
273
+ --color-sidebar-ring: var(--sidebar-ring);
274
+ }
275
+
276
+ :root {
277
+ --radius: 0.625rem;
278
+ --background: oklch(1 0 0);
279
+ --foreground: oklch(0.141 0.005 285.823);
280
+ --card: oklch(1 0 0);
281
+ --card-foreground: oklch(0.141 0.005 285.823);
282
+ --popover: oklch(1 0 0);
283
+ --popover-foreground: oklch(0.141 0.005 285.823);
284
+ --primary: oklch(0.21 0.006 285.885);
285
+ --primary-foreground: oklch(0.985 0 0);
286
+ --secondary: oklch(0.967 0.001 286.375);
287
+ --secondary-foreground: oklch(0.21 0.006 285.885);
288
+ --muted: oklch(0.967 0.001 286.375);
289
+ --muted-foreground: oklch(0.552 0.016 285.938);
290
+ --accent: oklch(0.967 0.001 286.375);
291
+ --accent-foreground: oklch(0.21 0.006 285.885);
292
+ --destructive: oklch(0.577 0.245 27.325);
293
+ --border: oklch(0.92 0.004 286.32);
294
+ --input: oklch(0.92 0.004 286.32);
295
+ --ring: oklch(0.705 0.015 286.067);
296
+ --chart-1: oklch(0.646 0.222 41.116);
297
+ --chart-2: oklch(0.6 0.118 184.704);
298
+ --chart-3: oklch(0.398 0.07 227.392);
299
+ --chart-4: oklch(0.828 0.189 84.429);
300
+ --chart-5: oklch(0.769 0.188 70.08);
301
+ --sidebar: oklch(0.985 0 0);
302
+ --sidebar-foreground: oklch(0.141 0.005 285.823);
303
+ --sidebar-primary: oklch(0.21 0.006 285.885);
304
+ --sidebar-primary-foreground: oklch(0.985 0 0);
305
+ --sidebar-accent: oklch(0.967 0.001 286.375);
306
+ --sidebar-accent-foreground: oklch(0.21 0.006 285.885);
307
+ --sidebar-border: oklch(0.92 0.004 286.32);
308
+ --sidebar-ring: oklch(0.705 0.015 286.067);
309
+ }
310
+
311
+ .dark {
312
+ --background: oklch(0.141 0.005 285.823);
313
+ --foreground: oklch(0.985 0 0);
314
+ --card: oklch(0.21 0.006 285.885);
315
+ --card-foreground: oklch(0.985 0 0);
316
+ --popover: oklch(0.21 0.006 285.885);
317
+ --popover-foreground: oklch(0.985 0 0);
318
+ --primary: oklch(0.92 0.004 286.32);
319
+ --primary-foreground: oklch(0.21 0.006 285.885);
320
+ --secondary: oklch(0.274 0.006 286.033);
321
+ --secondary-foreground: oklch(0.985 0 0);
322
+ --muted: oklch(0.274 0.006 286.033);
323
+ --muted-foreground: oklch(0.705 0.015 286.067);
324
+ --accent: oklch(0.274 0.006 286.033);
325
+ --accent-foreground: oklch(0.985 0 0);
326
+ --destructive: oklch(0.704 0.191 22.216);
327
+ --border: oklch(1 0 0 / 10%);
328
+ --input: oklch(1 0 0 / 15%);
329
+ --ring: oklch(0.552 0.016 285.938);
330
+ --chart-1: oklch(0.488 0.243 264.376);
331
+ --chart-2: oklch(0.696 0.17 162.48);
332
+ --chart-3: oklch(0.769 0.188 70.08);
333
+ --chart-4: oklch(0.627 0.265 303.9);
334
+ --chart-5: oklch(0.645 0.246 16.439);
335
+ --sidebar: oklch(0.21 0.006 285.885);
336
+ --sidebar-foreground: oklch(0.985 0 0);
337
+ --sidebar-primary: oklch(0.488 0.243 264.376);
338
+ --sidebar-primary-foreground: oklch(0.985 0 0);
339
+ --sidebar-accent: oklch(0.274 0.006 286.033);
340
+ --sidebar-accent-foreground: oklch(0.985 0 0);
341
+ --sidebar-border: oklch(1 0 0 / 10%);
342
+ --sidebar-ring: oklch(0.552 0.016 285.938);
343
+ }
344
+
345
+ @layer base {
346
+ * {
347
+ @apply border-border outline-ring/50;
348
+ }
349
+ body {
350
+ @apply bg-background text-foreground;
351
+ }
352
+ }
353
+
354
+ html,
355
+ body,
356
+ #app {
357
+ height: 100%;
358
+ }
359
+
360
+ ```
361
+
362
+ ## svelte.config.js
363
+
364
+ ```javascript
365
+ import { vitePreprocess } from "@sveltejs/vite-plugin-svelte";
366
+
367
+ export default {
368
+ preprocess: vitePreprocess(),
369
+ };
370
+
371
+ ```
372
+
373
+ ## tsconfig.json
374
+
375
+ ```json
376
+ {
377
+ "compilerOptions": {
378
+ "target": "ES2022",
379
+ "module": "ESNext",
380
+ "moduleResolution": "bundler",
381
+ "strict": true,
382
+ "noEmit": true,
383
+ "skipLibCheck": true,
384
+ "types": ["vite/client"]
385
+ },
386
+ "include": ["src", "vite.config.ts"]
387
+ }
388
+
389
+ ```
390
+
391
+ ## vite.config.ts
392
+
393
+ ```typescript
394
+ import { defineConfig } from "vite";
395
+ import { svelte } from "@sveltejs/vite-plugin-svelte";
396
+ import tailwindcss from "@tailwindcss/vite";
397
+
398
+ // The assistant-ui runtime is written against react hook imports but runs on
399
+ // @assistant-ui/tap; aliasing react to the standalone shim resolves it with
400
+ // no React installed.
401
+ export default defineConfig({
402
+ plugins: [svelte(), tailwindcss()],
403
+ resolve: {
404
+ alias: [
405
+ {
406
+ find: /^react\/compiler-runtime$/,
407
+ replacement: "@assistant-ui/tap/standalone-shim/compiler-runtime",
408
+ },
409
+ { find: /^react$/, replacement: "@assistant-ui/tap/standalone-shim" },
410
+ ],
411
+ },
412
+ });
413
+
414
+ ```
415
+