@assistant-ui/mcp-docs-server 0.1.31 → 0.1.32

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 (247) hide show
  1. package/.docs/organized/code-examples/waterfall.md +8 -8
  2. package/.docs/organized/code-examples/with-a2a.md +10 -10
  3. package/.docs/organized/code-examples/with-ag-ui.md +11 -11
  4. package/.docs/organized/code-examples/with-ai-sdk-v6.md +13 -13
  5. package/.docs/organized/code-examples/with-artifacts.md +13 -13
  6. package/.docs/organized/code-examples/with-assistant-transport.md +10 -10
  7. package/.docs/organized/code-examples/with-browser-extension.md +345 -0
  8. package/.docs/organized/code-examples/with-chain-of-thought.md +54 -17
  9. package/.docs/organized/code-examples/with-cloud-standalone.md +13 -13
  10. package/.docs/organized/code-examples/with-cloud.md +13 -13
  11. package/.docs/organized/code-examples/with-custom-thread-list.md +13 -13
  12. package/.docs/organized/code-examples/with-elevenlabs-conversational.md +17 -16
  13. package/.docs/organized/code-examples/with-elevenlabs-scribe.md +17 -16
  14. package/.docs/organized/code-examples/with-expo.md +24 -24
  15. package/.docs/organized/code-examples/with-external-store.md +10 -10
  16. package/.docs/organized/code-examples/with-ffmpeg.md +13 -13
  17. package/.docs/organized/code-examples/with-generative-ui.md +210 -13
  18. package/.docs/organized/code-examples/with-google-adk.md +10 -10
  19. package/.docs/organized/code-examples/with-heat-graph.md +8 -8
  20. package/.docs/organized/code-examples/with-image-generation.md +454 -0
  21. package/.docs/organized/code-examples/with-interactables.md +13 -13
  22. package/.docs/organized/code-examples/with-langchain.md +12 -12
  23. package/.docs/organized/code-examples/with-langgraph.md +15 -12
  24. package/.docs/organized/code-examples/with-livekit.md +18 -17
  25. package/.docs/organized/code-examples/with-mcp.md +748 -0
  26. package/.docs/organized/code-examples/with-opencode.md +11 -11
  27. package/.docs/organized/code-examples/with-parent-id-grouping.md +11 -11
  28. package/.docs/organized/code-examples/with-react-hook-form.md +14 -14
  29. package/.docs/organized/code-examples/with-react-ink.md +4 -4
  30. package/.docs/organized/code-examples/with-react-router.md +15 -15
  31. package/.docs/organized/code-examples/with-resumable-stream.md +660 -0
  32. package/.docs/organized/code-examples/with-store.md +8 -8
  33. package/.docs/organized/code-examples/with-tanstack.md +14 -14
  34. package/.docs/organized/code-examples/with-tap-runtime.md +11 -10
  35. package/.docs/raw/docs/(docs)/cli.mdx +1 -0
  36. package/.docs/raw/docs/(docs)/index.mdx +2 -2
  37. package/.docs/raw/docs/(docs)/installation.mdx +1 -1
  38. package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +26 -24
  39. package/.docs/raw/docs/(reference)/api-reference/adapters/feedback.mdx +20 -0
  40. package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +20 -12
  41. package/.docs/raw/docs/(reference)/api-reference/adapters/model.mdx +44 -0
  42. package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +37 -16
  43. package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +12 -23
  44. package/.docs/raw/docs/(reference)/api-reference/adapters/suggestions.mdx +20 -0
  45. package/.docs/raw/docs/(reference)/api-reference/context-providers/assistant-runtime-provider.mdx +37 -8
  46. package/.docs/raw/docs/(reference)/api-reference/context-providers/index.mdx +11 -9
  47. package/.docs/raw/docs/(reference)/api-reference/context-providers/scoped-providers.mdx +64 -0
  48. package/.docs/raw/docs/(reference)/api-reference/external-store/index.mdx +22 -0
  49. package/.docs/raw/docs/(reference)/api-reference/external-store/message-conversion.mdx +52 -0
  50. package/.docs/raw/docs/(reference)/api-reference/external-store/runtime.mdx +36 -0
  51. package/.docs/raw/docs/(reference)/api-reference/hooks/composer-triggers.mdx +98 -0
  52. package/.docs/raw/docs/(reference)/api-reference/hooks/index.mdx +18 -13
  53. package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +18 -57
  54. package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +640 -0
  55. package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +15 -28
  56. package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +64 -18
  57. package/.docs/raw/docs/(reference)/api-reference/hooks/utilities.mdx +434 -0
  58. package/.docs/raw/docs/(reference)/api-reference/integrations/cloud-ai-sdk.mdx +24 -0
  59. package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +11 -12
  60. package/.docs/raw/docs/(reference)/api-reference/integrations/react-ai-sdk.mdx +79 -0
  61. package/.docs/raw/docs/(reference)/api-reference/model-context/context.mdx +52 -0
  62. package/.docs/raw/docs/(reference)/api-reference/model-context/index.mdx +22 -0
  63. package/.docs/raw/docs/(reference)/api-reference/model-context/registry.mdx +20 -0
  64. package/.docs/raw/docs/(reference)/api-reference/overview.mdx +110 -131
  65. package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar-more.mdx +78 -221
  66. package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar.mdx +127 -242
  67. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-if.mdx +39 -20
  68. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-modal.mdx +66 -87
  69. package/.docs/raw/docs/(reference)/api-reference/primitives/attachment.mdx +50 -58
  70. package/.docs/raw/docs/(reference)/api-reference/primitives/branch-picker.mdx +80 -48
  71. package/.docs/raw/docs/(reference)/api-reference/primitives/chain-of-thought.mdx +67 -0
  72. package/.docs/raw/docs/(reference)/api-reference/primitives/composer.mdx +323 -461
  73. package/.docs/raw/docs/(reference)/api-reference/primitives/error.mdx +36 -43
  74. package/.docs/raw/docs/(reference)/api-reference/primitives/index.mdx +29 -24
  75. package/.docs/raw/docs/(reference)/api-reference/primitives/message-part.mdx +63 -245
  76. package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +175 -591
  77. package/.docs/raw/docs/(reference)/api-reference/primitives/queue-item.mdx +65 -0
  78. package/.docs/raw/docs/(reference)/api-reference/primitives/selection-toolbar.mdx +35 -22
  79. package/.docs/raw/docs/(reference)/api-reference/primitives/suggestion.mdx +57 -140
  80. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item-more.mdx +70 -161
  81. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item.mdx +84 -108
  82. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list.mdx +77 -96
  83. package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +173 -349
  84. package/.docs/raw/docs/(reference)/api-reference/runtimes/assistant-runtime.mdx +9 -21
  85. package/.docs/raw/docs/(reference)/api-reference/runtimes/attachment-runtime.mdx +10 -21
  86. package/.docs/raw/docs/(reference)/api-reference/runtimes/composer-runtime.mdx +15 -70
  87. package/.docs/raw/docs/(reference)/api-reference/runtimes/index.mdx +18 -13
  88. package/.docs/raw/docs/(reference)/api-reference/runtimes/message-part-runtime.mdx +25 -28
  89. package/.docs/raw/docs/(reference)/api-reference/runtimes/message-runtime.mdx +11 -63
  90. package/.docs/raw/docs/(reference)/api-reference/runtimes/queue-state.mdx +20 -0
  91. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-item-runtime.mdx +11 -48
  92. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +10 -47
  93. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-runtime.mdx +18 -30
  94. package/.docs/raw/docs/(reference)/api-reference/tools/component-tools.mdx +68 -0
  95. package/.docs/raw/docs/(reference)/api-reference/tools/index.mdx +39 -0
  96. package/.docs/raw/docs/(reference)/api-reference/tools/rendering.mdx +79 -0
  97. package/.docs/raw/docs/(reference)/api-reference/tools/status.mdx +42 -0
  98. package/.docs/raw/docs/(reference)/api-reference/tools/toolkits.mdx +92 -0
  99. package/.docs/raw/docs/(reference)/api-reference/transport/assistant-transport.mdx +48 -0
  100. package/.docs/raw/docs/(reference)/api-reference/transport/frame.mdx +62 -0
  101. package/.docs/raw/docs/(reference)/api-reference/transport/index.mdx +22 -0
  102. package/.docs/raw/docs/(reference)/api-reference/utilities/index.mdx +19 -0
  103. package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +131 -0
  104. package/.docs/raw/docs/(reference)/api-reference/voice/index.mdx +22 -0
  105. package/.docs/raw/docs/(reference)/api-reference/voice/session.mdx +54 -0
  106. package/.docs/raw/docs/(reference)/api-reference/voice/speech-dictation.mdx +36 -0
  107. package/.docs/raw/docs/cloud/ai-sdk.mdx +1 -1
  108. package/.docs/raw/docs/cloud/index.mdx +2 -2
  109. package/.docs/raw/docs/guides/attachments.mdx +4 -4
  110. package/.docs/raw/docs/guides/branching.mdx +1 -1
  111. package/.docs/raw/docs/guides/chain-of-thought.mdx +5 -5
  112. package/.docs/raw/docs/guides/context-api.mdx +4 -4
  113. package/.docs/raw/docs/guides/dictation.mdx +2 -2
  114. package/.docs/raw/docs/guides/editing.mdx +1 -1
  115. package/.docs/raw/docs/guides/generative-ui.mdx +142 -0
  116. package/.docs/raw/docs/guides/image-generation.mdx +74 -0
  117. package/.docs/raw/docs/guides/index.mdx +2 -2
  118. package/.docs/raw/docs/guides/interactables.mdx +2 -2
  119. package/.docs/raw/docs/guides/latex.mdx +2 -2
  120. package/.docs/raw/docs/guides/mcp-apps.mdx +231 -0
  121. package/.docs/raw/docs/guides/mentions.mdx +2 -2
  122. package/.docs/raw/docs/guides/message-timing.mdx +38 -5
  123. package/.docs/raw/docs/guides/multi-agent.mdx +2 -2
  124. package/.docs/raw/docs/guides/quoting.mdx +1 -1
  125. package/.docs/raw/docs/guides/resumable-stream-deployment.mdx +212 -0
  126. package/.docs/raw/docs/guides/resumable-stream-stores.mdx +152 -0
  127. package/.docs/raw/docs/guides/resumable-streams.mdx +210 -0
  128. package/.docs/raw/docs/guides/slash-commands.mdx +1 -1
  129. package/.docs/raw/docs/guides/speech.mdx +2 -2
  130. package/.docs/raw/docs/guides/suggestions.mdx +88 -4
  131. package/.docs/raw/docs/guides/tool-ui.mdx +2 -2
  132. package/.docs/raw/docs/guides/tools.mdx +66 -5
  133. package/.docs/raw/docs/guides/voice.mdx +2 -2
  134. package/.docs/raw/docs/ink/adapters.mdx +37 -1
  135. package/.docs/raw/docs/ink/custom-backend.mdx +59 -8
  136. package/.docs/raw/docs/ink/index.mdx +10 -11
  137. package/.docs/raw/docs/ink/primitives.mdx +349 -8
  138. package/.docs/raw/docs/integrations/auth/better-auth.mdx +1 -1
  139. package/.docs/raw/docs/integrations/auth/clerk.mdx +1 -1
  140. package/.docs/raw/docs/integrations/auth/next-auth.mdx +1 -1
  141. package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +2 -2
  142. package/.docs/raw/docs/integrations/frameworks/cloudflare-agents/overview.mdx +282 -0
  143. package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +2 -2
  144. package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +1 -1
  145. package/.docs/raw/docs/integrations/gateways/index.mdx +9 -4
  146. package/.docs/raw/docs/integrations/index.mdx +15 -3
  147. package/.docs/raw/docs/integrations/observability/langfuse.mdx +8 -1
  148. package/.docs/raw/docs/integrations/observability/langsmith.mdx +8 -4
  149. package/.docs/raw/docs/integrations/tools/react-mcp.mdx +337 -0
  150. package/.docs/raw/docs/primitives/composer.mdx +53 -0
  151. package/.docs/raw/docs/primitives/index.mdx +2 -2
  152. package/.docs/raw/docs/primitives/suggestion.mdx +9 -0
  153. package/.docs/raw/docs/react-native/hooks.mdx +2 -2
  154. package/.docs/raw/docs/react-native/index.mdx +4 -4
  155. package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +4 -4
  156. package/.docs/raw/docs/runtimes/a2a/overview.mdx +2 -2
  157. package/.docs/raw/docs/runtimes/ag-ui/overview.mdx +2 -2
  158. package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +32 -1
  159. package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +2 -2
  160. package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +7 -2
  161. package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +1 -1
  162. package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +7 -0
  163. package/.docs/raw/docs/runtimes/custom/data-stream.mdx +27 -2
  164. package/.docs/raw/docs/runtimes/custom/external-store.mdx +9 -1
  165. package/.docs/raw/docs/runtimes/custom/overview.mdx +2 -2
  166. package/.docs/raw/docs/runtimes/google-adk/overview.mdx +2 -2
  167. package/.docs/raw/docs/runtimes/langchain.mdx +2 -2
  168. package/.docs/raw/docs/runtimes/langgraph/overview.mdx +2 -2
  169. package/.docs/raw/docs/runtimes/opencode/overview.mdx +2 -2
  170. package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +1 -1
  171. package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +12 -5
  172. package/.docs/raw/docs/ui/composer-trigger-popover.mdx +11 -1
  173. package/.docs/raw/docs/ui/mcp-config.mdx +102 -0
  174. package/.docs/raw/docs/ui/model-selector.mdx +8 -8
  175. package/.docs/raw/docs/ui/sources.mdx +17 -0
  176. package/.docs/raw/docs/ui/streamdown.mdx +34 -2
  177. package/.docs/raw/docs/ui/thread-list.mdx +2 -2
  178. package/.docs/raw/docs/ui/thread.mdx +2 -2
  179. package/README.md +14 -72
  180. package/dist/constants.d.ts +12 -9
  181. package/dist/constants.d.ts.map +1 -1
  182. package/dist/constants.js +13 -9
  183. package/dist/constants.js.map +1 -1
  184. package/dist/index.d.ts +7 -3
  185. package/dist/index.d.ts.map +1 -1
  186. package/dist/index.js +25 -24
  187. package/dist/index.js.map +1 -1
  188. package/dist/prepare-docs/code-examples.d.ts +4 -1
  189. package/dist/prepare-docs/code-examples.d.ts.map +1 -1
  190. package/dist/prepare-docs/code-examples.js +109 -121
  191. package/dist/prepare-docs/code-examples.js.map +1 -1
  192. package/dist/prepare-docs/copy-raw.d.ts +4 -1
  193. package/dist/prepare-docs/copy-raw.d.ts.map +1 -1
  194. package/dist/prepare-docs/copy-raw.js +45 -42
  195. package/dist/prepare-docs/copy-raw.js.map +1 -1
  196. package/dist/prepare-docs/prepare.d.ts +1 -2
  197. package/dist/prepare-docs/prepare.js +17 -17
  198. package/dist/prepare-docs/prepare.js.map +1 -1
  199. package/dist/stdio.d.ts +1 -3
  200. package/dist/stdio.js +6 -3
  201. package/dist/stdio.js.map +1 -1
  202. package/dist/tools/docs.d.ts +20 -15
  203. package/dist/tools/docs.d.ts.map +1 -1
  204. package/dist/tools/docs.js +140 -161
  205. package/dist/tools/docs.js.map +1 -1
  206. package/dist/tools/examples.d.ts +20 -15
  207. package/dist/tools/examples.d.ts.map +1 -1
  208. package/dist/tools/examples.js +74 -86
  209. package/dist/tools/examples.js.map +1 -1
  210. package/dist/tools/tests/test-setup.d.ts +5 -2
  211. package/dist/tools/tests/test-setup.d.ts.map +1 -1
  212. package/dist/tools/tests/test-setup.js +21 -28
  213. package/dist/tools/tests/test-setup.js.map +1 -1
  214. package/dist/utils/logger.d.ts +8 -5
  215. package/dist/utils/logger.d.ts.map +1 -1
  216. package/dist/utils/logger.js +17 -17
  217. package/dist/utils/logger.js.map +1 -1
  218. package/dist/utils/mcp-format.d.ts +8 -5
  219. package/dist/utils/mcp-format.d.ts.map +1 -1
  220. package/dist/utils/mcp-format.js +9 -9
  221. package/dist/utils/mcp-format.js.map +1 -1
  222. package/dist/utils/mdx.d.ts +8 -6
  223. package/dist/utils/mdx.d.ts.map +1 -1
  224. package/dist/utils/mdx.js +22 -22
  225. package/dist/utils/mdx.js.map +1 -1
  226. package/dist/utils/paths.d.ts +9 -6
  227. package/dist/utils/paths.d.ts.map +1 -1
  228. package/dist/utils/paths.js +66 -76
  229. package/dist/utils/paths.js.map +1 -1
  230. package/dist/utils/security.d.ts +4 -1
  231. package/dist/utils/security.d.ts.map +1 -1
  232. package/dist/utils/security.js +19 -40
  233. package/dist/utils/security.js.map +1 -1
  234. package/package.json +5 -5
  235. package/.docs/raw/docs/(reference)/api-reference/adapters/feedback-speech.mdx +0 -41
  236. package/.docs/raw/docs/(reference)/api-reference/context-providers/text-message-part-provider.mdx +0 -40
  237. package/.docs/raw/docs/(reference)/api-reference/integrations/react-data-stream.mdx +0 -260
  238. package/.docs/raw/docs/(reference)/api-reference/integrations/react-hook-form.mdx +0 -103
  239. package/.docs/raw/docs/(reference)/api-reference/integrations/vercel-ai-sdk.mdx +0 -254
  240. package/dist/prepare-docs/prepare.d.ts.map +0 -1
  241. package/dist/stdio.d.ts.map +0 -1
  242. /package/.docs/raw/docs/{(reference)/migrations → migrations}/deprecation-policy.mdx +0 -0
  243. /package/.docs/raw/docs/{(reference) → migrations}/react-compatibility.mdx +0 -0
  244. /package/.docs/raw/docs/{(reference)/migrations → migrations}/react-langgraph-v0-7.mdx +0 -0
  245. /package/.docs/raw/docs/{(reference)/migrations → migrations}/v0-11.mdx +0 -0
  246. /package/.docs/raw/docs/{(reference)/migrations → migrations}/v0-12.mdx +0 -0
  247. /package/.docs/raw/docs/{(reference)/migrations → migrations}/v0-14.mdx +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/prepare-docs/prepare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,KAAK,UAAU,OAAO;IACpB,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,OAAO,EAAE,CAAC;QAChB,MAAM,mBAAmB,EAAE,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QACxD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACxB,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"prepare.js","names":[],"sources":["../../src/prepare-docs/prepare.ts"],"sourcesContent":["import { logger } from \"../utils/logger.js\";\nimport { copyRaw } from \"./copy-raw.js\";\nimport { prepareCodeExamples } from \"./code-examples.js\";\n\nasync function prepare(): Promise<void> {\n logger.info(\"Starting documentation preparation...\");\n\n try {\n await copyRaw();\n await prepareCodeExamples();\n\n logger.info(\"Documentation preparation complete\");\n } catch (error) {\n logger.error(\"Documentation preparation failed\", error);\n throw error;\n }\n}\n\nif (import.meta.url === `file://${process.argv[1]}`) {\n prepare().catch((error) => {\n logger.error(\"Preparation failed\", error);\n process.exit(1);\n });\n}\n"],"mappings":";;;;AAIA,eAAe,UAAyB;CACtC,OAAO,KAAK,uCAAuC;CAEnD,IAAI;EACF,MAAM,QAAQ;EACd,MAAM,oBAAoB;EAE1B,OAAO,KAAK,oCAAoC;CAClD,SAAS,OAAO;EACd,OAAO,MAAM,oCAAoC,KAAK;EACtD,MAAM;CACR;AACF;AAEA,IAAI,OAAO,KAAK,QAAQ,UAAU,QAAQ,KAAK,MAC7C,QAAQ,EAAE,OAAO,UAAU;CACzB,OAAO,MAAM,sBAAsB,KAAK;CACxC,QAAQ,KAAK,CAAC;AAChB,CAAC"}
package/dist/stdio.d.ts CHANGED
@@ -1,3 +1 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=stdio.d.ts.map
1
+ export { };
package/dist/stdio.js CHANGED
@@ -1,7 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { runServer } from "./index.js";
3
- void runServer().catch((error) => {
4
- console.error("Failed to start server:", error);
5
- process.exit(1);
3
+ //#region src/stdio.ts
4
+ runServer().catch((error) => {
5
+ console.error("Failed to start server:", error);
6
+ process.exit(1);
6
7
  });
8
+ //#endregion
9
+
7
10
  //# sourceMappingURL=stdio.js.map
package/dist/stdio.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,KAAK,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC/B,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"stdio.js","names":[],"sources":["../src/stdio.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { runServer } from \"./index.js\";\n\nvoid runServer().catch((error) => {\n console.error(\"Failed to start server:\", error);\n process.exit(1);\n});\n"],"mappings":";;;AAGK,UAAU,EAAE,OAAO,UAAU;CAChC,QAAQ,MAAM,2BAA2B,KAAK;CAC9C,QAAQ,KAAK,CAAC;AAChB,CAAC"}
@@ -1,23 +1,28 @@
1
1
  import { z } from "zod/v3";
2
+
3
+ //#region src/tools/docs.d.ts
2
4
  declare const docsInputSchema: z.ZodObject<{
3
- paths: z.ZodArray<z.ZodString, "many">;
5
+ paths: z.ZodArray<z.ZodString, "many">;
4
6
  }, "strip", z.ZodTypeAny, {
5
- paths: string[];
7
+ paths: string[];
6
8
  }, {
7
- paths: string[];
9
+ paths: string[];
8
10
  }>;
9
- export declare const docsTools: {
10
- name: string;
11
- description: string;
12
- parameters: {
13
- paths: z.ZodArray<z.ZodString, "many">;
14
- };
15
- execute: ({ paths }: z.infer<typeof docsInputSchema>) => Promise<{
16
- content: Array<{
17
- type: "text";
18
- text: string;
19
- }>;
11
+ declare const docsTools: {
12
+ name: string;
13
+ description: string;
14
+ parameters: {
15
+ paths: z.ZodArray<z.ZodString, "many">;
16
+ };
17
+ execute: ({
18
+ paths
19
+ }: z.infer<typeof docsInputSchema>) => Promise<{
20
+ content: Array<{
21
+ type: "text";
22
+ text: string;
20
23
  }>;
24
+ }>;
21
25
  };
22
- export {};
26
+ //#endregion
27
+ export { docsTools };
23
28
  //# sourceMappingURL=docs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/tools/docs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAe3B,QAAA,MAAM,eAAe;;;;;;EAOnB,CAAC;AA6IH,eAAO,MAAM,SAAS;;;;;;yBAKO,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC;;;;;;CAsC3D,CAAC"}
1
+ {"version":3,"file":"docs.d.ts","names":[],"sources":["../../src/tools/docs.ts"],"mappings":";;;cAeM,eAAA,EAAe,CAAA,CAAA,SAAA;;;;;;;cAoJR,SAAA;;;;;;;;KAKgB,CAAA,CAAE,KAAA,QAAa,eAAA,MAAgB,OAAA"}
@@ -1,168 +1,147 @@
1
- import { z } from "zod/v3";
2
- import { stat, lstat } from "node:fs/promises";
3
- import { join, extname } from "node:path";
4
- import { DOCS_PATH, MDX_EXTENSION, MAX_FILE_SIZE } from "../constants.js";
1
+ import { DOCS_PATH, MAX_FILE_SIZE, MDX_EXTENSION } from "../constants.js";
5
2
  import { logger } from "../utils/logger.js";
6
- import { listDirContents, getAvailablePaths, findNearestPaths, pathExists, } from "../utils/paths.js";
7
- import { readMDXFile, formatMDXContent } from "../utils/mdx.js";
3
+ import { findNearestPaths, getAvailablePaths, listDirContents, pathExists } from "../utils/paths.js";
4
+ import { formatMDXContent, readMDXFile } from "../utils/mdx.js";
8
5
  import { formatMCPResponse } from "../utils/mcp-format.js";
9
6
  import { sanitizePath } from "../utils/security.js";
10
- const docsInputSchema = z.object({
11
- paths: z
12
- .array(z.string())
13
- .min(1)
14
- .describe('Documentation paths to retrieve (e.g., ["getting-started", "api-reference/primitives/thread"])'),
15
- });
7
+ import { extname, join } from "node:path";
8
+ import { z } from "zod/v3";
9
+ import { lstat, stat } from "node:fs/promises";
10
+ //#region src/tools/docs.ts
11
+ const docsInputSchema = z.object({ paths: z.array(z.string()).min(1).describe("Documentation paths to retrieve (e.g., [\"getting-started\", \"api-reference/primitives/thread\"])") });
16
12
  async function readDocumentation(docPath) {
17
- logger.debug(`Reading documentation for path: ${docPath}`);
18
- if (docPath === "/" || docPath === "") {
19
- const { directories, files } = await listDirContents(DOCS_PATH);
20
- return {
21
- path: "/",
22
- found: true,
23
- type: "directory",
24
- directories,
25
- files: files.map((f) => f.replace(MDX_EXTENSION, "")),
26
- };
27
- }
28
- try {
29
- const sanitized = sanitizePath(docPath);
30
- const fullPath = join(DOCS_PATH, sanitized);
31
- try {
32
- const lstats = await lstat(fullPath);
33
- if (lstats.isSymbolicLink()) {
34
- logger.warn(`Symlink detected at path: ${fullPath}`);
35
- return {
36
- path: docPath,
37
- found: false,
38
- error: "Symlinks are not allowed for security reasons",
39
- };
40
- }
41
- }
42
- catch { }
43
- if (await pathExists(fullPath)) {
44
- const stats = await stat(fullPath);
45
- if (stats.isFile() && stats.size > MAX_FILE_SIZE) {
46
- logger.warn(`File too large: ${fullPath} (${stats.size} bytes)`);
47
- return {
48
- path: docPath,
49
- found: false,
50
- error: `File size exceeds maximum allowed size of ${MAX_FILE_SIZE} bytes`,
51
- };
52
- }
53
- if (stats.isDirectory()) {
54
- const { directories, files } = await listDirContents(fullPath);
55
- const contents = {};
56
- for (const file of files) {
57
- const mdxContent = await readMDXFile(join(fullPath, file));
58
- if (mdxContent) {
59
- const fileName = file.replace(MDX_EXTENSION, "");
60
- contents[fileName] = formatMDXContent(mdxContent);
61
- }
62
- }
63
- const content = Object.keys(contents).length > 0
64
- ? JSON.stringify(contents, null, 2)
65
- : undefined;
66
- return {
67
- path: docPath,
68
- found: true,
69
- type: "directory",
70
- directories,
71
- files: files.map((f) => f.replace(MDX_EXTENSION, "")),
72
- ...(content !== undefined && { content }),
73
- };
74
- }
75
- }
76
- const mdxPath = extname(fullPath) === MDX_EXTENSION
77
- ? fullPath
78
- : `${fullPath}${MDX_EXTENSION}`;
79
- try {
80
- const mdxLstats = await lstat(mdxPath);
81
- if (mdxLstats.isSymbolicLink()) {
82
- logger.warn(`Symlink detected at MDX path: ${mdxPath}`);
83
- return {
84
- path: docPath,
85
- found: false,
86
- error: "Symlinks are not allowed for security reasons",
87
- };
88
- }
89
- if (mdxLstats.size > MAX_FILE_SIZE) {
90
- logger.warn(`MDX file too large: ${mdxPath} (${mdxLstats.size} bytes)`);
91
- return {
92
- path: docPath,
93
- found: false,
94
- error: `File size exceeds maximum allowed size of ${MAX_FILE_SIZE} bytes`,
95
- };
96
- }
97
- }
98
- catch { }
99
- if (await pathExists(mdxPath)) {
100
- const mdxContent = await readMDXFile(mdxPath);
101
- if (mdxContent) {
102
- return {
103
- path: docPath,
104
- found: true,
105
- type: "file",
106
- content: formatMDXContent(mdxContent),
107
- };
108
- }
109
- }
110
- const availablePaths = await getAvailablePaths();
111
- const suggestions = findNearestPaths(docPath, availablePaths);
112
- return {
113
- path: docPath,
114
- found: false,
115
- suggestions,
116
- };
117
- }
118
- catch (error) {
119
- if (error instanceof Error && error.message.includes("Invalid path")) {
120
- return {
121
- path: docPath,
122
- found: false,
123
- error: error.message,
124
- };
125
- }
126
- throw error;
127
- }
13
+ logger.debug(`Reading documentation for path: ${docPath}`);
14
+ if (docPath === "/" || docPath === "") {
15
+ const { directories, files } = await listDirContents(DOCS_PATH);
16
+ return {
17
+ path: "/",
18
+ found: true,
19
+ type: "directory",
20
+ directories,
21
+ files: files.map((f) => f.replace(MDX_EXTENSION, ""))
22
+ };
23
+ }
24
+ try {
25
+ const fullPath = join(DOCS_PATH, sanitizePath(docPath));
26
+ try {
27
+ if ((await lstat(fullPath)).isSymbolicLink()) {
28
+ logger.warn(`Symlink detected at path: ${fullPath}`);
29
+ return {
30
+ path: docPath,
31
+ found: false,
32
+ error: "Symlinks are not allowed for security reasons"
33
+ };
34
+ }
35
+ } catch {}
36
+ if (await pathExists(fullPath)) {
37
+ const stats = await stat(fullPath);
38
+ if (stats.isFile() && stats.size > 10485760) {
39
+ logger.warn(`File too large: ${fullPath} (${stats.size} bytes)`);
40
+ return {
41
+ path: docPath,
42
+ found: false,
43
+ error: `File size exceeds maximum allowed size of ${MAX_FILE_SIZE} bytes`
44
+ };
45
+ }
46
+ if (stats.isDirectory()) {
47
+ const { directories, files } = await listDirContents(fullPath);
48
+ const contents = {};
49
+ for (const file of files) {
50
+ const mdxContent = await readMDXFile(join(fullPath, file));
51
+ if (mdxContent) {
52
+ const fileName = file.replace(MDX_EXTENSION, "");
53
+ contents[fileName] = formatMDXContent(mdxContent);
54
+ }
55
+ }
56
+ const content = Object.keys(contents).length > 0 ? JSON.stringify(contents, null, 2) : void 0;
57
+ return {
58
+ path: docPath,
59
+ found: true,
60
+ type: "directory",
61
+ directories,
62
+ files: files.map((f) => f.replace(MDX_EXTENSION, "")),
63
+ ...content !== void 0 && { content }
64
+ };
65
+ }
66
+ }
67
+ const mdxPath = extname(fullPath) === ".mdx" ? fullPath : `${fullPath}${MDX_EXTENSION}`;
68
+ try {
69
+ const mdxLstats = await lstat(mdxPath);
70
+ if (mdxLstats.isSymbolicLink()) {
71
+ logger.warn(`Symlink detected at MDX path: ${mdxPath}`);
72
+ return {
73
+ path: docPath,
74
+ found: false,
75
+ error: "Symlinks are not allowed for security reasons"
76
+ };
77
+ }
78
+ if (mdxLstats.size > 10485760) {
79
+ logger.warn(`MDX file too large: ${mdxPath} (${mdxLstats.size} bytes)`);
80
+ return {
81
+ path: docPath,
82
+ found: false,
83
+ error: `File size exceeds maximum allowed size of ${MAX_FILE_SIZE} bytes`
84
+ };
85
+ }
86
+ } catch {}
87
+ if (await pathExists(mdxPath)) {
88
+ const mdxContent = await readMDXFile(mdxPath);
89
+ if (mdxContent) return {
90
+ path: docPath,
91
+ found: true,
92
+ type: "file",
93
+ content: formatMDXContent(mdxContent)
94
+ };
95
+ }
96
+ return {
97
+ path: docPath,
98
+ found: false,
99
+ suggestions: findNearestPaths(docPath, await getAvailablePaths())
100
+ };
101
+ } catch (error) {
102
+ if (error instanceof Error && error.message.includes("Invalid path")) return {
103
+ path: docPath,
104
+ found: false,
105
+ error: error.message
106
+ };
107
+ throw error;
108
+ }
128
109
  }
129
- export const docsTools = {
130
- name: "assistantUIDocs",
131
- description: 'Retrieve assistant-ui documentation by path. Use "/" to list all sections. Supports multiple paths in a single request.',
132
- parameters: docsInputSchema.shape,
133
- execute: async ({ paths }) => {
134
- logger.info(`Retrieving documentation for paths: ${paths.join(", ")}`);
135
- try {
136
- const results = await Promise.all(paths.map((path) => readDocumentation(path)));
137
- if (results.length === 1) {
138
- const result = results[0];
139
- if (result.error) {
140
- return formatMCPResponse({
141
- error: result.error,
142
- path: result.path,
143
- });
144
- }
145
- if (!result.found) {
146
- return formatMCPResponse({
147
- error: `Documentation not found for path: ${result.path}`,
148
- suggestions: result.suggestions,
149
- hint: 'Use "/" to list all available documentation sections',
150
- });
151
- }
152
- return formatMCPResponse(result);
153
- }
154
- return formatMCPResponse({
155
- results,
156
- summary: `Retrieved ${results.filter((r) => r.found).length} of ${results.length} requested paths`,
157
- });
158
- }
159
- catch (error) {
160
- logger.error("Failed to retrieve documentation", error);
161
- return formatMCPResponse({
162
- error: "Failed to retrieve documentation",
163
- message: error instanceof Error ? error.message : String(error),
164
- });
165
- }
166
- },
110
+ const docsTools = {
111
+ name: "assistantUIDocs",
112
+ description: "Retrieve assistant-ui documentation by path. Use \"/\" to list all sections. Supports multiple paths in a single request.",
113
+ parameters: docsInputSchema.shape,
114
+ execute: async ({ paths }) => {
115
+ logger.info(`Retrieving documentation for paths: ${paths.join(", ")}`);
116
+ try {
117
+ const results = await Promise.all(paths.map((path) => readDocumentation(path)));
118
+ if (results.length === 1) {
119
+ const result = results[0];
120
+ if (result.error) return formatMCPResponse({
121
+ error: result.error,
122
+ path: result.path
123
+ });
124
+ if (!result.found) return formatMCPResponse({
125
+ error: `Documentation not found for path: ${result.path}`,
126
+ suggestions: result.suggestions,
127
+ hint: "Use \"/\" to list all available documentation sections"
128
+ });
129
+ return formatMCPResponse(result);
130
+ }
131
+ return formatMCPResponse({
132
+ results,
133
+ summary: `Retrieved ${results.filter((r) => r.found).length} of ${results.length} requested paths`
134
+ });
135
+ } catch (error) {
136
+ logger.error("Failed to retrieve documentation", error);
137
+ return formatMCPResponse({
138
+ error: "Failed to retrieve documentation",
139
+ message: error instanceof Error ? error.message : String(error)
140
+ });
141
+ }
142
+ }
167
143
  };
144
+ //#endregion
145
+ export { docsTools };
146
+
168
147
  //# sourceMappingURL=docs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/tools/docs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docs.js","names":[],"sources":["../../src/tools/docs.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { stat, lstat } from \"node:fs/promises\";\nimport { join, extname } from \"node:path\";\nimport { DOCS_PATH, MDX_EXTENSION, MAX_FILE_SIZE } from \"../constants.js\";\nimport { logger } from \"../utils/logger.js\";\nimport {\n listDirContents,\n getAvailablePaths,\n findNearestPaths,\n pathExists,\n} from \"../utils/paths.js\";\nimport { readMDXFile, formatMDXContent } from \"../utils/mdx.js\";\nimport { formatMCPResponse } from \"../utils/mcp-format.js\";\nimport { sanitizePath } from \"../utils/security.js\";\n\nconst docsInputSchema = z.object({\n paths: z\n .array(z.string())\n .min(1)\n .describe(\n 'Documentation paths to retrieve (e.g., [\"getting-started\", \"api-reference/primitives/thread\"])',\n ),\n});\n\ninterface DocResult {\n path: string;\n found: boolean;\n type?: \"file\" | \"directory\";\n content?: string;\n files?: string[];\n directories?: string[];\n suggestions?: string[];\n error?: string;\n}\n\nasync function readDocumentation(docPath: string): Promise<DocResult> {\n logger.debug(`Reading documentation for path: ${docPath}`);\n\n if (docPath === \"/\" || docPath === \"\") {\n const { directories, files } = await listDirContents(DOCS_PATH);\n return {\n path: \"/\",\n found: true,\n type: \"directory\",\n directories,\n files: files.map((f) => f.replace(MDX_EXTENSION, \"\")),\n };\n }\n\n try {\n const sanitized = sanitizePath(docPath);\n const fullPath = join(DOCS_PATH, sanitized);\n\n try {\n const lstats = await lstat(fullPath);\n if (lstats.isSymbolicLink()) {\n logger.warn(`Symlink detected at path: ${fullPath}`);\n return {\n path: docPath,\n found: false,\n error: \"Symlinks are not allowed for security reasons\",\n };\n }\n } catch {}\n\n if (await pathExists(fullPath)) {\n const stats = await stat(fullPath);\n\n if (stats.isFile() && stats.size > MAX_FILE_SIZE) {\n logger.warn(`File too large: ${fullPath} (${stats.size} bytes)`);\n return {\n path: docPath,\n found: false,\n error: `File size exceeds maximum allowed size of ${MAX_FILE_SIZE} bytes`,\n };\n }\n\n if (stats.isDirectory()) {\n const { directories, files } = await listDirContents(fullPath);\n\n const contents: Record<string, string> = {};\n for (const file of files) {\n const mdxContent = await readMDXFile(join(fullPath, file));\n if (mdxContent) {\n const fileName = file.replace(MDX_EXTENSION, \"\");\n contents[fileName] = formatMDXContent(mdxContent);\n }\n }\n\n const content =\n Object.keys(contents).length > 0\n ? JSON.stringify(contents, null, 2)\n : undefined;\n return {\n path: docPath,\n found: true,\n type: \"directory\",\n directories,\n files: files.map((f) => f.replace(MDX_EXTENSION, \"\")),\n ...(content !== undefined && { content }),\n };\n }\n }\n\n const mdxPath =\n extname(fullPath) === MDX_EXTENSION\n ? fullPath\n : `${fullPath}${MDX_EXTENSION}`;\n\n try {\n const mdxLstats = await lstat(mdxPath);\n if (mdxLstats.isSymbolicLink()) {\n logger.warn(`Symlink detected at MDX path: ${mdxPath}`);\n return {\n path: docPath,\n found: false,\n error: \"Symlinks are not allowed for security reasons\",\n };\n }\n\n if (mdxLstats.size > MAX_FILE_SIZE) {\n logger.warn(`MDX file too large: ${mdxPath} (${mdxLstats.size} bytes)`);\n return {\n path: docPath,\n found: false,\n error: `File size exceeds maximum allowed size of ${MAX_FILE_SIZE} bytes`,\n };\n }\n } catch {}\n\n if (await pathExists(mdxPath)) {\n const mdxContent = await readMDXFile(mdxPath);\n\n if (mdxContent) {\n return {\n path: docPath,\n found: true,\n type: \"file\",\n content: formatMDXContent(mdxContent),\n };\n }\n }\n\n const availablePaths = await getAvailablePaths();\n const suggestions = findNearestPaths(docPath, availablePaths);\n\n return {\n path: docPath,\n found: false,\n suggestions,\n };\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"Invalid path\")) {\n return {\n path: docPath,\n found: false,\n error: error.message,\n };\n }\n throw error;\n }\n}\n\nexport const docsTools = {\n name: \"assistantUIDocs\",\n description:\n 'Retrieve assistant-ui documentation by path. Use \"/\" to list all sections. Supports multiple paths in a single request.',\n parameters: docsInputSchema.shape,\n execute: async ({ paths }: z.infer<typeof docsInputSchema>) => {\n logger.info(`Retrieving documentation for paths: ${paths.join(\", \")}`);\n\n try {\n const results = await Promise.all(\n paths.map((path) => readDocumentation(path)),\n );\n\n if (results.length === 1) {\n const result = results[0]!;\n if (result.error) {\n return formatMCPResponse({\n error: result.error,\n path: result.path,\n });\n }\n if (!result.found) {\n return formatMCPResponse({\n error: `Documentation not found for path: ${result.path}`,\n suggestions: result.suggestions,\n hint: 'Use \"/\" to list all available documentation sections',\n });\n }\n return formatMCPResponse(result);\n }\n\n return formatMCPResponse({\n results,\n summary: `Retrieved ${results.filter((r) => r.found).length} of ${results.length} requested paths`,\n });\n } catch (error) {\n logger.error(\"Failed to retrieve documentation\", error);\n return formatMCPResponse({\n error: \"Failed to retrieve documentation\",\n message: error instanceof Error ? error.message : String(error),\n });\n }\n },\n};\n"],"mappings":"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"}
@@ -1,23 +1,28 @@
1
1
  import { z } from "zod/v3";
2
+
3
+ //#region src/tools/examples.d.ts
2
4
  declare const examplesInputSchema: z.ZodObject<{
3
- example: z.ZodOptional<z.ZodString>;
5
+ example: z.ZodOptional<z.ZodString>;
4
6
  }, "strip", z.ZodTypeAny, {
5
- example?: string | undefined;
7
+ example?: string | undefined;
6
8
  }, {
7
- example?: string | undefined;
9
+ example?: string | undefined;
8
10
  }>;
9
- export declare const examplesTools: {
10
- name: string;
11
- description: string;
12
- parameters: {
13
- example: z.ZodOptional<z.ZodString>;
14
- };
15
- execute: ({ example }: z.infer<typeof examplesInputSchema>) => Promise<{
16
- content: Array<{
17
- type: "text";
18
- text: string;
19
- }>;
11
+ declare const examplesTools: {
12
+ name: string;
13
+ description: string;
14
+ parameters: {
15
+ example: z.ZodOptional<z.ZodString>;
16
+ };
17
+ execute: ({
18
+ example
19
+ }: z.infer<typeof examplesInputSchema>) => Promise<{
20
+ content: Array<{
21
+ type: "text";
22
+ text: string;
20
23
  }>;
24
+ }>;
21
25
  };
22
- export {};
26
+ //#endregion
27
+ export { examplesTools };
23
28
  //# sourceMappingURL=examples.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../../src/tools/examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAQ3B,QAAA,MAAM,mBAAmB;;;;;;EAOvB,CAAC;AAuCH,eAAO,MAAM,aAAa;;;;;;2BAKK,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC;;;;;;CA+CjE,CAAC"}
1
+ {"version":3,"file":"examples.d.ts","names":[],"sources":["../../src/tools/examples.ts"],"mappings":";;;cAQM,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;;;;;cA8CZ,aAAA;;;;;;;;KAKkB,CAAA,CAAE,KAAA,QAAa,mBAAA,MAAoB,OAAA"}