@assistant-ui/mcp-docs-server 0.2.3 → 0.3.0

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 (452) hide show
  1. package/README.md +16 -43
  2. package/dist/index.d.ts +2 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -91
  5. package/dist/index.js.map +1 -1
  6. package/dist/proxy.d.ts +9 -0
  7. package/dist/proxy.d.ts.map +1 -0
  8. package/dist/proxy.js +76 -0
  9. package/dist/proxy.js.map +1 -0
  10. package/package.json +8 -12
  11. package/src/index.ts +3 -115
  12. package/src/proxy.test.ts +250 -0
  13. package/src/proxy.ts +111 -0
  14. package/.docs/organized/code-examples/waterfall.md +0 -807
  15. package/.docs/organized/code-examples/with-a2a.md +0 -675
  16. package/.docs/organized/code-examples/with-ag-ui.md +0 -553
  17. package/.docs/organized/code-examples/with-ai-sdk-v7.md +0 -466
  18. package/.docs/organized/code-examples/with-artifacts.md +0 -815
  19. package/.docs/organized/code-examples/with-assistant-transport.md +0 -576
  20. package/.docs/organized/code-examples/with-browser-extension.md +0 -371
  21. package/.docs/organized/code-examples/with-chain-of-thought.md +0 -962
  22. package/.docs/organized/code-examples/with-cloud-standalone.md +0 -681
  23. package/.docs/organized/code-examples/with-cloud.md +0 -439
  24. package/.docs/organized/code-examples/with-custom-thread-list.md +0 -569
  25. package/.docs/organized/code-examples/with-elevenlabs-conversational.md +0 -527
  26. package/.docs/organized/code-examples/with-elevenlabs-scribe.md +0 -697
  27. package/.docs/organized/code-examples/with-eve.md +0 -405
  28. package/.docs/organized/code-examples/with-expo.md +0 -2246
  29. package/.docs/organized/code-examples/with-external-store.md +0 -421
  30. package/.docs/organized/code-examples/with-ffmpeg.md +0 -829
  31. package/.docs/organized/code-examples/with-generative-ui.md +0 -1810
  32. package/.docs/organized/code-examples/with-google-adk.md +0 -368
  33. package/.docs/organized/code-examples/with-heat-graph.md +0 -304
  34. package/.docs/organized/code-examples/with-image-generation.md +0 -463
  35. package/.docs/organized/code-examples/with-interactables.md +0 -733
  36. package/.docs/organized/code-examples/with-langchain.md +0 -446
  37. package/.docs/organized/code-examples/with-langgraph.md +0 -855
  38. package/.docs/organized/code-examples/with-livekit.md +0 -643
  39. package/.docs/organized/code-examples/with-mcp.md +0 -782
  40. package/.docs/organized/code-examples/with-nuxt.md +0 -2428
  41. package/.docs/organized/code-examples/with-opencode.md +0 -1974
  42. package/.docs/organized/code-examples/with-openui.md +0 -450
  43. package/.docs/organized/code-examples/with-pi.md +0 -2084
  44. package/.docs/organized/code-examples/with-react-hook-form.md +0 -727
  45. package/.docs/organized/code-examples/with-react-ink-web.md +0 -740
  46. package/.docs/organized/code-examples/with-react-ink.md +0 -473
  47. package/.docs/organized/code-examples/with-react-router.md +0 -936
  48. package/.docs/organized/code-examples/with-resumable-stream.md +0 -668
  49. package/.docs/organized/code-examples/with-store.md +0 -679
  50. package/.docs/organized/code-examples/with-svelte.md +0 -415
  51. package/.docs/organized/code-examples/with-sveltekit.md +0 -1061
  52. package/.docs/organized/code-examples/with-tanstack.md +0 -812
  53. package/.docs/organized/code-examples/with-tap-runtime.md +0 -813
  54. package/.docs/organized/code-examples/with-virtualized-thread.md +0 -681
  55. package/.docs/organized/code-examples/with-vue.md +0 -408
  56. package/.docs/raw/docs/(getting-started)/architecture.mdx +0 -146
  57. package/.docs/raw/docs/(getting-started)/base-ui.mdx +0 -39
  58. package/.docs/raw/docs/(getting-started)/cli.mdx +0 -542
  59. package/.docs/raw/docs/(getting-started)/devtools.mdx +0 -79
  60. package/.docs/raw/docs/(getting-started)/index.mdx +0 -23
  61. package/.docs/raw/docs/(getting-started)/installation.mdx +0 -483
  62. package/.docs/raw/docs/(getting-started)/llm.mdx +0 -211
  63. package/.docs/raw/docs/(getting-started)/rtl.mdx +0 -78
  64. package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +0 -36
  65. package/.docs/raw/docs/(reference)/api-reference/adapters/feedback.mdx +0 -20
  66. package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +0 -34
  67. package/.docs/raw/docs/(reference)/api-reference/adapters/model.mdx +0 -44
  68. package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +0 -59
  69. package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +0 -20
  70. package/.docs/raw/docs/(reference)/api-reference/adapters/suggestions.mdx +0 -26
  71. package/.docs/raw/docs/(reference)/api-reference/context-providers/assistant-runtime-provider.mdx +0 -84
  72. package/.docs/raw/docs/(reference)/api-reference/context-providers/index.mdx +0 -22
  73. package/.docs/raw/docs/(reference)/api-reference/context-providers/scoped-providers.mdx +0 -64
  74. package/.docs/raw/docs/(reference)/api-reference/external-store/index.mdx +0 -22
  75. package/.docs/raw/docs/(reference)/api-reference/external-store/message-conversion.mdx +0 -57
  76. package/.docs/raw/docs/(reference)/api-reference/external-store/runtime.mdx +0 -49
  77. package/.docs/raw/docs/(reference)/api-reference/generative-ui/a2ui.mdx +0 -40
  78. package/.docs/raw/docs/(reference)/api-reference/generative-ui/actions.mdx +0 -56
  79. package/.docs/raw/docs/(reference)/api-reference/generative-ui/components.mdx +0 -86
  80. package/.docs/raw/docs/(reference)/api-reference/generative-ui/index.mdx +0 -39
  81. package/.docs/raw/docs/(reference)/api-reference/generative-ui/json-generative-ui.mdx +0 -42
  82. package/.docs/raw/docs/(reference)/api-reference/generative-ui/rendering.mdx +0 -84
  83. package/.docs/raw/docs/(reference)/api-reference/generative-ui/slack.mdx +0 -85
  84. package/.docs/raw/docs/(reference)/api-reference/generative-ui/spec.mdx +0 -45
  85. package/.docs/raw/docs/(reference)/api-reference/generative-ui/teams.mdx +0 -93
  86. package/.docs/raw/docs/(reference)/api-reference/generative-ui/tokens.mdx +0 -62
  87. package/.docs/raw/docs/(reference)/api-reference/hooks/composer-triggers.mdx +0 -129
  88. package/.docs/raw/docs/(reference)/api-reference/hooks/index.mdx +0 -31
  89. package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +0 -34
  90. package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +0 -350
  91. package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +0 -28
  92. package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +0 -97
  93. package/.docs/raw/docs/(reference)/api-reference/integrations/ai-sdk.mdx +0 -200
  94. package/.docs/raw/docs/(reference)/api-reference/integrations/cloud-ai-sdk.mdx +0 -24
  95. package/.docs/raw/docs/(reference)/api-reference/integrations/eve.mdx +0 -118
  96. package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +0 -28
  97. package/.docs/raw/docs/(reference)/api-reference/integrations/react-data-stream.mdx +0 -37
  98. package/.docs/raw/docs/(reference)/api-reference/model-context/context.mdx +0 -50
  99. package/.docs/raw/docs/(reference)/api-reference/model-context/index.mdx +0 -22
  100. package/.docs/raw/docs/(reference)/api-reference/model-context/registry.mdx +0 -20
  101. package/.docs/raw/docs/(reference)/api-reference/overview.mdx +0 -566
  102. package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar-more.mdx +0 -152
  103. package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar.mdx +0 -239
  104. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-if.mdx +0 -208
  105. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-modal.mdx +0 -108
  106. package/.docs/raw/docs/(reference)/api-reference/primitives/attachment.mdx +0 -99
  107. package/.docs/raw/docs/(reference)/api-reference/primitives/branch-picker.mdx +0 -145
  108. package/.docs/raw/docs/(reference)/api-reference/primitives/chain-of-thought.mdx +0 -82
  109. package/.docs/raw/docs/(reference)/api-reference/primitives/composer.mdx +0 -637
  110. package/.docs/raw/docs/(reference)/api-reference/primitives/composition.mdx +0 -22
  111. package/.docs/raw/docs/(reference)/api-reference/primitives/error.mdx +0 -65
  112. package/.docs/raw/docs/(reference)/api-reference/primitives/index.mdx +0 -73
  113. package/.docs/raw/docs/(reference)/api-reference/primitives/message-part.mdx +0 -117
  114. package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +0 -339
  115. package/.docs/raw/docs/(reference)/api-reference/primitives/queue-item.mdx +0 -77
  116. package/.docs/raw/docs/(reference)/api-reference/primitives/selection-toolbar.mdx +0 -88
  117. package/.docs/raw/docs/(reference)/api-reference/primitives/suggestion.mdx +0 -81
  118. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item-more.mdx +0 -129
  119. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item.mdx +0 -138
  120. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list.mdx +0 -122
  121. package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +0 -289
  122. package/.docs/raw/docs/(reference)/api-reference/runtimes/assistant-runtime.mdx +0 -20
  123. package/.docs/raw/docs/(reference)/api-reference/runtimes/attachment-runtime.mdx +0 -24
  124. package/.docs/raw/docs/(reference)/api-reference/runtimes/composer-runtime.mdx +0 -32
  125. package/.docs/raw/docs/(reference)/api-reference/runtimes/index.mdx +0 -43
  126. package/.docs/raw/docs/(reference)/api-reference/runtimes/message-part-runtime.mdx +0 -43
  127. package/.docs/raw/docs/(reference)/api-reference/runtimes/message-runtime.mdx +0 -24
  128. package/.docs/raw/docs/(reference)/api-reference/runtimes/queue-state.mdx +0 -20
  129. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-item-runtime.mdx +0 -24
  130. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +0 -24
  131. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-runtime.mdx +0 -36
  132. package/.docs/raw/docs/(reference)/api-reference/tools/component-tools.mdx +0 -85
  133. package/.docs/raw/docs/(reference)/api-reference/tools/index.mdx +0 -45
  134. package/.docs/raw/docs/(reference)/api-reference/tools/interactables-legacy.mdx +0 -55
  135. package/.docs/raw/docs/(reference)/api-reference/tools/interactables.mdx +0 -151
  136. package/.docs/raw/docs/(reference)/api-reference/tools/rendering.mdx +0 -106
  137. package/.docs/raw/docs/(reference)/api-reference/tools/status.mdx +0 -62
  138. package/.docs/raw/docs/(reference)/api-reference/tools/toolkits.mdx +0 -178
  139. package/.docs/raw/docs/(reference)/api-reference/transport/assistant-transport.mdx +0 -48
  140. package/.docs/raw/docs/(reference)/api-reference/transport/frame.mdx +0 -62
  141. package/.docs/raw/docs/(reference)/api-reference/transport/index.mdx +0 -22
  142. package/.docs/raw/docs/(reference)/api-reference/utilities/index.mdx +0 -19
  143. package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +0 -152
  144. package/.docs/raw/docs/(reference)/api-reference/voice/index.mdx +0 -22
  145. package/.docs/raw/docs/(reference)/api-reference/voice/session.mdx +0 -54
  146. package/.docs/raw/docs/(reference)/api-reference/voice/speech-dictation.mdx +0 -36
  147. package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +0 -527
  148. package/.docs/raw/docs/cloud/ai-sdk.mdx +0 -604
  149. package/.docs/raw/docs/cloud/authorization.mdx +0 -252
  150. package/.docs/raw/docs/cloud/index.mdx +0 -46
  151. package/.docs/raw/docs/cloud/langgraph.mdx +0 -554
  152. package/.docs/raw/docs/copilots/assistant-frame.mdx +0 -411
  153. package/.docs/raw/docs/copilots/make-assistant-visible.mdx +0 -82
  154. package/.docs/raw/docs/copilots/model-context.mdx +0 -156
  155. package/.docs/raw/docs/copilots/motivation.mdx +0 -202
  156. package/.docs/raw/docs/copilots/use-assistant-instructions.mdx +0 -64
  157. package/.docs/raw/docs/guides/attachments.mdx +0 -619
  158. package/.docs/raw/docs/guides/branching.mdx +0 -76
  159. package/.docs/raw/docs/guides/chain-of-thought.mdx +0 -164
  160. package/.docs/raw/docs/guides/chatgpt-subscription.mdx +0 -108
  161. package/.docs/raw/docs/guides/context-api.mdx +0 -619
  162. package/.docs/raw/docs/guides/dictation.mdx +0 -298
  163. package/.docs/raw/docs/guides/editing.mdx +0 -102
  164. package/.docs/raw/docs/guides/electron.mdx +0 -369
  165. package/.docs/raw/docs/guides/headless-composer-input.mdx +0 -113
  166. package/.docs/raw/docs/guides/image-generation.mdx +0 -74
  167. package/.docs/raw/docs/guides/index.mdx +0 -117
  168. package/.docs/raw/docs/guides/input-history.mdx +0 -55
  169. package/.docs/raw/docs/guides/latex.mdx +0 -158
  170. package/.docs/raw/docs/guides/mentions.mdx +0 -575
  171. package/.docs/raw/docs/guides/message-timing.mdx +0 -215
  172. package/.docs/raw/docs/guides/quoting.mdx +0 -169
  173. package/.docs/raw/docs/guides/resumable-stream-deployment.mdx +0 -212
  174. package/.docs/raw/docs/guides/resumable-stream-stores.mdx +0 -152
  175. package/.docs/raw/docs/guides/resumable-streams.mdx +0 -292
  176. package/.docs/raw/docs/guides/slash-commands.mdx +0 -358
  177. package/.docs/raw/docs/guides/speech.mdx +0 -172
  178. package/.docs/raw/docs/guides/suggestions.mdx +0 -384
  179. package/.docs/raw/docs/guides/virtualization.mdx +0 -133
  180. package/.docs/raw/docs/guides/voice.mdx +0 -310
  181. package/.docs/raw/docs/ink/adapters.mdx +0 -99
  182. package/.docs/raw/docs/ink/custom-backend.mdx +0 -254
  183. package/.docs/raw/docs/ink/hooks.mdx +0 -469
  184. package/.docs/raw/docs/ink/index.mdx +0 -237
  185. package/.docs/raw/docs/ink/migration.mdx +0 -138
  186. package/.docs/raw/docs/ink/primitives.mdx +0 -1259
  187. package/.docs/raw/docs/integrations/attachments/custom-adapter.mdx +0 -528
  188. package/.docs/raw/docs/integrations/auth/better-auth.mdx +0 -188
  189. package/.docs/raw/docs/integrations/auth/clerk.mdx +0 -166
  190. package/.docs/raw/docs/integrations/auth/next-auth.mdx +0 -191
  191. package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +0 -88
  192. package/.docs/raw/docs/integrations/frameworks/cloudflare-agents.mdx +0 -283
  193. package/.docs/raw/docs/integrations/frameworks/mastra/full-stack.mdx +0 -188
  194. package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +0 -57
  195. package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +0 -201
  196. package/.docs/raw/docs/integrations/gateways/index.mdx +0 -162
  197. package/.docs/raw/docs/integrations/index.mdx +0 -178
  198. package/.docs/raw/docs/integrations/observability/helicone.mdx +0 -129
  199. package/.docs/raw/docs/integrations/observability/langfuse.mdx +0 -161
  200. package/.docs/raw/docs/integrations/observability/langsmith.mdx +0 -151
  201. package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +0 -773
  202. package/.docs/raw/docs/migrations/deprecation-policy.mdx +0 -42
  203. package/.docs/raw/docs/migrations/index.mdx +0 -50
  204. package/.docs/raw/docs/migrations/react-compatibility.mdx +0 -74
  205. package/.docs/raw/docs/migrations/react-langgraph-v0-7.mdx +0 -328
  206. package/.docs/raw/docs/migrations/toolkit-tools.mdx +0 -236
  207. package/.docs/raw/docs/migrations/v0-11.mdx +0 -172
  208. package/.docs/raw/docs/migrations/v0-12.mdx +0 -302
  209. package/.docs/raw/docs/migrations/v0-14.mdx +0 -297
  210. package/.docs/raw/docs/migrations/v0-15.mdx +0 -270
  211. package/.docs/raw/docs/primitives/action-bar.mdx +0 -352
  212. package/.docs/raw/docs/primitives/assistant-modal.mdx +0 -216
  213. package/.docs/raw/docs/primitives/attachment.mdx +0 -217
  214. package/.docs/raw/docs/primitives/branch-picker.mdx +0 -222
  215. package/.docs/raw/docs/primitives/chain-of-thought.mdx +0 -315
  216. package/.docs/raw/docs/primitives/composer.mdx +0 -659
  217. package/.docs/raw/docs/primitives/error.mdx +0 -142
  218. package/.docs/raw/docs/primitives/index.mdx +0 -99
  219. package/.docs/raw/docs/primitives/message.mdx +0 -618
  220. package/.docs/raw/docs/primitives/selection-toolbar.mdx +0 -191
  221. package/.docs/raw/docs/primitives/suggestion.mdx +0 -254
  222. package/.docs/raw/docs/primitives/thread-list.mdx +0 -467
  223. package/.docs/raw/docs/primitives/thread.mdx +0 -509
  224. package/.docs/raw/docs/react-native/adapters.mdx +0 -94
  225. package/.docs/raw/docs/react-native/custom-backend.mdx +0 -207
  226. package/.docs/raw/docs/react-native/hooks.mdx +0 -339
  227. package/.docs/raw/docs/react-native/index.mdx +0 -289
  228. package/.docs/raw/docs/react-native/migration.mdx +0 -142
  229. package/.docs/raw/docs/react-native/primitives.mdx +0 -976
  230. package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +0 -399
  231. package/.docs/raw/docs/runtimes/a2a/overview.mdx +0 -60
  232. package/.docs/raw/docs/runtimes/a2a/quickstart.mdx +0 -216
  233. package/.docs/raw/docs/runtimes/ag-ui/agent-state.mdx +0 -124
  234. package/.docs/raw/docs/runtimes/ag-ui/overview.mdx +0 -70
  235. package/.docs/raw/docs/runtimes/ag-ui/quickstart.mdx +0 -243
  236. package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +0 -267
  237. package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +0 -61
  238. package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +0 -122
  239. package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +0 -135
  240. package/.docs/raw/docs/runtimes/ai-sdk/v6-legacy.mdx +0 -636
  241. package/.docs/raw/docs/runtimes/ai-sdk/v7.mdx +0 -731
  242. package/.docs/raw/docs/runtimes/claude-managed-agents.mdx +0 -118
  243. package/.docs/raw/docs/runtimes/concepts/adapters.mdx +0 -265
  244. package/.docs/raw/docs/runtimes/concepts/architecture.mdx +0 -167
  245. package/.docs/raw/docs/runtimes/concepts/stability.mdx +0 -68
  246. package/.docs/raw/docs/runtimes/concepts/threads.mdx +0 -513
  247. package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +0 -763
  248. package/.docs/raw/docs/runtimes/custom/data-stream.mdx +0 -339
  249. package/.docs/raw/docs/runtimes/custom/external-store.mdx +0 -957
  250. package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +0 -902
  251. package/.docs/raw/docs/runtimes/custom/overview.mdx +0 -71
  252. package/.docs/raw/docs/runtimes/eve/overview.mdx +0 -151
  253. package/.docs/raw/docs/runtimes/eve/quickstart.mdx +0 -192
  254. package/.docs/raw/docs/runtimes/google-adk/api.mdx +0 -256
  255. package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +0 -784
  256. package/.docs/raw/docs/runtimes/google-adk/overview.mdx +0 -69
  257. package/.docs/raw/docs/runtimes/google-adk/quickstart.mdx +0 -229
  258. package/.docs/raw/docs/runtimes/langchain.mdx +0 -901
  259. package/.docs/raw/docs/runtimes/langgraph/agent-state.mdx +0 -181
  260. package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +0 -305
  261. package/.docs/raw/docs/runtimes/langgraph/interrupts.mdx +0 -104
  262. package/.docs/raw/docs/runtimes/langgraph/overview.mdx +0 -84
  263. package/.docs/raw/docs/runtimes/langgraph/quickstart.mdx +0 -496
  264. package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +0 -144
  265. package/.docs/raw/docs/runtimes/langgraph/threads.mdx +0 -113
  266. package/.docs/raw/docs/runtimes/langgraph/tutorial/introduction.mdx +0 -29
  267. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-1.mdx +0 -93
  268. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +0 -347
  269. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-3.mdx +0 -393
  270. package/.docs/raw/docs/runtimes/opencode/hooks.mdx +0 -194
  271. package/.docs/raw/docs/runtimes/opencode/overview.mdx +0 -58
  272. package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +0 -119
  273. package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +0 -133
  274. package/.docs/raw/docs/tools/a2ui.mdx +0 -107
  275. package/.docs/raw/docs/tools/backend.mdx +0 -147
  276. package/.docs/raw/docs/tools/defining-tools.mdx +0 -574
  277. package/.docs/raw/docs/tools/dynamic-tools.mdx +0 -112
  278. package/.docs/raw/docs/tools/generative-ui-primitive.mdx +0 -180
  279. package/.docs/raw/docs/tools/generative-ui-slack.mdx +0 -167
  280. package/.docs/raw/docs/tools/generative-ui-teams.mdx +0 -160
  281. package/.docs/raw/docs/tools/generative-ui.mdx +0 -322
  282. package/.docs/raw/docs/tools/index.mdx +0 -72
  283. package/.docs/raw/docs/tools/interactables.mdx +0 -1084
  284. package/.docs/raw/docs/tools/mcp-apps.mdx +0 -363
  285. package/.docs/raw/docs/tools/mcp.mdx +0 -466
  286. package/.docs/raw/docs/tools/multi-agent.mdx +0 -237
  287. package/.docs/raw/docs/tools/openui.mdx +0 -175
  288. package/.docs/raw/docs/tools/tool-ui.mdx +0 -1020
  289. package/.docs/raw/docs/tools/user-managed-mcp.mdx +0 -428
  290. package/.docs/raw/docs/ui/assistant-modal.mdx +0 -166
  291. package/.docs/raw/docs/ui/assistant-sidebar.mdx +0 -89
  292. package/.docs/raw/docs/ui/attachment.mdx +0 -279
  293. package/.docs/raw/docs/ui/composer-trigger-popover.mdx +0 -247
  294. package/.docs/raw/docs/ui/context-display.mdx +0 -148
  295. package/.docs/raw/docs/ui/directive-text.mdx +0 -114
  296. package/.docs/raw/docs/ui/file.mdx +0 -159
  297. package/.docs/raw/docs/ui/follow-up-suggestions.mdx +0 -82
  298. package/.docs/raw/docs/ui/image.mdx +0 -102
  299. package/.docs/raw/docs/ui/markdown.mdx +0 -103
  300. package/.docs/raw/docs/ui/mcp-config.mdx +0 -107
  301. package/.docs/raw/docs/ui/mermaid.mdx +0 -92
  302. package/.docs/raw/docs/ui/message-timing.mdx +0 -93
  303. package/.docs/raw/docs/ui/model-selector.mdx +0 -455
  304. package/.docs/raw/docs/ui/part-grouping.mdx +0 -614
  305. package/.docs/raw/docs/ui/quote.mdx +0 -211
  306. package/.docs/raw/docs/ui/reasoning.mdx +0 -214
  307. package/.docs/raw/docs/ui/scrollbar.mdx +0 -77
  308. package/.docs/raw/docs/ui/sources.mdx +0 -186
  309. package/.docs/raw/docs/ui/streamdown.mdx +0 -392
  310. package/.docs/raw/docs/ui/syntax-highlighting.mdx +0 -205
  311. package/.docs/raw/docs/ui/thread-list.mdx +0 -411
  312. package/.docs/raw/docs/ui/thread.mdx +0 -559
  313. package/.docs/raw/docs/ui/tool-fallback.mdx +0 -141
  314. package/.docs/raw/docs/ui/tool-group.mdx +0 -240
  315. package/.docs/raw/docs/ui/voice.mdx +0 -173
  316. package/.docs/raw/docs/utilities/heat-graph.mdx +0 -237
  317. package/.docs/raw/docs/utilities/react-o11y.mdx +0 -362
  318. package/.docs/raw/docs/utilities/tw-shimmer.mdx +0 -212
  319. package/dist/constants.d.ts +0 -14
  320. package/dist/constants.d.ts.map +0 -1
  321. package/dist/constants.js +0 -19
  322. package/dist/constants.js.map +0 -1
  323. package/dist/prepare-docs/code-examples.d.ts +0 -5
  324. package/dist/prepare-docs/code-examples.d.ts.map +0 -1
  325. package/dist/prepare-docs/code-examples.js +0 -117
  326. package/dist/prepare-docs/code-examples.js.map +0 -1
  327. package/dist/prepare-docs/copy-raw.d.ts +0 -5
  328. package/dist/prepare-docs/copy-raw.d.ts.map +0 -1
  329. package/dist/prepare-docs/copy-raw.js +0 -49
  330. package/dist/prepare-docs/copy-raw.js.map +0 -1
  331. package/dist/prepare-docs/prepare.d.ts +0 -1
  332. package/dist/prepare-docs/prepare.js +0 -22
  333. package/dist/prepare-docs/prepare.js.map +0 -1
  334. package/dist/prompts/xulux-playground.d.ts +0 -12
  335. package/dist/prompts/xulux-playground.d.ts.map +0 -1
  336. package/dist/prompts/xulux-playground.js +0 -33
  337. package/dist/prompts/xulux-playground.js.map +0 -1
  338. package/dist/tools/docs.d.ts +0 -22
  339. package/dist/tools/docs.d.ts.map +0 -1
  340. package/dist/tools/docs.js +0 -177
  341. package/dist/tools/docs.js.map +0 -1
  342. package/dist/tools/examples.d.ts +0 -24
  343. package/dist/tools/examples.d.ts.map +0 -1
  344. package/dist/tools/examples.js +0 -87
  345. package/dist/tools/examples.js.map +0 -1
  346. package/dist/tools/resources.d.ts +0 -6
  347. package/dist/tools/resources.d.ts.map +0 -1
  348. package/dist/tools/resources.js +0 -75
  349. package/dist/tools/resources.js.map +0 -1
  350. package/dist/tools/search.d.ts +0 -24
  351. package/dist/tools/search.d.ts.map +0 -1
  352. package/dist/tools/search.js +0 -39
  353. package/dist/tools/search.js.map +0 -1
  354. package/dist/tools/tests/mcp-test-client.d.ts +0 -15
  355. package/dist/tools/tests/mcp-test-client.d.ts.map +0 -1
  356. package/dist/tools/tests/mcp-test-client.js +0 -68
  357. package/dist/tools/tests/mcp-test-client.js.map +0 -1
  358. package/dist/tools/tests/test-setup.d.ts +0 -7
  359. package/dist/tools/tests/test-setup.d.ts.map +0 -1
  360. package/dist/tools/tests/test-setup.js +0 -36
  361. package/dist/tools/tests/test-setup.js.map +0 -1
  362. package/dist/tools/xulux-templates.d.ts +0 -58
  363. package/dist/tools/xulux-templates.d.ts.map +0 -1
  364. package/dist/tools/xulux-templates.js +0 -84
  365. package/dist/tools/xulux-templates.js.map +0 -1
  366. package/dist/utils/cache.d.ts +0 -5
  367. package/dist/utils/cache.d.ts.map +0 -1
  368. package/dist/utils/cache.js +0 -18
  369. package/dist/utils/cache.js.map +0 -1
  370. package/dist/utils/logger.d.ts +0 -10
  371. package/dist/utils/logger.d.ts.map +0 -1
  372. package/dist/utils/logger.js +0 -20
  373. package/dist/utils/logger.js.map +0 -1
  374. package/dist/utils/mcp-format.d.ts +0 -11
  375. package/dist/utils/mcp-format.d.ts.map +0 -1
  376. package/dist/utils/mcp-format.js +0 -14
  377. package/dist/utils/mcp-format.js.map +0 -1
  378. package/dist/utils/mdx.d.ts +0 -12
  379. package/dist/utils/mdx.d.ts.map +0 -1
  380. package/dist/utils/mdx.js +0 -45
  381. package/dist/utils/mdx.js.map +0 -1
  382. package/dist/utils/paths.d.ts +0 -12
  383. package/dist/utils/paths.d.ts.map +0 -1
  384. package/dist/utils/paths.js +0 -93
  385. package/dist/utils/paths.js.map +0 -1
  386. package/dist/utils/search.d.ts +0 -10
  387. package/dist/utils/search.d.ts.map +0 -1
  388. package/dist/utils/search.js +0 -97
  389. package/dist/utils/search.js.map +0 -1
  390. package/dist/utils/security.d.ts +0 -5
  391. package/dist/utils/security.d.ts.map +0 -1
  392. package/dist/utils/security.js +0 -22
  393. package/dist/utils/security.js.map +0 -1
  394. package/dist/xulux/catalog-client.d.ts +0 -14
  395. package/dist/xulux/catalog-client.d.ts.map +0 -1
  396. package/dist/xulux/catalog-client.js +0 -112
  397. package/dist/xulux/catalog-client.js.map +0 -1
  398. package/dist/xulux/fallback-catalog.d.ts +0 -7
  399. package/dist/xulux/fallback-catalog.d.ts.map +0 -1
  400. package/dist/xulux/fallback-catalog.js +0 -47
  401. package/dist/xulux/fallback-catalog.js.map +0 -1
  402. package/dist/xulux/fetch-sandbox.d.ts +0 -5
  403. package/dist/xulux/fetch-sandbox.d.ts.map +0 -1
  404. package/dist/xulux/fetch-sandbox.js +0 -40
  405. package/dist/xulux/fetch-sandbox.js.map +0 -1
  406. package/dist/xulux/template-service.d.ts +0 -84
  407. package/dist/xulux/template-service.d.ts.map +0 -1
  408. package/dist/xulux/template-service.js +0 -223
  409. package/dist/xulux/template-service.js.map +0 -1
  410. package/dist/xulux/types.d.ts +0 -55
  411. package/dist/xulux/types.d.ts.map +0 -1
  412. package/dist/xulux/types.js +0 -6
  413. package/dist/xulux/types.js.map +0 -1
  414. package/src/constants.ts +0 -24
  415. package/src/prepare-docs/code-examples.ts +0 -158
  416. package/src/prepare-docs/copy-raw.ts +0 -50
  417. package/src/prepare-docs/prepare.ts +0 -24
  418. package/src/prompts/xulux-playground.ts +0 -36
  419. package/src/tools/docs.ts +0 -255
  420. package/src/tools/examples.ts +0 -114
  421. package/src/tools/resources.ts +0 -111
  422. package/src/tools/search.ts +0 -46
  423. package/src/tools/tests/completions.test.ts +0 -60
  424. package/src/tools/tests/directory-size-cap.test.ts +0 -50
  425. package/src/tools/tests/docs.test.ts +0 -147
  426. package/src/tools/tests/examples.test.ts +0 -94
  427. package/src/tools/tests/integration.test.ts +0 -45
  428. package/src/tools/tests/json-parsing.test.ts +0 -23
  429. package/src/tools/tests/listings-cache.test.ts +0 -19
  430. package/src/tools/tests/mcp-protocol.test.ts +0 -216
  431. package/src/tools/tests/mcp-test-client.ts +0 -111
  432. package/src/tools/tests/path-traversal.test.ts +0 -84
  433. package/src/tools/tests/resources.test.ts +0 -133
  434. package/src/tools/tests/search.test.ts +0 -37
  435. package/src/tools/tests/test-setup.ts +0 -50
  436. package/src/tools/tests/xulux-templates.test.ts +0 -325
  437. package/src/tools/xulux-templates.ts +0 -141
  438. package/src/utils/cache.ts +0 -20
  439. package/src/utils/logger.ts +0 -20
  440. package/src/utils/mcp-format.ts +0 -14
  441. package/src/utils/mdx.ts +0 -59
  442. package/src/utils/paths.ts +0 -139
  443. package/src/utils/search.ts +0 -131
  444. package/src/utils/security.ts +0 -52
  445. package/src/utils/tests/cache.test.ts +0 -51
  446. package/src/utils/tests/mcp-format.test.ts +0 -22
  447. package/src/utils/tests/security.test.ts +0 -119
  448. package/src/xulux/catalog-client.ts +0 -150
  449. package/src/xulux/fallback-catalog.ts +0 -63
  450. package/src/xulux/fetch-sandbox.ts +0 -56
  451. package/src/xulux/template-service.ts +0 -406
  452. package/src/xulux/types.ts +0 -64
@@ -1,619 +0,0 @@
1
- ---
2
- title: Assistant Context API
3
- description: Read and update assistant state to build custom React components in your chat UI — composable context API for thread, message, and runtime data via assistant-ui.
4
- platforms: ["react"]
5
- ---
6
-
7
- The Context API provides direct access to assistant-ui's state management system, enabling you to build custom components that integrate seamlessly with the assistant runtime.
8
-
9
- ## Introduction
10
-
11
- The Context API is assistant-ui's powerful state management system that enables you to build custom components with full access to the assistant's state and capabilities. It provides:
12
-
13
- - **Reactive state access** - Subscribe to state changes with automatic re-renders
14
- - **Action execution** - Trigger operations like sending messages or reloading responses
15
- - **Event listening** - React to user interactions and system events
16
- - **Scope-aware design** - Components automatically know their context (message, thread, etc.)
17
-
18
- It's the foundation that powers all assistant-ui primitives. When the built-in components don't meet your needs, you can use the Context API to create custom components with the same capabilities.
19
-
20
- The Context API is backed by the runtime you provide to `<AssistantRuntimeProvider>`. This runtime acts as a unified store that manages all assistant state, handles actions, and dispatches events across your entire application.
21
-
22
- ## Core Concepts
23
-
24
- ### Scopes and Hierarchy
25
-
26
- assistant-ui organizes state into **scopes** - logical boundaries that provide access to relevant data and actions. Each scope corresponds to a specific part of the chat interface and automatically provides context-aware functionality.
27
-
28
- ```
29
- 🗂️ ThreadList (threads) - Manages the list of conversations
30
- ├── 📄 ThreadListItem (threadListItem) - Individual thread in the list
31
- └── 💬 Thread (thread) - Active conversation with messages
32
- ├── 🔵 Message (message) - User or assistant message
33
- │ ├── 📝 Part (part) - Content within a message (text, tool calls, etc.)
34
- │ ├── 🧠 ChainOfThought (chainOfThought) - Reasoning steps within a message
35
- │ │ └── 📝 Part (part) - Individual reasoning/tool-call step
36
- │ ├── 📎 Attachment (attachment) - Files attached to messages
37
- │ └── ✏️ Composer (composer) - Edit mode for existing messages
38
- │ └── 📎 Attachment (attachment) - Files in edit mode
39
- └── ✏️ Composer (composer) - New message input
40
- └── 📎 Attachment (attachment) - Files being added
41
-
42
- 💡 Suggestions (suggestions) - Follow-up message suggestions
43
- └── 💬 Suggestion (suggestion) - Individual suggestion item
44
- 🔧 Tools (tools) - Custom UI components for tool calls
45
- 🧩 ModelContext (modelContext) - Model context and tool registration
46
- ```
47
-
48
- **How scopes work:**
49
-
50
- - Scopes are **automatically determined** by where your component is rendered
51
- - A button inside a `<ThreadPrimitive.Messages>` automatically gets `message` scope
52
- - A button inside a `<ComposerPrimitive.Attachments>` automatically gets `attachment` scope
53
- - Child scopes can access parent scope data (e.g., a `message` component can access `thread` data)
54
-
55
- ```tsx
56
- // Inside a message component
57
- function MessageButton() {
58
- // ✅ Available: message scope (current message)
59
- const role = useAuiState((s) => s.message.role);
60
-
61
- // ✅ Available: thread scope (parent)
62
- const isRunning = useAuiState((s) => s.thread.isRunning);
63
- }
64
- ```
65
-
66
- ### State Management Model
67
-
68
- The Context API follows a predictable state management pattern:
69
-
70
- 1. **State** is immutable and flows down through scopes
71
- 2. **Actions** are methods that trigger state changes
72
- 3. **Events** notify components of state changes and user interactions
73
- 4. **Subscriptions** let components react to changes
74
-
75
- ## Essential Hooks
76
-
77
- ### useAuiState
78
-
79
- Read state reactively with automatic re-renders when values change. This hook works like Zustand's selector pattern - you provide a function that extracts the specific data you need, and your component only re-renders when that data changes.
80
-
81
- ```tsx
82
- import { useAuiState } from "@assistant-ui/react";
83
-
84
- // Basic usage - extract a single property
85
- const role = useAuiState((s) => s.message.role); // "user" | "assistant"
86
- const isRunning = useAuiState((s) => s.thread.isRunning); // boolean
87
-
88
- // Access nested data
89
- const attachmentCount = useAuiState(
90
- (s) => s.composer.attachments.length,
91
- );
92
- const lastMessage = useAuiState((s) => s.thread.messages.at(-1));
93
- ```
94
-
95
- The selector function receives all available scopes for your component's location and should return a specific value. The component re-renders only when that returned value changes.
96
-
97
- **Common patterns:**
98
-
99
- ```tsx
100
- // Access multiple scopes
101
- const canSend = useAuiState(
102
- (s) => !s.thread.isRunning && s.composer.text.length > 0,
103
- );
104
-
105
- // Compute derived state
106
- const messageCount = useAuiState((s) => s.thread.messages.length);
107
- ```
108
-
109
- **Important:** Never create new objects in selectors. Return primitive values or stable references to avoid infinite re-renders.
110
-
111
- ```tsx
112
- // ❌ Bad - creates new object every time
113
- const data = useAuiState((s) => ({
114
- role: s.message.role,
115
- content: s.message.content,
116
- }));
117
-
118
- // ✅ Good - returns stable values
119
- const role = useAuiState((s) => s.message.role);
120
- const content = useAuiState((s) => s.message.content);
121
- ```
122
-
123
- ### useAui
124
-
125
- Access the API instance for imperative operations and actions. Unlike `useAuiState`, this hook does not subscribe to state updates: the client's identity only changes on structural changes (a scope resolving to a different instance), making it well suited for event handlers and imperative operations.
126
-
127
- ```tsx
128
- import { useAui } from "@assistant-ui/react";
129
-
130
- function CustomMessageActions() {
131
- const aui = useAui();
132
-
133
- // Perform actions in event handlers
134
- const handleSend = () => {
135
- aui.composer.send();
136
- };
137
-
138
- const handleReload = () => {
139
- aui.message.reload();
140
- };
141
-
142
- // Read state imperatively when needed
143
- const handleConditionalAction = () => {
144
- const { isRunning } = aui.thread.getState();
145
- const { text } = aui.composer.getState();
146
-
147
- if (!isRunning && text.length > 0) {
148
- aui.composer.send();
149
- }
150
- };
151
-
152
- return (
153
- <div>
154
- <button onClick={handleSend}>Send</button>
155
- <button onClick={handleReload}>Reload</button>
156
- <button onClick={handleConditionalAction}>Smart Send</button>
157
- </div>
158
- );
159
- }
160
- ```
161
-
162
- The API object doesn't cause re-renders on state updates. Use it for:
163
-
164
- - **Triggering actions** in event handlers and callbacks
165
- - **Reading current state** imperatively when you don't need subscriptions
166
- - **Accessing nested scopes** programmatically
167
- - **Checking scope availability** before performing actions
168
-
169
- **Available actions by scope:**
170
-
171
- ```tsx
172
- // Thread actions
173
- aui.thread.append(message);
174
- aui.thread.startRun(config);
175
- aui.thread.resumeRun(config);
176
- aui.thread.cancelRun();
177
- aui.thread.getState();
178
- aui.thread.message({ index: idx });
179
- aui.thread.message({ id: messageId });
180
- aui.thread.composer();
181
-
182
- // Message actions
183
- aui.message.reload();
184
- aui.message.speak();
185
- aui.message.stopSpeaking();
186
- aui.message.submitFeedback({ type: "positive" | "negative" });
187
- aui.message.switchToBranch({ position, branchId });
188
- aui.message.getState();
189
- aui.message.part({ index: idx });
190
- aui.message.part({ toolCallId });
191
- aui.message.composer();
192
-
193
- // Part actions
194
- aui.part.addToolResult(result);
195
- aui.part.resumeToolCall(result);
196
- aui.part.getState();
197
-
198
- // Composer actions
199
- aui.composer.send();
200
- aui.composer.setText(text);
201
- aui.composer.setRole(role);
202
- aui.composer.addAttachment(file); // File object
203
- aui.composer.addAttachment({ name, content }); // external source
204
- await aui.composer.clearAttachments();
205
- await aui.composer.reset();
206
- aui.composer.getState();
207
-
208
- // Attachment actions
209
- aui.attachment.remove();
210
- aui.attachment.getState();
211
-
212
- // ThreadList actions
213
- aui.threads.switchToNewThread();
214
- aui.threads.switchToThread(threadId);
215
- aui.threads.reload();
216
- await aui.threads.getLoadThreadsPromise();
217
- aui.threads.getState();
218
-
219
- // ThreadListItem actions
220
- aui.threadListItem.switchTo();
221
- aui.threadListItem.rename(title);
222
- aui.threadListItem.updateCustom(custom);
223
- aui.threadListItem.archive();
224
- aui.threadListItem.unarchive();
225
- aui.threadListItem.delete();
226
- aui.threadListItem.getState();
227
-
228
- // Suggestions actions
229
- aui.suggestions.getState();
230
- aui.suggestions.suggestion({ index: 0 });
231
-
232
- // Suggestion actions
233
- aui.suggestion.getState();
234
-
235
- // ChainOfThought actions
236
- aui.chainOfThought.getState();
237
- aui.chainOfThought.setCollapsed(collapsed);
238
- aui.chainOfThought.part({ index: 0 });
239
-
240
- // ModelContext actions — see /docs/copilots/model-context for full usage
241
- aui.modelContext.register(provider);
242
- aui.modelContext.getState();
243
-
244
- // Tools actions
245
- aui.tools.setToolUI(toolName, render);
246
- aui.tools.getState();
247
- ```
248
-
249
- ### useAuiEvent
250
-
251
- Subscribe to events with automatic cleanup on unmount. This hook is perfect for reacting to user interactions, system events, or integrating with external analytics.
252
-
253
- ```tsx
254
- import { useAuiEvent } from "@assistant-ui/react";
255
-
256
- // Listen to current scope events (most common)
257
- useAuiEvent("composer.send", (event) => {
258
- console.log("Composer sent message in thread:", event.threadId);
259
- });
260
-
261
- // Listen to thread events
262
- useAuiEvent("thread.modelContextUpdate", (event) => {
263
- console.log("Model context updated in thread:", event.threadId);
264
- });
265
-
266
- // Listen to all events of a type across all scopes
267
- useAuiEvent({ event: "composer.send", scope: "*" }, (event) => {
268
- console.log("Any composer sent a message:", event.threadId);
269
- });
270
-
271
- // Listen to ALL events (useful for debugging or analytics)
272
- useAuiEvent("*", (event) => {
273
- console.log("Event occurred:", event.event, event.payload);
274
- });
275
-
276
- // Practical example: Track user interactions
277
- function AnalyticsTracker() {
278
- useAuiEvent("composer.send", (event) => {
279
- analytics.track("message_sent", {
280
- threadId: event.threadId,
281
- });
282
- });
283
-
284
- return null; // This component only tracks events
285
- }
286
- ```
287
-
288
- **Event name patterns:**
289
-
290
- - Event names follow `source.action` format in camelCase (e.g., `composer.send`, `thread.runStart`)
291
- - Use `"*"` as the event name to listen to all events
292
- - The `scope` parameter controls which instances trigger the event
293
-
294
- ## Working with Scopes
295
-
296
- ### Available Scopes
297
-
298
- Each scope provides access to specific state and actions:
299
-
300
- - **ThreadList** (`threads`): Collection and management of threads
301
- - **ThreadListItem** (`threadListItem`): Individual thread in the list
302
- - **Thread** (`thread`): Conversation with messages
303
- - **Message** (`message`): Individual message (user or assistant)
304
- - **Part** (`part`): Content part within a message (text, tool calls, etc.)
305
- - **ChainOfThought** (`chainOfThought`): Reasoning steps grouped within a message
306
- - **Composer** (`composer`): Text input for sending or editing messages
307
- - **Attachment** (`attachment`): File or media attached to a message or composer
308
- - **Suggestions** (`suggestions`): Collection of follow-up message suggestions
309
- - **Suggestion** (`suggestion`): Individual follow-up suggestion
310
- - **Tools** (`tools`): Tool UI components
311
- - **ModelContext** (`modelContext`): Model context and tool registration
312
-
313
- ### Scope Resolution
314
-
315
- The Context API automatically resolves the current scope based on component location:
316
-
317
- ```tsx
318
- function MessageButton() {
319
- const aui = useAui();
320
-
321
- // Automatically uses the current message scope
322
- const handleReload = () => {
323
- aui.message.reload();
324
- };
325
-
326
- return <button onClick={handleReload}>Reload</button>;
327
- }
328
- ```
329
-
330
- ### Checking Scope Availability
331
-
332
- Read scopes that may be unavailable through the optional view — they resolve to `undefined` instead of throwing:
333
-
334
- ```tsx
335
- const role = useAuiState((s) => s.optional.message?.role);
336
- ```
337
-
338
- ### Accessing Nested Scopes
339
-
340
- Navigate through the scope hierarchy programmatically:
341
-
342
- ```tsx
343
- const aui = useAui();
344
-
345
- // Access specific message by ID or index
346
- const messageById = aui.thread.message({ id: "msg_123" });
347
- const messageByIndex = aui.thread.message({ index: 0 });
348
-
349
- // Access part by index or tool call ID
350
- const partByIndex = aui.message.part({ index: 0 });
351
- const partByToolCall = aui.message.part({ toolCallId: "call_123" });
352
-
353
- // Access attachment by index
354
- const attachment = aui.composer.attachment({ index: 0 }).getState();
355
-
356
- // Access thread list item by ID, index, or the "main" selector
357
- const threadItem = aui.threads.item({ id: "thread_123" });
358
- const threadByIndex = aui.threads.item({ index: 0 });
359
- const archivedThread = aui.threads.item({ index: 0, archived: true });
360
-
361
- // Traverse to the main thread directly
362
- const mainThread = aui.threads.thread("main");
363
- const message = aui.threads.thread("main").message({ id: "msg_123" });
364
- ```
365
-
366
- ## Common Patterns
367
-
368
- ### Conditional Rendering
369
-
370
- ```tsx
371
- function RunIndicator() {
372
- const isRunning = useAuiState((s) => s.thread.isRunning);
373
-
374
- if (!isRunning) return null;
375
- return <div>Assistant is thinking...</div>;
376
- }
377
- ```
378
-
379
- ### Custom Action Buttons
380
-
381
- ```tsx
382
- function CopyButton() {
383
- const aui = useAui();
384
-
385
- const handleCopy = () => {
386
- navigator.clipboard.writeText(aui.message.getCopyText());
387
- };
388
-
389
- return <button onClick={handleCopy}>Copy</button>;
390
- }
391
- ```
392
-
393
- ### State-Aware Components
394
-
395
- ```tsx
396
- function SmartComposer() {
397
- const aui = useAui();
398
- const isRunning = useAuiState((s) => s.thread.isRunning);
399
- const text = useAuiState((s) => s.composer.text);
400
-
401
- const canSend = !isRunning && text.length > 0;
402
-
403
- return (
404
- <div>
405
- <textarea
406
- value={text}
407
- onChange={(e) => aui.composer.setText(e.target.value)}
408
- disabled={isRunning}
409
- />
410
- <button onClick={() => aui.composer.send()} disabled={!canSend}>
411
- Send
412
- </button>
413
- </div>
414
- );
415
- }
416
- ```
417
-
418
- ### Event-Driven Updates
419
-
420
- ```tsx
421
- function MessageCounter() {
422
- const [sendCount, setSendCount] = useState(0);
423
-
424
- useAuiEvent("composer.send", () => {
425
- setSendCount((c) => c + 1);
426
- });
427
-
428
- return <div>Messages sent: {sendCount}</div>;
429
- }
430
- ```
431
-
432
- ## Advanced Topics
433
-
434
- ### Resolution Dynamics
435
-
436
- Scopes are resolved during render and bound into the client. State updates never change the client's identity; a structural change (for example, switching threads) produces a new client and re-renders consumers through React:
437
-
438
- ```tsx
439
- const aui = useAui();
440
-
441
- // Bound to the thread current at this render
442
- aui.thread.append({ role: "user", content: "Hello" });
443
-
444
- // After a thread switch, the component re-renders with a new client.
445
- // Accessors read from a previous render keep pointing at the old thread.
446
- ```
447
-
448
- ### Performance Optimization
449
-
450
- **Selector optimization:**
451
-
452
- ```tsx
453
- // ❌ Expensive computation in selector (runs on every store update)
454
- const result = useAuiState(
455
- (s) => s.thread.messages.filter((m) => m.role === "user").length,
456
- );
457
-
458
- // ✅ Memoize expensive computations
459
- const messages = useAuiState((s) => s.thread.messages);
460
- const userCount = useMemo(
461
- () => messages.filter((m) => m.role === "user").length,
462
- [messages],
463
- );
464
- ```
465
-
466
- **Minimize re-renders:**
467
-
468
- ```tsx
469
- // ❌ Subscribes to entire thread state
470
- const thread = useAuiState((s) => s.thread);
471
-
472
- // ✅ Subscribe only to needed values
473
- const isRunning = useAuiState((s) => s.thread.isRunning);
474
- ```
475
-
476
- ## API Reference
477
-
478
- ### Hooks
479
-
480
- | Hook | Purpose | Returns |
481
- | ----------------------------- | -------------------------- | -------------- |
482
- | `useAuiState(selector)` | Subscribe to state changes | Selected value |
483
- | `useAui()` | Get API instance | API object |
484
- | `useAuiEvent(event, handler)` | Subscribe to events | void |
485
-
486
- ### Scope States
487
-
488
- | Scope | Key State Properties | Description |
489
- | -------------- | ------------------------------------------------------------------------------------------------ | -------------------------------------------------- |
490
- | ThreadList | `mainThreadId`, `newThreadId`, `threadIds`, `archivedThreadIds`, `isLoading`, `threadItems` (`readonly ThreadListItemState[]`) | Manages all available conversation threads |
491
- | ThreadListItem | `id`, `title`, `status`, `remoteId`, `externalId`, `custom?: Record<string, unknown>` | Individual thread metadata and status; `custom` carries arbitrary per-thread metadata set by remote runtimes |
492
- | Thread | `isRunning` (may be explicitly set by the runtime rather than derived from last-message status), `isLoading`, `isDisabled`, `isEmpty`, `messages`, `capabilities`, `suggestions` | Active conversation state and message history |
493
- | Message | `role`, `content`, `status`, `attachments`, `parts`, `parentId`, `branchNumber`, `branchCount`, `isLast`, `index` | Individual message content and metadata |
494
- | Part | `type`, `status`, `text`, `toolCallId`, `toolName` | Content parts within messages (text, tool calls) |
495
- | ChainOfThought | `parts`, `collapsed`, `status` | Reasoning steps grouped within a message |
496
- | Composer | `text`, `role`, `attachments`, `isEmpty`, `canCancel`, `type`, `isEditing` | Text input state for new/edited messages |
497
- | Attachment | `id`, `type`, `name`, `contentType`, `status` | File attachments metadata and content |
498
- | Suggestions | `suggestions` | Collection of follow-up message suggestions |
499
- | Suggestion | `title`, `label`, `prompt` | Individual suggestion with title, label, and prompt |
500
- | ModelContext | *(empty — use `register()` / `getToolCallParams()` methods; see [Model Context](/docs/copilots/model-context))* | System instructions, tools, and context providers |
501
-
502
- ### Available Actions by Scope
503
-
504
- The table below covers the most commonly used actions. For the full catalog, see the [API Reference](/docs/api-reference/overview).
505
-
506
- | Scope | Actions | Use Cases |
507
- | -------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------ |
508
- | ThreadList | `switchToNewThread()`, `switchToThread(id)`, `reload()`, `getLoadThreadsPromise()`, `item(selector)`, `thread("main")`, `getState()` | Thread navigation, creation, and sync |
509
- | ThreadListItem | `switchTo()`, `rename(title)`, `updateCustom(custom)`, `archive()`, `unarchive()`, `delete()`, `getState()` | Thread management operations |
510
- | Thread | `append(message)`, `startRun(config)`, `resumeRun(config)`, `cancelRun()`, `reset()`, `export()`, `import(repository)`, `message(selector)`, `composer()`, `getState()` | Message handling and conversation control |
511
- | Message | `reload()`, `speak()`, `stopSpeaking()`, `submitFeedback(feedback)`, `switchToBranch(options)`, `getCopyText()`, `part(selector)`, `attachment(selector)`, `composer()`, `setIsCopied(value)`, `setIsHovering(value)`, `getState()` | Message interactions and regeneration |
512
- | Part | `addToolResult(result)`, `resumeToolCall(result)`, `getState()` | Tool call result handling |
513
- | ChainOfThought | `setCollapsed(collapsed)`, `part({ index })`, `getState()` | Expand/collapse reasoning steps |
514
- | Composer | `send()`, `setText(text)`, `setRole(role)`, `addAttachment(file \| attachment)`, `clearAttachments()` (async), `reset()` (async), `getState()` | Text input and message composition |
515
- | Attachment | `remove()`, `getState()` | File management |
516
- | Suggestions | `suggestion({ index })`, `getState()` | Access follow-up suggestions |
517
- | Suggestion | `getState()` | Read individual suggestion data |
518
- | ModelContext | `register(provider)`, `getState()` | Register providers; full details in [Model Context](/docs/copilots/model-context) |
519
-
520
- ### Events vs State Observation
521
-
522
- Use `useAuiState` to render the current value of something; use `useAuiEvent` to react to the moment something happens. Both are supported: many events mark a transition you could also observe in state, and subscribing to the event is the intended way to run a side effect at that transition.
523
-
524
- The rule of thumb:
525
-
526
- 1. Rendering a value? → use `useAuiState`.
527
- 2. Are you the caller and want immediate feedback? → catch the rejection / read the return value.
528
- 3. Running a side effect when something happens? → use `useAuiEvent`.
529
-
530
- #### Available Events
531
-
532
- | Event | When It Fires |
533
- | ----------------------------- | ---------------------------------------------------------------------------- |
534
- | `threads.selectionChanged` | The main thread selection changed. Payload carries `threadId` (newly selected) and `previousThreadId`. Does not fire for the initially selected thread on mount. |
535
- | `thread.runStart` / `runEnd` | A run started / ended on the thread (also visible as `isRunning` flipping) |
536
- | `thread.initialize` | The thread transitioned from new to initialized, before the first message is added |
537
- | `thread.modelContextUpdate` | The model context provider notified a change. The model context lives in a provider, not in thread state, so this event has no state-derivable equivalent. |
538
- | `composer.send` | The user sent the composer contents; `messageId` is set for edit-composer sends |
539
- | `composer.attachmentAdd` | An attachment was added to the composer |
540
- | `composer.attachmentAddError` | An `addAttachment()` call failed. Payload `reason` discriminates `no-adapter` / `not-accepted` / `adapter-error`. The event additionally surfaces a human-readable `message` (and the underlying `Error` instance via the low-level `runtime.unstable_on("attachmentAddError")` API; `useAuiEvent` payloads omit it because raw `Error` objects are not store-serializable). |
541
-
542
- #### Deprecated Events
543
-
544
- | Deprecated Event | Use Instead |
545
- | ----------------------------- | ---------------------------------------------------------------------------- |
546
- | `threadListItem.switchedTo` | `threads.selectionChanged` — its `threadId` is the newly selected thread |
547
- | `threadListItem.switchedAway` | `threads.selectionChanged` — its `previousThreadId` is the thread switched away from |
548
-
549
- ## Troubleshooting
550
-
551
- ### Common Errors
552
-
553
- **"Cannot access [scope] outside of [scope] context"**
554
-
555
- ```tsx
556
- // ❌ This will throw if not inside a message component
557
- const role = useAuiState((s) => s.message.role);
558
-
559
- // ✅ Read through the optional view — unavailable scopes resolve to undefined
560
- const role = useAuiState((s) => s.optional.message?.role ?? "none");
561
- ```
562
-
563
- **"Maximum update depth exceeded" / Infinite re-renders**
564
-
565
- ```tsx
566
- // ❌ Creating new objects in selectors causes infinite re-renders
567
- const data = useAuiState((s) => ({
568
- role: s.message.role,
569
- content: s.message.content, // New object every time!
570
- }));
571
-
572
- // ✅ Return primitive values or use separate selectors
573
- const role = useAuiState((s) => s.message.role);
574
- const content = useAuiState((s) => s.message.content);
575
- ```
576
-
577
- **"Scope resolution failed" / Stale scope references**
578
-
579
- ```tsx
580
- // ❌ Storing scope references can lead to stale data
581
- const aui = useAui();
582
- const thread = aui.thread; // This reference might become stale
583
-
584
- useEffect(() => {
585
- // This might reference the wrong thread if user switched
586
- thread.cancelRun();
587
- }, [thread]);
588
-
589
- // ✅ Resolve scopes fresh each time
590
- const aui = useAui();
591
-
592
- useEffect(() => {
593
- // Always gets the current thread
594
- aui.thread.cancelRun();
595
- }, [aui]);
596
- ```
597
-
598
- ## Quick Reference
599
-
600
- ```tsx
601
- // Read state
602
- const value = useAuiState((s) => s.scope.property);
603
-
604
- // Perform action
605
- const aui = useAui();
606
- aui.scope.action();
607
-
608
- // Listen to events
609
- useAuiEvent("source.event", (e) => {});
610
-
611
- // Read a scope that may be unavailable
612
- const maybe = useAuiState((s) => s.optional.scope?.property);
613
-
614
- // Get state imperatively
615
- const state = aui.scope.getState();
616
-
617
- // Navigate scopes
618
- aui.thread.message({ id: "..." }).getState();
619
- ```