Skip to content

Commit 1e341aa

Browse files
committed
fix: request / response types
1 parent 61542a0 commit 1e341aa

File tree

3 files changed

+94
-49
lines changed

3 files changed

+94
-49
lines changed

src/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,13 @@ export {
4444
type ListFilesFilters,
4545
type UpdateFileRequest,
4646
type FilePathOrFileObject,
47+
type MaestroRunRequest,
48+
type MaestroRunResponse,
49+
type MaestroRunRequestOptions,
4750
} from './types';
4851
export { APIClient } from './APIClient';
4952
export { AI21Error, MissingAPIKeyError } from './errors';
5053
export { Stream } from './streaming';
5154
export { APIResource } from './APIResource';
52-
export { Chat, Completions, ConversationalRag, Library } from './resources';
55+
export { Chat, Completions, ConversationalRag, Library, Maestro } from './resources';
5356
export { isBrowser, isNode } from './runtime';

src/types/maestro/MaestroRunResponse.ts

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,35 @@
1-
import { FileSearchTool, WebSearchTool } from './MaestroTools';
2-
31
type MaestroRunResponseStatus = 'completed' | 'failed' | 'in_progress' | 'requires_action';
42

3+
export type MaestroRunRequirement = {
4+
name: string;
5+
description: string;
6+
score: number;
7+
reason: string;
8+
};
9+
510
type MaestroRunRequirementResult = {
611
score: number;
712
finish_reason: string | null;
8-
requirements: {
9-
name: string | null;
10-
description: string | null;
11-
score: number | null;
12-
reason: string | null;
13-
};
13+
requirements: MaestroRunRequirement[];
14+
};
15+
16+
type FileSearchResult = {
17+
text?: string;
18+
file_id: string;
19+
file_name: string;
20+
score: number;
21+
order: number;
22+
};
23+
24+
type WebSearchResult = {
25+
url: string;
26+
score: number;
27+
text: string;
1428
};
1529

1630
type DataSources = {
17-
file_search?: FileSearchTool;
18-
web_search?: WebSearchTool;
31+
file_search?: FileSearchResult[];
32+
web_search?: WebSearchResult[];
1933
};
2034

2135
export interface MaestroRunResponse {
@@ -35,5 +49,5 @@ export interface MaestroRunResponse {
3549
/*
3650
Detailed results for each requirement.
3751
*/
38-
requirements_result: MaestroRunRequirementResult[];
52+
requirements_result: MaestroRunRequirementResult;
3953
}

tests/unittests/resources/maestro/runs.test.ts

Lines changed: 65 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,19 @@ describe('Maestro Runs', () => {
3030
jest.useRealTimers();
3131
});
3232

33+
const defaultRequirementsResult = {
34+
score: 0,
35+
finish_reason: null,
36+
requirements: [
37+
{
38+
name: 'accuracy',
39+
description: 'Information should be accurate and up-to-date',
40+
score: 0,
41+
reason: 'All sources are recent and credible',
42+
},
43+
],
44+
};
45+
3346
describe('create', () => {
3447
it('should create a maestro run with minimal required fields', async () => {
3548
const body: Models.MaestroRunRequest = {
@@ -41,7 +54,7 @@ describe('Maestro Runs', () => {
4154
status: 'in_progress',
4255
result: null,
4356
data_sources: {},
44-
requirements_result: [],
57+
requirements_result: defaultRequirementsResult,
4558
};
4659

4760
mockClient.post.mockResolvedValue(expectedResponse);
@@ -105,28 +118,40 @@ describe('Maestro Runs', () => {
105118
status: 'in_progress',
106119
result: null,
107120
data_sources: {
108-
file_search: {
109-
type: 'file_search',
110-
file_ids: ['file_123', 'file_456'],
111-
labels: ['ai', 'ml', 'nlp'],
112-
},
113-
web_search: {
114-
type: 'web_search',
115-
urls: ['https://arxiv.org', 'https://openai.com'],
116-
},
121+
file_search: [
122+
{
123+
file_id: 'file_123',
124+
file_name: 'file_123.txt',
125+
score: 0.92,
126+
order: 1,
127+
},
128+
{
129+
file_id: 'file_456',
130+
file_name: 'file_456.txt',
131+
score: 0.92,
132+
order: 2,
133+
},
134+
],
135+
web_search: [
136+
{
137+
url: 'https://arxiv.org',
138+
score: 0.92,
139+
text: 'Here is a comprehensive summary of the latest AI developments...',
140+
},
141+
],
117142
},
118-
requirements_result: [
119-
{
120-
score: 0.95,
121-
finish_reason: 'completed',
122-
requirements: {
143+
requirements_result: {
144+
score: 0.95,
145+
finish_reason: 'completed',
146+
requirements: [
147+
{
123148
name: 'accuracy',
124149
description: 'Information should be accurate and up-to-date',
125150
score: 0.95,
126151
reason: 'All sources are recent and credible',
127152
},
128-
},
129-
],
153+
],
154+
},
130155
};
131156

132157
mockClient.post.mockResolvedValue(expectedResponse);
@@ -157,23 +182,26 @@ describe('Maestro Runs', () => {
157182
status: 'completed',
158183
result: 'Here is a comprehensive summary of the latest AI developments...',
159184
data_sources: {
160-
web_search: {
161-
type: 'web_search',
162-
urls: ['https://arxiv.org', 'https://openai.com'],
163-
},
185+
web_search: [
186+
{
187+
score: 0.92,
188+
text: 'Here is a comprehensive summary of the latest AI developments...',
189+
url: 'https://arxiv.org',
190+
},
191+
],
164192
},
165-
requirements_result: [
166-
{
167-
score: 0.92,
168-
finish_reason: 'completed',
169-
requirements: {
193+
requirements_result: {
194+
score: 0.92,
195+
finish_reason: 'completed',
196+
requirements: [
197+
{
170198
name: 'accuracy',
171199
description: 'Information should be accurate and up-to-date',
172200
score: 0.92,
173201
reason: 'Sources are recent but some claims need verification',
174202
},
175-
},
176-
],
203+
],
204+
},
177205
};
178206

179207
mockClient.get.mockResolvedValue(expectedResponse);
@@ -205,15 +233,15 @@ describe('Maestro Runs', () => {
205233
status: 'in_progress',
206234
result: null,
207235
data_sources: {},
208-
requirements_result: [],
236+
requirements_result: defaultRequirementsResult,
209237
};
210238

211239
const completedResponse: Models.MaestroRunResponse = {
212240
id: 'run_123',
213241
status: 'completed',
214242
result: 'Task completed successfully',
215243
data_sources: {},
216-
requirements_result: [],
244+
requirements_result: defaultRequirementsResult,
217245
};
218246

219247
mockClient.post.mockResolvedValue(createResponse);
@@ -241,15 +269,15 @@ describe('Maestro Runs', () => {
241269
status: 'in_progress',
242270
result: null,
243271
data_sources: {},
244-
requirements_result: [],
272+
requirements_result: defaultRequirementsResult,
245273
};
246274

247275
const completedResponse: Models.MaestroRunResponse = {
248276
id: 'run_123',
249277
status: 'completed',
250278
result: 'Task completed successfully',
251279
data_sources: {},
252-
requirements_result: [],
280+
requirements_result: defaultRequirementsResult,
253281
};
254282

255283
mockClient.post.mockResolvedValue(createResponse);
@@ -277,15 +305,15 @@ describe('Maestro Runs', () => {
277305
status: 'in_progress',
278306
result: null,
279307
data_sources: {},
280-
requirements_result: [],
308+
requirements_result: defaultRequirementsResult,
281309
};
282310

283311
const completedResponse: Models.MaestroRunResponse = {
284312
id: 'run_123',
285313
status: 'completed',
286314
result: 'Task completed successfully',
287315
data_sources: {},
288-
requirements_result: [],
316+
requirements_result: defaultRequirementsResult,
289317
};
290318

291319
mockClient.post.mockResolvedValue(createResponse);
@@ -319,7 +347,7 @@ describe('Maestro Runs', () => {
319347
status: 'in_progress',
320348
result: null,
321349
data_sources: {},
322-
requirements_result: [],
350+
requirements_result: defaultRequirementsResult,
323351
};
324352

325353
const error = new AI21Error();
@@ -341,7 +369,7 @@ describe('Maestro Runs', () => {
341369
status: 'completed',
342370
result: 'Response to string input',
343371
data_sources: {},
344-
requirements_result: [],
372+
requirements_result: defaultRequirementsResult,
345373
};
346374

347375
mockClient.post.mockResolvedValue(expectedResponse);
@@ -365,7 +393,7 @@ describe('Maestro Runs', () => {
365393
status: 'completed',
366394
result: 'Response to array input',
367395
data_sources: {},
368-
requirements_result: [],
396+
requirements_result: defaultRequirementsResult,
369397
};
370398

371399
mockClient.post.mockResolvedValue(expectedResponse);

0 commit comments

Comments
 (0)