@convex-dev/agent 0.6.0 → 0.6.1

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 (184) hide show
  1. package/dist/UIMessages.d.ts +46 -0
  2. package/dist/UIMessages.d.ts.map +1 -0
  3. package/dist/UIMessages.js +634 -0
  4. package/dist/UIMessages.js.map +1 -0
  5. package/dist/client/createTool.d.ts +167 -0
  6. package/dist/client/createTool.d.ts.map +1 -0
  7. package/dist/client/createTool.js +116 -0
  8. package/dist/client/createTool.js.map +1 -0
  9. package/dist/client/defaultComponent.d.ts +11 -0
  10. package/dist/client/defaultComponent.d.ts.map +1 -0
  11. package/dist/client/defaultComponent.js +7 -0
  12. package/dist/client/defaultComponent.js.map +1 -0
  13. package/dist/client/definePlaygroundAPI.d.ts +1725 -0
  14. package/dist/client/definePlaygroundAPI.d.ts.map +1 -0
  15. package/dist/client/definePlaygroundAPI.js +271 -0
  16. package/dist/client/definePlaygroundAPI.js.map +1 -0
  17. package/dist/client/files.d.ts +69 -0
  18. package/dist/client/files.d.ts.map +1 -0
  19. package/dist/client/files.js +181 -0
  20. package/dist/client/files.js.map +1 -0
  21. package/dist/client/index.d.ts +2091 -0
  22. package/dist/client/index.d.ts.map +1 -0
  23. package/dist/client/index.js +929 -0
  24. package/dist/client/index.js.map +1 -0
  25. package/dist/client/messages.d.ts +461 -0
  26. package/dist/client/messages.d.ts.map +1 -0
  27. package/dist/client/messages.js +106 -0
  28. package/dist/client/messages.js.map +1 -0
  29. package/dist/client/mockModel.d.ts +42 -0
  30. package/dist/client/mockModel.d.ts.map +1 -0
  31. package/dist/client/mockModel.js +182 -0
  32. package/dist/client/mockModel.js.map +1 -0
  33. package/dist/client/saveInputMessages.d.ts +20 -0
  34. package/dist/client/saveInputMessages.d.ts.map +1 -0
  35. package/dist/client/saveInputMessages.js +58 -0
  36. package/dist/client/saveInputMessages.js.map +1 -0
  37. package/dist/client/search.d.ts +493 -0
  38. package/dist/client/search.d.ts.map +1 -0
  39. package/dist/client/search.js +435 -0
  40. package/dist/client/search.js.map +1 -0
  41. package/dist/client/start.d.ts +84 -0
  42. package/dist/client/start.d.ts.map +1 -0
  43. package/dist/client/start.js +185 -0
  44. package/dist/client/start.js.map +1 -0
  45. package/dist/client/streamText.d.ts +46 -0
  46. package/dist/client/streamText.d.ts.map +1 -0
  47. package/dist/client/streamText.js +127 -0
  48. package/dist/client/streamText.js.map +1 -0
  49. package/dist/client/streaming.d.ts +3778 -0
  50. package/dist/client/streaming.d.ts.map +1 -0
  51. package/dist/client/streaming.js +330 -0
  52. package/dist/client/streaming.js.map +1 -0
  53. package/dist/client/threads.d.ts +46 -0
  54. package/dist/client/threads.d.ts.map +1 -0
  55. package/dist/client/threads.js +49 -0
  56. package/dist/client/threads.js.map +1 -0
  57. package/dist/client/types.d.ts +461 -0
  58. package/dist/client/types.d.ts.map +1 -0
  59. package/dist/client/types.js +2 -0
  60. package/dist/client/types.js.map +1 -0
  61. package/dist/client/utils.d.ts +4 -0
  62. package/dist/client/utils.d.ts.map +1 -0
  63. package/dist/client/utils.js +21 -0
  64. package/dist/client/utils.js.map +1 -0
  65. package/dist/component/_generated/api.d.ts +48 -0
  66. package/dist/component/_generated/api.d.ts.map +1 -0
  67. package/dist/component/_generated/api.js +31 -0
  68. package/dist/component/_generated/api.js.map +1 -0
  69. package/dist/component/_generated/component.d.ts +3120 -0
  70. package/dist/component/_generated/component.d.ts.map +1 -0
  71. package/dist/component/_generated/component.js +11 -0
  72. package/dist/component/_generated/component.js.map +1 -0
  73. package/dist/component/_generated/dataModel.d.ts +46 -0
  74. package/dist/component/_generated/dataModel.d.ts.map +1 -0
  75. package/dist/component/_generated/dataModel.js +11 -0
  76. package/dist/component/_generated/dataModel.js.map +1 -0
  77. package/dist/component/_generated/server.d.ts +121 -0
  78. package/dist/component/_generated/server.d.ts.map +1 -0
  79. package/dist/component/_generated/server.js +78 -0
  80. package/dist/component/_generated/server.js.map +1 -0
  81. package/dist/component/apiKeys.d.ts +11 -0
  82. package/dist/component/apiKeys.d.ts.map +1 -0
  83. package/dist/component/apiKeys.js +69 -0
  84. package/dist/component/apiKeys.js.map +1 -0
  85. package/dist/component/convex.config.d.ts +3 -0
  86. package/dist/component/convex.config.d.ts.map +1 -0
  87. package/dist/component/convex.config.js +3 -0
  88. package/dist/component/convex.config.js.map +1 -0
  89. package/dist/component/files.d.ts +97 -0
  90. package/dist/component/files.d.ts.map +1 -0
  91. package/dist/component/files.js +190 -0
  92. package/dist/component/files.js.map +1 -0
  93. package/dist/component/messages.d.ts +3851 -0
  94. package/dist/component/messages.d.ts.map +1 -0
  95. package/dist/component/messages.js +757 -0
  96. package/dist/component/messages.js.map +1 -0
  97. package/dist/component/schema.d.ts +8029 -0
  98. package/dist/component/schema.d.ts.map +1 -0
  99. package/dist/component/schema.js +147 -0
  100. package/dist/component/schema.js.map +1 -0
  101. package/dist/component/streams.d.ts +128 -0
  102. package/dist/component/streams.d.ts.map +1 -0
  103. package/dist/component/streams.js +413 -0
  104. package/dist/component/streams.js.map +1 -0
  105. package/dist/component/threads.d.ts +115 -0
  106. package/dist/component/threads.d.ts.map +1 -0
  107. package/dist/component/threads.js +208 -0
  108. package/dist/component/threads.js.map +1 -0
  109. package/dist/component/users.d.ts +52 -0
  110. package/dist/component/users.d.ts.map +1 -0
  111. package/dist/component/users.js +229 -0
  112. package/dist/component/users.js.map +1 -0
  113. package/dist/component/vector/index.d.ts +61 -0
  114. package/dist/component/vector/index.d.ts.map +1 -0
  115. package/dist/component/vector/index.js +146 -0
  116. package/dist/component/vector/index.js.map +1 -0
  117. package/dist/component/vector/tables.d.ts +58 -0
  118. package/dist/component/vector/tables.d.ts.map +1 -0
  119. package/dist/component/vector/tables.js +56 -0
  120. package/dist/component/vector/tables.js.map +1 -0
  121. package/dist/deltas.d.ts +43 -0
  122. package/dist/deltas.d.ts.map +1 -0
  123. package/dist/deltas.js +446 -0
  124. package/dist/deltas.js.map +1 -0
  125. package/dist/mapping.d.ts +76 -0
  126. package/dist/mapping.d.ts.map +1 -0
  127. package/dist/mapping.js +720 -0
  128. package/dist/mapping.js.map +1 -0
  129. package/dist/react/SmoothText.d.ts +5 -0
  130. package/dist/react/SmoothText.d.ts.map +1 -0
  131. package/dist/react/SmoothText.js +6 -0
  132. package/dist/react/SmoothText.js.map +1 -0
  133. package/dist/react/index.d.ts +25 -0
  134. package/dist/react/index.d.ts.map +1 -0
  135. package/dist/react/index.js +70 -0
  136. package/dist/react/index.js.map +1 -0
  137. package/dist/react/optimisticallySendMessage.d.ts +42 -0
  138. package/dist/react/optimisticallySendMessage.d.ts.map +1 -0
  139. package/dist/react/optimisticallySendMessage.js +74 -0
  140. package/dist/react/optimisticallySendMessage.js.map +1 -0
  141. package/dist/react/types.d.ts +12 -0
  142. package/dist/react/types.d.ts.map +1 -0
  143. package/dist/react/types.js +2 -0
  144. package/dist/react/types.js.map +1 -0
  145. package/dist/react/useDeltaStreams.d.ts +10 -0
  146. package/dist/react/useDeltaStreams.d.ts.map +1 -0
  147. package/dist/react/useDeltaStreams.js +106 -0
  148. package/dist/react/useDeltaStreams.js.map +1 -0
  149. package/dist/react/useSmoothText.d.ts +27 -0
  150. package/dist/react/useSmoothText.d.ts.map +1 -0
  151. package/dist/react/useSmoothText.js +68 -0
  152. package/dist/react/useSmoothText.js.map +1 -0
  153. package/dist/react/useStreamingUIMessages.d.ts +22 -0
  154. package/dist/react/useStreamingUIMessages.d.ts.map +1 -0
  155. package/dist/react/useStreamingUIMessages.js +92 -0
  156. package/dist/react/useStreamingUIMessages.js.map +1 -0
  157. package/dist/react/useThreadMessages.d.ts +104 -0
  158. package/dist/react/useThreadMessages.d.ts.map +1 -0
  159. package/dist/react/useThreadMessages.js +148 -0
  160. package/dist/react/useThreadMessages.js.map +1 -0
  161. package/dist/react/useUIMessages.d.ts +96 -0
  162. package/dist/react/useUIMessages.d.ts.map +1 -0
  163. package/dist/react/useUIMessages.js +108 -0
  164. package/dist/react/useUIMessages.js.map +1 -0
  165. package/dist/shared.d.ts +26 -0
  166. package/dist/shared.d.ts.map +1 -0
  167. package/dist/shared.js +67 -0
  168. package/dist/shared.js.map +1 -0
  169. package/dist/validators.d.ts +24516 -0
  170. package/dist/validators.d.ts.map +1 -0
  171. package/dist/validators.js +475 -0
  172. package/dist/validators.js.map +1 -0
  173. package/package.json +39 -39
  174. package/src/UIMessages.ts +0 -9
  175. package/src/client/approval.test.ts +144 -0
  176. package/src/client/index.ts +17 -9
  177. package/src/client/search.ts +0 -29
  178. package/src/client/start.ts +2 -2
  179. package/src/client/streamText.ts +9 -0
  180. package/src/client/streaming.ts +30 -23
  181. package/src/component/_generated/dataModel.ts +1 -1
  182. package/src/component/_generated/server.ts +0 -5
  183. package/src/mapping.ts +38 -22
  184. package/src/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type SmoothTextOptions } from "./useSmoothText.js";
2
+ export declare function SmoothText({ text, ...options }: {
3
+ text: string;
4
+ } & SmoothTextOptions): string;
5
+ //# sourceMappingURL=SmoothText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SmoothText.d.ts","sourceRoot":"","sources":["../../src/react/SmoothText.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE3E,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,GAAG,OAAO,EACX,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,UAGtC"}
@@ -0,0 +1,6 @@
1
+ import { useSmoothText } from "./useSmoothText.js";
2
+ export function SmoothText({ text, ...options }) {
3
+ const [visibleText] = useSmoothText(text, options);
4
+ return visibleText;
5
+ }
6
+ //# sourceMappingURL=SmoothText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SmoothText.js","sourceRoot":"","sources":["../../src/react/SmoothText.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA0B,MAAM,oBAAoB,CAAC;AAE3E,MAAM,UAAU,UAAU,CAAC,EACzB,IAAI,EACJ,GAAG,OAAO,EAC2B;IACrC,MAAM,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,25 @@
1
+ export { toUIMessages, type UIMessage } from "../UIMessages.js";
2
+ export { optimisticallySendMessage } from "./optimisticallySendMessage.js";
3
+ export { useSmoothText } from "./useSmoothText.js";
4
+ export { SmoothText } from "./SmoothText.js";
5
+ export { type ThreadMessagesQuery, useThreadMessages, useStreamingThreadMessages, } from "./useThreadMessages.js";
6
+ export { type UIMessagesQuery, useUIMessages } from "./useUIMessages.js";
7
+ export { useStreamingUIMessages } from "./useStreamingUIMessages.js";
8
+ /**
9
+ * @deprecated use useThreadMessages or useStreamingThreadMessages instead
10
+ * Use this hook to stream text from a server action, using the
11
+ * toTextStreamResponse or equivalent HTTP streaming endpoint returning text.
12
+ * @param url The URL of the server action to stream text from.
13
+ * e.g. https://....convex.site/yourendpoint
14
+ * @param threadId The ID of the thread to stream text from.
15
+ * @param token The auth token to use for the request.
16
+ * e.g. useAuthToken() from @convex-dev/auth/react
17
+ * @returns A tuple containing the {text, loading, error} and a function to call the endpoint
18
+ * with a given prompt, passing up { prompt, threadId } as the body in JSON.
19
+ */
20
+ export declare function useStreamingText(url: string, threadId: string | null, token?: string): readonly [{
21
+ readonly text: string;
22
+ readonly loading: boolean;
23
+ readonly error: Error | null;
24
+ }, (prompt: string) => Promise<void>];
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,KAAK,mBAAmB,EACxB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,KAAK,CAAC,EAAE,MAAM;;;;YAOS,MAAM,oBA2C9B"}
@@ -0,0 +1,70 @@
1
+ "use client";
2
+ import { useMemo, useState } from "react";
3
+ export { toUIMessages } from "../UIMessages.js";
4
+ export { optimisticallySendMessage } from "./optimisticallySendMessage.js";
5
+ export { useSmoothText } from "./useSmoothText.js";
6
+ export { SmoothText } from "./SmoothText.js";
7
+ export { useThreadMessages, useStreamingThreadMessages, } from "./useThreadMessages.js";
8
+ export { useUIMessages } from "./useUIMessages.js";
9
+ export { useStreamingUIMessages } from "./useStreamingUIMessages.js";
10
+ /**
11
+ * @deprecated use useThreadMessages or useStreamingThreadMessages instead
12
+ * Use this hook to stream text from a server action, using the
13
+ * toTextStreamResponse or equivalent HTTP streaming endpoint returning text.
14
+ * @param url The URL of the server action to stream text from.
15
+ * e.g. https://....convex.site/yourendpoint
16
+ * @param threadId The ID of the thread to stream text from.
17
+ * @param token The auth token to use for the request.
18
+ * e.g. useAuthToken() from @convex-dev/auth/react
19
+ * @returns A tuple containing the {text, loading, error} and a function to call the endpoint
20
+ * with a given prompt, passing up { prompt, threadId } as the body in JSON.
21
+ */
22
+ export function useStreamingText(url, threadId, token) {
23
+ const [text, setText] = useState("");
24
+ const [loading, setLoading] = useState(false);
25
+ const [error, setError] = useState(null);
26
+ const readStream = useMemo(() => async (prompt) => {
27
+ if (!threadId)
28
+ return;
29
+ try {
30
+ setText("");
31
+ setLoading(true);
32
+ setError(null);
33
+ const response = await fetch(url, {
34
+ method: "POST",
35
+ headers: {
36
+ "Content-Type": "application/json",
37
+ ...(token ? { Authorization: `Bearer ${token}` } : {}),
38
+ },
39
+ body: JSON.stringify({ prompt, threadId }),
40
+ });
41
+ if (!response.ok) {
42
+ throw new Error(`HTTP error! status: ${response.status}`);
43
+ }
44
+ if (!response.body) {
45
+ throw new Error("No body");
46
+ }
47
+ const reader = response.body.getReader();
48
+ const decoder = new TextDecoder();
49
+ let accumulatedText = "";
50
+ while (true) {
51
+ const { done, value } = await reader.read();
52
+ if (done) {
53
+ break;
54
+ }
55
+ accumulatedText += decoder.decode(value);
56
+ setText(accumulatedText);
57
+ }
58
+ }
59
+ catch (e) {
60
+ if (e instanceof Error && e.name !== "AbortError") {
61
+ setError(e);
62
+ }
63
+ }
64
+ finally {
65
+ setLoading(false);
66
+ }
67
+ }, [threadId, token, url]);
68
+ return [{ text, loading, error }, readStream];
69
+ }
70
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { MessageDoc, StreamArgs } from "../validators.js";
2
+ import type { OptimisticLocalStore } from "convex/browser";
3
+ import type { UIMessage } from "../UIMessages.js";
4
+ import type { FunctionReference, PaginationOptions, PaginationResult } from "convex/server";
5
+ import type { SyncStreamsReturnValue } from "@convex-dev/agent";
6
+ /**
7
+ * Adds a sent message to the end of a list of messages, so it shows up until
8
+ * the message is saved on the server and arrives in the query.
9
+ * It generates a message with fields that match both MessageDoc and UIMessage,
10
+ * for convenience. It will not include any other fields you might have in your
11
+ * regular query, however.
12
+ *
13
+ * @param query The query used to fetch messages, typically with
14
+ * useThreadMessages or useUIMessages.
15
+ * @returns A function that can be used to optimistically send a message.
16
+ * If your mutation takes different arguments than { threadId, prompt }, you can
17
+ * use it as a helper function in your optimistic update:
18
+ * ```ts
19
+ * const sendMessage = useMutation(
20
+ * api.chatStreaming.streamStoryAsynchronously,
21
+ * ).withOptimisticUpdate(
22
+ * (store, args) => {
23
+ * optimisticallySendMessage(api.chatStreaming.listThreadMessages)(store, {
24
+ * threadId:
25
+ * prompt: whatever you would have passed to the mutation,
26
+ * })
27
+ * }
28
+ * );
29
+ * ```
30
+ */
31
+ export declare function optimisticallySendMessage(query: FunctionReference<"query", "public", {
32
+ threadId: string;
33
+ paginationOpts: PaginationOptions;
34
+ streamArgs?: StreamArgs;
35
+ }, PaginationResult<MessageDoc | UIMessage> & {
36
+ streams?: SyncStreamsReturnValue;
37
+ }>): (store: OptimisticLocalStore, args: {
38
+ threadId: string;
39
+ prompt: string;
40
+ }) => void;
41
+ export declare function randomUUID(): string;
42
+ //# sourceMappingURL=optimisticallySendMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimisticallySendMessage.d.ts","sourceRoot":"","sources":["../../src/react/optimisticallySendMessage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,iBAAiB,CACtB,OAAO,EACP,QAAQ,EACR;IACE,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,iBAAiB,CAAC;IAClC,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,EACD,gBAAgB,CAAC,UAAU,GAAG,SAAS,CAAC,GAAG;IACzC,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC,CACF,GACA,CACD,KAAK,EAAE,oBAAoB,EAC3B,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KACvC,IAAI,CAoCR;AAED,wBAAgB,UAAU,WAWzB"}
@@ -0,0 +1,74 @@
1
+ import { insertAtTop } from "convex/react";
2
+ /**
3
+ * Adds a sent message to the end of a list of messages, so it shows up until
4
+ * the message is saved on the server and arrives in the query.
5
+ * It generates a message with fields that match both MessageDoc and UIMessage,
6
+ * for convenience. It will not include any other fields you might have in your
7
+ * regular query, however.
8
+ *
9
+ * @param query The query used to fetch messages, typically with
10
+ * useThreadMessages or useUIMessages.
11
+ * @returns A function that can be used to optimistically send a message.
12
+ * If your mutation takes different arguments than { threadId, prompt }, you can
13
+ * use it as a helper function in your optimistic update:
14
+ * ```ts
15
+ * const sendMessage = useMutation(
16
+ * api.chatStreaming.streamStoryAsynchronously,
17
+ * ).withOptimisticUpdate(
18
+ * (store, args) => {
19
+ * optimisticallySendMessage(api.chatStreaming.listThreadMessages)(store, {
20
+ * threadId:
21
+ * prompt: whatever you would have passed to the mutation,
22
+ * })
23
+ * }
24
+ * );
25
+ * ```
26
+ */
27
+ export function optimisticallySendMessage(query) {
28
+ return (store, args) => {
29
+ const queries = store.getAllQueries(query);
30
+ let maxOrder = -1;
31
+ for (const q of queries) {
32
+ if (q.args?.threadId !== args.threadId)
33
+ continue;
34
+ if (q.args.streamArgs)
35
+ continue;
36
+ for (const m of q.value?.page ?? []) {
37
+ maxOrder = Math.max(maxOrder, m.order);
38
+ }
39
+ }
40
+ const order = maxOrder + 1;
41
+ const stepOrder = 0;
42
+ const id = randomUUID();
43
+ const { prompt, ...rest } = args;
44
+ insertAtTop({
45
+ paginatedQuery: query,
46
+ argsToMatch: { threadId: args.threadId, streamArgs: undefined },
47
+ item: {
48
+ ...rest,
49
+ _creationTime: Date.now(),
50
+ _id: id,
51
+ id,
52
+ key: `${args.threadId}-${order}-${stepOrder}`,
53
+ order,
54
+ stepOrder,
55
+ status: "pending",
56
+ tool: false,
57
+ message: { role: "user", content: prompt },
58
+ parts: [{ type: "text", text: prompt }],
59
+ role: "user",
60
+ text: prompt,
61
+ },
62
+ localQueryStore: store,
63
+ });
64
+ };
65
+ }
66
+ export function randomUUID() {
67
+ if (typeof crypto !== "undefined" &&
68
+ typeof crypto.randomUUID === "function") {
69
+ return crypto.randomUUID();
70
+ }
71
+ return (Math.random().toString(36).substring(2, 15) +
72
+ Math.random().toString(36).substring(2, 15));
73
+ }
74
+ //# sourceMappingURL=optimisticallySendMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimisticallySendMessage.js","sourceRoot":"","sources":["../../src/react/optimisticallySendMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAW3C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAWC;IAKD,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;QAClB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC,QAAQ;gBAAE,SAAS;YACjD,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU;gBAAE,SAAS;YAChC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;gBACpC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC;QAC3B,MAAM,SAAS,GAAG,CAAC,CAAC;QACpB,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;QACxB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QACjC,WAAW,CAAC;YACV,cAAc,EAAE,KAAK;YACrB,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE;YAC/D,IAAI,EAAE;gBACJ,GAAG,IAAI;gBACP,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE;gBACzB,GAAG,EAAE,EAAE;gBACP,EAAE;gBACF,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK,IAAI,SAAS,EAAE;gBAC7C,KAAK;gBACL,SAAS;gBACT,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;gBAC1C,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBACvC,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;aACb;YACD,eAAe,EAAE,KAAK;SACvB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IACE,OAAO,MAAM,KAAK,WAAW;QAC7B,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EACvC,CAAC;QACD,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,CACL,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAC5C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { BetterOmit, Expand } from "convex-helpers";
2
+ import type { FunctionArgs, FunctionReference } from "convex/server";
3
+ import type { SyncStreamsReturnValue } from "../client/types.js";
4
+ import type { StreamArgs } from "../validators.js";
5
+ export type StreamQuery<Args = Record<string, unknown>> = FunctionReference<"query", "public", {
6
+ threadId: string;
7
+ streamArgs?: StreamArgs;
8
+ } & Args, {
9
+ streams: SyncStreamsReturnValue;
10
+ }>;
11
+ export type StreamQueryArgs<Query extends StreamQuery<unknown>> = Query extends StreamQuery<unknown> ? Expand<BetterOmit<FunctionArgs<Query>, "streamArgs">> : never;
12
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/react/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,iBAAiB,CACzE,OAAO,EACP,QAAQ,EACR;IACE,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,GAAG,IAAI,EACR;IAAE,OAAO,EAAE,sBAAsB,CAAA;CAAE,CACpC,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,KAAK,SAAS,WAAW,CAAC,OAAO,CAAC,IAC5D,KAAK,SAAS,WAAW,CAAC,OAAO,CAAC,GAC9B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC,GACrD,KAAK,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/react/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import type { StreamQuery, StreamQueryArgs } from "./types.js";
2
+ import type { StreamDelta, StreamMessage } from "../validators.js";
3
+ export declare function useDeltaStreams<Query extends StreamQuery<any> = StreamQuery<object>>(query: Query, args: StreamQueryArgs<Query> | "skip", options?: {
4
+ startOrder?: number;
5
+ skipStreamIds?: string[];
6
+ }): {
7
+ streamMessage: StreamMessage;
8
+ deltas: StreamDelta[];
9
+ }[] | undefined;
10
+ //# sourceMappingURL=useDeltaStreams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDeltaStreams.d.ts","sourceRoot":"","sources":["../../src/react/useDeltaStreams.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG/D,OAAO,KAAK,EAAc,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAM/E,wBAAgB,eAAe,CAC7B,KAAK,SAAS,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,EAEpD,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,MAAM,EACrC,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,GACA;IAAE,aAAa,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,EAAE,GAAG,SAAS,CA2IvE"}
@@ -0,0 +1,106 @@
1
+ "use client";
2
+ import { sorted } from "../shared.js";
3
+ import { useQuery } from "convex/react";
4
+ import { useState } from "react";
5
+ import { assert } from "convex-helpers";
6
+ export function useDeltaStreams(query, args, options) {
7
+ // We hold onto and modify state directly to avoid re-running unnecessarily.
8
+ const [state] = useState({
9
+ startOrder: options?.startOrder ?? 0,
10
+ deltaStreams: undefined,
11
+ threadId: args === "skip" ? undefined : args.threadId,
12
+ });
13
+ const [cursors, setCursors] = useState({});
14
+ if (args !== "skip" && state.threadId !== args.threadId) {
15
+ state.threadId = args.threadId;
16
+ state.deltaStreams = undefined;
17
+ state.startOrder = options?.startOrder ?? 0;
18
+ setCursors({});
19
+ }
20
+ if (state.deltaStreams?.length ||
21
+ (options?.startOrder && options.startOrder < state.startOrder)) {
22
+ const cacheFriendlyStartOrder = options?.startOrder
23
+ ? // round down to the nearest 10 for some cache benefits
24
+ options.startOrder - (options.startOrder % 10)
25
+ : 0;
26
+ if (cacheFriendlyStartOrder !== state.startOrder) {
27
+ state.startOrder = cacheFriendlyStartOrder;
28
+ }
29
+ }
30
+ // Get all the active streams
31
+ const streamList = useQuery(query, args === "skip"
32
+ ? args
33
+ : {
34
+ ...args,
35
+ streamArgs: {
36
+ kind: "list",
37
+ startOrder: state.startOrder,
38
+ },
39
+ });
40
+ const streamMessages = args === "skip"
41
+ ? undefined
42
+ : !streamList
43
+ ? state.deltaStreams?.map(({ streamMessage }) => streamMessage)
44
+ : sorted(streamList.streams.messages.filter(({ streamId, order }) => !options?.skipStreamIds?.includes(streamId) &&
45
+ (!options?.startOrder || order >= options.startOrder)));
46
+ // When no active streams remain, clear the stale state so we stop
47
+ // returning old streaming UIMessages.
48
+ if (streamMessages !== undefined && streamMessages.length === 0) {
49
+ state.deltaStreams = undefined;
50
+ }
51
+ // Get the deltas for all the active streams, if any.
52
+ const cursorQuery = useQuery(query, args === "skip" || !streamMessages?.length
53
+ ? "skip"
54
+ : {
55
+ ...args,
56
+ streamArgs: {
57
+ kind: "deltas",
58
+ cursors: streamMessages.map(({ streamId }) => ({
59
+ streamId,
60
+ cursor: cursors[streamId] ?? 0,
61
+ })),
62
+ },
63
+ });
64
+ const newDeltas = cursorQuery?.streams.deltas;
65
+ if (newDeltas?.length && streamMessages) {
66
+ const newDeltasByStreamId = new Map();
67
+ for (const delta of newDeltas) {
68
+ const oldCursor = cursors[delta.streamId];
69
+ if (oldCursor && delta.start < oldCursor)
70
+ continue;
71
+ const existing = newDeltasByStreamId.get(delta.streamId);
72
+ if (existing) {
73
+ const previousEnd = existing.at(-1).end;
74
+ assert(previousEnd === delta.start, `Gap found in deltas for ${delta.streamId} jumping to ${delta.start} from ${previousEnd}`);
75
+ existing.push(delta);
76
+ }
77
+ else {
78
+ assert(!oldCursor || oldCursor === delta.start, `Gap found - first delta after ${oldCursor} is ${delta.start} for stream ${delta.streamId}`);
79
+ newDeltasByStreamId.set(delta.streamId, [delta]);
80
+ }
81
+ }
82
+ const newCursors = {};
83
+ for (const { streamId } of streamMessages) {
84
+ const cursor = newDeltasByStreamId.get(streamId)?.at(-1)?.end ?? cursors[streamId];
85
+ if (cursor !== undefined) {
86
+ newCursors[streamId] = cursor;
87
+ }
88
+ }
89
+ setCursors(newCursors);
90
+ // we defensively create a new object so object identity matches contents
91
+ state.deltaStreams = streamMessages.map((streamMessage) => {
92
+ const streamId = streamMessage.streamId;
93
+ const old = state.deltaStreams?.find((ds) => ds.streamMessage.streamId === streamId);
94
+ const newDeltas = newDeltasByStreamId.get(streamId);
95
+ if (!newDeltas && streamMessage === old?.streamMessage) {
96
+ return old;
97
+ }
98
+ return {
99
+ streamMessage,
100
+ deltas: [...(old?.deltas ?? []), ...(newDeltas ?? [])],
101
+ };
102
+ });
103
+ }
104
+ return state.deltaStreams;
105
+ }
106
+ //# sourceMappingURL=useDeltaStreams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDeltaStreams.js","sourceRoot":"","sources":["../../src/react/useDeltaStreams.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export type SmoothTextOptions = {
2
+ /**
3
+ * The number of characters to display per second.
4
+ */
5
+ charsPerSec?: number;
6
+ /**
7
+ * Whether to initially start streaming.
8
+ * If this later turns to false, it'll continue streaming.
9
+ * This will start streaming the first value it sees.
10
+ */
11
+ startStreaming?: boolean;
12
+ };
13
+ /**
14
+ * A hook that smoothly displays text as it is streamed.
15
+ *
16
+ * @param text The text to display. Pass in the full text each time.
17
+ * @param charsPerSec The number of characters to display per second.
18
+ * @returns A tuple of the visible text and the state of the smooth text,
19
+ * including the current cursor position and whether it's still streaming.
20
+ * This allows you to decide if it's too far behind and you want to adjust
21
+ * the charsPerSec or just prefer the full text.
22
+ */
23
+ export declare function useSmoothText(text: string, { charsPerSec, startStreaming, }?: SmoothTextOptions): [string, {
24
+ cursor: number;
25
+ isStreaming: boolean;
26
+ }];
27
+ //# sourceMappingURL=useSmoothText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSmoothText.d.ts","sourceRoot":"","sources":["../../src/react/useSmoothText.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AACF;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,EACE,WAAmC,EACnC,cAAsB,GACvB,GAAE,iBAAsB,GACxB,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC,CAwEpD"}
@@ -0,0 +1,68 @@
1
+ import { useEffect, useRef, useState } from "react";
2
+ const FPS = 20;
3
+ const MS_PER_FRAME = 1000 / FPS;
4
+ const INITIAL_CHARS_PER_SEC = 128;
5
+ /**
6
+ * A hook that smoothly displays text as it is streamed.
7
+ *
8
+ * @param text The text to display. Pass in the full text each time.
9
+ * @param charsPerSec The number of characters to display per second.
10
+ * @returns A tuple of the visible text and the state of the smooth text,
11
+ * including the current cursor position and whether it's still streaming.
12
+ * This allows you to decide if it's too far behind and you want to adjust
13
+ * the charsPerSec or just prefer the full text.
14
+ */
15
+ export function useSmoothText(text, { charsPerSec = INITIAL_CHARS_PER_SEC, startStreaming = false, } = {}) {
16
+ const [visibleText, setVisibleText] = useState(startStreaming ? "" : text || "");
17
+ const smoothState = useRef({
18
+ tick: Date.now(),
19
+ cursor: visibleText.length,
20
+ lastUpdate: Date.now(),
21
+ lastUpdateLength: text.length,
22
+ charsPerMs: charsPerSec / 1000,
23
+ initial: true,
24
+ });
25
+ const isStreaming = smoothState.current.cursor < text.length;
26
+ useEffect(() => {
27
+ if (!isStreaming) {
28
+ return;
29
+ }
30
+ if (smoothState.current.lastUpdateLength !== text.length) {
31
+ const timeSinceLastUpdate = Date.now() - smoothState.current.lastUpdate;
32
+ const latestCharsPerMs = (text.length - smoothState.current.lastUpdateLength) /
33
+ timeSinceLastUpdate;
34
+ // Is the rate increasing?
35
+ const rateError = latestCharsPerMs - smoothState.current.charsPerMs;
36
+ // Is our visible text falling behind what it could show?
37
+ const charLag = smoothState.current.lastUpdateLength - smoothState.current.cursor;
38
+ const lagRate = charLag / timeSinceLastUpdate;
39
+ const charsPerMs = latestCharsPerMs +
40
+ (smoothState.current.initial
41
+ ? 0
42
+ : Math.max(0, (rateError + lagRate) / 2));
43
+ smoothState.current.initial = false;
44
+ // Smooth out the charsPerSec by weighting it with the previous value.
45
+ smoothState.current.charsPerMs = Math.min((2 * charsPerMs + smoothState.current.charsPerMs) / 3, smoothState.current.charsPerMs * 2);
46
+ }
47
+ smoothState.current.tick = Math.max(smoothState.current.tick, Date.now() - MS_PER_FRAME);
48
+ smoothState.current.lastUpdate = Date.now();
49
+ smoothState.current.lastUpdateLength = text.length;
50
+ function update() {
51
+ if (smoothState.current.cursor >= text.length) {
52
+ return;
53
+ }
54
+ const now = Date.now();
55
+ const timeSinceLastUpdate = now - smoothState.current.tick;
56
+ const charsSinceLastUpdate = Math.floor(timeSinceLastUpdate * smoothState.current.charsPerMs);
57
+ const chars = Math.min(charsSinceLastUpdate, text.length - smoothState.current.cursor);
58
+ smoothState.current.cursor += chars;
59
+ smoothState.current.tick += chars / smoothState.current.charsPerMs;
60
+ setVisibleText(text.slice(0, smoothState.current.cursor));
61
+ }
62
+ update();
63
+ const interval = setInterval(update, MS_PER_FRAME);
64
+ return () => clearInterval(interval);
65
+ }, [text, isStreaming, charsPerSec]);
66
+ return [visibleText, { cursor: smoothState.current.cursor, isStreaming }];
67
+ }
68
+ //# sourceMappingURL=useSmoothText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSmoothText.js","sourceRoot":"","sources":["../../src/react/useSmoothText.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type UIDataTypes, type UITools } from "ai";
2
+ import type { StreamQuery, StreamQueryArgs } from "./types.js";
3
+ import { type UIMessage } from "../UIMessages.js";
4
+ /**
5
+ * A hook that fetches streaming messages from a thread and converts them to UIMessages
6
+ * using AI SDK's readUIMessageStream.
7
+ * This ONLY returns streaming UIMessages. To get both full and streaming messages,
8
+ * use `useUIMessages`.
9
+ *
10
+ * @param query The query to use to fetch messages.
11
+ * It must take as arguments `{ threadId, paginationOpts, streamArgs }` and
12
+ * return a `streams` object returned from `agent.syncStreams`.
13
+ * @param args The arguments to pass to the query other than `paginationOpts`
14
+ * and `streamArgs`. So `{ threadId }` at minimum, plus any other arguments that
15
+ * you want to pass to the query.
16
+ * @returns The streaming UIMessages.
17
+ */
18
+ export declare function useStreamingUIMessages<METADATA = unknown, DATA_PARTS extends UIDataTypes = UIDataTypes, TOOLS extends UITools = UITools, Query extends StreamQuery<any> = StreamQuery<object>>(query: Query, args: StreamQueryArgs<Query> | "skip", options?: {
19
+ startOrder?: number;
20
+ skipStreamIds?: string[];
21
+ }): UIMessage<METADATA, DATA_PARTS, TOOLS>[] | undefined;
22
+ //# sourceMappingURL=useStreamingUIMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStreamingUIMessages.d.ts","sourceRoot":"","sources":["../../src/react/useStreamingUIMessages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAuB,KAAK,OAAO,EAAE,MAAM,IAAI,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAiBlD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,GAAG,OAAO,EAClB,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,KAAK,SAAS,OAAO,GAAG,OAAO,EAC/B,KAAK,SAAS,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,EAEpD,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,MAAM,EACrC,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,GAEA,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,GAAG,SAAS,CA8FtD"}