@tellescope/sdk 2.0.0-beta.2 → 2.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (717) hide show
  1. package/lib/cjs/sdk.d.ts +6 -5
  2. package/lib/cjs/sdk.d.ts.map +1 -1
  3. package/lib/cjs/sdk.js +5 -0
  4. package/lib/cjs/sdk.js.map +1 -1
  5. package/lib/cjs/tests/api_tests/ai_conversations.test.d.ts +14 -5
  6. package/lib/cjs/tests/api_tests/ai_conversations.test.d.ts.map +1 -1
  7. package/lib/cjs/tests/api_tests/ai_conversations.test.js +163 -149
  8. package/lib/cjs/tests/api_tests/ai_conversations.test.js.map +1 -1
  9. package/lib/cjs/tests/api_tests/ai_conversations_agent_message.test.d.ts +22 -0
  10. package/lib/cjs/tests/api_tests/ai_conversations_agent_message.test.d.ts.map +1 -0
  11. package/lib/cjs/tests/api_tests/ai_conversations_agent_message.test.js +518 -0
  12. package/lib/cjs/tests/api_tests/ai_conversations_agent_message.test.js.map +1 -0
  13. package/lib/cjs/tests/api_tests/appointment_link_expiration.test.d.ts +6 -5
  14. package/lib/cjs/tests/api_tests/appointment_link_expiration.test.d.ts.map +1 -1
  15. package/lib/cjs/tests/api_tests/appointment_link_expiration.test.js +135 -73
  16. package/lib/cjs/tests/api_tests/appointment_link_expiration.test.js.map +1 -1
  17. package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.d.ts +6 -5
  18. package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.d.ts.map +1 -1
  19. package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.js +240 -174
  20. package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.js.map +1 -1
  21. package/lib/cjs/tests/api_tests/availability_block_buffer.test.d.ts +22 -0
  22. package/lib/cjs/tests/api_tests/availability_block_buffer.test.d.ts.map +1 -0
  23. package/lib/cjs/tests/api_tests/availability_block_buffer.test.js +311 -0
  24. package/lib/cjs/tests/api_tests/availability_block_buffer.test.js.map +1 -0
  25. package/lib/cjs/tests/api_tests/beluga_manual_sync.test.d.ts +6 -5
  26. package/lib/cjs/tests/api_tests/beluga_manual_sync.test.d.ts.map +1 -1
  27. package/lib/cjs/tests/api_tests/beluga_manual_sync.test.js +235 -192
  28. package/lib/cjs/tests/api_tests/beluga_manual_sync.test.js.map +1 -1
  29. package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.d.ts +6 -5
  30. package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.d.ts.map +1 -1
  31. package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.js +351 -264
  32. package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.js.map +1 -1
  33. package/lib/cjs/tests/api_tests/bulk_assignment.test.d.ts +16 -5
  34. package/lib/cjs/tests/api_tests/bulk_assignment.test.d.ts.map +1 -1
  35. package/lib/cjs/tests/api_tests/bulk_assignment.test.js +336 -243
  36. package/lib/cjs/tests/api_tests/bulk_assignment.test.js.map +1 -1
  37. package/lib/cjs/tests/api_tests/calendar_event_references_update.test.d.ts +13 -5
  38. package/lib/cjs/tests/api_tests/calendar_event_references_update.test.d.ts.map +1 -1
  39. package/lib/cjs/tests/api_tests/calendar_event_references_update.test.js +131 -108
  40. package/lib/cjs/tests/api_tests/calendar_event_references_update.test.js.map +1 -1
  41. package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.d.ts +15 -5
  42. package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.d.ts.map +1 -1
  43. package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.js +240 -252
  44. package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.js.map +1 -1
  45. package/lib/cjs/tests/api_tests/chats_analytics.test.d.ts +14 -5
  46. package/lib/cjs/tests/api_tests/chats_analytics.test.d.ts.map +1 -1
  47. package/lib/cjs/tests/api_tests/chats_analytics.test.js +190 -189
  48. package/lib/cjs/tests/api_tests/chats_analytics.test.js.map +1 -1
  49. package/lib/cjs/tests/api_tests/concurrent_build_threads.test.d.ts +23 -5
  50. package/lib/cjs/tests/api_tests/concurrent_build_threads.test.d.ts.map +1 -1
  51. package/lib/cjs/tests/api_tests/concurrent_build_threads.test.js +121 -118
  52. package/lib/cjs/tests/api_tests/concurrent_build_threads.test.js.map +1 -1
  53. package/lib/cjs/tests/api_tests/configurations_public_read.test.d.ts +21 -5
  54. package/lib/cjs/tests/api_tests/configurations_public_read.test.d.ts.map +1 -1
  55. package/lib/cjs/tests/api_tests/configurations_public_read.test.js +235 -119
  56. package/lib/cjs/tests/api_tests/configurations_public_read.test.js.map +1 -1
  57. package/lib/cjs/tests/api_tests/copied_form_response_no_enduser_sync.test.d.ts +7 -0
  58. package/lib/cjs/tests/api_tests/copied_form_response_no_enduser_sync.test.d.ts.map +1 -0
  59. package/lib/cjs/tests/api_tests/copied_form_response_no_enduser_sync.test.js +356 -0
  60. package/lib/cjs/tests/api_tests/copied_form_response_no_enduser_sync.test.js.map +1 -0
  61. package/lib/cjs/tests/api_tests/create_note_action.test.d.ts +18 -5
  62. package/lib/cjs/tests/api_tests/create_note_action.test.d.ts.map +1 -1
  63. package/lib/cjs/tests/api_tests/create_note_action.test.js +218 -173
  64. package/lib/cjs/tests/api_tests/create_note_action.test.js.map +1 -1
  65. package/lib/cjs/tests/api_tests/create_user_notifications_trigger.test.d.ts +17 -4
  66. package/lib/cjs/tests/api_tests/create_user_notifications_trigger.test.d.ts.map +1 -1
  67. package/lib/cjs/tests/api_tests/create_user_notifications_trigger.test.js +144 -205
  68. package/lib/cjs/tests/api_tests/create_user_notifications_trigger.test.js.map +1 -1
  69. package/lib/cjs/tests/api_tests/custom_aggregation.test.d.ts +15 -5
  70. package/lib/cjs/tests/api_tests/custom_aggregation.test.d.ts.map +1 -1
  71. package/lib/cjs/tests/api_tests/custom_aggregation.test.js +284 -223
  72. package/lib/cjs/tests/api_tests/custom_aggregation.test.js.map +1 -1
  73. package/lib/cjs/tests/api_tests/database_cascade_delete.test.d.ts +13 -5
  74. package/lib/cjs/tests/api_tests/database_cascade_delete.test.d.ts.map +1 -1
  75. package/lib/cjs/tests/api_tests/database_cascade_delete.test.js +218 -242
  76. package/lib/cjs/tests/api_tests/database_cascade_delete.test.js.map +1 -1
  77. package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts +21 -5
  78. package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts.map +1 -1
  79. package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.js +168 -112
  80. package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.js.map +1 -1
  81. package/lib/cjs/tests/api_tests/elation_user_id.test.d.ts +17 -5
  82. package/lib/cjs/tests/api_tests/elation_user_id.test.d.ts.map +1 -1
  83. package/lib/cjs/tests/api_tests/elation_user_id.test.js +121 -54
  84. package/lib/cjs/tests/api_tests/elation_user_id.test.js.map +1 -1
  85. package/lib/cjs/tests/api_tests/file_download_unicode_names.test.d.ts +6 -5
  86. package/lib/cjs/tests/api_tests/file_download_unicode_names.test.d.ts.map +1 -1
  87. package/lib/cjs/tests/api_tests/file_download_unicode_names.test.js +193 -143
  88. package/lib/cjs/tests/api_tests/file_download_unicode_names.test.js.map +1 -1
  89. package/lib/cjs/tests/api_tests/form_intake_email_normalization.test.d.ts +7 -0
  90. package/lib/cjs/tests/api_tests/form_intake_email_normalization.test.d.ts.map +1 -0
  91. package/lib/cjs/tests/api_tests/form_intake_email_normalization.test.js +532 -0
  92. package/lib/cjs/tests/api_tests/form_intake_email_normalization.test.js.map +1 -0
  93. package/lib/cjs/tests/api_tests/form_submitted_trigger.test.d.ts +25 -5
  94. package/lib/cjs/tests/api_tests/form_submitted_trigger.test.d.ts.map +1 -1
  95. package/lib/cjs/tests/api_tests/form_submitted_trigger.test.js +395 -366
  96. package/lib/cjs/tests/api_tests/form_submitted_trigger.test.js.map +1 -1
  97. package/lib/cjs/tests/api_tests/form_translations.test.d.ts +6 -5
  98. package/lib/cjs/tests/api_tests/form_translations.test.d.ts.map +1 -1
  99. package/lib/cjs/tests/api_tests/form_translations.test.js +269 -189
  100. package/lib/cjs/tests/api_tests/form_translations.test.js.map +1 -1
  101. package/lib/cjs/tests/api_tests/formsort_header_auth.test.d.ts +29 -5
  102. package/lib/cjs/tests/api_tests/formsort_header_auth.test.d.ts.map +1 -1
  103. package/lib/cjs/tests/api_tests/formsort_header_auth.test.js +179 -162
  104. package/lib/cjs/tests/api_tests/formsort_header_auth.test.js.map +1 -1
  105. package/lib/cjs/tests/api_tests/gcal_sync_retry.test.d.ts +12 -6
  106. package/lib/cjs/tests/api_tests/gcal_sync_retry.test.d.ts.map +1 -1
  107. package/lib/cjs/tests/api_tests/gcal_sync_retry.test.js +98 -84
  108. package/lib/cjs/tests/api_tests/gcal_sync_retry.test.js.map +1 -1
  109. package/lib/cjs/tests/api_tests/get_some_projection.test.d.ts +20 -5
  110. package/lib/cjs/tests/api_tests/get_some_projection.test.d.ts.map +1 -1
  111. package/lib/cjs/tests/api_tests/get_some_projection.test.js +342 -298
  112. package/lib/cjs/tests/api_tests/get_some_projection.test.js.map +1 -1
  113. package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.d.ts +6 -5
  114. package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.d.ts.map +1 -1
  115. package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.js +294 -223
  116. package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.js.map +1 -1
  117. package/lib/cjs/tests/api_tests/integrations_redacted.test.d.ts +6 -5
  118. package/lib/cjs/tests/api_tests/integrations_redacted.test.d.ts.map +1 -1
  119. package/lib/cjs/tests/api_tests/integrations_redacted.test.js +307 -213
  120. package/lib/cjs/tests/api_tests/integrations_redacted.test.js.map +1 -1
  121. package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.d.ts +6 -5
  122. package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.d.ts.map +1 -1
  123. package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.js +179 -178
  124. package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.js.map +1 -1
  125. package/lib/cjs/tests/api_tests/load_team_chat.test.d.ts.map +1 -1
  126. package/lib/cjs/tests/api_tests/load_team_chat.test.js +181 -124
  127. package/lib/cjs/tests/api_tests/load_team_chat.test.js.map +1 -1
  128. package/lib/cjs/tests/api_tests/load_threads_autobuild.test.d.ts +24 -5
  129. package/lib/cjs/tests/api_tests/load_threads_autobuild.test.d.ts.map +1 -1
  130. package/lib/cjs/tests/api_tests/load_threads_autobuild.test.js +261 -227
  131. package/lib/cjs/tests/api_tests/load_threads_autobuild.test.js.map +1 -1
  132. package/lib/cjs/tests/api_tests/load_threads_care_team.test.d.ts +6 -0
  133. package/lib/cjs/tests/api_tests/load_threads_care_team.test.d.ts.map +1 -1
  134. package/lib/cjs/tests/api_tests/load_threads_care_team.test.js +115 -31
  135. package/lib/cjs/tests/api_tests/load_threads_care_team.test.js.map +1 -1
  136. package/lib/cjs/tests/api_tests/managed_content_file_access.test.d.ts +15 -5
  137. package/lib/cjs/tests/api_tests/managed_content_file_access.test.d.ts.map +1 -1
  138. package/lib/cjs/tests/api_tests/managed_content_file_access.test.js +285 -311
  139. package/lib/cjs/tests/api_tests/managed_content_file_access.test.js.map +1 -1
  140. package/lib/cjs/tests/api_tests/mdb_sort.test.d.ts +20 -5
  141. package/lib/cjs/tests/api_tests/mdb_sort.test.d.ts.map +1 -1
  142. package/lib/cjs/tests/api_tests/mdb_sort.test.js +361 -305
  143. package/lib/cjs/tests/api_tests/mdb_sort.test.js.map +1 -1
  144. package/lib/cjs/tests/api_tests/mdi_manual_sync.test.d.ts +27 -0
  145. package/lib/cjs/tests/api_tests/mdi_manual_sync.test.d.ts.map +1 -0
  146. package/lib/cjs/tests/api_tests/mdi_manual_sync.test.js +395 -0
  147. package/lib/cjs/tests/api_tests/mdi_manual_sync.test.js.map +1 -0
  148. package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.d.ts +6 -5
  149. package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.d.ts.map +1 -1
  150. package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.js +259 -209
  151. package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.js.map +1 -1
  152. package/lib/cjs/tests/api_tests/mdi_webhooks.test.d.ts +12 -5
  153. package/lib/cjs/tests/api_tests/mdi_webhooks.test.d.ts.map +1 -1
  154. package/lib/cjs/tests/api_tests/mdi_webhooks.test.js +67 -61
  155. package/lib/cjs/tests/api_tests/mdi_webhooks.test.js.map +1 -1
  156. package/lib/cjs/tests/api_tests/message_assignment_trigger.test.d.ts +23 -14
  157. package/lib/cjs/tests/api_tests/message_assignment_trigger.test.d.ts.map +1 -1
  158. package/lib/cjs/tests/api_tests/message_assignment_trigger.test.js +258 -306
  159. package/lib/cjs/tests/api_tests/message_assignment_trigger.test.js.map +1 -1
  160. package/lib/cjs/tests/api_tests/metriport_push_form_response.test.d.ts +6 -5
  161. package/lib/cjs/tests/api_tests/metriport_push_form_response.test.d.ts.map +1 -1
  162. package/lib/cjs/tests/api_tests/metriport_push_form_response.test.js +301 -238
  163. package/lib/cjs/tests/api_tests/metriport_push_form_response.test.js.map +1 -1
  164. package/lib/cjs/tests/api_tests/organization_api_keys.test.d.ts.map +1 -1
  165. package/lib/cjs/tests/api_tests/organization_api_keys.test.js +226 -59
  166. package/lib/cjs/tests/api_tests/organization_api_keys.test.js.map +1 -1
  167. package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.d.ts +19 -5
  168. package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.d.ts.map +1 -1
  169. package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.js +335 -222
  170. package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.js.map +1 -1
  171. package/lib/cjs/tests/api_tests/organization_signup.test.d.ts.map +1 -1
  172. package/lib/cjs/tests/api_tests/organization_signup.test.js +218 -51
  173. package/lib/cjs/tests/api_tests/organization_signup.test.js.map +1 -1
  174. package/lib/cjs/tests/api_tests/out_of_office_endpoint.test.d.ts.map +1 -1
  175. package/lib/cjs/tests/api_tests/out_of_office_endpoint.test.js +109 -1
  176. package/lib/cjs/tests/api_tests/out_of_office_endpoint.test.js.map +1 -1
  177. package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.d.ts +6 -6
  178. package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.d.ts.map +1 -1
  179. package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.js +309 -361
  180. package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.js.map +1 -1
  181. package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.d.ts +6 -5
  182. package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.d.ts.map +1 -1
  183. package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.js +246 -165
  184. package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.js.map +1 -1
  185. package/lib/cjs/tests/api_tests/phone_calls_conference_hold.test.d.ts +15 -5
  186. package/lib/cjs/tests/api_tests/phone_calls_conference_hold.test.d.ts.map +1 -1
  187. package/lib/cjs/tests/api_tests/phone_calls_conference_hold.test.js +130 -47
  188. package/lib/cjs/tests/api_tests/phone_calls_conference_hold.test.js.map +1 -1
  189. package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.d.ts +6 -5
  190. package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.d.ts.map +1 -1
  191. package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.js +180 -132
  192. package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.js.map +1 -1
  193. package/lib/cjs/tests/api_tests/programs.test.d.ts.map +1 -1
  194. package/lib/cjs/tests/api_tests/programs.test.js +417 -50
  195. package/lib/cjs/tests/api_tests/programs.test.js.map +1 -1
  196. package/lib/cjs/tests/api_tests/security/ai-conversations-rbac.test.d.ts +10 -5
  197. package/lib/cjs/tests/api_tests/security/ai-conversations-rbac.test.d.ts.map +1 -1
  198. package/lib/cjs/tests/api_tests/security/ai-conversations-rbac.test.js +401 -282
  199. package/lib/cjs/tests/api_tests/security/ai-conversations-rbac.test.js.map +1 -1
  200. package/lib/cjs/tests/api_tests/security/automated-actions-process-gate.test.d.ts +9 -5
  201. package/lib/cjs/tests/api_tests/security/automated-actions-process-gate.test.d.ts.map +1 -1
  202. package/lib/cjs/tests/api_tests/security/automated-actions-process-gate.test.js +228 -211
  203. package/lib/cjs/tests/api_tests/security/automated-actions-process-gate.test.js.map +1 -1
  204. package/lib/cjs/tests/api_tests/security/booking-info-idor-token-mint.test.d.ts +13 -8
  205. package/lib/cjs/tests/api_tests/security/booking-info-idor-token-mint.test.d.ts.map +1 -1
  206. package/lib/cjs/tests/api_tests/security/booking-info-idor-token-mint.test.js +270 -254
  207. package/lib/cjs/tests/api_tests/security/booking-info-idor-token-mint.test.js.map +1 -1
  208. package/lib/cjs/tests/api_tests/security/cascade-role-rename-cross-tenant.test.d.ts +16 -6
  209. package/lib/cjs/tests/api_tests/security/cascade-role-rename-cross-tenant.test.d.ts.map +1 -1
  210. package/lib/cjs/tests/api_tests/security/cascade-role-rename-cross-tenant.test.js +167 -142
  211. package/lib/cjs/tests/api_tests/security/cascade-role-rename-cross-tenant.test.js.map +1 -1
  212. package/lib/cjs/tests/api_tests/security/data-sync-redaction-bypass.test.d.ts +10 -5
  213. package/lib/cjs/tests/api_tests/security/data-sync-redaction-bypass.test.d.ts.map +1 -1
  214. package/lib/cjs/tests/api_tests/security/data-sync-redaction-bypass.test.js +296 -221
  215. package/lib/cjs/tests/api_tests/security/data-sync-redaction-bypass.test.js.map +1 -1
  216. package/lib/cjs/tests/api_tests/security/develop-health-benefit-verification-rbac.test.d.ts +12 -5
  217. package/lib/cjs/tests/api_tests/security/develop-health-benefit-verification-rbac.test.d.ts.map +1 -1
  218. package/lib/cjs/tests/api_tests/security/develop-health-benefit-verification-rbac.test.js +221 -216
  219. package/lib/cjs/tests/api_tests/security/develop-health-benefit-verification-rbac.test.js.map +1 -1
  220. package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts +11 -5
  221. package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts.map +1 -1
  222. package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js +300 -203
  223. package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js.map +1 -1
  224. package/lib/cjs/tests/api_tests/security/enduser-cross-create.test.d.ts +11 -5
  225. package/lib/cjs/tests/api_tests/security/enduser-cross-create.test.d.ts.map +1 -1
  226. package/lib/cjs/tests/api_tests/security/enduser-cross-create.test.js +415 -275
  227. package/lib/cjs/tests/api_tests/security/enduser-cross-create.test.js.map +1 -1
  228. package/lib/cjs/tests/api_tests/security/enduser-write-restrictions.test.d.ts +11 -5
  229. package/lib/cjs/tests/api_tests/security/enduser-write-restrictions.test.d.ts.map +1 -1
  230. package/lib/cjs/tests/api_tests/security/enduser-write-restrictions.test.js +347 -228
  231. package/lib/cjs/tests/api_tests/security/enduser-write-restrictions.test.js.map +1 -1
  232. package/lib/cjs/tests/api_tests/security/globalunique-conflict-redaction.test.d.ts +18 -7
  233. package/lib/cjs/tests/api_tests/security/globalunique-conflict-redaction.test.d.ts.map +1 -1
  234. package/lib/cjs/tests/api_tests/security/globalunique-conflict-redaction.test.js +164 -75
  235. package/lib/cjs/tests/api_tests/security/globalunique-conflict-redaction.test.js.map +1 -1
  236. package/lib/cjs/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.d.ts +15 -9
  237. package/lib/cjs/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.d.ts.map +1 -1
  238. package/lib/cjs/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.js +99 -102
  239. package/lib/cjs/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.js.map +1 -1
  240. package/lib/cjs/tests/api_tests/security/load-inbox-redaction.test.d.ts +11 -5
  241. package/lib/cjs/tests/api_tests/security/load-inbox-redaction.test.d.ts.map +1 -1
  242. package/lib/cjs/tests/api_tests/security/load-inbox-redaction.test.js +132 -89
  243. package/lib/cjs/tests/api_tests/security/load-inbox-redaction.test.js.map +1 -1
  244. package/lib/cjs/tests/api_tests/security/proxy-image-unauth-ssrf.test.d.ts +12 -5
  245. package/lib/cjs/tests/api_tests/security/proxy-image-unauth-ssrf.test.d.ts.map +1 -1
  246. package/lib/cjs/tests/api_tests/security/proxy-image-unauth-ssrf.test.js +190 -138
  247. package/lib/cjs/tests/api_tests/security/proxy-image-unauth-ssrf.test.js.map +1 -1
  248. package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.d.ts +18 -16
  249. package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.d.ts.map +1 -1
  250. package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.js +164 -124
  251. package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.js.map +1 -1
  252. package/lib/cjs/tests/api_tests/security/sanitize-user-html-with-iframes.test.d.ts.map +1 -1
  253. package/lib/cjs/tests/api_tests/security/sanitize-user-html-with-iframes.test.js +122 -2
  254. package/lib/cjs/tests/api_tests/security/sanitize-user-html-with-iframes.test.js.map +1 -1
  255. package/lib/cjs/tests/api_tests/security/schema-adminonly-enforcement.test.d.ts +11 -5
  256. package/lib/cjs/tests/api_tests/security/schema-adminonly-enforcement.test.d.ts.map +1 -1
  257. package/lib/cjs/tests/api_tests/security/schema-adminonly-enforcement.test.js +288 -274
  258. package/lib/cjs/tests/api_tests/security/schema-adminonly-enforcement.test.js.map +1 -1
  259. package/lib/cjs/tests/api_tests/security/self-admin-role-assignment.test.d.ts +17 -10
  260. package/lib/cjs/tests/api_tests/security/self-admin-role-assignment.test.d.ts.map +1 -1
  261. package/lib/cjs/tests/api_tests/security/self-admin-role-assignment.test.js +173 -138
  262. package/lib/cjs/tests/api_tests/security/self-admin-role-assignment.test.js.map +1 -1
  263. package/lib/cjs/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.d.ts +6 -5
  264. package/lib/cjs/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.d.ts.map +1 -1
  265. package/lib/cjs/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.js +310 -265
  266. package/lib/cjs/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.js.map +1 -1
  267. package/lib/cjs/tests/api_tests/security/webhook-timeout.test.d.ts +9 -5
  268. package/lib/cjs/tests/api_tests/security/webhook-timeout.test.d.ts.map +1 -1
  269. package/lib/cjs/tests/api_tests/security/webhook-timeout.test.js +108 -83
  270. package/lib/cjs/tests/api_tests/security/webhook-timeout.test.js.map +1 -1
  271. package/lib/cjs/tests/api_tests/stedi_approval.test.d.ts +6 -5
  272. package/lib/cjs/tests/api_tests/stedi_approval.test.d.ts.map +1 -1
  273. package/lib/cjs/tests/api_tests/stedi_approval.test.js +206 -137
  274. package/lib/cjs/tests/api_tests/stedi_approval.test.js.map +1 -1
  275. package/lib/cjs/tests/api_tests/ticket_stage_archive.test.d.ts +7 -0
  276. package/lib/cjs/tests/api_tests/ticket_stage_archive.test.d.ts.map +1 -0
  277. package/lib/cjs/tests/api_tests/ticket_stage_archive.test.js +344 -0
  278. package/lib/cjs/tests/api_tests/ticket_stage_archive.test.js.map +1 -0
  279. package/lib/cjs/tests/api_tests/tickets_bulk_assign_care_team.test.d.ts +6 -5
  280. package/lib/cjs/tests/api_tests/tickets_bulk_assign_care_team.test.d.ts.map +1 -1
  281. package/lib/cjs/tests/api_tests/tickets_bulk_assign_care_team.test.js +165 -149
  282. package/lib/cjs/tests/api_tests/tickets_bulk_assign_care_team.test.js.map +1 -1
  283. package/lib/cjs/tests/api_tests/translations.test.d.ts +6 -5
  284. package/lib/cjs/tests/api_tests/translations.test.d.ts.map +1 -1
  285. package/lib/cjs/tests/api_tests/translations.test.js +104 -75
  286. package/lib/cjs/tests/api_tests/translations.test.js.map +1 -1
  287. package/lib/cjs/tests/api_tests/trigger_set_fields_date_difference.test.d.ts +21 -4
  288. package/lib/cjs/tests/api_tests/trigger_set_fields_date_difference.test.d.ts.map +1 -1
  289. package/lib/cjs/tests/api_tests/trigger_set_fields_date_difference.test.js +238 -370
  290. package/lib/cjs/tests/api_tests/trigger_set_fields_date_difference.test.js.map +1 -1
  291. package/lib/cjs/tests/api_tests/user_preferences.test.d.ts +30 -0
  292. package/lib/cjs/tests/api_tests/user_preferences.test.d.ts.map +1 -0
  293. package/lib/cjs/tests/api_tests/user_preferences.test.js +279 -0
  294. package/lib/cjs/tests/api_tests/user_preferences.test.js.map +1 -0
  295. package/lib/cjs/tests/api_tests/webhook_error_handling.test.d.ts +17 -5
  296. package/lib/cjs/tests/api_tests/webhook_error_handling.test.d.ts.map +1 -1
  297. package/lib/cjs/tests/api_tests/webhook_error_handling.test.js +204 -195
  298. package/lib/cjs/tests/api_tests/webhook_error_handling.test.js.map +1 -1
  299. package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.d.ts +15 -5
  300. package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.d.ts.map +1 -1
  301. package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.js +154 -179
  302. package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.js.map +1 -1
  303. package/lib/cjs/tests/api_tests/welle_partner_token.test.d.ts +6 -5
  304. package/lib/cjs/tests/api_tests/welle_partner_token.test.d.ts.map +1 -1
  305. package/lib/cjs/tests/api_tests/welle_partner_token.test.js +393 -251
  306. package/lib/cjs/tests/api_tests/welle_partner_token.test.js.map +1 -1
  307. package/lib/cjs/tests/setup_isolated.d.ts +7 -0
  308. package/lib/cjs/tests/setup_isolated.d.ts.map +1 -1
  309. package/lib/cjs/tests/setup_isolated.js.map +1 -1
  310. package/lib/cjs/tests/tests.d.ts.map +1 -1
  311. package/lib/cjs/tests/tests.js +229 -461
  312. package/lib/cjs/tests/tests.js.map +1 -1
  313. package/lib/cjs/tests/unit_tests/date_string_validation.test.d.ts +2 -0
  314. package/lib/cjs/tests/unit_tests/date_string_validation.test.d.ts.map +1 -0
  315. package/lib/cjs/tests/unit_tests/date_string_validation.test.js +112 -0
  316. package/lib/cjs/tests/unit_tests/date_string_validation.test.js.map +1 -0
  317. package/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  318. package/lib/esm/sdk.d.ts +6 -5
  319. package/lib/esm/sdk.d.ts.map +1 -1
  320. package/lib/esm/sdk.js +5 -0
  321. package/lib/esm/sdk.js.map +1 -1
  322. package/lib/esm/tests/api_tests/ai_conversations.test.d.ts +14 -5
  323. package/lib/esm/tests/api_tests/ai_conversations.test.d.ts.map +1 -1
  324. package/lib/esm/tests/api_tests/ai_conversations.test.js +161 -148
  325. package/lib/esm/tests/api_tests/ai_conversations.test.js.map +1 -1
  326. package/lib/esm/tests/api_tests/ai_conversations_agent_message.test.d.ts +22 -0
  327. package/lib/esm/tests/api_tests/ai_conversations_agent_message.test.d.ts.map +1 -0
  328. package/lib/esm/tests/api_tests/ai_conversations_agent_message.test.js +510 -0
  329. package/lib/esm/tests/api_tests/ai_conversations_agent_message.test.js.map +1 -0
  330. package/lib/esm/tests/api_tests/appointment_link_expiration.test.d.ts +6 -5
  331. package/lib/esm/tests/api_tests/appointment_link_expiration.test.d.ts.map +1 -1
  332. package/lib/esm/tests/api_tests/appointment_link_expiration.test.js +132 -71
  333. package/lib/esm/tests/api_tests/appointment_link_expiration.test.js.map +1 -1
  334. package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.d.ts +6 -5
  335. package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.d.ts.map +1 -1
  336. package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.js +238 -173
  337. package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.js.map +1 -1
  338. package/lib/esm/tests/api_tests/availability_block_buffer.test.d.ts +22 -0
  339. package/lib/esm/tests/api_tests/availability_block_buffer.test.d.ts.map +1 -0
  340. package/lib/esm/tests/api_tests/availability_block_buffer.test.js +306 -0
  341. package/lib/esm/tests/api_tests/availability_block_buffer.test.js.map +1 -0
  342. package/lib/esm/tests/api_tests/beluga_manual_sync.test.d.ts +6 -5
  343. package/lib/esm/tests/api_tests/beluga_manual_sync.test.d.ts.map +1 -1
  344. package/lib/esm/tests/api_tests/beluga_manual_sync.test.js +232 -190
  345. package/lib/esm/tests/api_tests/beluga_manual_sync.test.js.map +1 -1
  346. package/lib/esm/tests/api_tests/beluga_trigger_refill.test.d.ts +6 -5
  347. package/lib/esm/tests/api_tests/beluga_trigger_refill.test.d.ts.map +1 -1
  348. package/lib/esm/tests/api_tests/beluga_trigger_refill.test.js +348 -262
  349. package/lib/esm/tests/api_tests/beluga_trigger_refill.test.js.map +1 -1
  350. package/lib/esm/tests/api_tests/bulk_assignment.test.d.ts +16 -5
  351. package/lib/esm/tests/api_tests/bulk_assignment.test.d.ts.map +1 -1
  352. package/lib/esm/tests/api_tests/bulk_assignment.test.js +333 -241
  353. package/lib/esm/tests/api_tests/bulk_assignment.test.js.map +1 -1
  354. package/lib/esm/tests/api_tests/calendar_event_references_update.test.d.ts +13 -5
  355. package/lib/esm/tests/api_tests/calendar_event_references_update.test.d.ts.map +1 -1
  356. package/lib/esm/tests/api_tests/calendar_event_references_update.test.js +129 -107
  357. package/lib/esm/tests/api_tests/calendar_event_references_update.test.js.map +1 -1
  358. package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.d.ts +15 -5
  359. package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.d.ts.map +1 -1
  360. package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.js +238 -251
  361. package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.js.map +1 -1
  362. package/lib/esm/tests/api_tests/chats_analytics.test.d.ts +14 -5
  363. package/lib/esm/tests/api_tests/chats_analytics.test.d.ts.map +1 -1
  364. package/lib/esm/tests/api_tests/chats_analytics.test.js +188 -188
  365. package/lib/esm/tests/api_tests/chats_analytics.test.js.map +1 -1
  366. package/lib/esm/tests/api_tests/concurrent_build_threads.test.d.ts +23 -5
  367. package/lib/esm/tests/api_tests/concurrent_build_threads.test.d.ts.map +1 -1
  368. package/lib/esm/tests/api_tests/concurrent_build_threads.test.js +119 -117
  369. package/lib/esm/tests/api_tests/concurrent_build_threads.test.js.map +1 -1
  370. package/lib/esm/tests/api_tests/configurations_public_read.test.d.ts +21 -5
  371. package/lib/esm/tests/api_tests/configurations_public_read.test.d.ts.map +1 -1
  372. package/lib/esm/tests/api_tests/configurations_public_read.test.js +233 -118
  373. package/lib/esm/tests/api_tests/configurations_public_read.test.js.map +1 -1
  374. package/lib/esm/tests/api_tests/copied_form_response_no_enduser_sync.test.d.ts +7 -0
  375. package/lib/esm/tests/api_tests/copied_form_response_no_enduser_sync.test.d.ts.map +1 -0
  376. package/lib/esm/tests/api_tests/copied_form_response_no_enduser_sync.test.js +351 -0
  377. package/lib/esm/tests/api_tests/copied_form_response_no_enduser_sync.test.js.map +1 -0
  378. package/lib/esm/tests/api_tests/create_note_action.test.d.ts +18 -5
  379. package/lib/esm/tests/api_tests/create_note_action.test.d.ts.map +1 -1
  380. package/lib/esm/tests/api_tests/create_note_action.test.js +216 -172
  381. package/lib/esm/tests/api_tests/create_note_action.test.js.map +1 -1
  382. package/lib/esm/tests/api_tests/create_user_notifications_trigger.test.d.ts +17 -4
  383. package/lib/esm/tests/api_tests/create_user_notifications_trigger.test.d.ts.map +1 -1
  384. package/lib/esm/tests/api_tests/create_user_notifications_trigger.test.js +141 -203
  385. package/lib/esm/tests/api_tests/create_user_notifications_trigger.test.js.map +1 -1
  386. package/lib/esm/tests/api_tests/custom_aggregation.test.d.ts +15 -5
  387. package/lib/esm/tests/api_tests/custom_aggregation.test.d.ts.map +1 -1
  388. package/lib/esm/tests/api_tests/custom_aggregation.test.js +282 -222
  389. package/lib/esm/tests/api_tests/custom_aggregation.test.js.map +1 -1
  390. package/lib/esm/tests/api_tests/database_cascade_delete.test.d.ts +13 -5
  391. package/lib/esm/tests/api_tests/database_cascade_delete.test.d.ts.map +1 -1
  392. package/lib/esm/tests/api_tests/database_cascade_delete.test.js +216 -241
  393. package/lib/esm/tests/api_tests/database_cascade_delete.test.js.map +1 -1
  394. package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts +21 -5
  395. package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts.map +1 -1
  396. package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.js +165 -110
  397. package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.js.map +1 -1
  398. package/lib/esm/tests/api_tests/elation_user_id.test.d.ts +17 -5
  399. package/lib/esm/tests/api_tests/elation_user_id.test.d.ts.map +1 -1
  400. package/lib/esm/tests/api_tests/elation_user_id.test.js +119 -53
  401. package/lib/esm/tests/api_tests/elation_user_id.test.js.map +1 -1
  402. package/lib/esm/tests/api_tests/file_download_unicode_names.test.d.ts +6 -5
  403. package/lib/esm/tests/api_tests/file_download_unicode_names.test.d.ts.map +1 -1
  404. package/lib/esm/tests/api_tests/file_download_unicode_names.test.js +190 -141
  405. package/lib/esm/tests/api_tests/file_download_unicode_names.test.js.map +1 -1
  406. package/lib/esm/tests/api_tests/form_intake_email_normalization.test.d.ts +7 -0
  407. package/lib/esm/tests/api_tests/form_intake_email_normalization.test.d.ts.map +1 -0
  408. package/lib/esm/tests/api_tests/form_intake_email_normalization.test.js +527 -0
  409. package/lib/esm/tests/api_tests/form_intake_email_normalization.test.js.map +1 -0
  410. package/lib/esm/tests/api_tests/form_submitted_trigger.test.d.ts +25 -5
  411. package/lib/esm/tests/api_tests/form_submitted_trigger.test.d.ts.map +1 -1
  412. package/lib/esm/tests/api_tests/form_submitted_trigger.test.js +393 -365
  413. package/lib/esm/tests/api_tests/form_submitted_trigger.test.js.map +1 -1
  414. package/lib/esm/tests/api_tests/form_translations.test.d.ts +6 -5
  415. package/lib/esm/tests/api_tests/form_translations.test.d.ts.map +1 -1
  416. package/lib/esm/tests/api_tests/form_translations.test.js +268 -189
  417. package/lib/esm/tests/api_tests/form_translations.test.js.map +1 -1
  418. package/lib/esm/tests/api_tests/formsort_header_auth.test.d.ts +29 -5
  419. package/lib/esm/tests/api_tests/formsort_header_auth.test.d.ts.map +1 -1
  420. package/lib/esm/tests/api_tests/formsort_header_auth.test.js +177 -161
  421. package/lib/esm/tests/api_tests/formsort_header_auth.test.js.map +1 -1
  422. package/lib/esm/tests/api_tests/gcal_sync_retry.test.d.ts +12 -6
  423. package/lib/esm/tests/api_tests/gcal_sync_retry.test.d.ts.map +1 -1
  424. package/lib/esm/tests/api_tests/gcal_sync_retry.test.js +96 -83
  425. package/lib/esm/tests/api_tests/gcal_sync_retry.test.js.map +1 -1
  426. package/lib/esm/tests/api_tests/get_some_projection.test.d.ts +20 -5
  427. package/lib/esm/tests/api_tests/get_some_projection.test.d.ts.map +1 -1
  428. package/lib/esm/tests/api_tests/get_some_projection.test.js +339 -296
  429. package/lib/esm/tests/api_tests/get_some_projection.test.js.map +1 -1
  430. package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.d.ts +6 -5
  431. package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.d.ts.map +1 -1
  432. package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.js +292 -222
  433. package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.js.map +1 -1
  434. package/lib/esm/tests/api_tests/integrations_redacted.test.d.ts +6 -5
  435. package/lib/esm/tests/api_tests/integrations_redacted.test.d.ts.map +1 -1
  436. package/lib/esm/tests/api_tests/integrations_redacted.test.js +304 -211
  437. package/lib/esm/tests/api_tests/integrations_redacted.test.js.map +1 -1
  438. package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.d.ts +6 -5
  439. package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.d.ts.map +1 -1
  440. package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.js +177 -154
  441. package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.js.map +1 -1
  442. package/lib/esm/tests/api_tests/load_team_chat.test.d.ts.map +1 -1
  443. package/lib/esm/tests/api_tests/load_team_chat.test.js +181 -124
  444. package/lib/esm/tests/api_tests/load_team_chat.test.js.map +1 -1
  445. package/lib/esm/tests/api_tests/load_threads_autobuild.test.d.ts +24 -5
  446. package/lib/esm/tests/api_tests/load_threads_autobuild.test.d.ts.map +1 -1
  447. package/lib/esm/tests/api_tests/load_threads_autobuild.test.js +259 -226
  448. package/lib/esm/tests/api_tests/load_threads_autobuild.test.js.map +1 -1
  449. package/lib/esm/tests/api_tests/load_threads_care_team.test.d.ts +6 -0
  450. package/lib/esm/tests/api_tests/load_threads_care_team.test.d.ts.map +1 -1
  451. package/lib/esm/tests/api_tests/load_threads_care_team.test.js +115 -31
  452. package/lib/esm/tests/api_tests/load_threads_care_team.test.js.map +1 -1
  453. package/lib/esm/tests/api_tests/managed_content_file_access.test.d.ts +15 -5
  454. package/lib/esm/tests/api_tests/managed_content_file_access.test.d.ts.map +1 -1
  455. package/lib/esm/tests/api_tests/managed_content_file_access.test.js +283 -287
  456. package/lib/esm/tests/api_tests/managed_content_file_access.test.js.map +1 -1
  457. package/lib/esm/tests/api_tests/mdb_sort.test.d.ts +20 -5
  458. package/lib/esm/tests/api_tests/mdb_sort.test.d.ts.map +1 -1
  459. package/lib/esm/tests/api_tests/mdb_sort.test.js +358 -303
  460. package/lib/esm/tests/api_tests/mdb_sort.test.js.map +1 -1
  461. package/lib/esm/tests/api_tests/mdi_manual_sync.test.d.ts +27 -0
  462. package/lib/esm/tests/api_tests/mdi_manual_sync.test.d.ts.map +1 -0
  463. package/lib/esm/tests/api_tests/mdi_manual_sync.test.js +390 -0
  464. package/lib/esm/tests/api_tests/mdi_manual_sync.test.js.map +1 -0
  465. package/lib/esm/tests/api_tests/mdi_trigger_refill.test.d.ts +6 -5
  466. package/lib/esm/tests/api_tests/mdi_trigger_refill.test.d.ts.map +1 -1
  467. package/lib/esm/tests/api_tests/mdi_trigger_refill.test.js +257 -208
  468. package/lib/esm/tests/api_tests/mdi_trigger_refill.test.js.map +1 -1
  469. package/lib/esm/tests/api_tests/mdi_webhooks.test.d.ts +12 -5
  470. package/lib/esm/tests/api_tests/mdi_webhooks.test.d.ts.map +1 -1
  471. package/lib/esm/tests/api_tests/mdi_webhooks.test.js +65 -60
  472. package/lib/esm/tests/api_tests/mdi_webhooks.test.js.map +1 -1
  473. package/lib/esm/tests/api_tests/message_assignment_trigger.test.d.ts +23 -14
  474. package/lib/esm/tests/api_tests/message_assignment_trigger.test.d.ts.map +1 -1
  475. package/lib/esm/tests/api_tests/message_assignment_trigger.test.js +256 -305
  476. package/lib/esm/tests/api_tests/message_assignment_trigger.test.js.map +1 -1
  477. package/lib/esm/tests/api_tests/metriport_push_form_response.test.d.ts +6 -5
  478. package/lib/esm/tests/api_tests/metriport_push_form_response.test.d.ts.map +1 -1
  479. package/lib/esm/tests/api_tests/metriport_push_form_response.test.js +298 -236
  480. package/lib/esm/tests/api_tests/metriport_push_form_response.test.js.map +1 -1
  481. package/lib/esm/tests/api_tests/organization_api_keys.test.d.ts.map +1 -1
  482. package/lib/esm/tests/api_tests/organization_api_keys.test.js +226 -59
  483. package/lib/esm/tests/api_tests/organization_api_keys.test.js.map +1 -1
  484. package/lib/esm/tests/api_tests/organization_settings_duplicates.test.d.ts +19 -5
  485. package/lib/esm/tests/api_tests/organization_settings_duplicates.test.d.ts.map +1 -1
  486. package/lib/esm/tests/api_tests/organization_settings_duplicates.test.js +332 -220
  487. package/lib/esm/tests/api_tests/organization_settings_duplicates.test.js.map +1 -1
  488. package/lib/esm/tests/api_tests/organization_signup.test.d.ts.map +1 -1
  489. package/lib/esm/tests/api_tests/organization_signup.test.js +218 -51
  490. package/lib/esm/tests/api_tests/organization_signup.test.js.map +1 -1
  491. package/lib/esm/tests/api_tests/out_of_office_endpoint.test.d.ts.map +1 -1
  492. package/lib/esm/tests/api_tests/out_of_office_endpoint.test.js +109 -1
  493. package/lib/esm/tests/api_tests/out_of_office_endpoint.test.js.map +1 -1
  494. package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.d.ts +6 -6
  495. package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.d.ts.map +1 -1
  496. package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.js +308 -361
  497. package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.js.map +1 -1
  498. package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.d.ts +6 -5
  499. package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.d.ts.map +1 -1
  500. package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.js +243 -163
  501. package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.js.map +1 -1
  502. package/lib/esm/tests/api_tests/phone_calls_conference_hold.test.d.ts +15 -5
  503. package/lib/esm/tests/api_tests/phone_calls_conference_hold.test.d.ts.map +1 -1
  504. package/lib/esm/tests/api_tests/phone_calls_conference_hold.test.js +127 -45
  505. package/lib/esm/tests/api_tests/phone_calls_conference_hold.test.js.map +1 -1
  506. package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.d.ts +6 -5
  507. package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.d.ts.map +1 -1
  508. package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.js +177 -130
  509. package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.js.map +1 -1
  510. package/lib/esm/tests/api_tests/programs.test.d.ts.map +1 -1
  511. package/lib/esm/tests/api_tests/programs.test.js +417 -50
  512. package/lib/esm/tests/api_tests/programs.test.js.map +1 -1
  513. package/lib/esm/tests/api_tests/security/ai-conversations-rbac.test.d.ts +10 -5
  514. package/lib/esm/tests/api_tests/security/ai-conversations-rbac.test.d.ts.map +1 -1
  515. package/lib/esm/tests/api_tests/security/ai-conversations-rbac.test.js +399 -281
  516. package/lib/esm/tests/api_tests/security/ai-conversations-rbac.test.js.map +1 -1
  517. package/lib/esm/tests/api_tests/security/automated-actions-process-gate.test.d.ts +9 -5
  518. package/lib/esm/tests/api_tests/security/automated-actions-process-gate.test.d.ts.map +1 -1
  519. package/lib/esm/tests/api_tests/security/automated-actions-process-gate.test.js +225 -209
  520. package/lib/esm/tests/api_tests/security/automated-actions-process-gate.test.js.map +1 -1
  521. package/lib/esm/tests/api_tests/security/booking-info-idor-token-mint.test.d.ts +13 -8
  522. package/lib/esm/tests/api_tests/security/booking-info-idor-token-mint.test.d.ts.map +1 -1
  523. package/lib/esm/tests/api_tests/security/booking-info-idor-token-mint.test.js +268 -253
  524. package/lib/esm/tests/api_tests/security/booking-info-idor-token-mint.test.js.map +1 -1
  525. package/lib/esm/tests/api_tests/security/cascade-role-rename-cross-tenant.test.d.ts +16 -6
  526. package/lib/esm/tests/api_tests/security/cascade-role-rename-cross-tenant.test.d.ts.map +1 -1
  527. package/lib/esm/tests/api_tests/security/cascade-role-rename-cross-tenant.test.js +165 -141
  528. package/lib/esm/tests/api_tests/security/cascade-role-rename-cross-tenant.test.js.map +1 -1
  529. package/lib/esm/tests/api_tests/security/data-sync-redaction-bypass.test.d.ts +10 -5
  530. package/lib/esm/tests/api_tests/security/data-sync-redaction-bypass.test.d.ts.map +1 -1
  531. package/lib/esm/tests/api_tests/security/data-sync-redaction-bypass.test.js +294 -220
  532. package/lib/esm/tests/api_tests/security/data-sync-redaction-bypass.test.js.map +1 -1
  533. package/lib/esm/tests/api_tests/security/develop-health-benefit-verification-rbac.test.d.ts +12 -5
  534. package/lib/esm/tests/api_tests/security/develop-health-benefit-verification-rbac.test.d.ts.map +1 -1
  535. package/lib/esm/tests/api_tests/security/develop-health-benefit-verification-rbac.test.js +219 -215
  536. package/lib/esm/tests/api_tests/security/develop-health-benefit-verification-rbac.test.js.map +1 -1
  537. package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts +11 -5
  538. package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts.map +1 -1
  539. package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js +298 -202
  540. package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js.map +1 -1
  541. package/lib/esm/tests/api_tests/security/enduser-cross-create.test.d.ts +11 -5
  542. package/lib/esm/tests/api_tests/security/enduser-cross-create.test.d.ts.map +1 -1
  543. package/lib/esm/tests/api_tests/security/enduser-cross-create.test.js +413 -274
  544. package/lib/esm/tests/api_tests/security/enduser-cross-create.test.js.map +1 -1
  545. package/lib/esm/tests/api_tests/security/enduser-write-restrictions.test.d.ts +11 -5
  546. package/lib/esm/tests/api_tests/security/enduser-write-restrictions.test.d.ts.map +1 -1
  547. package/lib/esm/tests/api_tests/security/enduser-write-restrictions.test.js +345 -227
  548. package/lib/esm/tests/api_tests/security/enduser-write-restrictions.test.js.map +1 -1
  549. package/lib/esm/tests/api_tests/security/globalunique-conflict-redaction.test.d.ts +18 -7
  550. package/lib/esm/tests/api_tests/security/globalunique-conflict-redaction.test.d.ts.map +1 -1
  551. package/lib/esm/tests/api_tests/security/globalunique-conflict-redaction.test.js +162 -74
  552. package/lib/esm/tests/api_tests/security/globalunique-conflict-redaction.test.js.map +1 -1
  553. package/lib/esm/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.d.ts +15 -9
  554. package/lib/esm/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.d.ts.map +1 -1
  555. package/lib/esm/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.js +96 -100
  556. package/lib/esm/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.js.map +1 -1
  557. package/lib/esm/tests/api_tests/security/load-inbox-redaction.test.d.ts +11 -5
  558. package/lib/esm/tests/api_tests/security/load-inbox-redaction.test.d.ts.map +1 -1
  559. package/lib/esm/tests/api_tests/security/load-inbox-redaction.test.js +129 -87
  560. package/lib/esm/tests/api_tests/security/load-inbox-redaction.test.js.map +1 -1
  561. package/lib/esm/tests/api_tests/security/proxy-image-unauth-ssrf.test.d.ts +12 -5
  562. package/lib/esm/tests/api_tests/security/proxy-image-unauth-ssrf.test.d.ts.map +1 -1
  563. package/lib/esm/tests/api_tests/security/proxy-image-unauth-ssrf.test.js +187 -136
  564. package/lib/esm/tests/api_tests/security/proxy-image-unauth-ssrf.test.js.map +1 -1
  565. package/lib/esm/tests/api_tests/security/register_business_id_injection.test.d.ts +18 -16
  566. package/lib/esm/tests/api_tests/security/register_business_id_injection.test.d.ts.map +1 -1
  567. package/lib/esm/tests/api_tests/security/register_business_id_injection.test.js +162 -123
  568. package/lib/esm/tests/api_tests/security/register_business_id_injection.test.js.map +1 -1
  569. package/lib/esm/tests/api_tests/security/sanitize-user-html-with-iframes.test.d.ts.map +1 -1
  570. package/lib/esm/tests/api_tests/security/sanitize-user-html-with-iframes.test.js +122 -2
  571. package/lib/esm/tests/api_tests/security/sanitize-user-html-with-iframes.test.js.map +1 -1
  572. package/lib/esm/tests/api_tests/security/schema-adminonly-enforcement.test.d.ts +11 -5
  573. package/lib/esm/tests/api_tests/security/schema-adminonly-enforcement.test.d.ts.map +1 -1
  574. package/lib/esm/tests/api_tests/security/schema-adminonly-enforcement.test.js +285 -272
  575. package/lib/esm/tests/api_tests/security/schema-adminonly-enforcement.test.js.map +1 -1
  576. package/lib/esm/tests/api_tests/security/self-admin-role-assignment.test.d.ts +17 -10
  577. package/lib/esm/tests/api_tests/security/self-admin-role-assignment.test.d.ts.map +1 -1
  578. package/lib/esm/tests/api_tests/security/self-admin-role-assignment.test.js +171 -137
  579. package/lib/esm/tests/api_tests/security/self-admin-role-assignment.test.js.map +1 -1
  580. package/lib/esm/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.d.ts +6 -5
  581. package/lib/esm/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.d.ts.map +1 -1
  582. package/lib/esm/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.js +307 -263
  583. package/lib/esm/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.js.map +1 -1
  584. package/lib/esm/tests/api_tests/security/webhook-timeout.test.d.ts +9 -5
  585. package/lib/esm/tests/api_tests/security/webhook-timeout.test.d.ts.map +1 -1
  586. package/lib/esm/tests/api_tests/security/webhook-timeout.test.js +105 -81
  587. package/lib/esm/tests/api_tests/security/webhook-timeout.test.js.map +1 -1
  588. package/lib/esm/tests/api_tests/stedi_approval.test.d.ts +6 -5
  589. package/lib/esm/tests/api_tests/stedi_approval.test.d.ts.map +1 -1
  590. package/lib/esm/tests/api_tests/stedi_approval.test.js +204 -136
  591. package/lib/esm/tests/api_tests/stedi_approval.test.js.map +1 -1
  592. package/lib/esm/tests/api_tests/ticket_stage_archive.test.d.ts +7 -0
  593. package/lib/esm/tests/api_tests/ticket_stage_archive.test.d.ts.map +1 -0
  594. package/lib/esm/tests/api_tests/ticket_stage_archive.test.js +339 -0
  595. package/lib/esm/tests/api_tests/ticket_stage_archive.test.js.map +1 -0
  596. package/lib/esm/tests/api_tests/tickets_bulk_assign_care_team.test.d.ts +6 -5
  597. package/lib/esm/tests/api_tests/tickets_bulk_assign_care_team.test.d.ts.map +1 -1
  598. package/lib/esm/tests/api_tests/tickets_bulk_assign_care_team.test.js +162 -147
  599. package/lib/esm/tests/api_tests/tickets_bulk_assign_care_team.test.js.map +1 -1
  600. package/lib/esm/tests/api_tests/translations.test.d.ts +6 -5
  601. package/lib/esm/tests/api_tests/translations.test.d.ts.map +1 -1
  602. package/lib/esm/tests/api_tests/translations.test.js +102 -74
  603. package/lib/esm/tests/api_tests/translations.test.js.map +1 -1
  604. package/lib/esm/tests/api_tests/trigger_set_fields_date_difference.test.d.ts +21 -4
  605. package/lib/esm/tests/api_tests/trigger_set_fields_date_difference.test.d.ts.map +1 -1
  606. package/lib/esm/tests/api_tests/trigger_set_fields_date_difference.test.js +236 -369
  607. package/lib/esm/tests/api_tests/trigger_set_fields_date_difference.test.js.map +1 -1
  608. package/lib/esm/tests/api_tests/user_preferences.test.d.ts +30 -0
  609. package/lib/esm/tests/api_tests/user_preferences.test.d.ts.map +1 -0
  610. package/lib/esm/tests/api_tests/user_preferences.test.js +274 -0
  611. package/lib/esm/tests/api_tests/user_preferences.test.js.map +1 -0
  612. package/lib/esm/tests/api_tests/webhook_error_handling.test.d.ts +17 -5
  613. package/lib/esm/tests/api_tests/webhook_error_handling.test.d.ts.map +1 -1
  614. package/lib/esm/tests/api_tests/webhook_error_handling.test.js +202 -194
  615. package/lib/esm/tests/api_tests/webhook_error_handling.test.js.map +1 -1
  616. package/lib/esm/tests/api_tests/webhook_raw_json_number.test.d.ts +15 -5
  617. package/lib/esm/tests/api_tests/webhook_raw_json_number.test.d.ts.map +1 -1
  618. package/lib/esm/tests/api_tests/webhook_raw_json_number.test.js +152 -178
  619. package/lib/esm/tests/api_tests/webhook_raw_json_number.test.js.map +1 -1
  620. package/lib/esm/tests/api_tests/welle_partner_token.test.d.ts +6 -5
  621. package/lib/esm/tests/api_tests/welle_partner_token.test.d.ts.map +1 -1
  622. package/lib/esm/tests/api_tests/welle_partner_token.test.js +391 -250
  623. package/lib/esm/tests/api_tests/welle_partner_token.test.js.map +1 -1
  624. package/lib/esm/tests/setup_isolated.d.ts +7 -0
  625. package/lib/esm/tests/setup_isolated.d.ts.map +1 -1
  626. package/lib/esm/tests/setup_isolated.js.map +1 -1
  627. package/lib/esm/tests/tests.d.ts.map +1 -1
  628. package/lib/esm/tests/tests.js +229 -461
  629. package/lib/esm/tests/tests.js.map +1 -1
  630. package/lib/esm/tests/unit_tests/date_string_validation.test.d.ts +2 -0
  631. package/lib/esm/tests/unit_tests/date_string_validation.test.d.ts.map +1 -0
  632. package/lib/esm/tests/unit_tests/date_string_validation.test.js +108 -0
  633. package/lib/esm/tests/unit_tests/date_string_validation.test.js.map +1 -0
  634. package/lib/tsconfig.tsbuildinfo +1 -1
  635. package/package.json +10 -10
  636. package/src/sdk.ts +14 -3
  637. package/src/tests/api_tests/ai_conversations.test.ts +170 -138
  638. package/src/tests/api_tests/ai_conversations_agent_message.test.ts +491 -0
  639. package/src/tests/api_tests/appointment_link_expiration.test.ts +94 -35
  640. package/src/tests/api_tests/appointment_no_showed_trigger.test.ts +181 -128
  641. package/src/tests/api_tests/availability_block_buffer.test.ts +286 -0
  642. package/src/tests/api_tests/beluga_manual_sync.test.ts +103 -53
  643. package/src/tests/api_tests/beluga_trigger_refill.test.ts +131 -46
  644. package/src/tests/api_tests/bulk_assignment.test.ts +307 -220
  645. package/src/tests/api_tests/calendar_event_references_update.test.ts +97 -54
  646. package/src/tests/api_tests/calendar_event_webhook_template.test.ts +198 -158
  647. package/src/tests/api_tests/chats_analytics.test.ts +161 -123
  648. package/src/tests/api_tests/concurrent_build_threads.test.ts +80 -69
  649. package/src/tests/api_tests/configurations_public_read.test.ts +154 -67
  650. package/src/tests/api_tests/copied_form_response_no_enduser_sync.test.ts +307 -0
  651. package/src/tests/api_tests/create_note_action.test.ts +149 -70
  652. package/src/tests/api_tests/create_user_notifications_trigger.test.ts +116 -144
  653. package/src/tests/api_tests/custom_aggregation.test.ts +163 -92
  654. package/src/tests/api_tests/database_cascade_delete.test.ts +101 -87
  655. package/src/tests/api_tests/dont_sync_to_elation_form_submission.test.ts +122 -51
  656. package/src/tests/api_tests/elation_user_id.test.ts +105 -42
  657. package/src/tests/api_tests/file_download_unicode_names.test.ts +171 -122
  658. package/src/tests/api_tests/form_intake_email_normalization.test.ts +489 -0
  659. package/src/tests/api_tests/form_submitted_trigger.test.ts +152 -86
  660. package/src/tests/api_tests/form_translations.test.ts +117 -48
  661. package/src/tests/api_tests/formsort_header_auth.test.ts +147 -97
  662. package/src/tests/api_tests/gcal_sync_retry.test.ts +71 -49
  663. package/src/tests/api_tests/get_some_projection.test.ts +333 -169
  664. package/src/tests/api_tests/group_event_attendee_self_update.test.ts +103 -52
  665. package/src/tests/api_tests/integrations_redacted.test.ts +161 -84
  666. package/src/tests/api_tests/journey_delete_cancels_actions.test.ts +93 -64
  667. package/src/tests/api_tests/load_team_chat.test.ts +62 -6
  668. package/src/tests/api_tests/load_threads_autobuild.test.ts +163 -67
  669. package/src/tests/api_tests/load_threads_care_team.test.ts +103 -0
  670. package/src/tests/api_tests/managed_content_file_access.test.ts +132 -108
  671. package/src/tests/api_tests/mdb_sort.test.ts +247 -161
  672. package/src/tests/api_tests/mdi_manual_sync.test.ts +277 -0
  673. package/src/tests/api_tests/mdi_trigger_refill.test.ts +132 -78
  674. package/src/tests/api_tests/mdi_webhooks.test.ts +52 -22
  675. package/src/tests/api_tests/message_assignment_trigger.test.ts +129 -155
  676. package/src/tests/api_tests/metriport_push_form_response.test.ts +109 -49
  677. package/src/tests/api_tests/organization_api_keys.test.ts +170 -2
  678. package/src/tests/api_tests/organization_settings_duplicates.test.ts +291 -181
  679. package/src/tests/api_tests/organization_signup.test.ts +170 -5
  680. package/src/tests/api_tests/out_of_office_endpoint.test.ts +98 -0
  681. package/src/tests/api_tests/outbound_chat_sent_trigger.test.ts +163 -175
  682. package/src/tests/api_tests/phone_calls_cold_transfer.test.ts +195 -133
  683. package/src/tests/api_tests/phone_calls_conference_hold.test.ts +112 -42
  684. package/src/tests/api_tests/phone_tree_enduser_condition.test.ts +81 -32
  685. package/src/tests/api_tests/programs.test.ts +350 -0
  686. package/src/tests/api_tests/security/ai-conversations-rbac.test.ts +248 -128
  687. package/src/tests/api_tests/security/automated-actions-process-gate.test.ts +47 -42
  688. package/src/tests/api_tests/security/booking-info-idor-token-mint.test.ts +53 -45
  689. package/src/tests/api_tests/security/cascade-role-rename-cross-tenant.test.ts +100 -73
  690. package/src/tests/api_tests/security/data-sync-redaction-bypass.test.ts +125 -59
  691. package/src/tests/api_tests/security/develop-health-benefit-verification-rbac.test.ts +131 -103
  692. package/src/tests/api_tests/security/enduser-ai-summary-trust-gate.test.ts +161 -68
  693. package/src/tests/api_tests/security/enduser-cross-create.test.ts +200 -61
  694. package/src/tests/api_tests/security/enduser-write-restrictions.test.ts +179 -61
  695. package/src/tests/api_tests/security/globalunique-conflict-redaction.test.ts +163 -44
  696. package/src/tests/api_tests/security/handle-incoming-communication-cross-tenant.test.ts +78 -70
  697. package/src/tests/api_tests/security/load-inbox-redaction.test.ts +79 -44
  698. package/src/tests/api_tests/security/proxy-image-unauth-ssrf.test.ts +95 -52
  699. package/src/tests/api_tests/security/register_business_id_injection.test.ts +132 -93
  700. package/src/tests/api_tests/security/sanitize-user-html-with-iframes.test.ts +127 -0
  701. package/src/tests/api_tests/security/schema-adminonly-enforcement.test.ts +42 -37
  702. package/src/tests/api_tests/security/self-admin-role-assignment.test.ts +92 -54
  703. package/src/tests/api_tests/security/startlinktoken-enduser-staff-escalation.test.ts +76 -34
  704. package/src/tests/api_tests/security/webhook-timeout.test.ts +67 -36
  705. package/src/tests/api_tests/stedi_approval.test.ts +156 -90
  706. package/src/tests/api_tests/ticket_stage_archive.test.ts +314 -0
  707. package/src/tests/api_tests/tickets_bulk_assign_care_team.test.ts +138 -103
  708. package/src/tests/api_tests/translations.test.ts +69 -46
  709. package/src/tests/api_tests/trigger_set_fields_date_difference.test.ts +198 -256
  710. package/src/tests/api_tests/user_preferences.test.ts +227 -0
  711. package/src/tests/api_tests/webhook_error_handling.test.ts +121 -60
  712. package/src/tests/api_tests/webhook_raw_json_number.test.ts +127 -109
  713. package/src/tests/api_tests/welle_partner_token.test.ts +217 -90
  714. package/src/tests/setup_isolated.ts +7 -0
  715. package/src/tests/tests.ts +41 -147
  716. package/src/tests/{api_tests → unit_tests}/date_string_validation.test.ts +2 -23
  717. package/test_generated.pdf +0 -0
@@ -47,15 +47,14 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
47
47
  }
48
48
  };
49
49
  Object.defineProperty(exports, "__esModule", { value: true });
50
- exports.ai_conversations_rbac_tests = void 0;
50
+ exports.ISOLATED_SUITE = exports.ai_conversations_rbac_tests = exports.ai_conversations_rbac_checks = void 0;
51
51
  require('source-map-support').install();
52
52
  var bson_1 = require("bson");
53
- var sdk_1 = require("../../../sdk");
54
53
  var testing_1 = require("@tellescope/testing");
55
- var setup_1 = require("../../setup");
54
+ var setup_isolated_1 = require("../../setup_isolated");
56
55
  var constants_1 = require("@tellescope/constants");
57
56
  var host = process.env.API_URL || 'http://localhost:8080';
58
- var _a = [process.env.NON_ADMIN_EMAIL, process.env.NON_ADMIN_PASSWORD], nonAdminEmail = _a[0], nonAdminPassword = _a[1];
57
+ var RAND = function () { return Math.random().toString(36).slice(2, 10); };
59
58
  /**
60
59
  * Regression test: `ai_conversations` RBAC.
61
60
  *
@@ -87,297 +86,417 @@ var _a = [process.env.NON_ADMIN_EMAIL, process.env.NON_ADMIN_PASSWORD], nonAdmin
87
86
  * - generate_ai_decision: 200 with `{}` (handler responds early before access check). Test fails.
88
87
  *
89
88
  * Post-fix: both endpoints throw 403 before any work happens. Test passes.
89
+ *
90
+ * Runs on its own provisioned tenant, so the three roles below are assigned to a throwaway
91
+ * non-admin rather than to the SHARED fixture user, whose permissions were previously arbitrary
92
+ * for every concurrent suite while this ran (and stayed broken if cleanup crashed).
90
93
  */
91
- var ai_conversations_rbac_tests = function (_a) {
92
- var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
93
- return __awaiter(void 0, void 0, void 0, function () {
94
- var roleName, grantRoleName, assignedRoleName, rbapId, grantRbapId, assignedRbapId, originalRoles, rbap, grantRbap, assignedRbap, _b, _c, _d, _e, _f;
95
- return __generator(this, function (_g) {
96
- switch (_g.label) {
97
- case 0:
98
- (0, testing_1.log_header)("ai_conversations RBAC bypass regression");
99
- roleName = "f0005-ai-conversations-no-access-".concat(Date.now());
100
- grantRoleName = "f0005-ai-conversations-create-granted-".concat(Date.now());
101
- assignedRoleName = "f0005-ai-conversations-assigned-default-".concat(Date.now());
102
- originalRoles = sdkNonAdmin.userInfo.roles;
103
- _g.label = 1;
104
- case 1:
105
- _g.trys.push([1, , 19, 40]);
106
- return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
107
- role: roleName,
108
- permissions: __assign(__assign({}, constants_1.PROVIDER_PERMISSIONS), { ai_conversations: { create: null, read: null, update: null, delete: null }, endusers: { create: null, read: null, update: null, delete: null } }),
109
- })];
110
- case 2:
111
- rbap = _g.sent();
112
- rbapId = rbap.id;
113
- // 2. Assign the role to the non-admin user and re-authenticate so the new
114
- // session reflects the role's denied permissions.
115
- return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: [roleName] }, { replaceObjectFields: true })];
116
- case 3:
117
- // 2. Assign the role to the non-admin user and re-authenticate so the new
94
+ var ai_conversations_rbac_checks = function () { return __awaiter(void 0, void 0, void 0, function () {
95
+ var checks, record, describe, errorMessage, expect_rejected, isAccessDenial, roleName, grantRoleName, assignedRoleName, tenant, sdk, sdkNonAdmin_1, nonAdmin, label, outcome, e_1, label, outcome, e_2, label, outcome, e_3, e, msg, status_1, isCrash, label, outcome, e_4, e, msg, status_2, isCrash, e_5;
96
+ var _a, _b, _c, _d;
97
+ var _e, _f, _g, _h;
98
+ return __generator(this, function (_j) {
99
+ switch (_j.label) {
100
+ case 0:
101
+ checks = [];
102
+ record = function (label, pass, detail) { return checks.push({ label: label, pass: pass, detail: detail }); };
103
+ describe = function (value) {
104
+ if (value === undefined || value === null)
105
+ return String(value);
106
+ var stringified = JSON.stringify(value);
107
+ return stringified === undefined ? String(value) : stringified;
108
+ };
109
+ errorMessage = function (e) { return (typeof (e === null || e === void 0 ? void 0 : e.message) === 'string' && e.message !== '' ? e.message : describe(e)); };
110
+ expect_rejected = function (label, fn, onError) { return __awaiter(void 0, void 0, void 0, function () {
111
+ var rejection, unexpected, e_6, e;
112
+ return __generator(this, function (_a) {
113
+ switch (_a.label) {
114
+ case 0:
115
+ _a.trys.push([0, 2, , 3]);
116
+ return [4 /*yield*/, fn()];
117
+ case 1:
118
+ unexpected = _a.sent();
119
+ record(label, false, "resolved instead of rejecting; result=".concat(describe(unexpected)));
120
+ return [2 /*return*/];
121
+ case 2:
122
+ e_6 = _a.sent();
123
+ rejection = { e: e_6 };
124
+ return [3 /*break*/, 3];
125
+ case 3:
126
+ e = rejection.e;
127
+ try {
128
+ record(label, onError(e), "rejected with ".concat(errorMessage(e)));
129
+ }
130
+ catch (predicateError) {
131
+ record(label, false, "predicate threw on rejection \"".concat(errorMessage(e), "\": ").concat(errorMessage(predicateError)));
132
+ }
133
+ return [2 /*return*/];
134
+ }
135
+ });
136
+ }); };
137
+ isAccessDenial = function (e) {
138
+ var _a, _b;
139
+ var msg = ((_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : '').toLowerCase();
140
+ var status = (_b = e === null || e === void 0 ? void 0 : e.status) !== null && _b !== void 0 ? _b : e === null || e === void 0 ? void 0 : e.code;
141
+ return status === 403 || status === 401
142
+ || msg.includes('access') || msg.includes('permission') || msg.includes('forbidden');
143
+ };
144
+ roleName = "f0005-ai-conversations-no-access-".concat(RAND());
145
+ grantRoleName = "f0005-ai-conversations-create-granted-".concat(RAND());
146
+ assignedRoleName = "f0005-ai-conversations-assigned-default-".concat(RAND());
147
+ _j.label = 1;
148
+ case 1:
149
+ _j.trys.push([1, , 36, 41]);
150
+ return [4 /*yield*/, (0, setup_isolated_1.setup_isolated_tenant)({
151
+ name: "ai_conversations RBAC ".concat(RAND()),
152
+ users: [{ isAdmin: true }, { roles: ['Non-Admin'] }],
153
+ apiKeys: 0,
154
+ })];
155
+ case 2:
156
+ tenant = _j.sent();
157
+ sdk = tenant.sdk, sdkNonAdmin_1 = tenant.sdkNonAdmin;
158
+ nonAdmin = tenant.users[1];
159
+ // 1. Create a role that explicitly denies ai_conversations access AND endusers access.
160
+ // This is the realistic configuration the bypass affects: a tenant operator
161
+ // deliberately restricts a role from reading AI conversations / enduser PHI.
162
+ return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
163
+ role: roleName,
164
+ permissions: __assign(__assign({}, constants_1.PROVIDER_PERMISSIONS), { ai_conversations: { create: null, read: null, update: null, delete: null }, endusers: { create: null, read: null, update: null, delete: null } }),
165
+ })
166
+ // 2. Assign the role to this tenant's own non-admin user and re-authenticate so the new
118
167
  // session reflects the role's denied permissions.
119
- _g.sent();
120
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 1500)];
121
- case 4:
122
- _g.sent();
123
- return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)
124
- // 3a. send_message must throw 403 (or equivalent access error). Pre-fix: succeeds (or
125
- // fails downstream in Bedrock without 403). Post-fix: throws before any work.
126
- ];
127
- case 5:
128
- _g.sent();
129
- // 3a. send_message must throw 403 (or equivalent access error). Pre-fix: succeeds (or
130
- // fails downstream in Bedrock without 403). Post-fix: throws before any work.
131
- return [4 /*yield*/, (0, testing_1.async_test)("ai_conversations.send_message must throw 403 when role denies ai_conversations", function () { return sdkNonAdmin.api.ai_conversations.send_message({
132
- message: 'regression test',
133
- type: 'Test',
134
- }); }, {
135
- shouldError: true,
136
- onError: function (e) {
137
- var _a, _b;
138
- // Accept any 4xx access-denial response — handler may use 403 (recommended)
139
- // or 400 with "access" / "permission" in the message.
140
- var msg = ((_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : '').toLowerCase();
141
- var status = (_b = e === null || e === void 0 ? void 0 : e.status) !== null && _b !== void 0 ? _b : e === null || e === void 0 ? void 0 : e.code;
142
- return status === 403 || status === 401
143
- || msg.includes('access') || msg.includes('permission') || msg.includes('forbidden');
144
- },
145
- })
146
- // 3b. generate_ai_decision must throw 403 BEFORE the early res.json({}) response.
147
- // Pre-fix: handler responds 200 with {} immediately and processes in background.
148
- // Post-fix: handler throws 403 before res.json({}).
149
- ];
150
- case 6:
168
+ ];
169
+ case 3:
170
+ // 1. Create a role that explicitly denies ai_conversations access AND endusers access.
171
+ // This is the realistic configuration the bypass affects: a tenant operator
172
+ // deliberately restricts a role from reading AI conversations / enduser PHI.
173
+ _j.sent();
174
+ // 2. Assign the role to this tenant's own non-admin user and re-authenticate so the new
175
+ // session reflects the role's denied permissions.
176
+ return [4 /*yield*/, sdk.api.users.updateOne(nonAdmin.id, { roles: [roleName] }, { replaceObjectFields: true })];
177
+ case 4:
178
+ // 2. Assign the role to this tenant's own non-admin user and re-authenticate so the new
179
+ // session reflects the role's denied permissions.
180
+ _j.sent();
181
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 1500)];
182
+ case 5:
183
+ _j.sent();
184
+ return [4 /*yield*/, sdkNonAdmin_1.authenticate(nonAdmin.email, nonAdmin.password)
151
185
  // 3a. send_message must throw 403 (or equivalent access error). Pre-fix: succeeds (or
152
186
  // fails downstream in Bedrock without 403). Post-fix: throws before any work.
153
- _g.sent();
154
- // 3b. generate_ai_decision must throw 403 BEFORE the early res.json({}) response.
155
- // Pre-fix: handler responds 200 with {} immediately and processes in background.
156
- // Post-fix: handler throws 403 before res.json({}).
157
- return [4 /*yield*/, (0, testing_1.async_test)("ai_conversations.generate_ai_decision must throw 403 when role denies endusers/ai_conversations", function () { return sdkNonAdmin.api.ai_conversations.generate_ai_decision({
158
- enduserId: new bson_1.ObjectId().toHexString(),
159
- automationStepId: new bson_1.ObjectId().toHexString(),
160
- outcomes: ['yes', 'no'],
161
- prompt: 'regression test',
162
- sources: [{ type: 'SMS', limit: 1 }], // non-empty so the validator passes; access check then fires
163
- }); }, {
164
- shouldError: true,
165
- onError: function (e) {
166
- var _a, _b;
167
- var msg = ((_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : '').toLowerCase();
168
- var status = (_b = e === null || e === void 0 ? void 0 : e.status) !== null && _b !== void 0 ? _b : e === null || e === void 0 ? void 0 : e.code;
169
- return status === 403 || status === 401
170
- || msg.includes('access') || msg.includes('permission') || msg.includes('forbidden');
171
- },
172
- })
173
- // 4. Positive case: granting only ai_conversations create must pass the RBAC gate.
174
- // send_message may still fail downstream (e.g. 400 "Organization has not set up credits"),
175
- // but it must NOT be an access-denial error.
176
- ];
177
- case 7:
187
+ ];
188
+ case 6:
189
+ _j.sent();
190
+ // 3a. send_message must throw 403 (or equivalent access error). Pre-fix: succeeds (or
191
+ // fails downstream in Bedrock without 403). Post-fix: throws before any work.
192
+ return [4 /*yield*/, expect_rejected("ai_conversations.send_message must throw 403 when role denies ai_conversations", function () { return sdkNonAdmin_1.api.ai_conversations.send_message({
193
+ message: 'regression test',
194
+ type: 'Test',
195
+ }); }, function (e) {
196
+ var _a, _b;
197
+ // Accept any 4xx access-denial response — handler may use 403 (recommended)
198
+ // or 400 with "access" / "permission" in the message.
199
+ var msg = ((_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : '').toLowerCase();
200
+ var status = (_b = e === null || e === void 0 ? void 0 : e.status) !== null && _b !== void 0 ? _b : e === null || e === void 0 ? void 0 : e.code;
201
+ return status === 403 || status === 401
202
+ || msg.includes('access') || msg.includes('permission') || msg.includes('forbidden');
203
+ })
178
204
  // 3b. generate_ai_decision must throw 403 BEFORE the early res.json({}) response.
179
205
  // Pre-fix: handler responds 200 with {} immediately and processes in background.
180
206
  // Post-fix: handler throws 403 before res.json({}).
181
- _g.sent();
182
- return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
183
- role: grantRoleName,
184
- permissions: __assign(__assign({}, constants_1.PROVIDER_PERMISSIONS), { ai_conversations: { create: 'All', read: null, update: null, delete: null } }),
185
- })];
186
- case 8:
187
- grantRbap = _g.sent();
188
- grantRbapId = grantRbap.id;
189
- return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: [grantRoleName] }, { replaceObjectFields: true })];
190
- case 9:
191
- _g.sent();
192
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 1500)];
193
- case 10:
194
- _g.sent();
195
- return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)];
196
- case 11:
197
- _g.sent();
198
- return [4 /*yield*/, (0, testing_1.async_test)("ai_conversations.send_message must NOT be access-denied when role grants create", function () { return sdkNonAdmin.api.ai_conversations.send_message({
199
- message: 'positive-case test',
200
- type: 'Test',
201
- maxTokens: 1,
202
- })
203
- .then(function () { return 'allowed'; })
204
- .catch(function (e) {
205
- var _a, _b;
206
- var msg = ((_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : '').toLowerCase();
207
- var status = (_b = e === null || e === void 0 ? void 0 : e.status) !== null && _b !== void 0 ? _b : e === null || e === void 0 ? void 0 : e.code;
208
- if (status === 403 || status === 401
209
- || msg.includes('access') || msg.includes('permission') || msg.includes('forbidden')) {
210
- throw e; // access denial — the gate incorrectly blocked a create-granted role
211
- }
212
- return 'allowed'; // downstream (e.g. credits) error is fine — the gate passed
213
- }); }, { onResult: function (r) { return r === 'allowed'; } })
214
- // 5. The create-granted (read/update-denied) role must still be blocked from CONTINUING an
215
- // existing conversation — send_message with conversationId returns the full stored history
216
- // and appends to it. Fake id is fine: the access check must fire before any lookup.
217
- ];
218
- case 12:
219
- _g.sent();
220
- // 5. The create-granted (read/update-denied) role must still be blocked from CONTINUING an
221
- // existing conversation — send_message with conversationId returns the full stored history
222
- // and appends to it. Fake id is fine: the access check must fire before any lookup.
223
- return [4 /*yield*/, (0, testing_1.async_test)("ai_conversations.send_message with conversationId must 403 when role denies read/update", function () { return sdkNonAdmin.api.ai_conversations.send_message({
224
- message: 'conversationId bypass test',
225
- type: 'Test',
226
- maxTokens: 1,
227
- conversationId: new bson_1.ObjectId().toHexString(),
228
- }); }, {
229
- shouldError: true,
230
- onError: function (e) {
231
- var _a, _b;
232
- var msg = ((_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : '').toLowerCase();
233
- var status = (_b = e === null || e === void 0 ? void 0 : e.status) !== null && _b !== void 0 ? _b : e === null || e === void 0 ? void 0 : e.code;
234
- return status === 403 || status === 401
235
- || msg.includes('access') || msg.includes('permission') || msg.includes('forbidden');
236
- },
237
- })
238
- // 6. Regression: a role with default provider permissions (ai_conversations = Assigned)
239
- // must be able to generate a new conversation without a 500. Previously the
240
- // post-generation $push ran through the access-scoped DB, matched nothing under
241
- // "Assigned", and crashed the handler with "Cannot read properties of null ('_id')".
242
- ];
243
- case 13:
244
- // 5. The create-granted (read/update-denied) role must still be blocked from CONTINUING an
245
- // existing conversation — send_message with conversationId returns the full stored history
246
- // and appends to it. Fake id is fine: the access check must fire before any lookup.
247
- _g.sent();
248
- return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
249
- role: assignedRoleName,
250
- permissions: __assign({}, constants_1.PROVIDER_PERMISSIONS),
251
- })];
252
- case 14:
253
- assignedRbap = _g.sent();
254
- assignedRbapId = assignedRbap.id;
255
- return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: [assignedRoleName] }, { replaceObjectFields: true })];
256
- case 15:
257
- _g.sent();
258
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 1500)];
259
- case 16:
260
- _g.sent();
261
- return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)];
262
- case 17:
263
- _g.sent();
264
- return [4 /*yield*/, (0, testing_1.async_test)("ai_conversations.send_message must not 500 for Assigned-access (default provider) role", function () { return sdkNonAdmin.api.ai_conversations.send_message({
265
- message: 'assigned-access regression test',
266
- type: 'Test',
267
- maxTokens: 1,
268
- })
269
- .then(function () { return 'ok'; })
270
- .catch(function (e) {
271
- var _a, _b;
272
- var msg = ((_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : '').toLowerCase();
273
- var status = (_b = e === null || e === void 0 ? void 0 : e.status) !== null && _b !== void 0 ? _b : e === null || e === void 0 ? void 0 : e.code;
274
- if (status === 500 || msg.includes('internal error') || msg.includes('cannot read properties')) {
275
- throw e; // the null-update crash — regression
276
- }
277
- if (status === 403 || status === 401
278
- || msg.includes('access') || msg.includes('permission') || msg.includes('forbidden')) {
279
- throw e; // Assigned access must pass the RBAC gate
280
- }
281
- return 'ok'; // downstream (e.g. credits) error is fine
282
- }); }, { onResult: function (r) { return r === 'ok'; } })];
283
- case 18:
284
- _g.sent();
285
- return [3 /*break*/, 40];
286
- case 19:
287
- _g.trys.push([19, 21, , 22]);
288
- return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: originalRoles !== null && originalRoles !== void 0 ? originalRoles : [] }, { replaceObjectFields: true })];
289
- case 20:
290
- _g.sent();
291
- return [3 /*break*/, 22];
292
- case 21:
293
- _b = _g.sent();
294
- return [3 /*break*/, 22];
295
- case 22:
296
- if (!rbapId) return [3 /*break*/, 26];
297
- _g.label = 23;
298
- case 23:
299
- _g.trys.push([23, 25, , 26]);
300
- return [4 /*yield*/, sdk.api.role_based_access_permissions.deleteOne(rbapId)];
301
- case 24:
302
- _g.sent();
303
- return [3 /*break*/, 26];
304
- case 25:
305
- _c = _g.sent();
306
- return [3 /*break*/, 26];
307
- case 26:
308
- if (!grantRbapId) return [3 /*break*/, 30];
309
- _g.label = 27;
310
- case 27:
311
- _g.trys.push([27, 29, , 30]);
312
- return [4 /*yield*/, sdk.api.role_based_access_permissions.deleteOne(grantRbapId)];
313
- case 28:
314
- _g.sent();
315
- return [3 /*break*/, 30];
316
- case 29:
317
- _d = _g.sent();
318
- return [3 /*break*/, 30];
319
- case 30:
320
- if (!assignedRbapId) return [3 /*break*/, 34];
321
- _g.label = 31;
322
- case 31:
323
- _g.trys.push([31, 33, , 34]);
324
- return [4 /*yield*/, sdk.api.role_based_access_permissions.deleteOne(assignedRbapId)];
325
- case 32:
326
- _g.sent();
327
- return [3 /*break*/, 34];
328
- case 33:
329
- _e = _g.sent();
330
- return [3 /*break*/, 34];
331
- case 34:
332
- // Re-authenticate the non-admin to drop the no-access role from their JWT
333
- // before subsequent tests run.
334
- // Role restore above re-triggers deauthenticate_user; wait > 1s so the freshly minted
335
- // token's (second-floored) iat lands after the deauth timestamp and isn't permanently
336
- // rejected by is_logged_in's iat-slack check. Matches the in-test re-auth above.
207
+ ];
208
+ case 7:
209
+ // 3a. send_message must throw 403 (or equivalent access error). Pre-fix: succeeds (or
210
+ // fails downstream in Bedrock without 403). Post-fix: throws before any work.
211
+ _j.sent();
212
+ // 3b. generate_ai_decision must throw 403 BEFORE the early res.json({}) response.
213
+ // Pre-fix: handler responds 200 with {} immediately and processes in background.
214
+ // Post-fix: handler throws 403 before res.json({}).
215
+ return [4 /*yield*/, expect_rejected("ai_conversations.generate_ai_decision must throw 403 when role denies endusers/ai_conversations", function () { return sdkNonAdmin_1.api.ai_conversations.generate_ai_decision({
216
+ enduserId: new bson_1.ObjectId().toHexString(),
217
+ automationStepId: new bson_1.ObjectId().toHexString(),
218
+ outcomes: ['yes', 'no'],
219
+ prompt: 'regression test',
220
+ sources: [{ type: 'SMS', limit: 1 }], // non-empty so the validator passes; access check then fires
221
+ }); }, function (e) {
222
+ var _a, _b;
223
+ var msg = ((_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : '').toLowerCase();
224
+ var status = (_b = e === null || e === void 0 ? void 0 : e.status) !== null && _b !== void 0 ? _b : e === null || e === void 0 ? void 0 : e.code;
225
+ return status === 403 || status === 401
226
+ || msg.includes('access') || msg.includes('permission') || msg.includes('forbidden');
227
+ })
228
+ // 3c. agent_message carries the SAME gate as send_message and must not be an exception:
229
+ // it is a second way to spend the tenant's credits and to read a stored conversation.
230
+ // The body is deliberately valid, so a 403 here can only come from the access check —
231
+ // an invalid body would 400 in validation before the gate and pass this check vacuously.
232
+ ];
233
+ case 8:
234
+ // 3b. generate_ai_decision must throw 403 BEFORE the early res.json({}) response.
235
+ // Pre-fix: handler responds 200 with {} immediately and processes in background.
236
+ // Post-fix: handler throws 403 before res.json({}).
237
+ _j.sent();
238
+ // 3c. agent_message carries the SAME gate as send_message and must not be an exception:
239
+ // it is a second way to spend the tenant's credits and to read a stored conversation.
240
+ // The body is deliberately valid, so a 403 here can only come from the access check —
241
+ // an invalid body would 400 in validation before the gate and pass this check vacuously.
242
+ return [4 /*yield*/, expect_rejected("ai_conversations.agent_message must throw 403 when role denies ai_conversations", function () { return sdkNonAdmin_1.api.ai_conversations.agent_message({
243
+ messages: [{ role: 'user', content: [{ type: 'text', text: 'regression test' }] }],
244
+ maxTokens: 16,
245
+ }); }, isAccessDenial)
246
+ // 4. Positive case: granting only ai_conversations create must pass the RBAC gate.
247
+ // send_message may still fail downstream (e.g. 400 "Organization has not set up credits"),
248
+ // but it must NOT be an access-denial error.
249
+ ];
250
+ case 9:
251
+ // 3c. agent_message carries the SAME gate as send_message and must not be an exception:
252
+ // it is a second way to spend the tenant's credits and to read a stored conversation.
253
+ // The body is deliberately valid, so a 403 here can only come from the access check —
254
+ // an invalid body would 400 in validation before the gate and pass this check vacuously.
255
+ _j.sent();
256
+ // 4. Positive case: granting only ai_conversations create must pass the RBAC gate.
257
+ // send_message may still fail downstream (e.g. 400 "Organization has not set up credits"),
258
+ // but it must NOT be an access-denial error.
259
+ return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
260
+ role: grantRoleName,
261
+ permissions: __assign(__assign({}, constants_1.PROVIDER_PERMISSIONS), { ai_conversations: { create: 'All', read: null, update: null, delete: null } }),
262
+ })];
263
+ case 10:
264
+ // 4. Positive case: granting only ai_conversations create must pass the RBAC gate.
265
+ // send_message may still fail downstream (e.g. 400 "Organization has not set up credits"),
266
+ // but it must NOT be an access-denial error.
267
+ _j.sent();
268
+ return [4 /*yield*/, sdk.api.users.updateOne(nonAdmin.id, { roles: [grantRoleName] }, { replaceObjectFields: true })];
269
+ case 11:
270
+ _j.sent();
337
271
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 1500)];
338
- case 35:
339
- // Re-authenticate the non-admin to drop the no-access role from their JWT
340
- // before subsequent tests run.
341
- // Role restore above re-triggers deauthenticate_user; wait > 1s so the freshly minted
342
- // token's (second-floored) iat lands after the deauth timestamp and isn't permanently
343
- // rejected by is_logged_in's iat-slack check. Matches the in-test re-auth above.
344
- _g.sent();
345
- _g.label = 36;
346
- case 36:
347
- _g.trys.push([36, 38, , 39]);
348
- return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)];
349
- case 37:
350
- _g.sent();
351
- return [3 /*break*/, 39];
352
- case 38:
353
- _f = _g.sent();
354
- return [3 /*break*/, 39];
355
- case 39: return [7 /*endfinally*/];
356
- case 40: return [2 /*return*/];
357
- }
358
- });
272
+ case 12:
273
+ _j.sent();
274
+ return [4 /*yield*/, sdkNonAdmin_1.authenticate(nonAdmin.email, nonAdmin.password)];
275
+ case 13:
276
+ _j.sent();
277
+ label = "ai_conversations.send_message must NOT be access-denied when role grants create";
278
+ outcome = void 0;
279
+ _j.label = 14;
280
+ case 14:
281
+ _j.trys.push([14, 16, , 17]);
282
+ _a = { resolved: true };
283
+ return [4 /*yield*/, sdkNonAdmin_1.api.ai_conversations.send_message({
284
+ message: 'positive-case test',
285
+ type: 'Test',
286
+ maxTokens: 1,
287
+ })];
288
+ case 15:
289
+ outcome = (_a.value = _j.sent(), _a);
290
+ return [3 /*break*/, 17];
291
+ case 16:
292
+ e_1 = _j.sent();
293
+ outcome = { resolved: false, error: e_1 };
294
+ return [3 /*break*/, 17];
295
+ case 17:
296
+ // A downstream (e.g. credits) error is fine — the gate passed. An access denial is not.
297
+ record(label, outcome.resolved || !isAccessDenial(outcome.error), outcome.resolved
298
+ ? "allowed; result=".concat(describe(outcome.value))
299
+ : "gate passed, rejected downstream with ".concat(errorMessage(outcome.error)));
300
+ label = "ai_conversations.agent_message must NOT be access-denied when role grants create";
301
+ outcome = void 0;
302
+ _j.label = 18;
303
+ case 18:
304
+ _j.trys.push([18, 20, , 21]);
305
+ _b = { resolved: true };
306
+ return [4 /*yield*/, sdkNonAdmin_1.api.ai_conversations.agent_message({
307
+ messages: [{ role: 'user', content: [{ type: 'text', text: 'positive-case test' }] }],
308
+ maxTokens: 16,
309
+ })];
310
+ case 19:
311
+ outcome = (_b.value = _j.sent(), _b);
312
+ return [3 /*break*/, 21];
313
+ case 20:
314
+ e_2 = _j.sent();
315
+ outcome = { resolved: false, error: e_2 };
316
+ return [3 /*break*/, 21];
317
+ case 21:
318
+ // A downstream (e.g. credits) error is fine — the gate passed. An access denial is not.
319
+ record(label, outcome.resolved || !isAccessDenial(outcome.error), outcome.resolved
320
+ ? "allowed; result=".concat(describe(outcome.value))
321
+ : "gate passed, rejected downstream with ".concat(errorMessage(outcome.error)));
322
+ // 5. The create-granted (read/update-denied) role must still be blocked from CONTINUING an
323
+ // existing conversation — send_message with conversationId returns the full stored history
324
+ // and appends to it. Fake id is fine: the access check must fire before any lookup.
325
+ return [4 /*yield*/, expect_rejected("ai_conversations.send_message with conversationId must 403 when role denies read/update", function () { return sdkNonAdmin_1.api.ai_conversations.send_message({
326
+ message: 'conversationId bypass test',
327
+ type: 'Test',
328
+ maxTokens: 1,
329
+ conversationId: new bson_1.ObjectId().toHexString(),
330
+ }); }, function (e) {
331
+ var _a, _b;
332
+ var msg = ((_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : '').toLowerCase();
333
+ var status = (_b = e === null || e === void 0 ? void 0 : e.status) !== null && _b !== void 0 ? _b : e === null || e === void 0 ? void 0 : e.code;
334
+ return status === 403 || status === 401
335
+ || msg.includes('access') || msg.includes('permission') || msg.includes('forbidden');
336
+ })];
337
+ case 22:
338
+ // 5. The create-granted (read/update-denied) role must still be blocked from CONTINUING an
339
+ // existing conversation — send_message with conversationId returns the full stored history
340
+ // and appends to it. Fake id is fine: the access check must fire before any lookup.
341
+ _j.sent();
342
+ return [4 /*yield*/, expect_rejected("ai_conversations.agent_message with conversationId must 403 when role denies read/update", function () { return sdkNonAdmin_1.api.ai_conversations.agent_message({
343
+ messages: [{ role: 'user', content: [{ type: 'text', text: 'conversationId bypass test' }] }],
344
+ maxTokens: 16,
345
+ conversationId: new bson_1.ObjectId().toHexString(),
346
+ }); }, isAccessDenial)
347
+ // 6. Regression: a role with default provider permissions (ai_conversations = Assigned)
348
+ // must be able to generate a new conversation without a 500. Previously the
349
+ // post-generation $push ran through the access-scoped DB, matched nothing under
350
+ // "Assigned", and crashed the handler with "Cannot read properties of null ('_id')".
351
+ //
352
+ // GATE-ONLY, by construction: organizations.creditCount is readonly in the schema, so a
353
+ // provisioned tenant has no credits and send_message 400s on credits BEFORE it reaches the
354
+ // $push this check guards. What it still proves is that the Assigned role passes the RBAC
355
+ // gate and the handler does not 500 on the way — the observed error is printed in the
356
+ // detail so a change of failure mode is visible in the check table rather than silent.
357
+ ];
358
+ case 23:
359
+ _j.sent();
360
+ // 6. Regression: a role with default provider permissions (ai_conversations = Assigned)
361
+ // must be able to generate a new conversation without a 500. Previously the
362
+ // post-generation $push ran through the access-scoped DB, matched nothing under
363
+ // "Assigned", and crashed the handler with "Cannot read properties of null ('_id')".
364
+ //
365
+ // GATE-ONLY, by construction: organizations.creditCount is readonly in the schema, so a
366
+ // provisioned tenant has no credits and send_message 400s on credits BEFORE it reaches the
367
+ // $push this check guards. What it still proves is that the Assigned role passes the RBAC
368
+ // gate and the handler does not 500 on the way — the observed error is printed in the
369
+ // detail so a change of failure mode is visible in the check table rather than silent.
370
+ return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
371
+ role: assignedRoleName,
372
+ permissions: __assign({}, constants_1.PROVIDER_PERMISSIONS),
373
+ })];
374
+ case 24:
375
+ // 6. Regression: a role with default provider permissions (ai_conversations = Assigned)
376
+ // must be able to generate a new conversation without a 500. Previously the
377
+ // post-generation $push ran through the access-scoped DB, matched nothing under
378
+ // "Assigned", and crashed the handler with "Cannot read properties of null ('_id')".
379
+ //
380
+ // GATE-ONLY, by construction: organizations.creditCount is readonly in the schema, so a
381
+ // provisioned tenant has no credits and send_message 400s on credits BEFORE it reaches the
382
+ // $push this check guards. What it still proves is that the Assigned role passes the RBAC
383
+ // gate and the handler does not 500 on the way — the observed error is printed in the
384
+ // detail so a change of failure mode is visible in the check table rather than silent.
385
+ _j.sent();
386
+ return [4 /*yield*/, sdk.api.users.updateOne(nonAdmin.id, { roles: [assignedRoleName] }, { replaceObjectFields: true })];
387
+ case 25:
388
+ _j.sent();
389
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 1500)];
390
+ case 26:
391
+ _j.sent();
392
+ return [4 /*yield*/, sdkNonAdmin_1.authenticate(nonAdmin.email, nonAdmin.password)];
393
+ case 27:
394
+ _j.sent();
395
+ label = "ai_conversations.send_message must not 500 for Assigned-access (default provider) role";
396
+ outcome = void 0;
397
+ _j.label = 28;
398
+ case 28:
399
+ _j.trys.push([28, 30, , 31]);
400
+ _c = { resolved: true };
401
+ return [4 /*yield*/, sdkNonAdmin_1.api.ai_conversations.send_message({
402
+ message: 'assigned-access regression test',
403
+ type: 'Test',
404
+ maxTokens: 1,
405
+ })];
406
+ case 29:
407
+ outcome = (_c.value = _j.sent(), _c);
408
+ return [3 /*break*/, 31];
409
+ case 30:
410
+ e_3 = _j.sent();
411
+ outcome = { resolved: false, error: e_3 };
412
+ return [3 /*break*/, 31];
413
+ case 31:
414
+ if (outcome.resolved) {
415
+ record(label, true, "ok; result=".concat(describe(outcome.value)));
416
+ }
417
+ else {
418
+ e = outcome.error;
419
+ msg = ((_e = e === null || e === void 0 ? void 0 : e.message) !== null && _e !== void 0 ? _e : '').toLowerCase();
420
+ status_1 = (_f = e === null || e === void 0 ? void 0 : e.status) !== null && _f !== void 0 ? _f : e === null || e === void 0 ? void 0 : e.code;
421
+ isCrash = status_1 === 500 || msg.includes('internal error') || msg.includes('cannot read properties');
422
+ record(label, !isCrash && !isAccessDenial(e), // the null-update crash, and an Assigned denial, are both regressions
423
+ "".concat(isCrash ? 'CRASHED' : isAccessDenial(e) ? 'ACCESS-DENIED' : 'gate passed, rejected downstream')
424
+ + " with ".concat(errorMessage(e)));
425
+ }
426
+ label = "ai_conversations.agent_message must not 500 for Assigned-access (default provider) role";
427
+ outcome = void 0;
428
+ _j.label = 32;
429
+ case 32:
430
+ _j.trys.push([32, 34, , 35]);
431
+ _d = { resolved: true };
432
+ return [4 /*yield*/, sdkNonAdmin_1.api.ai_conversations.agent_message({
433
+ messages: [{ role: 'user', content: [{ type: 'text', text: 'assigned-access regression test' }] }],
434
+ maxTokens: 16,
435
+ })];
436
+ case 33:
437
+ outcome = (_d.value = _j.sent(), _d);
438
+ return [3 /*break*/, 35];
439
+ case 34:
440
+ e_4 = _j.sent();
441
+ outcome = { resolved: false, error: e_4 };
442
+ return [3 /*break*/, 35];
443
+ case 35:
444
+ if (outcome.resolved) {
445
+ record(label, true, "ok; result=".concat(describe(outcome.value)));
446
+ }
447
+ else {
448
+ e = outcome.error;
449
+ msg = ((_g = e === null || e === void 0 ? void 0 : e.message) !== null && _g !== void 0 ? _g : '').toLowerCase();
450
+ status_2 = (_h = e === null || e === void 0 ? void 0 : e.status) !== null && _h !== void 0 ? _h : e === null || e === void 0 ? void 0 : e.code;
451
+ isCrash = status_2 === 500 || msg.includes('internal error') || msg.includes('cannot read properties');
452
+ record(label, !isCrash && !isAccessDenial(e), "".concat(isCrash ? 'CRASHED' : isAccessDenial(e) ? 'ACCESS-DENIED' : 'gate passed, rejected downstream')
453
+ + " with ".concat(errorMessage(e)));
454
+ }
455
+ return [3 /*break*/, 41];
456
+ case 36:
457
+ if (!tenant) return [3 /*break*/, 40];
458
+ _j.label = 37;
459
+ case 37:
460
+ _j.trys.push([37, 39, , 40]);
461
+ return [4 /*yield*/, tenant.teardown()];
462
+ case 38:
463
+ _j.sent();
464
+ return [3 /*break*/, 40];
465
+ case 39:
466
+ e_5 = _j.sent();
467
+ console.error('teardown failed', e_5);
468
+ return [3 /*break*/, 40];
469
+ case 40: return [7 /*endfinally*/];
470
+ case 41: return [2 /*return*/, checks];
471
+ }
359
472
  });
360
- };
473
+ }); };
474
+ exports.ai_conversations_rbac_checks = ai_conversations_rbac_checks;
475
+ /** Asserting wrapper, for standalone runs. */
476
+ var ai_conversations_rbac_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
477
+ var _a, _b;
478
+ return __generator(this, function (_c) {
479
+ switch (_c.label) {
480
+ case 0:
481
+ _a = setup_isolated_1.assert_checks;
482
+ _b = ['ai_conversations RBAC'];
483
+ return [4 /*yield*/, (0, exports.ai_conversations_rbac_checks)()];
484
+ case 1:
485
+ _a.apply(void 0, _b.concat([_c.sent()]));
486
+ return [2 /*return*/];
487
+ }
488
+ });
489
+ }); };
361
490
  exports.ai_conversations_rbac_tests = ai_conversations_rbac_tests;
491
+ /** Enrolls this suite in the auto-discovered parallel pool — see run_discovered_isolated_suites. */
492
+ exports.ISOLATED_SUITE = {
493
+ name: 'ai_conversations RBAC',
494
+ run: exports.ai_conversations_rbac_checks,
495
+ };
362
496
  // Allow running this test file independently
363
497
  if (require.main === module) {
364
498
  console.log("\uD83C\uDF10 Using API URL: ".concat(host));
365
- var sdk_2 = new sdk_1.Session({ host: host });
366
- var sdkNonAdmin_1 = new sdk_1.Session({ host: host });
367
- var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
368
- return __generator(this, function (_a) {
369
- switch (_a.label) {
370
- case 0: return [4 /*yield*/, (0, setup_1.setup_tests)(sdk_2, sdkNonAdmin_1)];
371
- case 1:
372
- _a.sent();
373
- return [4 /*yield*/, (0, exports.ai_conversations_rbac_tests)({ sdk: sdk_2, sdkNonAdmin: sdkNonAdmin_1 })];
374
- case 2:
375
- _a.sent();
376
- return [2 /*return*/];
377
- }
378
- });
379
- }); };
380
- runTests()
499
+ (0, exports.ai_conversations_rbac_tests)()
381
500
  .then(function () {
382
501
  console.log("✅ ai_conversations RBAC test suite completed successfully");
383
502
  process.exit(0);