@mastra/client-js 0.0.0-tsconfig-compile-20250703214351 → 0.0.0-update-scorers-api-20250801170445
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 +401 -2
- package/LICENSE.md +11 -42
- package/README.md +1 -0
- 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 +269 -67
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +4 -1164
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +268 -66
- 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 +12 -8
- package/src/adapters/agui.test.ts +145 -3
- package/src/client.ts +145 -2
- package/src/example.ts +45 -17
- package/src/index.test.ts +402 -6
- package/src/index.ts +1 -0
- package/src/resources/agent.ts +46 -24
- package/src/resources/base.ts +6 -1
- package/src/resources/memory-thread.test.ts +285 -0
- package/src/resources/memory-thread.ts +36 -0
- package/src/resources/network-memory-thread.test.ts +269 -0
- package/src/resources/network-memory-thread.ts +18 -0
- package/src/resources/network.ts +4 -3
- package/src/resources/vNextNetwork.ts +22 -5
- package/src/resources/workflow.ts +17 -3
- package/src/types.ts +90 -10
- package/src/utils/process-client-tools.ts +1 -1
- 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/.turbo/turbo-build.log +0 -19
- package/dist/index.d.cts +0 -1164
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mastra/client-js-integration-tests",
|
|
3
|
+
"private": true,
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"test": "vitest run",
|
|
7
|
+
"test:watch": "vitest"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"@ag-ui/client": "^0.0.27",
|
|
11
|
+
"@mastra/client-js": "workspace:*",
|
|
12
|
+
"@mastra/core": "workspace:*",
|
|
13
|
+
"ai": "^4.3.19"
|
|
14
|
+
},
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"vitest": "^3.2.4"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Mastra } from '@mastra/core';
|
|
2
|
+
import { Agent } from '@mastra/core/agent';
|
|
3
|
+
import { MockLanguageModelV1 } from 'ai/test';
|
|
4
|
+
import { simulateReadableStream } from 'ai';
|
|
5
|
+
|
|
6
|
+
const mockModel = new MockLanguageModelV1({
|
|
7
|
+
doStream: async () => ({
|
|
8
|
+
stream: simulateReadableStream({
|
|
9
|
+
chunks: [
|
|
10
|
+
{ type: 'text-delta', textDelta: 'Hello' },
|
|
11
|
+
{ type: 'text-delta', textDelta: ' from' },
|
|
12
|
+
{ type: 'text-delta', textDelta: ' agent' },
|
|
13
|
+
{
|
|
14
|
+
type: 'finish',
|
|
15
|
+
finishReason: 'stop',
|
|
16
|
+
logprobs: undefined,
|
|
17
|
+
usage: { completionTokens: 3, promptTokens: 10 },
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
}),
|
|
21
|
+
rawCall: { rawPrompt: null, rawSettings: {} },
|
|
22
|
+
}),
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const testAgent = new Agent({
|
|
26
|
+
name: 'test',
|
|
27
|
+
instructions: 'You are a test agent',
|
|
28
|
+
model: mockModel,
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
export const mastra = new Mastra({
|
|
32
|
+
agents: {
|
|
33
|
+
test: testAgent,
|
|
34
|
+
},
|
|
35
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/client-js",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-update-scorers-api-20250801170445",
|
|
4
4
|
"description": "The official TypeScript library for the Mastra Client API",
|
|
5
5
|
"author": "",
|
|
6
6
|
"type": "module",
|
|
@@ -25,33 +25,37 @@
|
|
|
25
25
|
"directory": "client-sdks/client-js"
|
|
26
26
|
},
|
|
27
27
|
"homepage": "https://github.com/mastra-ai/mastra/tree/main/client-sdks/client-js#readme",
|
|
28
|
-
"license": "
|
|
28
|
+
"license": "Apache-2.0",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@ag-ui/client": "^0.0.
|
|
30
|
+
"@ag-ui/client": "^0.0.35",
|
|
31
31
|
"@ai-sdk/ui-utils": "^1.2.11",
|
|
32
|
+
"@lukeed/uuid": "^2.0.1",
|
|
32
33
|
"json-schema": "^0.4.0",
|
|
33
34
|
"rxjs": "7.8.1",
|
|
34
35
|
"zod": "^3.25.67",
|
|
35
36
|
"zod-to-json-schema": "^3.24.5",
|
|
36
|
-
"@mastra/core": "0.0.0-
|
|
37
|
+
"@mastra/core": "0.0.0-update-scorers-api-20250801170445"
|
|
37
38
|
},
|
|
38
39
|
"peerDependencies": {
|
|
39
40
|
"zod": "^3.0.0"
|
|
40
41
|
},
|
|
41
42
|
"devDependencies": {
|
|
42
|
-
"@babel/preset-env": "^7.
|
|
43
|
+
"@babel/preset-env": "^7.28.0",
|
|
43
44
|
"@babel/preset-typescript": "^7.27.1",
|
|
44
45
|
"@tsconfig/recommended": "^1.0.9",
|
|
45
46
|
"@types/json-schema": "^7.0.15",
|
|
46
47
|
"@types/node": "^20.19.0",
|
|
48
|
+
"ai": "^4.3.19",
|
|
47
49
|
"tsup": "^8.5.0",
|
|
48
50
|
"typescript": "^5.8.3",
|
|
49
51
|
"vitest": "^3.2.4",
|
|
50
|
-
"@internal/lint": "0.0.0-
|
|
52
|
+
"@internal/lint": "0.0.0-update-scorers-api-20250801170445"
|
|
51
53
|
},
|
|
52
54
|
"scripts": {
|
|
53
|
-
"build": "tsup
|
|
55
|
+
"build": "tsup --silent --config tsup.config.ts",
|
|
54
56
|
"dev": "pnpm build --watch",
|
|
55
|
-
"test": "vitest run"
|
|
57
|
+
"test": "vitest run && pnpm run test:integration",
|
|
58
|
+
"test:unit": "vitest run",
|
|
59
|
+
"test:integration": "cd integration-tests && pnpm test"
|
|
56
60
|
}
|
|
57
61
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import type { Message } from '@ag-ui/client';
|
|
2
|
-
import { describe, it, expect } from 'vitest';
|
|
3
|
-
import { generateUUID, convertMessagesToMastraMessages } from './agui';
|
|
1
|
+
import type { Message, BaseEvent } from '@ag-ui/client';
|
|
2
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
3
|
+
import { generateUUID, convertMessagesToMastraMessages, AGUIAdapter } from './agui';
|
|
4
|
+
import { Agent } from '@mastra/core/agent';
|
|
5
|
+
import { MockLanguageModelV1 } from 'ai/test';
|
|
6
|
+
import { simulateReadableStream } from 'ai';
|
|
4
7
|
|
|
5
8
|
describe('generateUUID', () => {
|
|
6
9
|
it('should generate a valid UUID v4 string', () => {
|
|
@@ -178,3 +181,142 @@ describe('convertMessagesToMastraMessages', () => {
|
|
|
178
181
|
expect(result[3].role).toBe('assistant');
|
|
179
182
|
});
|
|
180
183
|
});
|
|
184
|
+
|
|
185
|
+
describe('AGUIAdapter', () => {
|
|
186
|
+
it('should correctly pass parameters to agent stream method', async () => {
|
|
187
|
+
// Create a real agent with MockLanguageModelV1
|
|
188
|
+
const mockModel = new MockLanguageModelV1({
|
|
189
|
+
doStream: async () => ({
|
|
190
|
+
stream: simulateReadableStream({
|
|
191
|
+
chunks: [
|
|
192
|
+
{ type: 'text-delta', textDelta: 'Hello' },
|
|
193
|
+
{ type: 'text-delta', textDelta: ' from' },
|
|
194
|
+
{ type: 'text-delta', textDelta: ' agent' },
|
|
195
|
+
{
|
|
196
|
+
type: 'finish',
|
|
197
|
+
finishReason: 'stop',
|
|
198
|
+
logprobs: undefined,
|
|
199
|
+
usage: { completionTokens: 3, promptTokens: 10 },
|
|
200
|
+
},
|
|
201
|
+
],
|
|
202
|
+
}),
|
|
203
|
+
rawCall: { rawPrompt: null, rawSettings: {} },
|
|
204
|
+
}),
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
const agent = new Agent({
|
|
208
|
+
name: 'Test Agent',
|
|
209
|
+
instructions: 'You are a test agent',
|
|
210
|
+
model: mockModel,
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
// Create a mock client agent that simulates the expected behavior
|
|
214
|
+
const clientAgent = {
|
|
215
|
+
stream: vi.fn().mockImplementation(async (params: any) => {
|
|
216
|
+
// Verify the parameters are passed correctly
|
|
217
|
+
expect(params).toHaveProperty('messages');
|
|
218
|
+
expect(params).toHaveProperty('threadId');
|
|
219
|
+
expect(params).toHaveProperty('resourceId');
|
|
220
|
+
expect(params).toHaveProperty('runId');
|
|
221
|
+
expect(params).toHaveProperty('clientTools');
|
|
222
|
+
|
|
223
|
+
// Verify that messages array is passed, not the entire request object
|
|
224
|
+
expect(Array.isArray(params.messages)).toBe(true);
|
|
225
|
+
expect(params.messages[0]).toHaveProperty('role');
|
|
226
|
+
expect(params.messages[0]).toHaveProperty('content');
|
|
227
|
+
|
|
228
|
+
// Return a mock processDataStream that mimics the expected behavior
|
|
229
|
+
return {
|
|
230
|
+
processDataStream: vi.fn().mockImplementation(async ({ onTextPart, onFinishMessagePart }: any) => {
|
|
231
|
+
// Simulate streaming text
|
|
232
|
+
if (onTextPart) {
|
|
233
|
+
onTextPart('Hello from agent');
|
|
234
|
+
}
|
|
235
|
+
if (onFinishMessagePart) {
|
|
236
|
+
onFinishMessagePart();
|
|
237
|
+
}
|
|
238
|
+
return Promise.resolve();
|
|
239
|
+
}),
|
|
240
|
+
};
|
|
241
|
+
}),
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
const adapter = new AGUIAdapter({
|
|
245
|
+
agent: clientAgent as any,
|
|
246
|
+
agentId: 'test',
|
|
247
|
+
resourceId: 'testAgent',
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
const input = {
|
|
251
|
+
threadId: 'test-thread-id',
|
|
252
|
+
runId: 'test-run-id',
|
|
253
|
+
messages: [
|
|
254
|
+
{
|
|
255
|
+
id: '1',
|
|
256
|
+
role: 'user' as const,
|
|
257
|
+
content: 'Hello',
|
|
258
|
+
},
|
|
259
|
+
],
|
|
260
|
+
tools: [],
|
|
261
|
+
context: [],
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
const observable = adapter['run'](input);
|
|
265
|
+
const events: BaseEvent[] = [];
|
|
266
|
+
|
|
267
|
+
await new Promise<void>((resolve, reject) => {
|
|
268
|
+
observable.subscribe({
|
|
269
|
+
next: (event: BaseEvent) => events.push(event),
|
|
270
|
+
complete: () => resolve(),
|
|
271
|
+
error: (error: any) => reject(error),
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
// Verify we received the expected events
|
|
276
|
+
expect(events).toHaveLength(5); // RUN_STARTED, TEXT_MESSAGE_START, TEXT_MESSAGE_CONTENT, TEXT_MESSAGE_END, RUN_FINISHED
|
|
277
|
+
expect(events[0].type).toBe('RUN_STARTED');
|
|
278
|
+
expect(events[1].type).toBe('TEXT_MESSAGE_START');
|
|
279
|
+
expect(events[2].type).toBe('TEXT_MESSAGE_CONTENT');
|
|
280
|
+
expect(events[3].type).toBe('TEXT_MESSAGE_END');
|
|
281
|
+
expect(events[4].type).toBe('RUN_FINISHED');
|
|
282
|
+
|
|
283
|
+
// Verify the stream method was called with the correct parameters
|
|
284
|
+
expect(clientAgent.stream).toHaveBeenCalledWith({
|
|
285
|
+
threadId: 'test-thread-id',
|
|
286
|
+
resourceId: 'testAgent',
|
|
287
|
+
runId: 'test-run-id',
|
|
288
|
+
messages: [{ role: 'user', content: 'Hello' }],
|
|
289
|
+
clientTools: {},
|
|
290
|
+
});
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
it('should handle messages without role property in request objects', async () => {
|
|
294
|
+
// This test demonstrates that request objects without role property
|
|
295
|
+
// would cause validation errors if passed directly to MessageList
|
|
296
|
+
const requestObject = {
|
|
297
|
+
threadId: 'test-thread-id',
|
|
298
|
+
resourceId: 'testAgent',
|
|
299
|
+
runId: 'test-run-id',
|
|
300
|
+
messages: [
|
|
301
|
+
{
|
|
302
|
+
role: 'user',
|
|
303
|
+
content: 'Hello',
|
|
304
|
+
},
|
|
305
|
+
],
|
|
306
|
+
clientTools: {},
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
// Request objects don't have role property
|
|
310
|
+
expect('role' in requestObject).toBe(false);
|
|
311
|
+
expect('messages' in requestObject).toBe(true);
|
|
312
|
+
expect('content' in requestObject).toBe(false);
|
|
313
|
+
expect('parts' in requestObject).toBe(false);
|
|
314
|
+
|
|
315
|
+
// This structure would cause validation errors if treated as a message
|
|
316
|
+
// because it lacks required message properties (role, content/parts)
|
|
317
|
+
const hasValidMessageStructure =
|
|
318
|
+
'role' in requestObject && ('content' in requestObject || 'parts' in requestObject);
|
|
319
|
+
|
|
320
|
+
expect(hasValidMessageStructure).toBe(false);
|
|
321
|
+
});
|
|
322
|
+
});
|
package/src/client.ts
CHANGED
|
@@ -13,6 +13,8 @@ import {
|
|
|
13
13
|
MCPTool,
|
|
14
14
|
LegacyWorkflow,
|
|
15
15
|
} from './resources';
|
|
16
|
+
import { NetworkMemoryThread } from './resources/network-memory-thread';
|
|
17
|
+
import { VNextNetwork } from './resources/vNextNetwork';
|
|
16
18
|
import type {
|
|
17
19
|
ClientOptions,
|
|
18
20
|
CreateMemoryThreadParams,
|
|
@@ -37,9 +39,14 @@ import type {
|
|
|
37
39
|
GetNetworkMemoryThreadParams,
|
|
38
40
|
CreateNetworkMemoryThreadParams,
|
|
39
41
|
SaveNetworkMessageToMemoryParams,
|
|
42
|
+
GetScorerResponse,
|
|
43
|
+
GetScoresByScorerIdParams,
|
|
44
|
+
GetScoresResponse,
|
|
45
|
+
GetScoresByRunIdParams,
|
|
46
|
+
GetScoresByEntityIdParams,
|
|
47
|
+
SaveScoreParams,
|
|
48
|
+
SaveScoreResponse,
|
|
40
49
|
} from './types';
|
|
41
|
-
import { VNextNetwork } from './resources/vNextNetwork';
|
|
42
|
-
import { NetworkMemoryThread } from './resources/network-memory-thread';
|
|
43
50
|
|
|
44
51
|
export class MastraClient extends BaseResource {
|
|
45
52
|
constructor(options: ClientOptions) {
|
|
@@ -477,4 +484,140 @@ export class MastraClient extends BaseResource {
|
|
|
477
484
|
public getA2A(agentId: string) {
|
|
478
485
|
return new A2A(this.options, agentId);
|
|
479
486
|
}
|
|
487
|
+
|
|
488
|
+
/**
|
|
489
|
+
* Retrieves the working memory for a specific thread (optionally resource-scoped).
|
|
490
|
+
* @param agentId - ID of the agent.
|
|
491
|
+
* @param threadId - ID of the thread.
|
|
492
|
+
* @param resourceId - Optional ID of the resource.
|
|
493
|
+
* @returns Working memory for the specified thread or resource.
|
|
494
|
+
*/
|
|
495
|
+
public getWorkingMemory({
|
|
496
|
+
agentId,
|
|
497
|
+
threadId,
|
|
498
|
+
resourceId,
|
|
499
|
+
}: {
|
|
500
|
+
agentId: string;
|
|
501
|
+
threadId: string;
|
|
502
|
+
resourceId?: string;
|
|
503
|
+
}) {
|
|
504
|
+
return this.request(`/api/memory/threads/${threadId}/working-memory?agentId=${agentId}&resourceId=${resourceId}`);
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
/**
|
|
508
|
+
* Updates the working memory for a specific thread (optionally resource-scoped).
|
|
509
|
+
* @param agentId - ID of the agent.
|
|
510
|
+
* @param threadId - ID of the thread.
|
|
511
|
+
* @param workingMemory - The new working memory content.
|
|
512
|
+
* @param resourceId - Optional ID of the resource.
|
|
513
|
+
*/
|
|
514
|
+
public updateWorkingMemory({
|
|
515
|
+
agentId,
|
|
516
|
+
threadId,
|
|
517
|
+
workingMemory,
|
|
518
|
+
resourceId,
|
|
519
|
+
}: {
|
|
520
|
+
agentId: string;
|
|
521
|
+
threadId: string;
|
|
522
|
+
workingMemory: string;
|
|
523
|
+
resourceId?: string;
|
|
524
|
+
}) {
|
|
525
|
+
return this.request(`/api/memory/threads/${threadId}/working-memory?agentId=${agentId}`, {
|
|
526
|
+
method: 'POST',
|
|
527
|
+
body: {
|
|
528
|
+
workingMemory,
|
|
529
|
+
resourceId,
|
|
530
|
+
},
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
/**
|
|
535
|
+
* Retrieves all available scorers
|
|
536
|
+
* @returns Promise containing list of available scorers
|
|
537
|
+
*/
|
|
538
|
+
public getScorers(): Promise<Record<string, GetScorerResponse>> {
|
|
539
|
+
return this.request('/api/scores/scorers');
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
/**
|
|
543
|
+
* Retrieves a scorer by ID
|
|
544
|
+
* @param scorerId - ID of the scorer to retrieve
|
|
545
|
+
* @returns Promise containing the scorer
|
|
546
|
+
*/
|
|
547
|
+
public getScorer(scorerId: string): Promise<GetScorerResponse> {
|
|
548
|
+
return this.request(`/api/scores/scorers/${scorerId}`);
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
public getScoresByScorerId(params: GetScoresByScorerIdParams): Promise<GetScoresResponse> {
|
|
552
|
+
const { page, perPage, scorerId, entityId, entityType } = params;
|
|
553
|
+
const searchParams = new URLSearchParams();
|
|
554
|
+
|
|
555
|
+
if (entityId) {
|
|
556
|
+
searchParams.set('entityId', entityId);
|
|
557
|
+
}
|
|
558
|
+
if (entityType) {
|
|
559
|
+
searchParams.set('entityType', entityType);
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
if (page !== undefined) {
|
|
563
|
+
searchParams.set('page', String(page));
|
|
564
|
+
}
|
|
565
|
+
if (perPage !== undefined) {
|
|
566
|
+
searchParams.set('perPage', String(perPage));
|
|
567
|
+
}
|
|
568
|
+
const queryString = searchParams.toString();
|
|
569
|
+
return this.request(`/api/scores/scorer/${scorerId}${queryString ? `?${queryString}` : ''}`);
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
/**
|
|
573
|
+
* Retrieves scores by run ID
|
|
574
|
+
* @param params - Parameters containing run ID and pagination options
|
|
575
|
+
* @returns Promise containing scores and pagination info
|
|
576
|
+
*/
|
|
577
|
+
public getScoresByRunId(params: GetScoresByRunIdParams): Promise<GetScoresResponse> {
|
|
578
|
+
const { runId, page, perPage } = params;
|
|
579
|
+
const searchParams = new URLSearchParams();
|
|
580
|
+
|
|
581
|
+
if (page !== undefined) {
|
|
582
|
+
searchParams.set('page', String(page));
|
|
583
|
+
}
|
|
584
|
+
if (perPage !== undefined) {
|
|
585
|
+
searchParams.set('perPage', String(perPage));
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
const queryString = searchParams.toString();
|
|
589
|
+
return this.request(`/api/scores/run/${runId}${queryString ? `?${queryString}` : ''}`);
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
/**
|
|
593
|
+
* Retrieves scores by entity ID and type
|
|
594
|
+
* @param params - Parameters containing entity ID, type, and pagination options
|
|
595
|
+
* @returns Promise containing scores and pagination info
|
|
596
|
+
*/
|
|
597
|
+
public getScoresByEntityId(params: GetScoresByEntityIdParams): Promise<GetScoresResponse> {
|
|
598
|
+
const { entityId, entityType, page, perPage } = params;
|
|
599
|
+
const searchParams = new URLSearchParams();
|
|
600
|
+
|
|
601
|
+
if (page !== undefined) {
|
|
602
|
+
searchParams.set('page', String(page));
|
|
603
|
+
}
|
|
604
|
+
if (perPage !== undefined) {
|
|
605
|
+
searchParams.set('perPage', String(perPage));
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
const queryString = searchParams.toString();
|
|
609
|
+
return this.request(`/api/scores/entity/${entityType}/${entityId}${queryString ? `?${queryString}` : ''}`);
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
/**
|
|
613
|
+
* Saves a score
|
|
614
|
+
* @param params - Parameters containing the score data to save
|
|
615
|
+
* @returns Promise containing the saved score
|
|
616
|
+
*/
|
|
617
|
+
public saveScore(params: SaveScoreParams): Promise<SaveScoreResponse> {
|
|
618
|
+
return this.request('/api/scores', {
|
|
619
|
+
method: 'POST',
|
|
620
|
+
body: params,
|
|
621
|
+
});
|
|
622
|
+
}
|
|
480
623
|
}
|
package/src/example.ts
CHANGED
|
@@ -14,25 +14,53 @@ import z from 'zod';
|
|
|
14
14
|
const agent = client.getAgent('weatherAgent');
|
|
15
15
|
const response = await agent.stream({
|
|
16
16
|
messages: 'what is the weather in new york?',
|
|
17
|
+
output: z.object({
|
|
18
|
+
weather: z.string(),
|
|
19
|
+
temperature: z.number(),
|
|
20
|
+
humidity: z.number(),
|
|
21
|
+
windSpeed: z.number(),
|
|
22
|
+
windDirection: z.string(),
|
|
23
|
+
windGust: z.number(),
|
|
24
|
+
windChill: z.number(),
|
|
25
|
+
}),
|
|
17
26
|
});
|
|
18
27
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
// Process data stream - unstructured output
|
|
29
|
+
|
|
30
|
+
// response.processDataStream({
|
|
31
|
+
// onTextPart: text => {
|
|
32
|
+
// process.stdout.write(text);
|
|
33
|
+
// },
|
|
34
|
+
// onFilePart: file => {
|
|
35
|
+
// console.log(file);
|
|
36
|
+
// },
|
|
37
|
+
// onDataPart: data => {
|
|
38
|
+
// console.log(data);
|
|
39
|
+
// },
|
|
40
|
+
// onErrorPart: error => {
|
|
41
|
+
// console.error(error);
|
|
42
|
+
// },
|
|
43
|
+
// onToolCallPart(streamPart) {
|
|
44
|
+
// console.log(streamPart);
|
|
45
|
+
// },
|
|
46
|
+
// });
|
|
47
|
+
|
|
48
|
+
// Process text stream - structured output
|
|
49
|
+
|
|
50
|
+
// response.processTextStream({
|
|
51
|
+
// onTextPart: text => {
|
|
52
|
+
// process.stdout.write(text);
|
|
53
|
+
// },
|
|
54
|
+
// });
|
|
55
|
+
|
|
56
|
+
// read the response body directly
|
|
57
|
+
|
|
58
|
+
// const reader = response.body!.getReader();
|
|
59
|
+
// while (true) {
|
|
60
|
+
// const { done, value } = await reader.read();
|
|
61
|
+
// if (done) break;
|
|
62
|
+
// console.log(new TextDecoder().decode(value));
|
|
63
|
+
// }
|
|
36
64
|
} catch (error) {
|
|
37
65
|
console.error(error);
|
|
38
66
|
}
|