@memberjunction/server 5.43.0 → 5.45.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 (309) hide show
  1. package/dist/agentSessions/ReturningVisitorRecap.d.ts +39 -0
  2. package/dist/agentSessions/ReturningVisitorRecap.d.ts.map +1 -0
  3. package/dist/agentSessions/ReturningVisitorRecap.js +198 -0
  4. package/dist/agentSessions/ReturningVisitorRecap.js.map +1 -0
  5. package/dist/agentSessions/SessionJanitor.d.ts +13 -0
  6. package/dist/agentSessions/SessionJanitor.d.ts.map +1 -1
  7. package/dist/agentSessions/SessionJanitor.js +65 -7
  8. package/dist/agentSessions/SessionJanitor.js.map +1 -1
  9. package/dist/agentSessions/SessionManager.d.ts.map +1 -1
  10. package/dist/agentSessions/SessionManager.js +40 -0
  11. package/dist/agentSessions/SessionManager.js.map +1 -1
  12. package/dist/agentSessions/index.d.ts.map +1 -1
  13. package/dist/agentSessions/index.js +3 -1
  14. package/dist/agentSessions/index.js.map +1 -1
  15. package/dist/auth/magicLink/MagicLinkRouter.d.ts +10 -0
  16. package/dist/auth/magicLink/MagicLinkRouter.d.ts.map +1 -1
  17. package/dist/auth/magicLink/MagicLinkRouter.js +16 -0
  18. package/dist/auth/magicLink/MagicLinkRouter.js.map +1 -1
  19. package/dist/auth/magicLink/index.d.ts +1 -1
  20. package/dist/auth/magicLink/index.d.ts.map +1 -1
  21. package/dist/auth/magicLink/index.js +1 -1
  22. package/dist/auth/magicLink/index.js.map +1 -1
  23. package/dist/auth/magicLink/types.d.ts +26 -0
  24. package/dist/auth/magicLink/types.d.ts.map +1 -1
  25. package/dist/config.d.ts +1883 -144
  26. package/dist/config.d.ts.map +1 -1
  27. package/dist/config.js +160 -36
  28. package/dist/config.js.map +1 -1
  29. package/dist/context.d.ts.map +1 -1
  30. package/dist/context.js +45 -2
  31. package/dist/context.js.map +1 -1
  32. package/dist/generated/generated.d.ts +1684 -54
  33. package/dist/generated/generated.d.ts.map +1 -1
  34. package/dist/generated/generated.js +57105 -48029
  35. package/dist/generated/generated.js.map +1 -1
  36. package/dist/generic/ResolverBase.d.ts +13 -0
  37. package/dist/generic/ResolverBase.d.ts.map +1 -1
  38. package/dist/generic/ResolverBase.js +22 -0
  39. package/dist/generic/ResolverBase.js.map +1 -1
  40. package/dist/generic/RunViewResolver.d.ts.map +1 -1
  41. package/dist/generic/RunViewResolver.js +4 -0
  42. package/dist/generic/RunViewResolver.js.map +1 -1
  43. package/dist/index.d.ts +2 -2
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +110 -3
  46. package/dist/index.js.map +1 -1
  47. package/dist/integration/CustomColumnPromoter.d.ts.map +1 -1
  48. package/dist/integration/CustomColumnPromoter.js +6 -0
  49. package/dist/integration/CustomColumnPromoter.js.map +1 -1
  50. package/dist/realtimeWidget/WidgetRouter.d.ts +26 -0
  51. package/dist/realtimeWidget/WidgetRouter.d.ts.map +1 -0
  52. package/dist/realtimeWidget/WidgetRouter.js +182 -0
  53. package/dist/realtimeWidget/WidgetRouter.js.map +1 -0
  54. package/dist/realtimeWidget/WidgetSessionService.d.ts +265 -0
  55. package/dist/realtimeWidget/WidgetSessionService.d.ts.map +1 -0
  56. package/dist/realtimeWidget/WidgetSessionService.js +477 -0
  57. package/dist/realtimeWidget/WidgetSessionService.js.map +1 -0
  58. package/dist/realtimeWidget/host-identity.d.ts +40 -0
  59. package/dist/realtimeWidget/host-identity.d.ts.map +1 -0
  60. package/dist/realtimeWidget/host-identity.js +58 -0
  61. package/dist/realtimeWidget/host-identity.js.map +1 -0
  62. package/dist/realtimeWidget/index.d.ts +10 -0
  63. package/dist/realtimeWidget/index.d.ts.map +1 -0
  64. package/dist/realtimeWidget/index.js +9 -0
  65. package/dist/realtimeWidget/index.js.map +1 -0
  66. package/dist/realtimeWidget/visitorIdentity.d.ts +76 -0
  67. package/dist/realtimeWidget/visitorIdentity.d.ts.map +1 -0
  68. package/dist/realtimeWidget/visitorIdentity.js +202 -0
  69. package/dist/realtimeWidget/visitorIdentity.js.map +1 -0
  70. package/dist/realtimeWidget/widgetCore.d.ts +106 -0
  71. package/dist/realtimeWidget/widgetCore.d.ts.map +1 -0
  72. package/dist/realtimeWidget/widgetCore.js +173 -0
  73. package/dist/realtimeWidget/widgetCore.js.map +1 -0
  74. package/dist/realtimeWidget/widgetGuestElevation.d.ts +51 -0
  75. package/dist/realtimeWidget/widgetGuestElevation.d.ts.map +1 -0
  76. package/dist/realtimeWidget/widgetGuestElevation.js +79 -0
  77. package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -0
  78. package/dist/resolvers/ComponentRegistryResolver.d.ts +7 -0
  79. package/dist/resolvers/ComponentRegistryResolver.d.ts.map +1 -1
  80. package/dist/resolvers/ComponentRegistryResolver.js +31 -8
  81. package/dist/resolvers/ComponentRegistryResolver.js.map +1 -1
  82. package/dist/resolvers/EntityPermissionResolver.d.ts.map +1 -1
  83. package/dist/resolvers/EntityPermissionResolver.js +1 -2
  84. package/dist/resolvers/EntityPermissionResolver.js.map +1 -1
  85. package/dist/resolvers/FileResolver.d.ts +74 -0
  86. package/dist/resolvers/FileResolver.d.ts.map +1 -1
  87. package/dist/resolvers/FileResolver.js +211 -2
  88. package/dist/resolvers/FileResolver.js.map +1 -1
  89. package/dist/resolvers/QueryResolver.d.ts +6 -4
  90. package/dist/resolvers/QueryResolver.d.ts.map +1 -1
  91. package/dist/resolvers/QueryResolver.js +29 -14
  92. package/dist/resolvers/QueryResolver.js.map +1 -1
  93. package/dist/resolvers/QuerySystemUserResolver.d.ts +9 -6
  94. package/dist/resolvers/QuerySystemUserResolver.d.ts.map +1 -1
  95. package/dist/resolvers/QuerySystemUserResolver.js +15 -13
  96. package/dist/resolvers/QuerySystemUserResolver.js.map +1 -1
  97. package/dist/resolvers/RealtimeBridgeResolver.d.ts +8 -1
  98. package/dist/resolvers/RealtimeBridgeResolver.d.ts.map +1 -1
  99. package/dist/resolvers/RealtimeBridgeResolver.js +28 -4
  100. package/dist/resolvers/RealtimeBridgeResolver.js.map +1 -1
  101. package/dist/resolvers/RealtimeClientSessionResolver.d.ts +91 -2
  102. package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
  103. package/dist/resolvers/RealtimeClientSessionResolver.js +337 -17
  104. package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
  105. package/dist/resolvers/RemoteBrowserActionResolver.d.ts.map +1 -1
  106. package/dist/resolvers/RemoteBrowserActionResolver.js +17 -2
  107. package/dist/resolvers/RemoteBrowserActionResolver.js.map +1 -1
  108. package/dist/resolvers/RingCentralTelephonyResolver.d.ts +27 -0
  109. package/dist/resolvers/RingCentralTelephonyResolver.d.ts.map +1 -0
  110. package/dist/resolvers/RingCentralTelephonyResolver.js +87 -0
  111. package/dist/resolvers/RingCentralTelephonyResolver.js.map +1 -0
  112. package/dist/resolvers/RunAIAgentResolver.d.ts +12 -3
  113. package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
  114. package/dist/resolvers/RunAIAgentResolver.js +50 -17
  115. package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
  116. package/dist/resolvers/SearchKnowledgeResolver.d.ts.map +1 -1
  117. package/dist/resolvers/SearchKnowledgeResolver.js +2 -0
  118. package/dist/resolvers/SearchKnowledgeResolver.js.map +1 -1
  119. package/dist/resolvers/TeamsMeetingsResolver.d.ts +28 -0
  120. package/dist/resolvers/TeamsMeetingsResolver.d.ts.map +1 -0
  121. package/dist/resolvers/TeamsMeetingsResolver.js +91 -0
  122. package/dist/resolvers/TeamsMeetingsResolver.js.map +1 -0
  123. package/dist/resolvers/TelephonyResolver.d.ts +26 -0
  124. package/dist/resolvers/TelephonyResolver.d.ts.map +1 -0
  125. package/dist/resolvers/TelephonyResolver.js +86 -0
  126. package/dist/resolvers/TelephonyResolver.js.map +1 -0
  127. package/dist/resolvers/TestQuerySQLResolver.d.ts +1 -1
  128. package/dist/resolvers/TestQuerySQLResolver.d.ts.map +1 -1
  129. package/dist/resolvers/TestQuerySQLResolver.js +2 -3
  130. package/dist/resolvers/TestQuerySQLResolver.js.map +1 -1
  131. package/dist/resolvers/VonageTelephonyResolver.d.ts +26 -0
  132. package/dist/resolvers/VonageTelephonyResolver.d.ts.map +1 -0
  133. package/dist/resolvers/VonageTelephonyResolver.js +86 -0
  134. package/dist/resolvers/VonageTelephonyResolver.js.map +1 -0
  135. package/dist/resolvers/meetingRecordingRegistration.d.ts +124 -0
  136. package/dist/resolvers/meetingRecordingRegistration.d.ts.map +1 -0
  137. package/dist/resolvers/meetingRecordingRegistration.js +311 -0
  138. package/dist/resolvers/meetingRecordingRegistration.js.map +1 -0
  139. package/dist/resolvers/peaksSidecar.d.ts +30 -0
  140. package/dist/resolvers/peaksSidecar.d.ts.map +1 -0
  141. package/dist/resolvers/peaksSidecar.js +51 -0
  142. package/dist/resolvers/peaksSidecar.js.map +1 -0
  143. package/dist/rest/MediaAccessKeys.d.ts +68 -0
  144. package/dist/rest/MediaAccessKeys.d.ts.map +1 -0
  145. package/dist/rest/MediaAccessKeys.js +96 -0
  146. package/dist/rest/MediaAccessKeys.js.map +1 -0
  147. package/dist/rest/MediaStreamHandler.d.ts +26 -0
  148. package/dist/rest/MediaStreamHandler.d.ts.map +1 -0
  149. package/dist/rest/MediaStreamHandler.js +195 -0
  150. package/dist/rest/MediaStreamHandler.js.map +1 -0
  151. package/dist/rest/mediaRange.d.ts +41 -0
  152. package/dist/rest/mediaRange.d.ts.map +1 -0
  153. package/dist/rest/mediaRange.js +60 -0
  154. package/dist/rest/mediaRange.js.map +1 -0
  155. package/dist/telephony/RingCentralTelephonyService.d.ts +115 -0
  156. package/dist/telephony/RingCentralTelephonyService.d.ts.map +1 -0
  157. package/dist/telephony/RingCentralTelephonyService.js +262 -0
  158. package/dist/telephony/RingCentralTelephonyService.js.map +1 -0
  159. package/dist/telephony/TeamsMeetingsRouter.d.ts +40 -0
  160. package/dist/telephony/TeamsMeetingsRouter.d.ts.map +1 -0
  161. package/dist/telephony/TeamsMeetingsRouter.js +96 -0
  162. package/dist/telephony/TeamsMeetingsRouter.js.map +1 -0
  163. package/dist/telephony/TeamsMeetingsService.d.ts +113 -0
  164. package/dist/telephony/TeamsMeetingsService.d.ts.map +1 -0
  165. package/dist/telephony/TeamsMeetingsService.js +196 -0
  166. package/dist/telephony/TeamsMeetingsService.js.map +1 -0
  167. package/dist/telephony/TwilioTelephonyRouter.d.ts +36 -0
  168. package/dist/telephony/TwilioTelephonyRouter.d.ts.map +1 -0
  169. package/dist/telephony/TwilioTelephonyRouter.js +143 -0
  170. package/dist/telephony/TwilioTelephonyRouter.js.map +1 -0
  171. package/dist/telephony/TwilioTelephonyService.d.ts +95 -0
  172. package/dist/telephony/TwilioTelephonyService.d.ts.map +1 -0
  173. package/dist/telephony/TwilioTelephonyService.js +193 -0
  174. package/dist/telephony/TwilioTelephonyService.js.map +1 -0
  175. package/dist/telephony/VonageTelephonyRouter.d.ts +41 -0
  176. package/dist/telephony/VonageTelephonyRouter.d.ts.map +1 -0
  177. package/dist/telephony/VonageTelephonyRouter.js +201 -0
  178. package/dist/telephony/VonageTelephonyRouter.js.map +1 -0
  179. package/dist/telephony/VonageTelephonyService.d.ts +90 -0
  180. package/dist/telephony/VonageTelephonyService.d.ts.map +1 -0
  181. package/dist/telephony/VonageTelephonyService.js +191 -0
  182. package/dist/telephony/VonageTelephonyService.js.map +1 -0
  183. package/dist/telephony/calendar-scheduler.d.ts +67 -0
  184. package/dist/telephony/calendar-scheduler.d.ts.map +1 -0
  185. package/dist/telephony/calendar-scheduler.js +133 -0
  186. package/dist/telephony/calendar-scheduler.js.map +1 -0
  187. package/dist/telephony/index.d.ts +29 -0
  188. package/dist/telephony/index.d.ts.map +1 -0
  189. package/dist/telephony/index.js +38 -0
  190. package/dist/telephony/index.js.map +1 -0
  191. package/dist/telephony/media-upgrade-router.d.ts +33 -0
  192. package/dist/telephony/media-upgrade-router.d.ts.map +1 -0
  193. package/dist/telephony/media-upgrade-router.js +56 -0
  194. package/dist/telephony/media-upgrade-router.js.map +1 -0
  195. package/dist/telephony/ringcentral-runtime.d.ts +14 -0
  196. package/dist/telephony/ringcentral-runtime.d.ts.map +1 -0
  197. package/dist/telephony/ringcentral-runtime.js +18 -0
  198. package/dist/telephony/ringcentral-runtime.js.map +1 -0
  199. package/dist/telephony/teams-meetings-runtime.d.ts +16 -0
  200. package/dist/telephony/teams-meetings-runtime.d.ts.map +1 -0
  201. package/dist/telephony/teams-meetings-runtime.js +20 -0
  202. package/dist/telephony/teams-meetings-runtime.js.map +1 -0
  203. package/dist/telephony/teamsAcsMediaRegistry.d.ts +69 -0
  204. package/dist/telephony/teamsAcsMediaRegistry.d.ts.map +1 -0
  205. package/dist/telephony/teamsAcsMediaRegistry.js +118 -0
  206. package/dist/telephony/teamsAcsMediaRegistry.js.map +1 -0
  207. package/dist/telephony/telephony-runtime.d.ts +14 -0
  208. package/dist/telephony/telephony-runtime.d.ts.map +1 -0
  209. package/dist/telephony/telephony-runtime.js +18 -0
  210. package/dist/telephony/telephony-runtime.js.map +1 -0
  211. package/dist/telephony/twilioMediaRegistry.d.ts +60 -0
  212. package/dist/telephony/twilioMediaRegistry.d.ts.map +1 -0
  213. package/dist/telephony/twilioMediaRegistry.js +106 -0
  214. package/dist/telephony/twilioMediaRegistry.js.map +1 -0
  215. package/dist/telephony/vonage-runtime.d.ts +14 -0
  216. package/dist/telephony/vonage-runtime.d.ts.map +1 -0
  217. package/dist/telephony/vonage-runtime.js +18 -0
  218. package/dist/telephony/vonage-runtime.js.map +1 -0
  219. package/dist/telephony/vonageMediaRegistry.d.ts +78 -0
  220. package/dist/telephony/vonageMediaRegistry.d.ts.map +1 -0
  221. package/dist/telephony/vonageMediaRegistry.js +158 -0
  222. package/dist/telephony/vonageMediaRegistry.js.map +1 -0
  223. package/package.json +88 -82
  224. package/src/__tests__/FileResolverPeaks.test.ts +64 -0
  225. package/src/__tests__/MediaAccessKeys.test.ts +68 -0
  226. package/src/__tests__/MediaStreamHandler.test.ts +91 -0
  227. package/src/__tests__/RealtimeBridgeResolver.test.ts +10 -1
  228. package/src/__tests__/RealtimeClientSessionResolver.test.ts +69 -0
  229. package/src/__tests__/RealtimeCoAgentAppAwareness.integration.test.ts +191 -0
  230. package/src/__tests__/RemoteBrowserSnapshot.test.ts +123 -0
  231. package/src/__tests__/SessionManager.test.ts +2 -0
  232. package/src/__tests__/meetingRecordingRegistration.test.ts +248 -0
  233. package/src/__tests__/search-knowledge-tags.test.ts +9 -9
  234. package/src/__tests__/teams-meetings-service.test.ts +65 -0
  235. package/src/__tests__/teamsAcsMediaRegistry.test.ts +82 -0
  236. package/src/__tests__/twilio-telephony-service.test.ts +23 -0
  237. package/src/__tests__/twilioMediaRegistry.test.ts +103 -0
  238. package/src/__tests__/vonageMediaRegistry.test.ts +180 -0
  239. package/src/__tests__/widget.test.ts +204 -0
  240. package/src/__tests__/widgetGuestElevation.test.ts +57 -0
  241. package/src/__tests__/widgetHostIdentity.test.ts +117 -0
  242. package/src/agentSessions/ReturningVisitorRecap.ts +242 -0
  243. package/src/agentSessions/SessionJanitor.ts +66 -6
  244. package/src/agentSessions/SessionManager.ts +41 -0
  245. package/src/agentSessions/index.ts +3 -1
  246. package/src/auth/magicLink/MagicLinkRouter.ts +17 -0
  247. package/src/auth/magicLink/index.ts +1 -0
  248. package/src/auth/magicLink/types.ts +26 -0
  249. package/src/config.ts +172 -38
  250. package/src/context.ts +50 -3
  251. package/src/generated/generated.ts +26726 -20464
  252. package/src/generic/ResolverBase.ts +28 -0
  253. package/src/generic/RunViewResolver.ts +4 -0
  254. package/src/index.ts +119 -3
  255. package/src/integration/CustomColumnPromoter.ts +6 -0
  256. package/src/realtimeWidget/WidgetRouter.ts +204 -0
  257. package/src/realtimeWidget/WidgetSessionService.ts +714 -0
  258. package/src/realtimeWidget/host-identity.ts +84 -0
  259. package/src/realtimeWidget/index.ts +15 -0
  260. package/src/realtimeWidget/visitorIdentity.ts +258 -0
  261. package/src/realtimeWidget/widgetCore.ts +231 -0
  262. package/src/realtimeWidget/widgetGuestElevation.ts +115 -0
  263. package/src/resolvers/ComponentRegistryResolver.ts +36 -10
  264. package/src/resolvers/EntityPermissionResolver.ts +1 -2
  265. package/src/resolvers/FileResolver.ts +199 -1
  266. package/src/resolvers/QueryResolver.ts +33 -19
  267. package/src/resolvers/QuerySystemUserResolver.ts +14 -10
  268. package/src/resolvers/RealtimeBridgeResolver.ts +36 -4
  269. package/src/resolvers/RealtimeClientSessionResolver.ts +383 -9
  270. package/src/resolvers/RemoteBrowserActionResolver.ts +18 -2
  271. package/src/resolvers/RingCentralTelephonyResolver.ts +64 -0
  272. package/src/resolvers/RunAIAgentResolver.ts +60 -15
  273. package/src/resolvers/SearchKnowledgeResolver.ts +2 -0
  274. package/src/resolvers/TeamsMeetingsResolver.ts +68 -0
  275. package/src/resolvers/TelephonyResolver.ts +63 -0
  276. package/src/resolvers/TestQuerySQLResolver.ts +2 -3
  277. package/src/resolvers/VonageTelephonyResolver.ts +63 -0
  278. package/src/resolvers/meetingRecordingRegistration.ts +432 -0
  279. package/src/resolvers/peaksSidecar.ts +52 -0
  280. package/src/rest/MediaAccessKeys.ts +121 -0
  281. package/src/rest/MediaStreamHandler.ts +223 -0
  282. package/src/rest/mediaRange.ts +76 -0
  283. package/src/telephony/RingCentralTelephonyService.ts +342 -0
  284. package/src/telephony/TeamsMeetingsRouter.ts +124 -0
  285. package/src/telephony/TeamsMeetingsService.ts +268 -0
  286. package/src/telephony/TwilioTelephonyRouter.ts +184 -0
  287. package/src/telephony/TwilioTelephonyService.ts +261 -0
  288. package/src/telephony/VonageTelephonyRouter.ts +239 -0
  289. package/src/telephony/VonageTelephonyService.ts +259 -0
  290. package/src/telephony/calendar-scheduler.ts +176 -0
  291. package/src/telephony/index.ts +43 -0
  292. package/src/telephony/media-upgrade-router.ts +62 -0
  293. package/src/telephony/ringcentral-runtime.ts +22 -0
  294. package/src/telephony/teams-meetings-runtime.ts +24 -0
  295. package/src/telephony/teamsAcsMediaRegistry.ts +152 -0
  296. package/src/telephony/telephony-runtime.ts +22 -0
  297. package/src/telephony/twilioMediaRegistry.ts +137 -0
  298. package/src/telephony/vonage-runtime.ts +22 -0
  299. package/src/telephony/vonageMediaRegistry.ts +200 -0
  300. package/dist/agents/skip-agent.d.ts +0 -111
  301. package/dist/agents/skip-agent.d.ts.map +0 -1
  302. package/dist/agents/skip-agent.js +0 -1487
  303. package/dist/agents/skip-agent.js.map +0 -1
  304. package/dist/agents/skip-sdk.d.ts +0 -261
  305. package/dist/agents/skip-sdk.d.ts.map +0 -1
  306. package/dist/agents/skip-sdk.js +0 -909
  307. package/dist/agents/skip-sdk.js.map +0 -1
  308. package/src/agents/skip-agent.ts +0 -1594
  309. package/src/agents/skip-sdk.ts +0 -1210
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,26 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,86 @@
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
@@ -0,0 +1 @@
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"}
@@ -42,7 +42,7 @@ export declare class TestQuerySQLResult {
42
42
  * enabling external systems (e.g., Skip-Brain) to test query SQL before saving to the database.
43
43
  *
44
44
  * Security:
45
- * - Requires system user authentication (@RequireSystemUser)
45
+ * - Requires `query:test` scope for API key users (no-op for JWT auth)
46
46
  * - Uses read-only database connection (no mutation possible)
47
47
  * - Enforces MaxRows limit (default 100) to prevent unbounded queries
48
48
  *
@@ -1 +1 @@
1
- {"version":3,"file":"TestQuerySQLResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/TestQuerySQLResolver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D;;;GAGG;AACH,qBACa,wBAAwB;IAEjC,IAAI,EAAE,MAAM,CAAC;IAGb,YAAY,EAAE,MAAM,CAAC;IAGrB,GAAG,EAAE,MAAM,CAAC;IAGZ,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGpC,YAAY,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC7C;AAED;;;;GAIG;AACH,qBACa,iBAAiB;IAE1B,GAAG,EAAE,MAAM,CAAC;IAGZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGpC,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,YAAY,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAG1C,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBACa,kBAAkB;IAE3B,OAAO,EAAE,OAAO,CAAC;IAGjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,QAAQ,EAAE,MAAM,CAAC;IAGjB,aAAa,EAAE,MAAM,CAAC;IAGtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,qBACa,oBAAqB,SAAQ,YAAY;IAK5C,YAAY,CACyB,KAAK,EAAE,iBAAiB,EACxD,OAAO,EAAE,UAAU,GAC3B,OAAO,CAAC,kBAAkB,CAAC;CA8CjC"}
1
+ {"version":3,"file":"TestQuerySQLResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/TestQuerySQLResolver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D;;;GAGG;AACH,qBACa,wBAAwB;IAEjC,IAAI,EAAE,MAAM,CAAC;IAGb,YAAY,EAAE,MAAM,CAAC;IAGrB,GAAG,EAAE,MAAM,CAAC;IAGZ,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGpC,YAAY,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC7C;AAED;;;;GAIG;AACH,qBACa,iBAAiB;IAE1B,GAAG,EAAE,MAAM,CAAC;IAGZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGpC,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,YAAY,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAG1C,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBACa,kBAAkB;IAE3B,OAAO,EAAE,OAAO,CAAC;IAGjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,QAAQ,EAAE,MAAM,CAAC;IAGjB,aAAa,EAAE,MAAM,CAAC;IAGtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,qBACa,oBAAqB,SAAQ,YAAY;IAI5C,YAAY,CACyB,KAAK,EAAE,iBAAiB,EACxD,OAAO,EAAE,UAAU,GAC3B,OAAO,CAAC,kBAAkB,CAAC;CA+CjC"}
@@ -13,7 +13,6 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
13
13
  import { Arg, Ctx, Field, InputType, Int, ObjectType, Query, Resolver } from 'type-graphql';
14
14
  import { GraphQLJSONObject } from 'graphql-type-json';
15
15
  import { RunQuery, LogError, LogStatus } from '@memberjunction/core';
16
- import { RequireSystemUser } from '../directives/RequireSystemUser.js';
17
16
  import { GetReadOnlyProvider } from '../util.js';
18
17
  import { ResolverBase } from '../generic/ResolverBase.js';
19
18
  /**
@@ -121,7 +120,7 @@ export { TestQuerySQLResult };
121
120
  * enabling external systems (e.g., Skip-Brain) to test query SQL before saving to the database.
122
121
  *
123
122
  * Security:
124
- * - Requires system user authentication (@RequireSystemUser)
123
+ * - Requires `query:test` scope for API key users (no-op for JWT auth)
125
124
  * - Uses read-only database connection (no mutation possible)
126
125
  * - Enforces MaxRows limit (default 100) to prevent unbounded queries
127
126
  *
@@ -130,6 +129,7 @@ export { TestQuerySQLResult };
130
129
  let TestQuerySQLResolver = class TestQuerySQLResolver extends ResolverBase {
131
130
  async TestQuerySQL(input, context) {
132
131
  try {
132
+ await this.CheckAPIKeyScopeAuthorization('query:test', '*', context.userPayload);
133
133
  // Use read-only provider for security — no mutation possible
134
134
  const provider = GetReadOnlyProvider(context.providers, { allowFallbackToReadWrite: false });
135
135
  if (!provider) {
@@ -172,7 +172,6 @@ let TestQuerySQLResolver = class TestQuerySQLResolver extends ResolverBase {
172
172
  }
173
173
  };
174
174
  __decorate([
175
- RequireSystemUser(),
176
175
  Query(() => TestQuerySQLResult, {
177
176
  description: 'Test transient SQL with full composition + Nunjucks template processing without requiring a saved query'
178
177
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"TestQuerySQLResolver.js","sourceRoot":"","sources":["../../src/resolvers/TestQuerySQLResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TestQuerySQLResolver.js","sourceRoot":"","sources":["../../src/resolvers/TestQuerySQLResolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,86 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * @fileoverview Meeting-Room recording registration — the server-side path that closes the LiveKit
3
+ * meeting-room recording loop. After a room's composite egress completes, this module:
4
+ *
5
+ * 1. Resolves the **Meeting-Room Conversation** for the room (prefer by `EgressID`, fall back to the
6
+ * room name → `ExternalID` + `Type='Meeting Room'`, else create one via the sink's pattern).
7
+ * 2. Resolves the **meeting-recording storage account** — a configured `MJStorage` account that points
8
+ * at the same sink LiveKit egress wrote the MP4 to, so MJ can read/stream it.
9
+ * 3. Creates the `MJ: Files` row for the recording (v1 points DIRECTLY at the egress output — no byte
10
+ * copy — so playback streams straight from the sink). An OPTIONAL copy-to-canonical path (OFF by
11
+ * default, behind config) reads the bytes and re-uploads into a separate canonical provider.
12
+ * 4. Stamps `Conversation.RecordingFileID` (+ `EgressID`) and saves.
13
+ *
14
+ * Lives in `@memberjunction/server` (the one package that depends on the egress service, MJStorage, and
15
+ * core-entities). It is invoked from `RealtimeBridgeResolver.StopLiveKitRecording`. Everything is
16
+ * best-effort: any failure returns a non-throwing failure result and logs — a recording that fails to
17
+ * register never crashes the stop-recording mutation.
18
+ *
19
+ * ## Required configuration
20
+ *
21
+ * The egress sink and the MJStorage account must point at the **same** bucket/container so MJ can read the
22
+ * file LiveKit wrote. Configure the **provider** whose accounts target that sink via either:
23
+ *
24
+ * - env: `MJ_MEETING_RECORDING_STORAGE_PROVIDER=<MJ: File Storage Providers ID>`
25
+ * - config (`mj.config.cjs`): `meetingRecordingStorageProviderID: '<provider id>'`
26
+ *
27
+ * When unset, registration returns a clear, non-throwing failure explaining the config is required (the
28
+ * recording still stopped; it just isn't registered as a `MJ: Files` row).
29
+ *
30
+ * ### Optional copy-to-canonical ("copy into Box")
31
+ *
32
+ * To copy the MP4 OUT of the egress sink into a separate canonical provider (e.g. Box) instead of pointing
33
+ * the Files row at the sink, set a DIFFERENT provider via:
34
+ *
35
+ * - env: `MJ_MEETING_RECORDING_CANONICAL_STORAGE_PROVIDER=<provider id>`
36
+ * - config: `meetingRecordingCanonicalStorageProviderID: '<provider id>'`
37
+ *
38
+ * When set and different from the sink provider, the bytes are read from the sink and uploaded into the
39
+ * canonical provider, and the Files row points there. OFF by default.
40
+ *
41
+ * @module @memberjunction/server
42
+ * @author MemberJunction.com
43
+ */
44
+ import { IMetadataProvider, UserInfo } from '@memberjunction/core';
45
+ /** The egress output a completed recording produced — the subset of `RecordingInfo` registration needs. */
46
+ export interface MeetingRecordingEgressResult {
47
+ /** The LiveKit egress session id (correlates the recording back to the conversation). */
48
+ EgressID: string;
49
+ /** The room the recording belongs to (the LiveKit room name = the Conversation's `ExternalID`). */
50
+ RoomName: string;
51
+ /** The output MP4's path/key in the egress storage sink. Required to register; `undefined` if egress is still in progress. */
52
+ OutputLocation?: string;
53
+ /** The output file size in bytes, when the egress reported it. */
54
+ OutputSizeBytes?: number;
55
+ }
56
+ /** The outcome of registering a meeting recording. */
57
+ export interface MeetingRecordingRegistrationResult {
58
+ /** Whether the recording was registered (Files row created + Conversation stamped). */
59
+ Success: boolean;
60
+ /** A clear, human-readable explanation when {@link Success} is false (config missing, no output, save failed). */
61
+ ErrorMessage?: string;
62
+ /** The newly created `MJ: Files` row id, when {@link Success} is true. */
63
+ RecordingFileID?: string;
64
+ /** The resolved Meeting-Room Conversation id, when one was resolved/created. */
65
+ ConversationID?: string;
66
+ }
67
+ /** Config inputs for registration — env vars are read here; a host may override via the optional params. */
68
+ export interface MeetingRecordingRegistrationConfig {
69
+ /**
70
+ * The `MJ: File Storage Providers` id whose accounts target the egress sink (where LiveKit wrote the
71
+ * MP4). Falls back to `process.env.MJ_MEETING_RECORDING_STORAGE_PROVIDER`.
72
+ */
73
+ sinkStorageProviderID?: string;
74
+ /**
75
+ * OPTIONAL canonical provider id — when set AND different from the sink, the MP4 is copied into it and
76
+ * the Files row points there (the "copy into Box" option). Falls back to
77
+ * `process.env.MJ_MEETING_RECORDING_CANONICAL_STORAGE_PROVIDER`. OFF by default.
78
+ */
79
+ canonicalStorageProviderID?: string;
80
+ }
81
+ /**
82
+ * Registers a completed meeting recording: resolves the Meeting-Room Conversation, creates the `MJ: Files`
83
+ * row for the egress MP4, and stamps `Conversation.RecordingFileID` (+ `EgressID`). Best-effort — never
84
+ * throws; returns a failure result with a clear message instead.
85
+ *
86
+ * @param egress The completed egress result (must carry an `OutputLocation`).
87
+ * @param contextUser The authenticated user (for DB writes + credential access).
88
+ * @param provider The metadata provider servicing this request.
89
+ * @param config Optional config overrides (otherwise read from env).
90
+ */
91
+ export declare function registerMeetingRecordingFile(egress: MeetingRecordingEgressResult, contextUser: UserInfo, provider: IMetadataProvider, config?: MeetingRecordingRegistrationConfig): Promise<MeetingRecordingRegistrationResult>;
92
+ /**
93
+ * Best-effort correlation when a recording STARTS: stamps `Conversation.EgressID` onto the room's
94
+ * Meeting-Room Conversation (if it already exists) so a live recording is tracked against the room. If the
95
+ * conversation doesn't exist yet, this resolves to `false` silently — the stop-flow will resolve/create it.
96
+ * Never throws.
97
+ *
98
+ * @param roomName The LiveKit room name (= the Conversation's `ExternalID`).
99
+ * @param egressID The egress id that just started.
100
+ * @param contextUser The authenticated user.
101
+ * @param provider The metadata provider.
102
+ * @returns `true` when an existing conversation was stamped, else `false`.
103
+ */
104
+ export declare function correlateRecordingStart(roomName: string, egressID: string, contextUser: UserInfo, provider: IMetadataProvider): Promise<boolean>;
105
+ /**
106
+ * Resolves the Meeting-Room Conversation for a completed recording: prefer matching by `EgressID` (set on
107
+ * start), fall back to the room name (`ExternalID` + `Type`), else create one following the transcript
108
+ * sink's pattern (scoped `Application` so it stays out of the normal chat list).
109
+ */
110
+ export declare function resolveMeetingConversation(egress: MeetingRecordingEgressResult, contextUser: UserInfo, provider: IMetadataProvider): Promise<string | null>;
111
+ /** Result of a canonical copy. */
112
+ interface CanonicalCopyResult {
113
+ Success: boolean;
114
+ ErrorMessage?: string;
115
+ ProviderKey: string;
116
+ }
117
+ /**
118
+ * OPTIONAL — copies the egress MP4 OUT of the sink account into a configured canonical provider (the "copy
119
+ * into Box" option). Reads the bytes via the sink driver's `GetObject({ fullPath })` and re-uploads them
120
+ * into the canonical provider via `FileStorageEngine.UploadFile`. Returns the canonical `ProviderKey`.
121
+ */
122
+ export declare function copyEgressOutputToCanonical(outputLocation: string, sinkAccountID: string, canonicalProviderID: string, contextUser: UserInfo): Promise<CanonicalCopyResult>;
123
+ export {};
124
+ //# sourceMappingURL=meetingRecordingRegistration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meetingRecordingRegistration.d.ts","sourceRoot":"","sources":["../../src/resolvers/meetingRecordingRegistration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAgC,MAAM,sBAAsB,CAAC;AAQjG,2GAA2G;AAC3G,MAAM,WAAW,4BAA4B;IAC3C,yFAAyF;IACzF,QAAQ,EAAE,MAAM,CAAC;IACjB,mGAAmG;IACnG,QAAQ,EAAE,MAAM,CAAC;IACjB,8HAA8H;IAC9H,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,sDAAsD;AACtD,MAAM,WAAW,kCAAkC;IACjD,uFAAuF;IACvF,OAAO,EAAE,OAAO,CAAC;IACjB,kHAAkH;IAClH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,4GAA4G;AAC5G,MAAM,WAAW,kCAAkC;IACjD;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED;;;;;;;;;GASG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,4BAA4B,EACpC,WAAW,EAAE,QAAQ,EACrB,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,CAAC,EAAE,kCAAkC,GAC1C,OAAO,CAAC,kCAAkC,CAAC,CAoE7C;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBtJ;AAED;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,4BAA4B,EACpC,WAAW,EAAE,QAAQ,EACrB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxB;AAiGD,kCAAkC;AAClC,UAAU,mBAAmB;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAC/C,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,mBAAmB,EAAE,MAAM,EAC3B,WAAW,EAAE,QAAQ,GACpB,OAAO,CAAC,mBAAmB,CAAC,CAwB9B"}