@optimizely-opal/opal-tool-ocp-sdk 0.0.0-dev.2 → 0.0.0-dev.3
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 +16 -22
- package/dist/decorator/Decorator.d.ts +2 -4
- package/dist/decorator/Decorator.d.ts.map +1 -1
- package/dist/decorator/Decorator.js +4 -20
- package/dist/decorator/Decorator.js.map +1 -1
- package/dist/decorator/Decorator.test.js +0 -54
- package/dist/decorator/Decorator.test.js.map +1 -1
- package/dist/function/ToolFunction.d.ts +10 -1
- package/dist/function/ToolFunction.d.ts.map +1 -1
- package/dist/function/ToolFunction.js +12 -0
- package/dist/function/ToolFunction.js.map +1 -1
- package/dist/function/ToolFunction.test.js +24 -2
- package/dist/function/ToolFunction.test.js.map +1 -1
- package/package.json +8 -3
- package/src/decorator/Decorator.test.ts +0 -62
- package/src/decorator/Decorator.ts +4 -24
- package/src/function/ToolFunction.test.ts +29 -2
- package/src/function/ToolFunction.ts +12 -1
package/README.md
CHANGED
|
@@ -34,11 +34,6 @@ Create a tool function class by extending `ToolFunction` and registering your to
|
|
|
34
34
|
import { ToolFunction, tool, interaction, ParameterType, InteractionResult, OptiIdAuthData } from '@optimizely-opal/opal-tool-ocp-sdk';
|
|
35
35
|
|
|
36
36
|
export class MyToolFunction extends ToolFunction {
|
|
37
|
-
// Implement required bearer token validation method
|
|
38
|
-
validateBearerToken(token: string): boolean {
|
|
39
|
-
const expectedToken = process.env.OPAL_TOOL_TOKEN;
|
|
40
|
-
return token === expectedToken;
|
|
41
|
-
}
|
|
42
37
|
|
|
43
38
|
// Register a simple tool without authentication
|
|
44
39
|
@tool({
|
|
@@ -181,16 +176,18 @@ The SDK automatically extracts Bearer tokens from the `authorization` header for
|
|
|
181
176
|
**Token Validation:**
|
|
182
177
|
- Bearer tokens are extracted from the `authorization: Bearer <token>` header
|
|
183
178
|
- Empty strings and `undefined` tokens are treated as missing (no validation performed)
|
|
184
|
-
-
|
|
179
|
+
- **Optionally override** the `validateBearerToken(token: string): boolean` method to implement custom validation logic
|
|
180
|
+
- The default implementation returns `true` (accepts all tokens) - override if you need custom authorization
|
|
181
|
+
- If validation fails, returns HTTP 403 Forbidden before reaching your handler methods
|
|
185
182
|
|
|
186
183
|
```typescript
|
|
187
184
|
export class MyToolFunction extends ToolFunction {
|
|
188
|
-
//
|
|
189
|
-
validateBearerToken(token: string): boolean {
|
|
190
|
-
// If you don't need bearer token validation,
|
|
191
|
-
//
|
|
185
|
+
// Optional: Override this method to implement custom bearer token validation
|
|
186
|
+
protected override validateBearerToken(token: string): boolean {
|
|
187
|
+
// If you don't need bearer token validation, don't override this method
|
|
188
|
+
// The default implementation returns true
|
|
192
189
|
|
|
193
|
-
// For
|
|
190
|
+
// For custom validation, compare against expected token
|
|
194
191
|
const expectedToken = process.env.OPAL_TOOL_TOKEN;
|
|
195
192
|
return token === expectedToken;
|
|
196
193
|
}
|
|
@@ -222,7 +219,8 @@ export class MyToolFunction extends ToolFunction {
|
|
|
222
219
|
- Set by users when registering tools in Opal
|
|
223
220
|
- Used to authorize tool requests from Opal instances
|
|
224
221
|
- Validates that requests are coming from trusted Opal sources
|
|
225
|
-
-
|
|
222
|
+
- **Optionally override** the `validateBearerToken(token: string): boolean` method for custom authorization
|
|
223
|
+
- Default implementation accepts all tokens - override for security
|
|
226
224
|
- If validation fails, returns HTTP 403 Forbidden before reaching your handler methods
|
|
227
225
|
|
|
228
226
|
|
|
@@ -280,11 +278,11 @@ Abstract base class for OCP functions:
|
|
|
280
278
|
```typescript
|
|
281
279
|
export abstract class ToolFunction extends Function {
|
|
282
280
|
public async perform(): Promise<Response>;
|
|
283
|
-
protected
|
|
281
|
+
protected validateBearerToken(token: string): boolean;
|
|
284
282
|
}
|
|
285
283
|
```
|
|
286
284
|
|
|
287
|
-
Extend this class and implement your OCP function. The `perform` method automatically routes requests to registered tools and handles bearer token validation. You
|
|
285
|
+
Extend this class and implement your OCP function. The `perform` method automatically routes requests to registered tools and handles bearer token validation. **You can optionally override the `validateBearerToken` method** to define custom bearer token authorization for your tools.
|
|
288
286
|
|
|
289
287
|
### Models
|
|
290
288
|
|
|
@@ -389,12 +387,8 @@ yarn lint
|
|
|
389
387
|
import { ToolFunction, tool, interaction, ParameterType, OptiIdAuthData, InteractionResult } from '@optimizely-opal/opal-ocp-sdk';
|
|
390
388
|
|
|
391
389
|
export class AuthenticatedFunction extends ToolFunction {
|
|
392
|
-
//
|
|
393
|
-
validateBearerToken(token: string): boolean {
|
|
394
|
-
// If you don't need bearer token validation, simply return true
|
|
395
|
-
// return true;
|
|
396
|
-
|
|
397
|
-
// For actual validation, compare against expected token
|
|
390
|
+
// Optional: Override this method for custom bearer token validation
|
|
391
|
+
protected override validateBearerToken(token: string): boolean {
|
|
398
392
|
const expectedToken = process.env.OPAL_TOOL_TOKEN;
|
|
399
393
|
return token === expectedToken;
|
|
400
394
|
}
|
|
@@ -560,8 +554,8 @@ import * from './tools';
|
|
|
560
554
|
|
|
561
555
|
export class MyToolFunction extends ToolFunction {
|
|
562
556
|
|
|
563
|
-
//
|
|
564
|
-
validateBearerToken(token: string): boolean {
|
|
557
|
+
// Optional: Override this method for custom bearer token validation
|
|
558
|
+
protected override validateBearerToken(token: string): boolean {
|
|
565
559
|
const expectedToken = process.env.OPAL_TOOL_TOKEN;
|
|
566
560
|
return token === expectedToken;
|
|
567
561
|
}
|
|
@@ -36,13 +36,11 @@ export interface InteractionConfig {
|
|
|
36
36
|
/**
|
|
37
37
|
* Decorator for registering tool functions
|
|
38
38
|
* Immediately registers the tool with the global ToolsService
|
|
39
|
-
* The handler will have access to 'this' context when called
|
|
40
39
|
*/
|
|
41
|
-
export declare function tool(config: ToolConfig): (
|
|
40
|
+
export declare function tool(config: ToolConfig): (_target: any, _propertyKey: string, descriptor: PropertyDescriptor) => void;
|
|
42
41
|
/**
|
|
43
42
|
* Decorator for registering interaction functions
|
|
44
43
|
* Immediately registers the interaction with the global ToolsService
|
|
45
|
-
* The handler will have access to 'this' context when called
|
|
46
44
|
*/
|
|
47
|
-
export declare function interaction(config: InteractionConfig): (
|
|
45
|
+
export declare function interaction(config: InteractionConfig): (_target: any, _propertyKey: string, descriptor: PropertyDescriptor) => void;
|
|
48
46
|
//# sourceMappingURL=Decorator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Decorator.d.ts","sourceRoot":"","sources":["../../src/decorator/Decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAG5E;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED
|
|
1
|
+
{"version":3,"file":"Decorator.d.ts","sourceRoot":"","sources":["../../src/decorator/Decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAG5E;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,UAAU,IACrB,SAAS,GAAG,EAAE,cAAc,MAAM,EAAE,YAAY,kBAAkB,UAqBnF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,IACnC,SAAS,GAAG,EAAE,cAAc,MAAM,EAAE,YAAY,kBAAkB,UAQnF"}
|
|
@@ -7,41 +7,25 @@ const Service_1 = require("../service/Service");
|
|
|
7
7
|
/**
|
|
8
8
|
* Decorator for registering tool functions
|
|
9
9
|
* Immediately registers the tool with the global ToolsService
|
|
10
|
-
* The handler will have access to 'this' context when called
|
|
11
10
|
*/
|
|
12
11
|
function tool(config) {
|
|
13
|
-
return function (
|
|
12
|
+
return function (_target, _propertyKey, descriptor) {
|
|
14
13
|
// Convert parameter configs to Parameter instances
|
|
15
14
|
const parameters = (config.parameters || []).map((p) => new Models_1.Parameter(p.name, p.type, p.description, p.required));
|
|
16
15
|
// Convert auth requirement configs to AuthRequirement instances
|
|
17
16
|
const authRequirements = (config.authRequirements || []).map((a) => new Models_1.AuthRequirement(a.provider, a.scopeBundle, a.required));
|
|
18
|
-
const originalMethod = descriptor.value;
|
|
19
|
-
const boundHandler = function (params, authData) {
|
|
20
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
21
|
-
const instance = new target.constructor();
|
|
22
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
23
|
-
return originalMethod.call(instance, params, authData);
|
|
24
|
-
};
|
|
25
17
|
// Immediately register with global ToolsService
|
|
26
|
-
Service_1.toolsService.registerTool(config.name, config.description,
|
|
18
|
+
Service_1.toolsService.registerTool(config.name, config.description, descriptor.value, parameters, config.endpoint, authRequirements);
|
|
27
19
|
};
|
|
28
20
|
}
|
|
29
21
|
/**
|
|
30
22
|
* Decorator for registering interaction functions
|
|
31
23
|
* Immediately registers the interaction with the global ToolsService
|
|
32
|
-
* The handler will have access to 'this' context when called
|
|
33
24
|
*/
|
|
34
25
|
function interaction(config) {
|
|
35
|
-
return function (
|
|
36
|
-
const originalMethod = descriptor.value;
|
|
37
|
-
const boundHandler = function (data, authData) {
|
|
38
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
39
|
-
const instance = new target.constructor();
|
|
40
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
41
|
-
return originalMethod.call(instance, data, authData);
|
|
42
|
-
};
|
|
26
|
+
return function (_target, _propertyKey, descriptor) {
|
|
43
27
|
// Immediately register with global ToolsService
|
|
44
|
-
Service_1.toolsService.registerInteraction(config.name,
|
|
28
|
+
Service_1.toolsService.registerInteraction(config.name, descriptor.value, config.endpoint);
|
|
45
29
|
};
|
|
46
30
|
}
|
|
47
31
|
//# sourceMappingURL=Decorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Decorator.js","sourceRoot":"","sources":["../../src/decorator/Decorator.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"Decorator.js","sourceRoot":"","sources":["../../src/decorator/Decorator.ts"],"names":[],"mappings":";;AA6CA,oBAsBC;AAMD,kCASC;AAlFD,4CAA4E;AAC5E,gDAAkD;AAwClD;;;GAGG;AACH,SAAgB,IAAI,CAAC,MAAkB;IACrC,OAAO,UAAS,OAAY,EAAE,YAAoB,EAAE,UAA8B;QAChF,mDAAmD;QACnD,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACrD,IAAI,kBAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CACzD,CAAC;QAEF,gEAAgE;QAChE,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACjE,IAAI,wBAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAC3D,CAAC;QAEF,gDAAgD;QAChD,sBAAY,CAAC,YAAY,CACvB,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,WAAW,EAClB,UAAU,CAAC,KAAK,EAChB,UAAU,EACV,MAAM,CAAC,QAAQ,EACf,gBAAgB,CACjB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,MAAyB;IACnD,OAAO,UAAS,OAAY,EAAE,YAAoB,EAAE,UAA8B;QAChF,gDAAgD;QAChD,sBAAY,CAAC,mBAAmB,CAC9B,MAAM,CAAC,IAAI,EACX,UAAU,CAAC,KAAK,EAChB,MAAM,CAAC,QAAQ,CAChB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -414,59 +414,5 @@ describe('Decorators', () => {
|
|
|
414
414
|
);
|
|
415
415
|
});
|
|
416
416
|
});
|
|
417
|
-
describe('handler instance context', () => {
|
|
418
|
-
it('should allow tool handler to call class methods', async () => {
|
|
419
|
-
class TestClass {
|
|
420
|
-
getValue() {
|
|
421
|
-
return 'class-method-called';
|
|
422
|
-
}
|
|
423
|
-
async instanceMethodTest(_params) {
|
|
424
|
-
return { result: this.getValue() };
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
__decorate([
|
|
428
|
-
(0, Decorator_1.tool)({
|
|
429
|
-
name: 'instanceMethodTest',
|
|
430
|
-
description: 'Test calling class methods',
|
|
431
|
-
parameters: [],
|
|
432
|
-
endpoint: '/instance-method-test'
|
|
433
|
-
})
|
|
434
|
-
], TestClass.prototype, "instanceMethodTest", null);
|
|
435
|
-
// Get the registered handler
|
|
436
|
-
const mockedRegisterTool = jest.mocked(Service_1.toolsService.registerTool);
|
|
437
|
-
const registerToolCall = mockedRegisterTool.mock.calls.find((call) => call[0] === 'instanceMethodTest');
|
|
438
|
-
const registeredHandler = registerToolCall[2];
|
|
439
|
-
// Call the handler
|
|
440
|
-
const result = await registeredHandler({}, {});
|
|
441
|
-
// Should be able to call class methods through 'this'
|
|
442
|
-
expect(result.result).toBe('class-method-called');
|
|
443
|
-
expect(TestClass).toBeDefined();
|
|
444
|
-
});
|
|
445
|
-
it('should allow interaction handler to call class methods', async () => {
|
|
446
|
-
class TestClass {
|
|
447
|
-
processData() {
|
|
448
|
-
return 'interaction-processed';
|
|
449
|
-
}
|
|
450
|
-
async instanceInteractionTest(_data) {
|
|
451
|
-
return { message: this.processData() };
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
__decorate([
|
|
455
|
-
(0, Decorator_1.interaction)({
|
|
456
|
-
name: 'instanceInteractionTest',
|
|
457
|
-
endpoint: '/instance-interaction-test'
|
|
458
|
-
})
|
|
459
|
-
], TestClass.prototype, "instanceInteractionTest", null);
|
|
460
|
-
// Get the registered handler
|
|
461
|
-
const mockedRegisterInteraction = jest.mocked(Service_1.toolsService.registerInteraction);
|
|
462
|
-
const registerInteractionCall = mockedRegisterInteraction.mock.calls.find((call) => call[0] === 'instanceInteractionTest');
|
|
463
|
-
const registeredHandler = registerInteractionCall[1];
|
|
464
|
-
// Call the handler
|
|
465
|
-
const result = await registeredHandler({});
|
|
466
|
-
// Should be able to call class methods through 'this'
|
|
467
|
-
expect(result.message).toBe('interaction-processed');
|
|
468
|
-
expect(TestClass).toBeDefined();
|
|
469
|
-
});
|
|
470
|
-
});
|
|
471
417
|
});
|
|
472
418
|
//# sourceMappingURL=Decorator.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Decorator.test.js","sourceRoot":"","sources":["../../src/decorator/Decorator.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Decorator.test.js","sourceRoot":"","sources":["../../src/decorator/Decorator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,15 @@ export declare abstract class ToolFunction extends Function {
|
|
|
10
10
|
* @returns Response as the HTTP response
|
|
11
11
|
*/
|
|
12
12
|
perform(): Promise<Response>;
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Validates the bearer token for authorization.
|
|
15
|
+
*
|
|
16
|
+
* This method provides a default implementation that accepts all tokens.
|
|
17
|
+
* Subclasses can override this method to implement custom bearer token validation logic.
|
|
18
|
+
*
|
|
19
|
+
* @param _bearerToken - The bearer token extracted from the Authorization header
|
|
20
|
+
* @returns true if the token is valid and the request should proceed, false to return 403 Forbidden
|
|
21
|
+
*/
|
|
22
|
+
protected validateBearerToken(_bearerToken: string): boolean;
|
|
14
23
|
}
|
|
15
24
|
//# sourceMappingURL=ToolFunction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolFunction.d.ts","sourceRoot":"","sources":["../../src/function/ToolFunction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGvD;;;GAGG;AACH,8BAAsB,YAAa,SAAQ,QAAQ;IAEjD;;;;OAIG;IACU,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;IASzC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"ToolFunction.d.ts","sourceRoot":"","sources":["../../src/function/ToolFunction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGvD;;;GAGG;AACH,8BAAsB,YAAa,SAAQ,QAAQ;IAEjD;;;;OAIG;IACU,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;IASzC;;;;;;;;OAQG;IACH,SAAS,CAAC,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;CAG7D"}
|
|
@@ -20,6 +20,18 @@ class ToolFunction extends app_sdk_1.Function {
|
|
|
20
20
|
}
|
|
21
21
|
return Service_1.toolsService.processRequest(this.request);
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Validates the bearer token for authorization.
|
|
25
|
+
*
|
|
26
|
+
* This method provides a default implementation that accepts all tokens.
|
|
27
|
+
* Subclasses can override this method to implement custom bearer token validation logic.
|
|
28
|
+
*
|
|
29
|
+
* @param _bearerToken - The bearer token extracted from the Authorization header
|
|
30
|
+
* @returns true if the token is valid and the request should proceed, false to return 403 Forbidden
|
|
31
|
+
*/
|
|
32
|
+
validateBearerToken(_bearerToken) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
23
35
|
}
|
|
24
36
|
exports.ToolFunction = ToolFunction;
|
|
25
37
|
//# sourceMappingURL=ToolFunction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolFunction.js","sourceRoot":"","sources":["../../src/function/ToolFunction.ts"],"names":[],"mappings":";;;AAAA,+CAAuD;AACvD,gDAAkD;AAElD;;;GAGG;AACH,MAAsB,YAAa,SAAQ,kBAAQ;IAEjD;;;;OAIG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,WAAW,GAAG,sBAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1E,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1D,OAAO,IAAI,kBAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,sBAAY,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;
|
|
1
|
+
{"version":3,"file":"ToolFunction.js","sourceRoot":"","sources":["../../src/function/ToolFunction.ts"],"names":[],"mappings":";;;AAAA,+CAAuD;AACvD,gDAAkD;AAElD;;;GAGG;AACH,MAAsB,YAAa,SAAQ,kBAAQ;IAEjD;;;;OAIG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,WAAW,GAAG,sBAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1E,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1D,OAAO,IAAI,kBAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,sBAAY,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;OAQG;IACO,mBAAmB,CAAC,YAAoB;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA5BD,oCA4BC"}
|
|
@@ -34,10 +34,9 @@ class TestToolFunction extends ToolFunction_1.ToolFunction {
|
|
|
34
34
|
super(request || {}); // Pass the request parameter properly
|
|
35
35
|
// Set the request directly without defaulting to empty object
|
|
36
36
|
this.request = request;
|
|
37
|
-
// Create a mock implementation of the abstract method
|
|
38
37
|
this.mockValidateBearerToken = jest.fn().mockReturnValue(true);
|
|
39
38
|
}
|
|
40
|
-
//
|
|
39
|
+
// Override the concrete method with mock implementation for testing
|
|
41
40
|
validateBearerToken(bearerToken) {
|
|
42
41
|
return this.mockValidateBearerToken(bearerToken);
|
|
43
42
|
}
|
|
@@ -174,6 +173,29 @@ describe('ToolFunction', () => {
|
|
|
174
173
|
expect(mockProcessRequest).toHaveBeenCalledWith(mockRequest);
|
|
175
174
|
expect(result).toBe(mockResponse);
|
|
176
175
|
});
|
|
176
|
+
it('should use default validateBearerToken implementation when not overridden', async () => {
|
|
177
|
+
// Create a class that doesn't override validateBearerToken
|
|
178
|
+
class DefaultToolFunction extends ToolFunction_1.ToolFunction {
|
|
179
|
+
constructor(request) {
|
|
180
|
+
super(request || {});
|
|
181
|
+
this.request = request;
|
|
182
|
+
}
|
|
183
|
+
getRequest() {
|
|
184
|
+
return this.request;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Arrange
|
|
188
|
+
const defaultToolFunction = new DefaultToolFunction(mockRequest);
|
|
189
|
+
const bearerToken = 'any-token';
|
|
190
|
+
mockExtractBearerToken.mockReturnValue(bearerToken);
|
|
191
|
+
mockProcessRequest.mockResolvedValue(mockResponse);
|
|
192
|
+
// Act
|
|
193
|
+
const result = await defaultToolFunction.perform();
|
|
194
|
+
// Assert - Default implementation should return true and allow request to proceed
|
|
195
|
+
expect(mockExtractBearerToken).toHaveBeenCalledWith(mockRequest.headers);
|
|
196
|
+
expect(mockProcessRequest).toHaveBeenCalledWith(mockRequest);
|
|
197
|
+
expect(result).toBe(mockResponse);
|
|
198
|
+
});
|
|
177
199
|
});
|
|
178
200
|
describe('inheritance', () => {
|
|
179
201
|
it('should be an instance of Function', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolFunction.test.js","sourceRoot":"","sources":["../../src/function/ToolFunction.test.ts"],"names":[],"mappings":";;AAAA,iDAA8C;AAC9C,gDAAkD;AAClD,+CAA6C;AAE7C,wBAAwB;AACxB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,YAAY,EAAE;QACZ,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;QACzB,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE;KAC9B;CACF,CAAC,CAAC,CAAC;AAEJ,gEAAgE;AAChE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,QAAQ,EAAE;QACE,OAAO,CAAM;QACvB,YAAmB,KAAc;YAC/B,wDAAwD;YACxD,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,EAAE,CAAC,CAAC;QACxD,MAAM;QACN,IAAI;QACJ,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE,IAAI,UAAU,EAAE;KAChC,CAAC,CAAC;CACJ,CAAC,CAAC,CAAC;AAEJ,+CAA+C;AAC/C,MAAM,gBAAiB,SAAQ,2BAAY;IACjC,uBAAuB,CAAkD;IAEjF,YAAmB,OAAa;QAC9B,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,sCAAsC;QAC5D,8DAA8D;QAC7D,IAAY,CAAC,OAAO,GAAG,OAAO,CAAC;QAEhC,
|
|
1
|
+
{"version":3,"file":"ToolFunction.test.js","sourceRoot":"","sources":["../../src/function/ToolFunction.test.ts"],"names":[],"mappings":";;AAAA,iDAA8C;AAC9C,gDAAkD;AAClD,+CAA6C;AAE7C,wBAAwB;AACxB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,YAAY,EAAE;QACZ,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;QACzB,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE;KAC9B;CACF,CAAC,CAAC,CAAC;AAEJ,gEAAgE;AAChE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,QAAQ,EAAE;QACE,OAAO,CAAM;QACvB,YAAmB,KAAc;YAC/B,wDAAwD;YACxD,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,EAAE,CAAC,CAAC;QACxD,MAAM;QACN,IAAI;QACJ,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE,IAAI,UAAU,EAAE;KAChC,CAAC,CAAC;CACJ,CAAC,CAAC,CAAC;AAEJ,+CAA+C;AAC/C,MAAM,gBAAiB,SAAQ,2BAAY;IACjC,uBAAuB,CAAkD;IAEjF,YAAmB,OAAa;QAC9B,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,sCAAsC;QAC5D,8DAA8D;QAC7D,IAAY,CAAC,OAAO,GAAG,OAAO,CAAC;QAEhC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,oEAAoE;IAC1D,mBAAmB,CAAC,WAAmB;QAC/C,OAAO,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC;IAED,iDAAiD;IAC1C,UAAU;QACf,OAAQ,IAAY,CAAC,OAAO,CAAC;IAC/B,CAAC;IAEM,0BAA0B;QAC/B,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACtC,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,sBAAmF,CAAC;IAExF,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,wBAAwB;QACxB,WAAW,GAAG;YACZ,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO;SACd,CAAC;QACF,YAAY,GAAG,EAAc,CAAC;QAE9B,kBAAkB;QAClB,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAY,CAAC,cAAc,CAAC,CAAC;QAC9D,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAY,CAAC,kBAAkB,CAAC,CAAC;QAEtE,uBAAuB;QACvB,YAAY,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,UAAU;YACV,MAAM,WAAW,GAAG,iBAAiB,CAAC;YACtC,sBAAsB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YACpD,YAAY,CAAC,0BAA0B,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAChE,kBAAkB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAEnD,MAAM;YACN,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAE5C,SAAS;YACT,MAAM,CAAC,sBAAsB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzE,MAAM,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;YACpF,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;YAC9E,UAAU;YACV,MAAM,WAAW,GAAG,mBAAmB,CAAC;YACxC,sBAAsB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YACpD,YAAY,CAAC,0BAA0B,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAEjE,MAAM;YACN,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAE5C,SAAS;YACT,MAAM,CAAC,sBAAsB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzE,MAAM,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;YACpF,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,kBAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,8EAA8E;YAC9E,MAAM,YAAY,GAAG,uFAAuF;gBAC1G,wEAAwE,CAAC;YAC3E,sBAAsB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YACrD,YAAY,CAAC,0BAA0B,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAChE,kBAAkB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAEnD,MAAM;YACN,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAE5C,SAAS;YACT,MAAM,CAAC,sBAAsB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzE,MAAM,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;YACrF,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,UAAU;YACV,MAAM,WAAW,GAAG,iBAAiB,CAAC;YACtC,sBAAsB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YACpD,YAAY,CAAC,0BAA0B,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE;gBAChE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YAEH,eAAe;YACf,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;YAC/E,MAAM,CAAC,sBAAsB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzE,MAAM,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;YACpF,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,UAAU;YACV,MAAM,WAAW,GAAG,YAAY,CAAC;YACjC,sBAAsB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YACpD,YAAY,CAAC,0BAA0B,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAChE,kBAAkB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAEnD,MAAM;YACN,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAE7B,SAAS;YACT,MAAM,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC3E,MAAM,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,UAAU;YACV,MAAM,WAAW,GAAG,YAAY,CAAC;YACjC,sBAAsB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YACpD,YAAY,CAAC,0BAA0B,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAChE,kBAAkB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAEnD,MAAM;YACN,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAE7B,SAAS;YACT,MAAM,CAAC,sBAAsB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,sBAAsB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,UAAU;YACV,sBAAsB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAClD,kBAAkB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAEnD,MAAM;YACN,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAE5C,SAAS;YACT,MAAM,CAAC,sBAAsB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzE,MAAM,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACzE,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,UAAU;YACV,sBAAsB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAC3C,kBAAkB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAEnD,MAAM;YACN,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAE5C,SAAS;YACT,MAAM,CAAC,sBAAsB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzE,MAAM,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACzE,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;YACzF,2DAA2D;YAC3D,MAAM,mBAAoB,SAAQ,2BAAY;gBAC5C,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,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;YACjE,MAAM,WAAW,GAAG,WAAW,CAAC;YAChC,sBAAsB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YACpD,kBAAkB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAEnD,MAAM;YACN,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,CAAC;YAEnD,kFAAkF;YAClF,MAAM,CAAC,sBAAsB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzE,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpC,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;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@optimizely-opal/opal-tool-ocp-sdk",
|
|
3
|
-
"version": "0.0.0-dev.
|
|
3
|
+
"version": "0.0.0-dev.3",
|
|
4
4
|
"description": "OCP SDK for Opal tool",
|
|
5
5
|
"scripts": {
|
|
6
|
+
"validate-deps": "node scripts/validate-deps.js",
|
|
7
|
+
"prebuild": "yarn run validate-deps",
|
|
6
8
|
"build": "yarn tsc",
|
|
7
9
|
"build-watch": "tsc -w",
|
|
8
10
|
"lint": "npx eslint 'src/**/*.ts'",
|
|
@@ -49,10 +51,13 @@
|
|
|
49
51
|
"rimraf": "^6.0.1",
|
|
50
52
|
"ts-jest": "^29.3.2",
|
|
51
53
|
"tslint": "^6.1.3",
|
|
52
|
-
"typescript": "^5.8.2"
|
|
54
|
+
"typescript": "^5.8.2",
|
|
55
|
+
"@zaiusinc/app-sdk": "2.2.1"
|
|
53
56
|
},
|
|
54
57
|
"dependencies": {
|
|
55
|
-
"@zaiusinc/app-sdk": "2.2.2",
|
|
56
58
|
"reflect-metadata": "^0.2.2"
|
|
59
|
+
},
|
|
60
|
+
"peerDependencies": {
|
|
61
|
+
"@zaiusinc/app-sdk": "2.2.1"
|
|
57
62
|
}
|
|
58
63
|
}
|
|
@@ -519,67 +519,5 @@ describe('Decorators', () => {
|
|
|
519
519
|
);
|
|
520
520
|
});
|
|
521
521
|
});
|
|
522
|
-
|
|
523
|
-
describe('handler instance context', () => {
|
|
524
|
-
it('should allow tool handler to call class methods', async () => {
|
|
525
|
-
class TestClass {
|
|
526
|
-
private getValue() {
|
|
527
|
-
return 'class-method-called';
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
@tool({
|
|
531
|
-
name: 'instanceMethodTest',
|
|
532
|
-
description: 'Test calling class methods',
|
|
533
|
-
parameters: [],
|
|
534
|
-
endpoint: '/instance-method-test'
|
|
535
|
-
})
|
|
536
|
-
public async instanceMethodTest(_params: any) {
|
|
537
|
-
return { result: this.getValue() };
|
|
538
|
-
}
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
// Get the registered handler
|
|
542
|
-
const mockedRegisterTool = jest.mocked(toolsService.registerTool);
|
|
543
|
-
const registerToolCall = mockedRegisterTool.mock.calls.find((call) => call[0] === 'instanceMethodTest');
|
|
544
|
-
const registeredHandler = registerToolCall![2];
|
|
545
|
-
|
|
546
|
-
// Call the handler
|
|
547
|
-
const result = await registeredHandler({}, {});
|
|
548
|
-
|
|
549
|
-
// Should be able to call class methods through 'this'
|
|
550
|
-
expect((result as any).result).toBe('class-method-called');
|
|
551
|
-
expect(TestClass).toBeDefined();
|
|
552
|
-
});
|
|
553
|
-
|
|
554
|
-
it('should allow interaction handler to call class methods', async () => {
|
|
555
|
-
class TestClass {
|
|
556
|
-
private processData() {
|
|
557
|
-
return 'interaction-processed';
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
@interaction({
|
|
561
|
-
name: 'instanceInteractionTest',
|
|
562
|
-
endpoint: '/instance-interaction-test'
|
|
563
|
-
})
|
|
564
|
-
public async instanceInteractionTest(_data: any) {
|
|
565
|
-
return { message: this.processData() };
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
// Get the registered handler
|
|
570
|
-
const mockedRegisterInteraction = jest.mocked(toolsService.registerInteraction);
|
|
571
|
-
const registerInteractionCall = mockedRegisterInteraction.mock.calls.find(
|
|
572
|
-
(call) => call[0] === 'instanceInteractionTest'
|
|
573
|
-
);
|
|
574
|
-
const registeredHandler = registerInteractionCall![1];
|
|
575
|
-
|
|
576
|
-
// Call the handler
|
|
577
|
-
const result = await registeredHandler({});
|
|
578
|
-
|
|
579
|
-
// Should be able to call class methods through 'this'
|
|
580
|
-
expect((result as any).message).toBe('interaction-processed');
|
|
581
|
-
expect(TestClass).toBeDefined();
|
|
582
|
-
});
|
|
583
|
-
});
|
|
584
522
|
});
|
|
585
523
|
|
|
@@ -42,10 +42,9 @@ export interface InteractionConfig {
|
|
|
42
42
|
/**
|
|
43
43
|
* Decorator for registering tool functions
|
|
44
44
|
* Immediately registers the tool with the global ToolsService
|
|
45
|
-
* The handler will have access to 'this' context when called
|
|
46
45
|
*/
|
|
47
46
|
export function tool(config: ToolConfig) {
|
|
48
|
-
return function(
|
|
47
|
+
return function(_target: any, _propertyKey: string, descriptor: PropertyDescriptor) {
|
|
49
48
|
// Convert parameter configs to Parameter instances
|
|
50
49
|
const parameters = (config.parameters || []).map((p) =>
|
|
51
50
|
new Parameter(p.name, p.type, p.description, p.required)
|
|
@@ -56,20 +55,11 @@ export function tool(config: ToolConfig) {
|
|
|
56
55
|
new AuthRequirement(a.provider, a.scopeBundle, a.required)
|
|
57
56
|
);
|
|
58
57
|
|
|
59
|
-
const originalMethod = descriptor.value;
|
|
60
|
-
|
|
61
|
-
const boundHandler = function(params: any, authData: any) {
|
|
62
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
63
|
-
const instance = new target.constructor();
|
|
64
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
65
|
-
return originalMethod.call(instance, params, authData);
|
|
66
|
-
};
|
|
67
|
-
|
|
68
58
|
// Immediately register with global ToolsService
|
|
69
59
|
toolsService.registerTool(
|
|
70
60
|
config.name,
|
|
71
61
|
config.description,
|
|
72
|
-
|
|
62
|
+
descriptor.value,
|
|
73
63
|
parameters,
|
|
74
64
|
config.endpoint,
|
|
75
65
|
authRequirements
|
|
@@ -80,23 +70,13 @@ export function tool(config: ToolConfig) {
|
|
|
80
70
|
/**
|
|
81
71
|
* Decorator for registering interaction functions
|
|
82
72
|
* Immediately registers the interaction with the global ToolsService
|
|
83
|
-
* The handler will have access to 'this' context when called
|
|
84
73
|
*/
|
|
85
74
|
export function interaction(config: InteractionConfig) {
|
|
86
|
-
return function(
|
|
87
|
-
const originalMethod = descriptor.value;
|
|
88
|
-
|
|
89
|
-
const boundHandler = function(data: any, authData?: any) {
|
|
90
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
91
|
-
const instance = new target.constructor();
|
|
92
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
93
|
-
return originalMethod.call(instance, data, authData);
|
|
94
|
-
};
|
|
95
|
-
|
|
75
|
+
return function(_target: any, _propertyKey: string, descriptor: PropertyDescriptor) {
|
|
96
76
|
// Immediately register with global ToolsService
|
|
97
77
|
toolsService.registerInteraction(
|
|
98
78
|
config.name,
|
|
99
|
-
|
|
79
|
+
descriptor.value,
|
|
100
80
|
config.endpoint
|
|
101
81
|
);
|
|
102
82
|
};
|
|
@@ -37,11 +37,10 @@ class TestToolFunction extends ToolFunction {
|
|
|
37
37
|
// Set the request directly without defaulting to empty object
|
|
38
38
|
(this as any).request = request;
|
|
39
39
|
|
|
40
|
-
// Create a mock implementation of the abstract method
|
|
41
40
|
this.mockValidateBearerToken = jest.fn().mockReturnValue(true);
|
|
42
41
|
}
|
|
43
42
|
|
|
44
|
-
//
|
|
43
|
+
// Override the concrete method with mock implementation for testing
|
|
45
44
|
protected validateBearerToken(bearerToken: string): boolean {
|
|
46
45
|
return this.mockValidateBearerToken(bearerToken);
|
|
47
46
|
}
|
|
@@ -208,6 +207,34 @@ describe('ToolFunction', () => {
|
|
|
208
207
|
expect(mockProcessRequest).toHaveBeenCalledWith(mockRequest);
|
|
209
208
|
expect(result).toBe(mockResponse);
|
|
210
209
|
});
|
|
210
|
+
|
|
211
|
+
it('should use default validateBearerToken implementation when not overridden', async () => {
|
|
212
|
+
// Create a class that doesn't override validateBearerToken
|
|
213
|
+
class DefaultToolFunction extends ToolFunction {
|
|
214
|
+
public constructor(request?: any) {
|
|
215
|
+
super(request || {});
|
|
216
|
+
(this as any).request = request;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
public getRequest() {
|
|
220
|
+
return (this as any).request;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// Arrange
|
|
225
|
+
const defaultToolFunction = new DefaultToolFunction(mockRequest);
|
|
226
|
+
const bearerToken = 'any-token';
|
|
227
|
+
mockExtractBearerToken.mockReturnValue(bearerToken);
|
|
228
|
+
mockProcessRequest.mockResolvedValue(mockResponse);
|
|
229
|
+
|
|
230
|
+
// Act
|
|
231
|
+
const result = await defaultToolFunction.perform();
|
|
232
|
+
|
|
233
|
+
// Assert - Default implementation should return true and allow request to proceed
|
|
234
|
+
expect(mockExtractBearerToken).toHaveBeenCalledWith(mockRequest.headers);
|
|
235
|
+
expect(mockProcessRequest).toHaveBeenCalledWith(mockRequest);
|
|
236
|
+
expect(result).toBe(mockResponse);
|
|
237
|
+
});
|
|
211
238
|
});
|
|
212
239
|
|
|
213
240
|
describe('inheritance', () => {
|
|
@@ -21,5 +21,16 @@ export abstract class ToolFunction extends Function {
|
|
|
21
21
|
return toolsService.processRequest(this.request);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Validates the bearer token for authorization.
|
|
26
|
+
*
|
|
27
|
+
* This method provides a default implementation that accepts all tokens.
|
|
28
|
+
* Subclasses can override this method to implement custom bearer token validation logic.
|
|
29
|
+
*
|
|
30
|
+
* @param _bearerToken - The bearer token extracted from the Authorization header
|
|
31
|
+
* @returns true if the token is valid and the request should proceed, false to return 403 Forbidden
|
|
32
|
+
*/
|
|
33
|
+
protected validateBearerToken(_bearerToken: string): boolean {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
25
36
|
}
|