Skip to content

Commit 5ce50cf

Browse files
committed
feat: Support AI Agent API (box/box-codegen#531)
1 parent 4d6b488 commit 5ce50cf

File tree

4 files changed

+169
-30
lines changed

4 files changed

+169
-30
lines changed

.codegen.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "engineHash": "c2b0bec", "specHash": "d36b9f0", "version": "1.2.0" }
1+
{ "engineHash": "f6b5758", "specHash": "d36b9f0", "version": "1.2.0" }

docs/ai.md

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -101,18 +101,25 @@ A successful response including the answer from the LLM.
101101

102102
Get the AI agent default config
103103

104-
This operation is performed by calling function `getAiAgentDefault`.
104+
This operation is performed by calling function `getAiAgentDefaultConfig`.
105105

106106
See the endpoint docs at
107107
[API Reference](https://developer.box.com/reference/get-ai-agent-default/).
108108

109-
_Currently we don't have an example for calling `getAiAgentDefault` in integration tests_
109+
<!-- sample get_ai_agent_default -->
110+
111+
```ts
112+
await client.ai.getAiAgentDefaultConfig({
113+
mode: 'text_gen' as GetAiAgentDefaultConfigQueryParamsModeField,
114+
language: 'en-US',
115+
} satisfies GetAiAgentDefaultConfigQueryParams);
116+
```
110117

111118
### Arguments
112119

113-
- queryParams `GetAiAgentDefaultQueryParams`
114-
- Query parameters of getAiAgentDefault method
115-
- optionalsInput `GetAiAgentDefaultOptionalsInput`
120+
- queryParams `GetAiAgentDefaultConfigQueryParams`
121+
- Query parameters of getAiAgentDefaultConfig method
122+
- optionalsInput `GetAiAgentDefaultConfigOptionalsInput`
116123
-
117124

118125
### Returns

src/managers/ai.generated.ts

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,18 @@ export interface CreateAiTextGenOptionalsInput {
6969
readonly headers?: CreateAiTextGenHeaders;
7070
readonly cancellationToken?: undefined | CancellationToken;
7171
}
72-
export class GetAiAgentDefaultOptionals {
73-
readonly headers: GetAiAgentDefaultHeaders = new GetAiAgentDefaultHeaders({});
72+
export class GetAiAgentDefaultConfigOptionals {
73+
readonly headers: GetAiAgentDefaultConfigHeaders =
74+
new GetAiAgentDefaultConfigHeaders({});
7475
readonly cancellationToken?: CancellationToken = void 0;
7576
constructor(
76-
fields: Omit<GetAiAgentDefaultOptionals, 'headers' | 'cancellationToken'> &
77-
Partial<Pick<GetAiAgentDefaultOptionals, 'headers' | 'cancellationToken'>>
77+
fields: Omit<
78+
GetAiAgentDefaultConfigOptionals,
79+
'headers' | 'cancellationToken'
80+
> &
81+
Partial<
82+
Pick<GetAiAgentDefaultConfigOptionals, 'headers' | 'cancellationToken'>
83+
>
7884
) {
7985
if (fields.headers) {
8086
this.headers = fields.headers;
@@ -84,8 +90,8 @@ export class GetAiAgentDefaultOptionals {
8490
}
8591
}
8692
}
87-
export interface GetAiAgentDefaultOptionalsInput {
88-
readonly headers?: GetAiAgentDefaultHeaders;
93+
export interface GetAiAgentDefaultConfigOptionalsInput {
94+
readonly headers?: GetAiAgentDefaultConfigHeaders;
8995
readonly cancellationToken?: undefined | CancellationToken;
9096
}
9197
export class CreateAiAskHeaders {
@@ -128,26 +134,26 @@ export interface CreateAiTextGenHeadersInput {
128134
readonly [key: string]: undefined | string;
129135
};
130136
}
131-
export type GetAiAgentDefaultQueryParamsModeField = 'ask' | 'text_gen';
132-
export interface GetAiAgentDefaultQueryParams {
133-
readonly mode: GetAiAgentDefaultQueryParamsModeField;
137+
export type GetAiAgentDefaultConfigQueryParamsModeField = 'ask' | 'text_gen';
138+
export interface GetAiAgentDefaultConfigQueryParams {
139+
readonly mode: GetAiAgentDefaultConfigQueryParamsModeField;
134140
readonly language?: string;
135141
readonly model?: string;
136142
}
137-
export class GetAiAgentDefaultHeaders {
143+
export class GetAiAgentDefaultConfigHeaders {
138144
readonly extraHeaders?: {
139145
readonly [key: string]: undefined | string;
140146
} = {};
141147
constructor(
142-
fields: Omit<GetAiAgentDefaultHeaders, 'extraHeaders'> &
143-
Partial<Pick<GetAiAgentDefaultHeaders, 'extraHeaders'>>
148+
fields: Omit<GetAiAgentDefaultConfigHeaders, 'extraHeaders'> &
149+
Partial<Pick<GetAiAgentDefaultConfigHeaders, 'extraHeaders'>>
144150
) {
145151
if (fields.extraHeaders) {
146152
this.extraHeaders = fields.extraHeaders;
147153
}
148154
}
149155
}
150-
export interface GetAiAgentDefaultHeadersInput {
156+
export interface GetAiAgentDefaultConfigHeadersInput {
151157
readonly extraHeaders?:
152158
| undefined
153159
| {
@@ -160,7 +166,10 @@ export class AiManager {
160166
constructor(
161167
fields: Omit<
162168
AiManager,
163-
'networkSession' | 'createAiAsk' | 'createAiTextGen' | 'getAiAgentDefault'
169+
| 'networkSession'
170+
| 'createAiAsk'
171+
| 'createAiTextGen'
172+
| 'getAiAgentDefaultConfig'
164173
> &
165174
Partial<Pick<AiManager, 'networkSession'>>
166175
) {
@@ -230,12 +239,12 @@ export class AiManager {
230239
)) as FetchResponse;
231240
return deserializeAiResponse(response.data);
232241
}
233-
async getAiAgentDefault(
234-
queryParams: GetAiAgentDefaultQueryParams,
235-
optionalsInput: GetAiAgentDefaultOptionalsInput = {}
242+
async getAiAgentDefaultConfig(
243+
queryParams: GetAiAgentDefaultConfigQueryParams,
244+
optionalsInput: GetAiAgentDefaultConfigOptionalsInput = {}
236245
): Promise<AiAgentAskOrAiAgentTextGen> {
237-
const optionals: GetAiAgentDefaultOptionals =
238-
new GetAiAgentDefaultOptionals({
246+
const optionals: GetAiAgentDefaultConfigOptionals =
247+
new GetAiAgentDefaultConfigOptionals({
239248
headers: optionalsInput.headers,
240249
cancellationToken: optionalsInput.cancellationToken,
241250
});
@@ -273,21 +282,21 @@ export interface AiManagerInput {
273282
readonly auth?: Authentication;
274283
readonly networkSession?: NetworkSession;
275284
}
276-
export function serializeGetAiAgentDefaultQueryParamsModeField(
277-
val: GetAiAgentDefaultQueryParamsModeField
285+
export function serializeGetAiAgentDefaultConfigQueryParamsModeField(
286+
val: GetAiAgentDefaultConfigQueryParamsModeField
278287
): SerializedData {
279288
return val;
280289
}
281-
export function deserializeGetAiAgentDefaultQueryParamsModeField(
290+
export function deserializeGetAiAgentDefaultConfigQueryParamsModeField(
282291
val: SerializedData
283-
): GetAiAgentDefaultQueryParamsModeField {
292+
): GetAiAgentDefaultConfigQueryParamsModeField {
284293
if (val == 'ask') {
285294
return val;
286295
}
287296
if (val == 'text_gen') {
288297
return val;
289298
}
290299
throw new BoxSdkError({
291-
message: "Can't deserialize GetAiAgentDefaultQueryParamsModeField",
300+
message: "Can't deserialize GetAiAgentDefaultConfigQueryParamsModeField",
292301
});
293302
}

src/test/ai.generated.test.ts

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ import { serializeAiTextGenItemsTypeField } from '../schemas/aiTextGen.generated
1818
import { deserializeAiTextGenItemsTypeField } from '../schemas/aiTextGen.generated.js';
1919
import { serializeAiTextGenDialogueHistoryField } from '../schemas/aiTextGen.generated.js';
2020
import { deserializeAiTextGenDialogueHistoryField } from '../schemas/aiTextGen.generated.js';
21+
import { serializeAiAgentAskOrAiAgentTextGen } from '../schemas/aiAgentAskOrAiAgentTextGen.generated.js';
22+
import { deserializeAiAgentAskOrAiAgentTextGen } from '../schemas/aiAgentAskOrAiAgentTextGen.generated.js';
23+
import { serializeGetAiAgentDefaultConfigQueryParamsModeField } from '../managers/ai.generated.js';
24+
import { deserializeGetAiAgentDefaultConfigQueryParamsModeField } from '../managers/ai.generated.js';
25+
import { serializeAiAgentAsk } from '../schemas/aiAgentAsk.generated.js';
26+
import { deserializeAiAgentAsk } from '../schemas/aiAgentAsk.generated.js';
27+
import { serializeAiAgentTextGen } from '../schemas/aiAgentTextGen.generated.js';
28+
import { deserializeAiAgentTextGen } from '../schemas/aiAgentTextGen.generated.js';
2129
import { BoxClient } from '../client.generated.js';
2230
import { FileFull } from '../schemas/fileFull.generated.js';
2331
import { AiResponse } from '../schemas/aiResponse.generated.js';
@@ -29,12 +37,17 @@ import { AiTextGen } from '../schemas/aiTextGen.generated.js';
2937
import { AiTextGenItemsField } from '../schemas/aiTextGen.generated.js';
3038
import { AiTextGenItemsTypeField } from '../schemas/aiTextGen.generated.js';
3139
import { AiTextGenDialogueHistoryField } from '../schemas/aiTextGen.generated.js';
40+
import { AiAgentAskOrAiAgentTextGen } from '../schemas/aiAgentAskOrAiAgentTextGen.generated.js';
41+
import { GetAiAgentDefaultConfigQueryParams } from '../managers/ai.generated.js';
42+
import { GetAiAgentDefaultConfigQueryParamsModeField } from '../managers/ai.generated.js';
3243
import { getDefaultClient } from './commons.generated.js';
3344
import { getUuid } from '../internal/utils.js';
3445
import { generateByteStream } from '../internal/utils.js';
3546
import { dateTimeFromString } from '../internal/utils.js';
3647
import { dateTimeToString } from '../internal/utils.js';
3748
import { uploadNewFile } from './commons.generated.js';
49+
import { AiAgentAsk } from '../schemas/aiAgentAsk.generated.js';
50+
import { AiAgentTextGen } from '../schemas/aiAgentTextGen.generated.js';
3851
import { SerializedData } from '../serialization/json.js';
3952
import { sdIsEmpty } from '../serialization/json.js';
4053
import { sdIsBoolean } from '../serialization/json.js';
@@ -125,4 +138,114 @@ test('testAITextGenWithDialogueHistory', async function testAITextGenWithDialogu
125138
}
126139
await client.files.deleteFileById(fileToAsk.id);
127140
});
141+
test('testGettingAIAskAgentConfig', async function testGettingAIAskAgentConfig(): Promise<any> {
142+
const aiAskConfig: AiAgentAskOrAiAgentTextGen =
143+
await client.ai.getAiAgentDefaultConfig({
144+
mode: 'ask' as GetAiAgentDefaultConfigQueryParamsModeField,
145+
language: 'ja-JP',
146+
} satisfies GetAiAgentDefaultConfigQueryParams);
147+
if (!(aiAskConfig.type == 'ai_agent_ask')) {
148+
throw new Error('Assertion failed');
149+
}
150+
if (!!(aiAskConfig.basicText!.model! == '')) {
151+
throw new Error('Assertion failed');
152+
}
153+
if (!!(aiAskConfig.basicText!.promptTemplate! == '')) {
154+
throw new Error('Assertion failed');
155+
}
156+
if (!!(aiAskConfig.basicText!.systemMessage! == '')) {
157+
throw new Error('Assertion failed');
158+
}
159+
if (!(aiAskConfig.basicText!.numTokensForCompletion! > -1)) {
160+
throw new Error('Assertion failed');
161+
}
162+
if (!!(aiAskConfig.basicText!.llmEndpointParams! == void 0)) {
163+
throw new Error('Assertion failed');
164+
}
165+
if (!!(aiAskConfig.basicTextMulti!.model! == '')) {
166+
throw new Error('Assertion failed');
167+
}
168+
if (!!(aiAskConfig.basicTextMulti!.promptTemplate! == '')) {
169+
throw new Error('Assertion failed');
170+
}
171+
if (!(aiAskConfig.basicTextMulti!.numTokensForCompletion! > -1)) {
172+
throw new Error('Assertion failed');
173+
}
174+
if (!!(aiAskConfig.basicTextMulti!.llmEndpointParams! == void 0)) {
175+
throw new Error('Assertion failed');
176+
}
177+
if (!!(aiAskConfig.longText!.model! == '')) {
178+
throw new Error('Assertion failed');
179+
}
180+
if (!!(aiAskConfig.longText!.promptTemplate! == '')) {
181+
throw new Error('Assertion failed');
182+
}
183+
if (!!(aiAskConfig.longText!.systemMessage! == '')) {
184+
throw new Error('Assertion failed');
185+
}
186+
if (!(aiAskConfig.longText!.numTokensForCompletion! > -1)) {
187+
throw new Error('Assertion failed');
188+
}
189+
if (!!(aiAskConfig.longText!.embeddings!.model! == '')) {
190+
throw new Error('Assertion failed');
191+
}
192+
if (!!(aiAskConfig.longText!.embeddings!.strategy!.id! == '')) {
193+
throw new Error('Assertion failed');
194+
}
195+
if (!!(aiAskConfig.longText!.llmEndpointParams! == void 0)) {
196+
throw new Error('Assertion failed');
197+
}
198+
if (!!(aiAskConfig.longTextMulti!.model! == '')) {
199+
throw new Error('Assertion failed');
200+
}
201+
if (!!(aiAskConfig.longTextMulti!.promptTemplate! == '')) {
202+
throw new Error('Assertion failed');
203+
}
204+
if (!(aiAskConfig.longTextMulti!.numTokensForCompletion! > -1)) {
205+
throw new Error('Assertion failed');
206+
}
207+
if (!!(aiAskConfig.longTextMulti!.embeddings!.model! == '')) {
208+
throw new Error('Assertion failed');
209+
}
210+
if (!!(aiAskConfig.longTextMulti!.embeddings!.strategy!.id! == '')) {
211+
throw new Error('Assertion failed');
212+
}
213+
if (!!(aiAskConfig.longTextMulti!.llmEndpointParams! == void 0)) {
214+
throw new Error('Assertion failed');
215+
}
216+
});
217+
test('testGettingAITextGenAgentConfig', async function testGettingAITextGenAgentConfig(): Promise<any> {
218+
const aiTextGenConfig: AiAgentAskOrAiAgentTextGen =
219+
await client.ai.getAiAgentDefaultConfig({
220+
mode: 'text_gen' as GetAiAgentDefaultConfigQueryParamsModeField,
221+
language: 'en-US',
222+
} satisfies GetAiAgentDefaultConfigQueryParams);
223+
if (!(aiTextGenConfig.type == 'ai_agent_text_gen')) {
224+
throw new Error('Assertion failed');
225+
}
226+
if (!!(aiTextGenConfig.basicGen!.llmEndpointParams! == void 0)) {
227+
throw new Error('Assertion failed');
228+
}
229+
if (!!(aiTextGenConfig.basicGen!.model! == '')) {
230+
throw new Error('Assertion failed');
231+
}
232+
if (!!(aiTextGenConfig.basicGen!.promptTemplate! == '')) {
233+
throw new Error('Assertion failed');
234+
}
235+
if (!!(aiTextGenConfig.basicGen!.systemMessage! == '')) {
236+
throw new Error('Assertion failed');
237+
}
238+
if (!(aiTextGenConfig.basicGen!.numTokensForCompletion! > -1)) {
239+
throw new Error('Assertion failed');
240+
}
241+
if (!!(aiTextGenConfig.basicGen!.contentTemplate! == '')) {
242+
throw new Error('Assertion failed');
243+
}
244+
if (!!(aiTextGenConfig.basicGen!.embeddings!.model! == '')) {
245+
throw new Error('Assertion failed');
246+
}
247+
if (!!(aiTextGenConfig.basicGen!.embeddings!.strategy!.id! == '')) {
248+
throw new Error('Assertion failed');
249+
}
250+
});
128251
export {};

0 commit comments

Comments
 (0)