@optimizely-opal/opal-tool-ocp-sdk 0.0.0-dev.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.
Files changed (42) hide show
  1. package/README.md +437 -0
  2. package/dist/decorator/Decorator.d.ts +46 -0
  3. package/dist/decorator/Decorator.d.ts.map +1 -0
  4. package/dist/decorator/Decorator.js +31 -0
  5. package/dist/decorator/Decorator.js.map +1 -0
  6. package/dist/decorator/Decorator.test.d.ts +2 -0
  7. package/dist/decorator/Decorator.test.d.ts.map +1 -0
  8. package/dist/decorator/Decorator.test.js +418 -0
  9. package/dist/decorator/Decorator.test.js.map +1 -0
  10. package/dist/function/ToolFunction.d.ts +15 -0
  11. package/dist/function/ToolFunction.d.ts.map +1 -0
  12. package/dist/function/ToolFunction.js +25 -0
  13. package/dist/function/ToolFunction.js.map +1 -0
  14. package/dist/function/ToolFunction.test.d.ts +2 -0
  15. package/dist/function/ToolFunction.test.d.ts.map +1 -0
  16. package/dist/function/ToolFunction.test.js +189 -0
  17. package/dist/function/ToolFunction.test.js.map +1 -0
  18. package/dist/index.d.ts +5 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +25 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/service/Service.d.ts +78 -0
  23. package/dist/service/Service.d.ts.map +1 -0
  24. package/dist/service/Service.js +204 -0
  25. package/dist/service/Service.js.map +1 -0
  26. package/dist/service/Service.test.d.ts +2 -0
  27. package/dist/service/Service.test.d.ts.map +1 -0
  28. package/dist/service/Service.test.js +341 -0
  29. package/dist/service/Service.test.js.map +1 -0
  30. package/dist/types/Models.d.ts +126 -0
  31. package/dist/types/Models.d.ts.map +1 -0
  32. package/dist/types/Models.js +181 -0
  33. package/dist/types/Models.js.map +1 -0
  34. package/package.json +58 -0
  35. package/src/decorator/Decorator.test.ts +523 -0
  36. package/src/decorator/Decorator.ts +83 -0
  37. package/src/function/ToolFunction.test.ts +224 -0
  38. package/src/function/ToolFunction.ts +25 -0
  39. package/src/index.ts +4 -0
  40. package/src/service/Service.test.ts +550 -0
  41. package/src/service/Service.ts +182 -0
  42. package/src/types/Models.ts +163 -0
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ToolFunction_1 = require("./ToolFunction");
4
+ const Service_1 = require("../service/Service");
5
+ const app_sdk_1 = require("@zaiusinc/app-sdk");
6
+ // Mock the toolsService
7
+ jest.mock('../service/Service', () => ({
8
+ toolsService: {
9
+ processRequest: jest.fn(),
10
+ extractBearerToken: jest.fn(),
11
+ },
12
+ }));
13
+ // Mock the Request and Response classes and Function base class
14
+ jest.mock('@zaiusinc/app-sdk', () => ({
15
+ Function: class {
16
+ request;
17
+ constructor(_name) {
18
+ // Mock constructor that accepts optional name parameter
19
+ this.request = {};
20
+ }
21
+ },
22
+ Request: jest.fn().mockImplementation(() => ({})),
23
+ Response: jest.fn().mockImplementation((status, data) => ({
24
+ status,
25
+ data,
26
+ bodyJSON: data,
27
+ bodyAsU8Array: new Uint8Array()
28
+ })),
29
+ }));
30
+ // Create a concrete implementation for testing
31
+ class TestToolFunction extends ToolFunction_1.ToolFunction {
32
+ mockValidateBearerToken;
33
+ constructor(request) {
34
+ super(request || {}); // Pass the request parameter properly
35
+ // Set the request directly without defaulting to empty object
36
+ this.request = request;
37
+ // Create a mock implementation of the abstract method
38
+ this.mockValidateBearerToken = jest.fn().mockReturnValue(true);
39
+ }
40
+ // Implement the abstract method
41
+ validateBearerToken(bearerToken) {
42
+ return this.mockValidateBearerToken(bearerToken);
43
+ }
44
+ // Expose request and validation mock for testing
45
+ getRequest() {
46
+ return this.request;
47
+ }
48
+ getMockValidateBearerToken() {
49
+ return this.mockValidateBearerToken;
50
+ }
51
+ }
52
+ describe('ToolFunction', () => {
53
+ let mockRequest;
54
+ let mockResponse;
55
+ let toolFunction;
56
+ let mockProcessRequest;
57
+ let mockExtractBearerToken;
58
+ beforeEach(() => {
59
+ jest.clearAllMocks();
60
+ // Create mock instances
61
+ mockRequest = {
62
+ headers: new Map(),
63
+ method: 'POST',
64
+ path: '/test'
65
+ };
66
+ mockResponse = {};
67
+ // Setup the mocks
68
+ mockProcessRequest = jest.mocked(Service_1.toolsService.processRequest);
69
+ mockExtractBearerToken = jest.mocked(Service_1.toolsService.extractBearerToken);
70
+ // Create test instance
71
+ toolFunction = new TestToolFunction(mockRequest);
72
+ });
73
+ describe('bearer token validation', () => {
74
+ it('should extract bearer token from headers and validate it', async () => {
75
+ // Arrange
76
+ const bearerToken = 'valid-token-123';
77
+ mockExtractBearerToken.mockReturnValue(bearerToken);
78
+ toolFunction.getMockValidateBearerToken().mockReturnValue(true);
79
+ mockProcessRequest.mockResolvedValue(mockResponse);
80
+ // Act
81
+ const result = await toolFunction.perform();
82
+ // Assert
83
+ expect(mockExtractBearerToken).toHaveBeenCalledWith(mockRequest.headers);
84
+ expect(toolFunction.getMockValidateBearerToken()).toHaveBeenCalledWith(bearerToken);
85
+ expect(mockProcessRequest).toHaveBeenCalledWith(mockRequest);
86
+ expect(result).toBe(mockResponse);
87
+ });
88
+ it('should return 403 Forbidden when bearer token validation fails', async () => {
89
+ // Arrange
90
+ const bearerToken = 'invalid-token-456';
91
+ mockExtractBearerToken.mockReturnValue(bearerToken);
92
+ toolFunction.getMockValidateBearerToken().mockReturnValue(false);
93
+ // Act
94
+ const result = await toolFunction.perform();
95
+ // Assert
96
+ expect(mockExtractBearerToken).toHaveBeenCalledWith(mockRequest.headers);
97
+ expect(toolFunction.getMockValidateBearerToken()).toHaveBeenCalledWith(bearerToken);
98
+ expect(mockProcessRequest).not.toHaveBeenCalled();
99
+ expect(result).toEqual(new app_sdk_1.Response(403, { error: 'Forbidden' }));
100
+ });
101
+ it('should handle complex bearer token validation scenarios', async () => {
102
+ // Arrange - simulate a token that should be valid based on some complex logic
103
+ const complexToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9l' +
104
+ 'IiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
105
+ mockExtractBearerToken.mockReturnValue(complexToken);
106
+ toolFunction.getMockValidateBearerToken().mockReturnValue(true);
107
+ mockProcessRequest.mockResolvedValue(mockResponse);
108
+ // Act
109
+ const result = await toolFunction.perform();
110
+ // Assert
111
+ expect(mockExtractBearerToken).toHaveBeenCalledWith(mockRequest.headers);
112
+ expect(toolFunction.getMockValidateBearerToken()).toHaveBeenCalledWith(complexToken);
113
+ expect(mockProcessRequest).toHaveBeenCalledWith(mockRequest);
114
+ expect(result).toBe(mockResponse);
115
+ });
116
+ it('should handle bearer token validation throwing an error', async () => {
117
+ // Arrange
118
+ const bearerToken = 'malformed-token';
119
+ mockExtractBearerToken.mockReturnValue(bearerToken);
120
+ toolFunction.getMockValidateBearerToken().mockImplementation(() => {
121
+ throw new Error('Token validation error');
122
+ });
123
+ // Act & Assert
124
+ await expect(toolFunction.perform()).rejects.toThrow('Token validation error');
125
+ expect(mockExtractBearerToken).toHaveBeenCalledWith(mockRequest.headers);
126
+ expect(toolFunction.getMockValidateBearerToken()).toHaveBeenCalledWith(bearerToken);
127
+ expect(mockProcessRequest).not.toHaveBeenCalled();
128
+ });
129
+ it('should call validateBearerToken only once per request', async () => {
130
+ // Arrange
131
+ const bearerToken = 'test-token';
132
+ mockExtractBearerToken.mockReturnValue(bearerToken);
133
+ toolFunction.getMockValidateBearerToken().mockReturnValue(true);
134
+ mockProcessRequest.mockResolvedValue(mockResponse);
135
+ // Act
136
+ await toolFunction.perform();
137
+ // Assert
138
+ expect(toolFunction.getMockValidateBearerToken()).toHaveBeenCalledTimes(1);
139
+ expect(toolFunction.getMockValidateBearerToken()).toHaveBeenCalledWith(bearerToken);
140
+ });
141
+ it('should extract bearer token only once per request', async () => {
142
+ // Arrange
143
+ const bearerToken = 'test-token';
144
+ mockExtractBearerToken.mockReturnValue(bearerToken);
145
+ toolFunction.getMockValidateBearerToken().mockReturnValue(true);
146
+ mockProcessRequest.mockResolvedValue(mockResponse);
147
+ // Act
148
+ await toolFunction.perform();
149
+ // Assert
150
+ expect(mockExtractBearerToken).toHaveBeenCalledTimes(1);
151
+ expect(mockExtractBearerToken).toHaveBeenCalledWith(mockRequest.headers);
152
+ });
153
+ it('should skip validation when bearer token is undefined', async () => {
154
+ // Arrange
155
+ mockExtractBearerToken.mockReturnValue(undefined);
156
+ mockProcessRequest.mockResolvedValue(mockResponse);
157
+ // Act
158
+ const result = await toolFunction.perform();
159
+ // Assert
160
+ expect(mockExtractBearerToken).toHaveBeenCalledWith(mockRequest.headers);
161
+ expect(toolFunction.getMockValidateBearerToken()).not.toHaveBeenCalled();
162
+ expect(mockProcessRequest).toHaveBeenCalledWith(mockRequest);
163
+ expect(result).toBe(mockResponse);
164
+ });
165
+ it('should skip validation when bearer token is empty string', async () => {
166
+ // Arrange
167
+ mockExtractBearerToken.mockReturnValue('');
168
+ mockProcessRequest.mockResolvedValue(mockResponse);
169
+ // Act
170
+ const result = await toolFunction.perform();
171
+ // Assert
172
+ expect(mockExtractBearerToken).toHaveBeenCalledWith(mockRequest.headers);
173
+ expect(toolFunction.getMockValidateBearerToken()).not.toHaveBeenCalled();
174
+ expect(mockProcessRequest).toHaveBeenCalledWith(mockRequest);
175
+ expect(result).toBe(mockResponse);
176
+ });
177
+ });
178
+ describe('inheritance', () => {
179
+ it('should be an instance of Function', () => {
180
+ // Assert
181
+ expect(toolFunction).toBeInstanceOf(ToolFunction_1.ToolFunction);
182
+ });
183
+ it('should have access to the request property', () => {
184
+ // Assert
185
+ expect(toolFunction.getRequest()).toBe(mockRequest);
186
+ });
187
+ });
188
+ });
189
+ //# sourceMappingURL=ToolFunction.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolFunction.test.js","sourceRoot":"","sources":["../../src/function/ToolFunction.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './function/ToolFunction';
2
+ export * from './types/Models';
3
+ export * from './decorator/Decorator';
4
+ export { Tool, Interaction, InteractionResult } from './service/Service';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.InteractionResult = exports.Interaction = exports.Tool = void 0;
18
+ __exportStar(require("./function/ToolFunction"), exports);
19
+ __exportStar(require("./types/Models"), exports);
20
+ __exportStar(require("./decorator/Decorator"), exports);
21
+ var Service_1 = require("./service/Service");
22
+ Object.defineProperty(exports, "Tool", { enumerable: true, get: function () { return Service_1.Tool; } });
23
+ Object.defineProperty(exports, "Interaction", { enumerable: true, get: function () { return Service_1.Interaction; } });
24
+ Object.defineProperty(exports, "InteractionResult", { enumerable: true, get: function () { return Service_1.InteractionResult; } });
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,iDAA+B;AAC/B,wDAAsC;AACtC,6CAAyE;AAAhE,+FAAA,IAAI,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,4GAAA,iBAAiB,OAAA"}
@@ -0,0 +1,78 @@
1
+ import { AuthRequirement, Parameter } from '../types/Models';
2
+ import * as App from '@zaiusinc/app-sdk';
3
+ /**
4
+ * Result type for interaction handlers
5
+ */
6
+ export declare class InteractionResult {
7
+ message: string;
8
+ link?: string | undefined;
9
+ constructor(message: string, link?: string | undefined);
10
+ }
11
+ /**
12
+ * Interaction definition for an Opal interaction
13
+ */
14
+ export declare class Interaction<TAuthData> {
15
+ name: string;
16
+ endpoint: string;
17
+ handler: (data: unknown, authData?: TAuthData) => Promise<InteractionResult>;
18
+ constructor(name: string, endpoint: string, handler: (data: unknown, authData?: TAuthData) => Promise<InteractionResult>);
19
+ }
20
+ /**
21
+ * Tool definition for an Opal tool
22
+ */
23
+ export declare class Tool<TAuthData> {
24
+ name: string;
25
+ description: string;
26
+ parameters: Parameter[];
27
+ endpoint: string;
28
+ handler: (params: unknown, authData?: TAuthData) => Promise<unknown>;
29
+ authRequirements?: AuthRequirement[] | undefined;
30
+ /**
31
+ * HTTP method for the endpoint (default: POST)
32
+ */
33
+ httpMethod: string;
34
+ /**
35
+ * Create a new function definition
36
+ * @param name Function name
37
+ * @param description Function description
38
+ * @param parameters Function parameters
39
+ * @param endpoint API endpoint
40
+ * @param handler Function implementing the tool
41
+ * @param authRequirements Authentication requirements (optional)
42
+ */
43
+ constructor(name: string, description: string, parameters: Parameter[], endpoint: string, handler: (params: unknown, authData?: TAuthData) => Promise<unknown>, authRequirements?: AuthRequirement[] | undefined);
44
+ /**
45
+ * Convert to JSON for the discovery endpoint
46
+ */
47
+ toJSON(): Record<string, unknown>;
48
+ }
49
+ export declare class ToolsService {
50
+ private functions;
51
+ private interactions;
52
+ /**
53
+ * Extract Bearer token from Authorization header
54
+ * @param headers Request headers (Map-like object or Headers object with get method)
55
+ * @returns Bearer token string or undefined
56
+ */
57
+ extractBearerToken(headers: App.Headers): string | undefined;
58
+ /**
59
+ * Register a tool function with generic auth data
60
+ * @param name Tool name
61
+ * @param description Tool description
62
+ * @param handler Function implementing the tool
63
+ * @param parameters List of parameters for the tool
64
+ * @param endpoint API endpoint for the tool
65
+ * @param authRequirements Authentication requirements (optional)
66
+ */
67
+ registerTool<TAuthData>(name: string, description: string, handler: (params: unknown, authData?: TAuthData) => Promise<unknown>, parameters: Parameter[], endpoint: string, authRequirements?: AuthRequirement[]): void;
68
+ /**
69
+ * Register a tool interaction with generic auth data
70
+ * @param name Tool name
71
+ * @param handler Function implementing the tool
72
+ * @param endpoint API endpoint for the tool
73
+ */
74
+ registerInteraction<TAuthData>(name: string, handler: (data: unknown, authData?: TAuthData) => Promise<InteractionResult>, endpoint: string): void;
75
+ processRequest(req: App.Request): Promise<App.Response>;
76
+ }
77
+ export declare const toolsService: ToolsService;
78
+ //# sourceMappingURL=Service.d.ts.map
@@ -0,0 +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;gBAF5E,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,iBAAiB,CAAC;CAEtF;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,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC;IACpE,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,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,EACpE,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,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,EACpE,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,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,iBAAiB,CAAC,EAC5E,QAAQ,EAAE,MAAM,GACf,IAAI;IAKM,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;CAiDrE;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC"}
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.toolsService = exports.ToolsService = exports.Tool = exports.Interaction = exports.InteractionResult = void 0;
37
+ const App = __importStar(require("@zaiusinc/app-sdk"));
38
+ const app_sdk_1 = require("@zaiusinc/app-sdk");
39
+ /**
40
+ * Result type for interaction handlers
41
+ */
42
+ class InteractionResult {
43
+ message;
44
+ link;
45
+ constructor(message, link) {
46
+ this.message = message;
47
+ this.link = link;
48
+ }
49
+ }
50
+ exports.InteractionResult = InteractionResult;
51
+ /**
52
+ * Interaction definition for an Opal interaction
53
+ */
54
+ class Interaction {
55
+ name;
56
+ endpoint;
57
+ handler;
58
+ constructor(name, endpoint, handler) {
59
+ this.name = name;
60
+ this.endpoint = endpoint;
61
+ this.handler = handler;
62
+ }
63
+ }
64
+ exports.Interaction = Interaction;
65
+ /**
66
+ * Tool definition for an Opal tool
67
+ */
68
+ class Tool {
69
+ name;
70
+ description;
71
+ parameters;
72
+ endpoint;
73
+ handler;
74
+ authRequirements;
75
+ /**
76
+ * HTTP method for the endpoint (default: POST)
77
+ */
78
+ httpMethod = 'POST';
79
+ /**
80
+ * Create a new function definition
81
+ * @param name Function name
82
+ * @param description Function description
83
+ * @param parameters Function parameters
84
+ * @param endpoint API endpoint
85
+ * @param handler Function implementing the tool
86
+ * @param authRequirements Authentication requirements (optional)
87
+ */
88
+ constructor(name, description, parameters, endpoint, handler, authRequirements) {
89
+ this.name = name;
90
+ this.description = description;
91
+ this.parameters = parameters;
92
+ this.endpoint = endpoint;
93
+ this.handler = handler;
94
+ this.authRequirements = authRequirements;
95
+ }
96
+ /**
97
+ * Convert to JSON for the discovery endpoint
98
+ */
99
+ toJSON() {
100
+ const result = {
101
+ name: this.name,
102
+ description: this.description,
103
+ parameters: this.parameters.map((p) => p.toJSON()),
104
+ endpoint: this.endpoint,
105
+ http_method: this.httpMethod
106
+ };
107
+ if (this.authRequirements && this.authRequirements.length > 0) {
108
+ result.auth_requirements = this.authRequirements.map((auth) => auth.toJSON());
109
+ }
110
+ return result;
111
+ }
112
+ }
113
+ exports.Tool = Tool;
114
+ class ToolsService {
115
+ functions = new Map();
116
+ interactions = new Map();
117
+ /**
118
+ * Extract Bearer token from Authorization header
119
+ * @param headers Request headers (Map-like object or Headers object with get method)
120
+ * @returns Bearer token string or undefined
121
+ */
122
+ extractBearerToken(headers) {
123
+ let bearerToken;
124
+ const authHeader = headers ? headers.get('authorization') : undefined;
125
+ if (authHeader && authHeader.startsWith('Bearer ')) {
126
+ bearerToken = authHeader.substring(7).trim();
127
+ }
128
+ return bearerToken;
129
+ }
130
+ /**
131
+ * Register a tool function with generic auth data
132
+ * @param name Tool name
133
+ * @param description Tool description
134
+ * @param handler Function implementing the tool
135
+ * @param parameters List of parameters for the tool
136
+ * @param endpoint API endpoint for the tool
137
+ * @param authRequirements Authentication requirements (optional)
138
+ */
139
+ registerTool(name, description, handler, parameters, endpoint, authRequirements) {
140
+ const func = new Tool(name, description, parameters, endpoint, handler, authRequirements);
141
+ this.functions.set(endpoint, func);
142
+ }
143
+ /**
144
+ * Register a tool interaction with generic auth data
145
+ * @param name Tool name
146
+ * @param handler Function implementing the tool
147
+ * @param endpoint API endpoint for the tool
148
+ */
149
+ registerInteraction(name, handler, endpoint) {
150
+ const func = new Interaction(name, endpoint, handler);
151
+ this.interactions.set(endpoint, func);
152
+ }
153
+ async processRequest(req) {
154
+ if (req.path === '/discovery') {
155
+ return new App.Response(200, { functions: Array.from(this.functions.values()).map((f) => f.toJSON()) });
156
+ }
157
+ else {
158
+ const func = this.functions.get(req.path);
159
+ if (func) {
160
+ try {
161
+ let params;
162
+ if (req.bodyJSON && req.bodyJSON.parameters) {
163
+ params = req.bodyJSON.parameters;
164
+ }
165
+ else {
166
+ params = req.bodyJSON;
167
+ }
168
+ // Extract auth data from body JSON
169
+ const authData = req.bodyJSON ? req.bodyJSON.auth : undefined;
170
+ const result = await func.handler(params, authData);
171
+ return new App.Response(200, result);
172
+ }
173
+ catch (error) {
174
+ app_sdk_1.logger.error(`Error in function ${func.name}:`, error);
175
+ return new App.Response(500, { error: error.message || 'Unknown error' });
176
+ }
177
+ }
178
+ const interaction = this.interactions.get(req.path);
179
+ if (interaction) {
180
+ try {
181
+ let params;
182
+ if (req.bodyJSON && req.bodyJSON.data) {
183
+ params = req.bodyJSON.data;
184
+ }
185
+ else {
186
+ params = req.bodyJSON;
187
+ }
188
+ // Extract auth data from body JSON
189
+ const authData = req.bodyJSON ? req.bodyJSON.auth : undefined;
190
+ const result = await interaction.handler(params, authData);
191
+ return new App.Response(200, result);
192
+ }
193
+ catch (error) {
194
+ app_sdk_1.logger.error(`Error in function ${interaction.name}:`, error);
195
+ return new App.Response(500, { error: error.message || 'Unknown error' });
196
+ }
197
+ }
198
+ return new App.Response(404, 'Function not found');
199
+ }
200
+ }
201
+ }
202
+ exports.ToolsService = ToolsService;
203
+ exports.toolsService = new ToolsService();
204
+ //# sourceMappingURL=Service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Service.js","sourceRoot":"","sources":["../../src/service/Service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Service.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Service.test.d.ts","sourceRoot":"","sources":["../../src/service/Service.test.ts"],"names":[],"mappings":""}