@dakkitor/api-contracts 1.8.0 → 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 (82) 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 +11 -0
  5. package/dist/abilities/second-agent.abilities.json +16 -0
  6. package/dist/actives/actives.contract.d.ts +6327 -6196
  7. package/dist/actives/actives.contract.d.ts.map +1 -1
  8. package/dist/agent-client-links/agent-client-links.contract.d.ts +1148 -1046
  9. package/dist/agent-client-links/agent-client-links.contract.d.ts.map +1 -1
  10. package/dist/auth/auth.contract.d.ts +23 -23
  11. package/dist/bookings/bookings.contract.d.ts +9238 -9006
  12. package/dist/bookings/bookings.contract.d.ts.map +1 -1
  13. package/dist/call-history/call-history.contract.d.ts +768 -731
  14. package/dist/call-history/call-history.contract.d.ts.map +1 -1
  15. package/dist/calls-feed/calls-feed.contract.d.ts +99 -92
  16. package/dist/calls-feed/calls-feed.contract.d.ts.map +1 -1
  17. package/dist/candidate-calling/candidate-calling.contract.d.ts +13397 -0
  18. package/dist/candidate-calling/candidate-calling.contract.d.ts.map +1 -0
  19. package/dist/candidate-calling/candidate-calling.contract.js +206 -0
  20. package/dist/candidate-calling/candidate-calling.contract.spec.d.ts +2 -0
  21. package/dist/candidate-calling/candidate-calling.contract.spec.d.ts.map +1 -0
  22. package/dist/candidate-calling/candidate-calling.contract.spec.js +193 -0
  23. package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts +2738 -2634
  24. package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts.map +1 -1
  25. package/dist/collaborations/collaborations.contract.d.ts +2281 -2184
  26. package/dist/collaborations/collaborations.contract.d.ts.map +1 -1
  27. package/dist/cron-executions/cron-executions.contract.d.ts +7 -7
  28. package/dist/cron-executions/cron-executions.contract.d.ts.map +1 -1
  29. package/dist/cron-executions/cron-executions.contract.js +1 -0
  30. package/dist/curated-worker-leads/candidate-coordination.contract.d.ts +2663 -2045
  31. package/dist/curated-worker-leads/candidate-coordination.contract.d.ts.map +1 -1
  32. package/dist/curated-worker-leads/candidate-coordination.contract.js +37 -4
  33. package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts +228 -228
  34. package/dist/curated-worker-leads/contact-history.spec.js +55 -0
  35. package/dist/curated-worker-leads/jobs-tab.contract.d.ts +1928 -1928
  36. package/dist/curated-worker-leads/jobs-tab.contract.d.ts.map +1 -1
  37. package/dist/curated-worker-leads/owned-jobs-tab.contract.d.ts +36 -36
  38. package/dist/curated-workers/curated-workers.contract.d.ts +1195 -1195
  39. package/dist/dashboards/dashboard-widgets.contract.d.ts +396 -396
  40. package/dist/dashboards/dashboard.contract.d.ts +16 -16
  41. package/dist/export-jobs/export-jobs.contract.d.ts +675 -675
  42. package/dist/exports-events/exports-events.schemas.d.ts +4 -4
  43. package/dist/index.d.ts +4 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +4 -0
  46. package/dist/jobs/jobs.contract.d.ts +7903 -7645
  47. package/dist/jobs/jobs.contract.d.ts.map +1 -1
  48. package/dist/kpi-impersonation/kpi-impersonation.contract.d.ts +72 -72
  49. package/dist/lead-assignments/lead-assignments.contract.d.ts +999 -928
  50. package/dist/lead-assignments/lead-assignments.contract.d.ts.map +1 -1
  51. package/dist/lead-distribution/agent-lead-distribution.contract.d.ts +244 -220
  52. package/dist/lead-distribution/agent-lead-distribution.contract.d.ts.map +1 -1
  53. package/dist/leads/leads.contract.d.ts +259 -259
  54. package/dist/notifications/notifications.contract.d.ts +67 -67
  55. package/dist/outreach/__tests__/outreach-claim.test.js +33 -0
  56. package/dist/outreach/__tests__/outreach-routes.test.js +8 -0
  57. package/dist/outreach/outreach.contract.d.ts +583 -162
  58. package/dist/outreach/outreach.contract.d.ts.map +1 -1
  59. package/dist/outreach/outreach.contract.js +50 -1
  60. package/dist/outreach/relay-hub-outreach.contract.d.ts +299 -121
  61. package/dist/outreach/relay-hub-outreach.contract.d.ts.map +1 -1
  62. package/dist/outreach/relay-hub-outreach.contract.js +10 -0
  63. package/dist/outreach/relay-hub-outreach.contract.spec.js +26 -0
  64. package/dist/outreach/relay-hub-outreach.schemas.d.ts +94 -0
  65. package/dist/outreach/relay-hub-outreach.schemas.d.ts.map +1 -0
  66. package/dist/outreach/relay-hub-outreach.schemas.js +15 -0
  67. package/dist/own-research/check-phone-response.spec.d.ts +2 -0
  68. package/dist/own-research/check-phone-response.spec.d.ts.map +1 -0
  69. package/dist/own-research/check-phone-response.spec.js +54 -0
  70. package/dist/own-research/own-research.contract.d.ts +801 -716
  71. package/dist/own-research/own-research.contract.d.ts.map +1 -1
  72. package/dist/own-research/own-research.contract.js +6 -1
  73. package/dist/user-access-grants/user-access-grants.contract.d.ts +179 -179
  74. package/dist/users/users.contract.d.ts +227 -198
  75. package/dist/users/users.contract.d.ts.map +1 -1
  76. package/dist/users/users.contract.js +9 -1
  77. package/dist/users/users.contract.spec.js +39 -0
  78. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.d.ts +124 -124
  79. package/dist/workers/workers.contract.d.ts +2761 -2717
  80. package/dist/workers/workers.contract.d.ts.map +1 -1
  81. package/dist/workers/workers.contract.js +12 -0
  82. package/package.json +1 -1
@@ -1 +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;AA0BxB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsFpC,CAAC"}
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"}
@@ -5,6 +5,7 @@ const core_1 = require("@ts-rest/core");
5
5
  const zod_1 = require("zod");
6
6
  const error_schemas_1 = require("../common/error-schemas");
7
7
  const relay_hub_schemas_1 = require("../relay-pods/relay-hub.schemas");
8
+ const relay_hub_outreach_schemas_1 = require("./relay-hub-outreach.schemas");
8
9
  const c = (0, core_1.initContract)();
9
10
  const RelayHubOutreachPathParamsSchema = zod_1.z
10
11
  .object({
@@ -27,6 +28,15 @@ exports.relayHubOutreachContract = c.router({
27
28
  summary: 'List Relay Hub outreach work assigned to a pod',
28
29
  metadata: { tags: ['Relay Hub Outreach'] },
29
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
+ },
30
40
  claim: {
31
41
  method: 'POST',
32
42
  path: '/:id/claim',
@@ -4,11 +4,36 @@ const bun_test_1 = require("bun:test");
4
4
  const index_1 = require("../index");
5
5
  const relay_hub_schemas_1 = require("../relay-pods/relay-hub.schemas");
6
6
  const relay_hub_outreach_contract_1 = require("./relay-hub-outreach.contract");
7
+ const relay_hub_outreach_schemas_1 = require("./relay-hub-outreach.schemas");
7
8
  const requestId = '11111111-1111-4111-8111-111111111111';
8
9
  const podId = '22222222-2222-4222-8222-222222222222';
9
10
  const idempotencyKey = '33333333-3333-4333-8333-333333333333';
10
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
+ };
11
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
+ });
12
37
  (0, bun_test_1.it)('requires every queue item to remain assigned to one concrete pod', () => {
13
38
  (0, bun_test_1.expect)(relay_hub_schemas_1.RelayHubOutreachQueueItemSchema.parse({
14
39
  id: requestId,
@@ -84,6 +109,7 @@ const correlationId = '44444444-4444-4444-8444-444444444444';
84
109
  (0, bun_test_1.it)('publishes the immutable single-pod lifecycle without reassignment or Lab route arrays', () => {
85
110
  (0, bun_test_1.expect)(Object.keys(relay_hub_outreach_contract_1.relayHubOutreachContract)).toEqual([
86
111
  'list',
112
+ 'listAuthoring',
87
113
  'claim',
88
114
  'accept',
89
115
  'progress',
@@ -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
+ });