@convex-dev/agent 0.2.6 → 0.2.8-alpha.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 (112) hide show
  1. package/dist/UIMessages.d.ts +43 -0
  2. package/dist/UIMessages.d.ts.map +1 -0
  3. package/dist/{react/toUIMessages.js → UIMessages.js} +97 -4
  4. package/dist/UIMessages.js.map +1 -0
  5. package/dist/client/createTool.js +1 -1
  6. package/dist/client/createTool.js.map +1 -1
  7. package/dist/client/index.d.ts +39 -19
  8. package/dist/client/index.d.ts.map +1 -1
  9. package/dist/client/index.js +22 -19
  10. package/dist/client/index.js.map +1 -1
  11. package/dist/client/mockModel.d.ts +2 -0
  12. package/dist/client/mockModel.d.ts.map +1 -1
  13. package/dist/client/mockModel.js +11 -7
  14. package/dist/client/mockModel.js.map +1 -1
  15. package/dist/client/search.d.ts.map +1 -1
  16. package/dist/client/search.js +2 -0
  17. package/dist/client/search.js.map +1 -1
  18. package/dist/client/start.d.ts +1 -0
  19. package/dist/client/start.d.ts.map +1 -1
  20. package/dist/client/start.js +0 -1
  21. package/dist/client/start.js.map +1 -1
  22. package/dist/client/streaming.d.ts +23 -4
  23. package/dist/client/streaming.d.ts.map +1 -1
  24. package/dist/client/streaming.js +32 -6
  25. package/dist/client/streaming.js.map +1 -1
  26. package/dist/client/types.d.ts +19 -13
  27. package/dist/client/types.d.ts.map +1 -1
  28. package/dist/component/_generated/api.d.ts +2 -0
  29. package/dist/component/messages.js +1 -1
  30. package/dist/component/messages.js.map +1 -1
  31. package/dist/component/schema.d.ts +10 -4
  32. package/dist/component/schema.d.ts.map +1 -1
  33. package/dist/component/schema.js +4 -0
  34. package/dist/component/schema.js.map +1 -1
  35. package/dist/component/streams.d.ts +2 -4
  36. package/dist/component/streams.d.ts.map +1 -1
  37. package/dist/component/streams.js +42 -43
  38. package/dist/component/streams.js.map +1 -1
  39. package/dist/deltas.d.ts +48 -0
  40. package/dist/deltas.d.ts.map +1 -0
  41. package/dist/deltas.js +468 -0
  42. package/dist/deltas.js.map +1 -0
  43. package/dist/react/index.d.ts +4 -77
  44. package/dist/react/index.d.ts.map +1 -1
  45. package/dist/react/index.js +4 -178
  46. package/dist/react/index.js.map +1 -1
  47. package/dist/react/optimisticallySendMessage.d.ts +36 -3
  48. package/dist/react/optimisticallySendMessage.d.ts.map +1 -1
  49. package/dist/react/optimisticallySendMessage.js +37 -5
  50. package/dist/react/optimisticallySendMessage.js.map +1 -1
  51. package/dist/react/types.d.ts +4 -18
  52. package/dist/react/types.d.ts.map +1 -1
  53. package/dist/react/useStreamingUIMessages.d.ts +22 -0
  54. package/dist/react/useStreamingUIMessages.d.ts.map +1 -0
  55. package/dist/react/useStreamingUIMessages.js +204 -0
  56. package/dist/react/useStreamingUIMessages.js.map +1 -0
  57. package/dist/react/useThreadMessages.d.ts +103 -0
  58. package/dist/react/useThreadMessages.d.ts.map +1 -0
  59. package/dist/react/useThreadMessages.js +139 -0
  60. package/dist/react/useThreadMessages.js.map +1 -0
  61. package/dist/react/useUIMessages.d.ts +91 -0
  62. package/dist/react/useUIMessages.d.ts.map +1 -0
  63. package/dist/react/useUIMessages.js +115 -0
  64. package/dist/react/useUIMessages.js.map +1 -0
  65. package/dist/validators.d.ts +3 -1
  66. package/dist/validators.d.ts.map +1 -1
  67. package/dist/validators.js +1 -0
  68. package/dist/validators.js.map +1 -1
  69. package/package.json +4 -4
  70. package/src/{react/toUIMessages.ts → UIMessages.ts} +132 -15
  71. package/src/client/createTool.ts +1 -1
  72. package/src/client/index.ts +60 -41
  73. package/src/client/mockModel.ts +13 -8
  74. package/src/client/search.ts +2 -0
  75. package/src/client/start.ts +2 -1
  76. package/src/client/streaming.test.ts +186 -0
  77. package/src/client/streaming.ts +50 -9
  78. package/src/client/types.ts +19 -21
  79. package/src/component/_generated/api.d.ts +2 -0
  80. package/src/component/messages.ts +1 -1
  81. package/src/component/schema.ts +6 -0
  82. package/src/component/streams.ts +49 -66
  83. package/src/{react/deltas.test.ts → deltas.test.ts} +57 -46
  84. package/src/deltas.ts +589 -0
  85. package/src/{react/fromUIMessages.test.ts → fromUIMessages.test.ts} +108 -43
  86. package/src/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  87. package/src/react/index.ts +8 -250
  88. package/src/react/optimisticallySendMessage.ts +57 -8
  89. package/src/react/types.ts +6 -39
  90. package/src/react/useStreamingUIMessages.ts +294 -0
  91. package/src/react/useThreadMessages.ts +251 -0
  92. package/src/react/useUIMessages.ts +206 -0
  93. package/src/{react/toUIMessages.test.ts → toUIMessages.test.ts} +3 -3
  94. package/src/validators.ts +3 -0
  95. package/dist/client/textStreamParts.d.ts +0 -5
  96. package/dist/client/textStreamParts.d.ts.map +0 -1
  97. package/dist/client/textStreamParts.js +0 -44
  98. package/dist/client/textStreamParts.js.map +0 -1
  99. package/dist/react/deltas.d.ts +0 -27
  100. package/dist/react/deltas.d.ts.map +0 -1
  101. package/dist/react/deltas.js +0 -627
  102. package/dist/react/deltas.js.map +0 -1
  103. package/dist/react/fromUIMessages.d.ts +0 -13
  104. package/dist/react/fromUIMessages.d.ts.map +0 -1
  105. package/dist/react/fromUIMessages.js +0 -70
  106. package/dist/react/fromUIMessages.js.map +0 -1
  107. package/dist/react/toUIMessages.d.ts +0 -19
  108. package/dist/react/toUIMessages.d.ts.map +0 -1
  109. package/dist/react/toUIMessages.js.map +0 -1
  110. package/src/client/textStreamParts.ts +0 -62
  111. package/src/react/deltas.ts +0 -774
  112. package/src/react/fromUIMessages.ts +0 -85
@@ -1,85 +0,0 @@
1
- import { convertToModelMessages } from "ai";
2
- import { extractReasoning, extractText, isTool } from "../shared.js";
3
- import type { MessageDoc, vSource } from "../validators.js";
4
- import type { UIMessage } from "./toUIMessages.js";
5
- import type { ProviderOptions } from "@ai-sdk/provider-utils";
6
- import { omit } from "convex-helpers";
7
- import { fromModelMessage } from "../mapping.js";
8
- import type { Infer } from "convex/values";
9
-
10
- export function fromUIMessages<METADATA = unknown>(
11
- threadId: string,
12
- messages: (UIMessage<METADATA> & {
13
- userId?: string;
14
- model?: string;
15
- provider?: string;
16
- providerOptions?: ProviderOptions;
17
- })[],
18
- ): (MessageDoc & { streaming: boolean; metadata?: METADATA })[] {
19
- return messages.flatMap((uiMessage) => {
20
- const stepOrder = uiMessage.stepOrder;
21
- const commonFields = {
22
- _id: uiMessage.id,
23
- ...omit(uiMessage, ["parts", "role", "key", "text"]),
24
- threadId,
25
- status: uiMessage.status === "streaming" ? "pending" : "success",
26
- streaming: uiMessage.status === "streaming",
27
- // to override
28
- tool: false,
29
- } satisfies MessageDoc & { streaming: boolean; metadata?: METADATA };
30
- const modelMessages = convertToModelMessages([uiMessage]);
31
- return modelMessages.map((modelMessage, i) => {
32
- const message = fromModelMessage(modelMessage);
33
- const tool = isTool(message);
34
- const doc: MessageDoc & { streaming: boolean; metadata?: METADATA } = {
35
- ...commonFields,
36
- stepOrder: stepOrder + i,
37
- message,
38
- tool,
39
- text: extractText(message),
40
- reasoning: extractReasoning(message),
41
- finishReason: tool ? "tool-calls" : "stop",
42
- sources: fromSourceParts(uiMessage.parts),
43
- };
44
- if (Array.isArray(modelMessage.content)) {
45
- const providerOptions = modelMessage.content.find(
46
- (c) => c.providerOptions,
47
- )?.providerOptions;
48
- if (providerOptions) {
49
- // convertToModelMessages changes providerMetadata to providerOptions
50
- doc.providerMetadata = providerOptions;
51
- doc.providerOptions ??= providerOptions;
52
- }
53
- }
54
- return doc;
55
- });
56
- });
57
- }
58
-
59
- function fromSourceParts(parts: UIMessage["parts"]): Infer<typeof vSource>[] {
60
- return parts
61
- .map((part) => {
62
- if (part.type === "source-url") {
63
- return {
64
- type: "source",
65
- sourceType: "url",
66
- url: part.url,
67
- id: part.sourceId,
68
- providerMetadata: part.providerMetadata,
69
- title: part.title,
70
- } satisfies Infer<typeof vSource>;
71
- }
72
- if (part.type === "source-document") {
73
- return {
74
- type: "source",
75
- sourceType: "document",
76
- mediaType: part.mediaType,
77
- id: part.sourceId,
78
- providerMetadata: part.providerMetadata,
79
- title: part.title,
80
- } satisfies Infer<typeof vSource>;
81
- }
82
- return undefined;
83
- })
84
- .filter((p) => p !== undefined);
85
- }