@ulearning/ai-sdk-adapter 0.0.0-stage → 1.0.0-next.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 (210) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +29 -2
  3. package/dist/adapters/aiSDKFormatAdapter.d.ts +6 -0
  4. package/dist/adapters/aiSDKFormatAdapter.d.ts.map +1 -0
  5. package/dist/adapters/aiSDKFormatAdapter.js +17 -0
  6. package/dist/adapters/aiSDKFormatAdapter.js.map +1 -0
  7. package/dist/adapters/vercelAttachmentAdapter.d.ts +3 -0
  8. package/dist/adapters/vercelAttachmentAdapter.d.ts.map +1 -0
  9. package/dist/adapters/vercelAttachmentAdapter.js +36 -0
  10. package/dist/adapters/vercelAttachmentAdapter.js.map +1 -0
  11. package/dist/aiSDKExtras.d.ts +13 -0
  12. package/dist/aiSDKExtras.d.ts.map +1 -0
  13. package/dist/aiSDKExtras.js +6 -0
  14. package/dist/aiSDKExtras.js.map +1 -0
  15. package/dist/converters/convertMessage.d.ts +44 -0
  16. package/dist/converters/convertMessage.d.ts.map +1 -0
  17. package/dist/converters/convertMessage.js +465 -0
  18. package/dist/converters/convertMessage.js.map +1 -0
  19. package/dist/converters/toCreateMessage.d.ts +4 -0
  20. package/dist/converters/toCreateMessage.d.ts.map +1 -0
  21. package/dist/converters/toCreateMessage.js +65 -0
  22. package/dist/converters/toCreateMessage.js.map +1 -0
  23. package/dist/converters/toolApprovalAnswers.d.ts +3 -0
  24. package/dist/converters/toolApprovalAnswers.d.ts.map +1 -0
  25. package/dist/converters/toolApprovalAnswers.js +16 -0
  26. package/dist/converters/toolApprovalAnswers.js.map +1 -0
  27. package/dist/hooks.d.ts +17 -0
  28. package/dist/hooks.d.ts.map +1 -0
  29. package/dist/hooks.js +19 -0
  30. package/dist/hooks.js.map +1 -0
  31. package/dist/index.d.ts +17 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +13 -0
  34. package/dist/model-context/injectInteractableContext.d.ts +37 -0
  35. package/dist/model-context/injectInteractableContext.d.ts.map +1 -0
  36. package/dist/model-context/injectInteractableContext.js +54 -0
  37. package/dist/model-context/injectInteractableContext.js.map +1 -0
  38. package/dist/model-context/injectQuoteContext.d.ts +25 -0
  39. package/dist/model-context/injectQuoteContext.d.ts.map +1 -0
  40. package/dist/model-context/injectQuoteContext.js +51 -0
  41. package/dist/model-context/injectQuoteContext.js.map +1 -0
  42. package/dist/runtime/AISDKChat.d.ts +13 -0
  43. package/dist/runtime/AISDKChat.d.ts.map +1 -0
  44. package/dist/runtime/AISDKChat.js +34 -0
  45. package/dist/runtime/AISDKChat.js.map +1 -0
  46. package/dist/runtime/AISDKThreads.d.ts +24 -0
  47. package/dist/runtime/AISDKThreads.d.ts.map +1 -0
  48. package/dist/runtime/AISDKThreads.js +92 -0
  49. package/dist/runtime/AISDKThreads.js.map +1 -0
  50. package/dist/runtime/DynamicChatTransport.d.ts +50 -0
  51. package/dist/runtime/DynamicChatTransport.d.ts.map +1 -0
  52. package/dist/runtime/DynamicChatTransport.js +153 -0
  53. package/dist/runtime/DynamicChatTransport.js.map +1 -0
  54. package/dist/runtime/getResumableAdapter.d.ts +5 -0
  55. package/dist/runtime/getResumableAdapter.d.ts.map +1 -0
  56. package/dist/runtime/getResumableAdapter.js +11 -0
  57. package/dist/runtime/getResumableAdapter.js.map +1 -0
  58. package/dist/runtime/toolHistoryCodec.d.ts +20 -0
  59. package/dist/runtime/toolHistoryCodec.d.ts.map +1 -0
  60. package/dist/runtime/toolHistoryCodec.js +122 -0
  61. package/dist/runtime/toolHistoryCodec.js.map +1 -0
  62. package/dist/runtime/useAISDKRuntime.d.ts +95 -0
  63. package/dist/runtime/useAISDKRuntime.d.ts.map +1 -0
  64. package/dist/runtime/useAISDKRuntime.js +754 -0
  65. package/dist/runtime/useAISDKRuntime.js.map +1 -0
  66. package/dist/runtime/useChatRuntime.d.ts +17 -0
  67. package/dist/runtime/useChatRuntime.d.ts.map +1 -0
  68. package/dist/runtime/useChatRuntime.js +50 -0
  69. package/dist/runtime/useChatRuntime.js.map +1 -0
  70. package/dist/runtime/useChatSnapshot.d.ts +6 -0
  71. package/dist/runtime/useChatSnapshot.d.ts.map +1 -0
  72. package/dist/runtime/useChatSnapshot.js +62 -0
  73. package/dist/runtime/useChatSnapshot.js.map +1 -0
  74. package/dist/runtime/useChatThread.d.ts +121 -0
  75. package/dist/runtime/useChatThread.d.ts.map +1 -0
  76. package/dist/runtime/useChatThread.js +255 -0
  77. package/dist/runtime/useChatThread.js.map +1 -0
  78. package/dist/runtime/useDynamicChatTransport.d.ts +4 -0
  79. package/dist/runtime/useDynamicChatTransport.d.ts.map +1 -0
  80. package/dist/runtime/useDynamicChatTransport.js +26 -0
  81. package/dist/runtime/useDynamicChatTransport.js.map +1 -0
  82. package/dist/runtime/useExternalHistory.d.ts +12 -0
  83. package/dist/runtime/useExternalHistory.d.ts.map +1 -0
  84. package/dist/runtime/useExternalHistory.js +556 -0
  85. package/dist/runtime/useExternalHistory.js.map +1 -0
  86. package/dist/runtime/useMessageQueue.d.ts +14 -0
  87. package/dist/runtime/useMessageQueue.d.ts.map +1 -0
  88. package/dist/runtime/useMessageQueue.js +142 -0
  89. package/dist/runtime/useMessageQueue.js.map +1 -0
  90. package/dist/runtime/useResourceCleanup.d.ts +2 -0
  91. package/dist/runtime/useResourceCleanup.d.ts.map +1 -0
  92. package/dist/runtime/useResourceCleanup.js +47 -0
  93. package/dist/runtime/useResourceCleanup.js.map +1 -0
  94. package/dist/runtime/useStreamingTiming.d.ts +12 -0
  95. package/dist/runtime/useStreamingTiming.d.ts.map +1 -0
  96. package/dist/runtime/useStreamingTiming.js +36 -0
  97. package/dist/runtime/useStreamingTiming.js.map +1 -0
  98. package/dist/tools/generativeTools.d.ts +71 -0
  99. package/dist/tools/generativeTools.d.ts.map +1 -0
  100. package/dist/tools/generativeTools.js +258 -0
  101. package/dist/tools/generativeTools.js.map +1 -0
  102. package/dist/tools/mcp-stdio.node.d.ts +2 -0
  103. package/dist/tools/mcp-stdio.node.d.ts.map +1 -0
  104. package/dist/tools/mcp-stdio.node.js +1 -0
  105. package/dist/tools/mcp-stdio.unsupported.d.ts +3 -0
  106. package/dist/tools/mcp-stdio.unsupported.d.ts.map +1 -0
  107. package/dist/tools/mcp-stdio.unsupported.js +10 -0
  108. package/dist/tools/mcp-stdio.unsupported.js.map +1 -0
  109. package/dist/transport/AssistantChatTransport.d.ts +20 -0
  110. package/dist/transport/AssistantChatTransport.d.ts.map +1 -0
  111. package/dist/transport/AssistantChatTransport.js +151 -0
  112. package/dist/transport/AssistantChatTransport.js.map +1 -0
  113. package/dist/transport/resumable.d.ts +36 -0
  114. package/dist/transport/resumable.d.ts.map +1 -0
  115. package/dist/transport/resumable.js +112 -0
  116. package/dist/transport/resumable.js.map +1 -0
  117. package/dist/usage.d.ts +24 -0
  118. package/dist/usage.d.ts.map +1 -0
  119. package/dist/usage.js +121 -0
  120. package/dist/usage.js.map +1 -0
  121. package/dist/utils/getVercelAIMessages.d.ts +4 -0
  122. package/dist/utils/getVercelAIMessages.d.ts.map +1 -0
  123. package/dist/utils/getVercelAIMessages.js +8 -0
  124. package/dist/utils/getVercelAIMessages.js.map +1 -0
  125. package/dist/utils/sliceMessagesUntil.d.ts +3 -0
  126. package/dist/utils/sliceMessagesUntil.d.ts.map +1 -0
  127. package/dist/utils/sliceMessagesUntil.js +10 -0
  128. package/dist/utils/sliceMessagesUntil.js.map +1 -0
  129. package/package.json +96 -3
  130. package/src/__tests__/standalone.e2e.ts +118 -0
  131. package/src/adapters/aiSDKFormatAdapter.test.ts +36 -0
  132. package/src/adapters/aiSDKFormatAdapter.ts +18 -0
  133. package/src/adapters/vercelAttachmentAdapter.test.ts +52 -0
  134. package/src/adapters/vercelAttachmentAdapter.ts +36 -0
  135. package/src/aiSDKExtras.ts +31 -0
  136. package/src/converters/convertMessage.metadata-key.test.tsx +182 -0
  137. package/src/converters/convertMessage.test.ts +2428 -0
  138. package/src/converters/convertMessage.tool-args-status.test.tsx +185 -0
  139. package/src/converters/convertMessage.ts +919 -0
  140. package/src/converters/toCreateMessage.test.ts +716 -0
  141. package/src/converters/toCreateMessage.ts +110 -0
  142. package/src/converters/toolApprovalAnswers.ts +27 -0
  143. package/src/hooks.test.ts +168 -0
  144. package/src/hooks.ts +26 -0
  145. package/src/index.ts +29 -0
  146. package/src/model-context/injectInteractableContext.test.ts +167 -0
  147. package/src/model-context/injectInteractableContext.ts +64 -0
  148. package/src/model-context/injectQuoteContext.test.ts +33 -0
  149. package/src/model-context/injectQuoteContext.ts +63 -0
  150. package/src/runtime/AISDKChat.artifacts.test.ts +48 -0
  151. package/src/runtime/AISDKChat.integration.test.tsx +148 -0
  152. package/src/runtime/AISDKChat.test.ts +241 -0
  153. package/src/runtime/AISDKChat.ts +43 -0
  154. package/src/runtime/AISDKThreads.test.ts +811 -0
  155. package/src/runtime/AISDKThreads.ts +194 -0
  156. package/src/runtime/DynamicChatTransport.test.ts +228 -0
  157. package/src/runtime/DynamicChatTransport.ts +281 -0
  158. package/src/runtime/__tests__/controlled-transport.ts +70 -0
  159. package/src/runtime/__tests__/tap.ts +80 -0
  160. package/src/runtime/__tests__/vue.ts +46 -0
  161. package/src/runtime/getResumableAdapter.ts +16 -0
  162. package/src/runtime/toolHistoryCodec.test.ts +187 -0
  163. package/src/runtime/toolHistoryCodec.ts +245 -0
  164. package/src/runtime/useAISDKRuntime.approval.integration.test.tsx +1956 -0
  165. package/src/runtime/useAISDKRuntime.approval.test.tsx +580 -0
  166. package/src/runtime/useAISDKRuntime.denied-tool.test.tsx +122 -0
  167. package/src/runtime/useAISDKRuntime.fast-refresh.test.tsx +302 -0
  168. package/src/runtime/useAISDKRuntime.metadata-cache.test.tsx +157 -0
  169. package/src/runtime/useAISDKRuntime.queue.test.tsx +707 -0
  170. package/src/runtime/useAISDKRuntime.reload.test.tsx +217 -0
  171. package/src/runtime/useAISDKRuntime.test.ts +2345 -0
  172. package/src/runtime/useAISDKRuntime.tool-output.test.tsx +113 -0
  173. package/src/runtime/useAISDKRuntime.ts +1503 -0
  174. package/src/runtime/useAISDKRuntime.voice.test.tsx +319 -0
  175. package/src/runtime/useChatOnTap.test.ts +60 -0
  176. package/src/runtime/useChatRuntime.fast-refresh.test.tsx +83 -0
  177. package/src/runtime/useChatRuntime.integration.test.tsx +661 -0
  178. package/src/runtime/useChatRuntime.local-storage.test.tsx +114 -0
  179. package/src/runtime/useChatRuntime.native.test.ts +147 -0
  180. package/src/runtime/useChatRuntime.run-telemetry.test.tsx +226 -0
  181. package/src/runtime/useChatRuntime.test.ts +619 -0
  182. package/src/runtime/useChatRuntime.ts +80 -0
  183. package/src/runtime/useChatSnapshot.test.ts +60 -0
  184. package/src/runtime/useChatSnapshot.ts +86 -0
  185. package/src/runtime/useChatThread.binding.test.tsx +140 -0
  186. package/src/runtime/useChatThread.test.ts +993 -0
  187. package/src/runtime/useChatThread.transport.test.tsx +149 -0
  188. package/src/runtime/useChatThread.ts +533 -0
  189. package/src/runtime/useDynamicChatTransport.ts +26 -0
  190. package/src/runtime/useExternalHistory.test.ts +4187 -0
  191. package/src/runtime/useExternalHistory.ts +902 -0
  192. package/src/runtime/useMessageQueue.effects.test.tsx +88 -0
  193. package/src/runtime/useMessageQueue.test.tsx +256 -0
  194. package/src/runtime/useMessageQueue.ts +189 -0
  195. package/src/runtime/useResourceCleanup.ts +58 -0
  196. package/src/runtime/useStreamingTiming.test.tsx +96 -0
  197. package/src/runtime/useStreamingTiming.ts +69 -0
  198. package/src/tools/generativeTools.test.ts +1058 -0
  199. package/src/tools/generativeTools.ts +491 -0
  200. package/src/tools/mcp-stdio.node.ts +1 -0
  201. package/src/tools/mcp-stdio.unsupported.ts +12 -0
  202. package/src/transport/AssistantChatTransport.test.ts +631 -0
  203. package/src/transport/AssistantChatTransport.ts +236 -0
  204. package/src/transport/resumable.test.ts +262 -0
  205. package/src/transport/resumable.ts +162 -0
  206. package/src/usage.test.ts +204 -0
  207. package/src/usage.ts +179 -0
  208. package/src/utils/getVercelAIMessages.ts +11 -0
  209. package/src/utils/sliceMessagesUntil.test.ts +51 -0
  210. package/src/utils/sliceMessagesUntil.ts +16 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 AgentbaseAI Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,30 @@
1
- # Temporary Holding Version
1
+ # `@ulearning/ai-sdk-adapter`
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Vercel AI SDK integration for `@ulearning/ai-sdk`. Wraps the AI SDK chat in an assistant-ui runtime and forwards system messages and frontend tools through `AssistantChatTransport`. Each release line targets the AI SDK major pinned in its dependencies.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @ulearning/ai-sdk @ulearning/ai-sdk-adapter ai
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```tsx
14
+ "use client";
15
+
16
+ import { AssistantRuntimeProvider } from "@ulearning/ai-sdk";
17
+ import { useChatRuntime } from "@ulearning/ai-sdk-adapter";
18
+ import { Thread } from "@/components/assistant-ui/elements/thread.aui";
19
+
20
+ export function Chat() {
21
+ const runtime = useChatRuntime();
22
+ return (
23
+ <AssistantRuntimeProvider runtime={runtime}>
24
+ <Thread />
25
+ </AssistantRuntimeProvider>
26
+ );
27
+ }
28
+ ```
29
+
30
+ `useChatRuntime` defaults to `AssistantChatTransport`, which forwards frontend system messages and tool definitions to your backend. To customize the API URL, the cache, or other transport settings, pass a configured `AssistantChatTransport` to keep that forwarding behavior; pass `DefaultChatTransport` to opt out.
@@ -0,0 +1,6 @@
1
+ import type { UIMessage } from "ai";
2
+ import type { MessageFormatAdapter } from "@ulearning/ai-core";
3
+ export type AISDKStorageFormat = Omit<UIMessage, "id">;
4
+ /** The stored form of an AI SDK message: the message without its id. */
5
+ export declare const aiSDKV6FormatAdapter: MessageFormatAdapter<UIMessage, AISDKStorageFormat>;
6
+ //# sourceMappingURL=aiSDKFormatAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiSDKFormatAdapter.d.ts","mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI;AACnC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB;AAE9D,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AAEtD;AACA,eAAO,MAAM,oBAAoB,EAAE,oBAAoB,CACrD,SAAS,EACT,kBAAkB,CASnB","names":[],"ignoreList":[],"sources":["../../src/adapters/aiSDKFormatAdapter.ts"],"sourcesContent":[null]}
@@ -0,0 +1,17 @@
1
+ // src/adapters/aiSDKFormatAdapter.ts
2
+ /** The stored form of an AI SDK message: the message without its id. */
3
+ const aiSDKV6FormatAdapter = {
4
+ format: "ai-sdk/v6",
5
+ encode: ({ message: { id: _id, ...message } }) => message,
6
+ decode: (stored) => ({
7
+ parentId: stored.parent_id,
8
+ message: {
9
+ id: stored.id,
10
+ ...stored.content
11
+ }
12
+ }),
13
+ getId: (message) => message.id
14
+ };
15
+ export { aiSDKV6FormatAdapter };
16
+
17
+ //# sourceMappingURL=aiSDKFormatAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiSDKFormatAdapter.js","names":[],"sources":["../../src/adapters/aiSDKFormatAdapter.ts"],"sourcesContent":["import type { UIMessage } from \"ai\";\nimport type { MessageFormatAdapter } from \"@ulearning/ai-core\";\n\nexport type AISDKStorageFormat = Omit<UIMessage, \"id\">;\n\n/** The stored form of an AI SDK message: the message without its id. */\nexport const aiSDKV6FormatAdapter: MessageFormatAdapter<\n UIMessage,\n AISDKStorageFormat\n> = {\n format: \"ai-sdk/v6\",\n encode: ({ message: { id: _id, ...message } }) => message,\n decode: (stored) => ({\n parentId: stored.parent_id,\n message: { id: stored.id, ...stored.content } as UIMessage,\n }),\n getId: (message) => message.id,\n};\n"],"mappings":";;AAMA,MAAa,uBAGT;CACF,QAAQ;CACR,SAAS,EAAE,SAAS,EAAE,IAAI,KAAK,GAAG,gBAAgB;CAClD,SAAS,YAAY;EACnB,UAAU,OAAO;EACjB,SAAS;GAAE,IAAI,OAAO;GAAI,GAAG,OAAO;EAAQ;CAC9C;CACA,QAAQ,YAAY,QAAQ;AAC9B"}
@@ -0,0 +1,3 @@
1
+ import type { AttachmentAdapter } from "@ulearning/ai-core";
2
+ export declare const vercelAttachmentAdapter: AttachmentAdapter;
3
+ //# sourceMappingURL=vercelAttachmentAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercelAttachmentAdapter.d.ts","mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB;AAI3D,eAAO,MAAM,uBAAuB,EAAE,iBA+BrC","names":[],"ignoreList":[],"sources":["../../src/adapters/vercelAttachmentAdapter.ts"],"sourcesContent":[null]}
@@ -0,0 +1,36 @@
1
+ import { getFileDataURL } from "@ulearning/ai-core/internal";
2
+ import { generateId } from "ai";
3
+ // src/adapters/vercelAttachmentAdapter.ts
4
+ const vercelAttachmentAdapter = {
5
+ accept: "*",
6
+ async add({ file }) {
7
+ return {
8
+ id: generateId(),
9
+ type: file.type.startsWith("image/") ? "image" : "file",
10
+ name: file.name,
11
+ file,
12
+ contentType: file.type,
13
+ content: [],
14
+ status: {
15
+ type: "requires-action",
16
+ reason: "composer-send"
17
+ }
18
+ };
19
+ },
20
+ async send(attachment, options) {
21
+ return {
22
+ ...attachment,
23
+ status: { type: "complete" },
24
+ content: [{
25
+ type: "file",
26
+ mimeType: attachment.contentType ?? "",
27
+ filename: attachment.name,
28
+ data: await getFileDataURL(attachment.file, options)
29
+ }]
30
+ };
31
+ },
32
+ async remove() {}
33
+ };
34
+ export { vercelAttachmentAdapter };
35
+
36
+ //# sourceMappingURL=vercelAttachmentAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercelAttachmentAdapter.js","names":[],"sources":["../../src/adapters/vercelAttachmentAdapter.ts"],"sourcesContent":["import type { AttachmentAdapter } from \"@ulearning/ai-core\";\nimport { getFileDataURL } from \"@ulearning/ai-core/internal\";\nimport { generateId } from \"ai\";\n\nexport const vercelAttachmentAdapter: AttachmentAdapter = {\n accept: \"*\",\n async add({ file }) {\n return {\n id: generateId(),\n type: file.type.startsWith(\"image/\") ? \"image\" : \"file\",\n name: file.name,\n file,\n contentType: file.type,\n content: [],\n status: { type: \"requires-action\", reason: \"composer-send\" },\n };\n },\n async send(attachment, options) {\n // noop\n return {\n ...attachment,\n status: { type: \"complete\" },\n content: [\n {\n type: \"file\",\n mimeType: attachment.contentType ?? \"\",\n filename: attachment.name,\n data: await getFileDataURL(attachment.file, options),\n },\n ],\n };\n },\n async remove() {\n // noop\n },\n};\n"],"mappings":";;;AAIA,MAAa,0BAA6C;CACxD,QAAQ;CACR,MAAM,IAAI,EAAE,QAAQ;EAClB,OAAO;GACL,IAAI,WAAW;GACf,MAAM,KAAK,KAAK,WAAW,QAAQ,IAAI,UAAU;GACjD,MAAM,KAAK;GACX;GACA,aAAa,KAAK;GAClB,SAAS,CAAC;GACV,QAAQ;IAAE,MAAM;IAAmB,QAAQ;GAAgB;EAC7D;CACF;CACA,MAAM,KAAK,YAAY,SAAS;EAE9B,OAAO;GACL,GAAG;GACH,QAAQ,EAAE,MAAM,WAAW;GAC3B,SAAS,CACP;IACE,MAAM;IACN,UAAU,WAAW,eAAe;IACpC,UAAU,WAAW;IACrB,MAAM,MAAM,eAAe,WAAW,MAAM,OAAO;GACrD,CACF;EACF;CACF;CACA,MAAM,SAAS,CAEf;AACF"}
@@ -0,0 +1,13 @@
1
+ import type { AbstractChat, UIMessage } from "ai";
2
+ /** Framework independent advanced chat surface, preserving the AI SDK 7 methods. */
3
+ export type AISDKChatHelpers<UI_MESSAGE extends UIMessage = UIMessage> = {
4
+ readonly id: string;
5
+ setMessages: (messages: UI_MESSAGE[] | ((messages: UI_MESSAGE[]) => UI_MESSAGE[])) => void;
6
+ error: Error | undefined;
7
+ } & Pick<AbstractChat<UI_MESSAGE>, "sendMessage" | "regenerate" | "stop" | "resumeStream" | "addToolResult" | "addToolOutput" | "addToolApprovalResponse" | "status" | "messages" | "clearError">;
8
+ export type AISDKRuntimeExtras = {
9
+ chat: AISDKChatHelpers<UIMessage>;
10
+ error: Error | undefined;
11
+ };
12
+ export declare const aiSDKExtras: import("@ulearning/ai-core/vue").RuntimeExtras<AISDKRuntimeExtras>;
13
+ //# sourceMappingURL=aiSDKExtras.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiSDKExtras.d.ts","mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,IAAI;AAEjD;AACA,MAAM,MAAM,gBAAgB,CAAC,UAAU,SAAS,SAAS,GAAG,SAAS,IAAI;IACvE,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,WAAW,EAAE,CACX,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,CAAC,KAChE,IAAI;IACT,KAAK,EAAE,KAAK,GAAG,SAAS;CACzB,GAAG,IAAI,CACN,YAAY,CAAC,UAAU,CAAC,EACtB,aAAa,GACb,YAAY,GACZ,MAAM,GACN,cAAc,GACd,eAAe,GACf,eAAe,GACf,yBAAyB,GACzB,QAAQ,GACR,UAAU,GACV,YAAY,CACf;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC;IACjC,KAAK,EAAE,KAAK,GAAG,SAAS;CACzB;AAED,eAAO,MAAM,WAAW,oEACoC","names":[],"ignoreList":[],"sources":["../src/aiSDKExtras.ts"],"sourcesContent":[null]}
@@ -0,0 +1,6 @@
1
+ import { createRuntimeExtras } from "@ulearning/ai-core/vue";
2
+ // src/aiSDKExtras.ts
3
+ const aiSDKExtras = createRuntimeExtras("useAISDKRuntime");
4
+ export { aiSDKExtras };
5
+
6
+ //# sourceMappingURL=aiSDKExtras.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiSDKExtras.js","names":[],"sources":["../src/aiSDKExtras.ts"],"sourcesContent":["import { createRuntimeExtras } from \"@ulearning/ai-core/vue\";\nimport type { AbstractChat, UIMessage } from \"ai\";\n\n/** Framework independent advanced chat surface, preserving the AI SDK 7 methods. */\nexport type AISDKChatHelpers<UI_MESSAGE extends UIMessage = UIMessage> = {\n readonly id: string;\n setMessages: (\n messages: UI_MESSAGE[] | ((messages: UI_MESSAGE[]) => UI_MESSAGE[]),\n ) => void;\n error: Error | undefined;\n} & Pick<\n AbstractChat<UI_MESSAGE>,\n | \"sendMessage\"\n | \"regenerate\"\n | \"stop\"\n | \"resumeStream\"\n | \"addToolResult\"\n | \"addToolOutput\"\n | \"addToolApprovalResponse\"\n | \"status\"\n | \"messages\"\n | \"clearError\"\n>;\n\nexport type AISDKRuntimeExtras = {\n chat: AISDKChatHelpers<UIMessage>;\n error: Error | undefined;\n};\n\nexport const aiSDKExtras =\n createRuntimeExtras<AISDKRuntimeExtras>(\"useAISDKRuntime\");\n"],"mappings":";;AA6BA,MAAa,cACX,oBAAwC,iBAAiB"}
@@ -0,0 +1,44 @@
1
+ import { type UIMessage } from "ai";
2
+ import { type useExternalMessageConverter } from "@ulearning/ai-core/vue";
3
+ import { type McpAppMetadata, type RespondToToolApprovalOptions, type Unstable_ToolInteractionLog } from "@ulearning/ai-core";
4
+ import { type ReadonlyJSONObject } from "@ulearning/ai-stream/utils";
5
+ export type AISDKMessageConverterMetadata = useExternalMessageConverter.Metadata & {
6
+ createdAtCache?: Map<string, Date>;
7
+ toolArgsKeyOrderCache?: Map<string, Map<string, string[]>>;
8
+ /**
9
+ * Frozen text and completion-marked args keyed weakly by a settled tool
10
+ * call's input object, then by call, since the text carries its streamed key
11
+ * order. A known call/input pair skips serialization and parsing; entries
12
+ * become collectible once the input is unreachable.
13
+ */
14
+ toolArgsTextCache?: WeakMap<ReadonlyJSONObject, Map<string, {
15
+ argsText: string;
16
+ args: ReadonlyJSONObject;
17
+ }>>;
18
+ toolLastInputCache?: Map<string, ReadonlyJSONObject>;
19
+ mcpAppMetadataCache?: Map<string, McpAppMetadata>;
20
+ toolArtifacts?: ReadonlyMap<string, unknown>;
21
+ toolInteractions?: ReadonlyMap<string, Unstable_ToolInteractionLog>;
22
+ supportsRichToolApprovalResponses?: boolean;
23
+ toolApprovalResponses?: ReadonlyMap<string, RespondToToolApprovalOptions>;
24
+ cancelledToolApprovalIds?: ReadonlySet<string>;
25
+ cancelledStatusMessageIds?: ReadonlySet<string>;
26
+ /** Id of the currently-streaming message, flagged optimistic (#4037). */
27
+ optimisticMessageId?: string | undefined;
28
+ };
29
+ export declare const convertAISDKMessage: useExternalMessageConverter.Callback<UIMessage>;
30
+ export declare const AISDKMessageConverter: {
31
+ useThreadMessages: (input: import("vue").MaybeRefOrGetter<{
32
+ messages: UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>[];
33
+ isRunning: boolean;
34
+ joinStrategy?: import("@ulearning/ai-core/store").JoinStrategy | undefined;
35
+ metadata?: useExternalMessageConverter.Metadata;
36
+ }>) => import("vue").ComputedRef<import("@ulearning/ai-core").ThreadMessage[]>;
37
+ toThreadMessages: (messages: UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>[], isRunning?: boolean, metadata?: useExternalMessageConverter.Metadata) => import("@ulearning/ai-core").ThreadMessage[];
38
+ toOriginalMessages: (input: import("@ulearning/ai-core").ThreadRuntimeState | import("@ulearning/ai-core").ThreadMessage | import("@ulearning/ai-core").ThreadMessage["content"][number]) => unknown[];
39
+ toOriginalMessage: (input: import("@ulearning/ai-core").ThreadRuntimeState | import("@ulearning/ai-core").ThreadMessage | import("@ulearning/ai-core").ThreadMessage["content"][number]) => {};
40
+ useOriginalMessage: () => import("vue").ComputedRef<{}>;
41
+ useOriginalMessages: () => import("vue").ComputedRef<unknown[]>;
42
+ };
43
+ export declare const createAISDKMetadataKey: () => useExternalMessageConverter.GetMetadataKey<UIMessage>;
44
+ //# sourceMappingURL=convertMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertMessage.d.ts","mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,IAAI;AACX,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,wBAAwB;AAC/B,OAAO,EAcL,KAAK,cAAc,EAEnB,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EACjC,MAAM,oBAAoB;AAQ3B,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,4BAA4B;AA6BnC,MAAM,MAAM,6BAA6B,GACvC,2BAA2B,CAAC,QAAQ,GAAG;IACrC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;IAClC,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D;;;;;;IAMA,iBAAiB,CAAC,EAAE,OAAO,CACzB,kBAAkB,EAClB,GAAG,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM;QAAE,IAAI,EAAE,kBAAkB;KAAE,CAAC,CAC5D;IACD,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpD,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IACjD,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5C,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,2BAA2B,CAAC;IACnE,iCAAiC,CAAC,EAAE,OAAO;IAC3C,qBAAqB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,4BAA4B,CAAC;IACzE,wBAAwB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;IAC9C,yBAAyB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;IAC/C;IACA,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS;CACzC;AA8pBH,eAAO,MAAM,mBAAmB,EAAE,2BAA2B,CAAC,QAAQ,CACpE,SAAS,CAsFV;AAED,eAAO,MAAM,qBAAqB;;;;;;;;+HArzBlC,qDACe;8HAGO,qDACb;;;CAizB6C;AAkCtD,eAAO,MAAM,sBAAsB,QAC7B,2BAA2B,CAAC,cAAc,CAAC,SAAS,CA6BpD","names":[],"ignoreList":[],"sources":["../../src/converters/convertMessage.ts"],"sourcesContent":[null]}