@memberjunction/server 6.1.0-edge.5 → 6.1.0-edge.7

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 (250) hide show
  1. package/README.md +30 -11
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/agentSessions/SessionJanitor.js +2 -2
  4. package/dist/agentSessions/SessionJanitor.js.map +1 -1
  5. package/dist/auth/exampleNewUserSubClass.d.ts.map +1 -1
  6. package/dist/auth/exampleNewUserSubClass.js +9 -4
  7. package/dist/auth/exampleNewUserSubClass.js.map +1 -1
  8. package/dist/auth/magicLink/MagicLinkService.d.ts.map +1 -1
  9. package/dist/auth/magicLink/MagicLinkService.js +2 -8
  10. package/dist/auth/magicLink/MagicLinkService.js.map +1 -1
  11. package/dist/auth/newUsers.d.ts.map +1 -1
  12. package/dist/auth/newUsers.js +4 -12
  13. package/dist/auth/newUsers.js.map +1 -1
  14. package/dist/auth/principals.d.ts +92 -0
  15. package/dist/auth/principals.d.ts.map +1 -0
  16. package/dist/auth/principals.js +193 -0
  17. package/dist/auth/principals.js.map +1 -0
  18. package/dist/config.d.ts +106 -12
  19. package/dist/config.d.ts.map +1 -1
  20. package/dist/config.js +41 -4
  21. package/dist/config.js.map +1 -1
  22. package/dist/entitySubclasses/MJEntityPermissionEntityServer.server.d.ts +30 -0
  23. package/dist/entitySubclasses/MJEntityPermissionEntityServer.server.d.ts.map +1 -1
  24. package/dist/entitySubclasses/MJEntityPermissionEntityServer.server.js +58 -5
  25. package/dist/entitySubclasses/MJEntityPermissionEntityServer.server.js.map +1 -1
  26. package/dist/generated/graphql-schemas/__mj.d.ts +7607 -6853
  27. package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
  28. package/dist/generated/graphql-schemas/__mj.js +25141 -21645
  29. package/dist/generated/graphql-schemas/__mj.js.map +1 -1
  30. package/dist/generic/ResolverBase.d.ts +152 -2
  31. package/dist/generic/ResolverBase.d.ts.map +1 -1
  32. package/dist/generic/ResolverBase.js +389 -10
  33. package/dist/generic/ResolverBase.js.map +1 -1
  34. package/dist/generic/RunViewResolver.d.ts.map +1 -1
  35. package/dist/generic/RunViewResolver.js +26 -2
  36. package/dist/generic/RunViewResolver.js.map +1 -1
  37. package/dist/generic/refusalExtensions.d.ts +52 -0
  38. package/dist/generic/refusalExtensions.d.ts.map +1 -0
  39. package/dist/generic/refusalExtensions.js +16 -0
  40. package/dist/generic/refusalExtensions.js.map +1 -0
  41. package/dist/index.d.ts +11 -3
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +131 -93
  44. package/dist/index.js.map +1 -1
  45. package/dist/realtimeWidget/WidgetSessionService.d.ts.map +1 -1
  46. package/dist/realtimeWidget/WidgetSessionService.js +2 -12
  47. package/dist/realtimeWidget/WidgetSessionService.js.map +1 -1
  48. package/dist/realtimeWidget/visitorIdentity.d.ts.map +1 -1
  49. package/dist/realtimeWidget/visitorIdentity.js +20 -5
  50. package/dist/realtimeWidget/visitorIdentity.js.map +1 -1
  51. package/dist/resolvers/EntityRecordNameResolver.d.ts +34 -5
  52. package/dist/resolvers/EntityRecordNameResolver.d.ts.map +1 -1
  53. package/dist/resolvers/EntityRecordNameResolver.js +64 -7
  54. package/dist/resolvers/EntityRecordNameResolver.js.map +1 -1
  55. package/dist/resolvers/FileCategoryResolver.d.ts.map +1 -1
  56. package/dist/resolvers/FileCategoryResolver.js +1 -2
  57. package/dist/resolvers/FileCategoryResolver.js.map +1 -1
  58. package/dist/resolvers/IntegrationDiscoveryResolver.d.ts.map +1 -1
  59. package/dist/resolvers/IntegrationDiscoveryResolver.js +2 -0
  60. package/dist/resolvers/IntegrationDiscoveryResolver.js.map +1 -1
  61. package/dist/resolvers/QuerySystemUserResolver.js +1 -1
  62. package/dist/resolvers/QuerySystemUserResolver.js.map +1 -1
  63. package/dist/resolvers/RealtimeClientSessionResolver.d.ts +10 -2
  64. package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
  65. package/dist/resolvers/RealtimeClientSessionResolver.js +80 -4
  66. package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
  67. package/dist/resolvers/RemoteBrowserActionResolver.d.ts +13 -8
  68. package/dist/resolvers/RemoteBrowserActionResolver.d.ts.map +1 -1
  69. package/dist/resolvers/RemoteBrowserActionResolver.js +45 -8
  70. package/dist/resolvers/RemoteBrowserActionResolver.js.map +1 -1
  71. package/dist/resolvers/SyncRolesUsersResolver.d.ts.map +1 -1
  72. package/dist/resolvers/SyncRolesUsersResolver.js +11 -2
  73. package/dist/resolvers/SyncRolesUsersResolver.js.map +1 -1
  74. package/dist/resolvers/UserViewResolver.d.ts.map +1 -1
  75. package/dist/resolvers/UserViewResolver.js +8 -4
  76. package/dist/resolvers/UserViewResolver.js.map +1 -1
  77. package/dist/rest/EntityCRUDHandler.d.ts +2 -1
  78. package/dist/rest/EntityCRUDHandler.d.ts.map +1 -1
  79. package/dist/rest/EntityCRUDHandler.js +3 -18
  80. package/dist/rest/EntityCRUDHandler.js.map +1 -1
  81. package/dist/rest/RESTEndpointHandler.d.ts +2 -1
  82. package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
  83. package/dist/rest/RESTEndpointHandler.js +3 -16
  84. package/dist/rest/RESTEndpointHandler.js.map +1 -1
  85. package/dist/rest/RealtimeSdpBrokerHandler.d.ts +23 -0
  86. package/dist/rest/RealtimeSdpBrokerHandler.d.ts.map +1 -0
  87. package/dist/rest/RealtimeSdpBrokerHandler.js +78 -0
  88. package/dist/rest/RealtimeSdpBrokerHandler.js.map +1 -0
  89. package/dist/serverExtensionReservedRoots.d.ts.map +1 -1
  90. package/dist/serverExtensionReservedRoots.js +2 -3
  91. package/dist/serverExtensionReservedRoots.js.map +1 -1
  92. package/package.json +92 -91
  93. package/src/__tests__/EntityCRUDHandler.test.ts +18 -5
  94. package/src/__tests__/EntityRecordNameResolver.fieldSecurity.test.ts +118 -0
  95. package/src/__tests__/RealtimeClientSessionResolver.test.ts +20 -0
  96. package/src/__tests__/RealtimeSdpBrokerHandler.test.ts +191 -0
  97. package/src/__tests__/RemoteBrowserAudioStream.test.ts +81 -2
  98. package/src/__tests__/ResolverBase.filterEscaping.test.ts +190 -3
  99. package/src/__tests__/ResolverBase.readableFieldsTransport.test.ts +106 -0
  100. package/src/__tests__/UserViewResolver.updateWhereClause.test.ts +114 -0
  101. package/src/__tests__/WidgetSessionService.test.ts +4 -1
  102. package/src/__tests__/generatedGraphQLSchema.structural.test.ts +46 -0
  103. package/src/__tests__/newUserRolesDefault.test.ts +81 -0
  104. package/src/__tests__/newUsers.test.ts +36 -14
  105. package/src/__tests__/principals.callSites.test.ts +112 -0
  106. package/src/__tests__/principals.logging.test.ts +160 -0
  107. package/src/__tests__/principals.test.ts +305 -0
  108. package/src/__tests__/resolverBase.fls.test.ts +483 -0
  109. package/src/__tests__/resolverBase.recordChangesFls.test.ts +358 -0
  110. package/src/__tests__/resolverBase.refusalExtensions.test.ts +101 -0
  111. package/src/__tests__/resolverBase.refusalMessage.test.ts +88 -0
  112. package/src/__tests__/serverExtensionReservedRoots.test.ts +79 -11
  113. package/src/__tests__/visitorIdentity.resolve.test.ts +61 -0
  114. package/src/agentSessions/SessionJanitor.ts +2 -2
  115. package/src/auth/exampleNewUserSubClass.ts +9 -6
  116. package/src/auth/magicLink/MagicLinkService.ts +2 -8
  117. package/src/auth/newUsers.ts +7 -15
  118. package/src/auth/principals.ts +257 -0
  119. package/src/config.ts +44 -4
  120. package/src/entitySubclasses/MJEntityPermissionEntityServer.server.ts +65 -6
  121. package/src/generated/graphql-schemas/__mj.ts +18966 -16452
  122. package/src/generic/ResolverBase.ts +467 -9
  123. package/src/generic/RunViewResolver.ts +28 -2
  124. package/src/generic/refusalExtensions.ts +59 -0
  125. package/src/index.ts +154 -102
  126. package/src/realtimeWidget/WidgetSessionService.ts +2 -14
  127. package/src/realtimeWidget/visitorIdentity.ts +21 -6
  128. package/src/resolvers/EntityRecordNameResolver.ts +74 -8
  129. package/src/resolvers/FileCategoryResolver.ts +2 -3
  130. package/src/resolvers/IntegrationDiscoveryResolver.ts +2 -0
  131. package/src/resolvers/QuerySystemUserResolver.ts +1 -1
  132. package/src/resolvers/RealtimeClientSessionResolver.ts +128 -2
  133. package/src/resolvers/RemoteBrowserActionResolver.ts +47 -8
  134. package/src/resolvers/SyncRolesUsersResolver.ts +11 -2
  135. package/src/resolvers/UserViewResolver.ts +8 -4
  136. package/src/rest/EntityCRUDHandler.ts +3 -19
  137. package/src/rest/RESTEndpointHandler.ts +3 -17
  138. package/src/rest/RealtimeSdpBrokerHandler.ts +101 -0
  139. package/src/serverExtensionReservedRoots.ts +2 -3
  140. package/dist/resolvers/RingCentralTelephonyResolver.d.ts +0 -27
  141. package/dist/resolvers/RingCentralTelephonyResolver.d.ts.map +0 -1
  142. package/dist/resolvers/RingCentralTelephonyResolver.js +0 -87
  143. package/dist/resolvers/RingCentralTelephonyResolver.js.map +0 -1
  144. package/dist/resolvers/TeamsMeetingsResolver.d.ts +0 -28
  145. package/dist/resolvers/TeamsMeetingsResolver.d.ts.map +0 -1
  146. package/dist/resolvers/TeamsMeetingsResolver.js +0 -91
  147. package/dist/resolvers/TeamsMeetingsResolver.js.map +0 -1
  148. package/dist/resolvers/TelephonyResolver.d.ts +0 -26
  149. package/dist/resolvers/TelephonyResolver.d.ts.map +0 -1
  150. package/dist/resolvers/TelephonyResolver.js +0 -86
  151. package/dist/resolvers/TelephonyResolver.js.map +0 -1
  152. package/dist/resolvers/VonageTelephonyResolver.d.ts +0 -26
  153. package/dist/resolvers/VonageTelephonyResolver.d.ts.map +0 -1
  154. package/dist/resolvers/VonageTelephonyResolver.js +0 -86
  155. package/dist/resolvers/VonageTelephonyResolver.js.map +0 -1
  156. package/dist/telephony/RingCentralTelephonyService.d.ts +0 -115
  157. package/dist/telephony/RingCentralTelephonyService.d.ts.map +0 -1
  158. package/dist/telephony/RingCentralTelephonyService.js +0 -262
  159. package/dist/telephony/RingCentralTelephonyService.js.map +0 -1
  160. package/dist/telephony/TeamsMeetingsRouter.d.ts +0 -40
  161. package/dist/telephony/TeamsMeetingsRouter.d.ts.map +0 -1
  162. package/dist/telephony/TeamsMeetingsRouter.js +0 -96
  163. package/dist/telephony/TeamsMeetingsRouter.js.map +0 -1
  164. package/dist/telephony/TeamsMeetingsService.d.ts +0 -113
  165. package/dist/telephony/TeamsMeetingsService.d.ts.map +0 -1
  166. package/dist/telephony/TeamsMeetingsService.js +0 -196
  167. package/dist/telephony/TeamsMeetingsService.js.map +0 -1
  168. package/dist/telephony/TwilioTelephonyRouter.d.ts +0 -36
  169. package/dist/telephony/TwilioTelephonyRouter.d.ts.map +0 -1
  170. package/dist/telephony/TwilioTelephonyRouter.js +0 -143
  171. package/dist/telephony/TwilioTelephonyRouter.js.map +0 -1
  172. package/dist/telephony/TwilioTelephonyService.d.ts +0 -95
  173. package/dist/telephony/TwilioTelephonyService.d.ts.map +0 -1
  174. package/dist/telephony/TwilioTelephonyService.js +0 -193
  175. package/dist/telephony/TwilioTelephonyService.js.map +0 -1
  176. package/dist/telephony/VonageTelephonyRouter.d.ts +0 -41
  177. package/dist/telephony/VonageTelephonyRouter.d.ts.map +0 -1
  178. package/dist/telephony/VonageTelephonyRouter.js +0 -201
  179. package/dist/telephony/VonageTelephonyRouter.js.map +0 -1
  180. package/dist/telephony/VonageTelephonyService.d.ts +0 -90
  181. package/dist/telephony/VonageTelephonyService.d.ts.map +0 -1
  182. package/dist/telephony/VonageTelephonyService.js +0 -191
  183. package/dist/telephony/VonageTelephonyService.js.map +0 -1
  184. package/dist/telephony/calendar-scheduler.d.ts +0 -67
  185. package/dist/telephony/calendar-scheduler.d.ts.map +0 -1
  186. package/dist/telephony/calendar-scheduler.js +0 -133
  187. package/dist/telephony/calendar-scheduler.js.map +0 -1
  188. package/dist/telephony/index.d.ts +0 -29
  189. package/dist/telephony/index.d.ts.map +0 -1
  190. package/dist/telephony/index.js +0 -38
  191. package/dist/telephony/index.js.map +0 -1
  192. package/dist/telephony/media-upgrade-router.d.ts +0 -47
  193. package/dist/telephony/media-upgrade-router.d.ts.map +0 -1
  194. package/dist/telephony/media-upgrade-router.js +0 -72
  195. package/dist/telephony/media-upgrade-router.js.map +0 -1
  196. package/dist/telephony/ringcentral-runtime.d.ts +0 -14
  197. package/dist/telephony/ringcentral-runtime.d.ts.map +0 -1
  198. package/dist/telephony/ringcentral-runtime.js +0 -18
  199. package/dist/telephony/ringcentral-runtime.js.map +0 -1
  200. package/dist/telephony/teams-meetings-runtime.d.ts +0 -16
  201. package/dist/telephony/teams-meetings-runtime.d.ts.map +0 -1
  202. package/dist/telephony/teams-meetings-runtime.js +0 -20
  203. package/dist/telephony/teams-meetings-runtime.js.map +0 -1
  204. package/dist/telephony/teamsAcsMediaRegistry.d.ts +0 -69
  205. package/dist/telephony/teamsAcsMediaRegistry.d.ts.map +0 -1
  206. package/dist/telephony/teamsAcsMediaRegistry.js +0 -118
  207. package/dist/telephony/teamsAcsMediaRegistry.js.map +0 -1
  208. package/dist/telephony/telephony-runtime.d.ts +0 -14
  209. package/dist/telephony/telephony-runtime.d.ts.map +0 -1
  210. package/dist/telephony/telephony-runtime.js +0 -18
  211. package/dist/telephony/telephony-runtime.js.map +0 -1
  212. package/dist/telephony/twilioMediaRegistry.d.ts +0 -60
  213. package/dist/telephony/twilioMediaRegistry.d.ts.map +0 -1
  214. package/dist/telephony/twilioMediaRegistry.js +0 -106
  215. package/dist/telephony/twilioMediaRegistry.js.map +0 -1
  216. package/dist/telephony/vonage-runtime.d.ts +0 -14
  217. package/dist/telephony/vonage-runtime.d.ts.map +0 -1
  218. package/dist/telephony/vonage-runtime.js +0 -18
  219. package/dist/telephony/vonage-runtime.js.map +0 -1
  220. package/dist/telephony/vonageMediaRegistry.d.ts +0 -78
  221. package/dist/telephony/vonageMediaRegistry.d.ts.map +0 -1
  222. package/dist/telephony/vonageMediaRegistry.js +0 -158
  223. package/dist/telephony/vonageMediaRegistry.js.map +0 -1
  224. package/src/__tests__/media-upgrade-router.test.ts +0 -43
  225. package/src/__tests__/teams-meetings-service.test.ts +0 -65
  226. package/src/__tests__/teamsAcsMediaRegistry.test.ts +0 -82
  227. package/src/__tests__/twilio-telephony-service.test.ts +0 -23
  228. package/src/__tests__/twilioMediaRegistry.test.ts +0 -103
  229. package/src/__tests__/vonageMediaRegistry.test.ts +0 -180
  230. package/src/resolvers/RingCentralTelephonyResolver.ts +0 -64
  231. package/src/resolvers/TeamsMeetingsResolver.ts +0 -68
  232. package/src/resolvers/TelephonyResolver.ts +0 -63
  233. package/src/resolvers/VonageTelephonyResolver.ts +0 -63
  234. package/src/telephony/RingCentralTelephonyService.ts +0 -342
  235. package/src/telephony/TeamsMeetingsRouter.ts +0 -124
  236. package/src/telephony/TeamsMeetingsService.ts +0 -268
  237. package/src/telephony/TwilioTelephonyRouter.ts +0 -184
  238. package/src/telephony/TwilioTelephonyService.ts +0 -261
  239. package/src/telephony/VonageTelephonyRouter.ts +0 -239
  240. package/src/telephony/VonageTelephonyService.ts +0 -259
  241. package/src/telephony/calendar-scheduler.ts +0 -176
  242. package/src/telephony/index.ts +0 -43
  243. package/src/telephony/media-upgrade-router.ts +0 -79
  244. package/src/telephony/ringcentral-runtime.ts +0 -22
  245. package/src/telephony/teams-meetings-runtime.ts +0 -24
  246. package/src/telephony/teamsAcsMediaRegistry.ts +0 -152
  247. package/src/telephony/telephony-runtime.ts +0 -22
  248. package/src/telephony/twilioMediaRegistry.ts +0 -137
  249. package/src/telephony/vonage-runtime.ts +0 -22
  250. package/src/telephony/vonageMediaRegistry.ts +0 -200
@@ -1,87 +0,0 @@
1
- /**
2
- * @fileoverview GraphQL surface for OUTBOUND RingCentral telephony: `PlaceRingCentralCall` rings a real
3
- * phone from an agent identity and connects the pinned agent. Thin — it authorizes the caller, then
4
- * delegates to the startup-constructed {@link RingCentralTelephonyService} (which owns the bridge
5
- * orchestration + the shared media registry). Inbound calls arrive via the public
6
- * `POST /telephony/ringcentral/webhook` notification, not GraphQL.
7
- *
8
- * @module @memberjunction/server
9
- */
10
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
11
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
12
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
13
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
14
- return c > 3 && r && Object.defineProperty(target, key, r), r;
15
- };
16
- var __metadata = (this && this.__metadata) || function (k, v) {
17
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
18
- };
19
- var __param = (this && this.__param) || function (paramIndex, decorator) {
20
- return function (target, key) { decorator(target, key, paramIndex); }
21
- };
22
- import { Resolver, Mutation, Arg, Ctx, ObjectType, Field } from 'type-graphql';
23
- import { LogError } from '@memberjunction/core';
24
- import { ResolverBase } from '../generic/ResolverBase.js';
25
- import { GetReadWriteProvider } from '../util.js';
26
- import { GetRingCentralTelephonyService } from '../telephony/ringcentral-runtime.js';
27
- /** Result of an outbound RingCentral place-call attempt. */
28
- let PlaceRingCentralCallResult = class PlaceRingCentralCallResult {
29
- };
30
- __decorate([
31
- Field(() => Boolean),
32
- __metadata("design:type", Boolean)
33
- ], PlaceRingCentralCallResult.prototype, "Success", void 0);
34
- __decorate([
35
- Field(() => String, { nullable: true }),
36
- __metadata("design:type", String)
37
- ], PlaceRingCentralCallResult.prototype, "ErrorMessage", void 0);
38
- __decorate([
39
- Field(() => String),
40
- __metadata("design:type", String)
41
- ], PlaceRingCentralCallResult.prototype, "SessionId", void 0);
42
- PlaceRingCentralCallResult = __decorate([
43
- ObjectType()
44
- ], PlaceRingCentralCallResult);
45
- export { PlaceRingCentralCallResult };
46
- let RingCentralTelephonyResolver = class RingCentralTelephonyResolver extends ResolverBase {
47
- /**
48
- * Places an outbound call from the given agent identity (its phone number is the caller-id) to a
49
- * destination number, connecting the pinned agent over the realtime bridge. Returns the telephony
50
- * session id.
51
- */
52
- async PlaceRingCentralCall(agentIdentityId, toNumber, context = {}) {
53
- const failure = (msg) => ({ Success: false, ErrorMessage: msg, SessionId: '' });
54
- try {
55
- const user = this.GetUserFromPayload(context.userPayload);
56
- if (!user) {
57
- return failure('Unable to determine current user.');
58
- }
59
- const service = GetRingCentralTelephonyService();
60
- if (!service) {
61
- return failure('RingCentral telephony is not configured on this server.');
62
- }
63
- const provider = GetReadWriteProvider(context.providers);
64
- const sessionId = await service.PlaceOutboundCall(agentIdentityId, toNumber, user, provider);
65
- return { Success: true, SessionId: sessionId };
66
- }
67
- catch (error) {
68
- const msg = error instanceof Error ? error.message : String(error);
69
- LogError(`PlaceRingCentralCall failed: ${msg}`);
70
- return failure(msg);
71
- }
72
- }
73
- };
74
- __decorate([
75
- Mutation(() => PlaceRingCentralCallResult),
76
- __param(0, Arg('agentIdentityId', () => String)),
77
- __param(1, Arg('toNumber', () => String)),
78
- __param(2, Ctx()),
79
- __metadata("design:type", Function),
80
- __metadata("design:paramtypes", [String, String, Object]),
81
- __metadata("design:returntype", Promise)
82
- ], RingCentralTelephonyResolver.prototype, "PlaceRingCentralCall", null);
83
- RingCentralTelephonyResolver = __decorate([
84
- Resolver()
85
- ], RingCentralTelephonyResolver);
86
- export { RingCentralTelephonyResolver };
87
- //# sourceMappingURL=RingCentralTelephonyResolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RingCentralTelephonyResolver.js","sourceRoot":"","sources":["../../src/resolvers/RingCentralTelephonyResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;;;;;;;;;;;;;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,4DAA4D;AAErD,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;CAUtC,CAAA;AARG;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;;2DACJ;AAGjB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gEAClB;AAItB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;6DACF;AATT,0BAA0B;IADtC,UAAU,EAAE;GACA,0BAA0B,CAUtC;;AAGM,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,YAAY;IAC1D;;;;OAIG;IAEG,AAAN,KAAK,CAAC,oBAAoB,CACgB,eAAuB,EAC9B,QAAgB,EACxC,UAAsB,EAAgB;QAE7C,MAAM,OAAO,GAAG,CAAC,GAAW,EAA8B,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACpH,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,OAAO,OAAO,CAAC,mCAAmC,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,OAAO,GAAG,8BAA8B,EAAE,CAAC;YACjD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO,OAAO,CAAC,yDAAyD,CAAC,CAAC;YAC9E,CAAC;YACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAiC,CAAC;YACzF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,QAAQ,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;YAChD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACL,CAAC;CACJ,CAAA;AAxBS;IADL,QAAQ,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC;IAEtC,WAAA,GAAG,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;IACpC,WAAA,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;IAC7B,WAAA,GAAG,EAAE,CAAA;;;;wEAoBT;AA9BQ,4BAA4B;IADxC,QAAQ,EAAE;GACE,4BAA4B,CA+BxC"}
@@ -1,28 +0,0 @@
1
- /**
2
- * @fileoverview GraphQL surface for Teams meeting joins: `StartTeamsMeetingSession` has an agent identity
3
- * join a Teams meeting by URL and connects the pinned agent over the realtime bridge. Thin — it authorizes
4
- * the caller, then delegates to the startup-constructed {@link TeamsMeetingsService} (which owns the bridge
5
- * orchestration + the shared ACS media registry). Roster/call-ended updates arrive via the public
6
- * `POST /meetings/teams/notifications` Graph webhook, not GraphQL.
7
- *
8
- * Mirrors `TelephonyResolver.ts` (the Twilio `PlaceTwilioCall` equivalent).
9
- *
10
- * @module @memberjunction/server
11
- */
12
- import { AppContext } from '../types.js';
13
- import { ResolverBase } from '../generic/ResolverBase.js';
14
- /** Result of a Teams meeting join attempt. */
15
- export declare class StartTeamsMeetingResult {
16
- Success: boolean;
17
- ErrorMessage?: string;
18
- /** The Graph call id the bot joined (the bridge's external connection id), when successful. */
19
- CallId: string;
20
- }
21
- export declare class TeamsMeetingsResolver extends ResolverBase {
22
- /**
23
- * Has the given agent identity join a Teams meeting by URL, connecting the pinned agent over the realtime
24
- * bridge. Returns the Graph call id.
25
- */
26
- StartTeamsMeetingSession(agentIdentityId: string, joinUrl: string, context?: AppContext): Promise<StartTeamsMeetingResult>;
27
- }
28
- //# sourceMappingURL=TeamsMeetingsResolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TeamsMeetingsResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/TeamsMeetingsResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D,8CAA8C;AAC9C,qBACa,uBAAuB;IAEhC,OAAO,EAAE,OAAO,CAAC;IAGjB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,+FAA+F;IAE/F,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBACa,qBAAsB,SAAQ,YAAY;IACnD;;;OAGG;IAEG,wBAAwB,CACY,eAAe,EAAE,MAAM,EAC/B,OAAO,EAAE,MAAM,EACtC,OAAO,GAAE,UAA6B,GAC9C,OAAO,CAAC,uBAAuB,CAAC;CAuBtC"}
@@ -1,91 +0,0 @@
1
- /**
2
- * @fileoverview GraphQL surface for Teams meeting joins: `StartTeamsMeetingSession` has an agent identity
3
- * join a Teams meeting by URL and connects the pinned agent over the realtime bridge. Thin — it authorizes
4
- * the caller, then delegates to the startup-constructed {@link TeamsMeetingsService} (which owns the bridge
5
- * orchestration + the shared ACS media registry). Roster/call-ended updates arrive via the public
6
- * `POST /meetings/teams/notifications` Graph webhook, not GraphQL.
7
- *
8
- * Mirrors `TelephonyResolver.ts` (the Twilio `PlaceTwilioCall` equivalent).
9
- *
10
- * @module @memberjunction/server
11
- */
12
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
13
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
16
- return c > 3 && r && Object.defineProperty(target, key, r), r;
17
- };
18
- var __metadata = (this && this.__metadata) || function (k, v) {
19
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
20
- };
21
- var __param = (this && this.__param) || function (paramIndex, decorator) {
22
- return function (target, key) { decorator(target, key, paramIndex); }
23
- };
24
- import { Resolver, Mutation, Arg, Ctx, ObjectType, Field } from 'type-graphql';
25
- import { LogError } from '@memberjunction/core';
26
- import { ResolverBase } from '../generic/ResolverBase.js';
27
- import { GetReadWriteProvider } from '../util.js';
28
- import { GetTeamsMeetingsService } from '../telephony/teams-meetings-runtime.js';
29
- /** Result of a Teams meeting join attempt. */
30
- let StartTeamsMeetingResult = class StartTeamsMeetingResult {
31
- };
32
- __decorate([
33
- Field(() => Boolean),
34
- __metadata("design:type", Boolean)
35
- ], StartTeamsMeetingResult.prototype, "Success", void 0);
36
- __decorate([
37
- Field(() => String, { nullable: true }),
38
- __metadata("design:type", String)
39
- ], StartTeamsMeetingResult.prototype, "ErrorMessage", void 0);
40
- __decorate([
41
- Field(() => String),
42
- __metadata("design:type", String)
43
- ], StartTeamsMeetingResult.prototype, "CallId", void 0);
44
- StartTeamsMeetingResult = __decorate([
45
- ObjectType()
46
- ], StartTeamsMeetingResult);
47
- export { StartTeamsMeetingResult };
48
- let TeamsMeetingsResolver = class TeamsMeetingsResolver extends ResolverBase {
49
- /**
50
- * Has the given agent identity join a Teams meeting by URL, connecting the pinned agent over the realtime
51
- * bridge. Returns the Graph call id.
52
- */
53
- async StartTeamsMeetingSession(agentIdentityId, joinUrl, context = {}) {
54
- const failure = (msg) => ({ Success: false, ErrorMessage: msg, CallId: '' });
55
- try {
56
- const user = this.GetUserFromPayload(context.userPayload);
57
- if (!user) {
58
- return failure('Unable to determine current user.');
59
- }
60
- const service = GetTeamsMeetingsService();
61
- if (!service) {
62
- return failure('Teams meetings are not configured on this server.');
63
- }
64
- const provider = GetReadWriteProvider(context.providers);
65
- const result = await service.JoinMeetingByUrl(agentIdentityId, joinUrl, user, provider);
66
- if (!result.accepted) {
67
- return failure(result.reason ?? 'The meeting join was not accepted.');
68
- }
69
- return { Success: true, CallId: result.callId ?? '' };
70
- }
71
- catch (error) {
72
- const msg = error instanceof Error ? error.message : String(error);
73
- LogError(`StartTeamsMeetingSession failed: ${msg}`);
74
- return failure(msg);
75
- }
76
- }
77
- };
78
- __decorate([
79
- Mutation(() => StartTeamsMeetingResult),
80
- __param(0, Arg('agentIdentityId', () => String)),
81
- __param(1, Arg('joinUrl', () => String)),
82
- __param(2, Ctx()),
83
- __metadata("design:type", Function),
84
- __metadata("design:paramtypes", [String, String, Object]),
85
- __metadata("design:returntype", Promise)
86
- ], TeamsMeetingsResolver.prototype, "StartTeamsMeetingSession", null);
87
- TeamsMeetingsResolver = __decorate([
88
- Resolver()
89
- ], TeamsMeetingsResolver);
90
- export { TeamsMeetingsResolver };
91
- //# sourceMappingURL=TeamsMeetingsResolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TeamsMeetingsResolver.js","sourceRoot":"","sources":["../../src/resolvers/TeamsMeetingsResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAEjF,8CAA8C;AAEvC,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;CAUnC,CAAA;AARG;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;;wDACJ;AAGjB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6DAClB;AAItB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;uDACL;AATN,uBAAuB;IADnC,UAAU,EAAE;GACA,uBAAuB,CAUnC;;AAGM,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,YAAY;IACnD;;;OAGG;IAEG,AAAN,KAAK,CAAC,wBAAwB,CACY,eAAuB,EAC/B,OAAe,EACtC,UAAsB,EAAgB;QAE7C,MAAM,OAAO,GAAG,CAAC,GAAW,EAA2B,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9G,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,OAAO,OAAO,CAAC,mCAAmC,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;YAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO,OAAO,CAAC,mDAAmD,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAiC,CAAC;YACzF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YACxF,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,oCAAoC,CAAC,CAAC;YAC1E,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,QAAQ,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;YACpD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACL,CAAC;CACJ,CAAA;AA3BS;IADL,QAAQ,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC;IAEnC,WAAA,GAAG,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;IACpC,WAAA,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;IAC5B,WAAA,GAAG,EAAE,CAAA;;;;qEAuBT;AAhCQ,qBAAqB;IADjC,QAAQ,EAAE;GACE,qBAAqB,CAiCjC"}
@@ -1,26 +0,0 @@
1
- /**
2
- * @fileoverview GraphQL surface for OUTBOUND telephony: `PlaceTwilioCall` rings a real phone from
3
- * an agent identity and connects the pinned agent. Thin — it authorizes the caller, then delegates to
4
- * the startup-constructed {@link TwilioTelephonyService} (which owns the bridge orchestration + the
5
- * shared media registry). Inbound calls arrive via the public `POST /telephony/twilio/voice` webhook,
6
- * not GraphQL.
7
- *
8
- * @module @memberjunction/server
9
- */
10
- import { AppContext } from '../types.js';
11
- import { ResolverBase } from '../generic/ResolverBase.js';
12
- /** Result of an outbound place-call attempt. */
13
- export declare class PlaceCallResult {
14
- Success: boolean;
15
- ErrorMessage?: string;
16
- /** The placed Twilio Call SID (the bridge's external connection id). */
17
- CallSid: string;
18
- }
19
- export declare class TelephonyResolver extends ResolverBase {
20
- /**
21
- * Places an outbound call from the given agent identity (its phone number is the caller-id) to a
22
- * destination number, connecting the pinned agent over the realtime bridge. Returns the Call SID.
23
- */
24
- PlaceTwilioCall(agentIdentityId: string, toNumber: string, context?: AppContext): Promise<PlaceCallResult>;
25
- }
26
- //# sourceMappingURL=TelephonyResolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TelephonyResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/TelephonyResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D,gDAAgD;AAChD,qBACa,eAAe;IAExB,OAAO,EAAE,OAAO,CAAC;IAGjB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,wEAAwE;IAExE,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,qBACa,iBAAkB,SAAQ,YAAY;IAC/C;;;OAGG;IAEG,eAAe,CACqB,eAAe,EAAE,MAAM,EAC9B,QAAQ,EAAE,MAAM,EACxC,OAAO,GAAE,UAA6B,GAC9C,OAAO,CAAC,eAAe,CAAC;CAoB9B"}
@@ -1,86 +0,0 @@
1
- /**
2
- * @fileoverview GraphQL surface for OUTBOUND telephony: `PlaceTwilioCall` rings a real phone from
3
- * an agent identity and connects the pinned agent. Thin — it authorizes the caller, then delegates to
4
- * the startup-constructed {@link TwilioTelephonyService} (which owns the bridge orchestration + the
5
- * shared media registry). Inbound calls arrive via the public `POST /telephony/twilio/voice` webhook,
6
- * not GraphQL.
7
- *
8
- * @module @memberjunction/server
9
- */
10
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
11
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
12
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
13
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
14
- return c > 3 && r && Object.defineProperty(target, key, r), r;
15
- };
16
- var __metadata = (this && this.__metadata) || function (k, v) {
17
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
18
- };
19
- var __param = (this && this.__param) || function (paramIndex, decorator) {
20
- return function (target, key) { decorator(target, key, paramIndex); }
21
- };
22
- import { Resolver, Mutation, Arg, Ctx, ObjectType, Field } from 'type-graphql';
23
- import { LogError } from '@memberjunction/core';
24
- import { ResolverBase } from '../generic/ResolverBase.js';
25
- import { GetReadWriteProvider } from '../util.js';
26
- import { GetTwilioTelephonyService } from '../telephony/telephony-runtime.js';
27
- /** Result of an outbound place-call attempt. */
28
- let PlaceCallResult = class PlaceCallResult {
29
- };
30
- __decorate([
31
- Field(() => Boolean),
32
- __metadata("design:type", Boolean)
33
- ], PlaceCallResult.prototype, "Success", void 0);
34
- __decorate([
35
- Field(() => String, { nullable: true }),
36
- __metadata("design:type", String)
37
- ], PlaceCallResult.prototype, "ErrorMessage", void 0);
38
- __decorate([
39
- Field(() => String),
40
- __metadata("design:type", String)
41
- ], PlaceCallResult.prototype, "CallSid", void 0);
42
- PlaceCallResult = __decorate([
43
- ObjectType()
44
- ], PlaceCallResult);
45
- export { PlaceCallResult };
46
- let TelephonyResolver = class TelephonyResolver extends ResolverBase {
47
- /**
48
- * Places an outbound call from the given agent identity (its phone number is the caller-id) to a
49
- * destination number, connecting the pinned agent over the realtime bridge. Returns the Call SID.
50
- */
51
- async PlaceTwilioCall(agentIdentityId, toNumber, context = {}) {
52
- const failure = (msg) => ({ Success: false, ErrorMessage: msg, CallSid: '' });
53
- try {
54
- const user = this.GetUserFromPayload(context.userPayload);
55
- if (!user) {
56
- return failure('Unable to determine current user.');
57
- }
58
- const service = GetTwilioTelephonyService();
59
- if (!service) {
60
- return failure('Twilio telephony is not configured on this server.');
61
- }
62
- const provider = GetReadWriteProvider(context.providers);
63
- const callSid = await service.PlaceOutboundCall(agentIdentityId, toNumber, user, provider);
64
- return { Success: true, CallSid: callSid };
65
- }
66
- catch (error) {
67
- const msg = error instanceof Error ? error.message : String(error);
68
- LogError(`PlaceTwilioCall failed: ${msg}`);
69
- return failure(msg);
70
- }
71
- }
72
- };
73
- __decorate([
74
- Mutation(() => PlaceCallResult),
75
- __param(0, Arg('agentIdentityId', () => String)),
76
- __param(1, Arg('toNumber', () => String)),
77
- __param(2, Ctx()),
78
- __metadata("design:type", Function),
79
- __metadata("design:paramtypes", [String, String, Object]),
80
- __metadata("design:returntype", Promise)
81
- ], TelephonyResolver.prototype, "PlaceTwilioCall", null);
82
- TelephonyResolver = __decorate([
83
- Resolver()
84
- ], TelephonyResolver);
85
- export { TelephonyResolver };
86
- //# sourceMappingURL=TelephonyResolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TelephonyResolver.js","sourceRoot":"","sources":["../../src/resolvers/TelephonyResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;;;;;;;;;;;;;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,gDAAgD;AAEzC,IAAM,eAAe,GAArB,MAAM,eAAe;CAU3B,CAAA;AARG;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;;gDACJ;AAGjB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDAClB;AAItB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;gDACJ;AATP,eAAe;IAD3B,UAAU,EAAE;GACA,eAAe,CAU3B;;AAGM,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,YAAY;IAC/C;;;OAGG;IAEG,AAAN,KAAK,CAAC,eAAe,CACqB,eAAuB,EAC9B,QAAgB,EACxC,UAAsB,EAAgB;QAE7C,MAAM,OAAO,GAAG,CAAC,GAAW,EAAmB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACvG,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,OAAO,OAAO,CAAC,mCAAmC,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,OAAO,GAAG,yBAAyB,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO,OAAO,CAAC,oDAAoD,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAiC,CAAC;YACzF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC3F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,QAAQ,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;YAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACL,CAAC;CACJ,CAAA;AAxBS;IADL,QAAQ,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC;IAE3B,WAAA,GAAG,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;IACpC,WAAA,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;IAC7B,WAAA,GAAG,EAAE,CAAA;;;;wDAoBT;AA7BQ,iBAAiB;IAD7B,QAAQ,EAAE;GACE,iBAAiB,CA8B7B"}
@@ -1,26 +0,0 @@
1
- /**
2
- * @fileoverview GraphQL surface for OUTBOUND Vonage telephony: `PlaceVonageCall` rings a real phone from
3
- * an agent identity and connects the pinned agent. Thin — it authorizes the caller, then delegates to
4
- * the startup-constructed {@link VonageTelephonyService} (which owns the bridge orchestration + the
5
- * shared media registry). Inbound calls arrive via the public `POST /telephony/vonage/answer` webhook,
6
- * not GraphQL.
7
- *
8
- * @module @memberjunction/server
9
- */
10
- import { AppContext } from '../types.js';
11
- import { ResolverBase } from '../generic/ResolverBase.js';
12
- /** Result of an outbound place-call attempt. */
13
- export declare class PlaceVonageCallResult {
14
- Success: boolean;
15
- ErrorMessage?: string;
16
- /** The placed Vonage call UUID (the bridge's external connection id). */
17
- CallId: string;
18
- }
19
- export declare class VonageTelephonyResolver extends ResolverBase {
20
- /**
21
- * Places an outbound call from the given agent identity (its phone number is the caller-id) to a
22
- * destination number, connecting the pinned agent over the realtime bridge. Returns the call UUID.
23
- */
24
- PlaceVonageCall(agentIdentityId: string, toNumber: string, context?: AppContext): Promise<PlaceVonageCallResult>;
25
- }
26
- //# sourceMappingURL=VonageTelephonyResolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VonageTelephonyResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/VonageTelephonyResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D,gDAAgD;AAChD,qBACa,qBAAqB;IAE9B,OAAO,EAAE,OAAO,CAAC;IAGjB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,yEAAyE;IAEzE,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBACa,uBAAwB,SAAQ,YAAY;IACrD;;;OAGG;IAEG,eAAe,CACqB,eAAe,EAAE,MAAM,EAC9B,QAAQ,EAAE,MAAM,EACxC,OAAO,GAAE,UAA6B,GAC9C,OAAO,CAAC,qBAAqB,CAAC;CAoBpC"}
@@ -1,86 +0,0 @@
1
- /**
2
- * @fileoverview GraphQL surface for OUTBOUND Vonage telephony: `PlaceVonageCall` rings a real phone from
3
- * an agent identity and connects the pinned agent. Thin — it authorizes the caller, then delegates to
4
- * the startup-constructed {@link VonageTelephonyService} (which owns the bridge orchestration + the
5
- * shared media registry). Inbound calls arrive via the public `POST /telephony/vonage/answer` webhook,
6
- * not GraphQL.
7
- *
8
- * @module @memberjunction/server
9
- */
10
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
11
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
12
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
13
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
14
- return c > 3 && r && Object.defineProperty(target, key, r), r;
15
- };
16
- var __metadata = (this && this.__metadata) || function (k, v) {
17
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
18
- };
19
- var __param = (this && this.__param) || function (paramIndex, decorator) {
20
- return function (target, key) { decorator(target, key, paramIndex); }
21
- };
22
- import { Resolver, Mutation, Arg, Ctx, ObjectType, Field } from 'type-graphql';
23
- import { LogError } from '@memberjunction/core';
24
- import { ResolverBase } from '../generic/ResolverBase.js';
25
- import { GetReadWriteProvider } from '../util.js';
26
- import { GetVonageTelephonyService } from '../telephony/vonage-runtime.js';
27
- /** Result of an outbound place-call attempt. */
28
- let PlaceVonageCallResult = class PlaceVonageCallResult {
29
- };
30
- __decorate([
31
- Field(() => Boolean),
32
- __metadata("design:type", Boolean)
33
- ], PlaceVonageCallResult.prototype, "Success", void 0);
34
- __decorate([
35
- Field(() => String, { nullable: true }),
36
- __metadata("design:type", String)
37
- ], PlaceVonageCallResult.prototype, "ErrorMessage", void 0);
38
- __decorate([
39
- Field(() => String),
40
- __metadata("design:type", String)
41
- ], PlaceVonageCallResult.prototype, "CallId", void 0);
42
- PlaceVonageCallResult = __decorate([
43
- ObjectType()
44
- ], PlaceVonageCallResult);
45
- export { PlaceVonageCallResult };
46
- let VonageTelephonyResolver = class VonageTelephonyResolver extends ResolverBase {
47
- /**
48
- * Places an outbound call from the given agent identity (its phone number is the caller-id) to a
49
- * destination number, connecting the pinned agent over the realtime bridge. Returns the call UUID.
50
- */
51
- async PlaceVonageCall(agentIdentityId, toNumber, context = {}) {
52
- const failure = (msg) => ({ Success: false, ErrorMessage: msg, CallId: '' });
53
- try {
54
- const user = this.GetUserFromPayload(context.userPayload);
55
- if (!user) {
56
- return failure('Unable to determine current user.');
57
- }
58
- const service = GetVonageTelephonyService();
59
- if (!service) {
60
- return failure('Vonage telephony is not configured on this server.');
61
- }
62
- const provider = GetReadWriteProvider(context.providers);
63
- const callId = await service.PlaceOutboundCall(agentIdentityId, toNumber, user, provider);
64
- return { Success: true, CallId: callId };
65
- }
66
- catch (error) {
67
- const msg = error instanceof Error ? error.message : String(error);
68
- LogError(`PlaceVonageCall failed: ${msg}`);
69
- return failure(msg);
70
- }
71
- }
72
- };
73
- __decorate([
74
- Mutation(() => PlaceVonageCallResult),
75
- __param(0, Arg('agentIdentityId', () => String)),
76
- __param(1, Arg('toNumber', () => String)),
77
- __param(2, Ctx()),
78
- __metadata("design:type", Function),
79
- __metadata("design:paramtypes", [String, String, Object]),
80
- __metadata("design:returntype", Promise)
81
- ], VonageTelephonyResolver.prototype, "PlaceVonageCall", null);
82
- VonageTelephonyResolver = __decorate([
83
- Resolver()
84
- ], VonageTelephonyResolver);
85
- export { VonageTelephonyResolver };
86
- //# sourceMappingURL=VonageTelephonyResolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VonageTelephonyResolver.js","sourceRoot":"","sources":["../../src/resolvers/VonageTelephonyResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;;;;;;;;;;;;;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,gDAAgD;AAEzC,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;CAUjC,CAAA;AARG;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;;sDACJ;AAGjB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2DAClB;AAItB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;qDACL;AATN,qBAAqB;IADjC,UAAU,EAAE;GACA,qBAAqB,CAUjC;;AAGM,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,YAAY;IACrD;;;OAGG;IAEG,AAAN,KAAK,CAAC,eAAe,CACqB,eAAuB,EAC9B,QAAgB,EACxC,UAAsB,EAAgB;QAE7C,MAAM,OAAO,GAAG,CAAC,GAAW,EAAyB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5G,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,OAAO,OAAO,CAAC,mCAAmC,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,OAAO,GAAG,yBAAyB,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO,OAAO,CAAC,oDAAoD,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAiC,CAAC;YACzF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC1F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,QAAQ,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;YAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACL,CAAC;CACJ,CAAA;AAxBS;IADL,QAAQ,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC;IAEjC,WAAA,GAAG,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;IACpC,WAAA,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;IAC7B,WAAA,GAAG,EAAE,CAAA;;;;8DAoBT;AA7BQ,uBAAuB;IADnC,QAAQ,EAAE;GACE,uBAAuB,CA8BnC"}
@@ -1,115 +0,0 @@
1
- /**
2
- * @fileoverview Orchestrates RingCentral telephony bridge sessions (inbound + outbound) for MJAPI over the
3
- * **SIP softphone** transport.
4
- *
5
- * RingCentral's only product that carries bidirectional call audio is a registered SIP softphone (the
6
- * `ringcentral-softphone` SDK over SIP/TLS + RTP/SRTP) — its WebSocket "Call Streaming" product is
7
- * receive-only and cannot inject the agent's voice. So unlike the Twilio/Vonage ingresses (public webhook
8
- * + media WSS), this service owns a **long-lived SIP registration**: one
9
- * {@link RingCentralSoftphoneHandle} created + registered at boot, shared across all calls. Inbound calls
10
- * arrive as SIP INVITEs on that registration (no HTTP webhook); outbound calls place SIP calls through it.
11
- *
12
- * It does NOT re-implement bridge logic: it resolves the RingCentral provider + the agent identity, opens a
13
- * server-side realtime session via the agent layer's `CreateBridgeRealtimeSession` factory, binds a
14
- * {@link RingCentralSoftphoneCallSdk} (drawing its session from the shared handle) onto the driver, and
15
- * hands everything to `AIBridgeEngine.StartBridgeSession` — the same seam the Twilio/Vonage services use.
16
- *
17
- * @module @memberjunction/server/telephony
18
- */
19
- import { UserInfo, IMetadataProvider } from '@memberjunction/core';
20
- import { AIBridgeEngine } from '@memberjunction/ai-bridge-server';
21
- import { CreateBridgeRealtimeSession } from '@memberjunction/ai-agents';
22
- import { type BridgeNativeSdkBinding } from '@memberjunction/ai-bridge-base';
23
- import { createRingCentralSoftphone } from '@memberjunction/ai-bridge-ringcentral';
24
- import type { RingCentralTelephonyConfig } from '../config.js';
25
- import { SessionManager } from '../agentSessions/SessionManager.js';
26
- /** A resolved inbound call's identifying fields (mapped from a RingCentral SIP INVITE). */
27
- export interface InboundCallInput {
28
- /** The SIP `Call-ID` (the per-call id the handle parked the INVITE under + the bridge's inbound id). */
29
- sessionId: string;
30
- /** The caller's number (the INVITE's `From`). */
31
- from: string;
32
- /** The dialed DID (the INVITE's `To`) — resolved to an agent identity. */
33
- to: string;
34
- }
35
- /** Result of starting an inbound bridge session. */
36
- export interface InboundCallResult {
37
- /** Whether a pinned agent was resolved + a bridge session started. */
38
- accepted: boolean;
39
- /** Why it was rejected (no agent identity for the DID, provider missing, etc.). */
40
- reason?: string;
41
- }
42
- /** Injectable collaborators (production defaults wired in the constructor; fakes in tests). */
43
- export interface RingCentralTelephonyServiceDeps {
44
- engine?: Pick<AIBridgeEngine, 'ProviderByName' | 'ProviderByDriverClass' | 'StartBridgeSession' | 'Config'>;
45
- sessionFactory?: typeof CreateBridgeRealtimeSession;
46
- sessionManager?: Pick<SessionManager, 'CreateSession'>;
47
- /** Test seam: a factory that builds the softphone handle (inject a fake to avoid the real SIP SDK). */
48
- createHandle?: typeof createRingCentralSoftphone;
49
- }
50
- /**
51
- * Starts RingCentral bridge sessions over a shared SIP-softphone registration. One instance per server,
52
- * constructed at boot and held by the runtime holder so the outbound `PlaceRingCentralCall` resolver and the
53
- * inbound INVITE coordinator share the same registration.
54
- */
55
- export declare class RingCentralTelephonyService {
56
- private readonly config;
57
- private readonly engine;
58
- private readonly sessionFactory;
59
- private readonly sessionManager;
60
- private readonly createHandle;
61
- /** The shared SIP registration — created + registered by {@link start}; null until then. */
62
- private handle;
63
- /** The carrier PCM16 rate for the negotiated codec (set in {@link start}). */
64
- private carrierSampleRate;
65
- constructor(config: RingCentralTelephonyConfig, deps?: RingCentralTelephonyServiceDeps);
66
- /**
67
- * Creates + registers the shared SIP softphone and wires inbound INVITE handling. Called once at boot
68
- * (fire-and-forget so SIP registration never blocks server startup); logs success/failure. Inbound calls
69
- * only flow once this resolves.
70
- */
71
- start(): Promise<void>;
72
- /** Best-effort teardown of the SIP registration (server shutdown). */
73
- dispose(): void;
74
- /**
75
- * Resolves the dialed DID to a pinned agent and starts an INBOUND bridge session. The bound
76
- * {@link RingCentralSoftphoneCallSdk} answers the parked INVITE for `sessionId`. Returns
77
- * `{ accepted:false }` (never throws) when no agent identity matches the DID, so the coordinator can
78
- * decline the INVITE cleanly.
79
- */
80
- HandleInboundCall(input: InboundCallInput, contextUser: UserInfo, provider: IMetadataProvider): Promise<InboundCallResult>;
81
- /**
82
- * Places an OUTBOUND call from a given agent identity to a destination number. The bound
83
- * {@link RingCentralSoftphoneCallSdk} places the SIP call through the shared registration; the returned
84
- * SIP `Call-ID` is the bridge's external connection id.
85
- *
86
- * @returns The placed call's SIP `Call-ID`.
87
- */
88
- PlaceOutboundCall(agentIdentityId: string, toNumber: string, contextUser: UserInfo, provider: IMetadataProvider): Promise<string>;
89
- /** Inbound INVITE coordinator: resolve the server principal, start a bridge, decline if no agent matched. */
90
- private onInboundInvite;
91
- /** Shared inbound/outbound bridge-start: resolve provider, open the realtime session, bind the SDK, start. */
92
- private startBridge;
93
- /** Resolves the seeded RingCentral provider row (by driver class, falling back to display name). */
94
- private resolveProvider;
95
- /**
96
- * Builds the per-session SDK binding that wires a {@link RingCentralSoftphoneCallSdk} (drawing its
97
- * session from the shared SIP registration handle) onto the telephony driver — overriding the package's
98
- * default unbound SDK. Reads the handle lazily at call time so a call placed during the brief boot window
99
- * before registration fails loudly rather than binding a null handle.
100
- */
101
- buildBindSdk(): BridgeNativeSdkBinding;
102
- /** Returns the live registration handle, or throws if the softphone hasn't registered yet. */
103
- private requireHandle;
104
- /** Assembles the per-session bridge configuration (direction / from-number / inbound-call-id / carrier rate). */
105
- private buildSessionConfiguration;
106
- /** Maps the server config block to the softphone SDK's SIP-device config (credentials resolved upstream). */
107
- private toSoftphoneConfig;
108
- /** Resolves the server-side principal + provider for an inbound call (no MJ JWT on a SIP INVITE). */
109
- private resolveServerContext;
110
- /** Finds the active agent identity whose phone number matches the dialed DID. */
111
- private resolveAgentIdentityByPhone;
112
- /** Loads a specific agent identity by id (used by outbound PlaceCall), requiring it be active. */
113
- private loadAgentIdentity;
114
- }
115
- //# sourceMappingURL=RingCentralTelephonyService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RingCentralTelephonyService.d.ts","sourceRoot":"","sources":["../../src/telephony/RingCentralTelephonyService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAW,QAAQ,EAAE,iBAAiB,EAAiC,MAAM,sBAAsB,CAAC;AAG3G,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAEH,KAAK,sBAAsB,EAK9B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACH,0BAA0B,EAK7B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAapE,2FAA2F;AAC3F,MAAM,WAAW,gBAAgB;IAC7B,wGAAwG;IACxG,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,EAAE,EAAE,MAAM,CAAC;CACd;AAED,oDAAoD;AACpD,MAAM,WAAW,iBAAiB;IAC9B,sEAAsE;IACtE,QAAQ,EAAE,OAAO,CAAC;IAClB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,+FAA+F;AAC/F,MAAM,WAAW,+BAA+B;IAC5C,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,gBAAgB,GAAG,uBAAuB,GAAG,oBAAoB,GAAG,QAAQ,CAAC,CAAC;IAC5G,cAAc,CAAC,EAAE,OAAO,2BAA2B,CAAC;IACpD,cAAc,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IACvD,uGAAuG;IACvG,YAAY,CAAC,EAAE,OAAO,0BAA0B,CAAC;CACpD;AAED;;;;GAIG;AACH,qBAAa,2BAA2B;IAahC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZ3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqG;IAC5H,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqC;IACpE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwC;IACvE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IAEjE,4FAA4F;IAC5F,OAAO,CAAC,MAAM,CAA2C;IAEzD,8EAA8E;IAC9E,OAAO,CAAC,iBAAiB,CAA4C;gBAGhD,MAAM,EAAE,0BAA0B,EACnD,IAAI,GAAE,+BAAoC;IAQ9C;;;;OAIG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAanC,sEAAsE;IAC/D,OAAO,IAAI,IAAI;IAKtB;;;;;OAKG;IACU,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAqBvI;;;;;;OAMG;IACU,iBAAiB,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAkB9I,6GAA6G;YAC/F,eAAe;IAc7B,8GAA8G;YAChG,WAAW;IAsCzB,oGAAoG;IACpG,OAAO,CAAC,eAAe;IAQvB;;;;;OAKG;IACI,YAAY,IAAI,sBAAsB;IAO7C,8FAA8F;IAC9F,OAAO,CAAC,aAAa;IAOrB,iHAAiH;IACjH,OAAO,CAAC,yBAAyB;IAiBjC,6GAA6G;IAC7G,OAAO,CAAC,iBAAiB;IAYzB,qGAAqG;IACrG,OAAO,CAAC,oBAAoB;IAS5B,iFAAiF;YACnE,2BAA2B;IAsBzC,kGAAkG;YACpF,iBAAiB;CASlC"}