@dakkitor/api-contracts 1.8.0 → 1.9.2

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 (139) hide show
  1. package/dist/abilities/abilities.contract.d.ts +28 -1
  2. package/dist/abilities/abilities.contract.d.ts.map +1 -1
  3. package/dist/abilities/abilities.contract.js +32 -1
  4. package/dist/abilities/abilities.contract.spec.js +63 -3
  5. package/dist/abilities/admin-dashboard.abilities.test.js +1 -0
  6. package/dist/abilities/automatic-caller.abilities.json +1 -0
  7. package/dist/abilities/first-agent.abilities.json +14 -0
  8. package/dist/abilities/interconnection.abilities.json +17 -1
  9. package/dist/abilities/office-manager.abilities.json +4 -0
  10. package/dist/abilities/second-agent.abilities.json +48 -1
  11. package/dist/abilities/worker-curator.abilities.json +17 -1
  12. package/dist/actives/actives.contract.d.ts +6959 -6547
  13. package/dist/actives/actives.contract.d.ts.map +1 -1
  14. package/dist/agent-client-links/agent-client-links.contract.d.ts +1275 -1173
  15. package/dist/agent-client-links/agent-client-links.contract.d.ts.map +1 -1
  16. package/dist/auth/auth.contract.d.ts +102 -102
  17. package/dist/bookings/backdate-guard.spec.js +24 -32
  18. package/dist/bookings/bookings.contract.d.ts +9963 -9305
  19. package/dist/bookings/bookings.contract.d.ts.map +1 -1
  20. package/dist/bookings/bookings.contract.js +2 -16
  21. package/dist/call-history/call-history.contract.d.ts +1040 -828
  22. package/dist/call-history/call-history.contract.d.ts.map +1 -1
  23. package/dist/calls-feed/calls-feed.contract.d.ts +138 -98
  24. package/dist/calls-feed/calls-feed.contract.d.ts.map +1 -1
  25. package/dist/candidate-calling/candidate-calling.contract.d.ts +18372 -0
  26. package/dist/candidate-calling/candidate-calling.contract.d.ts.map +1 -0
  27. package/dist/candidate-calling/candidate-calling.contract.js +494 -0
  28. package/dist/candidate-calling/candidate-calling.contract.spec.d.ts +2 -0
  29. package/dist/candidate-calling/candidate-calling.contract.spec.d.ts.map +1 -0
  30. package/dist/candidate-calling/candidate-calling.contract.spec.js +357 -0
  31. package/dist/candidate-calling/candidate-dialpad-call.schemas.d.ts +10 -0
  32. package/dist/candidate-calling/candidate-dialpad-call.schemas.d.ts.map +1 -0
  33. package/dist/candidate-calling/candidate-dialpad-call.schemas.js +33 -0
  34. package/dist/client-contacts/client-contacts.contract.d.ts +622 -622
  35. package/dist/clients/clients.contract.d.ts +289 -289
  36. package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts +3108 -3004
  37. package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts.map +1 -1
  38. package/dist/collaborations/collaborations.contract.d.ts +2604 -2507
  39. package/dist/collaborations/collaborations.contract.d.ts.map +1 -1
  40. package/dist/common/callback-slots.d.ts +4 -0
  41. package/dist/common/callback-slots.d.ts.map +1 -0
  42. package/dist/common/callback-slots.js +20 -0
  43. package/dist/common/common-schemas.d.ts +10 -4
  44. package/dist/common/common-schemas.d.ts.map +1 -1
  45. package/dist/common/common-schemas.js +6 -0
  46. package/dist/companies/companies.contract.d.ts +120 -120
  47. package/dist/crews/crews.contract.d.ts +278 -278
  48. package/dist/cron-executions/cron-executions.contract.d.ts +245 -245
  49. package/dist/cron-executions/cron-executions.contract.d.ts.map +1 -1
  50. package/dist/cron-executions/cron-executions.contract.js +1 -0
  51. package/dist/curated-worker-leads/candidate-coordination.contract.d.ts +3830 -2354
  52. package/dist/curated-worker-leads/candidate-coordination.contract.d.ts.map +1 -1
  53. package/dist/curated-worker-leads/candidate-coordination.contract.js +73 -7
  54. package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts +94 -94
  55. package/dist/curated-worker-leads/contact-history.spec.js +141 -0
  56. package/dist/curated-worker-leads/job-candidate-cards.spec.js +19 -0
  57. package/dist/curated-worker-leads/job-candidates.spec.js +179 -0
  58. package/dist/curated-worker-leads/jobs-tab.contract.d.ts +8185 -2106
  59. package/dist/curated-worker-leads/jobs-tab.contract.d.ts.map +1 -1
  60. package/dist/curated-worker-leads/jobs-tab.contract.js +126 -1
  61. package/dist/curated-worker-leads/owned-jobs-tab.contract.d.ts +110 -110
  62. package/dist/curated-workers/curated-workers.contract.d.ts +2033 -1951
  63. package/dist/curated-workers/curated-workers.contract.d.ts.map +1 -1
  64. package/dist/dashboards/dashboard-widgets.contact-history.spec.d.ts +2 -0
  65. package/dist/dashboards/dashboard-widgets.contact-history.spec.d.ts.map +1 -0
  66. package/dist/dashboards/dashboard-widgets.contact-history.spec.js +160 -0
  67. package/dist/dashboards/dashboard-widgets.contract.d.ts +1027 -284
  68. package/dist/dashboards/dashboard-widgets.contract.d.ts.map +1 -1
  69. package/dist/dashboards/dashboard-widgets.contract.js +46 -1
  70. package/dist/dashboards/dashboard.contract.d.ts +8 -8
  71. package/dist/document-intake/document-intake.contract.d.ts +1145 -1145
  72. package/dist/export-jobs/export-jobs.contract.d.ts +755 -755
  73. package/dist/exports-events/exports-events.schemas.d.ts +6 -6
  74. package/dist/index.d.ts +5 -0
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +5 -0
  77. package/dist/jobs/jobs.contract.d.ts +8507 -6044
  78. package/dist/jobs/jobs.contract.d.ts.map +1 -1
  79. package/dist/jobs/jobs.contract.js +95 -2
  80. package/dist/jobs/jobs.contract.spec.js +231 -1
  81. package/dist/kpi-impersonation/kpi-impersonation.contract.d.ts +102 -102
  82. package/dist/lead-assignments/lead-assignments.contract.d.ts +2985 -1139
  83. package/dist/lead-assignments/lead-assignments.contract.d.ts.map +1 -1
  84. package/dist/lead-assignments/lead-assignments.contract.js +102 -2
  85. package/dist/lead-assignments/lead-assignments.contract.spec.d.ts +2 -0
  86. package/dist/lead-assignments/lead-assignments.contract.spec.d.ts.map +1 -0
  87. package/dist/lead-assignments/lead-assignments.contract.spec.js +51 -0
  88. package/dist/lead-distribution/agent-lead-distribution.contract.d.ts +341 -317
  89. package/dist/lead-distribution/agent-lead-distribution.contract.d.ts.map +1 -1
  90. package/dist/leads/leads.contract.d.ts +282 -282
  91. package/dist/locations/location-enrichment.contract.spec.d.ts +2 -0
  92. package/dist/locations/location-enrichment.contract.spec.d.ts.map +1 -0
  93. package/dist/locations/location-enrichment.contract.spec.js +50 -0
  94. package/dist/locations/locations.contract.d.ts +132 -98
  95. package/dist/locations/locations.contract.d.ts.map +1 -1
  96. package/dist/locations/locations.contract.js +10 -0
  97. package/dist/notifications/notifications.contract.d.ts +579 -107
  98. package/dist/notifications/notifications.contract.d.ts.map +1 -1
  99. package/dist/notifications/notifications.contract.js +36 -2
  100. package/dist/notifications/notifications.contract.spec.d.ts +2 -0
  101. package/dist/notifications/notifications.contract.spec.d.ts.map +1 -0
  102. package/dist/notifications/notifications.contract.spec.js +39 -0
  103. package/dist/outreach/__tests__/outreach-claim.test.js +33 -0
  104. package/dist/outreach/__tests__/outreach-routes.test.js +8 -0
  105. package/dist/outreach/outreach.contract.d.ts +583 -162
  106. package/dist/outreach/outreach.contract.d.ts.map +1 -1
  107. package/dist/outreach/outreach.contract.js +50 -1
  108. package/dist/outreach/relay-hub-outreach.contract.d.ts +299 -121
  109. package/dist/outreach/relay-hub-outreach.contract.d.ts.map +1 -1
  110. package/dist/outreach/relay-hub-outreach.contract.js +10 -0
  111. package/dist/outreach/relay-hub-outreach.contract.spec.js +26 -0
  112. package/dist/outreach/relay-hub-outreach.schemas.d.ts +94 -0
  113. package/dist/outreach/relay-hub-outreach.schemas.d.ts.map +1 -0
  114. package/dist/outreach/relay-hub-outreach.schemas.js +15 -0
  115. package/dist/own-research/check-phone-response.spec.d.ts +2 -0
  116. package/dist/own-research/check-phone-response.spec.d.ts.map +1 -0
  117. package/dist/own-research/check-phone-response.spec.js +54 -0
  118. package/dist/own-research/own-research.contract.d.ts +971 -820
  119. package/dist/own-research/own-research.contract.d.ts.map +1 -1
  120. package/dist/own-research/own-research.contract.js +6 -1
  121. package/dist/proofs/proofs.contract.d.ts +356 -356
  122. package/dist/proofs/proofs.dtos.d.ts +148 -148
  123. package/dist/realtime/job-call-priority-updated.d.ts +18 -0
  124. package/dist/realtime/job-call-priority-updated.d.ts.map +1 -0
  125. package/dist/realtime/job-call-priority-updated.js +17 -0
  126. package/dist/shared/summary-schemas.d.ts +36 -27
  127. package/dist/shared/summary-schemas.d.ts.map +1 -1
  128. package/dist/shared/summary-schemas.js +7 -0
  129. package/dist/sheets-sync/sheets-sync.contract.d.ts +683 -683
  130. package/dist/user-access-grants/user-access-grants.contract.d.ts +216 -216
  131. package/dist/users/users.contract.d.ts +365 -336
  132. package/dist/users/users.contract.d.ts.map +1 -1
  133. package/dist/users/users.contract.js +9 -1
  134. package/dist/users/users.contract.spec.js +39 -0
  135. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.d.ts +150 -150
  136. package/dist/workers/workers.contract.d.ts +4505 -4261
  137. package/dist/workers/workers.contract.d.ts.map +1 -1
  138. package/dist/workers/workers.contract.js +12 -0
  139. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.contract.d.ts","sourceRoot":"","sources":["../../contracts/notifications/notifications.contract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB;;;mDAGmD;AACnD,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;EAKvC,CAAC;AAEH,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOM,CAAC;AAEzD,eAAO,MAAM,wCAAwC;;;;;;;;;;;;;;;EAKM,CAAC;AAC5D,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wCAAwC,CAAC,CAAC;AAE1G,eAAO,MAAM,uCAAuC;;;;;;;;;;;;;;;EAKM,CAAC;AAC3D,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uCAAuC,CAAC,CAAC;AAExG,eAAO,MAAM,sBAAsB,uEAA4G,CAAC;AAEhJ,iEAAiE;AACjE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsBM,CAAC;AAEtC,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGM,CAAC;AAIlD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CjC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CACnD,OAAO,qCAAqC,CAC7C,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,8BAA8B,CACtC,CAAC"}
1
+ {"version":3,"file":"notifications.contract.d.ts","sourceRoot":"","sources":["../../contracts/notifications/notifications.contract.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.notificationsContract = exports.NotificationListResponseSchema = exports.NotificationSchema = exports.NotificationKindSchema = exports.AiMergeAppliedNotificationPayloadSchema = exports.AiMergeMismatchNotificationPayloadSchema = exports.ActiveStatusNotificationPayloadSchema = exports.ActiveStatusBatchEntrySchema = void 0;
3
+ exports.notificationsContract = exports.NotificationListResponseSchema = exports.NotificationSchema = exports.NotificationKindSchema = exports.LeadCallbackDueNotificationPayloadSchema = exports.CandidateCallCallbackNotificationPayloadSchema = exports.AiMergeAppliedNotificationPayloadSchema = exports.AiMergeMismatchNotificationPayloadSchema = exports.ActiveStatusNotificationPayloadSchema = exports.ActiveStatusBatchEntrySchema = void 0;
4
4
  const zod_openapi_1 = require("@anatine/zod-openapi");
5
5
  const core_1 = require("@ts-rest/core");
6
6
  const zod_1 = require("zod");
@@ -38,7 +38,27 @@ exports.AiMergeAppliedNotificationPayloadSchema = zod_1.z.object({
38
38
  workerNames: zod_1.z.array(zod_1.z.string()),
39
39
  createdAt: zod_1.z.string(),
40
40
  }).openapi({ title: 'AiMergeAppliedNotificationPayload' });
41
- exports.NotificationKindSchema = zod_1.z.enum(['ACTIVE_STATUS', 'AI_MERGE_MISMATCH', 'AI_MERGE_APPLIED']).openapi({ title: 'NotificationKind' });
41
+ /** Emitted by CandidateCallCallbackService.sweep() when a candidate asked to
42
+ * be called back and the requested (or fallback) time has arrived.
43
+ * `requestedAt` mirrors pass 2's raw extraction — null means the candidate
44
+ * asked for a callback without naming a specific time. */
45
+ exports.CandidateCallCallbackNotificationPayloadSchema = zod_1.z.object({
46
+ callId: zod_1.z.string().uuid(),
47
+ candidateName: zod_1.z.string(),
48
+ requestedAt: zod_1.z.string().nullable(),
49
+ jobId: zod_1.z.string().uuid(),
50
+ }).openapi({ title: 'CandidateCallCallbackNotificationPayload' });
51
+ exports.LeadCallbackDueNotificationPayloadSchema = zod_1.z.object({
52
+ callbackId: zod_1.z.string().uuid(),
53
+ leadId: zod_1.z.string().uuid(),
54
+ leadName: zod_1.z.string(),
55
+ companyName: zod_1.z.string().nullable(),
56
+ phoneNumber: zod_1.z.string(),
57
+ dueAt: zod_1.z.string(),
58
+ originRating: zod_1.z.number(),
59
+ originNotes: zod_1.z.string().nullable(),
60
+ }).openapi({ title: 'LeadCallbackDueNotificationPayload' });
61
+ exports.NotificationKindSchema = zod_1.z.enum(['ACTIVE_STATUS', 'AI_MERGE_MISMATCH', 'AI_MERGE_APPLIED', 'CANDIDATE_CALL_CALLBACK', 'LEAD_CALLBACK_DUE']).openapi({ title: 'NotificationKind' });
42
62
  /** Discriminated union on `kind`; new kinds extend the union. */
43
63
  exports.NotificationSchema = zod_1.z.discriminatedUnion('kind', [
44
64
  zod_1.z.object({
@@ -62,6 +82,20 @@ exports.NotificationSchema = zod_1.z.discriminatedUnion('kind', [
62
82
  payload: exports.AiMergeAppliedNotificationPayloadSchema,
63
83
  createdAt: zod_1.z.string(),
64
84
  }),
85
+ zod_1.z.object({
86
+ id: zod_1.z.string().uuid(),
87
+ kind: zod_1.z.literal('CANDIDATE_CALL_CALLBACK'),
88
+ refId: zod_1.z.string(),
89
+ payload: exports.CandidateCallCallbackNotificationPayloadSchema,
90
+ createdAt: zod_1.z.string(),
91
+ }),
92
+ zod_1.z.object({
93
+ id: zod_1.z.string().uuid(),
94
+ kind: zod_1.z.literal('LEAD_CALLBACK_DUE'),
95
+ refId: zod_1.z.string(),
96
+ payload: exports.LeadCallbackDueNotificationPayloadSchema,
97
+ createdAt: zod_1.z.string(),
98
+ }),
65
99
  ]).openapi({ title: 'Notification' });
66
100
  exports.NotificationListResponseSchema = zod_1.z.object({
67
101
  items: zod_1.z.array(exports.NotificationSchema),
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=notifications.contract.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.contract.spec.d.ts","sourceRoot":"","sources":["../../contracts/notifications/notifications.contract.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bun_test_1 = require("bun:test");
4
+ const notifications_contract_1 = require("./notifications.contract");
5
+ const payload = {
6
+ callbackId: '11111111-1111-4111-8111-111111111111',
7
+ leadId: '22222222-2222-4222-8222-222222222222',
8
+ leadName: 'J Carolan Plastering Services',
9
+ companyName: 'BRIXWELL GROUP LTD',
10
+ phoneNumber: '+447307201875',
11
+ dueAt: '2026-09-01T13:15:00.000Z',
12
+ originRating: 6,
13
+ originNotes: 'Asked for a call back Tuesday afternoon',
14
+ };
15
+ (0, bun_test_1.describe)('LEAD_CALLBACK_DUE notification', () => {
16
+ (0, bun_test_1.it)('is a known kind', () => {
17
+ (0, bun_test_1.expect)(notifications_contract_1.NotificationKindSchema.safeParse('LEAD_CALLBACK_DUE').success).toBe(true);
18
+ });
19
+ (0, bun_test_1.it)('parses a full notification', () => {
20
+ const parsed = notifications_contract_1.NotificationSchema.safeParse({
21
+ id: '33333333-3333-4333-8333-333333333333',
22
+ kind: 'LEAD_CALLBACK_DUE',
23
+ refId: payload.callbackId,
24
+ payload,
25
+ createdAt: '2026-09-01T13:05:00.000Z',
26
+ });
27
+ (0, bun_test_1.expect)(parsed.success).toBe(true);
28
+ });
29
+ (0, bun_test_1.it)('allows a null company and null notes', () => {
30
+ const parsed = notifications_contract_1.NotificationSchema.safeParse({
31
+ id: '33333333-3333-4333-8333-333333333333',
32
+ kind: 'LEAD_CALLBACK_DUE',
33
+ refId: payload.callbackId,
34
+ payload: { ...payload, companyName: null, originNotes: null },
35
+ createdAt: '2026-09-01T13:05:00.000Z',
36
+ });
37
+ (0, bun_test_1.expect)(parsed.success).toBe(true);
38
+ });
39
+ });
@@ -17,6 +17,39 @@ const widened = outreach_contract_1.ClaimNextOutreachBodySchema.safeParse({
17
17
  node_assert_1.default.ok(widened.success);
18
18
  node_assert_1.default.equal(Object.prototype.hasOwnProperty.call(widened.data, 'maxCommuteMinutes'), false);
19
19
  node_assert_1.default.ok(!outreach_contract_1.ClaimNextOutreachBodySchema.safeParse({}).success);
20
+ // The agent lane is a separate, strict envelope. These fields are the frozen
21
+ // proof of the exact Hub reservation that authorized this launch; ordinary
22
+ // legacy claim callers never need (and cannot accidentally acquire) it.
23
+ const AGENT_CLAIM_BODY = {
24
+ deviceId: 'rack-01',
25
+ authority: {
26
+ launchId: '0ce54488-598f-49a9-8c1a-ff843799c206',
27
+ campaignId: '0ce54488-598f-49a9-8c1a-ff843799c206',
28
+ jobId: 'b683831e-c98c-44c0-b75d-bd0356713f4e',
29
+ claimedLifecycleVersion: 7,
30
+ reservationCorrelationId: '9d84efb7-1ef1-4450-ad4d-22297806781f',
31
+ assignedPodId: '771db561-0701-4469-9e49-de618a07f8ac',
32
+ },
33
+ };
34
+ node_assert_1.default.ok(outreach_contract_1.AgentClaimNextOutreachBodySchema.safeParse(AGENT_CLAIM_BODY).success);
35
+ node_assert_1.default.ok(!outreach_contract_1.AgentClaimNextOutreachBodySchema.safeParse({
36
+ ...AGENT_CLAIM_BODY,
37
+ authority: {
38
+ ...AGENT_CLAIM_BODY.authority,
39
+ campaignId: 'bb49aedf-e17b-45bf-9087-5bf18ec7e2f0',
40
+ },
41
+ }).success, 'campaign and launch identities are one stable authority');
42
+ node_assert_1.default.ok(!outreach_contract_1.AgentClaimNextOutreachBodySchema.safeParse({
43
+ ...AGENT_CLAIM_BODY,
44
+ maxCommuteMinutes: 240,
45
+ }).success, 'agent authority rejects rather than strips unexpected widening fields');
46
+ node_assert_1.default.ok(!outreach_contract_1.AgentClaimNextOutreachBodySchema.safeParse({
47
+ deviceId: AGENT_CLAIM_BODY.deviceId,
48
+ authority: {
49
+ ...AGENT_CLAIM_BODY.authority,
50
+ claimedLifecycleVersion: -1,
51
+ },
52
+ }).success);
20
53
  // --- TTL -------------------------------------------------------------------
21
54
  node_assert_1.default.equal(outreach_contract_1.OUTREACH_LEASE_TTL_MINUTES, 15);
22
55
  // --- CLAIMED ---------------------------------------------------------------
@@ -9,6 +9,8 @@ const outreach_contract_1 = require("../outreach.contract");
9
9
  // `pathPrefix: '/v2'` is applied by c.router, so the runtime paths are absolute.
10
10
  node_assert_1.default.equal(outreach_contract_1.outreachContract.claimNext.method, 'POST');
11
11
  node_assert_1.default.equal(outreach_contract_1.outreachContract.claimNext.path, '/v2/outreach/requests/:requestId/claim-next');
12
+ node_assert_1.default.equal(outreach_contract_1.outreachContract.claimNextAgent.method, 'POST');
13
+ node_assert_1.default.equal(outreach_contract_1.outreachContract.claimNextAgent.path, '/v2/outreach/requests/:requestId/agent-claim-next');
12
14
  node_assert_1.default.equal(outreach_contract_1.outreachContract.claimNextLegacy.method, 'POST');
13
15
  node_assert_1.default.equal(outreach_contract_1.outreachContract.claimNextLegacy.path, '/v2/outreach/jobs/:jobId/claim-next');
14
16
  node_assert_1.default.equal(outreach_contract_1.outreachContract.confirmSent.method, 'POST');
@@ -23,11 +25,13 @@ const declared = (route) => Object.keys(route.responses)
23
25
  .map(Number)
24
26
  .sort((a, b) => a - b);
25
27
  node_assert_1.default.deepStrictEqual(declared(outreach_contract_1.outreachContract.claimNext), [200, 400, 401, 403, 409, 500]);
28
+ node_assert_1.default.deepStrictEqual(declared(outreach_contract_1.outreachContract.claimNextAgent), [200, 400, 401, 403, 409, 500]);
26
29
  node_assert_1.default.deepStrictEqual(declared(outreach_contract_1.outreachContract.claimNextLegacy), [200, 400, 401, 403, 409, 500]);
27
30
  node_assert_1.default.deepStrictEqual(declared(outreach_contract_1.outreachContract.confirmSent), [200, 400, 401, 403, 404, 500]);
28
31
  node_assert_1.default.deepStrictEqual(declared(outreach_contract_1.outreachContract.release), [200, 400, 401, 403, 404, 500]);
29
32
  for (const route of [
30
33
  outreach_contract_1.outreachContract.claimNext,
34
+ outreach_contract_1.outreachContract.claimNextAgent,
31
35
  outreach_contract_1.outreachContract.claimNextLegacy,
32
36
  outreach_contract_1.outreachContract.confirmSent,
33
37
  outreach_contract_1.outreachContract.release,
@@ -38,6 +42,9 @@ for (const route of [
38
42
  node_assert_1.default.ok(outreach_contract_1.outreachContract.claimNext.pathParams.safeParse({
39
43
  requestId: '6ba7b810-9dad-11d1-80b4-00c04fd430c8',
40
44
  }).success);
45
+ node_assert_1.default.ok(outreach_contract_1.outreachContract.claimNextAgent.pathParams.safeParse({
46
+ requestId: '6ba7b810-9dad-11d1-80b4-00c04fd430c8',
47
+ }).success);
41
48
  node_assert_1.default.ok(!outreach_contract_1.outreachContract.claimNext.pathParams.safeParse({ requestId: 'nope' })
42
49
  .success);
43
50
  node_assert_1.default.ok(outreach_contract_1.outreachContract.claimNextLegacy.pathParams.safeParse({
@@ -56,6 +63,7 @@ node_assert_1.default.ok(outreach_contract_1.outreachContract.confirmSent.pathPa
56
63
  const headersOf = (route) => route.headers;
57
64
  for (const route of [
58
65
  outreach_contract_1.outreachContract.claimNext,
66
+ outreach_contract_1.outreachContract.claimNextAgent,
59
67
  outreach_contract_1.outreachContract.claimNextLegacy,
60
68
  outreach_contract_1.outreachContract.confirmSent,
61
69
  outreach_contract_1.outreachContract.release,