@optimizely-opal/opal-tool-ocp-sdk 1.0.0 → 1.1.0-beta.1
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/README.md +39 -3
- package/dist/function/GlobalToolFunction.d.ts +4 -1
- package/dist/function/GlobalToolFunction.d.ts.map +1 -1
- package/dist/function/GlobalToolFunction.js +25 -19
- package/dist/function/GlobalToolFunction.js.map +1 -1
- package/dist/function/GlobalToolFunction.test.js +114 -193
- package/dist/function/GlobalToolFunction.test.js.map +1 -1
- package/dist/function/ToolFunction.d.ts +4 -1
- package/dist/function/ToolFunction.d.ts.map +1 -1
- package/dist/function/ToolFunction.js +20 -21
- package/dist/function/ToolFunction.js.map +1 -1
- package/dist/function/ToolFunction.test.js +73 -263
- package/dist/function/ToolFunction.test.js.map +1 -1
- package/dist/service/Service.d.ts +10 -9
- package/dist/service/Service.d.ts.map +1 -1
- package/dist/service/Service.js +42 -74
- package/dist/service/Service.js.map +1 -1
- package/dist/service/Service.test.js +60 -95
- package/dist/service/Service.test.js.map +1 -1
- package/dist/utils/ErrorFormatter.d.ts +9 -0
- package/dist/utils/ErrorFormatter.d.ts.map +1 -0
- package/dist/utils/ErrorFormatter.js +25 -0
- package/dist/utils/ErrorFormatter.js.map +1 -0
- package/package.json +1 -1
- package/src/function/GlobalToolFunction.test.ts +113 -213
- package/src/function/GlobalToolFunction.ts +29 -29
- package/src/function/ToolFunction.test.ts +78 -285
- package/src/function/ToolFunction.ts +24 -30
- package/src/service/Service.test.ts +61 -113
- package/src/service/Service.ts +45 -79
- package/src/utils/ErrorFormatter.ts +31 -0
|
@@ -5,7 +5,7 @@ const app_sdk_1 = require("@zaiusinc/app-sdk");
|
|
|
5
5
|
const AuthUtils_1 = require("../auth/AuthUtils");
|
|
6
6
|
const Service_1 = require("../service/Service");
|
|
7
7
|
const ToolLogger_1 = require("../logging/ToolLogger");
|
|
8
|
-
const
|
|
8
|
+
const ErrorFormatter_1 = require("../utils/ErrorFormatter");
|
|
9
9
|
/**
|
|
10
10
|
* Abstract base class for tool-based function execution
|
|
11
11
|
* Provides a standard interface for processing requests through registered tools
|
|
@@ -39,21 +39,6 @@ class ToolFunction extends app_sdk_1.Function {
|
|
|
39
39
|
* @returns Response as the HTTP response
|
|
40
40
|
*/
|
|
41
41
|
async handleRequest() {
|
|
42
|
-
try {
|
|
43
|
-
await this.authorizeRequest();
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
if (error instanceof ToolError_1.ToolError) {
|
|
47
|
-
return new app_sdk_1.Response(error.status, error.toProblemDetails(this.request.path), new app_sdk_1.Headers([['content-type', 'application/problem+json']]));
|
|
48
|
-
}
|
|
49
|
-
// Fallback for unexpected errors
|
|
50
|
-
return new app_sdk_1.Response(500, {
|
|
51
|
-
title: 'Internal Server Error',
|
|
52
|
-
status: 500,
|
|
53
|
-
detail: 'An unexpected error occurred during authentication',
|
|
54
|
-
instance: this.request.path
|
|
55
|
-
}, new app_sdk_1.Headers([['content-type', 'application/problem+json']]));
|
|
56
|
-
}
|
|
57
42
|
if (this.request.path === '/ready') {
|
|
58
43
|
const readyResult = await this.ready();
|
|
59
44
|
const readyResponse = typeof readyResult === 'boolean'
|
|
@@ -61,21 +46,35 @@ class ToolFunction extends app_sdk_1.Function {
|
|
|
61
46
|
: readyResult;
|
|
62
47
|
return new app_sdk_1.Response(200, readyResponse);
|
|
63
48
|
}
|
|
64
|
-
|
|
65
|
-
|
|
49
|
+
try {
|
|
50
|
+
await this.authorizeRequest();
|
|
51
|
+
// Pass 'this' as context so decorated methods can use the existing instance
|
|
52
|
+
return await Service_1.toolsService.processRequest(this.request, this);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
return (0, ErrorFormatter_1.formatErrorResponse)(error, this.request.path);
|
|
56
|
+
}
|
|
66
57
|
}
|
|
67
58
|
/**
|
|
68
|
-
* Authenticate the incoming request
|
|
59
|
+
* Authenticate the incoming request based on the endpoint
|
|
60
|
+
* - /discovery: No auth required
|
|
61
|
+
* - /overrides: Internal auth (header-based token)
|
|
62
|
+
* - Tools/interactions: Regular auth if OptiID is required
|
|
69
63
|
*
|
|
70
64
|
* @throws {ToolError} If authentication fails
|
|
71
65
|
*/
|
|
72
66
|
async authorizeRequest() {
|
|
67
|
+
// Discovery endpoint doesn't require auth
|
|
68
|
+
if (this.request.path === '/discovery') {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
73
71
|
// Use internal authentication for overrides endpoint (header-based token)
|
|
74
72
|
if (this.request.path === '/overrides') {
|
|
75
73
|
await (0, AuthUtils_1.authenticateInternalRequest)(this.request);
|
|
74
|
+
return;
|
|
76
75
|
}
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
// Tool/interaction endpoints - authenticate only if OptiID is required
|
|
77
|
+
if (Service_1.toolsService.requiresOptiIdAuth(this.request.path)) {
|
|
79
78
|
await (0, AuthUtils_1.authenticateRegularRequest)(this.request);
|
|
80
79
|
}
|
|
81
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolFunction.js","sourceRoot":"","sources":["../../src/function/ToolFunction.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"ToolFunction.js","sourceRoot":"","sources":["../../src/function/ToolFunction.ts"],"names":[],"mappings":";;;AAAA,+CAAwE;AACxE,iDAA4F;AAC5F,gDAAkD;AAClD,sDAAmD;AAEnD,4DAA8D;AAE9D;;;GAGG;AACH,MAAsB,YAAa,SAAQ,kBAAQ;IAEjD;;;;;OAKG;IACO,KAAK;QACb,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAA,yBAAe,EAAC,EAAE,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAEtF,uBAAU,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE5C,uBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;QACvE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,aAAa;QACzB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACvC,MAAM,aAAa,GAAG,OAAO,WAAW,KAAK,SAAS;gBACpD,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE;gBACxB,CAAC,CAAC,WAAW,CAAC;YAChB,OAAO,IAAI,kBAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAE9B,4EAA4E;YAC5E,OAAO,MAAM,sBAAY,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAA,oCAAmB,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,gBAAgB;QAC5B,0CAA0C;QAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,0EAA0E;QAC1E,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACvC,MAAM,IAAA,uCAA2B,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,uEAAuE;QACvE,IAAI,sBAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,MAAM,IAAA,sCAA0B,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF;AA9ED,oCA8EC"}
|
|
@@ -4,15 +4,22 @@ const ToolFunction_1 = require("./ToolFunction");
|
|
|
4
4
|
const Service_1 = require("../service/Service");
|
|
5
5
|
const app_sdk_1 = require("@zaiusinc/app-sdk");
|
|
6
6
|
const TokenVerifier_1 = require("../auth/TokenVerifier");
|
|
7
|
+
const ToolError_1 = require("../types/ToolError");
|
|
8
|
+
const AuthUtils_1 = require("../auth/AuthUtils");
|
|
7
9
|
// Mock the dependencies
|
|
8
10
|
jest.mock('../service/Service', () => ({
|
|
9
11
|
toolsService: {
|
|
10
12
|
processRequest: jest.fn(),
|
|
13
|
+
requiresOptiIdAuth: jest.fn(),
|
|
11
14
|
},
|
|
12
15
|
}));
|
|
13
16
|
jest.mock('../auth/TokenVerifier', () => ({
|
|
14
17
|
getTokenVerifier: jest.fn(),
|
|
15
18
|
}));
|
|
19
|
+
jest.mock('../auth/AuthUtils', () => ({
|
|
20
|
+
authenticateRegularRequest: jest.fn().mockResolvedValue(undefined),
|
|
21
|
+
authenticateInternalRequest: jest.fn().mockResolvedValue(undefined),
|
|
22
|
+
}));
|
|
16
23
|
jest.mock('@zaiusinc/app-sdk', () => ({
|
|
17
24
|
Function: class {
|
|
18
25
|
request;
|
|
@@ -218,148 +225,14 @@ describe('ToolFunction', () => {
|
|
|
218
225
|
});
|
|
219
226
|
});
|
|
220
227
|
describe('perform', () => {
|
|
221
|
-
it('should
|
|
222
|
-
// Setup mock
|
|
223
|
-
mockTokenVerifier.verify.mockResolvedValue(true);
|
|
228
|
+
it('should call processRequest and return its result', async () => {
|
|
229
|
+
// Setup mock to return a response
|
|
224
230
|
mockProcessRequest.mockResolvedValue(mockResponse);
|
|
225
231
|
const result = await toolFunction.perform();
|
|
226
232
|
expect(result).toBe(mockResponse);
|
|
227
|
-
|
|
228
|
-
expect(mockTokenVerifier.verify).toHaveBeenCalledWith('valid-access-token');
|
|
229
|
-
expect(mockGetAppContext).toHaveBeenCalled();
|
|
233
|
+
// processRequest is called with request and context (no authValidator)
|
|
230
234
|
expect(mockProcessRequest).toHaveBeenCalledWith(mockRequest, toolFunction);
|
|
231
235
|
});
|
|
232
|
-
it('should return 403 response with invalid token', async () => {
|
|
233
|
-
// Setup mock token verifier to return false
|
|
234
|
-
mockTokenVerifier.verify.mockResolvedValue(false);
|
|
235
|
-
const result = await toolFunction.perform();
|
|
236
|
-
expect(result.status).toBe(403);
|
|
237
|
-
expect(result.bodyJSON).toEqual({
|
|
238
|
-
title: 'Forbidden',
|
|
239
|
-
status: 403,
|
|
240
|
-
detail: 'Invalid OptiID access token',
|
|
241
|
-
instance: '/test'
|
|
242
|
-
});
|
|
243
|
-
expect(mockGetTokenVerifier).toHaveBeenCalled();
|
|
244
|
-
expect(mockTokenVerifier.verify).toHaveBeenCalledWith('valid-access-token');
|
|
245
|
-
expect(mockProcessRequest).not.toHaveBeenCalled();
|
|
246
|
-
});
|
|
247
|
-
it('should return 403 response when organization ID does not match', async () => {
|
|
248
|
-
// Update mock request with different customer_id
|
|
249
|
-
const requestWithDifferentOrgId = {
|
|
250
|
-
...mockRequest,
|
|
251
|
-
bodyJSON: {
|
|
252
|
-
...mockRequest.bodyJSON,
|
|
253
|
-
auth: {
|
|
254
|
-
...mockRequest.bodyJSON.auth,
|
|
255
|
-
credentials: {
|
|
256
|
-
...mockRequest.bodyJSON.auth.credentials,
|
|
257
|
-
customer_id: 'different-org-123'
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
};
|
|
262
|
-
const toolFunctionWithDifferentOrgId = new TestToolFunction(requestWithDifferentOrgId);
|
|
263
|
-
const result = await toolFunctionWithDifferentOrgId.perform();
|
|
264
|
-
expect(result.status).toBe(403);
|
|
265
|
-
expect(result.bodyJSON).toEqual({
|
|
266
|
-
title: 'Forbidden',
|
|
267
|
-
status: 403,
|
|
268
|
-
detail: 'Organization ID does not match',
|
|
269
|
-
instance: '/test'
|
|
270
|
-
});
|
|
271
|
-
expect(mockGetAppContext).toHaveBeenCalled();
|
|
272
|
-
expect(mockProcessRequest).not.toHaveBeenCalled();
|
|
273
|
-
});
|
|
274
|
-
it('should return 403 response when access token is missing', async () => {
|
|
275
|
-
// Create request without access token
|
|
276
|
-
const requestWithoutToken = {
|
|
277
|
-
...mockRequest,
|
|
278
|
-
bodyJSON: {
|
|
279
|
-
...mockRequest.bodyJSON,
|
|
280
|
-
auth: {
|
|
281
|
-
...mockRequest.bodyJSON.auth,
|
|
282
|
-
credentials: {
|
|
283
|
-
...mockRequest.bodyJSON.auth.credentials,
|
|
284
|
-
access_token: undefined
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
};
|
|
289
|
-
const toolFunctionWithoutToken = new TestToolFunction(requestWithoutToken);
|
|
290
|
-
const result = await toolFunctionWithoutToken.perform();
|
|
291
|
-
expect(result.status).toBe(403);
|
|
292
|
-
expect(result.bodyJSON).toEqual({
|
|
293
|
-
title: 'Forbidden',
|
|
294
|
-
status: 403,
|
|
295
|
-
detail: 'OptiID access token is required',
|
|
296
|
-
instance: '/test'
|
|
297
|
-
});
|
|
298
|
-
expect(mockGetTokenVerifier).not.toHaveBeenCalled();
|
|
299
|
-
expect(mockProcessRequest).not.toHaveBeenCalled();
|
|
300
|
-
});
|
|
301
|
-
it('should return 403 response when organisation id is missing', async () => {
|
|
302
|
-
// Create request without customer_id
|
|
303
|
-
const requestWithoutCustomerId = {
|
|
304
|
-
...mockRequest,
|
|
305
|
-
bodyJSON: {
|
|
306
|
-
...mockRequest.bodyJSON,
|
|
307
|
-
auth: {
|
|
308
|
-
...mockRequest.bodyJSON.auth,
|
|
309
|
-
credentials: {
|
|
310
|
-
...mockRequest.bodyJSON.auth.credentials,
|
|
311
|
-
customer_id: undefined
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
};
|
|
316
|
-
const toolFunctionWithoutCustomerId = new TestToolFunction(requestWithoutCustomerId);
|
|
317
|
-
const result = await toolFunctionWithoutCustomerId.perform();
|
|
318
|
-
expect(result.status).toBe(403);
|
|
319
|
-
expect(result.bodyJSON).toEqual({
|
|
320
|
-
title: 'Forbidden',
|
|
321
|
-
status: 403,
|
|
322
|
-
detail: 'Organization ID is required',
|
|
323
|
-
instance: '/test'
|
|
324
|
-
});
|
|
325
|
-
expect(mockGetTokenVerifier).not.toHaveBeenCalled();
|
|
326
|
-
expect(mockProcessRequest).not.toHaveBeenCalled();
|
|
327
|
-
});
|
|
328
|
-
it('should return 403 response when auth structure is missing', async () => {
|
|
329
|
-
// Create request without auth structure
|
|
330
|
-
const requestWithoutAuth = {
|
|
331
|
-
...mockRequest,
|
|
332
|
-
bodyJSON: {
|
|
333
|
-
parameters: mockRequest.bodyJSON.parameters,
|
|
334
|
-
environment: mockRequest.bodyJSON.environment
|
|
335
|
-
}
|
|
336
|
-
};
|
|
337
|
-
const toolFunctionWithoutAuth = new TestToolFunction(requestWithoutAuth);
|
|
338
|
-
const result = await toolFunctionWithoutAuth.perform();
|
|
339
|
-
expect(result.status).toBe(403);
|
|
340
|
-
expect(result.bodyJSON).toEqual({
|
|
341
|
-
title: 'Forbidden',
|
|
342
|
-
status: 403,
|
|
343
|
-
detail: 'Authentication data is required',
|
|
344
|
-
instance: '/test'
|
|
345
|
-
});
|
|
346
|
-
expect(mockGetTokenVerifier).not.toHaveBeenCalled();
|
|
347
|
-
expect(mockProcessRequest).not.toHaveBeenCalled();
|
|
348
|
-
});
|
|
349
|
-
it('should return 403 response when token verifier initialization fails', async () => {
|
|
350
|
-
// Setup mock to fail during token verifier initialization
|
|
351
|
-
mockGetTokenVerifier.mockRejectedValue(new Error('Failed to initialize token verifier'));
|
|
352
|
-
const result = await toolFunction.perform();
|
|
353
|
-
expect(result.status).toBe(403);
|
|
354
|
-
expect(result.bodyJSON).toEqual({
|
|
355
|
-
title: 'Forbidden',
|
|
356
|
-
status: 403,
|
|
357
|
-
detail: 'Token verification failed',
|
|
358
|
-
instance: '/test'
|
|
359
|
-
});
|
|
360
|
-
expect(mockGetTokenVerifier).toHaveBeenCalled();
|
|
361
|
-
expect(mockProcessRequest).not.toHaveBeenCalled();
|
|
362
|
-
});
|
|
363
236
|
});
|
|
364
237
|
describe('inheritance', () => {
|
|
365
238
|
it('should be an instance of Function', () => {
|
|
@@ -371,21 +244,17 @@ describe('ToolFunction', () => {
|
|
|
371
244
|
expect(toolFunction.getRequest()).toBe(mockRequest);
|
|
372
245
|
});
|
|
373
246
|
});
|
|
374
|
-
describe('
|
|
247
|
+
describe('system paths routing', () => {
|
|
375
248
|
beforeEach(() => {
|
|
376
|
-
// Reset mocks before each test
|
|
377
249
|
jest.clearAllMocks();
|
|
378
|
-
setupAuthMocks();
|
|
379
250
|
});
|
|
380
|
-
it('should
|
|
251
|
+
it('should forward /overrides to processRequest directly', async () => {
|
|
381
252
|
const overridesRequest = {
|
|
382
253
|
path: '/overrides',
|
|
383
254
|
method: 'DELETE',
|
|
384
255
|
bodyJSON: {},
|
|
385
256
|
headers: {
|
|
386
257
|
get: jest.fn().mockImplementation((name) => {
|
|
387
|
-
if (name === 'Authorization' || name === 'authorization')
|
|
388
|
-
return 'internal-token';
|
|
389
258
|
if (name === 'x-opal-thread-id')
|
|
390
259
|
return 'test-thread-id';
|
|
391
260
|
return null;
|
|
@@ -396,36 +265,13 @@ describe('ToolFunction', () => {
|
|
|
396
265
|
const toolFunctionOverrides = new TestToolFunction(overridesRequest);
|
|
397
266
|
const result = await toolFunctionOverrides.perform();
|
|
398
267
|
expect(result).toBe(mockResponse);
|
|
268
|
+
// /overrides is forwarded directly to processRequest (auth handled there)
|
|
399
269
|
expect(mockProcessRequest).toHaveBeenCalledWith(overridesRequest, toolFunctionOverrides);
|
|
400
270
|
});
|
|
401
|
-
it('should
|
|
402
|
-
const
|
|
403
|
-
path: '/
|
|
404
|
-
method: '
|
|
405
|
-
bodyJSON: {},
|
|
406
|
-
headers: {
|
|
407
|
-
get: jest.fn().mockImplementation((name) => {
|
|
408
|
-
if (name === 'x-opal-thread-id')
|
|
409
|
-
return 'test-thread-id';
|
|
410
|
-
return null; // No Authorization header
|
|
411
|
-
})
|
|
412
|
-
}
|
|
413
|
-
};
|
|
414
|
-
const toolFunctionOverrides = new TestToolFunction(overridesRequest);
|
|
415
|
-
const result = await toolFunctionOverrides.perform();
|
|
416
|
-
expect(result.status).toBe(401);
|
|
417
|
-
expect(result.bodyJSON).toEqual({
|
|
418
|
-
title: 'Unauthorized',
|
|
419
|
-
status: 401,
|
|
420
|
-
detail: 'Internal request authentication failed',
|
|
421
|
-
instance: '/overrides'
|
|
422
|
-
});
|
|
423
|
-
expect(mockProcessRequest).not.toHaveBeenCalled();
|
|
424
|
-
});
|
|
425
|
-
it('should use regular authentication for non-overrides endpoints', async () => {
|
|
426
|
-
const regularRequest = {
|
|
427
|
-
...mockRequest,
|
|
428
|
-
path: '/regular-tool',
|
|
271
|
+
it('should forward /discovery to processRequest directly', async () => {
|
|
272
|
+
const discoveryRequest = {
|
|
273
|
+
path: '/discovery',
|
|
274
|
+
method: 'GET',
|
|
429
275
|
headers: {
|
|
430
276
|
get: jest.fn().mockImplementation((name) => {
|
|
431
277
|
if (name === 'x-opal-thread-id')
|
|
@@ -435,128 +281,89 @@ describe('ToolFunction', () => {
|
|
|
435
281
|
}
|
|
436
282
|
};
|
|
437
283
|
mockProcessRequest.mockResolvedValue(mockResponse);
|
|
438
|
-
const
|
|
439
|
-
const result = await
|
|
284
|
+
const toolFunctionDiscovery = new TestToolFunction(discoveryRequest);
|
|
285
|
+
const result = await toolFunctionDiscovery.perform();
|
|
440
286
|
expect(result).toBe(mockResponse);
|
|
441
|
-
expect(mockProcessRequest).toHaveBeenCalledWith(
|
|
287
|
+
expect(mockProcessRequest).toHaveBeenCalledWith(discoveryRequest, toolFunctionDiscovery);
|
|
442
288
|
});
|
|
443
|
-
it('should
|
|
444
|
-
const
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
bodyJSON: {
|
|
448
|
-
functions: [
|
|
449
|
-
{
|
|
450
|
-
name: 'test_tool',
|
|
451
|
-
description: 'Updated description'
|
|
452
|
-
}
|
|
453
|
-
]
|
|
454
|
-
},
|
|
289
|
+
it('should forward tool endpoints to processRequest', async () => {
|
|
290
|
+
const toolRequest = {
|
|
291
|
+
...mockRequest,
|
|
292
|
+
path: '/some-tool',
|
|
455
293
|
headers: {
|
|
456
294
|
get: jest.fn().mockImplementation((name) => {
|
|
457
|
-
if (name === 'Authorization')
|
|
458
|
-
return 'valid-internal-token';
|
|
459
295
|
if (name === 'x-opal-thread-id')
|
|
460
296
|
return 'test-thread-id';
|
|
461
297
|
return null;
|
|
462
298
|
})
|
|
463
299
|
}
|
|
464
300
|
};
|
|
301
|
+
// Tool does not require OptiID auth
|
|
302
|
+
Service_1.toolsService.requiresOptiIdAuth.mockReturnValue(false);
|
|
465
303
|
mockProcessRequest.mockResolvedValue(mockResponse);
|
|
466
|
-
const
|
|
467
|
-
const result = await
|
|
304
|
+
const toolFunctionTest = new TestToolFunction(toolRequest);
|
|
305
|
+
const result = await toolFunctionTest.perform();
|
|
468
306
|
expect(result).toBe(mockResponse);
|
|
469
|
-
expect(mockProcessRequest).toHaveBeenCalledWith(
|
|
307
|
+
expect(mockProcessRequest).toHaveBeenCalledWith(toolRequest, toolFunctionTest);
|
|
470
308
|
});
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
bodyJSON: {
|
|
476
|
-
functions: [
|
|
477
|
-
{
|
|
478
|
-
name: 'test_tool',
|
|
479
|
-
description: 'Updated description'
|
|
480
|
-
}
|
|
481
|
-
]
|
|
482
|
-
},
|
|
483
|
-
headers: {
|
|
484
|
-
get: jest.fn().mockImplementation((name) => {
|
|
485
|
-
if (name === 'authorization')
|
|
486
|
-
return 'valid-internal-token';
|
|
487
|
-
if (name === 'x-opal-thread-id')
|
|
488
|
-
return 'test-thread-id';
|
|
489
|
-
return null;
|
|
490
|
-
})
|
|
491
|
-
}
|
|
492
|
-
};
|
|
493
|
-
mockProcessRequest.mockResolvedValue(mockResponse);
|
|
494
|
-
const toolFunctionOverrides = new TestToolFunction(overridesRequest);
|
|
495
|
-
const result = await toolFunctionOverrides.perform();
|
|
496
|
-
expect(result).toBe(mockResponse);
|
|
497
|
-
expect(mockProcessRequest).toHaveBeenCalledWith(overridesRequest, toolFunctionOverrides);
|
|
309
|
+
});
|
|
310
|
+
describe('error formatting', () => {
|
|
311
|
+
beforeEach(() => {
|
|
312
|
+
jest.clearAllMocks();
|
|
498
313
|
});
|
|
499
|
-
it('should
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
path: '/overrides',
|
|
504
|
-
method: 'DELETE',
|
|
505
|
-
bodyJSON: {},
|
|
314
|
+
it('should format ToolError as RFC 9457 response when processRequest throws ToolError', async () => {
|
|
315
|
+
const toolRequest = {
|
|
316
|
+
...mockRequest,
|
|
317
|
+
path: '/some-tool',
|
|
506
318
|
headers: {
|
|
507
319
|
get: jest.fn().mockImplementation((name) => {
|
|
508
|
-
if (name === 'Authorization')
|
|
509
|
-
return 'invalid-token';
|
|
510
320
|
if (name === 'x-opal-thread-id')
|
|
511
321
|
return 'test-thread-id';
|
|
512
322
|
return null;
|
|
513
323
|
})
|
|
514
324
|
}
|
|
515
325
|
};
|
|
516
|
-
const
|
|
517
|
-
|
|
518
|
-
|
|
326
|
+
const toolError = new ToolError_1.ToolError('Resource not found', 404, 'The requested resource does not exist');
|
|
327
|
+
mockProcessRequest.mockRejectedValue(toolError);
|
|
328
|
+
Service_1.toolsService.requiresOptiIdAuth.mockReturnValue(false);
|
|
329
|
+
const toolFunctionTest = new TestToolFunction(toolRequest);
|
|
330
|
+
const result = await toolFunctionTest.perform();
|
|
331
|
+
expect(result.status).toBe(404);
|
|
519
332
|
expect(result.bodyJSON).toEqual({
|
|
520
|
-
title: '
|
|
521
|
-
status:
|
|
522
|
-
detail: '
|
|
523
|
-
instance: '/
|
|
333
|
+
title: 'Resource not found',
|
|
334
|
+
status: 404,
|
|
335
|
+
detail: 'The requested resource does not exist',
|
|
336
|
+
instance: '/some-tool'
|
|
524
337
|
});
|
|
525
|
-
expect(mockProcessRequest).not.toHaveBeenCalled();
|
|
526
338
|
});
|
|
527
|
-
it('should
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
path: '/overrides',
|
|
532
|
-
method: 'DELETE',
|
|
533
|
-
bodyJSON: {},
|
|
339
|
+
it('should format generic Error as 500 RFC 9457 response when processRequest throws', async () => {
|
|
340
|
+
const toolRequest = {
|
|
341
|
+
...mockRequest,
|
|
342
|
+
path: '/some-tool',
|
|
534
343
|
headers: {
|
|
535
344
|
get: jest.fn().mockImplementation((name) => {
|
|
536
|
-
if (name === 'Authorization')
|
|
537
|
-
return 'some-token';
|
|
538
345
|
if (name === 'x-opal-thread-id')
|
|
539
346
|
return 'test-thread-id';
|
|
540
347
|
return null;
|
|
541
348
|
})
|
|
542
349
|
}
|
|
543
350
|
};
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
351
|
+
mockProcessRequest.mockRejectedValue(new Error('Database connection failed'));
|
|
352
|
+
Service_1.toolsService.requiresOptiIdAuth.mockReturnValue(false);
|
|
353
|
+
const toolFunctionTest = new TestToolFunction(toolRequest);
|
|
354
|
+
const result = await toolFunctionTest.perform();
|
|
355
|
+
expect(result.status).toBe(500);
|
|
547
356
|
expect(result.bodyJSON).toEqual({
|
|
548
|
-
title: '
|
|
549
|
-
status:
|
|
550
|
-
detail: '
|
|
551
|
-
instance: '/
|
|
357
|
+
title: 'Internal Server Error',
|
|
358
|
+
status: 500,
|
|
359
|
+
detail: 'Database connection failed',
|
|
360
|
+
instance: '/some-tool'
|
|
552
361
|
});
|
|
553
|
-
expect(mockProcessRequest).not.toHaveBeenCalled();
|
|
554
362
|
});
|
|
555
|
-
it('should
|
|
556
|
-
const
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
bodyJSON: {},
|
|
363
|
+
it('should format ToolError from authorization failure as RFC 9457 response', async () => {
|
|
364
|
+
const toolRequest = {
|
|
365
|
+
...mockRequest,
|
|
366
|
+
path: '/some-tool',
|
|
560
367
|
headers: {
|
|
561
368
|
get: jest.fn().mockImplementation((name) => {
|
|
562
369
|
if (name === 'x-opal-thread-id')
|
|
@@ -565,14 +372,17 @@ describe('ToolFunction', () => {
|
|
|
565
372
|
})
|
|
566
373
|
}
|
|
567
374
|
};
|
|
568
|
-
const
|
|
569
|
-
|
|
570
|
-
|
|
375
|
+
const authError = new ToolError_1.ToolError('Unauthorized', 403, 'Invalid access token');
|
|
376
|
+
Service_1.toolsService.requiresOptiIdAuth.mockReturnValue(true);
|
|
377
|
+
jest.mocked(AuthUtils_1.authenticateRegularRequest).mockRejectedValue(authError);
|
|
378
|
+
const toolFunctionTest = new TestToolFunction(toolRequest);
|
|
379
|
+
const result = await toolFunctionTest.perform();
|
|
380
|
+
expect(result.status).toBe(403);
|
|
571
381
|
expect(result.bodyJSON).toEqual({
|
|
572
382
|
title: 'Unauthorized',
|
|
573
|
-
status:
|
|
574
|
-
detail: '
|
|
575
|
-
instance: '/
|
|
383
|
+
status: 403,
|
|
384
|
+
detail: 'Invalid access token',
|
|
385
|
+
instance: '/some-tool'
|
|
576
386
|
});
|
|
577
387
|
expect(mockProcessRequest).not.toHaveBeenCalled();
|
|
578
388
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolFunction.test.js","sourceRoot":"","sources":["../../src/function/ToolFunction.test.ts"],"names":[],"mappings":";;AAAA,iDAA8C;AAC9C,gDAAkD;AAClD,+CAA4D;AAC5D,yDAAyD;AAEzD,wBAAwB;AACxB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,YAAY,EAAE;QACZ,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;KAC1B;CACF,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;CAC5B,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,QAAQ,EAAE;QACE,OAAO,CAAM;QACvB,YAAmB,KAAc;YAC/B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QACpB,CAAC;KACF;IACD,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACjD,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM;QACN,IAAI;QACJ,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE,IAAI,UAAU,EAAE;QAC/B,OAAO;KACR,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,EAAE;QAChD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1B,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IACF,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;IAC1B,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;IACxB,MAAM,EAAE;QACN,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;KACjB;IACD,aAAa,EAAE;QACb,KAAK,EAAE,OAAO;KACf;CACF,CAAC,CAAC,CAAC;AAEJ,+CAA+C;AAC/C,MAAM,gBAAiB,SAAQ,2BAAY;IACjC,SAAS,CAA0E;IAE3F,YAAmB,OAAa;QAC9B,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACpB,IAAY,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,iEAAiE;IACvD,KAAK;QACb,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAEM,UAAU;QACf,OAAQ,IAAY,CAAC,OAAO,CAAC;IAC/B,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AAED,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,WAAgB,CAAC;IACrB,IAAI,YAAsB,CAAC;IAC3B,IAAI,YAA8B,CAAC;IACnC,IAAI,kBAA2E,CAAC;IAChF,IAAI,oBAAkE,CAAC;IACvE,IAAI,iBAA4D,CAAC;IACjE,IAAI,iBAEF,CAAC;IAEH,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,6BAA6B;QAC7B,iBAAiB,GAAG;YAClB,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;SAClB,CAAC;QAEF,kBAAkB;QAClB,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAY,CAAC,cAAc,CAAC,CAAC;QAC9D,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,gCAAgB,CAAC,CAAC;QACrD,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAa,CAAC,CAAC;QAE/C,oBAAoB,CAAC,iBAAiB,CAAC,iBAAwB,CAAC,CAAC;QACjE,iBAAiB,CAAC,eAAe,CAAC;YAChC,OAAO,EAAE;gBACP,cAAc,EAAE,aAAa;aAC9B;SACK,CAAC,CAAC;QAEV,8CAA8C;QAC9C,WAAW,GAAG;YACZ,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE;gBACR,UAAU,EAAE;oBACV,OAAO,EAAE,UAAU;oBACnB,UAAU,EAAE,aAAa;iBAC1B;gBACD,IAAI,EAAE;oBACJ,QAAQ,EAAE,QAAQ;oBAClB,WAAW,EAAE;wBACX,UAAU,EAAE,QAAQ;wBACpB,YAAY,EAAE,oBAAoB;wBAClC,UAAU,EAAE,aAAa;wBACzB,OAAO,EAAE,UAAU;wBACnB,WAAW,EAAE,cAAc;wBAC3B,WAAW,EAAE,aAAa;wBAC1B,WAAW,EAAE,MAAM;qBACpB;iBACF;gBACD,WAAW,EAAE;oBACX,cAAc,EAAE,UAAU;iBAC3B;aACF;SACF,CAAC;QAEF,YAAY,GAAG,EAAc,CAAC;QAC9B,YAAY,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,4DAA4D;IAC5D,MAAM,0BAA0B,GAAG,GAAG,EAAE,CAAC,CAAC;QACxC,OAAO,EAAE,IAAI,GAAG,EAAE;QAClB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE;YACR,IAAI,EAAE;gBACJ,QAAQ,EAAE,QAAQ;gBAClB,WAAW,EAAE;oBACX,YAAY,EAAE,aAAa;oBAC3B,WAAW,EAAE,aAAa;iBAC3B;aACF;SACF;KACF,CAAC,CAAC;IAEH,uDAAuD;IACvD,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACjD,iBAAiB,CAAC,eAAe,CAAC;YAChC,OAAO,EAAE;gBACP,cAAc,EAAE,aAAa;aAC9B;SACK,CAAC,CAAC;IACZ,CAAC,CAAC;IAEF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,UAAU,CAAC,GAAG,EAAE;YACd,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,UAAU;YACV,MAAM,YAAY,GAAG,0BAA0B,EAAE,CAAC;YAElD,YAAY,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAClD,YAAY,CAAC,YAAY,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAE/D,MAAM;YACN,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAE5C,SAAS;YACT,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,kBAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3D,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,0BAA0B;QAC/E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,UAAU;YACV,MAAM,YAAY,GAAG,0BAA0B,EAAE,CAAC;YAElD,YAAY,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAClD,YAAY,CAAC,YAAY,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAEhE,MAAM;YACN,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAE5C,SAAS;YACT,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,kBAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5D,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,0BAA0B;QAC/E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;YAClG,UAAU;YACV,MAAM,YAAY,GAAG,0BAA0B,EAAE,CAAC;YAElD,YAAY,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAClD,YAAY,CAAC,YAAY,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC,CAAC;YAEtG,MAAM;YACN,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAE5C,SAAS;YACT,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,kBAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAC;YAClG,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,0BAA0B;QAC/E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,UAAU;YACV,MAAM,YAAY,GAAG,0BAA0B,EAAE,CAAC;YAElD,YAAY,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAClD,YAAY,CAAC,YAAY,EAAE,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAE/E,eAAe;YACf,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YAC3E,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,0BAA0B;QAC/E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,oDAAoD;YACpD,MAAM,wBAAyB,SAAQ,2BAAY;gBACjD,YAAmB,OAAa;oBAC9B,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;oBACpB,IAAY,CAAC,OAAO,GAAG,OAAO,CAAC;gBAClC,CAAC;gBAEM,UAAU;oBACf,OAAQ,IAAY,CAAC,OAAO,CAAC;gBAC/B,CAAC;aACF;YAED,UAAU;YACV,MAAM,YAAY,GAAG,0BAA0B,EAAE,CAAC;YAClD,MAAM,mBAAmB,GAAG,IAAI,wBAAwB,CAAC,YAAY,CAAC,CAAC;YAEvE,MAAM;YACN,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,CAAC;YAEnD,qDAAqD;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,kBAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3D,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,0BAA0B;QAC/E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACtF,2DAA2D;YAC3D,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACjD,kBAAkB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAEnD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAClC,MAAM,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAChD,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;YAC5E,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC7C,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,4CAA4C;YAC5C,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAE5C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;gBAC9B,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,6BAA6B;gBACrC,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAChD,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;YAC5E,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;YAC9E,iDAAiD;YACjD,MAAM,yBAAyB,GAAG;gBAChC,GAAG,WAAW;gBACd,QAAQ,EAAE;oBACR,GAAG,WAAW,CAAC,QAAQ;oBACvB,IAAI,EAAE;wBACJ,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI;wBAC5B,WAAW,EAAE;4BACX,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW;4BACxC,WAAW,EAAE,mBAAmB;yBACjC;qBACF;iBACF;aACF,CAAC;YAEF,MAAM,8BAA8B,GAAG,IAAI,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;YAEvF,MAAM,MAAM,GAAG,MAAM,8BAA8B,CAAC,OAAO,EAAE,CAAC;YAE9D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;gBAC9B,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,gCAAgC;gBACxC,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC7C,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,sCAAsC;YACtC,MAAM,mBAAmB,GAAG;gBAC1B,GAAG,WAAW;gBACd,QAAQ,EAAE;oBACR,GAAG,WAAW,CAAC,QAAQ;oBACvB,IAAI,EAAE;wBACJ,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI;wBAC5B,WAAW,EAAE;4BACX,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW;4BACxC,YAAY,EAAE,SAAS;yBACxB;qBACF;iBACF;aACF,CAAC;YAEF,MAAM,wBAAwB,GAAG,IAAI,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;YAE3E,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,OAAO,EAAE,CAAC;YAExD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;gBAC9B,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,iCAAiC;gBACzC,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACpD,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,qCAAqC;YACrC,MAAM,wBAAwB,GAAG;gBAC/B,GAAG,WAAW;gBACd,QAAQ,EAAE;oBACR,GAAG,WAAW,CAAC,QAAQ;oBACvB,IAAI,EAAE;wBACJ,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI;wBAC5B,WAAW,EAAE;4BACX,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW;4BACxC,WAAW,EAAE,SAAS;yBACvB;qBACF;iBACF;aACF,CAAC;YAEF,MAAM,6BAA6B,GAAG,IAAI,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;YAErF,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAAC,OAAO,EAAE,CAAC;YAE7D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;gBAC9B,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,6BAA6B;gBACrC,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACpD,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,wCAAwC;YACxC,MAAM,kBAAkB,GAAG;gBACzB,GAAG,WAAW;gBACd,QAAQ,EAAE;oBACR,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,UAAU;oBAC3C,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,WAAW;iBAC9C;aACF,CAAC;YAEF,MAAM,uBAAuB,GAAG,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;YAEzE,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,CAAC;YAEvD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;gBAC9B,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,iCAAiC;gBACzC,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACpD,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,0DAA0D;YAC1D,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;YAEzF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAE5C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;gBAC9B,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,2BAA2B;gBACnC,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAChD,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,SAAS;YACT,MAAM,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,2BAAY,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,SAAS;YACT,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC/C,UAAU,CAAC,GAAG,EAAE;YACd,+BAA+B;YAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,gBAAgB,GAAG;gBACvB,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE;oBACP,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAY,EAAE,EAAE;wBACjD,IAAI,IAAI,KAAK,eAAe,IAAI,IAAI,KAAK,eAAe;4BAAE,OAAO,gBAAgB,CAAC;wBAClF,IAAI,IAAI,KAAK,kBAAkB;4BAAE,OAAO,gBAAgB,CAAC;wBACzD,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC;iBACH;aACF,CAAC;YAEF,kBAAkB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACnD,MAAM,qBAAqB,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAClC,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;YACjG,MAAM,gBAAgB,GAAG;gBACvB,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE;oBACP,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAY,EAAE,EAAE;wBACjD,IAAI,IAAI,KAAK,kBAAkB;4BAAE,OAAO,gBAAgB,CAAC;wBACzD,OAAO,IAAI,CAAC,CAAC,0BAA0B;oBACzC,CAAC,CAAC;iBACH;aACF,CAAC;YAEF,MAAM,qBAAqB,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;gBAC9B,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,wCAAwC;gBAChD,QAAQ,EAAE,YAAY;aACvB,CAAC,CAAC;YACH,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,cAAc,GAAG;gBACrB,GAAG,WAAW;gBACd,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE;oBACP,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAY,EAAE,EAAE;wBACjD,IAAI,IAAI,KAAK,kBAAkB;4BAAE,OAAO,gBAAgB,CAAC;wBACzD,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC;iBACH;aACF,CAAC;YAEF,kBAAkB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACnD,MAAM,mBAAmB,GAAG,IAAI,gBAAgB,CAAC,cAAc,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,CAAC;YAEnD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAClC,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;YACrF,MAAM,gBAAgB,GAAG;gBACvB,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE;oBACR,SAAS,EAAE;wBACT;4BACE,IAAI,EAAE,WAAW;4BACjB,WAAW,EAAE,qBAAqB;yBACnC;qBACF;iBACF;gBACD,OAAO,EAAE;oBACP,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAY,EAAE,EAAE;wBACjD,IAAI,IAAI,KAAK,eAAe;4BAAE,OAAO,sBAAsB,CAAC;wBAC5D,IAAI,IAAI,KAAK,kBAAkB;4BAAE,OAAO,gBAAgB,CAAC;wBACzD,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC;iBACH;aACF,CAAC;YAEF,kBAAkB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACnD,MAAM,qBAAqB,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAClC,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;YACzF,MAAM,gBAAgB,GAAG;gBACvB,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE;oBACR,SAAS,EAAE;wBACT;4BACE,IAAI,EAAE,WAAW;4BACjB,WAAW,EAAE,qBAAqB;yBACnC;qBACF;iBACF;gBACD,OAAO,EAAE;oBACP,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAY,EAAE,EAAE;wBACjD,IAAI,IAAI,KAAK,eAAe;4BAAE,OAAO,sBAAsB,CAAC;wBAC5D,IAAI,IAAI,KAAK,kBAAkB;4BAAE,OAAO,gBAAgB,CAAC;wBACzD,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC;iBACH;aACF,CAAC;YAEF,kBAAkB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACnD,MAAM,qBAAqB,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAClC,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,wDAAwD;YACxD,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAElD,MAAM,gBAAgB,GAAG;gBACvB,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE;oBACP,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAY,EAAE,EAAE;wBACjD,IAAI,IAAI,KAAK,eAAe;4BAAE,OAAO,eAAe,CAAC;wBACrD,IAAI,IAAI,KAAK,kBAAkB;4BAAE,OAAO,gBAAgB,CAAC;wBACzD,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC;iBACH;aACF,CAAC;YAEF,MAAM,qBAAqB,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;gBAC9B,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,wCAAwC;gBAChD,QAAQ,EAAE,YAAY;aACvB,CAAC,CAAC;YACH,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;YACpF,wCAAwC;YACxC,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;YAEnF,MAAM,gBAAgB,GAAG;gBACvB,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE;oBACP,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAY,EAAE,EAAE;wBACjD,IAAI,IAAI,KAAK,eAAe;4BAAE,OAAO,YAAY,CAAC;wBAClD,IAAI,IAAI,KAAK,kBAAkB;4BAAE,OAAO,gBAAgB,CAAC;wBACzD,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC;iBACH;aACF,CAAC;YAEF,MAAM,qBAAqB,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;gBAC9B,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,wCAAwC;gBAChD,QAAQ,EAAE,YAAY;aACvB,CAAC,CAAC;YACH,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAClF,MAAM,gBAAgB,GAAG;gBACvB,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE;oBACP,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAY,EAAE,EAAE;wBACjD,IAAI,IAAI,KAAK,kBAAkB;4BAAE,OAAO,gBAAgB,CAAC;wBACzD,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC;iBACH;aACF,CAAC;YAEF,MAAM,qBAAqB,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;gBAC9B,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,wCAAwC;gBAChD,QAAQ,EAAE,YAAY;aACvB,CAAC,CAAC;YACH,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ToolFunction.test.js","sourceRoot":"","sources":["../../src/function/ToolFunction.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -117,18 +117,19 @@ export declare class ToolsService {
|
|
|
117
117
|
*/
|
|
118
118
|
getToolsWithOverrides(appVersionId: string, functionName: string): Promise<Array<Tool<any>>>;
|
|
119
119
|
/**
|
|
120
|
-
*
|
|
120
|
+
* Apply default auth requirements if none are specified
|
|
121
121
|
* @param authRequirements Original authentication requirements
|
|
122
|
-
* @returns
|
|
122
|
+
* @returns Auth requirements with default OptiID if none specified, otherwise unchanged
|
|
123
123
|
*/
|
|
124
|
-
private
|
|
124
|
+
private withDefaultAuthRequirements;
|
|
125
125
|
/**
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
* @
|
|
126
|
+
* Check if an endpoint requires OptiID authentication
|
|
127
|
+
* Tools: Check auth requirements for OptiID provider
|
|
128
|
+
* Interactions: Always require OptiID
|
|
129
|
+
* @param endpoint The endpoint path to check
|
|
130
|
+
* @returns true if the endpoint requires OptiID auth
|
|
130
131
|
*/
|
|
131
|
-
|
|
132
|
+
requiresOptiIdAuth(endpoint: string): boolean;
|
|
132
133
|
/**
|
|
133
134
|
* Register a tool function with generic auth data
|
|
134
135
|
* @param name Tool name
|
|
@@ -136,7 +137,7 @@ export declare class ToolsService {
|
|
|
136
137
|
* @param handler Function implementing the tool
|
|
137
138
|
* @param parameters List of parameters for the tool
|
|
138
139
|
* @param endpoint API endpoint for the tool
|
|
139
|
-
* @param authRequirements Authentication requirements (optional)
|
|
140
|
+
* @param authRequirements Authentication requirements (optional - defaults to OptiID if not specified)
|
|
140
141
|
*/
|
|
141
142
|
registerTool<TAuthData>(name: string, description: string, handler: (functionContext: ToolFunction | GlobalToolFunction, params: unknown, authData?: TAuthData) => Promise<unknown>, parameters: Parameter[], endpoint: string, authRequirements?: AuthRequirement[]): void;
|
|
142
143
|
/**
|