@mastra/client-js 0.0.0-remove-cloud-span-transform-20250425214156 → 0.0.0-scorers-api-v2-20250801171841
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.
- package/CHANGELOG.md +1257 -2
- package/LICENSE.md +11 -42
- package/README.md +2 -1
- package/dist/adapters/agui.d.ts +23 -0
- package/dist/adapters/agui.d.ts.map +1 -0
- package/dist/client.d.ts +265 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/example.d.ts +2 -0
- package/dist/example.d.ts.map +1 -0
- package/dist/index.cjs +1644 -126
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +4 -691
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1643 -129
- package/dist/index.js.map +1 -0
- package/dist/resources/a2a.d.ts +44 -0
- package/dist/resources/a2a.d.ts.map +1 -0
- package/dist/resources/agent.d.ts +112 -0
- package/dist/resources/agent.d.ts.map +1 -0
- package/dist/resources/base.d.ts +13 -0
- package/dist/resources/base.d.ts.map +1 -0
- package/dist/resources/index.d.ts +11 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/legacy-workflow.d.ts +87 -0
- package/dist/resources/legacy-workflow.d.ts.map +1 -0
- package/dist/resources/mcp-tool.d.ts +27 -0
- package/dist/resources/mcp-tool.d.ts.map +1 -0
- package/dist/resources/memory-thread.d.ts +53 -0
- package/dist/resources/memory-thread.d.ts.map +1 -0
- package/dist/resources/network-memory-thread.d.ts +47 -0
- package/dist/resources/network-memory-thread.d.ts.map +1 -0
- package/dist/resources/network.d.ts +30 -0
- package/dist/resources/network.d.ts.map +1 -0
- package/dist/resources/tool.d.ts +23 -0
- package/dist/resources/tool.d.ts.map +1 -0
- package/dist/resources/vNextNetwork.d.ts +42 -0
- package/dist/resources/vNextNetwork.d.ts.map +1 -0
- package/dist/resources/vector.d.ts +48 -0
- package/dist/resources/vector.d.ts.map +1 -0
- package/dist/resources/workflow.d.ts +154 -0
- package/dist/resources/workflow.d.ts.map +1 -0
- package/dist/types.d.ts +422 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/process-client-tools.d.ts +3 -0
- package/dist/utils/process-client-tools.d.ts.map +1 -0
- package/dist/utils/zod-to-json-schema.d.ts +105 -0
- package/dist/utils/zod-to-json-schema.d.ts.map +1 -0
- package/integration-tests/agui-adapter.test.ts +122 -0
- package/integration-tests/package.json +18 -0
- package/integration-tests/src/mastra/index.ts +35 -0
- package/integration-tests/vitest.config.ts +9 -0
- package/package.json +29 -18
- package/src/adapters/agui.test.ts +322 -0
- package/src/adapters/agui.ts +239 -0
- package/src/client.ts +414 -23
- package/src/example.ts +59 -29
- package/src/index.test.ts +526 -10
- package/src/index.ts +1 -0
- package/src/resources/a2a.ts +88 -0
- package/src/resources/agent.ts +629 -49
- package/src/resources/base.ts +8 -2
- package/src/resources/index.ts +4 -2
- package/src/resources/{vnext-workflow.ts → legacy-workflow.ts} +141 -124
- package/src/resources/mcp-tool.ts +48 -0
- package/src/resources/memory-thread.test.ts +285 -0
- package/src/resources/memory-thread.ts +49 -3
- package/src/resources/network-memory-thread.test.ts +269 -0
- package/src/resources/network-memory-thread.ts +81 -0
- package/src/resources/network.ts +11 -17
- package/src/resources/tool.ts +16 -3
- package/src/resources/vNextNetwork.ts +194 -0
- package/src/resources/workflow.ts +289 -94
- package/src/types.ts +291 -26
- package/src/utils/index.ts +11 -0
- package/src/utils/process-client-tools.ts +32 -0
- package/src/utils/zod-to-json-schema.ts +10 -0
- package/src/v2-messages.test.ts +180 -0
- package/tsconfig.build.json +9 -0
- package/tsconfig.json +1 -1
- package/tsup.config.ts +22 -0
- package/dist/index.d.cts +0 -691
package/src/types.ts
CHANGED
|
@@ -1,17 +1,28 @@
|
|
|
1
1
|
import type {
|
|
2
|
-
|
|
2
|
+
MastraMessageV1,
|
|
3
3
|
AiMessageType,
|
|
4
4
|
CoreMessage,
|
|
5
5
|
QueryResult,
|
|
6
|
-
StepAction,
|
|
7
|
-
StepGraph,
|
|
8
6
|
StorageThreadType,
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
WorkflowRuns,
|
|
8
|
+
WorkflowRun,
|
|
9
|
+
LegacyWorkflowRuns,
|
|
10
|
+
StorageGetMessagesArg,
|
|
11
|
+
PaginationInfo,
|
|
12
|
+
MastraMessageV2,
|
|
11
13
|
} from '@mastra/core';
|
|
14
|
+
import type { AgentGenerateOptions, AgentStreamOptions, ToolsInput, UIMessageWithMetadata } from '@mastra/core/agent';
|
|
15
|
+
import type { BaseLogMessage, LogLevel } from '@mastra/core/logger';
|
|
12
16
|
|
|
13
|
-
import type {
|
|
14
|
-
import type {
|
|
17
|
+
import type { MCPToolType, ServerInfo } from '@mastra/core/mcp';
|
|
18
|
+
import type { RuntimeContext } from '@mastra/core/runtime-context';
|
|
19
|
+
import type { MastraScorer, MastraScorerEntry, ScoreRowData } from '@mastra/core/scores';
|
|
20
|
+
import type { Workflow, WatchEvent, WorkflowResult } from '@mastra/core/workflows';
|
|
21
|
+
import type {
|
|
22
|
+
StepAction,
|
|
23
|
+
StepGraph,
|
|
24
|
+
LegacyWorkflowRunResult as CoreLegacyWorkflowRunResult,
|
|
25
|
+
} from '@mastra/core/workflows/legacy';
|
|
15
26
|
import type { JSONSchema7 } from 'json-schema';
|
|
16
27
|
import type { ZodSchema } from 'zod';
|
|
17
28
|
|
|
@@ -27,6 +38,7 @@ export interface ClientOptions {
|
|
|
27
38
|
/** Custom headers to include with requests */
|
|
28
39
|
headers?: Record<string, string>;
|
|
29
40
|
/** Abort signal for request */
|
|
41
|
+
abortSignal?: AbortSignal;
|
|
30
42
|
}
|
|
31
43
|
|
|
32
44
|
export interface RequestOptions {
|
|
@@ -34,27 +46,54 @@ export interface RequestOptions {
|
|
|
34
46
|
headers?: Record<string, string>;
|
|
35
47
|
body?: any;
|
|
36
48
|
stream?: boolean;
|
|
37
|
-
signal?: AbortSignal;
|
|
38
49
|
}
|
|
39
50
|
|
|
51
|
+
type WithoutMethods<T> = {
|
|
52
|
+
[K in keyof T as T[K] extends (...args: any[]) => any
|
|
53
|
+
? never
|
|
54
|
+
: T[K] extends { (): any }
|
|
55
|
+
? never
|
|
56
|
+
: T[K] extends undefined | ((...args: any[]) => any)
|
|
57
|
+
? never
|
|
58
|
+
: K]: T[K];
|
|
59
|
+
};
|
|
60
|
+
|
|
40
61
|
export interface GetAgentResponse {
|
|
41
62
|
name: string;
|
|
42
63
|
instructions: string;
|
|
43
64
|
tools: Record<string, GetToolResponse>;
|
|
65
|
+
workflows: Record<string, GetWorkflowResponse>;
|
|
44
66
|
provider: string;
|
|
45
67
|
modelId: string;
|
|
68
|
+
defaultGenerateOptions: WithoutMethods<AgentGenerateOptions>;
|
|
69
|
+
defaultStreamOptions: WithoutMethods<AgentStreamOptions>;
|
|
46
70
|
}
|
|
47
71
|
|
|
48
72
|
export type GenerateParams<T extends JSONSchema7 | ZodSchema | undefined = undefined> = {
|
|
49
|
-
messages: string | string[] | CoreMessage[] | AiMessageType[];
|
|
50
|
-
|
|
73
|
+
messages: string | string[] | CoreMessage[] | AiMessageType[] | UIMessageWithMetadata[];
|
|
74
|
+
output?: T;
|
|
75
|
+
experimental_output?: T;
|
|
76
|
+
runtimeContext?: RuntimeContext | Record<string, any>;
|
|
77
|
+
clientTools?: ToolsInput;
|
|
78
|
+
} & WithoutMethods<
|
|
79
|
+
Omit<AgentGenerateOptions<T>, 'output' | 'experimental_output' | 'runtimeContext' | 'clientTools' | 'abortSignal'>
|
|
80
|
+
>;
|
|
51
81
|
|
|
52
82
|
export type StreamParams<T extends JSONSchema7 | ZodSchema | undefined = undefined> = {
|
|
53
|
-
messages: string | string[] | CoreMessage[] | AiMessageType[];
|
|
54
|
-
|
|
83
|
+
messages: string | string[] | CoreMessage[] | AiMessageType[] | UIMessageWithMetadata[];
|
|
84
|
+
output?: T;
|
|
85
|
+
experimental_output?: T;
|
|
86
|
+
runtimeContext?: RuntimeContext | Record<string, any>;
|
|
87
|
+
clientTools?: ToolsInput;
|
|
88
|
+
} & WithoutMethods<
|
|
89
|
+
Omit<AgentStreamOptions<T>, 'output' | 'experimental_output' | 'runtimeContext' | 'clientTools' | 'abortSignal'>
|
|
90
|
+
>;
|
|
55
91
|
|
|
56
92
|
export interface GetEvalsByAgentIdResponse extends GetAgentResponse {
|
|
57
93
|
evals: any[];
|
|
94
|
+
instructions: string;
|
|
95
|
+
name: string;
|
|
96
|
+
id: string;
|
|
58
97
|
}
|
|
59
98
|
|
|
60
99
|
export interface GetToolResponse {
|
|
@@ -64,7 +103,7 @@ export interface GetToolResponse {
|
|
|
64
103
|
outputSchema: string;
|
|
65
104
|
}
|
|
66
105
|
|
|
67
|
-
export interface
|
|
106
|
+
export interface GetLegacyWorkflowResponse {
|
|
68
107
|
name: string;
|
|
69
108
|
triggerSchema: string;
|
|
70
109
|
steps: Record<string, StepAction<any, any, any, any>>;
|
|
@@ -73,24 +112,61 @@ export interface GetWorkflowResponse {
|
|
|
73
112
|
workflowId?: string;
|
|
74
113
|
}
|
|
75
114
|
|
|
76
|
-
export
|
|
115
|
+
export interface GetWorkflowRunsParams {
|
|
116
|
+
fromDate?: Date;
|
|
117
|
+
toDate?: Date;
|
|
118
|
+
limit?: number;
|
|
119
|
+
offset?: number;
|
|
120
|
+
resourceId?: string;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export type GetLegacyWorkflowRunsResponse = LegacyWorkflowRuns;
|
|
124
|
+
|
|
125
|
+
export type GetWorkflowRunsResponse = WorkflowRuns;
|
|
126
|
+
|
|
127
|
+
export type GetWorkflowRunByIdResponse = WorkflowRun;
|
|
128
|
+
|
|
129
|
+
export type GetWorkflowRunExecutionResultResponse = WatchEvent['payload']['workflowState'];
|
|
130
|
+
|
|
131
|
+
export type LegacyWorkflowRunResult = {
|
|
77
132
|
activePaths: Record<string, { status: string; suspendPayload?: any; stepPath: string[] }>;
|
|
78
|
-
results:
|
|
133
|
+
results: CoreLegacyWorkflowRunResult<any, any, any>['results'];
|
|
79
134
|
timestamp: number;
|
|
80
135
|
runId: string;
|
|
81
136
|
};
|
|
82
137
|
|
|
83
|
-
export interface
|
|
138
|
+
export interface GetWorkflowResponse {
|
|
84
139
|
name: string;
|
|
85
|
-
|
|
86
|
-
|
|
140
|
+
description?: string;
|
|
141
|
+
steps: {
|
|
142
|
+
[key: string]: {
|
|
143
|
+
id: string;
|
|
144
|
+
description: string;
|
|
145
|
+
inputSchema: string;
|
|
146
|
+
outputSchema: string;
|
|
147
|
+
resumeSchema: string;
|
|
148
|
+
suspendSchema: string;
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
allSteps: {
|
|
152
|
+
[key: string]: {
|
|
153
|
+
id: string;
|
|
154
|
+
description: string;
|
|
155
|
+
inputSchema: string;
|
|
156
|
+
outputSchema: string;
|
|
157
|
+
resumeSchema: string;
|
|
158
|
+
suspendSchema: string;
|
|
159
|
+
isWorkflow: boolean;
|
|
160
|
+
};
|
|
161
|
+
};
|
|
162
|
+
stepGraph: Workflow['serializedStepGraph'];
|
|
87
163
|
inputSchema: string;
|
|
88
164
|
outputSchema: string;
|
|
89
165
|
}
|
|
90
166
|
|
|
91
|
-
export type
|
|
167
|
+
export type WorkflowWatchResult = WatchEvent & { runId: string };
|
|
92
168
|
|
|
93
|
-
export type
|
|
169
|
+
export type WorkflowRunResult = WorkflowResult<any, any>;
|
|
94
170
|
export interface UpsertVectorParams {
|
|
95
171
|
indexName: string;
|
|
96
172
|
vectors: number[][];
|
|
@@ -122,20 +198,33 @@ export interface GetVectorIndexResponse {
|
|
|
122
198
|
}
|
|
123
199
|
|
|
124
200
|
export interface SaveMessageToMemoryParams {
|
|
125
|
-
messages:
|
|
201
|
+
messages: (MastraMessageV1 | MastraMessageV2)[];
|
|
126
202
|
agentId: string;
|
|
127
203
|
}
|
|
128
204
|
|
|
129
|
-
export
|
|
205
|
+
export interface SaveNetworkMessageToMemoryParams {
|
|
206
|
+
messages: (MastraMessageV1 | MastraMessageV2)[];
|
|
207
|
+
networkId: string;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
export type SaveMessageToMemoryResponse = (MastraMessageV1 | MastraMessageV2)[];
|
|
130
211
|
|
|
131
212
|
export interface CreateMemoryThreadParams {
|
|
132
|
-
title
|
|
133
|
-
metadata
|
|
213
|
+
title?: string;
|
|
214
|
+
metadata?: Record<string, any>;
|
|
134
215
|
resourceId: string;
|
|
135
|
-
threadId
|
|
216
|
+
threadId?: string;
|
|
136
217
|
agentId: string;
|
|
137
218
|
}
|
|
138
219
|
|
|
220
|
+
export interface CreateNetworkMemoryThreadParams {
|
|
221
|
+
title?: string;
|
|
222
|
+
metadata?: Record<string, any>;
|
|
223
|
+
resourceId: string;
|
|
224
|
+
threadId?: string;
|
|
225
|
+
networkId: string;
|
|
226
|
+
}
|
|
227
|
+
|
|
139
228
|
export type CreateMemoryThreadResponse = StorageThreadType;
|
|
140
229
|
|
|
141
230
|
export interface GetMemoryThreadParams {
|
|
@@ -143,6 +232,11 @@ export interface GetMemoryThreadParams {
|
|
|
143
232
|
agentId: string;
|
|
144
233
|
}
|
|
145
234
|
|
|
235
|
+
export interface GetNetworkMemoryThreadParams {
|
|
236
|
+
resourceId: string;
|
|
237
|
+
networkId: string;
|
|
238
|
+
}
|
|
239
|
+
|
|
146
240
|
export type GetMemoryThreadResponse = StorageThreadType[];
|
|
147
241
|
|
|
148
242
|
export interface UpdateMemoryThreadParams {
|
|
@@ -151,21 +245,52 @@ export interface UpdateMemoryThreadParams {
|
|
|
151
245
|
resourceId: string;
|
|
152
246
|
}
|
|
153
247
|
|
|
248
|
+
export interface GetMemoryThreadMessagesParams {
|
|
249
|
+
/**
|
|
250
|
+
* Limit the number of messages to retrieve (default: 40)
|
|
251
|
+
*/
|
|
252
|
+
limit?: number;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
export type GetMemoryThreadMessagesPaginatedParams = Omit<StorageGetMessagesArg, 'threadConfig' | 'threadId'>;
|
|
256
|
+
|
|
154
257
|
export interface GetMemoryThreadMessagesResponse {
|
|
155
258
|
messages: CoreMessage[];
|
|
156
259
|
uiMessages: AiMessageType[];
|
|
157
260
|
}
|
|
158
261
|
|
|
262
|
+
export type GetMemoryThreadMessagesPaginatedResponse = PaginationInfo & {
|
|
263
|
+
messages: MastraMessageV1[] | MastraMessageV2[];
|
|
264
|
+
};
|
|
265
|
+
|
|
159
266
|
export interface GetLogsParams {
|
|
160
267
|
transportId: string;
|
|
268
|
+
fromDate?: Date;
|
|
269
|
+
toDate?: Date;
|
|
270
|
+
logLevel?: LogLevel;
|
|
271
|
+
filters?: Record<string, string>;
|
|
272
|
+
page?: number;
|
|
273
|
+
perPage?: number;
|
|
161
274
|
}
|
|
162
275
|
|
|
163
276
|
export interface GetLogParams {
|
|
164
277
|
runId: string;
|
|
165
278
|
transportId: string;
|
|
279
|
+
fromDate?: Date;
|
|
280
|
+
toDate?: Date;
|
|
281
|
+
logLevel?: LogLevel;
|
|
282
|
+
filters?: Record<string, string>;
|
|
283
|
+
page?: number;
|
|
284
|
+
perPage?: number;
|
|
166
285
|
}
|
|
167
286
|
|
|
168
|
-
export type GetLogsResponse =
|
|
287
|
+
export type GetLogsResponse = {
|
|
288
|
+
logs: BaseLogMessage[];
|
|
289
|
+
total: number;
|
|
290
|
+
page: number;
|
|
291
|
+
perPage: number;
|
|
292
|
+
hasMore: boolean;
|
|
293
|
+
};
|
|
169
294
|
|
|
170
295
|
export type RequestFunction = (path: string, options?: RequestOptions) => Promise<any>;
|
|
171
296
|
|
|
@@ -219,9 +344,12 @@ export interface GetTelemetryParams {
|
|
|
219
344
|
page?: number;
|
|
220
345
|
perPage?: number;
|
|
221
346
|
attribute?: Record<string, string>;
|
|
347
|
+
fromDate?: Date;
|
|
348
|
+
toDate?: Date;
|
|
222
349
|
}
|
|
223
350
|
|
|
224
351
|
export interface GetNetworkResponse {
|
|
352
|
+
id: string;
|
|
225
353
|
name: string;
|
|
226
354
|
instructions: string;
|
|
227
355
|
agents: Array<{
|
|
@@ -235,3 +363,140 @@ export interface GetNetworkResponse {
|
|
|
235
363
|
};
|
|
236
364
|
state?: Record<string, any>;
|
|
237
365
|
}
|
|
366
|
+
|
|
367
|
+
export interface GetVNextNetworkResponse {
|
|
368
|
+
id: string;
|
|
369
|
+
name: string;
|
|
370
|
+
instructions: string;
|
|
371
|
+
agents: Array<{
|
|
372
|
+
name: string;
|
|
373
|
+
provider: string;
|
|
374
|
+
modelId: string;
|
|
375
|
+
}>;
|
|
376
|
+
routingModel: {
|
|
377
|
+
provider: string;
|
|
378
|
+
modelId: string;
|
|
379
|
+
};
|
|
380
|
+
workflows: Array<{
|
|
381
|
+
name: string;
|
|
382
|
+
description: string;
|
|
383
|
+
inputSchema: string | undefined;
|
|
384
|
+
outputSchema: string | undefined;
|
|
385
|
+
}>;
|
|
386
|
+
tools: Array<{
|
|
387
|
+
id: string;
|
|
388
|
+
description: string;
|
|
389
|
+
}>;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
export interface GenerateVNextNetworkResponse {
|
|
393
|
+
task: string;
|
|
394
|
+
result: string;
|
|
395
|
+
resourceId: string;
|
|
396
|
+
resourceType: 'none' | 'tool' | 'agent' | 'workflow';
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
export interface GenerateOrStreamVNextNetworkParams {
|
|
400
|
+
message: string;
|
|
401
|
+
threadId?: string;
|
|
402
|
+
resourceId?: string;
|
|
403
|
+
runtimeContext?: RuntimeContext | Record<string, any>;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
export interface LoopStreamVNextNetworkParams {
|
|
407
|
+
message: string;
|
|
408
|
+
threadId?: string;
|
|
409
|
+
resourceId?: string;
|
|
410
|
+
maxIterations?: number;
|
|
411
|
+
runtimeContext?: RuntimeContext | Record<string, any>;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
export interface LoopVNextNetworkResponse {
|
|
415
|
+
status: 'success';
|
|
416
|
+
result: {
|
|
417
|
+
task: string;
|
|
418
|
+
resourceId: string;
|
|
419
|
+
resourceType: 'agent' | 'workflow' | 'none' | 'tool';
|
|
420
|
+
result: string;
|
|
421
|
+
iteration: number;
|
|
422
|
+
isOneOff: boolean;
|
|
423
|
+
prompt: string;
|
|
424
|
+
threadId?: string | undefined;
|
|
425
|
+
threadResourceId?: string | undefined;
|
|
426
|
+
isComplete?: boolean | undefined;
|
|
427
|
+
completionReason?: string | undefined;
|
|
428
|
+
};
|
|
429
|
+
steps: WorkflowResult<any, any>['steps'];
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
export interface McpServerListResponse {
|
|
433
|
+
servers: ServerInfo[];
|
|
434
|
+
next: string | null;
|
|
435
|
+
total_count: number;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
export interface McpToolInfo {
|
|
439
|
+
id: string;
|
|
440
|
+
name: string;
|
|
441
|
+
description?: string;
|
|
442
|
+
inputSchema: string;
|
|
443
|
+
toolType?: MCPToolType;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
export interface McpServerToolListResponse {
|
|
447
|
+
tools: McpToolInfo[];
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
export type ClientScoreRowData = Omit<ScoreRowData, 'createdAt' | 'updatedAt'> & {
|
|
451
|
+
createdAt: string;
|
|
452
|
+
updatedAt: string;
|
|
453
|
+
};
|
|
454
|
+
|
|
455
|
+
// Scores-related types
|
|
456
|
+
export interface GetScoresByRunIdParams {
|
|
457
|
+
runId: string;
|
|
458
|
+
page?: number;
|
|
459
|
+
perPage?: number;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
export interface GetScoresByScorerIdParams {
|
|
463
|
+
scorerId: string;
|
|
464
|
+
entityId?: string;
|
|
465
|
+
entityType?: string;
|
|
466
|
+
page?: number;
|
|
467
|
+
perPage?: number;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
export interface GetScoresByEntityIdParams {
|
|
471
|
+
entityId: string;
|
|
472
|
+
entityType: string;
|
|
473
|
+
page?: number;
|
|
474
|
+
perPage?: number;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
export interface SaveScoreParams {
|
|
478
|
+
score: Omit<ScoreRowData, 'id' | 'createdAt' | 'updatedAt'>;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
export interface GetScoresResponse {
|
|
482
|
+
pagination: {
|
|
483
|
+
total: number;
|
|
484
|
+
page: number;
|
|
485
|
+
perPage: number;
|
|
486
|
+
hasMore: boolean;
|
|
487
|
+
};
|
|
488
|
+
scores: ClientScoreRowData[];
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
export interface SaveScoreResponse {
|
|
492
|
+
score: ClientScoreRowData;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
export type GetScorerResponse = MastraScorerEntry & {
|
|
496
|
+
agentIds: string[];
|
|
497
|
+
workflowIds: string[];
|
|
498
|
+
};
|
|
499
|
+
|
|
500
|
+
export interface GetScorersResponse {
|
|
501
|
+
scorers: Array<GetScorerResponse>;
|
|
502
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RuntimeContext } from '@mastra/core/runtime-context';
|
|
2
|
+
|
|
3
|
+
export function parseClientRuntimeContext(runtimeContext?: RuntimeContext | Record<string, any>) {
|
|
4
|
+
if (runtimeContext) {
|
|
5
|
+
if (runtimeContext instanceof RuntimeContext) {
|
|
6
|
+
return Object.fromEntries(runtimeContext.entries());
|
|
7
|
+
}
|
|
8
|
+
return runtimeContext;
|
|
9
|
+
}
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { isVercelTool } from '@mastra/core/tools/is-vercel-tool';
|
|
2
|
+
import { zodToJsonSchema } from './zod-to-json-schema';
|
|
3
|
+
import type { ToolsInput } from '@mastra/core/agent';
|
|
4
|
+
|
|
5
|
+
export function processClientTools(clientTools: ToolsInput | undefined): ToolsInput | undefined {
|
|
6
|
+
if (!clientTools) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
return Object.fromEntries(
|
|
11
|
+
Object.entries(clientTools).map(([key, value]) => {
|
|
12
|
+
if (isVercelTool(value)) {
|
|
13
|
+
return [
|
|
14
|
+
key,
|
|
15
|
+
{
|
|
16
|
+
...value,
|
|
17
|
+
parameters: value.parameters ? zodToJsonSchema(value.parameters) : undefined,
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
} else {
|
|
21
|
+
return [
|
|
22
|
+
key,
|
|
23
|
+
{
|
|
24
|
+
...value,
|
|
25
|
+
inputSchema: value.inputSchema ? zodToJsonSchema(value.inputSchema) : undefined,
|
|
26
|
+
outputSchema: value.outputSchema ? zodToJsonSchema(value.outputSchema) : undefined,
|
|
27
|
+
},
|
|
28
|
+
];
|
|
29
|
+
}
|
|
30
|
+
}),
|
|
31
|
+
);
|
|
32
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ZodSchema } from 'zod';
|
|
2
|
+
import originalZodToJsonSchema from 'zod-to-json-schema';
|
|
3
|
+
|
|
4
|
+
export function zodToJsonSchema<T extends ZodSchema | any>(zodSchema: T) {
|
|
5
|
+
if (!(zodSchema instanceof ZodSchema)) {
|
|
6
|
+
return zodSchema;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
return originalZodToJsonSchema(zodSchema, { $refStrategy: 'none' });
|
|
10
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
+
import type { MastraMessageV1, MastraMessageV2 } from '@mastra/core';
|
|
3
|
+
import { MastraClient } from './client';
|
|
4
|
+
|
|
5
|
+
describe('V2 Message Format Support', () => {
|
|
6
|
+
let client: MastraClient;
|
|
7
|
+
const agentId = 'test-agent';
|
|
8
|
+
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
global.fetch = vi.fn();
|
|
11
|
+
client = new MastraClient({
|
|
12
|
+
baseUrl: 'http://localhost:3000',
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('should send v1 messages successfully', async () => {
|
|
17
|
+
const v1Messages: MastraMessageV1[] = [
|
|
18
|
+
{
|
|
19
|
+
id: 'msg-v1-1',
|
|
20
|
+
role: 'user',
|
|
21
|
+
content: 'Hello from v1!',
|
|
22
|
+
type: 'text',
|
|
23
|
+
createdAt: new Date(),
|
|
24
|
+
threadId: 'thread-123',
|
|
25
|
+
resourceId: 'resource-123',
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
(global.fetch as any).mockResolvedValueOnce({
|
|
30
|
+
ok: true,
|
|
31
|
+
json: async () => v1Messages,
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
const result = await client.saveMessageToMemory({
|
|
35
|
+
agentId,
|
|
36
|
+
messages: v1Messages,
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
expect(result).toEqual(v1Messages);
|
|
40
|
+
expect(global.fetch).toHaveBeenCalledWith(
|
|
41
|
+
expect.stringContaining('/api/memory/save-messages'),
|
|
42
|
+
expect.objectContaining({
|
|
43
|
+
method: 'POST',
|
|
44
|
+
body: JSON.stringify({ agentId, messages: v1Messages }),
|
|
45
|
+
}),
|
|
46
|
+
);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it('should send v2 messages successfully', async () => {
|
|
50
|
+
const v2Messages: MastraMessageV2[] = [
|
|
51
|
+
{
|
|
52
|
+
id: 'msg-v2-1',
|
|
53
|
+
role: 'assistant',
|
|
54
|
+
createdAt: new Date(),
|
|
55
|
+
threadId: 'thread-123',
|
|
56
|
+
resourceId: 'resource-123',
|
|
57
|
+
content: {
|
|
58
|
+
format: 2,
|
|
59
|
+
parts: [{ type: 'text', text: 'Hello from v2!' }],
|
|
60
|
+
content: 'Hello from v2!',
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
(global.fetch as any).mockResolvedValueOnce({
|
|
66
|
+
ok: true,
|
|
67
|
+
json: async () => v2Messages,
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
const result = await client.saveMessageToMemory({
|
|
71
|
+
agentId,
|
|
72
|
+
messages: v2Messages,
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
expect(result).toEqual(v2Messages);
|
|
76
|
+
expect(global.fetch).toHaveBeenCalledWith(
|
|
77
|
+
expect.stringContaining('/api/memory/save-messages'),
|
|
78
|
+
expect.objectContaining({
|
|
79
|
+
method: 'POST',
|
|
80
|
+
body: JSON.stringify({ agentId, messages: v2Messages }),
|
|
81
|
+
}),
|
|
82
|
+
);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it('should send mixed v1 and v2 messages successfully', async () => {
|
|
86
|
+
const mixedMessages: (MastraMessageV1 | MastraMessageV2)[] = [
|
|
87
|
+
{
|
|
88
|
+
id: 'msg-v1-1',
|
|
89
|
+
role: 'user',
|
|
90
|
+
content: 'Question in v1 format',
|
|
91
|
+
type: 'text',
|
|
92
|
+
createdAt: new Date(),
|
|
93
|
+
threadId: 'thread-123',
|
|
94
|
+
resourceId: 'resource-123',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
id: 'msg-v2-1',
|
|
98
|
+
role: 'assistant',
|
|
99
|
+
createdAt: new Date(),
|
|
100
|
+
threadId: 'thread-123',
|
|
101
|
+
resourceId: 'resource-123',
|
|
102
|
+
content: {
|
|
103
|
+
format: 2,
|
|
104
|
+
parts: [
|
|
105
|
+
{ type: 'text', text: 'Answer in v2 format' },
|
|
106
|
+
{
|
|
107
|
+
type: 'tool-invocation',
|
|
108
|
+
toolInvocation: {
|
|
109
|
+
state: 'result' as const,
|
|
110
|
+
toolCallId: 'call-123',
|
|
111
|
+
toolName: 'calculator',
|
|
112
|
+
args: { a: 1, b: 2 },
|
|
113
|
+
result: '3',
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
toolInvocations: [
|
|
118
|
+
{
|
|
119
|
+
state: 'result' as const,
|
|
120
|
+
toolCallId: 'call-123',
|
|
121
|
+
toolName: 'calculator',
|
|
122
|
+
args: { a: 1, b: 2 },
|
|
123
|
+
result: '3',
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
];
|
|
129
|
+
|
|
130
|
+
(global.fetch as any).mockResolvedValueOnce({
|
|
131
|
+
ok: true,
|
|
132
|
+
json: async () => mixedMessages,
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
const result = await client.saveMessageToMemory({
|
|
136
|
+
agentId,
|
|
137
|
+
messages: mixedMessages,
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
expect(result).toEqual(mixedMessages);
|
|
141
|
+
expect(global.fetch).toHaveBeenCalledWith(
|
|
142
|
+
expect.stringContaining('/api/memory/save-messages'),
|
|
143
|
+
expect.objectContaining({
|
|
144
|
+
method: 'POST',
|
|
145
|
+
body: JSON.stringify({ agentId, messages: mixedMessages }),
|
|
146
|
+
}),
|
|
147
|
+
);
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
it('should handle v2 messages with attachments', async () => {
|
|
151
|
+
const v2MessageWithAttachments: MastraMessageV2 = {
|
|
152
|
+
id: 'msg-v2-att',
|
|
153
|
+
role: 'user',
|
|
154
|
+
createdAt: new Date(),
|
|
155
|
+
threadId: 'thread-123',
|
|
156
|
+
resourceId: 'resource-123',
|
|
157
|
+
content: {
|
|
158
|
+
format: 2,
|
|
159
|
+
parts: [
|
|
160
|
+
{ type: 'text', text: 'Check out this image:' },
|
|
161
|
+
{ type: 'file', data: 'data:image/png;base64,iVBORw0...', mimeType: 'image/png' },
|
|
162
|
+
],
|
|
163
|
+
experimental_attachments: [{ url: 'data:image/png;base64,iVBORw0...', contentType: 'image/png' }],
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
(global.fetch as any).mockResolvedValueOnce({
|
|
168
|
+
ok: true,
|
|
169
|
+
json: async () => [v2MessageWithAttachments],
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
const result = await client.saveMessageToMemory({
|
|
173
|
+
agentId,
|
|
174
|
+
messages: [v2MessageWithAttachments],
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
expect(result).toHaveLength(1);
|
|
178
|
+
expect(result[0]).toEqual(v2MessageWithAttachments);
|
|
179
|
+
});
|
|
180
|
+
});
|
package/tsconfig.json
CHANGED