@convex-dev/agent 0.2.6-alpha.0 → 0.2.6

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 (98) hide show
  1. package/dist/client/definePlaygroundAPI.d.ts +6 -4
  2. package/dist/client/definePlaygroundAPI.d.ts.map +1 -1
  3. package/dist/client/definePlaygroundAPI.js +15 -6
  4. package/dist/client/definePlaygroundAPI.js.map +1 -1
  5. package/dist/client/index.d.ts +26 -120
  6. package/dist/client/index.d.ts.map +1 -1
  7. package/dist/client/index.js +48 -373
  8. package/dist/client/index.js.map +1 -1
  9. package/dist/client/messages.d.ts +1 -1
  10. package/dist/client/messages.d.ts.map +1 -1
  11. package/dist/client/mockModel.d.ts +3 -3
  12. package/dist/client/mockModel.d.ts.map +1 -1
  13. package/dist/client/mockModel.js +22 -17
  14. package/dist/client/mockModel.js.map +1 -1
  15. package/dist/client/saveInputMessages.d.ts +20 -0
  16. package/dist/client/saveInputMessages.d.ts.map +1 -0
  17. package/dist/client/saveInputMessages.js +57 -0
  18. package/dist/client/saveInputMessages.js.map +1 -0
  19. package/dist/client/search.d.ts +110 -9
  20. package/dist/client/search.d.ts.map +1 -1
  21. package/dist/client/search.js +271 -39
  22. package/dist/client/search.js.map +1 -1
  23. package/dist/client/start.d.ts +83 -0
  24. package/dist/client/start.d.ts.map +1 -0
  25. package/dist/client/start.js +171 -0
  26. package/dist/client/start.js.map +1 -0
  27. package/dist/client/streaming.d.ts +8 -8
  28. package/dist/client/streaming.d.ts.map +1 -1
  29. package/dist/client/streaming.js +2 -1
  30. package/dist/client/streaming.js.map +1 -1
  31. package/dist/client/textStreamParts.d.ts.map +1 -1
  32. package/dist/client/textStreamParts.js +2 -9
  33. package/dist/client/textStreamParts.js.map +1 -1
  34. package/dist/client/threads.d.ts +1 -1
  35. package/dist/client/threads.d.ts.map +1 -1
  36. package/dist/client/types.d.ts +137 -5
  37. package/dist/client/types.d.ts.map +1 -1
  38. package/dist/component/_generated/api.d.ts +11 -3
  39. package/dist/component/messages.d.ts +13 -4
  40. package/dist/component/messages.d.ts.map +1 -1
  41. package/dist/component/messages.js +67 -25
  42. package/dist/component/messages.js.map +1 -1
  43. package/dist/component/schema.d.ts +2 -1643
  44. package/dist/component/schema.d.ts.map +1 -1
  45. package/dist/component/schema.js +0 -24
  46. package/dist/component/schema.js.map +1 -1
  47. package/dist/mapping.d.ts +7 -9
  48. package/dist/mapping.d.ts.map +1 -1
  49. package/dist/mapping.js +73 -7
  50. package/dist/mapping.js.map +1 -1
  51. package/dist/react/deltas.d.ts.map +1 -1
  52. package/dist/react/deltas.js +15 -5
  53. package/dist/react/deltas.js.map +1 -1
  54. package/dist/react/fromUIMessages.d.ts +13 -0
  55. package/dist/react/fromUIMessages.d.ts.map +1 -0
  56. package/dist/react/fromUIMessages.js +70 -0
  57. package/dist/react/fromUIMessages.js.map +1 -0
  58. package/dist/react/toUIMessages.d.ts +5 -2
  59. package/dist/react/toUIMessages.d.ts.map +1 -1
  60. package/dist/react/toUIMessages.js +3 -0
  61. package/dist/react/toUIMessages.js.map +1 -1
  62. package/dist/shared.d.ts +10 -0
  63. package/dist/shared.d.ts.map +1 -1
  64. package/dist/shared.js +26 -0
  65. package/dist/shared.js.map +1 -1
  66. package/dist/validators.d.ts +1640 -0
  67. package/dist/validators.d.ts.map +1 -1
  68. package/dist/validators.js +41 -0
  69. package/dist/validators.js.map +1 -1
  70. package/package.json +1 -1
  71. package/src/client/definePlaygroundAPI.ts +16 -7
  72. package/src/client/index.test.ts +11 -46
  73. package/src/client/index.ts +99 -558
  74. package/src/client/messages.ts +1 -1
  75. package/src/client/mock.json +68 -0
  76. package/src/client/mockModel.ts +34 -23
  77. package/src/client/saveInputMessages.test.ts +576 -0
  78. package/src/client/saveInputMessages.ts +100 -0
  79. package/src/client/search.test.ts +1017 -0
  80. package/src/client/search.ts +446 -68
  81. package/src/client/start.ts +313 -0
  82. package/src/client/stream.json +48 -0
  83. package/src/client/streaming.ts +3 -3
  84. package/src/client/textStreamParts.ts +2 -11
  85. package/src/client/threads.ts +1 -1
  86. package/src/client/types.ts +143 -3
  87. package/src/component/_generated/api.d.ts +11 -3
  88. package/src/component/messages.ts +73 -27
  89. package/src/component/schema.ts +1 -29
  90. package/src/mapping.ts +84 -7
  91. package/src/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  92. package/src/react/deltas.ts +18 -5
  93. package/src/react/fromUIMessages.test.ts +427 -0
  94. package/src/react/fromUIMessages.ts +85 -0
  95. package/src/react/toUIMessages.ts +21 -13
  96. package/src/shared.ts +33 -0
  97. package/src/validators.test.ts +13 -2
  98. package/src/validators.ts +48 -0
@@ -1,6 +1,6 @@
1
1
  import type { ModelMessage } from "ai";
2
2
  import type { PaginationOptions, PaginationResult } from "convex/server";
3
- import type { MessageDoc } from "../component/schema.js";
3
+ import type { MessageDoc } from "../validators.js";
4
4
  import { validateVectorDimension } from "../component/vector/tables.js";
5
5
  import {
6
6
  vMessageWithMetadata,
@@ -0,0 +1,68 @@
1
+ [
2
+ { "type": "start" },
3
+ { "type": "start-step" },
4
+ { "type": "reasoning-start", "id": "0-reasoning" },
5
+ {
6
+ "type": "reasoning-delta",
7
+ "id": "0-reasoning",
8
+ "delta": "I'm",
9
+ "providerMetadata": {
10
+ "mockProvider": { "mock": { "reasoningDetails": null } }
11
+ }
12
+ },
13
+ {
14
+ "type": "reasoning-delta",
15
+ "id": "0-reasoning",
16
+ "delta": " thinking",
17
+ "providerMetadata": {
18
+ "mockProvider": { "mock": { "reasoningDetails": null } }
19
+ }
20
+ },
21
+ { "type": "reasoning-end", "id": "0-reasoning" },
22
+ {
23
+ "type": "tool-input-available",
24
+ "toolCallId": "1",
25
+ "toolName": "say",
26
+ "input": { "question": "What is the best flavor of ice cream?" }
27
+ },
28
+ {
29
+ "type": "tool-output-available",
30
+ "toolCallId": "1",
31
+ "output": "I'm sorry I can't help you. Stop asking me questions."
32
+ },
33
+ {
34
+ "type": "tool-output-available",
35
+ "toolCallId": "1",
36
+ "output": "I'm sorry I can't help you. Stop asking me questions."
37
+ },
38
+ { "type": "reasoning-start", "id": "3-reasoning" },
39
+ {
40
+ "type": "reasoning-delta",
41
+ "id": "3-reasoning",
42
+ "delta": "I'm",
43
+ "providerMetadata": {
44
+ "mockProvider": { "mock": { "reasoningDetails": null } }
45
+ }
46
+ },
47
+ {
48
+ "type": "reasoning-delta",
49
+ "id": "3-reasoning",
50
+ "delta": " thinking",
51
+ "providerMetadata": {
52
+ "mockProvider": { "mock": { "reasoningDetails": null } }
53
+ }
54
+ },
55
+ { "type": "reasoning-end", "id": "3-reasoning" },
56
+ { "type": "text-start", "id": "4-text" },
57
+ { "type": "text-delta", "id": "4-text", "delta": "The" },
58
+ { "type": "text-delta", "id": "4-text", "delta": " best" },
59
+ { "type": "text-delta", "id": "4-text", "delta": " flavor" },
60
+ { "type": "text-delta", "id": "4-text", "delta": " of" },
61
+ { "type": "text-delta", "id": "4-text", "delta": " ice" },
62
+ { "type": "text-delta", "id": "4-text", "delta": " cream" },
63
+ { "type": "text-delta", "id": "4-text", "delta": " is" },
64
+ { "type": "text-delta", "id": "4-text", "delta": " vanilla." },
65
+ { "type": "text-end", "id": "4-text" },
66
+ { "type": "finish-step" },
67
+ { "type": "finish" }
68
+ ]
@@ -1,17 +1,17 @@
1
1
  import type {
2
2
  LanguageModelV2,
3
+ LanguageModelV2Content,
3
4
  LanguageModelV2StreamPart,
4
5
  } from "@ai-sdk/provider";
5
- import type { ReasoningPart, TextPart } from "@ai-sdk/provider-utils";
6
6
  import { simulateReadableStream } from "ai";
7
7
 
8
- const longDefaultText = `
8
+ export const DEFAULT_TEXT = `
9
9
  A A A A A A A A A A A A A A A
10
10
  B B B B B B B B B B B B B B B
11
11
  C C C C C C C C C C C C C C C
12
12
  D D D D D D D D D D D D D D D
13
13
  `;
14
- const defaultUsage = { outputTokens: 10, inputTokens: 3, totalTokens: 13 };
14
+ const DEFAULT_USAGE = { outputTokens: 10, inputTokens: 3, totalTokens: 13 };
15
15
 
16
16
  export type MockModelArgs = {
17
17
  provider?: LanguageModelV2["provider"];
@@ -22,7 +22,7 @@ export type MockModelArgs = {
22
22
  chunkDelayInMs?: number;
23
23
  initialDelayInMs?: number;
24
24
  // provide either content or doGenerate & doStream
25
- content?: (TextPart | ReasoningPart)[];
25
+ content?: LanguageModelV2Content[];
26
26
  doGenerate?: LanguageModelV2["doGenerate"];
27
27
  doStream?: LanguageModelV2["doStream"];
28
28
  fail?:
@@ -55,9 +55,9 @@ export class MockLanguageModel implements LanguageModelV2 {
55
55
  this.provider = args.provider || "mock-provider";
56
56
  this.modelId = args.modelId || "mock-model-id";
57
57
  const {
58
- content = [{ type: "text", text: longDefaultText }],
59
- chunkDelayInMs = 200,
60
- initialDelayInMs = 1000,
58
+ content = [{ type: "text", text: DEFAULT_TEXT }],
59
+ chunkDelayInMs = 0,
60
+ initialDelayInMs = 0,
61
61
  supportedUrls = {},
62
62
  } = args;
63
63
  const fail =
@@ -73,21 +73,24 @@ export class MockLanguageModel implements LanguageModelV2 {
73
73
  { type: "stream-start", warnings: [] },
74
74
  ];
75
75
  chunks.push(
76
- ...content.flatMap((c, ci) => {
76
+ ...content.flatMap((c, ci): LanguageModelV2StreamPart[] => {
77
+ if (c.type !== "text" && c.type !== "reasoning") {
78
+ return [c];
79
+ }
77
80
  const deltas = c.text.split(" ");
78
- let parts: LanguageModelV2StreamPart[] = [];
81
+ const parts: LanguageModelV2StreamPart[] = [];
79
82
  if (c.type === "reasoning") {
80
83
  parts.push({
81
84
  type: "reasoning-start",
82
- id: `${ci}-reasoning-start`,
85
+ id: `reasoning-${ci}`,
83
86
  });
84
87
  parts.push(
85
88
  ...deltas.map(
86
89
  (delta, di) =>
87
90
  ({
88
91
  type: "reasoning-delta",
89
- delta,
90
- id: `${ci}-reasoning-${di}`,
92
+ delta: (di ? " " : "") + delta,
93
+ id: `reasoning-${ci}`,
91
94
  providerMetadata: {
92
95
  mockProvider: { mock: { reasoningDetails: null } },
93
96
  },
@@ -96,21 +99,26 @@ export class MockLanguageModel implements LanguageModelV2 {
96
99
  );
97
100
  parts.push({
98
101
  type: "reasoning-end",
99
- id: `${ci}-reasoning-end`,
102
+ id: `reasoning-${ci}`,
100
103
  });
101
104
  } else if (c.type === "text") {
102
105
  parts.push({
103
106
  type: "text-start",
104
- id: `${ci}-text-start`,
107
+ id: `txt-${ci}`,
105
108
  });
106
- parts = deltas.map((delta, di) => ({
107
- type: "text-delta",
108
- delta,
109
- id: `${ci}-text-${di}`,
110
- }));
109
+ parts.push(
110
+ ...deltas.map(
111
+ (delta, di) =>
112
+ ({
113
+ type: "text-delta",
114
+ delta: (di ? " " : "") + delta,
115
+ id: `txt-${ci}`,
116
+ }) satisfies LanguageModelV2StreamPart,
117
+ ),
118
+ );
111
119
  parts.push({
112
120
  type: "text-end",
113
- id: `${ci}-text-end`,
121
+ id: `txt-${ci}`,
114
122
  });
115
123
  }
116
124
  return parts;
@@ -125,7 +133,7 @@ export class MockLanguageModel implements LanguageModelV2 {
125
133
  chunks.push({
126
134
  type: "finish",
127
135
  finishReason: fail ? "error" : "stop",
128
- usage: defaultUsage,
136
+ usage: DEFAULT_USAGE,
129
137
  providerMetadata: {
130
138
  mockProvider: { mock: "mock metadata" },
131
139
  },
@@ -144,7 +152,7 @@ export class MockLanguageModel implements LanguageModelV2 {
144
152
  return {
145
153
  content,
146
154
  finishReason: "stop",
147
- usage: defaultUsage,
155
+ usage: DEFAULT_USAGE,
148
156
  providerMetadata: { mockProvider: { mock: "mock metadata" } },
149
157
  warnings: [],
150
158
  };
@@ -169,8 +177,11 @@ export class MockLanguageModel implements LanguageModelV2 {
169
177
  initialDelayInMs,
170
178
  chunkDelayInMs,
171
179
  });
180
+
172
181
  if (options.abortSignal) {
173
- throw new Error("abortSignal in mock model");
182
+ options.abortSignal.addEventListener("abort", () => {
183
+ console.warn("abortSignal in mock model not supported");
184
+ });
174
185
  }
175
186
  return {
176
187
  stream,