@dakkitor/api-contracts 1.7.1 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/dist/abilities/abilities.contract.d.ts +1 -1
  2. package/dist/abilities/abilities.contract.d.ts.map +1 -1
  3. package/dist/abilities/abilities.contract.js +1 -0
  4. package/dist/abilities/abilities.contract.spec.js +50 -19
  5. package/dist/abilities/interconnection.abilities.json +6 -0
  6. package/dist/abilities/outreach.abilities.json +0 -7
  7. package/dist/abilities/second-agent.abilities.json +18 -91
  8. package/dist/abilities/team-leads.json +1 -0
  9. package/dist/abilities/worker-curator.abilities.json +2 -0
  10. package/dist/actives/actives.contract.d.ts +7083 -6905
  11. package/dist/actives/actives.contract.d.ts.map +1 -1
  12. package/dist/agent-client-links/agent-client-links.contract.d.ts +1645 -1543
  13. package/dist/agent-client-links/agent-client-links.contract.d.ts.map +1 -1
  14. package/dist/auth/auth.contract.d.ts +73 -67
  15. package/dist/auth/auth.contract.d.ts.map +1 -1
  16. package/dist/auth/auth.contract.js +1 -0
  17. package/dist/bookings/backdate-guard.spec.d.ts +2 -0
  18. package/dist/bookings/backdate-guard.spec.d.ts.map +1 -0
  19. package/dist/bookings/backdate-guard.spec.js +80 -0
  20. package/dist/bookings/bookings.contract.d.ts +11169 -10843
  21. package/dist/bookings/bookings.contract.d.ts.map +1 -1
  22. package/dist/bookings/bookings.contract.js +26 -2
  23. package/dist/call-history/call-history.contract.d.ts +913 -876
  24. package/dist/call-history/call-history.contract.d.ts.map +1 -1
  25. package/dist/calls-feed/calls-feed.contract.d.ts +126 -119
  26. package/dist/calls-feed/calls-feed.contract.d.ts.map +1 -1
  27. package/dist/candidate-calling/candidate-calling.contract.d.ts +13397 -0
  28. package/dist/candidate-calling/candidate-calling.contract.d.ts.map +1 -0
  29. package/dist/candidate-calling/candidate-calling.contract.js +206 -0
  30. package/dist/candidate-calling/candidate-calling.contract.spec.d.ts +2 -0
  31. package/dist/candidate-calling/candidate-calling.contract.spec.d.ts.map +1 -0
  32. package/dist/candidate-calling/candidate-calling.contract.spec.js +193 -0
  33. package/dist/client-contacts/client-contacts.contract.d.ts +290 -290
  34. package/dist/clients/clients.contract.d.ts +110 -110
  35. package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts +3052 -2948
  36. package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts.map +1 -1
  37. package/dist/collaborations/collaborations.contract.d.ts +2640 -2543
  38. package/dist/collaborations/collaborations.contract.d.ts.map +1 -1
  39. package/dist/common/common-schemas.d.ts +13 -13
  40. package/dist/common/common-schemas.d.ts.map +1 -1
  41. package/dist/common/common-schemas.js +1 -0
  42. package/dist/common/nino.d.ts +8 -0
  43. package/dist/common/nino.d.ts.map +1 -0
  44. package/dist/common/nino.js +26 -0
  45. package/dist/common/nino.spec.d.ts +2 -0
  46. package/dist/common/nino.spec.d.ts.map +1 -0
  47. package/dist/common/nino.spec.js +32 -0
  48. package/dist/companies/companies.contract.d.ts +30 -30
  49. package/dist/crews/crews.contract.d.ts +300 -300
  50. package/dist/cron-executions/cron-executions.contract.d.ts +26 -13
  51. package/dist/cron-executions/cron-executions.contract.d.ts.map +1 -1
  52. package/dist/cron-executions/cron-executions.contract.js +2 -0
  53. package/dist/cron-executions/cron-executions.contract.spec.d.ts +2 -0
  54. package/dist/cron-executions/cron-executions.contract.spec.d.ts.map +1 -0
  55. package/dist/cron-executions/cron-executions.contract.spec.js +27 -0
  56. package/dist/curated-worker-leads/candidate-booking-date-fields.spec.d.ts +2 -0
  57. package/dist/curated-worker-leads/candidate-booking-date-fields.spec.d.ts.map +1 -0
  58. package/dist/curated-worker-leads/candidate-booking-date-fields.spec.js +59 -0
  59. package/dist/curated-worker-leads/candidate-coordination.contract.d.ts +3483 -2798
  60. package/dist/curated-worker-leads/candidate-coordination.contract.d.ts.map +1 -1
  61. package/dist/curated-worker-leads/candidate-coordination.contract.js +59 -10
  62. package/dist/curated-worker-leads/candidate-coordination.contract.spec.js +11 -0
  63. package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts +429 -386
  64. package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts.map +1 -1
  65. package/dist/curated-worker-leads/contact-history.spec.js +56 -0
  66. package/dist/curated-worker-leads/curated-worker-lead-config.contract.d.ts +2 -85
  67. package/dist/curated-worker-leads/curated-worker-lead-config.contract.d.ts.map +1 -1
  68. package/dist/curated-worker-leads/curated-worker-lead-config.contract.js +17 -41
  69. package/dist/curated-worker-leads/curated-worker-lead-config.contract.spec.d.ts +2 -0
  70. package/dist/curated-worker-leads/curated-worker-lead-config.contract.spec.d.ts.map +1 -0
  71. package/dist/curated-worker-leads/curated-worker-lead-config.contract.spec.js +30 -0
  72. package/dist/curated-worker-leads/job-feed-match-counts.contract.spec.js +30 -0
  73. package/dist/curated-worker-leads/jobs-tab.contract.d.ts +5821 -5144
  74. package/dist/curated-worker-leads/jobs-tab.contract.d.ts.map +1 -1
  75. package/dist/curated-worker-leads/jobs-tab.contract.js +64 -12
  76. package/dist/curated-worker-leads/owned-jobs-tab.contract.d.ts +96 -96
  77. package/dist/curated-workers/curated-workers.contract.d.ts +1518 -1307
  78. package/dist/curated-workers/curated-workers.contract.d.ts.map +1 -1
  79. package/dist/curated-workers/curated-workers.contract.js +37 -6
  80. package/dist/dashboards/dashboard-widgets.contract.d.ts +425 -455
  81. package/dist/dashboards/dashboard-widgets.contract.d.ts.map +1 -1
  82. package/dist/dashboards/dashboard-widgets.contract.js +1 -11
  83. package/dist/dashboards/dashboard-widgets.retirement.spec.d.ts +2 -0
  84. package/dist/dashboards/dashboard-widgets.retirement.spec.d.ts.map +1 -0
  85. package/dist/dashboards/dashboard-widgets.retirement.spec.js +22 -0
  86. package/dist/dashboards/dashboard.contract.d.ts +16 -16
  87. package/dist/document-intake/document-intake.automation.spec.d.ts +2 -0
  88. package/dist/document-intake/document-intake.automation.spec.d.ts.map +1 -0
  89. package/dist/document-intake/document-intake.automation.spec.js +469 -0
  90. package/dist/document-intake/document-intake.card-side.spec.d.ts +2 -0
  91. package/dist/document-intake/document-intake.card-side.spec.d.ts.map +1 -0
  92. package/dist/document-intake/document-intake.card-side.spec.js +51 -0
  93. package/dist/document-intake/document-intake.contract.d.ts +9421 -1071
  94. package/dist/document-intake/document-intake.contract.d.ts.map +1 -1
  95. package/dist/document-intake/document-intake.contract.js +219 -5
  96. package/dist/document-intake/document-intake.contract.spec.d.ts +2 -0
  97. package/dist/document-intake/document-intake.contract.spec.d.ts.map +1 -0
  98. package/dist/document-intake/document-intake.contract.spec.js +37 -0
  99. package/dist/document-intake/document-intake.nino.spec.d.ts +2 -0
  100. package/dist/document-intake/document-intake.nino.spec.d.ts.map +1 -0
  101. package/dist/document-intake/document-intake.nino.spec.js +42 -0
  102. package/dist/export-jobs/export-jobs.contract.d.ts +670 -670
  103. package/dist/exports-events/exports-events.schemas.d.ts +4 -4
  104. package/dist/files/files.contract.d.ts +36 -36
  105. package/dist/index.d.ts +21 -9
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +21 -9
  108. package/dist/job-clusters/job-clusters.contract.d.ts +52 -52
  109. package/dist/jobs/jobs.contract.d.ts +8714 -8456
  110. package/dist/jobs/jobs.contract.d.ts.map +1 -1
  111. package/dist/kpi-impersonation/kpi-impersonation.contract.d.ts +102 -102
  112. package/dist/lead-assignments/lead-assignments.contract.d.ts +1290 -1219
  113. package/dist/lead-assignments/lead-assignments.contract.d.ts.map +1 -1
  114. package/dist/lead-distribution/agent-lead-distribution.contract.d.ts +330 -306
  115. package/dist/lead-distribution/agent-lead-distribution.contract.d.ts.map +1 -1
  116. package/dist/lead-distribution/lead-distribution-config.contract.d.ts +10 -10
  117. package/dist/leads/leads.contract.d.ts +245 -245
  118. package/dist/locations/locations.contract.d.ts +46 -46
  119. package/dist/notifications/notifications.contract.d.ts +85 -85
  120. package/dist/offices/offices.contract.d.ts +24 -24
  121. package/dist/outreach/__tests__/outreach-claim.test.js +33 -0
  122. package/dist/outreach/__tests__/outreach-contract-additions.spec.js +27 -0
  123. package/dist/outreach/__tests__/outreach-routes.test.js +8 -0
  124. package/dist/outreach/lab-outreach.contract.d.ts +48 -48
  125. package/dist/outreach/outreach-requests.contract.d.ts +272 -272
  126. package/dist/outreach/outreach-requests.schemas.d.ts +14 -14
  127. package/dist/outreach/outreach.contract.d.ts +583 -162
  128. package/dist/outreach/outreach.contract.d.ts.map +1 -1
  129. package/dist/outreach/outreach.contract.js +50 -1
  130. package/dist/outreach/outreach.schemas.d.ts +2 -2
  131. package/dist/outreach/relay-hub-outreach.contract.d.ts +1334 -0
  132. package/dist/outreach/relay-hub-outreach.contract.d.ts.map +1 -0
  133. package/dist/outreach/relay-hub-outreach.contract.js +113 -0
  134. package/dist/outreach/relay-hub-outreach.contract.spec.d.ts +2 -0
  135. package/dist/outreach/relay-hub-outreach.contract.spec.d.ts.map +1 -0
  136. package/dist/outreach/relay-hub-outreach.contract.spec.js +145 -0
  137. package/dist/outreach/relay-hub-outreach.schemas.d.ts +94 -0
  138. package/dist/outreach/relay-hub-outreach.schemas.d.ts.map +1 -0
  139. package/dist/outreach/relay-hub-outreach.schemas.js +15 -0
  140. package/dist/own-research/check-phone-response.spec.d.ts +2 -0
  141. package/dist/own-research/check-phone-response.spec.d.ts.map +1 -0
  142. package/dist/own-research/check-phone-response.spec.js +54 -0
  143. package/dist/own-research/own-research.contract.d.ts +1152 -1067
  144. package/dist/own-research/own-research.contract.d.ts.map +1 -1
  145. package/dist/own-research/own-research.contract.js +6 -1
  146. package/dist/proofs/proofs.contract.d.ts +196 -196
  147. package/dist/proofs/proofs.dtos.d.ts +104 -104
  148. package/dist/qualifications/qualifications.contract.d.ts +22 -22
  149. package/dist/realtime/realtime-telemetry.contract.d.ts +181 -0
  150. package/dist/realtime/realtime-telemetry.contract.d.ts.map +1 -0
  151. package/dist/realtime/realtime-telemetry.contract.js +81 -0
  152. package/dist/realtime/realtime-telemetry.contract.spec.d.ts +2 -0
  153. package/dist/realtime/realtime-telemetry.contract.spec.d.ts.map +1 -0
  154. package/dist/realtime/realtime-telemetry.contract.spec.js +41 -0
  155. package/dist/relay-pods/build-relay-pod-membership-rules.d.ts +9 -0
  156. package/dist/relay-pods/build-relay-pod-membership-rules.d.ts.map +1 -0
  157. package/dist/relay-pods/build-relay-pod-membership-rules.js +17 -0
  158. package/dist/relay-pods/build-relay-pod-membership-rules.spec.d.ts +2 -0
  159. package/dist/relay-pods/build-relay-pod-membership-rules.spec.d.ts.map +1 -0
  160. package/dist/relay-pods/build-relay-pod-membership-rules.spec.js +20 -0
  161. package/dist/relay-pods/relay-hub.contract.d.ts +1463 -0
  162. package/dist/relay-pods/relay-hub.contract.d.ts.map +1 -0
  163. package/dist/relay-pods/relay-hub.contract.js +140 -0
  164. package/dist/relay-pods/relay-hub.contract.spec.d.ts +2 -0
  165. package/dist/relay-pods/relay-hub.contract.spec.d.ts.map +1 -0
  166. package/dist/relay-pods/relay-hub.contract.spec.js +180 -0
  167. package/dist/relay-pods/relay-hub.schemas.d.ts +577 -0
  168. package/dist/relay-pods/relay-hub.schemas.d.ts.map +1 -0
  169. package/dist/relay-pods/relay-hub.schemas.js +158 -0
  170. package/dist/relay-pods/relay-lab-fleet.contract.d.ts +81 -81
  171. package/dist/relay-pods/relay-lab-fleet.schemas.d.ts +53 -53
  172. package/dist/{curated-worker-leads/lead-agent-area.contract.d.ts → relay-pods/relay-pod-members.contract.d.ts} +233 -126
  173. package/dist/relay-pods/relay-pod-members.contract.d.ts.map +1 -0
  174. package/dist/relay-pods/relay-pod-members.contract.js +73 -0
  175. package/dist/relay-pods/relay-pod-sessions.contract.d.ts +58 -58
  176. package/dist/relay-pods/relay-pods.contract.d.ts +169 -169
  177. package/dist/relay-pods/relay-pods.schemas.d.ts +46 -46
  178. package/dist/shared/summary-schemas.d.ts +10 -10
  179. package/dist/sheets-sync/__tests__/sheets-sync-events.schemas.test.js +22 -2
  180. package/dist/sheets-sync/sheets-sync-events.schemas.d.ts +30 -0
  181. package/dist/sheets-sync/sheets-sync-events.schemas.d.ts.map +1 -1
  182. package/dist/sheets-sync/sheets-sync-events.schemas.js +16 -1
  183. package/dist/sheets-sync/sheets-sync.contract.d.ts +829 -262
  184. package/dist/sheets-sync/sheets-sync.contract.d.ts.map +1 -1
  185. package/dist/sheets-sync/sheets-sync.contract.js +156 -34
  186. package/dist/telegram/telegram.contract.d.ts +12 -12
  187. package/dist/trades/trades.contract.d.ts +16 -16
  188. package/dist/user-access-grants/user-access-grants.contract.d.ts +383 -383
  189. package/dist/users/__tests__/assignable-roles.spec.js +1 -1
  190. package/dist/users/users.contract.d.ts +462 -431
  191. package/dist/users/users.contract.d.ts.map +1 -1
  192. package/dist/users/users.contract.js +19 -8
  193. package/dist/users/users.contract.spec.js +54 -0
  194. package/dist/voice-screener/voice-screener.contract.d.ts +237 -0
  195. package/dist/voice-screener/voice-screener.contract.d.ts.map +1 -0
  196. package/dist/voice-screener/voice-screener.contract.js +89 -0
  197. package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts +500 -260
  198. package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts.map +1 -1
  199. package/dist/worker-identity-cases/worker-identity-cases.contract.js +17 -1
  200. package/dist/worker-merge-proposals/worker-merge-proposals.contract.d.ts +130 -130
  201. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.d.ts +151 -151
  202. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.schemas.d.ts +15 -15
  203. package/dist/workers/do-not-contact.contract.d.ts +4 -4
  204. package/dist/workers/qualification-back-proof.spec.d.ts +2 -0
  205. package/dist/workers/qualification-back-proof.spec.d.ts.map +1 -0
  206. package/dist/workers/qualification-back-proof.spec.js +39 -0
  207. package/dist/workers/workers.contract.d.ts +3416 -3178
  208. package/dist/workers/workers.contract.d.ts.map +1 -1
  209. package/dist/workers/workers.contract.js +17 -0
  210. package/package.json +1 -1
  211. package/dist/curated-worker-leads/consent-queue.contract.d.ts +0 -4527
  212. package/dist/curated-worker-leads/consent-queue.contract.d.ts.map +0 -1
  213. package/dist/curated-worker-leads/consent-queue.contract.js +0 -201
  214. package/dist/curated-worker-leads/curated-worker-leads.contract.d.ts +0 -135
  215. package/dist/curated-worker-leads/curated-worker-leads.contract.d.ts.map +0 -1
  216. package/dist/curated-worker-leads/curated-worker-leads.contract.js +0 -32
  217. package/dist/curated-worker-leads/lead-agent-area.contract.d.ts.map +0 -1
  218. package/dist/curated-worker-leads/lead-agent-area.contract.js +0 -51
@@ -0,0 +1 @@
1
+ {"version":3,"file":"candidate-calling.contract.d.ts","sourceRoot":"","sources":["../../contracts/candidate-calling/candidate-calling.contract.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAchC,CAAC;AACZ,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,8BAA8B,CACtC,CAAC;AAEF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBjC,CAAC;AACZ,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,+BAA+B,CACvC,CAAC;AAEF,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOrC,CAAC;AAEZ,eAAO,MAAM,iCAAiC;;;;;;EAEnC,CAAC;AACZ,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,iCAAiC,CACzC,CAAC;AAEF,eAAO,MAAM,yCAAyC;;;;;;;;;EAK3C,CAAC;AACZ,MAAM,MAAM,mCAAmC,GAAG,CAAC,CAAC,KAAK,CACvD,OAAO,yCAAyC,CACjD,CAAC;AAEF,QAAA,MAAM,yCAAyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.candidateCallingContract = exports.CandidateCallReviewArtifactResponseSchema = exports.EndCandidateDialpadCallBodySchema = exports.CandidateCallingQueueConflictSchema = exports.CandidateCallingQueueViewSchema = exports.CandidateDialpadCallViewSchema = exports.CandidateCallingCandidateSchema = exports.CandidateCallingAvailabilitySchema = exports.CandidateDialpadCallStatusSchema = exports.CandidateCallingPauseReasonSchema = exports.CandidateCallingQueueChangedSchema = exports.CANDIDATE_CALLING_QUEUE_CHANGED_EVENT = exports.CandidateCallingQueueStatusSchema = void 0;
4
+ const core_1 = require("@ts-rest/core");
5
+ const zod_1 = require("zod");
6
+ const error_schemas_1 = require("../common/error-schemas");
7
+ const candidate_coordination_contract_1 = require("../curated-worker-leads/candidate-coordination.contract");
8
+ const jobs_tab_contract_1 = require("../curated-worker-leads/jobs-tab.contract");
9
+ const c = (0, core_1.initContract)();
10
+ exports.CandidateCallingQueueStatusSchema = zod_1.z.enum([
11
+ 'ACTIVE',
12
+ 'PAUSED',
13
+ 'STOPPED',
14
+ 'EXHAUSTED',
15
+ ]);
16
+ exports.CANDIDATE_CALLING_QUEUE_CHANGED_EVENT = 'candidate.calling-queue.changed';
17
+ exports.CandidateCallingQueueChangedSchema = zod_1.z
18
+ .object({
19
+ queueSessionId: zod_1.z.string().uuid(),
20
+ updatedAt: zod_1.z.string().datetime(),
21
+ })
22
+ .strict();
23
+ exports.CandidateCallingPauseReasonSchema = zod_1.z.enum([
24
+ 'AGENT_ENDED',
25
+ 'REMOTE_ENDED',
26
+ 'INITIATION_FAILED',
27
+ 'RATE_LIMITED',
28
+ 'DIALPAD_UNAVAILABLE',
29
+ 'JOB_UNAVAILABLE',
30
+ 'PROVIDER_CONFLICT',
31
+ ]);
32
+ exports.CandidateDialpadCallStatusSchema = zod_1.z.enum([
33
+ 'CLAIMED',
34
+ 'INITIATING',
35
+ 'INITIATION_UNCERTAIN',
36
+ 'RINGING',
37
+ 'CONNECTED',
38
+ 'ENDING',
39
+ 'PROCESSING',
40
+ 'FEEDBACK_RECORDED',
41
+ 'NEEDS_REVIEW',
42
+ 'INITIATION_FAILED',
43
+ 'CANCELLED',
44
+ ]);
45
+ exports.CandidateCallingAvailabilitySchema = zod_1.z
46
+ .object({ enabled: zod_1.z.boolean(), reason: zod_1.z.string().nullable() })
47
+ .strict();
48
+ exports.CandidateCallingCandidateSchema = zod_1.z.discriminatedUnion('subjectKind', [
49
+ zod_1.z
50
+ .object({
51
+ subjectKind: zod_1.z.literal('OWNED'),
52
+ card: jobs_tab_contract_1.OwnedCandidateCardSchema,
53
+ })
54
+ .strict(),
55
+ zod_1.z
56
+ .object({
57
+ subjectKind: zod_1.z.literal('CURATED'),
58
+ card: jobs_tab_contract_1.JobCandidateCardSchema,
59
+ })
60
+ .strict(),
61
+ ]);
62
+ exports.CandidateDialpadCallViewSchema = zod_1.z
63
+ .object({
64
+ id: zod_1.z.string().uuid(),
65
+ sequenceNumber: zod_1.z.number().int().positive(),
66
+ status: exports.CandidateDialpadCallStatusSchema,
67
+ continueWithNext: zod_1.z.boolean(),
68
+ isSandboxCall: zod_1.z.boolean(),
69
+ candidate: exports.CandidateCallingCandidateSchema,
70
+ context: candidate_coordination_contract_1.ContactSessionSummarySchema,
71
+ startedAt: zod_1.z.string().datetime(),
72
+ connectedAt: zod_1.z.string().datetime().nullable(),
73
+ endedAt: zod_1.z.string().datetime().nullable(),
74
+ retryAt: zod_1.z.string().datetime().nullable(),
75
+ })
76
+ .strict();
77
+ exports.CandidateCallingQueueViewSchema = zod_1.z
78
+ .object({
79
+ id: zod_1.z.string().uuid(),
80
+ jobId: zod_1.z.string().uuid(),
81
+ status: exports.CandidateCallingQueueStatusSchema,
82
+ pauseReason: exports.CandidateCallingPauseReasonSchema.nullable(),
83
+ eligibleCount: zod_1.z.number().int().min(0),
84
+ sandbox: zod_1.z
85
+ .object({
86
+ enabled: zod_1.z.boolean(),
87
+ maskedDestination: zod_1.z.string().nullable(),
88
+ })
89
+ .strict(),
90
+ currentCall: exports.CandidateDialpadCallViewSchema.nullable(),
91
+ recentCalls: zod_1.z.array(exports.CandidateDialpadCallViewSchema).max(10),
92
+ retryAt: zod_1.z.string().datetime().nullable(),
93
+ createdAt: zod_1.z.string().datetime(),
94
+ updatedAt: zod_1.z.string().datetime(),
95
+ })
96
+ .strict();
97
+ exports.CandidateCallingQueueConflictSchema = error_schemas_1.ErrorResponseSchema.extend({
98
+ details: zod_1.z
99
+ .object({
100
+ queueSessionId: zod_1.z.string().uuid(),
101
+ jobId: zod_1.z.string().uuid(),
102
+ })
103
+ .strict(),
104
+ }).strict();
105
+ exports.EndCandidateDialpadCallBodySchema = zod_1.z
106
+ .object({ continueWithNext: zod_1.z.boolean() })
107
+ .strict();
108
+ exports.CandidateCallReviewArtifactResponseSchema = zod_1.z
109
+ .object({
110
+ url: zod_1.z.string().url(),
111
+ expiresAt: zod_1.z.string().datetime(),
112
+ })
113
+ .strict();
114
+ const CandidateCallingActiveQueueResponseSchema = zod_1.z
115
+ .object({ queue: exports.CandidateCallingQueueViewSchema.nullable() })
116
+ .strict();
117
+ const CandidateCallingJobPathParamsSchema = zod_1.z.object({
118
+ jobId: zod_1.z.string().uuid(),
119
+ });
120
+ const CandidateCallingQueuePathParamsSchema = zod_1.z.object({
121
+ queueSessionId: zod_1.z.string().uuid(),
122
+ });
123
+ const CandidateDialpadCallPathParamsSchema = zod_1.z
124
+ .object({
125
+ callId: zod_1.z.string().uuid(),
126
+ })
127
+ .strict();
128
+ const EmptyBodySchema = zod_1.z.object({}).strict();
129
+ exports.candidateCallingContract = c.router({
130
+ availability: {
131
+ method: 'GET',
132
+ path: '/v2/candidate-calling-queues/availability',
133
+ responses: { 200: exports.CandidateCallingAvailabilitySchema },
134
+ },
135
+ createQueue: {
136
+ method: 'POST',
137
+ path: '/v2/jobs/:jobId/candidate-calling-queues',
138
+ pathParams: CandidateCallingJobPathParamsSchema,
139
+ body: EmptyBodySchema,
140
+ responses: {
141
+ 200: exports.CandidateCallingQueueViewSchema,
142
+ 403: error_schemas_1.ErrorResponseSchema,
143
+ 404: error_schemas_1.ErrorResponseSchema,
144
+ 409: exports.CandidateCallingQueueConflictSchema,
145
+ 503: error_schemas_1.ErrorResponseSchema,
146
+ },
147
+ },
148
+ activeQueue: {
149
+ method: 'GET',
150
+ path: '/v2/candidate-calling-queues/active',
151
+ responses: {
152
+ 200: CandidateCallingActiveQueueResponseSchema,
153
+ 403: error_schemas_1.ErrorResponseSchema,
154
+ },
155
+ },
156
+ nextCandidate: {
157
+ method: 'POST',
158
+ path: '/v2/candidate-calling-queues/:queueSessionId/next',
159
+ pathParams: CandidateCallingQueuePathParamsSchema,
160
+ body: EmptyBodySchema,
161
+ responses: {
162
+ 200: exports.CandidateCallingQueueViewSchema,
163
+ 403: error_schemas_1.ErrorResponseSchema,
164
+ 404: error_schemas_1.ErrorResponseSchema,
165
+ 409: error_schemas_1.ErrorResponseSchema,
166
+ 429: error_schemas_1.ErrorResponseSchema,
167
+ 503: error_schemas_1.ErrorResponseSchema,
168
+ },
169
+ },
170
+ endCall: {
171
+ method: 'POST',
172
+ path: '/v2/candidate-dialpad-calls/:callId/end',
173
+ pathParams: CandidateDialpadCallPathParamsSchema,
174
+ body: exports.EndCandidateDialpadCallBodySchema,
175
+ responses: {
176
+ 200: exports.CandidateCallingQueueViewSchema,
177
+ 403: error_schemas_1.ErrorResponseSchema,
178
+ 404: error_schemas_1.ErrorResponseSchema,
179
+ 409: error_schemas_1.ErrorResponseSchema,
180
+ },
181
+ },
182
+ stopQueue: {
183
+ method: 'DELETE',
184
+ path: '/v2/candidate-calling-queues/:queueSessionId',
185
+ pathParams: CandidateCallingQueuePathParamsSchema,
186
+ body: EmptyBodySchema,
187
+ responses: {
188
+ 200: exports.CandidateCallingQueueViewSchema,
189
+ 403: error_schemas_1.ErrorResponseSchema,
190
+ 404: error_schemas_1.ErrorResponseSchema,
191
+ 409: error_schemas_1.ErrorResponseSchema,
192
+ },
193
+ },
194
+ reviewArtifact: {
195
+ method: 'GET',
196
+ path: '/v2/candidate-dialpad-calls/:callId/review-artifact',
197
+ pathParams: CandidateDialpadCallPathParamsSchema,
198
+ responses: {
199
+ 200: exports.CandidateCallReviewArtifactResponseSchema,
200
+ 403: error_schemas_1.ErrorResponseSchema,
201
+ 404: error_schemas_1.ErrorResponseSchema,
202
+ 409: error_schemas_1.ErrorResponseSchema,
203
+ 410: error_schemas_1.ErrorResponseSchema,
204
+ },
205
+ },
206
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=candidate-calling.contract.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"candidate-calling.contract.spec.d.ts","sourceRoot":"","sources":["../../contracts/candidate-calling/candidate-calling.contract.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const candidate_calling_contract_1 = require("./candidate-calling.contract");
4
+ describe('candidate calling contract', () => {
5
+ it('pins the application routes', () => {
6
+ expect(candidate_calling_contract_1.candidateCallingContract.availability).toMatchObject({
7
+ method: 'GET',
8
+ path: '/v2/candidate-calling-queues/availability',
9
+ });
10
+ expect(candidate_calling_contract_1.candidateCallingContract.createQueue).toMatchObject({
11
+ method: 'POST',
12
+ path: '/v2/jobs/:jobId/candidate-calling-queues',
13
+ });
14
+ expect(candidate_calling_contract_1.candidateCallingContract.activeQueue).toMatchObject({
15
+ method: 'GET',
16
+ path: '/v2/candidate-calling-queues/active',
17
+ });
18
+ expect(candidate_calling_contract_1.candidateCallingContract.nextCandidate).toMatchObject({
19
+ method: 'POST',
20
+ path: '/v2/candidate-calling-queues/:queueSessionId/next',
21
+ });
22
+ expect(candidate_calling_contract_1.candidateCallingContract.endCall).toMatchObject({
23
+ method: 'POST',
24
+ path: '/v2/candidate-dialpad-calls/:callId/end',
25
+ });
26
+ expect(candidate_calling_contract_1.candidateCallingContract.stopQueue).toMatchObject({
27
+ method: 'DELETE',
28
+ path: '/v2/candidate-calling-queues/:queueSessionId',
29
+ });
30
+ expect(candidate_calling_contract_1.candidateCallingContract.reviewArtifact).toMatchObject({
31
+ method: 'GET',
32
+ path: '/v2/candidate-dialpad-calls/:callId/review-artifact',
33
+ });
34
+ });
35
+ it('validates every route path parameter as a UUID', () => {
36
+ const uuid = '88888888-8888-4888-8888-888888888888';
37
+ expect('pathParams' in candidate_calling_contract_1.candidateCallingContract.availability).toBe(false);
38
+ expect('pathParams' in candidate_calling_contract_1.candidateCallingContract.activeQueue).toBe(false);
39
+ expect(candidate_calling_contract_1.candidateCallingContract.createQueue.pathParams.safeParse({ jobId: uuid })
40
+ .success).toBe(true);
41
+ expect(candidate_calling_contract_1.candidateCallingContract.createQueue.pathParams.safeParse({
42
+ jobId: 'not-a-uuid',
43
+ }).success).toBe(false);
44
+ expect(candidate_calling_contract_1.candidateCallingContract.nextCandidate.pathParams.safeParse({
45
+ queueSessionId: uuid,
46
+ }).success).toBe(true);
47
+ expect(candidate_calling_contract_1.candidateCallingContract.nextCandidate.pathParams.safeParse({
48
+ queueSessionId: 'not-a-uuid',
49
+ }).success).toBe(false);
50
+ expect(candidate_calling_contract_1.candidateCallingContract.endCall.pathParams.safeParse({ callId: uuid })
51
+ .success).toBe(true);
52
+ expect(candidate_calling_contract_1.candidateCallingContract.endCall.pathParams.safeParse({
53
+ callId: 'not-a-uuid',
54
+ }).success).toBe(false);
55
+ expect(candidate_calling_contract_1.candidateCallingContract.stopQueue.pathParams.safeParse({
56
+ queueSessionId: uuid,
57
+ }).success).toBe(true);
58
+ expect(candidate_calling_contract_1.candidateCallingContract.stopQueue.pathParams.safeParse({
59
+ queueSessionId: 'not-a-uuid',
60
+ }).success).toBe(false);
61
+ expect(candidate_calling_contract_1.candidateCallingContract.reviewArtifact.pathParams.safeParse({
62
+ callId: uuid,
63
+ }).success).toBe(true);
64
+ expect(candidate_calling_contract_1.candidateCallingContract.reviewArtifact.pathParams.safeParse({
65
+ callId: 'not-a-uuid',
66
+ }).success).toBe(false);
67
+ expect(candidate_calling_contract_1.candidateCallingContract.reviewArtifact.pathParams.safeParse({
68
+ callId: uuid,
69
+ objectKey: 'private',
70
+ }).success).toBe(false);
71
+ });
72
+ it('pins every route response status set', () => {
73
+ expect(Object.keys(candidate_calling_contract_1.candidateCallingContract.availability.responses).map(Number)).toEqual([200]);
74
+ expect(Object.keys(candidate_calling_contract_1.candidateCallingContract.createQueue.responses).map(Number)).toEqual([200, 403, 404, 409, 503]);
75
+ expect(Object.keys(candidate_calling_contract_1.candidateCallingContract.activeQueue.responses).map(Number)).toEqual([200, 403]);
76
+ expect(Object.keys(candidate_calling_contract_1.candidateCallingContract.nextCandidate.responses).map(Number)).toEqual([200, 403, 404, 409, 429, 503]);
77
+ expect(Object.keys(candidate_calling_contract_1.candidateCallingContract.endCall.responses).map(Number)).toEqual([200, 403, 404, 409]);
78
+ expect(Object.keys(candidate_calling_contract_1.candidateCallingContract.stopQueue.responses).map(Number)).toEqual([200, 403, 404, 409]);
79
+ expect(Object.keys(candidate_calling_contract_1.candidateCallingContract.reviewArtifact.responses).map(Number)).toEqual([200, 403, 404, 409, 410]);
80
+ });
81
+ it('uses strict end intent and complete managed states', () => {
82
+ expect(candidate_calling_contract_1.candidateCallingContract.endCall.body.safeParse({
83
+ continueWithNext: true,
84
+ extra: true,
85
+ }).success).toBe(false);
86
+ expect(candidate_calling_contract_1.CandidateDialpadCallStatusSchema.options).toEqual([
87
+ 'CLAIMED',
88
+ 'INITIATING',
89
+ 'INITIATION_UNCERTAIN',
90
+ 'RINGING',
91
+ 'CONNECTED',
92
+ 'ENDING',
93
+ 'PROCESSING',
94
+ 'FEEDBACK_RECORDED',
95
+ 'NEEDS_REVIEW',
96
+ 'INITIATION_FAILED',
97
+ 'CANCELLED',
98
+ ]);
99
+ });
100
+ it('keeps candidate and active-queue wrappers strict', () => {
101
+ const candidate = {
102
+ subjectKind: 'OWNED',
103
+ card: {
104
+ id: '77777777-7777-4777-8777-777777777777',
105
+ firstName: 'Ana',
106
+ hasTools: true,
107
+ hasPpe: true,
108
+ offerOpenness: 'OPEN',
109
+ createdAt: '2026-08-19T10:00:00.000Z',
110
+ updatedAt: '2026-08-19T10:00:00.000Z',
111
+ hasPhoneNumber: true,
112
+ },
113
+ };
114
+ expect(candidate_calling_contract_1.CandidateCallingCandidateSchema.options[0].safeParse(candidate).success).toBe(true);
115
+ expect(candidate_calling_contract_1.CandidateCallingCandidateSchema.options[0].safeParse({
116
+ ...candidate,
117
+ extra: true,
118
+ }).success).toBe(false);
119
+ expect(candidate_calling_contract_1.candidateCallingContract.activeQueue.responses[200].safeParse({
120
+ queue: null,
121
+ extra: true,
122
+ }).success).toBe(false);
123
+ });
124
+ it('does not expose provider or artifact secrets', () => {
125
+ const candidate = candidate_calling_contract_1.CandidateCallingCandidateSchema.parse({
126
+ subjectKind: 'OWNED',
127
+ card: {
128
+ id: '77777777-7777-4777-8777-777777777777',
129
+ firstName: 'Ana',
130
+ hasTools: true,
131
+ hasPpe: true,
132
+ offerOpenness: 'OPEN',
133
+ createdAt: '2026-08-19T10:00:00.000Z',
134
+ updatedAt: '2026-08-19T10:00:00.000Z',
135
+ hasPhoneNumber: true,
136
+ phone: '+441234567890',
137
+ phoneNumbers: [{ phoneNumber: '+441234567890' }],
138
+ },
139
+ });
140
+ expect(candidate.card).not.toHaveProperty('phone');
141
+ expect(candidate.card).not.toHaveProperty('phoneNumbers');
142
+ const parsed = candidate_calling_contract_1.CandidateCallingQueueViewSchema.parse({
143
+ id: '55555555-5555-4555-8555-555555555555',
144
+ jobId: '66666666-6666-4666-8666-666666666666',
145
+ status: 'PAUSED',
146
+ pauseReason: 'AGENT_ENDED',
147
+ eligibleCount: 0,
148
+ sandbox: { enabled: true, maskedDestination: '******1234' },
149
+ currentCall: null,
150
+ recentCalls: [],
151
+ retryAt: null,
152
+ createdAt: '2026-08-19T10:00:00.000Z',
153
+ updatedAt: '2026-08-19T10:00:00.000Z',
154
+ });
155
+ expect(parsed).not.toHaveProperty('dialpadToken');
156
+ expect(parsed).not.toHaveProperty('recordingUrl');
157
+ expect(parsed).not.toHaveProperty('transcript');
158
+ });
159
+ it('keeps the on-demand review response strict and private by shape', () => {
160
+ const response = {
161
+ url: 'https://private.example.test/signed-review',
162
+ expiresAt: '2026-08-19T12:05:00.000Z',
163
+ };
164
+ expect(candidate_calling_contract_1.CandidateCallReviewArtifactResponseSchema.parse(response)).toEqual(response);
165
+ expect(candidate_calling_contract_1.CandidateCallReviewArtifactResponseSchema.safeParse({
166
+ ...response,
167
+ objectKey: 'candidate-calls/private/recording',
168
+ }).success).toBe(false);
169
+ expect(candidate_calling_contract_1.CandidateCallReviewArtifactResponseSchema.safeParse({
170
+ ...response,
171
+ transcript: 'private transcript',
172
+ }).success).toBe(false);
173
+ expect(candidate_calling_contract_1.CandidateCallReviewArtifactResponseSchema.safeParse({
174
+ ...response,
175
+ modelOutput: { outcome: 'INTERESTED' },
176
+ }).success).toBe(false);
177
+ });
178
+ it('publishes only queue identity and change time', () => {
179
+ const payload = {
180
+ queueSessionId: '55555555-5555-4555-8555-555555555555',
181
+ updatedAt: '2026-08-19T12:00:00.000Z',
182
+ };
183
+ expect(candidate_calling_contract_1.CandidateCallingQueueChangedSchema.parse(payload)).toEqual(payload);
184
+ expect(candidate_calling_contract_1.CandidateCallingQueueChangedSchema.safeParse({
185
+ ...payload,
186
+ phoneNumber: '+447700900123',
187
+ }).success).toBe(false);
188
+ expect(candidate_calling_contract_1.CandidateCallingQueueChangedSchema.safeParse({
189
+ ...payload,
190
+ transcript: 'private transcript',
191
+ }).success).toBe(false);
192
+ });
193
+ });