@dakkitor/api-contracts 1.7.1 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abilities/abilities.contract.spec.js +39 -19
- package/dist/abilities/interconnection.abilities.json +6 -0
- package/dist/abilities/outreach.abilities.json +0 -7
- package/dist/abilities/second-agent.abilities.json +2 -91
- package/dist/abilities/team-leads.json +1 -0
- package/dist/abilities/worker-curator.abilities.json +2 -0
- package/dist/actives/actives.contract.d.ts +2562 -2515
- package/dist/actives/actives.contract.d.ts.map +1 -1
- package/dist/agent-client-links/agent-client-links.contract.d.ts +908 -908
- package/dist/auth/auth.contract.d.ts +50 -44
- package/dist/auth/auth.contract.d.ts.map +1 -1
- package/dist/auth/auth.contract.js +1 -0
- package/dist/bookings/backdate-guard.spec.d.ts +2 -0
- package/dist/bookings/backdate-guard.spec.d.ts.map +1 -0
- package/dist/bookings/backdate-guard.spec.js +80 -0
- package/dist/bookings/bookings.contract.d.ts +4918 -4824
- package/dist/bookings/bookings.contract.d.ts.map +1 -1
- package/dist/bookings/bookings.contract.js +26 -2
- package/dist/call-history/call-history.contract.d.ts +434 -434
- package/dist/calls-feed/calls-feed.contract.d.ts +70 -70
- package/dist/client-contacts/client-contacts.contract.d.ts +290 -290
- package/dist/clients/clients.contract.d.ts +110 -110
- package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts +1412 -1412
- package/dist/collaborations/collaborations.contract.d.ts +1278 -1278
- package/dist/common/common-schemas.d.ts +13 -13
- package/dist/common/common-schemas.d.ts.map +1 -1
- package/dist/common/common-schemas.js +1 -0
- package/dist/common/nino.d.ts +8 -0
- package/dist/common/nino.d.ts.map +1 -0
- package/dist/common/nino.js +26 -0
- package/dist/common/nino.spec.d.ts +2 -0
- package/dist/common/nino.spec.d.ts.map +1 -0
- package/dist/common/nino.spec.js +32 -0
- package/dist/companies/companies.contract.d.ts +30 -30
- package/dist/crews/crews.contract.d.ts +300 -300
- package/dist/cron-executions/cron-executions.contract.d.ts +19 -6
- package/dist/cron-executions/cron-executions.contract.d.ts.map +1 -1
- package/dist/cron-executions/cron-executions.contract.js +1 -0
- package/dist/cron-executions/cron-executions.contract.spec.d.ts +2 -0
- package/dist/cron-executions/cron-executions.contract.spec.d.ts.map +1 -0
- package/dist/cron-executions/cron-executions.contract.spec.js +27 -0
- package/dist/curated-worker-leads/candidate-booking-date-fields.spec.d.ts +2 -0
- package/dist/curated-worker-leads/candidate-booking-date-fields.spec.d.ts.map +1 -0
- package/dist/curated-worker-leads/candidate-booking-date-fields.spec.js +59 -0
- package/dist/curated-worker-leads/candidate-coordination.contract.d.ts +1255 -1188
- package/dist/curated-worker-leads/candidate-coordination.contract.d.ts.map +1 -1
- package/dist/curated-worker-leads/candidate-coordination.contract.js +22 -6
- package/dist/curated-worker-leads/candidate-coordination.contract.spec.js +11 -0
- package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts +347 -304
- package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts.map +1 -1
- package/dist/curated-worker-leads/contact-history.spec.js +1 -0
- package/dist/curated-worker-leads/curated-worker-lead-config.contract.d.ts +2 -85
- package/dist/curated-worker-leads/curated-worker-lead-config.contract.d.ts.map +1 -1
- package/dist/curated-worker-leads/curated-worker-lead-config.contract.js +17 -41
- package/dist/curated-worker-leads/curated-worker-lead-config.contract.spec.d.ts +2 -0
- package/dist/curated-worker-leads/curated-worker-lead-config.contract.spec.d.ts.map +1 -0
- package/dist/curated-worker-leads/curated-worker-lead-config.contract.spec.js +30 -0
- package/dist/curated-worker-leads/job-feed-match-counts.contract.spec.js +30 -0
- package/dist/curated-worker-leads/jobs-tab.contract.d.ts +6058 -5381
- package/dist/curated-worker-leads/jobs-tab.contract.d.ts.map +1 -1
- package/dist/curated-worker-leads/jobs-tab.contract.js +64 -12
- package/dist/curated-worker-leads/owned-jobs-tab.contract.d.ts +88 -88
- package/dist/curated-workers/curated-workers.contract.d.ts +1173 -962
- package/dist/curated-workers/curated-workers.contract.d.ts.map +1 -1
- package/dist/curated-workers/curated-workers.contract.js +37 -6
- package/dist/dashboards/dashboard-widgets.contract.d.ts +43 -73
- package/dist/dashboards/dashboard-widgets.contract.d.ts.map +1 -1
- package/dist/dashboards/dashboard-widgets.contract.js +1 -11
- package/dist/dashboards/dashboard-widgets.retirement.spec.d.ts +2 -0
- package/dist/dashboards/dashboard-widgets.retirement.spec.d.ts.map +1 -0
- package/dist/dashboards/dashboard-widgets.retirement.spec.js +22 -0
- package/dist/document-intake/document-intake.automation.spec.d.ts +2 -0
- package/dist/document-intake/document-intake.automation.spec.d.ts.map +1 -0
- package/dist/document-intake/document-intake.automation.spec.js +469 -0
- package/dist/document-intake/document-intake.card-side.spec.d.ts +2 -0
- package/dist/document-intake/document-intake.card-side.spec.d.ts.map +1 -0
- package/dist/document-intake/document-intake.card-side.spec.js +51 -0
- package/dist/document-intake/document-intake.contract.d.ts +9421 -1071
- package/dist/document-intake/document-intake.contract.d.ts.map +1 -1
- package/dist/document-intake/document-intake.contract.js +219 -5
- package/dist/document-intake/document-intake.contract.spec.d.ts +2 -0
- package/dist/document-intake/document-intake.contract.spec.d.ts.map +1 -0
- package/dist/document-intake/document-intake.contract.spec.js +37 -0
- package/dist/document-intake/document-intake.nino.spec.d.ts +2 -0
- package/dist/document-intake/document-intake.nino.spec.d.ts.map +1 -0
- package/dist/document-intake/document-intake.nino.spec.js +42 -0
- package/dist/export-jobs/export-jobs.contract.d.ts +426 -426
- package/dist/files/files.contract.d.ts +36 -36
- package/dist/index.d.ts +17 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -9
- package/dist/job-clusters/job-clusters.contract.d.ts +52 -52
- package/dist/jobs/jobs.contract.d.ts +3610 -3610
- package/dist/kpi-impersonation/kpi-impersonation.contract.d.ts +56 -56
- package/dist/lead-assignments/lead-assignments.contract.d.ts +706 -706
- package/dist/lead-distribution/agent-lead-distribution.contract.d.ts +220 -220
- package/dist/lead-distribution/lead-distribution-config.contract.d.ts +10 -10
- package/dist/leads/leads.contract.d.ts +86 -86
- package/dist/locations/locations.contract.d.ts +46 -46
- package/dist/notifications/notifications.contract.d.ts +18 -18
- package/dist/offices/offices.contract.d.ts +24 -24
- package/dist/outreach/__tests__/outreach-contract-additions.spec.js +27 -0
- package/dist/outreach/lab-outreach.contract.d.ts +48 -48
- package/dist/outreach/outreach-requests.contract.d.ts +272 -272
- package/dist/outreach/outreach-requests.schemas.d.ts +14 -14
- package/dist/outreach/outreach.contract.d.ts +12 -12
- package/dist/outreach/outreach.schemas.d.ts +2 -2
- package/dist/outreach/relay-hub-outreach.contract.d.ts +1156 -0
- package/dist/outreach/relay-hub-outreach.contract.d.ts.map +1 -0
- package/dist/outreach/relay-hub-outreach.contract.js +103 -0
- package/dist/outreach/relay-hub-outreach.contract.spec.d.ts +2 -0
- package/dist/outreach/relay-hub-outreach.contract.spec.d.ts.map +1 -0
- package/dist/outreach/relay-hub-outreach.contract.spec.js +119 -0
- package/dist/own-research/own-research.contract.d.ts +708 -708
- package/dist/proofs/proofs.contract.d.ts +196 -196
- package/dist/proofs/proofs.dtos.d.ts +104 -104
- package/dist/qualifications/qualifications.contract.d.ts +22 -22
- package/dist/realtime/realtime-telemetry.contract.d.ts +181 -0
- package/dist/realtime/realtime-telemetry.contract.d.ts.map +1 -0
- package/dist/realtime/realtime-telemetry.contract.js +81 -0
- package/dist/realtime/realtime-telemetry.contract.spec.d.ts +2 -0
- package/dist/realtime/realtime-telemetry.contract.spec.d.ts.map +1 -0
- package/dist/realtime/realtime-telemetry.contract.spec.js +41 -0
- package/dist/relay-pods/build-relay-pod-membership-rules.d.ts +9 -0
- package/dist/relay-pods/build-relay-pod-membership-rules.d.ts.map +1 -0
- package/dist/relay-pods/build-relay-pod-membership-rules.js +17 -0
- package/dist/relay-pods/build-relay-pod-membership-rules.spec.d.ts +2 -0
- package/dist/relay-pods/build-relay-pod-membership-rules.spec.d.ts.map +1 -0
- package/dist/relay-pods/build-relay-pod-membership-rules.spec.js +20 -0
- package/dist/relay-pods/relay-hub.contract.d.ts +1463 -0
- package/dist/relay-pods/relay-hub.contract.d.ts.map +1 -0
- package/dist/relay-pods/relay-hub.contract.js +140 -0
- package/dist/relay-pods/relay-hub.contract.spec.d.ts +2 -0
- package/dist/relay-pods/relay-hub.contract.spec.d.ts.map +1 -0
- package/dist/relay-pods/relay-hub.contract.spec.js +180 -0
- package/dist/relay-pods/relay-hub.schemas.d.ts +577 -0
- package/dist/relay-pods/relay-hub.schemas.d.ts.map +1 -0
- package/dist/relay-pods/relay-hub.schemas.js +158 -0
- package/dist/relay-pods/relay-lab-fleet.contract.d.ts +81 -81
- package/dist/relay-pods/relay-lab-fleet.schemas.d.ts +53 -53
- package/dist/{curated-worker-leads/lead-agent-area.contract.d.ts → relay-pods/relay-pod-members.contract.d.ts} +233 -126
- package/dist/relay-pods/relay-pod-members.contract.d.ts.map +1 -0
- package/dist/relay-pods/relay-pod-members.contract.js +73 -0
- package/dist/relay-pods/relay-pod-sessions.contract.d.ts +58 -58
- package/dist/relay-pods/relay-pods.contract.d.ts +169 -169
- package/dist/relay-pods/relay-pods.schemas.d.ts +46 -46
- package/dist/shared/summary-schemas.d.ts +10 -10
- package/dist/sheets-sync/__tests__/sheets-sync-events.schemas.test.js +22 -2
- package/dist/sheets-sync/sheets-sync-events.schemas.d.ts +30 -0
- package/dist/sheets-sync/sheets-sync-events.schemas.d.ts.map +1 -1
- package/dist/sheets-sync/sheets-sync-events.schemas.js +16 -1
- package/dist/sheets-sync/sheets-sync.contract.d.ts +829 -262
- package/dist/sheets-sync/sheets-sync.contract.d.ts.map +1 -1
- package/dist/sheets-sync/sheets-sync.contract.js +156 -34
- package/dist/telegram/telegram.contract.d.ts +12 -12
- package/dist/trades/trades.contract.d.ts +16 -16
- package/dist/user-access-grants/user-access-grants.contract.d.ts +226 -226
- package/dist/users/__tests__/assignable-roles.spec.js +1 -1
- package/dist/users/users.contract.d.ts +327 -325
- package/dist/users/users.contract.d.ts.map +1 -1
- package/dist/users/users.contract.js +10 -7
- package/dist/users/users.contract.spec.js +15 -0
- package/dist/voice-screener/voice-screener.contract.d.ts +237 -0
- package/dist/voice-screener/voice-screener.contract.d.ts.map +1 -0
- package/dist/voice-screener/voice-screener.contract.js +89 -0
- package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts +500 -260
- package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts.map +1 -1
- package/dist/worker-identity-cases/worker-identity-cases.contract.js +17 -1
- package/dist/worker-merge-proposals/worker-merge-proposals.contract.d.ts +130 -130
- package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.d.ts +35 -35
- package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.schemas.d.ts +15 -15
- package/dist/workers/do-not-contact.contract.d.ts +4 -4
- package/dist/workers/qualification-back-proof.spec.d.ts +2 -0
- package/dist/workers/qualification-back-proof.spec.d.ts.map +1 -0
- package/dist/workers/qualification-back-proof.spec.js +39 -0
- package/dist/workers/workers.contract.d.ts +1969 -1775
- package/dist/workers/workers.contract.d.ts.map +1 -1
- package/dist/workers/workers.contract.js +5 -0
- package/package.json +1 -1
- package/dist/curated-worker-leads/consent-queue.contract.d.ts +0 -4527
- package/dist/curated-worker-leads/consent-queue.contract.d.ts.map +0 -1
- package/dist/curated-worker-leads/consent-queue.contract.js +0 -201
- package/dist/curated-worker-leads/curated-worker-leads.contract.d.ts +0 -135
- package/dist/curated-worker-leads/curated-worker-leads.contract.d.ts.map +0 -1
- package/dist/curated-worker-leads/curated-worker-leads.contract.js +0 -32
- package/dist/curated-worker-leads/lead-agent-area.contract.d.ts.map +0 -1
- package/dist/curated-worker-leads/lead-agent-area.contract.js +0 -51
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.contract.d.ts","sourceRoot":"","sources":["../../contracts/users/users.contract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,uBAAuB,EAOxB,MAAM,0BAA0B,CAAC;AAQlC,eAAO,MAAM,cAAc,iKAc1B,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"users.contract.d.ts","sourceRoot":"","sources":["../../contracts/users/users.contract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,uBAAuB,EAOxB,MAAM,0BAA0B,CAAC;AAQlC,eAAO,MAAM,cAAc,iKAc1B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,qqCAyB/B,CAAC;AAEJ,eAAO,MAAM,gBAAgB,mCAE3B,CAAC;AAEH,eAAO,MAAM,wBAAwB,sEAMnC,CAAC;AAEH,uEAAuE;AACvE,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMvD,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;EAEhC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;EAEtC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;EAEtC,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;EAMM,CAAC;AAElD,eAAO,MAAM,2BAA2B;;;;;;;;;;;;WAEM,CAAC;AAE/C,eAAO,MAAM,iBAAiB;;;;;;;;;EAQ5B,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCrB,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBM,CAAC;AAEpC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBM,CAAC;AAEpC,eAAO,MAAM,wBAAwB;;;;;;;;;;;;EAQnC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWM,CAAC;AAEzC,eAAO,MAAM,6BAA6B;;;;;;EAIM,CAAC;AAEjD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc3B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CM,CAAC;AAEjC,eAAO,MAAM,oBAAoB;;;;;;;;;EAQM,CAAC;AAExC,eAAO,MAAM,kBAAkB;;;;;;EAOM,CAAC;AAEtC,eAAO,MAAM,uBAAuB;;;;;;EAOM,CAAC;AAE3C,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIO,CAAC;AAEhD,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;EAKM,CAAC;AAE/C,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;EAOM,CAAC;AAElD,eAAO,MAAM,gCAAgC;;;;;;;;;;;;EAI3C,CAAC;AAEH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKM,CAAC;AAEvD,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAC9C,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,8BAA8B,CACtC,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,gCAAgC,CACxC,CAAC;AACF,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CACjD,OAAO,mCAAmC,CAC3C,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,8BAA8B,CACtC,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC5E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAIhF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8MzB,CAAC"}
|
|
@@ -27,11 +27,13 @@ exports.UserRoleSchema = zod_1.z.enum([
|
|
|
27
27
|
* rule: INTERCONNECTION is a modifier role (it only lifts curated-lead
|
|
28
28
|
* scoping) and is only valid alongside SECOND_AGENT.
|
|
29
29
|
*
|
|
30
|
-
* OUTREACH is a
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
30
|
+
* OUTREACH is valid either as a modifier on the SECOND_AGENT + INTERCONNECTION
|
|
31
|
+
* pair, or paired with FIRST_AGENT alone for lab-only outreach. The two
|
|
32
|
+
* pairings grant different things (see CaslAbilityFactory): only the former
|
|
33
|
+
* gets OutreachRequest authority, while relay pod access itself is
|
|
34
|
+
* membership-derived and applies to both. No separate "not with ADMIN" rule
|
|
35
|
+
* is needed for the SECOND_AGENT + INTERCONNECTION case — INTERCONNECTION
|
|
36
|
+
* already forbids ADMIN and WORKER_CURATOR, so the exclusion is transitive.
|
|
35
37
|
*/
|
|
36
38
|
exports.AssignableRolesSchema = zod_1.z
|
|
37
39
|
.array(exports.UserRoleSchema)
|
|
@@ -41,8 +43,9 @@ exports.AssignableRolesSchema = zod_1.z
|
|
|
41
43
|
message: 'INTERCONNECTION cannot be combined with ADMIN or WORKER_CURATOR',
|
|
42
44
|
})
|
|
43
45
|
.refine((roles) => !roles.includes('OUTREACH') ||
|
|
44
|
-
(roles.includes('SECOND_AGENT') && roles.includes('INTERCONNECTION'))
|
|
45
|
-
|
|
46
|
+
(roles.includes('SECOND_AGENT') && roles.includes('INTERCONNECTION')) ||
|
|
47
|
+
roles.includes('FIRST_AGENT'), {
|
|
48
|
+
message: 'OUTREACH requires either FIRST_AGENT, or both SECOND_AGENT and INTERCONNECTION',
|
|
46
49
|
});
|
|
47
50
|
exports.UserStatusSchema = zod_1.z.enum(['ACTIVE', 'INACTIVE'], {
|
|
48
51
|
message: 'Required',
|
|
@@ -101,3 +101,18 @@ describe('INTERCONNECTION exclusivity (candidate-only curated access)', () => {
|
|
|
101
101
|
expect(result.success).toBe(true);
|
|
102
102
|
});
|
|
103
103
|
});
|
|
104
|
+
describe('OUTREACH role pairing', () => {
|
|
105
|
+
it('accepts OUTREACH with FIRST_AGENT', () => {
|
|
106
|
+
expect(users_contract_1.AssignableRolesSchema.safeParse(['FIRST_AGENT', 'OUTREACH']).success).toBe(true);
|
|
107
|
+
});
|
|
108
|
+
it('accepts OUTREACH with SECOND_AGENT + INTERCONNECTION', () => {
|
|
109
|
+
expect(users_contract_1.AssignableRolesSchema.safeParse([
|
|
110
|
+
'SECOND_AGENT',
|
|
111
|
+
'INTERCONNECTION',
|
|
112
|
+
'OUTREACH',
|
|
113
|
+
]).success).toBe(true);
|
|
114
|
+
});
|
|
115
|
+
it('rejects OUTREACH on its own', () => {
|
|
116
|
+
expect(users_contract_1.AssignableRolesSchema.safeParse(['OUTREACH']).success).toBe(false);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const VoiceScreeningStatusSchema: z.ZodEnum<["PENDING", "DIALING", "IN_PROGRESS", "COMPLETED", "NO_ANSWER", "VOICEMAIL", "DECLINED", "FAILED", "CANCELED"]>;
|
|
3
|
+
export declare const VoiceScreeningSubjectKindSchema: z.ZodEnum<["OWNED", "CURATED"]>;
|
|
4
|
+
export declare const VoiceScreeningTurnSchema: z.ZodObject<{
|
|
5
|
+
role: z.ZodEnum<["WORKER", "AI"]>;
|
|
6
|
+
text: z.ZodString;
|
|
7
|
+
at: z.ZodString;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
at: string;
|
|
10
|
+
role: "AI" | "WORKER";
|
|
11
|
+
text: string;
|
|
12
|
+
}, {
|
|
13
|
+
at: string;
|
|
14
|
+
role: "AI" | "WORKER";
|
|
15
|
+
text: string;
|
|
16
|
+
}>;
|
|
17
|
+
export declare const VoiceScreeningDetailSchema: z.ZodObject<{
|
|
18
|
+
id: z.ZodString;
|
|
19
|
+
jobId: z.ZodString;
|
|
20
|
+
subjectKind: z.ZodEnum<["OWNED", "CURATED"]>;
|
|
21
|
+
subjectId: z.ZodString;
|
|
22
|
+
status: z.ZodEnum<["PENDING", "DIALING", "IN_PROGRESS", "COMPLETED", "NO_ANSWER", "VOICEMAIL", "DECLINED", "FAILED", "CANCELED"]>;
|
|
23
|
+
startedAt: z.ZodNullable<z.ZodString>;
|
|
24
|
+
endedAt: z.ZodNullable<z.ZodString>;
|
|
25
|
+
durationSeconds: z.ZodNullable<z.ZodNumber>;
|
|
26
|
+
transcript: z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
27
|
+
role: z.ZodEnum<["WORKER", "AI"]>;
|
|
28
|
+
text: z.ZodString;
|
|
29
|
+
at: z.ZodString;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
at: string;
|
|
32
|
+
role: "AI" | "WORKER";
|
|
33
|
+
text: string;
|
|
34
|
+
}, {
|
|
35
|
+
at: string;
|
|
36
|
+
role: "AI" | "WORKER";
|
|
37
|
+
text: string;
|
|
38
|
+
}>, "many">>;
|
|
39
|
+
outcome: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
40
|
+
fidelityFlag: z.ZodNullable<z.ZodString>;
|
|
41
|
+
recordingUrl: z.ZodNullable<z.ZodString>;
|
|
42
|
+
isTest: z.ZodBoolean;
|
|
43
|
+
}, "strip", z.ZodTypeAny, {
|
|
44
|
+
status: "PENDING" | "NO_ANSWER" | "COMPLETED" | "FAILED" | "IN_PROGRESS" | "DECLINED" | "CANCELED" | "DIALING" | "VOICEMAIL";
|
|
45
|
+
id: string;
|
|
46
|
+
jobId: string;
|
|
47
|
+
subjectKind: "OWNED" | "CURATED";
|
|
48
|
+
subjectId: string;
|
|
49
|
+
outcome: Record<string, unknown> | null;
|
|
50
|
+
startedAt: string | null;
|
|
51
|
+
endedAt: string | null;
|
|
52
|
+
durationSeconds: number | null;
|
|
53
|
+
transcript: {
|
|
54
|
+
at: string;
|
|
55
|
+
role: "AI" | "WORKER";
|
|
56
|
+
text: string;
|
|
57
|
+
}[] | null;
|
|
58
|
+
fidelityFlag: string | null;
|
|
59
|
+
recordingUrl: string | null;
|
|
60
|
+
isTest: boolean;
|
|
61
|
+
}, {
|
|
62
|
+
status: "PENDING" | "NO_ANSWER" | "COMPLETED" | "FAILED" | "IN_PROGRESS" | "DECLINED" | "CANCELED" | "DIALING" | "VOICEMAIL";
|
|
63
|
+
id: string;
|
|
64
|
+
jobId: string;
|
|
65
|
+
subjectKind: "OWNED" | "CURATED";
|
|
66
|
+
subjectId: string;
|
|
67
|
+
outcome: Record<string, unknown> | null;
|
|
68
|
+
startedAt: string | null;
|
|
69
|
+
endedAt: string | null;
|
|
70
|
+
durationSeconds: number | null;
|
|
71
|
+
transcript: {
|
|
72
|
+
at: string;
|
|
73
|
+
role: "AI" | "WORKER";
|
|
74
|
+
text: string;
|
|
75
|
+
}[] | null;
|
|
76
|
+
fidelityFlag: string | null;
|
|
77
|
+
recordingUrl: string | null;
|
|
78
|
+
isTest: boolean;
|
|
79
|
+
}>;
|
|
80
|
+
export type VoiceScreeningDetail = z.infer<typeof VoiceScreeningDetailSchema>;
|
|
81
|
+
export declare const TestVoiceScreeningCallBodySchema: z.ZodObject<{
|
|
82
|
+
phone: z.ZodString;
|
|
83
|
+
jobId: z.ZodString;
|
|
84
|
+
}, "strip", z.ZodTypeAny, {
|
|
85
|
+
phone: string;
|
|
86
|
+
jobId: string;
|
|
87
|
+
}, {
|
|
88
|
+
phone: string;
|
|
89
|
+
jobId: string;
|
|
90
|
+
}>;
|
|
91
|
+
export type TestVoiceScreeningCallBody = z.infer<typeof TestVoiceScreeningCallBodySchema>;
|
|
92
|
+
export declare const voiceScreeningsContract: {
|
|
93
|
+
get: {
|
|
94
|
+
pathParams: z.ZodObject<{
|
|
95
|
+
id: z.ZodString;
|
|
96
|
+
}, "strip", z.ZodTypeAny, {
|
|
97
|
+
id: string;
|
|
98
|
+
}, {
|
|
99
|
+
id: string;
|
|
100
|
+
}>;
|
|
101
|
+
summary: "Fetch one voice screening — admin, or the screening's own agent";
|
|
102
|
+
method: "GET";
|
|
103
|
+
path: "/v2/voice-screenings/:id";
|
|
104
|
+
responses: {
|
|
105
|
+
200: z.ZodObject<{
|
|
106
|
+
id: z.ZodString;
|
|
107
|
+
jobId: z.ZodString;
|
|
108
|
+
subjectKind: z.ZodEnum<["OWNED", "CURATED"]>;
|
|
109
|
+
subjectId: z.ZodString;
|
|
110
|
+
status: z.ZodEnum<["PENDING", "DIALING", "IN_PROGRESS", "COMPLETED", "NO_ANSWER", "VOICEMAIL", "DECLINED", "FAILED", "CANCELED"]>;
|
|
111
|
+
startedAt: z.ZodNullable<z.ZodString>;
|
|
112
|
+
endedAt: z.ZodNullable<z.ZodString>;
|
|
113
|
+
durationSeconds: z.ZodNullable<z.ZodNumber>;
|
|
114
|
+
transcript: z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
115
|
+
role: z.ZodEnum<["WORKER", "AI"]>;
|
|
116
|
+
text: z.ZodString;
|
|
117
|
+
at: z.ZodString;
|
|
118
|
+
}, "strip", z.ZodTypeAny, {
|
|
119
|
+
at: string;
|
|
120
|
+
role: "AI" | "WORKER";
|
|
121
|
+
text: string;
|
|
122
|
+
}, {
|
|
123
|
+
at: string;
|
|
124
|
+
role: "AI" | "WORKER";
|
|
125
|
+
text: string;
|
|
126
|
+
}>, "many">>;
|
|
127
|
+
outcome: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
128
|
+
fidelityFlag: z.ZodNullable<z.ZodString>;
|
|
129
|
+
recordingUrl: z.ZodNullable<z.ZodString>;
|
|
130
|
+
isTest: z.ZodBoolean;
|
|
131
|
+
}, "strip", z.ZodTypeAny, {
|
|
132
|
+
status: "PENDING" | "NO_ANSWER" | "COMPLETED" | "FAILED" | "IN_PROGRESS" | "DECLINED" | "CANCELED" | "DIALING" | "VOICEMAIL";
|
|
133
|
+
id: string;
|
|
134
|
+
jobId: string;
|
|
135
|
+
subjectKind: "OWNED" | "CURATED";
|
|
136
|
+
subjectId: string;
|
|
137
|
+
outcome: Record<string, unknown> | null;
|
|
138
|
+
startedAt: string | null;
|
|
139
|
+
endedAt: string | null;
|
|
140
|
+
durationSeconds: number | null;
|
|
141
|
+
transcript: {
|
|
142
|
+
at: string;
|
|
143
|
+
role: "AI" | "WORKER";
|
|
144
|
+
text: string;
|
|
145
|
+
}[] | null;
|
|
146
|
+
fidelityFlag: string | null;
|
|
147
|
+
recordingUrl: string | null;
|
|
148
|
+
isTest: boolean;
|
|
149
|
+
}, {
|
|
150
|
+
status: "PENDING" | "NO_ANSWER" | "COMPLETED" | "FAILED" | "IN_PROGRESS" | "DECLINED" | "CANCELED" | "DIALING" | "VOICEMAIL";
|
|
151
|
+
id: string;
|
|
152
|
+
jobId: string;
|
|
153
|
+
subjectKind: "OWNED" | "CURATED";
|
|
154
|
+
subjectId: string;
|
|
155
|
+
outcome: Record<string, unknown> | null;
|
|
156
|
+
startedAt: string | null;
|
|
157
|
+
endedAt: string | null;
|
|
158
|
+
durationSeconds: number | null;
|
|
159
|
+
transcript: {
|
|
160
|
+
at: string;
|
|
161
|
+
role: "AI" | "WORKER";
|
|
162
|
+
text: string;
|
|
163
|
+
}[] | null;
|
|
164
|
+
fidelityFlag: string | null;
|
|
165
|
+
recordingUrl: string | null;
|
|
166
|
+
isTest: boolean;
|
|
167
|
+
}>;
|
|
168
|
+
403: z.ZodObject<{
|
|
169
|
+
message: z.ZodString;
|
|
170
|
+
}, "strip", z.ZodTypeAny, {
|
|
171
|
+
message: string;
|
|
172
|
+
}, {
|
|
173
|
+
message: string;
|
|
174
|
+
}>;
|
|
175
|
+
404: z.ZodObject<{
|
|
176
|
+
message: z.ZodString;
|
|
177
|
+
}, "strip", z.ZodTypeAny, {
|
|
178
|
+
message: string;
|
|
179
|
+
}, {
|
|
180
|
+
message: string;
|
|
181
|
+
}>;
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
testCall: {
|
|
185
|
+
summary: "Admin-only smoke tool: dials `phone` immediately, bypassing every eligibility gate";
|
|
186
|
+
method: "POST";
|
|
187
|
+
body: z.ZodObject<{
|
|
188
|
+
phone: z.ZodString;
|
|
189
|
+
jobId: z.ZodString;
|
|
190
|
+
}, "strip", z.ZodTypeAny, {
|
|
191
|
+
phone: string;
|
|
192
|
+
jobId: string;
|
|
193
|
+
}, {
|
|
194
|
+
phone: string;
|
|
195
|
+
jobId: string;
|
|
196
|
+
}>;
|
|
197
|
+
path: "/v2/voice-screenings/test-call";
|
|
198
|
+
responses: {
|
|
199
|
+
202: z.ZodObject<{
|
|
200
|
+
screeningId: z.ZodString;
|
|
201
|
+
}, "strip", z.ZodTypeAny, {
|
|
202
|
+
screeningId: string;
|
|
203
|
+
}, {
|
|
204
|
+
screeningId: string;
|
|
205
|
+
}>;
|
|
206
|
+
403: z.ZodObject<{
|
|
207
|
+
message: z.ZodString;
|
|
208
|
+
}, "strip", z.ZodTypeAny, {
|
|
209
|
+
message: string;
|
|
210
|
+
}, {
|
|
211
|
+
message: string;
|
|
212
|
+
}>;
|
|
213
|
+
404: z.ZodObject<{
|
|
214
|
+
message: z.ZodString;
|
|
215
|
+
}, "strip", z.ZodTypeAny, {
|
|
216
|
+
message: string;
|
|
217
|
+
}, {
|
|
218
|
+
message: string;
|
|
219
|
+
}>;
|
|
220
|
+
422: z.ZodObject<{
|
|
221
|
+
message: z.ZodString;
|
|
222
|
+
}, "strip", z.ZodTypeAny, {
|
|
223
|
+
message: string;
|
|
224
|
+
}, {
|
|
225
|
+
message: string;
|
|
226
|
+
}>;
|
|
227
|
+
409: z.ZodObject<{
|
|
228
|
+
message: z.ZodString;
|
|
229
|
+
}, "strip", z.ZodTypeAny, {
|
|
230
|
+
message: string;
|
|
231
|
+
}, {
|
|
232
|
+
message: string;
|
|
233
|
+
}>;
|
|
234
|
+
};
|
|
235
|
+
};
|
|
236
|
+
};
|
|
237
|
+
//# sourceMappingURL=voice-screener.contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-screener.contract.d.ts","sourceRoot":"","sources":["../../contracts/voice-screener/voice-screener.contract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,0BAA0B,2HAUrC,CAAC;AAEH,eAAO,MAAM,+BAA+B,iCAA+B,CAAC;AAE5E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;EAInC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBM,CAAC;AAE9C,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAM9E,eAAO,MAAM,gCAAgC;;;;;;;;;EAG3C,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,gCAAgC,CACxC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BlC,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.voiceScreeningsContract = exports.TestVoiceScreeningCallBodySchema = exports.VoiceScreeningDetailSchema = exports.VoiceScreeningTurnSchema = exports.VoiceScreeningSubjectKindSchema = exports.VoiceScreeningStatusSchema = void 0;
|
|
4
|
+
const zod_openapi_1 = require("@anatine/zod-openapi");
|
|
5
|
+
const core_1 = require("@ts-rest/core");
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
|
+
(0, zod_openapi_1.extendZodWithOpenApi)(zod_1.z);
|
|
8
|
+
const c = (0, core_1.initContract)();
|
|
9
|
+
exports.VoiceScreeningStatusSchema = zod_1.z.enum([
|
|
10
|
+
'PENDING',
|
|
11
|
+
'DIALING',
|
|
12
|
+
'IN_PROGRESS',
|
|
13
|
+
'COMPLETED',
|
|
14
|
+
'NO_ANSWER',
|
|
15
|
+
'VOICEMAIL',
|
|
16
|
+
'DECLINED',
|
|
17
|
+
'FAILED',
|
|
18
|
+
'CANCELED',
|
|
19
|
+
]);
|
|
20
|
+
exports.VoiceScreeningSubjectKindSchema = zod_1.z.enum(['OWNED', 'CURATED']);
|
|
21
|
+
exports.VoiceScreeningTurnSchema = zod_1.z.object({
|
|
22
|
+
role: zod_1.z.enum(['WORKER', 'AI']),
|
|
23
|
+
text: zod_1.z.string(),
|
|
24
|
+
at: zod_1.z.string(),
|
|
25
|
+
});
|
|
26
|
+
exports.VoiceScreeningDetailSchema = zod_1.z
|
|
27
|
+
.object({
|
|
28
|
+
id: zod_1.z.string().uuid(),
|
|
29
|
+
jobId: zod_1.z.string().uuid(),
|
|
30
|
+
subjectKind: exports.VoiceScreeningSubjectKindSchema,
|
|
31
|
+
subjectId: zod_1.z.string().uuid(),
|
|
32
|
+
status: exports.VoiceScreeningStatusSchema,
|
|
33
|
+
startedAt: zod_1.z.string().nullable(),
|
|
34
|
+
endedAt: zod_1.z.string().nullable(),
|
|
35
|
+
durationSeconds: zod_1.z.number().nullable(),
|
|
36
|
+
transcript: zod_1.z.array(exports.VoiceScreeningTurnSchema).nullable(),
|
|
37
|
+
outcome: zod_1.z.record(zod_1.z.unknown()).nullable(),
|
|
38
|
+
fidelityFlag: zod_1.z.string().nullable(),
|
|
39
|
+
// Presigned via RecordingStoreService.getPlaybackUrl — never a raw R2 key,
|
|
40
|
+
// and never fabricated: null whenever recordingKey is unset, rather than
|
|
41
|
+
// a broken/placeholder link (Task 11).
|
|
42
|
+
recordingUrl: zod_1.z.string().nullable(),
|
|
43
|
+
// True only for rows created by the admin-only test-call smoke endpoint
|
|
44
|
+
// — never a real automatic screening. Exposed here so a test screening
|
|
45
|
+
// is identifiable from the API, not only by querying the DB column
|
|
46
|
+
// directly (see the entity's doc comment for the four downstream
|
|
47
|
+
// consumers that must exclude it once they exist).
|
|
48
|
+
isTest: zod_1.z.boolean(),
|
|
49
|
+
})
|
|
50
|
+
.openapi({ title: 'VoiceScreeningDetail' });
|
|
51
|
+
// Admin-only, real-jobId-only smoke tool: dials `phone` (never a real
|
|
52
|
+
// candidate's own number) using genuine job/worker data sourced from the
|
|
53
|
+
// given job so nothing spoken on the call is fabricated. See Task 11's
|
|
54
|
+
// controller for how the underlying screening's subject is chosen.
|
|
55
|
+
exports.TestVoiceScreeningCallBodySchema = zod_1.z.object({
|
|
56
|
+
phone: zod_1.z.string().min(1),
|
|
57
|
+
jobId: zod_1.z.string().uuid(),
|
|
58
|
+
});
|
|
59
|
+
exports.voiceScreeningsContract = c.router({
|
|
60
|
+
get: {
|
|
61
|
+
method: 'GET',
|
|
62
|
+
path: '/v2/voice-screenings/:id',
|
|
63
|
+
pathParams: zod_1.z.object({ id: zod_1.z.string().uuid() }),
|
|
64
|
+
responses: {
|
|
65
|
+
200: exports.VoiceScreeningDetailSchema,
|
|
66
|
+
403: zod_1.z.object({ message: zod_1.z.string() }),
|
|
67
|
+
404: zod_1.z.object({ message: zod_1.z.string() }),
|
|
68
|
+
},
|
|
69
|
+
summary: "Fetch one voice screening — admin, or the screening's own agent",
|
|
70
|
+
},
|
|
71
|
+
testCall: {
|
|
72
|
+
method: 'POST',
|
|
73
|
+
path: '/v2/voice-screenings/test-call',
|
|
74
|
+
body: exports.TestVoiceScreeningCallBodySchema,
|
|
75
|
+
responses: {
|
|
76
|
+
202: zod_1.z.object({ screeningId: zod_1.z.string().uuid() }),
|
|
77
|
+
403: zod_1.z.object({ message: zod_1.z.string() }),
|
|
78
|
+
404: zod_1.z.object({ message: zod_1.z.string() }),
|
|
79
|
+
422: zod_1.z.object({ message: zod_1.z.string() }),
|
|
80
|
+
// The sourced candidate already has an in-flight (non-terminal)
|
|
81
|
+
// screening — the DB's one-in-flight-per-subject partial unique index
|
|
82
|
+
// (Task 14 fix round, Finding 1) rejected the insert. A clear,
|
|
83
|
+
// expected conflict, not a server error: try again once the other
|
|
84
|
+
// call (real or test) finishes.
|
|
85
|
+
409: zod_1.z.object({ message: zod_1.z.string() }),
|
|
86
|
+
},
|
|
87
|
+
summary: 'Admin-only smoke tool: dials `phone` immediately, bypassing every eligibility gate',
|
|
88
|
+
},
|
|
89
|
+
});
|