@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":"relay-hub-outreach.contract.d.ts","sourceRoot":"","sources":["../../contracts/outreach/relay-hub-outreach.contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA2BxB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgGpC,CAAC"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.relayHubOutreachContract = 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 relay_hub_schemas_1 = require("../relay-pods/relay-hub.schemas");
8
+ const relay_hub_outreach_schemas_1 = require("./relay-hub-outreach.schemas");
9
+ const c = (0, core_1.initContract)();
10
+ const RelayHubOutreachPathParamsSchema = zod_1.z
11
+ .object({
12
+ id: zod_1.z.string().uuid(),
13
+ })
14
+ .strict();
15
+ const RelayHubOutreachProgressMutationSchema = relay_hub_schemas_1.RelayHubOutreachLifecycleMutationSchema.extend({
16
+ progress: zod_1.z.number().min(0).max(1).optional(),
17
+ }).strict();
18
+ const RelayHubOutreachFailureMutationSchema = relay_hub_schemas_1.RelayHubOutreachLifecycleMutationSchema.extend({
19
+ reason: zod_1.z.string().min(1),
20
+ }).strict();
21
+ exports.relayHubOutreachContract = c.router({
22
+ list: {
23
+ method: 'GET',
24
+ path: '',
25
+ responses: {
26
+ 200: zod_1.z.array(relay_hub_schemas_1.RelayHubOutreachQueueItemSchema),
27
+ },
28
+ summary: 'List Relay Hub outreach work assigned to a pod',
29
+ metadata: { tags: ['Relay Hub Outreach'] },
30
+ },
31
+ listAuthoring: {
32
+ method: 'GET',
33
+ path: '/authoring',
34
+ responses: {
35
+ 200: zod_1.z.array(relay_hub_outreach_schemas_1.RelayHubOutreachAuthoringItemSchema),
36
+ },
37
+ summary: 'List Hub outreach requests with bounded campaign-authoring context',
38
+ metadata: { tags: ['Relay Hub Outreach'] },
39
+ },
40
+ claim: {
41
+ method: 'POST',
42
+ path: '/:id/claim',
43
+ pathParams: RelayHubOutreachPathParamsSchema,
44
+ body: relay_hub_schemas_1.RelayHubOutreachLifecycleMutationSchema,
45
+ responses: {
46
+ 200: relay_hub_schemas_1.RelayHubOutreachLifecycleResponseSchema,
47
+ 404: error_schemas_1.ErrorResponseSchema,
48
+ 409: error_schemas_1.ErrorResponseSchema,
49
+ },
50
+ summary: 'Claim immutable Relay Hub outreach work',
51
+ metadata: { tags: ['Relay Hub Outreach'] },
52
+ },
53
+ accept: {
54
+ method: 'POST',
55
+ path: '/:id/accept',
56
+ pathParams: RelayHubOutreachPathParamsSchema,
57
+ body: relay_hub_schemas_1.RelayHubOutreachLifecycleMutationSchema,
58
+ responses: {
59
+ 200: relay_hub_schemas_1.RelayHubOutreachLifecycleResponseSchema,
60
+ 404: error_schemas_1.ErrorResponseSchema,
61
+ 409: error_schemas_1.ErrorResponseSchema,
62
+ },
63
+ summary: 'Accept immutable Relay Hub outreach work',
64
+ metadata: { tags: ['Relay Hub Outreach'] },
65
+ },
66
+ progress: {
67
+ method: 'POST',
68
+ path: '/:id/progress',
69
+ pathParams: RelayHubOutreachPathParamsSchema,
70
+ body: RelayHubOutreachProgressMutationSchema,
71
+ responses: {
72
+ 200: relay_hub_schemas_1.RelayHubOutreachLifecycleResponseSchema,
73
+ 404: error_schemas_1.ErrorResponseSchema,
74
+ 409: error_schemas_1.ErrorResponseSchema,
75
+ },
76
+ summary: 'Record Relay Hub outreach progress',
77
+ metadata: { tags: ['Relay Hub Outreach'] },
78
+ },
79
+ complete: {
80
+ method: 'POST',
81
+ path: '/:id/complete',
82
+ pathParams: RelayHubOutreachPathParamsSchema,
83
+ body: relay_hub_schemas_1.RelayHubOutreachLifecycleMutationSchema,
84
+ responses: {
85
+ 200: relay_hub_schemas_1.RelayHubOutreachLifecycleResponseSchema,
86
+ 404: error_schemas_1.ErrorResponseSchema,
87
+ 409: error_schemas_1.ErrorResponseSchema,
88
+ },
89
+ summary: 'Complete immutable Relay Hub outreach work',
90
+ metadata: { tags: ['Relay Hub Outreach'] },
91
+ },
92
+ fail: {
93
+ method: 'POST',
94
+ path: '/:id/fail',
95
+ pathParams: RelayHubOutreachPathParamsSchema,
96
+ body: RelayHubOutreachFailureMutationSchema,
97
+ responses: {
98
+ 200: relay_hub_schemas_1.RelayHubOutreachLifecycleResponseSchema,
99
+ 404: error_schemas_1.ErrorResponseSchema,
100
+ 409: error_schemas_1.ErrorResponseSchema,
101
+ },
102
+ summary: 'Fail immutable Relay Hub outreach work',
103
+ metadata: { tags: ['Relay Hub Outreach'] },
104
+ },
105
+ }, {
106
+ pathPrefix: '/v3/relay-hub/outreach',
107
+ commonResponses: {
108
+ 400: error_schemas_1.ErrorResponseSchema,
109
+ 401: error_schemas_1.ErrorResponseSchema,
110
+ 403: error_schemas_1.ErrorResponseSchema,
111
+ 500: error_schemas_1.ErrorResponseSchema,
112
+ },
113
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=relay-hub-outreach.contract.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay-hub-outreach.contract.spec.d.ts","sourceRoot":"","sources":["../../contracts/outreach/relay-hub-outreach.contract.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bun_test_1 = require("bun:test");
4
+ const index_1 = require("../index");
5
+ const relay_hub_schemas_1 = require("../relay-pods/relay-hub.schemas");
6
+ const relay_hub_outreach_contract_1 = require("./relay-hub-outreach.contract");
7
+ const relay_hub_outreach_schemas_1 = require("./relay-hub-outreach.schemas");
8
+ const requestId = '11111111-1111-4111-8111-111111111111';
9
+ const podId = '22222222-2222-4222-8222-222222222222';
10
+ const idempotencyKey = '33333333-3333-4333-8333-333333333333';
11
+ const correlationId = '44444444-4444-4444-8444-444444444444';
12
+ const jobId = '55555555-5555-4555-8555-555555555555';
13
+ const authoringFixture = {
14
+ id: requestId,
15
+ assignedPodId: podId,
16
+ lifecycle: 'QUEUED',
17
+ lifecycleVersion: 0,
18
+ requestedAt: '2026-08-16T10:00:00.000Z',
19
+ jobId,
20
+ eligibleAtRequest: 4,
21
+ requestedByName: 'Outreach Agent',
22
+ job: {
23
+ id: jobId,
24
+ title: 'Electrician',
25
+ trade: 'Electrical',
26
+ payText: '£22 per hour',
27
+ locationText: 'SW1A 1AA',
28
+ createdByName: 'Recruitment Agent',
29
+ },
30
+ };
31
+ (0, bun_test_1.describe)('Relay Hub outreach schemas', () => {
32
+ (0, bun_test_1.it)('adds a separate strict authoring view without widening the old queue item', () => {
33
+ (0, bun_test_1.expect)(relay_hub_outreach_contract_1.relayHubOutreachContract.listAuthoring.path).toBe('/v3/relay-hub/outreach/authoring');
34
+ (0, bun_test_1.expect)(relay_hub_outreach_schemas_1.RelayHubOutreachAuthoringItemSchema.parse(authoringFixture).job.title).toBe('Electrician');
35
+ (0, bun_test_1.expect)(() => relay_hub_schemas_1.RelayHubOutreachQueueItemSchema.parse(authoringFixture)).toThrow();
36
+ });
37
+ (0, bun_test_1.it)('requires every queue item to remain assigned to one concrete pod', () => {
38
+ (0, bun_test_1.expect)(relay_hub_schemas_1.RelayHubOutreachQueueItemSchema.parse({
39
+ id: requestId,
40
+ assignedPodId: podId,
41
+ lifecycle: 'QUEUED',
42
+ lifecycleVersion: 0,
43
+ requestedAt: '2026-08-16T10:00:00.000Z',
44
+ }).assignedPodId).toBe(podId);
45
+ (0, bun_test_1.expect)(() => relay_hub_schemas_1.RelayHubOutreachQueueItemSchema.parse({
46
+ id: requestId,
47
+ assignedPodId: null,
48
+ lifecycle: 'QUEUED',
49
+ lifecycleVersion: 0,
50
+ requestedAt: '2026-08-16T10:00:00.000Z',
51
+ })).toThrow();
52
+ });
53
+ (0, bun_test_1.it)('composes immutable assignment with shared mutation metadata for lifecycle writes', () => {
54
+ (0, bun_test_1.expect)(relay_hub_schemas_1.RelayHubOutreachLifecycleMutationSchema.safeParse({
55
+ assignedPodId: podId,
56
+ idempotencyKey,
57
+ correlationId,
58
+ expectedVersion: 0,
59
+ }).success).toBe(true);
60
+ (0, bun_test_1.expect)(relay_hub_schemas_1.RelayHubOutreachLifecycleMutationSchema.safeParse({
61
+ idempotencyKey,
62
+ correlationId,
63
+ expectedVersion: 0,
64
+ }).success).toBe(false);
65
+ (0, bun_test_1.expect)(relay_hub_schemas_1.RelayHubOutreachLifecycleMutationSchema.safeParse({
66
+ assignedPodId: null,
67
+ idempotencyKey,
68
+ correlationId,
69
+ expectedVersion: 0,
70
+ }).success).toBe(false);
71
+ });
72
+ (0, bun_test_1.it)('requires the committed lifecycle version in lifecycle responses', () => {
73
+ const response = {
74
+ id: requestId,
75
+ assignedPodId: podId,
76
+ lifecycle: 'CLAIMED',
77
+ lifecycleVersion: 1,
78
+ committedAt: '2026-08-16T10:05:00.000Z',
79
+ };
80
+ (0, bun_test_1.expect)(relay_hub_schemas_1.RelayHubOutreachLifecycleResponseSchema.parse(response).lifecycleVersion).toBe(1);
81
+ (0, bun_test_1.expect)(relay_hub_schemas_1.RelayHubOutreachLifecycleResponseSchema.safeParse({
82
+ id: response.id,
83
+ assignedPodId: response.assignedPodId,
84
+ lifecycle: response.lifecycle,
85
+ committedAt: response.committedAt,
86
+ }).success).toBe(false);
87
+ });
88
+ });
89
+ (0, bun_test_1.describe)('relayHubOutreachContract routes', () => {
90
+ for (const [routeName, bodySchema, routeFields] of [
91
+ ['claim', relay_hub_outreach_contract_1.relayHubOutreachContract.claim.body, {}],
92
+ ['accept', relay_hub_outreach_contract_1.relayHubOutreachContract.accept.body, {}],
93
+ ['progress', relay_hub_outreach_contract_1.relayHubOutreachContract.progress.body, { progress: 0.5 }],
94
+ ['complete', relay_hub_outreach_contract_1.relayHubOutreachContract.complete.body, {}],
95
+ ['fail', relay_hub_outreach_contract_1.relayHubOutreachContract.fail.body, { reason: 'delivery failed' }],
96
+ ]) {
97
+ (0, bun_test_1.it)(`${routeName} requires one non-null assigned pod`, () => {
98
+ const mutation = {
99
+ idempotencyKey,
100
+ correlationId,
101
+ expectedVersion: 0,
102
+ ...routeFields,
103
+ };
104
+ (0, bun_test_1.expect)(bodySchema.safeParse(mutation).success).toBe(false);
105
+ (0, bun_test_1.expect)(bodySchema.safeParse({ ...mutation, assignedPodId: null }).success).toBe(false);
106
+ (0, bun_test_1.expect)(bodySchema.safeParse({ ...mutation, assignedPodId: podId }).success).toBe(true);
107
+ });
108
+ }
109
+ (0, bun_test_1.it)('publishes the immutable single-pod lifecycle without reassignment or Lab route arrays', () => {
110
+ (0, bun_test_1.expect)(Object.keys(relay_hub_outreach_contract_1.relayHubOutreachContract)).toEqual([
111
+ 'list',
112
+ 'listAuthoring',
113
+ 'claim',
114
+ 'accept',
115
+ 'progress',
116
+ 'complete',
117
+ 'fail',
118
+ ]);
119
+ (0, bun_test_1.expect)(relay_hub_outreach_contract_1.relayHubOutreachContract.list).toMatchObject({
120
+ method: 'GET',
121
+ path: '/v3/relay-hub/outreach',
122
+ });
123
+ (0, bun_test_1.expect)(relay_hub_outreach_contract_1.relayHubOutreachContract.claim).toMatchObject({
124
+ method: 'POST',
125
+ path: '/v3/relay-hub/outreach/:id/claim',
126
+ });
127
+ (0, bun_test_1.expect)(relay_hub_outreach_contract_1.relayHubOutreachContract.accept).toMatchObject({
128
+ method: 'POST',
129
+ path: '/v3/relay-hub/outreach/:id/accept',
130
+ });
131
+ (0, bun_test_1.expect)(relay_hub_outreach_contract_1.relayHubOutreachContract.progress).toMatchObject({
132
+ method: 'POST',
133
+ path: '/v3/relay-hub/outreach/:id/progress',
134
+ });
135
+ (0, bun_test_1.expect)(relay_hub_outreach_contract_1.relayHubOutreachContract.complete).toMatchObject({
136
+ method: 'POST',
137
+ path: '/v3/relay-hub/outreach/:id/complete',
138
+ });
139
+ (0, bun_test_1.expect)(relay_hub_outreach_contract_1.relayHubOutreachContract.fail).toMatchObject({
140
+ method: 'POST',
141
+ path: '/v3/relay-hub/outreach/:id/fail',
142
+ });
143
+ (0, bun_test_1.expect)(index_1.apiContractRouter.RelayHubOutreach.claim.path).toBe('/v3/relay-hub/outreach/:id/claim');
144
+ });
145
+ });
@@ -0,0 +1,94 @@
1
+ import { z } from 'zod';
2
+ export declare const RelayHubOutreachAuthoringJobSchema: z.ZodObject<{
3
+ title: z.ZodString;
4
+ trade: z.ZodNullable<z.ZodString>;
5
+ payText: z.ZodNullable<z.ZodString>;
6
+ locationText: z.ZodNullable<z.ZodString>;
7
+ createdByName: z.ZodNullable<z.ZodString>;
8
+ } & {
9
+ id: z.ZodString;
10
+ }, "strict", z.ZodTypeAny, {
11
+ title: string;
12
+ trade: string | null;
13
+ payText: string | null;
14
+ locationText: string | null;
15
+ createdByName: string | null;
16
+ id: string;
17
+ }, {
18
+ title: string;
19
+ trade: string | null;
20
+ payText: string | null;
21
+ locationText: string | null;
22
+ createdByName: string | null;
23
+ id: string;
24
+ }>;
25
+ export declare const RelayHubOutreachAuthoringItemSchema: z.ZodObject<{
26
+ id: z.ZodString;
27
+ assignedPodId: z.ZodString;
28
+ lifecycle: z.ZodEnum<["QUEUED", "CLAIMED", "ACCEPTED", "RUNNING", "SUCCEEDED", "FAILED", "CANCELLED"]>;
29
+ lifecycleVersion: z.ZodNumber;
30
+ requestedAt: z.ZodString;
31
+ } & {
32
+ jobId: z.ZodString;
33
+ eligibleAtRequest: z.ZodNumber;
34
+ requestedByName: z.ZodNullable<z.ZodString>;
35
+ job: z.ZodObject<{
36
+ title: z.ZodString;
37
+ trade: z.ZodNullable<z.ZodString>;
38
+ payText: z.ZodNullable<z.ZodString>;
39
+ locationText: z.ZodNullable<z.ZodString>;
40
+ createdByName: z.ZodNullable<z.ZodString>;
41
+ } & {
42
+ id: z.ZodString;
43
+ }, "strict", z.ZodTypeAny, {
44
+ title: string;
45
+ trade: string | null;
46
+ payText: string | null;
47
+ locationText: string | null;
48
+ createdByName: string | null;
49
+ id: string;
50
+ }, {
51
+ title: string;
52
+ trade: string | null;
53
+ payText: string | null;
54
+ locationText: string | null;
55
+ createdByName: string | null;
56
+ id: string;
57
+ }>;
58
+ }, "strict", z.ZodTypeAny, {
59
+ jobId: string;
60
+ assignedPodId: string;
61
+ job: {
62
+ title: string;
63
+ trade: string | null;
64
+ payText: string | null;
65
+ locationText: string | null;
66
+ createdByName: string | null;
67
+ id: string;
68
+ };
69
+ id: string;
70
+ eligibleAtRequest: number;
71
+ requestedByName: string | null;
72
+ requestedAt: string;
73
+ lifecycle: "CLAIMED" | "RUNNING" | "CANCELLED" | "FAILED" | "QUEUED" | "ACCEPTED" | "SUCCEEDED";
74
+ lifecycleVersion: number;
75
+ }, {
76
+ jobId: string;
77
+ assignedPodId: string;
78
+ job: {
79
+ title: string;
80
+ trade: string | null;
81
+ payText: string | null;
82
+ locationText: string | null;
83
+ createdByName: string | null;
84
+ id: string;
85
+ };
86
+ id: string;
87
+ eligibleAtRequest: number;
88
+ requestedByName: string | null;
89
+ requestedAt: string;
90
+ lifecycle: "CLAIMED" | "RUNNING" | "CANCELLED" | "FAILED" | "QUEUED" | "ACCEPTED" | "SUCCEEDED";
91
+ lifecycleVersion: number;
92
+ }>;
93
+ export type RelayHubOutreachAuthoringItem = z.infer<typeof RelayHubOutreachAuthoringItemSchema>;
94
+ //# sourceMappingURL=relay-hub-outreach.schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay-hub-outreach.schemas.d.ts","sourceRoot":"","sources":["../../contracts/outreach/relay-hub-outreach.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;EAEpC,CAAC;AAEZ,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMnC,CAAC;AAEd,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CACjD,OAAO,mCAAmC,CAC3C,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RelayHubOutreachAuthoringItemSchema = exports.RelayHubOutreachAuthoringJobSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const relay_hub_schemas_1 = require("../relay-pods/relay-hub.schemas");
6
+ const outreach_schemas_1 = require("./outreach.schemas");
7
+ exports.RelayHubOutreachAuthoringJobSchema = outreach_schemas_1.OutreachJobSchema.extend({
8
+ id: zod_1.z.string().uuid(),
9
+ }).strict();
10
+ exports.RelayHubOutreachAuthoringItemSchema = relay_hub_schemas_1.RelayHubOutreachQueueItemSchema.extend({
11
+ jobId: zod_1.z.string().uuid(),
12
+ eligibleAtRequest: zod_1.z.number().int().nonnegative(),
13
+ requestedByName: zod_1.z.string().min(1).max(256).nullable(),
14
+ job: exports.RelayHubOutreachAuthoringJobSchema,
15
+ }).strict();
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=check-phone-response.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-phone-response.spec.d.ts","sourceRoot":"","sources":["../../contracts/own-research/check-phone-response.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bun_test_1 = require("bun:test");
4
+ const own_research_contract_1 = require("./own-research.contract");
5
+ const BASE_RESPONSE = {
6
+ existsInLeads: true,
7
+ existsInOwnResearch: false,
8
+ ownResearchLead: null,
9
+ isOnCooldown: false,
10
+ cooldownUntil: null,
11
+ };
12
+ (0, bun_test_1.describe)('CheckPhoneResponseSchema', () => {
13
+ (0, bun_test_1.test)("preserves a matching lead's typed status and status reason", () => {
14
+ const parsed = own_research_contract_1.CheckPhoneResponseSchema.parse({
15
+ ...BASE_RESPONSE,
16
+ lead: {
17
+ id: '11111111-1111-4111-8111-111111111111',
18
+ name: 'Acme Roofing',
19
+ phoneNumber: '+447911123456',
20
+ status: 'PARKED',
21
+ cooldownUntil: null,
22
+ blacklistReason: "Auto-parked after 7 consecutive 'No Answer' calls.",
23
+ },
24
+ });
25
+ (0, bun_test_1.expect)(parsed.lead?.status).toBe('PARKED');
26
+ (0, bun_test_1.expect)(parsed.lead?.blacklistReason).toBe("Auto-parked after 7 consecutive 'No Answer' calls.");
27
+ });
28
+ (0, bun_test_1.test)('accepts legacy matching leads without a reason', () => {
29
+ const parsed = own_research_contract_1.CheckPhoneResponseSchema.parse({
30
+ ...BASE_RESPONSE,
31
+ lead: {
32
+ id: '11111111-1111-4111-8111-111111111111',
33
+ name: 'Acme Roofing',
34
+ phoneNumber: '+447911123456',
35
+ status: 'AVAILABLE',
36
+ cooldownUntil: null,
37
+ },
38
+ });
39
+ (0, bun_test_1.expect)(parsed.lead?.blacklistReason).toBeUndefined();
40
+ });
41
+ (0, bun_test_1.test)('rejects a status outside LeadStatusSchema', () => {
42
+ const result = own_research_contract_1.CheckPhoneResponseSchema.safeParse({
43
+ ...BASE_RESPONSE,
44
+ lead: {
45
+ id: '11111111-1111-4111-8111-111111111111',
46
+ name: 'Acme Roofing',
47
+ phoneNumber: '+447911123456',
48
+ status: 'COOLDOWN',
49
+ cooldownUntil: null,
50
+ },
51
+ });
52
+ (0, bun_test_1.expect)(result.success).toBe(false);
53
+ });
54
+ });