@optimizely-opal/opal-tool-ocp-sdk 0.0.0-beta.1 → 0.0.0-beta.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 +91 -22
- package/dist/decorator/Decorator.d.ts +4 -2
- package/dist/decorator/Decorator.d.ts.map +1 -1
- package/dist/decorator/Decorator.js +26 -4
- package/dist/decorator/Decorator.js.map +1 -1
- package/dist/decorator/Decorator.test.js +110 -0
- 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 +14 -1
- package/dist/function/ToolFunction.js.map +1 -1
- package/dist/function/ToolFunction.test.js +28 -6
- package/dist/function/ToolFunction.test.js.map +1 -1
- package/dist/service/Service.d.ts +7 -7
- package/dist/service/Service.d.ts.map +1 -1
- package/dist/service/Service.js +3 -3
- package/dist/service/Service.js.map +1 -1
- package/dist/service/Service.test.js +82 -13
- package/dist/service/Service.test.js.map +1 -1
- package/package.json +1 -1
- package/src/decorator/Decorator.test.ts +126 -0
- package/src/decorator/Decorator.ts +32 -4
- package/src/function/ToolFunction.test.ts +33 -6
- package/src/function/ToolFunction.ts +14 -2
- package/src/service/Service.test.ts +98 -5
- package/src/service/Service.ts +7 -7
|
@@ -14,8 +14,8 @@ export declare class InteractionResult {
|
|
|
14
14
|
export declare class Interaction<TAuthData> {
|
|
15
15
|
name: string;
|
|
16
16
|
endpoint: string;
|
|
17
|
-
handler: (data: unknown, authData?: TAuthData) => Promise<InteractionResult>;
|
|
18
|
-
constructor(name: string, endpoint: string, handler: (data: unknown, authData?: TAuthData) => Promise<InteractionResult>);
|
|
17
|
+
handler: (functionContext: any, data: unknown, authData?: TAuthData) => Promise<InteractionResult>;
|
|
18
|
+
constructor(name: string, endpoint: string, handler: (functionContext: any, data: unknown, authData?: TAuthData) => Promise<InteractionResult>);
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
21
|
* Tool definition for an Opal tool
|
|
@@ -25,7 +25,7 @@ export declare class Tool<TAuthData> {
|
|
|
25
25
|
description: string;
|
|
26
26
|
parameters: Parameter[];
|
|
27
27
|
endpoint: string;
|
|
28
|
-
handler: (params: unknown, authData?: TAuthData) => Promise<unknown>;
|
|
28
|
+
handler: (functionContext: any, params: unknown, authData?: TAuthData) => Promise<unknown>;
|
|
29
29
|
authRequirements?: AuthRequirement[] | undefined;
|
|
30
30
|
/**
|
|
31
31
|
* HTTP method for the endpoint (default: POST)
|
|
@@ -40,7 +40,7 @@ export declare class Tool<TAuthData> {
|
|
|
40
40
|
* @param handler Function implementing the tool
|
|
41
41
|
* @param authRequirements Authentication requirements (optional)
|
|
42
42
|
*/
|
|
43
|
-
constructor(name: string, description: string, parameters: Parameter[], endpoint: string, handler: (params: unknown, authData?: TAuthData) => Promise<unknown>, authRequirements?: AuthRequirement[] | undefined);
|
|
43
|
+
constructor(name: string, description: string, parameters: Parameter[], endpoint: string, handler: (functionContext: any, params: unknown, authData?: TAuthData) => Promise<unknown>, authRequirements?: AuthRequirement[] | undefined);
|
|
44
44
|
/**
|
|
45
45
|
* Convert to JSON for the discovery endpoint
|
|
46
46
|
*/
|
|
@@ -64,15 +64,15 @@ export declare class ToolsService {
|
|
|
64
64
|
* @param endpoint API endpoint for the tool
|
|
65
65
|
* @param authRequirements Authentication requirements (optional)
|
|
66
66
|
*/
|
|
67
|
-
registerTool<TAuthData>(name: string, description: string, handler: (params: unknown, authData?: TAuthData) => Promise<unknown>, parameters: Parameter[], endpoint: string, authRequirements?: AuthRequirement[]): void;
|
|
67
|
+
registerTool<TAuthData>(name: string, description: string, handler: (functionContext: any, params: unknown, authData?: TAuthData) => Promise<unknown>, parameters: Parameter[], endpoint: string, authRequirements?: AuthRequirement[]): void;
|
|
68
68
|
/**
|
|
69
69
|
* Register a tool interaction with generic auth data
|
|
70
70
|
* @param name Tool name
|
|
71
71
|
* @param handler Function implementing the tool
|
|
72
72
|
* @param endpoint API endpoint for the tool
|
|
73
73
|
*/
|
|
74
|
-
registerInteraction<TAuthData>(name: string, handler: (data: unknown, authData?: TAuthData) => Promise<InteractionResult>, endpoint: string): void;
|
|
75
|
-
processRequest(req: App.Request): Promise<App.Response>;
|
|
74
|
+
registerInteraction<TAuthData>(name: string, handler: (functionContext: any, data: unknown, authData?: TAuthData) => Promise<InteractionResult>, endpoint: string): void;
|
|
75
|
+
processRequest(req: App.Request, functionContext?: any): Promise<App.Response>;
|
|
76
76
|
}
|
|
77
77
|
export declare const toolsService: ToolsService;
|
|
78
78
|
//# sourceMappingURL=Service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Service.d.ts","sourceRoot":"","sources":["../../src/service/Service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAC;AAKzC;;GAEG;AACH,qBAAa,iBAAiB;IAEnB,OAAO,EAAE,MAAM;IACf,IAAI,CAAC,EAAE,MAAM;gBADb,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,YAAA;CAEvB;AAED;;GAEG;AACH,qBAAa,WAAW,CAAC,SAAS;IAEvB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"Service.d.ts","sourceRoot":"","sources":["../../src/service/Service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAC;AAKzC;;GAEG;AACH,qBAAa,iBAAiB;IAEnB,OAAO,EAAE,MAAM;IACf,IAAI,CAAC,EAAE,MAAM;gBADb,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,YAAA;CAEvB;AAED;;GAEG;AACH,qBAAa,WAAW,CAAC,SAAS;IAEvB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,iBAAiB,CAAC;gBAFlG,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,iBAAiB,CAAC;CAE5G;AAED;;GAEG;AACH,qBAAa,IAAI,CAAC,SAAS;IAgBhB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,SAAS,EAAE;IACvB,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC;IAC1F,gBAAgB,CAAC,EAAE,eAAe,EAAE;IApB7C;;OAEG;IACI,UAAU,EAAE,MAAM,CAAU;IAEnC;;;;;;;;OAQG;gBAEM,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,SAAS,EAAE,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,EAC1F,gBAAgB,CAAC,EAAE,eAAe,EAAE,YAAA;IAG7C;;OAEG;IACI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAezC;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,YAAY,CAA4C;IAEhE;;;;OAIG;IACI,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,GAAG,SAAS;IAUnE;;;;;;;;OAQG;IACI,YAAY,CAAC,SAAS,EAC3B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,EAC1F,UAAU,EAAE,SAAS,EAAE,EACvB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,eAAe,EAAE,GACnC,IAAI;IAKP;;;;;OAKG;IACI,mBAAmB,CAAC,SAAS,EAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,iBAAiB,CAAC,EAClG,QAAQ,EAAE,MAAM,GACf,IAAI;IAKM,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;CAiD5F;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
package/dist/service/Service.js
CHANGED
|
@@ -150,7 +150,7 @@ class ToolsService {
|
|
|
150
150
|
const func = new Interaction(name, endpoint, handler);
|
|
151
151
|
this.interactions.set(endpoint, func);
|
|
152
152
|
}
|
|
153
|
-
async processRequest(req) {
|
|
153
|
+
async processRequest(req, functionContext) {
|
|
154
154
|
if (req.path === '/discovery') {
|
|
155
155
|
return new App.Response(200, { functions: Array.from(this.functions.values()).map((f) => f.toJSON()) });
|
|
156
156
|
}
|
|
@@ -167,7 +167,7 @@ class ToolsService {
|
|
|
167
167
|
}
|
|
168
168
|
// Extract auth data from body JSON
|
|
169
169
|
const authData = req.bodyJSON ? req.bodyJSON.auth : undefined;
|
|
170
|
-
const result = await func.handler(params, authData);
|
|
170
|
+
const result = await func.handler(functionContext, params, authData);
|
|
171
171
|
return new App.Response(200, result);
|
|
172
172
|
}
|
|
173
173
|
catch (error) {
|
|
@@ -187,7 +187,7 @@ class ToolsService {
|
|
|
187
187
|
}
|
|
188
188
|
// Extract auth data from body JSON
|
|
189
189
|
const authData = req.bodyJSON ? req.bodyJSON.auth : undefined;
|
|
190
|
-
const result = await interaction.handler(params, authData);
|
|
190
|
+
const result = await interaction.handler(functionContext, params, authData);
|
|
191
191
|
return new App.Response(200, result);
|
|
192
192
|
}
|
|
193
193
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Service.js","sourceRoot":"","sources":["../../src/service/Service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uDAAyC;AACzC,+CAA2C;AAI3C;;GAEG;AACH,MAAa,iBAAiB;IAEnB;IACA;IAFT,YACS,OAAe,EACf,IAAa;QADb,YAAO,GAAP,OAAO,CAAQ;QACf,SAAI,GAAJ,IAAI,CAAS;IACnB,CAAC;CACL;AALD,8CAKC;AAED;;GAEG;AACH,MAAa,WAAW;IAEb;IACA;IACA;IAHT,YACS,IAAY,EACZ,QAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"Service.js","sourceRoot":"","sources":["../../src/service/Service.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,19 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const Service_1 = require("./Service");
|
|
4
4
|
const Models_1 = require("../types/Models");
|
|
5
|
+
const ToolFunction_1 = require("../function/ToolFunction");
|
|
5
6
|
const app_sdk_1 = require("@zaiusinc/app-sdk");
|
|
6
|
-
// Mock the logger
|
|
7
|
+
// Mock the logger and other app-sdk exports
|
|
7
8
|
jest.mock('@zaiusinc/app-sdk', () => ({
|
|
8
9
|
logger: {
|
|
9
10
|
error: jest.fn()
|
|
10
11
|
},
|
|
12
|
+
Function: class {
|
|
13
|
+
request;
|
|
14
|
+
constructor(request) {
|
|
15
|
+
this.request = request;
|
|
16
|
+
}
|
|
17
|
+
},
|
|
11
18
|
Response: jest.fn().mockImplementation((status, data) => ({
|
|
12
19
|
status,
|
|
13
20
|
data,
|
|
@@ -135,7 +142,62 @@ describe('ToolsService', () => {
|
|
|
135
142
|
const mockRequest = createMockRequest();
|
|
136
143
|
const response = await Service_1.toolsService.processRequest(mockRequest);
|
|
137
144
|
expect(response.status).toBe(200);
|
|
138
|
-
expect(mockTool.handler).toHaveBeenCalledWith(
|
|
145
|
+
expect(mockTool.handler).toHaveBeenCalledWith(undefined, // functionContext
|
|
146
|
+
{ param1: 'test-value' }, undefined);
|
|
147
|
+
});
|
|
148
|
+
it('should execute tool with existing ToolFunction instance context', async () => {
|
|
149
|
+
// Create a mock ToolFunction instance
|
|
150
|
+
const mockToolFunctionInstance = {
|
|
151
|
+
someProperty: 'test-value',
|
|
152
|
+
someMethod: jest.fn()
|
|
153
|
+
};
|
|
154
|
+
const mockRequest = createMockRequest();
|
|
155
|
+
const response = await Service_1.toolsService.processRequest(mockRequest, mockToolFunctionInstance);
|
|
156
|
+
expect(response.status).toBe(200);
|
|
157
|
+
expect(mockTool.handler).toHaveBeenCalledWith(mockToolFunctionInstance, // functionContext - existing instance
|
|
158
|
+
{ param1: 'test-value' }, undefined);
|
|
159
|
+
});
|
|
160
|
+
it('should allow handler in ToolFunction subclass to access request object', async () => {
|
|
161
|
+
// Create a mock class that extends ToolFunction
|
|
162
|
+
class MockToolFunction extends ToolFunction_1.ToolFunction {
|
|
163
|
+
testMethod() {
|
|
164
|
+
return `path: ${this.request.path}`;
|
|
165
|
+
}
|
|
166
|
+
getRequestPath() {
|
|
167
|
+
return this.request.path;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
// Create an instance with a mock request
|
|
171
|
+
const mockRequest = createMockRequest({ path: '/test-path' });
|
|
172
|
+
const mockToolFunctionInstance = new MockToolFunction(mockRequest);
|
|
173
|
+
// Create a handler that will use the ToolFunction instance's methods and properties
|
|
174
|
+
const handlerThatAccessesRequest = jest.fn().mockImplementation((functionContext, params, _authData) => {
|
|
175
|
+
// This simulates what would happen in a decorated method of a ToolFunction subclass
|
|
176
|
+
if (functionContext && functionContext instanceof MockToolFunction) {
|
|
177
|
+
return Promise.resolve({
|
|
178
|
+
success: true,
|
|
179
|
+
requestPath: functionContext.getRequestPath(), // Use public method to access request
|
|
180
|
+
testMethodResult: functionContext.testMethod(),
|
|
181
|
+
receivedParams: params
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
return Promise.resolve({ success: false, error: 'No valid function context' });
|
|
185
|
+
});
|
|
186
|
+
// Register a tool with our custom handler
|
|
187
|
+
Service_1.toolsService.registerTool('test-toolfunction-access', 'Test handler access to ToolFunction instance', handlerThatAccessesRequest, [], '/test-toolfunction-access');
|
|
188
|
+
const testRequest = createMockRequest({
|
|
189
|
+
path: '/test-toolfunction-access',
|
|
190
|
+
bodyJSON: { action: 'test' }
|
|
191
|
+
});
|
|
192
|
+
const response = await Service_1.toolsService.processRequest(testRequest, mockToolFunctionInstance);
|
|
193
|
+
expect(response.status).toBe(200);
|
|
194
|
+
expect(response.data).toBeDefined();
|
|
195
|
+
expect(response.data.success).toBe(true);
|
|
196
|
+
expect(response.data.requestPath).toBe('/test-path');
|
|
197
|
+
expect(response.data.testMethodResult).toBe('path: /test-path');
|
|
198
|
+
expect(response.data.receivedParams).toEqual({ action: 'test' });
|
|
199
|
+
expect(handlerThatAccessesRequest).toHaveBeenCalledWith(mockToolFunctionInstance, // functionContext is the ToolFunction instance
|
|
200
|
+
{ action: 'test' }, undefined);
|
|
139
201
|
});
|
|
140
202
|
it('should execute tool with OptiID auth data when provided', async () => {
|
|
141
203
|
const authData = new Models_1.OptiIdAuthData('optiId', new Models_1.OptiIdAuthDataCredentials('customer123', 'instance123', 'token123', 'sku123'));
|
|
@@ -151,7 +213,8 @@ describe('ToolsService', () => {
|
|
|
151
213
|
});
|
|
152
214
|
const response = await Service_1.toolsService.processRequest(requestWithAuth);
|
|
153
215
|
expect(response.status).toBe(200);
|
|
154
|
-
expect(mockTool.handler).toHaveBeenCalledWith(
|
|
216
|
+
expect(mockTool.handler).toHaveBeenCalledWith(undefined, // functionContext
|
|
217
|
+
{ param1: 'test-value' }, authData);
|
|
155
218
|
});
|
|
156
219
|
it('should handle request body without parameters wrapper', async () => {
|
|
157
220
|
const requestWithoutWrapper = createMockRequest({
|
|
@@ -160,7 +223,8 @@ describe('ToolsService', () => {
|
|
|
160
223
|
});
|
|
161
224
|
const response = await Service_1.toolsService.processRequest(requestWithoutWrapper);
|
|
162
225
|
expect(response.status).toBe(200);
|
|
163
|
-
expect(mockTool.handler).toHaveBeenCalledWith(
|
|
226
|
+
expect(mockTool.handler).toHaveBeenCalledWith(undefined, // functionContext
|
|
227
|
+
{ param1: 'test-value' }, undefined);
|
|
164
228
|
});
|
|
165
229
|
it('should return 500 error when tool handler throws an error', async () => {
|
|
166
230
|
const errorMessage = 'Tool execution failed';
|
|
@@ -189,7 +253,7 @@ describe('ToolsService', () => {
|
|
|
189
253
|
});
|
|
190
254
|
const response = await Service_1.toolsService.processRequest(interactionRequest);
|
|
191
255
|
expect(response.status).toBe(200);
|
|
192
|
-
expect(mockInteraction.handler).toHaveBeenCalledWith({ param1: 'test-value' }, undefined);
|
|
256
|
+
expect(mockInteraction.handler).toHaveBeenCalledWith(undefined, { param1: 'test-value' }, undefined);
|
|
193
257
|
});
|
|
194
258
|
it('should handle interaction request body without data wrapper', async () => {
|
|
195
259
|
const interactionRequest = createMockRequest({
|
|
@@ -199,7 +263,7 @@ describe('ToolsService', () => {
|
|
|
199
263
|
});
|
|
200
264
|
const response = await Service_1.toolsService.processRequest(interactionRequest);
|
|
201
265
|
expect(response.status).toBe(200);
|
|
202
|
-
expect(mockInteraction.handler).toHaveBeenCalledWith({ param1: 'test-value' }, undefined);
|
|
266
|
+
expect(mockInteraction.handler).toHaveBeenCalledWith(undefined, { param1: 'test-value' }, undefined);
|
|
203
267
|
});
|
|
204
268
|
it('should execute interaction with OptiID auth data when provided', async () => {
|
|
205
269
|
const authData = new Models_1.OptiIdAuthData('optiId', new Models_1.OptiIdAuthDataCredentials('customer123', 'instance123', 'token123', 'sku123'));
|
|
@@ -216,7 +280,8 @@ describe('ToolsService', () => {
|
|
|
216
280
|
});
|
|
217
281
|
const response = await Service_1.toolsService.processRequest(interactionRequest);
|
|
218
282
|
expect(response.status).toBe(200);
|
|
219
|
-
expect(mockInteraction.handler).toHaveBeenCalledWith(
|
|
283
|
+
expect(mockInteraction.handler).toHaveBeenCalledWith(undefined, // functionContext
|
|
284
|
+
{ param1: 'test-value' }, authData);
|
|
220
285
|
});
|
|
221
286
|
it('should handle interaction request without data wrapper but with auth data', async () => {
|
|
222
287
|
const authData = new Models_1.OptiIdAuthData('optiId', new Models_1.OptiIdAuthDataCredentials('customer123', 'instance123', 'token123', 'sku123'));
|
|
@@ -233,7 +298,8 @@ describe('ToolsService', () => {
|
|
|
233
298
|
});
|
|
234
299
|
const response = await Service_1.toolsService.processRequest(interactionRequest);
|
|
235
300
|
expect(response.status).toBe(200);
|
|
236
|
-
expect(mockInteraction.handler).toHaveBeenCalledWith(
|
|
301
|
+
expect(mockInteraction.handler).toHaveBeenCalledWith(undefined, // functionContext
|
|
302
|
+
{
|
|
237
303
|
param1: 'test-value',
|
|
238
304
|
auth: authData
|
|
239
305
|
}, authData);
|
|
@@ -277,7 +343,7 @@ describe('ToolsService', () => {
|
|
|
277
343
|
});
|
|
278
344
|
const response = await Service_1.toolsService.processRequest(requestWithNullBody);
|
|
279
345
|
expect(response.status).toBe(200);
|
|
280
|
-
expect(mockTool.handler).toHaveBeenCalledWith(null, undefined);
|
|
346
|
+
expect(mockTool.handler).toHaveBeenCalledWith(undefined, null, undefined);
|
|
281
347
|
});
|
|
282
348
|
it('should handle request with undefined bodyJSON', async () => {
|
|
283
349
|
Service_1.toolsService.registerTool(mockTool.name, mockTool.description, mockTool.handler, mockTool.parameters, mockTool.endpoint);
|
|
@@ -287,7 +353,7 @@ describe('ToolsService', () => {
|
|
|
287
353
|
});
|
|
288
354
|
const response = await Service_1.toolsService.processRequest(requestWithUndefinedBody);
|
|
289
355
|
expect(response.status).toBe(200);
|
|
290
|
-
expect(mockTool.handler).toHaveBeenCalledWith(undefined, undefined);
|
|
356
|
+
expect(mockTool.handler).toHaveBeenCalledWith(undefined, undefined, undefined);
|
|
291
357
|
});
|
|
292
358
|
it('should extract auth data from bodyJSON when body exists', async () => {
|
|
293
359
|
Service_1.toolsService.registerTool(mockTool.name, mockTool.description, mockTool.handler, mockTool.parameters, mockTool.endpoint);
|
|
@@ -304,7 +370,8 @@ describe('ToolsService', () => {
|
|
|
304
370
|
});
|
|
305
371
|
const response = await Service_1.toolsService.processRequest(requestWithAuth);
|
|
306
372
|
expect(response.status).toBe(200);
|
|
307
|
-
expect(mockTool.handler).toHaveBeenCalledWith(
|
|
373
|
+
expect(mockTool.handler).toHaveBeenCalledWith(undefined, // functionContext
|
|
374
|
+
{ param1: 'test-value' }, authData);
|
|
308
375
|
});
|
|
309
376
|
it('should handle missing auth data gracefully', async () => {
|
|
310
377
|
Service_1.toolsService.registerTool(mockTool.name, mockTool.description, mockTool.handler, mockTool.parameters, mockTool.endpoint);
|
|
@@ -319,7 +386,8 @@ describe('ToolsService', () => {
|
|
|
319
386
|
});
|
|
320
387
|
const response = await Service_1.toolsService.processRequest(requestWithoutAuth);
|
|
321
388
|
expect(response.status).toBe(200);
|
|
322
|
-
expect(mockTool.handler).toHaveBeenCalledWith(
|
|
389
|
+
expect(mockTool.handler).toHaveBeenCalledWith(undefined, // functionContext
|
|
390
|
+
{ param1: 'test-value' }, undefined);
|
|
323
391
|
});
|
|
324
392
|
it('should handle auth extraction when body is falsy but bodyJSON has auth', async () => {
|
|
325
393
|
Service_1.toolsService.registerTool(mockTool.name, mockTool.description, mockTool.handler, mockTool.parameters, mockTool.endpoint);
|
|
@@ -333,7 +401,8 @@ describe('ToolsService', () => {
|
|
|
333
401
|
});
|
|
334
402
|
const response = await Service_1.toolsService.processRequest(requestWithAuthButNoBody);
|
|
335
403
|
expect(response.status).toBe(200);
|
|
336
|
-
expect(mockTool.handler).toHaveBeenCalledWith(
|
|
404
|
+
expect(mockTool.handler).toHaveBeenCalledWith(undefined, // functionContext
|
|
405
|
+
{ param1: 'test-value' }, authData);
|
|
337
406
|
});
|
|
338
407
|
});
|
|
339
408
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Service.test.js","sourceRoot":"","sources":["../../src/service/Service.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Service.test.js","sourceRoot":"","sources":["../../src/service/Service.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -519,5 +519,131 @@ 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(undefined, {}, {});
|
|
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(undefined, {});
|
|
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
|
+
it('should handle invalid functionContext gracefully for tool', async () => {
|
|
585
|
+
class TestClass {
|
|
586
|
+
private getValue() {
|
|
587
|
+
return 'class-method-called';
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
@tool({
|
|
591
|
+
name: 'invalidContextTest',
|
|
592
|
+
description: 'Test handling invalid context',
|
|
593
|
+
parameters: [],
|
|
594
|
+
endpoint: '/invalid-context-test'
|
|
595
|
+
})
|
|
596
|
+
public async invalidContextTest(_params: any) {
|
|
597
|
+
return { result: this.getValue() };
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
// Get the registered handler
|
|
602
|
+
const mockedRegisterTool = jest.mocked(toolsService.registerTool);
|
|
603
|
+
const registerToolCall = mockedRegisterTool.mock.calls.find((call) => call[0] === 'invalidContextTest');
|
|
604
|
+
const registeredHandler = registerToolCall![2];
|
|
605
|
+
|
|
606
|
+
// Call the handler with an invalid functionContext (truthy but wrong type)
|
|
607
|
+
// This should trigger the instanceof check and create a new instance instead
|
|
608
|
+
const invalidContext = { notAnInstance: true, someOtherProperty: 'invalid' };
|
|
609
|
+
const result = await registeredHandler(invalidContext, {}, {});
|
|
610
|
+
|
|
611
|
+
// Should still work by creating a new instance
|
|
612
|
+
expect((result as any).result).toBe('class-method-called');
|
|
613
|
+
expect(TestClass).toBeDefined();
|
|
614
|
+
});
|
|
615
|
+
|
|
616
|
+
it('should handle invalid functionContext gracefully for interaction', async () => {
|
|
617
|
+
class TestClass {
|
|
618
|
+
private processData() {
|
|
619
|
+
return 'interaction-processed';
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
@interaction({
|
|
623
|
+
name: 'invalidContextInteractionTest',
|
|
624
|
+
endpoint: '/invalid-context-interaction-test'
|
|
625
|
+
})
|
|
626
|
+
public async invalidContextInteractionTest(_data: any) {
|
|
627
|
+
return { message: this.processData() };
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
// Get the registered handler
|
|
632
|
+
const mockedRegisterInteraction = jest.mocked(toolsService.registerInteraction);
|
|
633
|
+
const registerInteractionCall = mockedRegisterInteraction.mock.calls.find(
|
|
634
|
+
(call) => call[0] === 'invalidContextInteractionTest'
|
|
635
|
+
);
|
|
636
|
+
const registeredHandler = registerInteractionCall![1];
|
|
637
|
+
|
|
638
|
+
// Call the handler with an invalid functionContext (truthy but wrong type)
|
|
639
|
+
// This should trigger the instanceof check and create a new instance instead
|
|
640
|
+
const invalidContext = { notAnInstance: true, someOtherProperty: 'invalid' };
|
|
641
|
+
const result = await registeredHandler(invalidContext, {});
|
|
642
|
+
|
|
643
|
+
// Should still work by creating a new instance
|
|
644
|
+
expect((result as any).message).toBe('interaction-processed');
|
|
645
|
+
expect(TestClass).toBeDefined();
|
|
646
|
+
});
|
|
647
|
+
});
|
|
522
648
|
});
|
|
523
649
|
|
|
@@ -42,9 +42,10 @@ 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
|
|
45
46
|
*/
|
|
46
47
|
export function tool(config: ToolConfig) {
|
|
47
|
-
return function(
|
|
48
|
+
return function(target: any, _propertyKey: string, descriptor: PropertyDescriptor) {
|
|
48
49
|
// Convert parameter configs to Parameter instances
|
|
49
50
|
const parameters = (config.parameters || []).map((p) =>
|
|
50
51
|
new Parameter(p.name, p.type, p.description, p.required)
|
|
@@ -55,11 +56,24 @@ export function tool(config: ToolConfig) {
|
|
|
55
56
|
new AuthRequirement(a.provider, a.scopeBundle, a.required)
|
|
56
57
|
);
|
|
57
58
|
|
|
59
|
+
const originalMethod = descriptor.value;
|
|
60
|
+
|
|
61
|
+
const boundHandler = function(functionContext: any, params: any, authData: any) {
|
|
62
|
+
// Check if we're being called from within a ToolFunction instance context
|
|
63
|
+
// If so, use that instance; otherwise create a new one
|
|
64
|
+
const instance = (functionContext && functionContext instanceof target.constructor) ?
|
|
65
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
66
|
+
functionContext : new target.constructor();
|
|
67
|
+
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
69
|
+
return originalMethod.call(instance, params, authData);
|
|
70
|
+
};
|
|
71
|
+
|
|
58
72
|
// Immediately register with global ToolsService
|
|
59
73
|
toolsService.registerTool(
|
|
60
74
|
config.name,
|
|
61
75
|
config.description,
|
|
62
|
-
|
|
76
|
+
boundHandler,
|
|
63
77
|
parameters,
|
|
64
78
|
config.endpoint,
|
|
65
79
|
authRequirements
|
|
@@ -70,13 +84,27 @@ export function tool(config: ToolConfig) {
|
|
|
70
84
|
/**
|
|
71
85
|
* Decorator for registering interaction functions
|
|
72
86
|
* Immediately registers the interaction with the global ToolsService
|
|
87
|
+
* The handler will have access to 'this' context when called
|
|
73
88
|
*/
|
|
74
89
|
export function interaction(config: InteractionConfig) {
|
|
75
|
-
return function(
|
|
90
|
+
return function(target: any, _propertyKey: string, descriptor: PropertyDescriptor) {
|
|
91
|
+
const originalMethod = descriptor.value;
|
|
92
|
+
|
|
93
|
+
const boundHandler = function(functionContext: any, data: any, authData?: any) {
|
|
94
|
+
// Check if we're being called from within a ToolFunction instance context
|
|
95
|
+
// If so, use that instance; otherwise create a new one
|
|
96
|
+
const instance = (functionContext && functionContext instanceof target.constructor) ?
|
|
97
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
98
|
+
functionContext : new target.constructor();
|
|
99
|
+
|
|
100
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
101
|
+
return originalMethod.call(instance, data, authData);
|
|
102
|
+
};
|
|
103
|
+
|
|
76
104
|
// Immediately register with global ToolsService
|
|
77
105
|
toolsService.registerInteraction(
|
|
78
106
|
config.name,
|
|
79
|
-
|
|
107
|
+
boundHandler,
|
|
80
108
|
config.endpoint
|
|
81
109
|
);
|
|
82
110
|
};
|