@dereekb/nestjs 12.2.0 → 12.3.0

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 (53) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/mailgun/package.json +1 -1
  3. package/openai/LICENSE +21 -0
  4. package/openai/package.json +9 -0
  5. package/openai/src/index.d.ts +1 -0
  6. package/openai/src/index.js +5 -0
  7. package/openai/src/index.js.map +1 -0
  8. package/openai/src/lib/index.d.ts +6 -0
  9. package/openai/src/lib/index.js +10 -0
  10. package/openai/src/lib/index.js.map +1 -0
  11. package/openai/src/lib/openai.api.d.ts +7 -0
  12. package/openai/src/lib/openai.api.js +22 -0
  13. package/openai/src/lib/openai.api.js.map +1 -0
  14. package/openai/src/lib/openai.config.d.ts +18 -0
  15. package/openai/src/lib/openai.config.js +29 -0
  16. package/openai/src/lib/openai.config.js.map +1 -0
  17. package/openai/src/lib/openai.module.d.ts +5 -0
  18. package/openai/src/lib/openai.module.js +41 -0
  19. package/openai/src/lib/openai.module.js.map +1 -0
  20. package/openai/src/lib/openai.type.d.ts +20 -0
  21. package/openai/src/lib/openai.type.js +3 -0
  22. package/openai/src/lib/openai.type.js.map +1 -0
  23. package/openai/src/lib/webhook/index.d.ts +6 -0
  24. package/openai/src/lib/webhook/index.js +10 -0
  25. package/openai/src/lib/webhook/index.js.map +1 -0
  26. package/openai/src/lib/webhook/webhook.openai.config.d.ts +12 -0
  27. package/openai/src/lib/webhook/webhook.openai.config.js +17 -0
  28. package/openai/src/lib/webhook/webhook.openai.config.js.map +1 -0
  29. package/openai/src/lib/webhook/webhook.openai.controller.d.ts +8 -0
  30. package/openai/src/lib/webhook/webhook.openai.controller.js +30 -0
  31. package/openai/src/lib/webhook/webhook.openai.controller.js.map +1 -0
  32. package/openai/src/lib/webhook/webhook.openai.d.ts +44 -0
  33. package/openai/src/lib/webhook/webhook.openai.js +41 -0
  34. package/openai/src/lib/webhook/webhook.openai.js.map +1 -0
  35. package/openai/src/lib/webhook/webhook.openai.module.d.ts +5 -0
  36. package/openai/src/lib/webhook/webhook.openai.module.js +39 -0
  37. package/openai/src/lib/webhook/webhook.openai.module.js.map +1 -0
  38. package/openai/src/lib/webhook/webhook.openai.service.d.ts +17 -0
  39. package/openai/src/lib/webhook/webhook.openai.service.js +48 -0
  40. package/openai/src/lib/webhook/webhook.openai.service.js.map +1 -0
  41. package/openai/src/lib/webhook/webhook.openai.verify.d.ts +36 -0
  42. package/openai/src/lib/webhook/webhook.openai.verify.js +37 -0
  43. package/openai/src/lib/webhook/webhook.openai.verify.js.map +1 -0
  44. package/package.json +7 -1
  45. package/stripe/package.json +1 -1
  46. package/vapiai/package.json +1 -1
  47. package/vapiai/src/lib/vapiai.type.d.ts +13 -2
  48. package/vapiai/src/lib/webhook/webhook.vapiai.d.ts +3 -4
  49. package/vapiai/src/lib/webhook/webhook.vapiai.js +8 -10
  50. package/vapiai/src/lib/webhook/webhook.vapiai.js.map +1 -1
  51. package/vapiai/src/lib/webhook/webhook.vapiai.types.d.ts +34 -53
  52. package/vapiai/src/lib/webhook/webhook.vapiai.types.js +4 -0
  53. package/vapiai/src/lib/webhook/webhook.vapiai.types.js.map +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ # [12.3.0](https://github.com/dereekb/dbx-components/compare/v12.2.1-dev...v12.3.0) (2025-07-04)
6
+
7
+
8
+ ### Features
9
+
10
+ * added @dereekb/nestjs/openai integration ([611724f](https://github.com/dereekb/dbx-components/commit/611724f3c5354f2c38a6aecf75a64085f2aa6bcd))
11
+
12
+
13
+
14
+ ## [12.2.1](https://github.com/dereekb/dbx-components/compare/v12.2.0-dev...v12.2.1) (2025-07-02)
15
+
16
+
17
+
5
18
  # [12.2.0](https://github.com/dereekb/dbx-components/compare/v12.1.14-dev...v12.2.0) (2025-06-29)
6
19
 
7
20
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/nestjs/mailgun",
3
- "version": "12.2.0",
3
+ "version": "12.3.0",
4
4
  "type": "commonjs",
5
5
  "types": "./src/index.d.ts",
6
6
  "main": "./src/index.js"
package/openai/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Hapier Creative LLC.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "@dereekb/nestjs/openai",
3
+ "version": "12.3.0",
4
+ "type": "commonjs",
5
+ "peerDependencies": {},
6
+ "dependencies": {},
7
+ "types": "./src/index.d.ts",
8
+ "main": "./src/index.js"
9
+ }
@@ -0,0 +1 @@
1
+ export * from './lib';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./lib"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/nestjs/openai/src/index.ts"],"names":[],"mappings":";;;AAAA,gDAAsB"}
@@ -0,0 +1,6 @@
1
+ export * from './webhook';
2
+ export * from './openai.module';
3
+ export * from './openai.api';
4
+ export * from './openai.module';
5
+ export * from './openai.config';
6
+ export * from './openai.type';
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./webhook"), exports);
5
+ tslib_1.__exportStar(require("./openai.module"), exports);
6
+ tslib_1.__exportStar(require("./openai.api"), exports);
7
+ tslib_1.__exportStar(require("./openai.module"), exports);
8
+ tslib_1.__exportStar(require("./openai.config"), exports);
9
+ tslib_1.__exportStar(require("./openai.type"), exports);
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/nestjs/openai/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,oDAA0B;AAC1B,0DAAgC;AAChC,uDAA6B;AAC7B,0DAAgC;AAChC,0DAAgC;AAChC,wDAA8B"}
@@ -0,0 +1,7 @@
1
+ import { OpenAIServiceConfig } from './openai.config';
2
+ import { OpenAI } from 'openai';
3
+ export declare class OpenAIApi {
4
+ readonly config: OpenAIServiceConfig;
5
+ readonly openAIClient: OpenAI;
6
+ constructor(config: OpenAIServiceConfig);
7
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenAIApi = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const openai_config_1 = require("./openai.config");
7
+ const openai_1 = require("openai");
8
+ let OpenAIApi = class OpenAIApi {
9
+ config;
10
+ openAIClient;
11
+ constructor(config) {
12
+ this.config = config;
13
+ this.openAIClient = new openai_1.OpenAI(config.openai.config);
14
+ }
15
+ };
16
+ exports.OpenAIApi = OpenAIApi;
17
+ exports.OpenAIApi = OpenAIApi = tslib_1.__decorate([
18
+ (0, common_1.Injectable)(),
19
+ tslib_1.__param(0, (0, common_1.Inject)(openai_config_1.OpenAIServiceConfig)),
20
+ tslib_1.__metadata("design:paramtypes", [openai_config_1.OpenAIServiceConfig])
21
+ ], OpenAIApi);
22
+ //# sourceMappingURL=openai.api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.api.js","sourceRoot":"","sources":["../../../../../../packages/nestjs/openai/src/lib/openai.api.ts"],"names":[],"mappings":";;;;AAAA,2CAAoD;AACpD,mDAAsD;AACtD,mCAAgC;AAGzB,IAAM,SAAS,GAAf,MAAM,SAAS;IAG8B;IAFzC,YAAY,CAAS;IAE9B,YAAkD,MAA2B;QAA3B,WAAM,GAAN,MAAM,CAAqB;QAC3E,IAAI,CAAC,YAAY,GAAG,IAAI,eAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;CACF,CAAA;AANY,8BAAS;oBAAT,SAAS;IADrB,IAAA,mBAAU,GAAE;IAIE,mBAAA,IAAA,eAAM,EAAC,mCAAmB,CAAC,CAAA;6CAAkB,mCAAmB;GAHlE,SAAS,CAMrB"}
@@ -0,0 +1,18 @@
1
+ import { ClientOptions } from 'openai';
2
+ /**
3
+ * Default environment variable for the OpenAI API key.
4
+ */
5
+ export declare const OPENAI_API_KEY_ENV_VAR = "OPENAI_API_KEY";
6
+ export declare const OPENAI_BASE_URL_ENV_VAR = "OPENAI_BASE_URL";
7
+ export declare const OPENAI_ORGANIZATION_ID_ENV_VAR = "OPENAI_ORG_ID";
8
+ export declare const OPENAI_PROJECT_ID_ENV_VAR = "OPENAI_PROJECT_ID";
9
+ export interface OpenAIServiceApiConfig {
10
+ readonly config: ClientOptions;
11
+ }
12
+ /**
13
+ * Configuration for OpenAIService
14
+ */
15
+ export declare abstract class OpenAIServiceConfig {
16
+ readonly openai: OpenAIServiceApiConfig;
17
+ static assertValidConfig(config: OpenAIServiceConfig): void;
18
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenAIServiceConfig = exports.OPENAI_PROJECT_ID_ENV_VAR = exports.OPENAI_ORGANIZATION_ID_ENV_VAR = exports.OPENAI_BASE_URL_ENV_VAR = exports.OPENAI_API_KEY_ENV_VAR = void 0;
4
+ /**
5
+ * Default environment variable for the OpenAI API key.
6
+ */
7
+ exports.OPENAI_API_KEY_ENV_VAR = 'OPENAI_API_KEY';
8
+ exports.OPENAI_BASE_URL_ENV_VAR = 'OPENAI_BASE_URL';
9
+ exports.OPENAI_ORGANIZATION_ID_ENV_VAR = 'OPENAI_ORG_ID';
10
+ exports.OPENAI_PROJECT_ID_ENV_VAR = 'OPENAI_PROJECT_ID';
11
+ /**
12
+ * Configuration for OpenAIService
13
+ */
14
+ class OpenAIServiceConfig {
15
+ openai;
16
+ static assertValidConfig(config) {
17
+ if (!config.openai.config.apiKey) {
18
+ throw new Error('No OpenAI API key specified.');
19
+ }
20
+ else if (!config.openai.config.organization) {
21
+ throw new Error('No OpenAI organization specified.');
22
+ }
23
+ else if (!config.openai.config.project) {
24
+ throw new Error('No OpenAI project specified.');
25
+ }
26
+ }
27
+ }
28
+ exports.OpenAIServiceConfig = OpenAIServiceConfig;
29
+ //# sourceMappingURL=openai.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.config.js","sourceRoot":"","sources":["../../../../../../packages/nestjs/openai/src/lib/openai.config.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACU,QAAA,sBAAsB,GAAG,gBAAgB,CAAC;AAC1C,QAAA,uBAAuB,GAAG,iBAAiB,CAAC;AAC5C,QAAA,8BAA8B,GAAG,eAAe,CAAC;AACjD,QAAA,yBAAyB,GAAG,mBAAmB,CAAC;AAM7D;;GAEG;AACH,MAAsB,mBAAmB;IAC9B,MAAM,CAA0B;IAEzC,MAAM,CAAC,iBAAiB,CAAC,MAA2B;QAClD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;CACF;AAZD,kDAYC"}
@@ -0,0 +1,5 @@
1
+ import { ConfigService } from '@nestjs/config';
2
+ import { OpenAIServiceConfig } from './openai.config';
3
+ export declare function openAIServiceConfigFactory(configService: ConfigService): OpenAIServiceConfig;
4
+ export declare class OpenAIModule {
5
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenAIModule = void 0;
4
+ exports.openAIServiceConfigFactory = openAIServiceConfigFactory;
5
+ const tslib_1 = require("tslib");
6
+ const common_1 = require("@nestjs/common");
7
+ const config_1 = require("@nestjs/config");
8
+ const openai_api_1 = require("./openai.api");
9
+ const openai_config_1 = require("./openai.config");
10
+ function openAIServiceConfigFactory(configService) {
11
+ const config = {
12
+ openai: {
13
+ config: {
14
+ apiKey: configService.get(openai_config_1.OPENAI_API_KEY_ENV_VAR),
15
+ baseURL: configService.get(openai_config_1.OPENAI_BASE_URL_ENV_VAR) ?? undefined,
16
+ organization: configService.get(openai_config_1.OPENAI_ORGANIZATION_ID_ENV_VAR),
17
+ project: configService.get(openai_config_1.OPENAI_PROJECT_ID_ENV_VAR)
18
+ }
19
+ }
20
+ };
21
+ openai_config_1.OpenAIServiceConfig.assertValidConfig(config);
22
+ return config;
23
+ }
24
+ let OpenAIModule = class OpenAIModule {
25
+ };
26
+ exports.OpenAIModule = OpenAIModule;
27
+ exports.OpenAIModule = OpenAIModule = tslib_1.__decorate([
28
+ (0, common_1.Module)({
29
+ imports: [config_1.ConfigModule],
30
+ providers: [
31
+ {
32
+ provide: openai_config_1.OpenAIServiceConfig,
33
+ inject: [config_1.ConfigService],
34
+ useFactory: openAIServiceConfigFactory
35
+ },
36
+ openai_api_1.OpenAIApi
37
+ ],
38
+ exports: [openai_api_1.OpenAIApi]
39
+ })
40
+ ], OpenAIModule);
41
+ //# sourceMappingURL=openai.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.module.js","sourceRoot":"","sources":["../../../../../../packages/nestjs/openai/src/lib/openai.module.ts"],"names":[],"mappings":";;;AAMA,gEAcC;;AApBD,2CAAwC;AACxC,2CAA6D;AAC7D,6CAAyC;AACzC,mDAAkK;AAGlK,SAAgB,0BAA0B,CAAC,aAA4B;IACrE,MAAM,MAAM,GAAwB;QAClC,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,MAAM,EAAE,aAAa,CAAC,GAAG,CAAe,sCAAsB,CAAiB;gBAC/E,OAAO,EAAE,aAAa,CAAC,GAAG,CAAqB,uCAAuB,CAAC,IAAI,SAAS;gBACpF,YAAY,EAAE,aAAa,CAAC,GAAG,CAAuB,8CAA8B,CAAC;gBACrF,OAAO,EAAE,aAAa,CAAC,GAAG,CAAkB,yCAAyB,CAAC;aACvE;SACF;KACF,CAAC;IAEF,mCAAmB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC;AAcM,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IAZxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,qBAAY,CAAC;QACvB,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,mCAAmB;gBAC5B,MAAM,EAAE,CAAC,sBAAa,CAAC;gBACvB,UAAU,EAAE,0BAA0B;aACvC;YACD,sBAAS;SACV;QACD,OAAO,EAAE,CAAC,sBAAS,CAAC;KACrB,CAAC;GACW,YAAY,CAAG"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Api key used by OpenAI for making requests.
3
+ */
4
+ export type OpenAIApiKey = string;
5
+ /**
6
+ * Your OpenAI organization id.
7
+ */
8
+ export type OpenAIOrganizationId = string;
9
+ /**
10
+ * Your OpenAI project id.
11
+ */
12
+ export type OpenAIProjectId = string;
13
+ /**
14
+ * Webhook secret used by OpenAI for validating webhook events.
15
+ */
16
+ export type OpenAIWebhookSecret = string;
17
+ /**
18
+ * Assistant id used by OpenAI.
19
+ */
20
+ export type OpenAIAssistantId = string;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=openai.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.type.js","sourceRoot":"","sources":["../../../../../../packages/nestjs/openai/src/lib/openai.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export * from './webhook.openai';
2
+ export * from './webhook.openai.config';
3
+ export * from './webhook.openai.controller';
4
+ export * from './webhook.openai.module';
5
+ export * from './webhook.openai.service';
6
+ export * from './webhook.openai.verify';
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./webhook.openai"), exports);
5
+ tslib_1.__exportStar(require("./webhook.openai.config"), exports);
6
+ tslib_1.__exportStar(require("./webhook.openai.controller"), exports);
7
+ tslib_1.__exportStar(require("./webhook.openai.module"), exports);
8
+ tslib_1.__exportStar(require("./webhook.openai.service"), exports);
9
+ tslib_1.__exportStar(require("./webhook.openai.verify"), exports);
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/nestjs/openai/src/lib/webhook/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,kEAAwC;AACxC,sEAA4C;AAC5C,kEAAwC;AACxC,mEAAyC;AACzC,kEAAwC"}
@@ -0,0 +1,12 @@
1
+ import { OpenAIWebhookSecret } from '../openai.type';
2
+ export declare const OPENAI_WEBHOOK_SECRET_ENV_VAR = "OPENAI_WEBHOOK_SECRET";
3
+ export interface OpenAIWebhookConfig {
4
+ readonly webhookSecret: OpenAIWebhookSecret;
5
+ }
6
+ /**
7
+ * Configuration for OpenAIService
8
+ */
9
+ export declare abstract class OpenAIWebhookServiceConfig {
10
+ readonly openaiWebhook: OpenAIWebhookConfig;
11
+ static assertValidConfig(config: OpenAIWebhookServiceConfig): void;
12
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenAIWebhookServiceConfig = exports.OPENAI_WEBHOOK_SECRET_ENV_VAR = void 0;
4
+ exports.OPENAI_WEBHOOK_SECRET_ENV_VAR = 'OPENAI_WEBHOOK_SECRET';
5
+ /**
6
+ * Configuration for OpenAIService
7
+ */
8
+ class OpenAIWebhookServiceConfig {
9
+ openaiWebhook;
10
+ static assertValidConfig(config) {
11
+ if (!config.openaiWebhook.webhookSecret) {
12
+ throw new Error('No OpenAI webhook secret specified.');
13
+ }
14
+ }
15
+ }
16
+ exports.OpenAIWebhookServiceConfig = OpenAIWebhookServiceConfig;
17
+ //# sourceMappingURL=webhook.openai.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.openai.config.js","sourceRoot":"","sources":["../../../../../../../packages/nestjs/openai/src/lib/webhook/webhook.openai.config.ts"],"names":[],"mappings":";;;AAEa,QAAA,6BAA6B,GAAG,uBAAuB,CAAC;AAMrE;;GAEG;AACH,MAAsB,0BAA0B;IACrC,aAAa,CAAuB;IAE7C,MAAM,CAAC,iBAAiB,CAAC,MAAkC;QACzD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF;AARD,gEAQC"}
@@ -0,0 +1,8 @@
1
+ import { RawBodyBuffer } from '@dereekb/nestjs';
2
+ import { Request } from 'express';
3
+ import { OpenAIWebhookService } from './webhook.openai.service';
4
+ export declare class OpenAIWebhookController {
5
+ private readonly _openaiWebhookService;
6
+ constructor(openaiWebhookService: OpenAIWebhookService);
7
+ handleOpenAIWebhook(req: Request, rawBody: RawBodyBuffer): Promise<void>;
8
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenAIWebhookController = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const nestjs_1 = require("@dereekb/nestjs");
6
+ const common_1 = require("@nestjs/common");
7
+ const webhook_openai_service_1 = require("./webhook.openai.service");
8
+ let OpenAIWebhookController = class OpenAIWebhookController {
9
+ _openaiWebhookService;
10
+ constructor(openaiWebhookService) {
11
+ this._openaiWebhookService = openaiWebhookService;
12
+ }
13
+ async handleOpenAIWebhook(req, rawBody) {
14
+ await this._openaiWebhookService.updateForWebhook(req, rawBody);
15
+ }
16
+ };
17
+ exports.OpenAIWebhookController = OpenAIWebhookController;
18
+ tslib_1.__decorate([
19
+ (0, common_1.Post)(),
20
+ tslib_1.__param(0, (0, common_1.Req)()),
21
+ tslib_1.__param(1, (0, nestjs_1.RawBody)()),
22
+ tslib_1.__metadata("design:type", Function),
23
+ tslib_1.__metadata("design:paramtypes", [Object, Object]),
24
+ tslib_1.__metadata("design:returntype", Promise)
25
+ ], OpenAIWebhookController.prototype, "handleOpenAIWebhook", null);
26
+ exports.OpenAIWebhookController = OpenAIWebhookController = tslib_1.__decorate([
27
+ (0, common_1.Controller)('/webhook/openai'),
28
+ tslib_1.__metadata("design:paramtypes", [webhook_openai_service_1.OpenAIWebhookService])
29
+ ], OpenAIWebhookController);
30
+ //# sourceMappingURL=webhook.openai.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.openai.controller.js","sourceRoot":"","sources":["../../../../../../../packages/nestjs/openai/src/lib/webhook/webhook.openai.controller.ts"],"names":[],"mappings":";;;;AAAA,4CAAyD;AACzD,2CAAuD;AAEvD,qEAAgE;AAGzD,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IACjB,qBAAqB,CAAuB;IAE7D,YAAY,oBAA0C;QACpD,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;IACpD,CAAC;IAGK,AAAN,KAAK,CAAC,mBAAmB,CAAQ,GAAY,EAAa,OAAsB;QAC9E,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;CACF,CAAA;AAXY,0DAAuB;AAQ5B;IADL,IAAA,aAAI,GAAE;IACoB,mBAAA,IAAA,YAAG,GAAE,CAAA;IAAgB,mBAAA,IAAA,gBAAO,GAAE,CAAA;;;;kEAExD;kCAVU,uBAAuB;IADnC,IAAA,mBAAU,EAAC,iBAAiB,CAAC;6CAIM,6CAAoB;GAH3C,uBAAuB,CAWnC"}
@@ -0,0 +1,44 @@
1
+ import { HandlerBindAccessor, HandlerMappedSetFunction, Handler } from '@dereekb/util';
2
+ import '../openai.type';
3
+ import { BatchCancelledWebhookEvent, BatchCompletedWebhookEvent, BatchExpiredWebhookEvent, BatchFailedWebhookEvent, EvalRunCanceledWebhookEvent, EvalRunFailedWebhookEvent, EvalRunSucceededWebhookEvent, FineTuningJobCancelledWebhookEvent, FineTuningJobFailedWebhookEvent, FineTuningJobSucceededWebhookEvent, ResponseCancelledWebhookEvent, ResponseCompletedWebhookEvent, ResponseFailedWebhookEvent, ResponseIncompleteWebhookEvent, UnwrapWebhookEvent } from 'openai/resources/webhooks';
4
+ export type OpenAIWebhookEventType = UnwrapWebhookEvent['type'];
5
+ export interface RawOpenAIWebhookEvent {
6
+ readonly message: UntypedOpenAIWebhookEvent;
7
+ }
8
+ /**
9
+ * A parsed OpenAIWebhookEventType that contains the relevant data and the original event.
10
+ */
11
+ export type OpenAIWebhookEvent<T extends UnwrapWebhookEvent = UnwrapWebhookEvent, ET extends OpenAIWebhookEventType = OpenAIWebhookEventType> = T & {
12
+ /**
13
+ * The event type
14
+ */
15
+ readonly type: ET;
16
+ };
17
+ export type UntypedOpenAIWebhookEvent = UnwrapWebhookEvent;
18
+ /**
19
+ * Creates a OpenAIWebhookEvent and treats the data as the input type.
20
+ *
21
+ * @param event
22
+ * @returns
23
+ */
24
+ export declare function openAIWebhookEvent<T extends UnwrapWebhookEvent = UnwrapWebhookEvent>(event: UntypedOpenAIWebhookEvent): OpenAIWebhookEvent<T>;
25
+ export type OpenAIEventHandler = Handler<UntypedOpenAIWebhookEvent, OpenAIWebhookEventType>;
26
+ export declare const openaiEventHandlerFactory: import("@dereekb/util").HandlerFactory<UnwrapWebhookEvent, "batch.cancelled" | "batch.completed" | "batch.expired" | "batch.failed" | "eval.run.canceled" | "eval.run.failed" | "eval.run.succeeded" | "fine_tuning.job.cancelled" | "fine_tuning.job.failed" | "fine_tuning.job.succeeded" | "response.cancelled" | "response.completed" | "response.failed" | "response.incomplete", boolean>;
27
+ export type OpenAIHandlerMappedSetFunction<T extends UnwrapWebhookEvent = UnwrapWebhookEvent> = HandlerMappedSetFunction<OpenAIWebhookEvent<T>>;
28
+ export interface OpenAIEventHandlerConfigurer extends HandlerBindAccessor<UntypedOpenAIWebhookEvent, OpenAIWebhookEventType> {
29
+ readonly handleBatchCancelled: OpenAIHandlerMappedSetFunction<BatchCancelledWebhookEvent>;
30
+ readonly handleBatchCompleted: OpenAIHandlerMappedSetFunction<BatchCompletedWebhookEvent>;
31
+ readonly handleBatchExpired: OpenAIHandlerMappedSetFunction<BatchExpiredWebhookEvent>;
32
+ readonly handleBatchFailed: OpenAIHandlerMappedSetFunction<BatchFailedWebhookEvent>;
33
+ readonly handleEvalRunCanceled: OpenAIHandlerMappedSetFunction<EvalRunCanceledWebhookEvent>;
34
+ readonly handleEvalRunFailed: OpenAIHandlerMappedSetFunction<EvalRunFailedWebhookEvent>;
35
+ readonly handleEvalRunSucceeded: OpenAIHandlerMappedSetFunction<EvalRunSucceededWebhookEvent>;
36
+ readonly handleFineTuningJobCancelled: OpenAIHandlerMappedSetFunction<FineTuningJobCancelledWebhookEvent>;
37
+ readonly handleFineTuningJobFailed: OpenAIHandlerMappedSetFunction<FineTuningJobFailedWebhookEvent>;
38
+ readonly handleFineTuningJobSucceeded: OpenAIHandlerMappedSetFunction<FineTuningJobSucceededWebhookEvent>;
39
+ readonly handleResponseCancelled: OpenAIHandlerMappedSetFunction<ResponseCancelledWebhookEvent>;
40
+ readonly handleResponseCompleted: OpenAIHandlerMappedSetFunction<ResponseCompletedWebhookEvent>;
41
+ readonly handleResponseFailed: OpenAIHandlerMappedSetFunction<ResponseFailedWebhookEvent>;
42
+ readonly handleResponseIncomplete: OpenAIHandlerMappedSetFunction<ResponseIncompleteWebhookEvent>;
43
+ }
44
+ export declare const openaiEventHandlerConfigurerFactory: import("@dereekb/util").HandlerConfigurerFactory<OpenAIEventHandlerConfigurer, UnwrapWebhookEvent, "batch.cancelled" | "batch.completed" | "batch.expired" | "batch.failed" | "eval.run.canceled" | "eval.run.failed" | "eval.run.succeeded" | "fine_tuning.job.cancelled" | "fine_tuning.job.failed" | "fine_tuning.job.succeeded" | "response.cancelled" | "response.completed" | "response.failed" | "response.incomplete", boolean>;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.openaiEventHandlerConfigurerFactory = exports.openaiEventHandlerFactory = void 0;
4
+ exports.openAIWebhookEvent = openAIWebhookEvent;
5
+ const util_1 = require("@dereekb/util");
6
+ require("../openai.type");
7
+ /**
8
+ * Creates a OpenAIWebhookEvent and treats the data as the input type.
9
+ *
10
+ * @param event
11
+ * @returns
12
+ */
13
+ function openAIWebhookEvent(event) {
14
+ return event;
15
+ }
16
+ exports.openaiEventHandlerFactory = (0, util_1.handlerFactory)((x) => x.type);
17
+ exports.openaiEventHandlerConfigurerFactory = (0, util_1.handlerConfigurerFactory)({
18
+ configurerForAccessor: (accessor) => {
19
+ // eslint-disable-next-line
20
+ const fnWithKey = (0, util_1.handlerMappedSetFunctionFactory)(accessor, openAIWebhookEvent);
21
+ const configurer = {
22
+ ...accessor,
23
+ handleBatchCancelled: fnWithKey('batch.cancelled'),
24
+ handleBatchCompleted: fnWithKey('batch.completed'),
25
+ handleBatchExpired: fnWithKey('batch.expired'),
26
+ handleBatchFailed: fnWithKey('batch.failed'),
27
+ handleEvalRunCanceled: fnWithKey('eval.run.canceled'),
28
+ handleEvalRunFailed: fnWithKey('eval.run.failed'),
29
+ handleEvalRunSucceeded: fnWithKey('eval.run.succeeded'),
30
+ handleFineTuningJobCancelled: fnWithKey('fine_tuning.job.cancelled'),
31
+ handleFineTuningJobFailed: fnWithKey('fine_tuning.job.failed'),
32
+ handleFineTuningJobSucceeded: fnWithKey('fine_tuning.job.succeeded'),
33
+ handleResponseCancelled: fnWithKey('response.cancelled'),
34
+ handleResponseCompleted: fnWithKey('response.completed'),
35
+ handleResponseFailed: fnWithKey('response.failed'),
36
+ handleResponseIncomplete: fnWithKey('response.incomplete')
37
+ };
38
+ return configurer;
39
+ }
40
+ });
41
+ //# sourceMappingURL=webhook.openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.openai.js","sourceRoot":"","sources":["../../../../../../../packages/nestjs/openai/src/lib/webhook/webhook.openai.ts"],"names":[],"mappings":";;;AA4BA,gDAEC;AA9BD,wCAAkK;AAClK,0BAAwB;AAqBxB;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAoD,KAAgC;IACpH,OAAO,KAA8B,CAAC;AACxC,CAAC;AAIY,QAAA,yBAAyB,GAAG,IAAA,qBAAc,EAAoD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAqB7G,QAAA,mCAAmC,GAAG,IAAA,+BAAwB,EAAkF;IAC3J,qBAAqB,EAAE,CAAC,QAAgF,EAAE,EAAE;QAC1G,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAA,sCAA+B,EAAuD,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAEtI,MAAM,UAAU,GAAiC;YAC/C,GAAG,QAAQ;YACX,oBAAoB,EAAE,SAAS,CAAC,iBAAiB,CAAC;YAClD,oBAAoB,EAAE,SAAS,CAAC,iBAAiB,CAAC;YAClD,kBAAkB,EAAE,SAAS,CAAC,eAAe,CAAC;YAC9C,iBAAiB,EAAE,SAAS,CAAC,cAAc,CAAC;YAC5C,qBAAqB,EAAE,SAAS,CAAC,mBAAmB,CAAC;YACrD,mBAAmB,EAAE,SAAS,CAAC,iBAAiB,CAAC;YACjD,sBAAsB,EAAE,SAAS,CAAC,oBAAoB,CAAC;YACvD,4BAA4B,EAAE,SAAS,CAAC,2BAA2B,CAAC;YACpE,yBAAyB,EAAE,SAAS,CAAC,wBAAwB,CAAC;YAC9D,4BAA4B,EAAE,SAAS,CAAC,2BAA2B,CAAC;YACpE,uBAAuB,EAAE,SAAS,CAAC,oBAAoB,CAAC;YACxD,uBAAuB,EAAE,SAAS,CAAC,oBAAoB,CAAC;YACxD,oBAAoB,EAAE,SAAS,CAAC,iBAAiB,CAAC;YAClD,wBAAwB,EAAE,SAAS,CAAC,qBAAqB,CAAC;SAC3D,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { OpenAIWebhookServiceConfig } from './webhook.openai.config';
2
+ import { ConfigService } from '@nestjs/config';
3
+ export declare function openAIWebhookServiceConfigFactory(configService: ConfigService): OpenAIWebhookServiceConfig;
4
+ export declare class OpenAIWebhookModule {
5
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenAIWebhookModule = void 0;
4
+ exports.openAIWebhookServiceConfigFactory = openAIWebhookServiceConfigFactory;
5
+ const tslib_1 = require("tslib");
6
+ const webhook_openai_controller_1 = require("./webhook.openai.controller");
7
+ const common_1 = require("@nestjs/common");
8
+ const webhook_openai_service_1 = require("./webhook.openai.service");
9
+ const webhook_openai_config_1 = require("./webhook.openai.config");
10
+ const config_1 = require("@nestjs/config");
11
+ const openai_module_1 = require("../openai.module");
12
+ function openAIWebhookServiceConfigFactory(configService) {
13
+ const config = {
14
+ openaiWebhook: {
15
+ webhookSecret: configService.get(webhook_openai_config_1.OPENAI_WEBHOOK_SECRET_ENV_VAR)
16
+ }
17
+ };
18
+ webhook_openai_config_1.OpenAIWebhookServiceConfig.assertValidConfig(config);
19
+ return config;
20
+ }
21
+ let OpenAIWebhookModule = class OpenAIWebhookModule {
22
+ };
23
+ exports.OpenAIWebhookModule = OpenAIWebhookModule;
24
+ exports.OpenAIWebhookModule = OpenAIWebhookModule = tslib_1.__decorate([
25
+ (0, common_1.Module)({
26
+ imports: [config_1.ConfigModule, openai_module_1.OpenAIModule],
27
+ controllers: [webhook_openai_controller_1.OpenAIWebhookController],
28
+ providers: [
29
+ {
30
+ provide: webhook_openai_config_1.OpenAIWebhookServiceConfig,
31
+ inject: [config_1.ConfigService],
32
+ useFactory: openAIWebhookServiceConfigFactory
33
+ },
34
+ webhook_openai_service_1.OpenAIWebhookService
35
+ ],
36
+ exports: [webhook_openai_service_1.OpenAIWebhookService]
37
+ })
38
+ ], OpenAIWebhookModule);
39
+ //# sourceMappingURL=webhook.openai.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.openai.module.js","sourceRoot":"","sources":["../../../../../../../packages/nestjs/openai/src/lib/webhook/webhook.openai.module.ts"],"names":[],"mappings":";;;AAQA,8EASC;;AAjBD,2EAAsE;AACtE,2CAAwC;AACxC,qEAAgE;AAChE,mEAAoG;AACpG,2CAA6D;AAE7D,oDAAgD;AAEhD,SAAgB,iCAAiC,CAAC,aAA4B;IAC5E,MAAM,MAAM,GAA+B;QACzC,aAAa,EAAE;YACb,aAAa,EAAE,aAAa,CAAC,GAAG,CAAsB,qDAA6B,CAAwB;SAC5G;KACF,CAAC;IAEF,kDAA0B,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC;AAChB,CAAC;AAeM,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAAG,CAAA;AAAtB,kDAAmB;8BAAnB,mBAAmB;IAb/B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,qBAAY,EAAE,4BAAY,CAAC;QACrC,WAAW,EAAE,CAAC,mDAAuB,CAAC;QACtC,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,kDAA0B;gBACnC,MAAM,EAAE,CAAC,sBAAa,CAAC;gBACvB,UAAU,EAAE,iCAAiC;aAC9C;YACD,6CAAoB;SACrB;QACD,OAAO,EAAE,CAAC,6CAAoB,CAAC;KAChC,CAAC;GACW,mBAAmB,CAAG"}
@@ -0,0 +1,17 @@
1
+ import { Request } from 'express';
2
+ import { OpenAIWebhookEvent, OpenAIWebhookEventType } from './webhook.openai';
3
+ import { Handler } from '@dereekb/util';
4
+ import { OpenAIWebhookServiceConfig } from './webhook.openai.config';
5
+ import { OpenAIApi } from '../openai.api';
6
+ /**
7
+ * Service that makes system changes based on OpenAI webhook events.
8
+ */
9
+ export declare class OpenAIWebhookService {
10
+ private readonly logger;
11
+ private readonly _verifier;
12
+ readonly handler: Handler<OpenAIWebhookEvent, OpenAIWebhookEventType>;
13
+ readonly configure: import("@dereekb/util").HandlerConfigurer<import("./webhook.openai").OpenAIEventHandlerConfigurer, import("openai/resources/webhooks").UnwrapWebhookEvent, "batch.cancelled" | "batch.completed" | "batch.expired" | "batch.failed" | "eval.run.canceled" | "eval.run.failed" | "eval.run.succeeded" | "fine_tuning.job.cancelled" | "fine_tuning.job.failed" | "fine_tuning.job.succeeded" | "response.cancelled" | "response.completed" | "response.failed" | "response.incomplete", boolean>;
14
+ constructor(openAiApi: OpenAIApi, openAIWebhookServiceConfig: OpenAIWebhookServiceConfig);
15
+ updateForWebhook(req: Request, rawBody: Buffer): Promise<void>;
16
+ updateForOpenAIEvent(event: OpenAIWebhookEvent): Promise<void>;
17
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenAIWebhookService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const webhook_openai_1 = require("./webhook.openai");
7
+ const webhook_openai_config_1 = require("./webhook.openai.config");
8
+ const openai_api_1 = require("../openai.api");
9
+ const webhook_openai_verify_1 = require("./webhook.openai.verify");
10
+ /**
11
+ * Service that makes system changes based on OpenAI webhook events.
12
+ */
13
+ let OpenAIWebhookService = class OpenAIWebhookService {
14
+ logger = new common_1.Logger('OpenAIWebhookService');
15
+ _verifier;
16
+ handler = (0, webhook_openai_1.openaiEventHandlerFactory)();
17
+ configure = (0, webhook_openai_1.openaiEventHandlerConfigurerFactory)(this.handler);
18
+ constructor(openAiApi, openAIWebhookServiceConfig) {
19
+ const { webhookSecret } = openAIWebhookServiceConfig.openaiWebhook;
20
+ this._verifier = (0, webhook_openai_verify_1.openAIWebhookEventVerifier)({
21
+ secret: webhookSecret,
22
+ client: openAiApi.openAIClient
23
+ });
24
+ }
25
+ async updateForWebhook(req, rawBody) {
26
+ const result = await this._verifier(req, rawBody);
27
+ if (!result.valid) {
28
+ this.logger.warn('Received invalid OpenAI event.', req);
29
+ }
30
+ else {
31
+ await this.updateForOpenAIEvent(result.event);
32
+ }
33
+ }
34
+ async updateForOpenAIEvent(event) {
35
+ const result = await this.handler(event);
36
+ if (!result) {
37
+ this.logger.warn('Received unexpected/unhandled OpenAI event.', event);
38
+ }
39
+ }
40
+ };
41
+ exports.OpenAIWebhookService = OpenAIWebhookService;
42
+ exports.OpenAIWebhookService = OpenAIWebhookService = tslib_1.__decorate([
43
+ (0, common_1.Injectable)(),
44
+ tslib_1.__param(0, (0, common_1.Inject)(openai_api_1.OpenAIApi)),
45
+ tslib_1.__param(1, (0, common_1.Inject)(webhook_openai_config_1.OpenAIWebhookServiceConfig)),
46
+ tslib_1.__metadata("design:paramtypes", [openai_api_1.OpenAIApi, webhook_openai_config_1.OpenAIWebhookServiceConfig])
47
+ ], OpenAIWebhookService);
48
+ //# sourceMappingURL=webhook.openai.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.openai.service.js","sourceRoot":"","sources":["../../../../../../../packages/nestjs/openai/src/lib/webhook/webhook.openai.service.ts"],"names":[],"mappings":";;;;AAAA,2CAA4D;AAE5D,qDAA8I;AAE9I,mEAAqE;AACrE,8CAA0C;AAC1C,mEAAiG;AAEjG;;GAEG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACd,MAAM,GAAG,IAAI,eAAM,CAAC,sBAAsB,CAAC,CAAC;IAE5C,SAAS,CAA6B;IAE9C,OAAO,GAAwD,IAAA,0CAAyB,GAAE,CAAC;IAC3F,SAAS,GAAG,IAAA,oDAAmC,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEvE,YAA+B,SAAoB,EAAsC,0BAAsD;QAC7I,MAAM,EAAE,aAAa,EAAE,GAAG,0BAA0B,CAAC,aAAa,CAAC;QAEnE,IAAI,CAAC,SAAS,GAAG,IAAA,kDAA0B,EAAC;YAC1C,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,SAAS,CAAC,YAAY;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAY,EAAE,OAAe;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAElD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAA2B,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,KAAyB;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;CACF,CAAA;AAlCY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;IASE,mBAAA,IAAA,eAAM,EAAC,sBAAS,CAAC,CAAA;IAAwB,mBAAA,IAAA,eAAM,EAAC,kDAA0B,CAAC,CAAA;6CAA9C,sBAAS,EAAkE,kDAA0B;GARpI,oBAAoB,CAkChC"}
@@ -0,0 +1,36 @@
1
+ import { Request } from 'express';
2
+ import { OpenAI } from 'openai';
3
+ import { OpenAIWebhookSecret } from '../openai.type';
4
+ import { Maybe } from '@dereekb/util';
5
+ import { UnwrapWebhookEvent } from 'openai/resources/webhooks';
6
+ export interface OpenAIWebhookEventVerificationConfig {
7
+ /**
8
+ * Secret token to use for verification.
9
+ *
10
+ * If not defined, uses what is configured in the client.
11
+ */
12
+ readonly secret?: OpenAIWebhookSecret;
13
+ /**
14
+ * OpenAI client to use for verification.
15
+ */
16
+ readonly client: OpenAI;
17
+ }
18
+ export type OpenAIWebhookEventVerificationResult = OpenAIWebhookEventVerificationSuccessResult | OpenAIWebhookEventVerificationErrorResult;
19
+ export interface OpenAIWebhookEventVerificationSuccessResult {
20
+ readonly valid: true;
21
+ readonly event: Maybe<UnwrapWebhookEvent>;
22
+ }
23
+ export interface OpenAIWebhookEventVerificationErrorResult {
24
+ readonly valid: false;
25
+ }
26
+ /**
27
+ * Function that verifies a OpenAI webhook event.
28
+ */
29
+ export type OpenAIWebhookEventVerifier = (req: Request, rawBody: Buffer) => Promise<OpenAIWebhookEventVerificationResult>;
30
+ /**
31
+ * Verifies a OpenAI webhook event header.
32
+ *
33
+ * @param vapiSecretTokenGetter The OpenAI secret token. The Vapi client allows for using an AsyncGetterOrValue type, so the verifier supports that as well.
34
+ * @returns A function that verifies a OpenAI webhook event.
35
+ */
36
+ export declare function openAIWebhookEventVerifier(config: OpenAIWebhookEventVerificationConfig): OpenAIWebhookEventVerifier;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.openAIWebhookEventVerifier = openAIWebhookEventVerifier;
4
+ const openai_1 = require("openai");
5
+ /**
6
+ * Verifies a OpenAI webhook event header.
7
+ *
8
+ * @param vapiSecretTokenGetter The OpenAI secret token. The Vapi client allows for using an AsyncGetterOrValue type, so the verifier supports that as well.
9
+ * @returns A function that verifies a OpenAI webhook event.
10
+ */
11
+ function openAIWebhookEventVerifier(config) {
12
+ const { secret, client } = config;
13
+ return async (request, rawBody) => {
14
+ const headers = request.headers;
15
+ const requestBodyString = String(request.body);
16
+ let event;
17
+ let valid = false;
18
+ try {
19
+ event = await client.webhooks.unwrap(requestBodyString, headers, secret);
20
+ valid = true;
21
+ }
22
+ catch (e) {
23
+ if (e instanceof openai_1.InvalidWebhookSignatureError) {
24
+ valid = false;
25
+ }
26
+ else {
27
+ throw e;
28
+ }
29
+ }
30
+ const result = {
31
+ valid,
32
+ event
33
+ };
34
+ return result;
35
+ };
36
+ }
37
+ //# sourceMappingURL=webhook.openai.verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.openai.verify.js","sourceRoot":"","sources":["../../../../../../../packages/nestjs/openai/src/lib/webhook/webhook.openai.verify.ts"],"names":[],"mappings":";;AAyCA,gEA4BC;AApED,mCAA8D;AAkC9D;;;;;GAKG;AACH,SAAgB,0BAA0B,CAAC,MAA4C;IACrF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAElC,OAAO,KAAK,EAAE,OAAgB,EAAE,OAAe,EAAE,EAAE;QACjD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE/C,IAAI,KAAgC,CAAC;QACrC,IAAI,KAAK,GAAG,KAAK,CAAC;QAElB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACzE,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,qCAA4B,EAAE,CAAC;gBAC9C,KAAK,GAAG,KAAK,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAyC;YACnD,KAAK;YACL,KAAK;SACN,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/nestjs",
3
- "version": "12.2.0",
3
+ "version": "12.3.0",
4
4
  "type": "commonjs",
5
5
  "exports": {
6
6
  ".": {
@@ -26,6 +26,12 @@
26
26
  "main": "./vapiai/src/index.js",
27
27
  "require": "./vapiai/src/index.js",
28
28
  "default": "./vapiai/src/index.js"
29
+ },
30
+ "./openai": {
31
+ "types": "./openai/src/index.d.ts",
32
+ "main": "./openai/src/index.js",
33
+ "require": "./openai/src/index.js",
34
+ "default": "./openai/src/index.js"
29
35
  }
30
36
  },
31
37
  "main": "./src/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/nestjs/stripe",
3
- "version": "12.2.0",
3
+ "version": "12.3.0",
4
4
  "type": "commonjs",
5
5
  "peerDependencies": {},
6
6
  "dependencies": {},
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/nestjs/vapiai",
3
- "version": "12.2.0",
3
+ "version": "12.3.0",
4
4
  "type": "commonjs",
5
5
  "peerDependencies": {},
6
6
  "dependencies": {},
@@ -1,4 +1,4 @@
1
- import { ChatCostsItem, CallCostsItem, ServerMessageEndOfCallReportCostsItem } from '@vapi-ai/server-sdk/api';
1
+ import { Vapi } from '@vapi-ai/server-sdk';
2
2
  /**
3
3
  * Secret token used by Vapi.ai for making requests.
4
4
  */
@@ -30,8 +30,19 @@ export type VapiApiWebhookEventVerificationType = 'none' | 'secret' | 'hmac';
30
30
  /**
31
31
  * Cost item used by Vapi.ai.
32
32
  */
33
- export type VapiCostsItem = ChatCostsItem | CallCostsItem | ServerMessageEndOfCallReportCostsItem;
33
+ export type VapiCostsItem = Vapi.ServerMessageEndOfCallReport.Costs.Item;
34
34
  /**
35
35
  * Assistant id used by Vapi.ai.
36
36
  */
37
37
  export type VapiAssistantId = string;
38
+ export type VapiTranscript = string;
39
+ export interface VapiTranscriptRef {
40
+ transcript?: VapiTranscript;
41
+ }
42
+ /**
43
+ * Call with transcript.
44
+ *
45
+ * The Vapi.ai server-sdk does not include the transcript in the call object, so we extend it here.
46
+ */
47
+ export interface VapiCallWithTranscript extends Vapi.Call, VapiTranscriptRef {
48
+ }
@@ -1,7 +1,6 @@
1
1
  import { HandlerBindAccessor, HandlerMappedSetFunction, Handler, Maybe } from '@dereekb/util';
2
- import '../vapiai.type';
3
- import { AssistantRequestPayload, EndOfCallReportPayload, FunctionCallPayload, HangPayload, SpeechUpdatePayload, StatusUpdatePayload, TranscriptPayload, VapiPayload, VapiResponse, VapiWebhookEnum } from './webhook.vapiai.types';
4
- export type VapiAiWebhookEventType = VapiWebhookEnum | string;
2
+ import { AssistantRequestPayload, EndOfCallReportPayload, FunctionCallPayload, HangPayload, SpeechUpdatePayload, StatusUpdatePayload, TranscriptPayload, VapiPayload, VapiPayloadType, VapiResponse } from './webhook.vapiai.types';
3
+ export type VapiAiWebhookEventType = VapiPayloadType | string;
5
4
  export interface VapiAiWebhookResult {
6
5
  readonly handled: boolean;
7
6
  /**
@@ -23,7 +22,7 @@ export type VapiAiWebhookEvent<T extends VapiPayload = VapiPayload, ET extends V
23
22
  };
24
23
  export type UntypedVapiAiWebhookEvent = VapiAiWebhookEvent;
25
24
  /**
26
- * Creates a ZoomWebhookEvent and treats the data as the input type.
25
+ * Creates a VapiAiWebhookEvent and treats the data as the input type.
27
26
  *
28
27
  * @param event
29
28
  * @returns
@@ -3,10 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.vapiaiEventHandlerConfigurerFactory = exports.vapiaiEventHandlerFactory = void 0;
4
4
  exports.vapiAiWebhookEvent = vapiAiWebhookEvent;
5
5
  const util_1 = require("@dereekb/util");
6
- require("../vapiai.type");
7
- const webhook_vapiai_types_1 = require("./webhook.vapiai.types");
8
6
  /**
9
- * Creates a ZoomWebhookEvent and treats the data as the input type.
7
+ * Creates a VapiAiWebhookEvent and treats the data as the input type.
10
8
  *
11
9
  * @param event
12
10
  * @returns
@@ -30,13 +28,13 @@ exports.vapiaiEventHandlerConfigurerFactory = (0, util_1.handlerConfigurerFactor
30
28
  const fnWithKey = (0, util_1.handlerMappedSetFunctionFactory)(accessor, vapiAiWebhookEvent);
31
29
  const configurer = {
32
30
  ...accessor,
33
- handleAssistantRequest: fnWithKey(webhook_vapiai_types_1.VapiWebhookEnum.ASSISTANT_REQUEST),
34
- handleStatusUpdate: fnWithKey(webhook_vapiai_types_1.VapiWebhookEnum.STATUS_UPDATE),
35
- handleFunctionCall: fnWithKey(webhook_vapiai_types_1.VapiWebhookEnum.FUNCTION_CALL),
36
- handleEndOfCallReport: fnWithKey(webhook_vapiai_types_1.VapiWebhookEnum.END_OF_CALL_REPORT),
37
- handleHang: fnWithKey(webhook_vapiai_types_1.VapiWebhookEnum.HANG),
38
- handleSpeechUpdate: fnWithKey(webhook_vapiai_types_1.VapiWebhookEnum.SPEECH_UPDATE),
39
- handleTranscript: fnWithKey(webhook_vapiai_types_1.VapiWebhookEnum.TRANSCRIPT)
31
+ handleAssistantRequest: fnWithKey('assistant-request'),
32
+ handleStatusUpdate: fnWithKey('status-update'),
33
+ handleFunctionCall: fnWithKey('function-call'),
34
+ handleEndOfCallReport: fnWithKey('end-of-call-report'),
35
+ handleHang: fnWithKey('hang'),
36
+ handleSpeechUpdate: fnWithKey('speech-update'),
37
+ handleTranscript: fnWithKey('transcript')
40
38
  };
41
39
  return configurer;
42
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.vapiai.js","sourceRoot":"","sources":["../../../../../../../packages/nestjs/vapiai/src/lib/webhook/webhook.vapiai.ts"],"names":[],"mappings":";;;AAoCA,gDAEC;AAtCD,wCAAyK;AACzK,0BAAwB;AACxB,iEAAoO;AA4BpO;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAwB,KAAgC;IACxF,OAAO,KAA8B,CAAC;AACxC,CAAC;AAIY,QAAA,yBAAyB,GAAG,IAAA,qBAAc,EAAyE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;IAC7I,aAAa,EAAE;QACb,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,SAAS;KACpB;IACD,cAAc,EAAE;QACd,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,SAAS;KACpB;CACF,CAAC,CAAC;AAoBU,QAAA,mCAAmC,GAAG,IAAA,+BAAwB,EAAuG;IAChL,qBAAqB,EAAE,CAAC,QAAqG,EAAE,EAAE;QAC/H,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAA,sCAA+B,EAAmF,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAElK,MAAM,UAAU,GAAiC;YAC/C,GAAG,QAAQ;YACX,sBAAsB,EAAE,SAAS,CAAC,sCAAe,CAAC,iBAAiB,CAAC;YACpE,kBAAkB,EAAE,SAAS,CAAC,sCAAe,CAAC,aAAa,CAAC;YAC5D,kBAAkB,EAAE,SAAS,CAAC,sCAAe,CAAC,aAAa,CAAC;YAC5D,qBAAqB,EAAE,SAAS,CAAC,sCAAe,CAAC,kBAAkB,CAAC;YACpE,UAAU,EAAE,SAAS,CAAC,sCAAe,CAAC,IAAI,CAAC;YAC3C,kBAAkB,EAAE,SAAS,CAAC,sCAAe,CAAC,aAAa,CAAC;YAC5D,gBAAgB,EAAE,SAAS,CAAC,sCAAe,CAAC,UAAU,CAAC;SACxD,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"webhook.vapiai.js","sourceRoot":"","sources":["../../../../../../../packages/nestjs/vapiai/src/lib/webhook/webhook.vapiai.ts"],"names":[],"mappings":";;;AAmCA,gDAEC;AArCD,wCAAyK;AA6BzK;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAwB,KAAgC;IACxF,OAAO,KAA8B,CAAC;AACxC,CAAC;AAIY,QAAA,yBAAyB,GAAG,IAAA,qBAAc,EAAyE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;IAC7I,aAAa,EAAE;QACb,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,SAAS;KACpB;IACD,cAAc,EAAE;QACd,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,SAAS;KACpB;CACF,CAAC,CAAC;AAoBU,QAAA,mCAAmC,GAAG,IAAA,+BAAwB,EAAuG;IAChL,qBAAqB,EAAE,CAAC,QAAqG,EAAE,EAAE;QAC/H,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAA,sCAA+B,EAAmF,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAElK,MAAM,UAAU,GAAiC;YAC/C,GAAG,QAAQ;YACX,sBAAsB,EAAE,SAAS,CAAC,mBAAmB,CAAC;YACtD,kBAAkB,EAAE,SAAS,CAAC,eAAe,CAAC;YAC9C,kBAAkB,EAAE,SAAS,CAAC,eAAe,CAAC;YAC9C,qBAAqB,EAAE,SAAS,CAAC,oBAAoB,CAAC;YACtD,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC;YAC7B,kBAAkB,EAAE,SAAS,CAAC,eAAe,CAAC;YAC9C,gBAAgB,EAAE,SAAS,CAAC,YAAY,CAAC;SAC1C,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC;CACF,CAAC,CAAC"}
@@ -1,102 +1,65 @@
1
1
  import { DollarAmount, ISO8601DateStringUTCFull, JSONEncodedString, UnixDateTimeNumber, WebsiteUrlWithPrefix } from '@dereekb/util';
2
- import { Analysis, Artifact, Assistant, Call, CallEndedReason, CallStatus, ChatMessagesItem, CostBreakdown } from '@vapi-ai/server-sdk/api';
3
- import { VapiAssistantId, VapiCostsItem } from '../vapiai.type';
4
- export declare enum VapiWebhookEnum {
5
- ASSISTANT_REQUEST = "assistant-request",
6
- FUNCTION_CALL = "function-call",
7
- STATUS_UPDATE = "status-update",
8
- END_OF_CALL_REPORT = "end-of-call-report",
9
- HANG = "hang",
10
- /**
11
- * @deprecated needs documentation link
12
- */
13
- SPEECH_UPDATE = "speech-update",
14
- /**
15
- * @deprecated needs documentation link
16
- */
17
- TRANSCRIPT = "transcript"
18
- }
2
+ import { VapiAssistantId, VapiCostsItem, VapiTranscriptRef } from '../vapiai.type';
3
+ import { Vapi } from '@vapi-ai/server-sdk';
4
+ export type BaseVapiPayloadCall = Required<Pick<Vapi.Call, 'id' | 'orgId' | 'createdAt' | 'updatedAt' | 'type' | 'monitor' | 'transport' | 'status' | 'assistantId' | 'assistantOverrides'>>;
19
5
  interface BaseVapiPayload {
20
- readonly call: Call;
6
+ readonly call: BaseVapiPayloadCall & Partial<Vapi.Call>;
21
7
  }
22
8
  /**
23
9
  * Assistant request event payload
24
10
  *
25
11
  * https://docs.vapi.ai/server-url/events#retrieving-assistants
26
12
  */
27
- export interface AssistantRequestPayload extends BaseVapiPayload {
28
- readonly type: VapiWebhookEnum.ASSISTANT_REQUEST;
29
- }
13
+ export type AssistantRequestPayload = BaseVapiPayload & Omit<Vapi.ServerMessageAssistantRequest, 'call'>;
30
14
  /**
31
15
  * Status update event payload
32
16
  *
33
17
  * https://docs.vapi.ai/server-url/events#call-status-updates
34
18
  */
35
- export interface StatusUpdatePayload extends BaseVapiPayload {
36
- readonly type: VapiWebhookEnum.STATUS_UPDATE;
37
- readonly status: CallStatus;
38
- }
19
+ export type StatusUpdatePayload = BaseVapiPayload & Omit<Vapi.ServerMessageStatusUpdate, 'call'>;
39
20
  /**
40
21
  * Function call event payload
41
22
  *
42
23
  * https://docs.vapi.ai/server-url/events#function-calling
43
24
  */
44
25
  export interface FunctionCallPayload extends BaseVapiPayload {
45
- readonly type: VapiWebhookEnum.FUNCTION_CALL;
46
- readonly functionCall: {
47
- readonly name: string;
48
- readonly parameters: JSONEncodedString;
49
- };
26
+ readonly type: 'function-call';
27
+ readonly functionCall: Vapi.FunctionCall;
50
28
  }
51
29
  /**
52
30
  * End of call report event payload
53
31
  *
54
32
  * https://docs.vapi.ai/server-url/events#end-of-call-report
55
33
  */
56
- export interface EndOfCallReportPayload extends BaseVapiPayload {
57
- readonly type: VapiWebhookEnum.END_OF_CALL_REPORT;
34
+ export interface EndOfCallReportPayload extends BaseVapiPayload, Omit<Vapi.ServerMessageEndOfCallReport, 'call'>, VapiTranscriptRef {
58
35
  readonly timestamp: UnixDateTimeNumber;
59
- readonly analysis: Analysis;
60
- readonly artifact: Artifact;
61
36
  readonly startedAt: ISO8601DateStringUTCFull;
62
37
  readonly endedAt: ISO8601DateStringUTCFull;
63
- readonly endedReason: CallEndedReason;
64
38
  readonly cost: DollarAmount;
65
- readonly costBreakdown: CostBreakdown;
39
+ readonly costBreakdown: Vapi.CostBreakdown;
66
40
  readonly costs: VapiCostsItem[];
67
41
  readonly transcript: string;
68
- readonly messages: ChatMessagesItem[];
42
+ readonly messages: Vapi.Chat.Messages.Item[];
69
43
  readonly summary: string;
70
44
  readonly recordingUrl?: WebsiteUrlWithPrefix;
71
45
  readonly stereoRecordingUrl?: WebsiteUrlWithPrefix;
72
- readonly assistant: Assistant;
73
46
  }
74
47
  /**
75
48
  * Hang event payload
76
49
  *
77
50
  * https://docs.vapi.ai/server-url/events#hang-notifications
78
51
  */
79
- export interface HangPayload extends BaseVapiPayload {
80
- readonly type: VapiWebhookEnum.HANG;
81
- }
52
+ export type HangPayload = BaseVapiPayload & Omit<Vapi.ServerMessageHang, 'call'>;
82
53
  /**
83
54
  * @deprecated needs documentation link
84
55
  */
85
- export interface SpeechUpdatePayload extends BaseVapiPayload {
86
- readonly type: VapiWebhookEnum.SPEECH_UPDATE;
87
- readonly status: 'started' | 'stopped';
88
- readonly role: 'assistant' | 'user';
89
- }
56
+ export type SpeechUpdatePayload = BaseVapiPayload & Omit<Vapi.ServerMessageSpeechUpdate, 'call'>;
90
57
  /**
91
58
  * @deprecated needs documentation link
92
59
  */
93
- export interface TranscriptPayload {
94
- readonly type: VapiWebhookEnum.TRANSCRIPT;
95
- readonly role: 'assistant' | 'user';
96
- readonly transcriptType: 'partial' | 'final';
97
- readonly transcript: string;
98
- }
60
+ export type TranscriptPayload = BaseVapiPayload & Omit<Vapi.ServerMessageTranscript, 'call'>;
99
61
  export type VapiPayload = AssistantRequestPayload | StatusUpdatePayload | FunctionCallPayload | EndOfCallReportPayload | SpeechUpdatePayload | TranscriptPayload | HangPayload;
62
+ export type VapiPayloadType = VapiPayload['type'];
100
63
  /**
101
64
  * Response returned when a function is called.
102
65
  *
@@ -116,7 +79,7 @@ export interface AssistantRequestMessageSuccessIdResponse {
116
79
  readonly assistantId: VapiAssistantId;
117
80
  }
118
81
  export interface AssistantRequestMessageSuccessObjectResponse {
119
- readonly assistant: Assistant;
82
+ readonly assistant: Vapi.Assistant;
120
83
  }
121
84
  export interface AssistantRequestMessageErrorResponse {
122
85
  readonly error?: string;
@@ -131,4 +94,22 @@ export type TranscriptMessageResponse = VapiVoidResponse;
131
94
  export type HangMessageResponse = VapiVoidResponse;
132
95
  export type EndOfCallReportMessageResponse = VapiVoidResponse;
133
96
  export type VapiResponse = AssistantRequestMessageResponse | FunctionCallMessageResponse | EndOfCallReportMessageResponse | HangMessageResponse | StatusUpdateMessageResponse | SpeechUpdateMessageResponse | TranscriptMessageResponse;
97
+ /**
98
+ * @deprecated use VapiWebhookPayloadType instead.
99
+ */
100
+ export declare enum VapiWebhookEnum {
101
+ ASSISTANT_REQUEST = "assistant-request",
102
+ FUNCTION_CALL = "function-call",
103
+ STATUS_UPDATE = "status-update",
104
+ END_OF_CALL_REPORT = "end-of-call-report",
105
+ HANG = "hang",
106
+ /**
107
+ * @deprecated needs documentation link
108
+ */
109
+ SPEECH_UPDATE = "speech-update",
110
+ /**
111
+ * @deprecated needs documentation link
112
+ */
113
+ TRANSCRIPT = "transcript"
114
+ }
134
115
  export {};
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VapiWebhookEnum = void 0;
4
+ // MARK: Compat
5
+ /**
6
+ * @deprecated use VapiWebhookPayloadType instead.
7
+ */
4
8
  var VapiWebhookEnum;
5
9
  (function (VapiWebhookEnum) {
6
10
  VapiWebhookEnum["ASSISTANT_REQUEST"] = "assistant-request";
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.vapiai.types.js","sourceRoot":"","sources":["../../../../../../../packages/nestjs/vapiai/src/lib/webhook/webhook.vapiai.types.ts"],"names":[],"mappings":";;;AAIA,IAAY,eAeX;AAfD,WAAY,eAAe;IACzB,0DAAuC,CAAA;IACvC,kDAA+B,CAAA;IAC/B,kDAA+B,CAAA;IAC/B,4DAAyC,CAAA;IACzC,gCAAa,CAAA;IACb,yGAAyG;IACzG;;OAEG;IACH,kDAA+B,CAAA;IAC/B;;OAEG;IACH,4CAAyB,CAAA;AAC3B,CAAC,EAfW,eAAe,+BAAf,eAAe,QAe1B"}
1
+ {"version":3,"file":"webhook.vapiai.types.js","sourceRoot":"","sources":["../../../../../../../packages/nestjs/vapiai/src/lib/webhook/webhook.vapiai.types.ts"],"names":[],"mappings":";;;AAoHA,eAAe;AAEf;;GAEG;AACH,IAAY,eAeX;AAfD,WAAY,eAAe;IACzB,0DAAuC,CAAA;IACvC,kDAA+B,CAAA;IAC/B,kDAA+B,CAAA;IAC/B,4DAAyC,CAAA;IACzC,gCAAa,CAAA;IACb,yGAAyG;IACzG;;OAEG;IACH,kDAA+B,CAAA;IAC/B;;OAEG;IACH,4CAAyB,CAAA;AAC3B,CAAC,EAfW,eAAe,+BAAf,eAAe,QAe1B"}