@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
@@ -25,16 +25,16 @@ export declare const QualificationSchema: z.ZodObject<{
25
25
  }>, "many">;
26
26
  }, "strip", z.ZodTypeAny, {
27
27
  id: string;
28
- description: string | null;
29
28
  name: string;
29
+ description: string | null;
30
30
  types: {
31
31
  id: string;
32
32
  name: string;
33
33
  }[];
34
34
  }, {
35
35
  id: string;
36
- description: string | null;
37
36
  name: string;
37
+ description: string | null;
38
38
  types: {
39
39
  id: string;
40
40
  name: string;
@@ -58,14 +58,14 @@ export declare const CreateQualificationSchema: z.ZodObject<{
58
58
  name: string;
59
59
  }>, "many">>;
60
60
  }, "strip", z.ZodTypeAny, {
61
- description: string;
62
61
  name: string;
62
+ description: string;
63
63
  types?: {
64
64
  name: string;
65
65
  }[] | undefined;
66
66
  }, {
67
- description: string;
68
67
  name: string;
68
+ description: string;
69
69
  types?: {
70
70
  name: string;
71
71
  }[] | undefined;
@@ -94,15 +94,15 @@ export declare const UpdateQualificationSchema: z.ZodObject<{
94
94
  id?: string | undefined;
95
95
  }>, "many">>;
96
96
  }, "strip", z.ZodTypeAny, {
97
- description?: string | undefined;
98
97
  name?: string | undefined;
98
+ description?: string | undefined;
99
99
  types?: {
100
100
  name: string;
101
101
  id?: string | undefined;
102
102
  }[] | undefined;
103
103
  }, {
104
- description?: string | undefined;
105
104
  name?: string | undefined;
105
+ description?: string | undefined;
106
106
  types?: {
107
107
  name: string;
108
108
  id?: string | undefined;
@@ -131,16 +131,16 @@ export declare const QualificationArraySchema: z.ZodArray<z.ZodObject<{
131
131
  }>, "many">;
132
132
  }, "strip", z.ZodTypeAny, {
133
133
  id: string;
134
- description: string | null;
135
134
  name: string;
135
+ description: string | null;
136
136
  types: {
137
137
  id: string;
138
138
  name: string;
139
139
  }[];
140
140
  }, {
141
141
  id: string;
142
- description: string | null;
143
142
  name: string;
143
+ description: string | null;
144
144
  types: {
145
145
  id: string;
146
146
  name: string;
@@ -171,14 +171,14 @@ export declare const qualificationsContract: {
171
171
  name: string;
172
172
  }>, "many">>;
173
173
  }, "strip", z.ZodTypeAny, {
174
- description: string;
175
174
  name: string;
175
+ description: string;
176
176
  types?: {
177
177
  name: string;
178
178
  }[] | undefined;
179
179
  }, {
180
- description: string;
181
180
  name: string;
181
+ description: string;
182
182
  types?: {
183
183
  name: string;
184
184
  }[] | undefined;
@@ -301,16 +301,16 @@ export declare const qualificationsContract: {
301
301
  }>, "many">;
302
302
  }, "strip", z.ZodTypeAny, {
303
303
  id: string;
304
- description: string | null;
305
304
  name: string;
305
+ description: string | null;
306
306
  types: {
307
307
  id: string;
308
308
  name: string;
309
309
  }[];
310
310
  }, {
311
311
  id: string;
312
- description: string | null;
313
312
  name: string;
313
+ description: string | null;
314
314
  types: {
315
315
  id: string;
316
316
  name: string;
@@ -467,16 +467,16 @@ export declare const qualificationsContract: {
467
467
  }>, "many">;
468
468
  }, "strip", z.ZodTypeAny, {
469
469
  id: string;
470
- description: string | null;
471
470
  name: string;
471
+ description: string | null;
472
472
  types: {
473
473
  id: string;
474
474
  name: string;
475
475
  }[];
476
476
  }, {
477
477
  id: string;
478
- description: string | null;
479
478
  name: string;
479
+ description: string | null;
480
480
  types: {
481
481
  id: string;
482
482
  name: string;
@@ -615,16 +615,16 @@ export declare const qualificationsContract: {
615
615
  }>, "many">;
616
616
  }, "strip", z.ZodTypeAny, {
617
617
  id: string;
618
- description: string | null;
619
618
  name: string;
619
+ description: string | null;
620
620
  types: {
621
621
  id: string;
622
622
  name: string;
623
623
  }[];
624
624
  }, {
625
625
  id: string;
626
- description: string | null;
627
626
  name: string;
627
+ description: string | null;
628
628
  types: {
629
629
  id: string;
630
630
  name: string;
@@ -684,15 +684,15 @@ export declare const qualificationsContract: {
684
684
  id?: string | undefined;
685
685
  }>, "many">>;
686
686
  }, "strip", z.ZodTypeAny, {
687
- description?: string | undefined;
688
687
  name?: string | undefined;
688
+ description?: string | undefined;
689
689
  types?: {
690
690
  name: string;
691
691
  id?: string | undefined;
692
692
  }[] | undefined;
693
693
  }, {
694
- description?: string | undefined;
695
694
  name?: string | undefined;
695
+ description?: string | undefined;
696
696
  types?: {
697
697
  name: string;
698
698
  id?: string | undefined;
@@ -816,16 +816,16 @@ export declare const qualificationsContract: {
816
816
  }>, "many">;
817
817
  }, "strip", z.ZodTypeAny, {
818
818
  id: string;
819
- description: string | null;
820
819
  name: string;
820
+ description: string | null;
821
821
  types: {
822
822
  id: string;
823
823
  name: string;
824
824
  }[];
825
825
  }, {
826
826
  id: string;
827
- description: string | null;
828
827
  name: string;
828
+ description: string | null;
829
829
  types: {
830
830
  id: string;
831
831
  name: string;
@@ -1140,16 +1140,16 @@ export declare const qualificationsContract: {
1140
1140
  }>, "many">;
1141
1141
  }, "strip", z.ZodTypeAny, {
1142
1142
  id: string;
1143
- description: string | null;
1144
1143
  name: string;
1144
+ description: string | null;
1145
1145
  types: {
1146
1146
  id: string;
1147
1147
  name: string;
1148
1148
  }[];
1149
1149
  }, {
1150
1150
  id: string;
1151
- description: string | null;
1152
1151
  name: string;
1152
+ description: string | null;
1153
1153
  types: {
1154
1154
  id: string;
1155
1155
  name: string;
@@ -0,0 +1,181 @@
1
+ import { z } from 'zod';
2
+ export declare const REALTIME_INVALIDATION_TRIGGERS: readonly ["data_changed", "realtime_open"];
3
+ export declare const REALTIME_INVALIDATION_STAGES: readonly ["planned", "invalidated", "refetch_started"];
4
+ export declare const REALTIME_INVALIDATION_SURFACES: readonly ["actives", "actives_by_job", "actives_timesheet", "agent_client_links", "bookings", "bookings_calendar", "workers", "curated_workers", "curated_worker_leads", "call_history", "leads", "clients", "clients_autocomplete", "client_contacts", "collaborations", "collaborations_autocomplete", "companies", "companies_autocomplete", "crews", "jobs", "job_clusters", "offices", "qualifications", "trades", "users", "detail", "worker_cards_batch", "candidate_cards_batch", "job_proximity_match_counts_batch", "other"];
5
+ export declare const RealtimeInvalidationTriggerSchema: z.ZodEnum<["data_changed", "realtime_open"]>;
6
+ export declare const RealtimeInvalidationStageSchema: z.ZodEnum<["planned", "invalidated", "refetch_started"]>;
7
+ export declare const RealtimeInvalidationSurfaceSchema: z.ZodEnum<["actives", "actives_by_job", "actives_timesheet", "agent_client_links", "bookings", "bookings_calendar", "workers", "curated_workers", "curated_worker_leads", "call_history", "leads", "clients", "clients_autocomplete", "client_contacts", "collaborations", "collaborations_autocomplete", "companies", "companies_autocomplete", "crews", "jobs", "job_clusters", "offices", "qualifications", "trades", "users", "detail", "worker_cards_batch", "candidate_cards_batch", "job_proximity_match_counts_batch", "other"]>;
8
+ export declare const RealtimeInvalidationMetricSampleSchema: z.ZodObject<{
9
+ trigger: z.ZodEnum<["data_changed", "realtime_open"]>;
10
+ stage: z.ZodEnum<["planned", "invalidated", "refetch_started"]>;
11
+ surface: z.ZodEnum<["actives", "actives_by_job", "actives_timesheet", "agent_client_links", "bookings", "bookings_calendar", "workers", "curated_workers", "curated_worker_leads", "call_history", "leads", "clients", "clients_autocomplete", "client_contacts", "collaborations", "collaborations_autocomplete", "companies", "companies_autocomplete", "crews", "jobs", "job_clusters", "offices", "qualifications", "trades", "users", "detail", "worker_cards_batch", "candidate_cards_batch", "job_proximity_match_counts_batch", "other"]>;
12
+ count: z.ZodNumber;
13
+ }, "strict", z.ZodTypeAny, {
14
+ count: number;
15
+ trigger: "data_changed" | "realtime_open";
16
+ stage: "planned" | "invalidated" | "refetch_started";
17
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
18
+ }, {
19
+ count: number;
20
+ trigger: "data_changed" | "realtime_open";
21
+ stage: "planned" | "invalidated" | "refetch_started";
22
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
23
+ }>;
24
+ export declare const RealtimeInvalidationMetricsRequestSchema: z.ZodObject<{
25
+ samples: z.ZodArray<z.ZodObject<{
26
+ trigger: z.ZodEnum<["data_changed", "realtime_open"]>;
27
+ stage: z.ZodEnum<["planned", "invalidated", "refetch_started"]>;
28
+ surface: z.ZodEnum<["actives", "actives_by_job", "actives_timesheet", "agent_client_links", "bookings", "bookings_calendar", "workers", "curated_workers", "curated_worker_leads", "call_history", "leads", "clients", "clients_autocomplete", "client_contacts", "collaborations", "collaborations_autocomplete", "companies", "companies_autocomplete", "crews", "jobs", "job_clusters", "offices", "qualifications", "trades", "users", "detail", "worker_cards_batch", "candidate_cards_batch", "job_proximity_match_counts_batch", "other"]>;
29
+ count: z.ZodNumber;
30
+ }, "strict", z.ZodTypeAny, {
31
+ count: number;
32
+ trigger: "data_changed" | "realtime_open";
33
+ stage: "planned" | "invalidated" | "refetch_started";
34
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
35
+ }, {
36
+ count: number;
37
+ trigger: "data_changed" | "realtime_open";
38
+ stage: "planned" | "invalidated" | "refetch_started";
39
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
40
+ }>, "many">;
41
+ }, "strict", z.ZodTypeAny, {
42
+ samples: {
43
+ count: number;
44
+ trigger: "data_changed" | "realtime_open";
45
+ stage: "planned" | "invalidated" | "refetch_started";
46
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
47
+ }[];
48
+ }, {
49
+ samples: {
50
+ count: number;
51
+ trigger: "data_changed" | "realtime_open";
52
+ stage: "planned" | "invalidated" | "refetch_started";
53
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
54
+ }[];
55
+ }>;
56
+ export type RealtimeInvalidationTrigger = z.infer<typeof RealtimeInvalidationTriggerSchema>;
57
+ export type RealtimeInvalidationStage = z.infer<typeof RealtimeInvalidationStageSchema>;
58
+ export type RealtimeInvalidationSurface = z.infer<typeof RealtimeInvalidationSurfaceSchema>;
59
+ export type RealtimeInvalidationMetricSample = z.infer<typeof RealtimeInvalidationMetricSampleSchema>;
60
+ export type RealtimeInvalidationMetricsRequest = z.infer<typeof RealtimeInvalidationMetricsRequestSchema>;
61
+ export declare const realtimeTelemetryContract: {
62
+ reportInvalidationMetrics: {
63
+ metadata: {
64
+ tags: string[];
65
+ };
66
+ summary: "Record bounded browser realtime invalidation attribution";
67
+ method: "POST";
68
+ body: z.ZodObject<{
69
+ samples: z.ZodArray<z.ZodObject<{
70
+ trigger: z.ZodEnum<["data_changed", "realtime_open"]>;
71
+ stage: z.ZodEnum<["planned", "invalidated", "refetch_started"]>;
72
+ surface: z.ZodEnum<["actives", "actives_by_job", "actives_timesheet", "agent_client_links", "bookings", "bookings_calendar", "workers", "curated_workers", "curated_worker_leads", "call_history", "leads", "clients", "clients_autocomplete", "client_contacts", "collaborations", "collaborations_autocomplete", "companies", "companies_autocomplete", "crews", "jobs", "job_clusters", "offices", "qualifications", "trades", "users", "detail", "worker_cards_batch", "candidate_cards_batch", "job_proximity_match_counts_batch", "other"]>;
73
+ count: z.ZodNumber;
74
+ }, "strict", z.ZodTypeAny, {
75
+ count: number;
76
+ trigger: "data_changed" | "realtime_open";
77
+ stage: "planned" | "invalidated" | "refetch_started";
78
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
79
+ }, {
80
+ count: number;
81
+ trigger: "data_changed" | "realtime_open";
82
+ stage: "planned" | "invalidated" | "refetch_started";
83
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
84
+ }>, "many">;
85
+ }, "strict", z.ZodTypeAny, {
86
+ samples: {
87
+ count: number;
88
+ trigger: "data_changed" | "realtime_open";
89
+ stage: "planned" | "invalidated" | "refetch_started";
90
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
91
+ }[];
92
+ }, {
93
+ samples: {
94
+ count: number;
95
+ trigger: "data_changed" | "realtime_open";
96
+ stage: "planned" | "invalidated" | "refetch_started";
97
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
98
+ }[];
99
+ }>;
100
+ path: "/v2/realtime/invalidation-metrics";
101
+ responses: {
102
+ 500: z.ZodObject<{
103
+ statusCode: z.ZodNumber;
104
+ message: z.ZodString;
105
+ code: z.ZodString;
106
+ details: z.ZodOptional<z.ZodUnknown>;
107
+ timestamp: z.ZodString;
108
+ path: z.ZodString;
109
+ correlationId: z.ZodOptional<z.ZodString>;
110
+ }, "strip", z.ZodTypeAny, {
111
+ message: string;
112
+ code: string;
113
+ path: string;
114
+ statusCode: number;
115
+ timestamp: string;
116
+ details?: unknown;
117
+ correlationId?: string | undefined;
118
+ }, {
119
+ message: string;
120
+ code: string;
121
+ path: string;
122
+ statusCode: number;
123
+ timestamp: string;
124
+ details?: unknown;
125
+ correlationId?: string | undefined;
126
+ }>;
127
+ 204: z.ZodUndefined;
128
+ 400: z.ZodObject<{
129
+ statusCode: z.ZodNumber;
130
+ message: z.ZodString;
131
+ code: z.ZodString;
132
+ details: z.ZodOptional<z.ZodUnknown>;
133
+ timestamp: z.ZodString;
134
+ path: z.ZodString;
135
+ correlationId: z.ZodOptional<z.ZodString>;
136
+ }, "strip", z.ZodTypeAny, {
137
+ message: string;
138
+ code: string;
139
+ path: string;
140
+ statusCode: number;
141
+ timestamp: string;
142
+ details?: unknown;
143
+ correlationId?: string | undefined;
144
+ }, {
145
+ message: string;
146
+ code: string;
147
+ path: string;
148
+ statusCode: number;
149
+ timestamp: string;
150
+ details?: unknown;
151
+ correlationId?: string | undefined;
152
+ }>;
153
+ 401: z.ZodObject<{
154
+ statusCode: z.ZodNumber;
155
+ message: z.ZodString;
156
+ code: z.ZodString;
157
+ details: z.ZodOptional<z.ZodUnknown>;
158
+ timestamp: z.ZodString;
159
+ path: z.ZodString;
160
+ correlationId: z.ZodOptional<z.ZodString>;
161
+ }, "strip", z.ZodTypeAny, {
162
+ message: string;
163
+ code: string;
164
+ path: string;
165
+ statusCode: number;
166
+ timestamp: string;
167
+ details?: unknown;
168
+ correlationId?: string | undefined;
169
+ }, {
170
+ message: string;
171
+ code: string;
172
+ path: string;
173
+ statusCode: number;
174
+ timestamp: string;
175
+ details?: unknown;
176
+ correlationId?: string | undefined;
177
+ }>;
178
+ };
179
+ };
180
+ };
181
+ //# sourceMappingURL=realtime-telemetry.contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime-telemetry.contract.d.ts","sourceRoot":"","sources":["../../contracts/realtime/realtime-telemetry.contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,8BAA8B,4CAGjC,CAAC;AACX,eAAO,MAAM,4BAA4B,wDAI/B,CAAC;AACX,eAAO,MAAM,8BAA8B,wgBA+BjC,CAAC;AAEX,eAAO,MAAM,iCAAiC,8CAE7C,CAAC;AACF,eAAO,MAAM,+BAA+B,0DAE3C,CAAC;AACF,eAAO,MAAM,iCAAiC,0gBAE7C,CAAC;AACF,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;EAOxC,CAAC;AACZ,eAAO,MAAM,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI1C,CAAC;AAEZ,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,iCAAiC,CACzC,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,+BAA+B,CACvC,CAAC;AACF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,iCAAiC,CACzC,CAAC;AACF,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CACpD,OAAO,sCAAsC,CAC9C,CAAC;AACF,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,KAAK,CACtD,OAAO,wCAAwC,CAChD,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmBrC,CAAC"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.realtimeTelemetryContract = exports.RealtimeInvalidationMetricsRequestSchema = exports.RealtimeInvalidationMetricSampleSchema = exports.RealtimeInvalidationSurfaceSchema = exports.RealtimeInvalidationStageSchema = exports.RealtimeInvalidationTriggerSchema = exports.REALTIME_INVALIDATION_SURFACES = exports.REALTIME_INVALIDATION_STAGES = exports.REALTIME_INVALIDATION_TRIGGERS = 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 c = (0, core_1.initContract)();
8
+ exports.REALTIME_INVALIDATION_TRIGGERS = [
9
+ 'data_changed',
10
+ 'realtime_open',
11
+ ];
12
+ exports.REALTIME_INVALIDATION_STAGES = [
13
+ 'planned',
14
+ 'invalidated',
15
+ 'refetch_started',
16
+ ];
17
+ exports.REALTIME_INVALIDATION_SURFACES = [
18
+ 'actives',
19
+ 'actives_by_job',
20
+ 'actives_timesheet',
21
+ 'agent_client_links',
22
+ 'bookings',
23
+ 'bookings_calendar',
24
+ 'workers',
25
+ 'curated_workers',
26
+ 'curated_worker_leads',
27
+ 'call_history',
28
+ 'leads',
29
+ 'clients',
30
+ 'clients_autocomplete',
31
+ 'client_contacts',
32
+ 'collaborations',
33
+ 'collaborations_autocomplete',
34
+ 'companies',
35
+ 'companies_autocomplete',
36
+ 'crews',
37
+ 'jobs',
38
+ 'job_clusters',
39
+ 'offices',
40
+ 'qualifications',
41
+ 'trades',
42
+ 'users',
43
+ 'detail',
44
+ 'worker_cards_batch',
45
+ 'candidate_cards_batch',
46
+ 'job_proximity_match_counts_batch',
47
+ 'other',
48
+ ];
49
+ exports.RealtimeInvalidationTriggerSchema = zod_1.z.enum(exports.REALTIME_INVALIDATION_TRIGGERS);
50
+ exports.RealtimeInvalidationStageSchema = zod_1.z.enum(exports.REALTIME_INVALIDATION_STAGES);
51
+ exports.RealtimeInvalidationSurfaceSchema = zod_1.z.enum(exports.REALTIME_INVALIDATION_SURFACES);
52
+ exports.RealtimeInvalidationMetricSampleSchema = zod_1.z
53
+ .object({
54
+ trigger: exports.RealtimeInvalidationTriggerSchema,
55
+ stage: exports.RealtimeInvalidationStageSchema,
56
+ surface: exports.RealtimeInvalidationSurfaceSchema,
57
+ count: zod_1.z.number().int().min(1).max(10000),
58
+ })
59
+ .strict();
60
+ exports.RealtimeInvalidationMetricsRequestSchema = zod_1.z
61
+ .object({
62
+ samples: zod_1.z.array(exports.RealtimeInvalidationMetricSampleSchema).min(1).max(64),
63
+ })
64
+ .strict();
65
+ exports.realtimeTelemetryContract = c.router({
66
+ reportInvalidationMetrics: {
67
+ method: 'POST',
68
+ path: '/realtime/invalidation-metrics',
69
+ body: exports.RealtimeInvalidationMetricsRequestSchema,
70
+ responses: {
71
+ 204: zod_1.z.undefined(),
72
+ 400: error_schemas_1.ErrorResponseSchema,
73
+ 401: error_schemas_1.ErrorResponseSchema,
74
+ },
75
+ summary: 'Record bounded browser realtime invalidation attribution',
76
+ metadata: { tags: ['Realtime telemetry'] },
77
+ },
78
+ }, {
79
+ pathPrefix: '/v2',
80
+ commonResponses: { 500: error_schemas_1.ErrorResponseSchema },
81
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=realtime-telemetry.contract.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime-telemetry.contract.spec.d.ts","sourceRoot":"","sources":["../../contracts/realtime/realtime-telemetry.contract.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bun_test_1 = require("bun:test");
4
+ const realtime_telemetry_contract_1 = require("./realtime-telemetry.contract");
5
+ const validSample = {
6
+ trigger: 'data_changed',
7
+ stage: 'planned',
8
+ surface: 'bookings',
9
+ count: 1,
10
+ };
11
+ (0, bun_test_1.describe)('realtime telemetry contract', () => {
12
+ (0, bun_test_1.it)('pins the bounded ingestion route', () => {
13
+ (0, bun_test_1.expect)(realtime_telemetry_contract_1.realtimeTelemetryContract.reportInvalidationMetrics.method).toBe('POST');
14
+ (0, bun_test_1.expect)(realtime_telemetry_contract_1.realtimeTelemetryContract.reportInvalidationMetrics.path).toBe('/v2/realtime/invalidation-metrics');
15
+ });
16
+ (0, bun_test_1.it)('accepts every closed trigger, stage, and surface value', () => {
17
+ for (const trigger of realtime_telemetry_contract_1.REALTIME_INVALIDATION_TRIGGERS) {
18
+ for (const stage of realtime_telemetry_contract_1.REALTIME_INVALIDATION_STAGES) {
19
+ for (const surface of realtime_telemetry_contract_1.REALTIME_INVALIDATION_SURFACES) {
20
+ (0, bun_test_1.expect)(realtime_telemetry_contract_1.RealtimeInvalidationMetricsRequestSchema.safeParse({
21
+ samples: [{ trigger, stage, surface, count: 10000 }],
22
+ }).success).toBe(true);
23
+ }
24
+ }
25
+ }
26
+ });
27
+ bun_test_1.it.each([
28
+ { samples: [] },
29
+ { samples: Array.from({ length: 65 }, () => validSample) },
30
+ { samples: [{ ...validSample, count: 0 }] },
31
+ { samples: [{ ...validSample, count: 10001 }] },
32
+ { samples: [{ ...validSample, count: 1.5 }] },
33
+ { samples: [{ ...validSample, trigger: 'focus' }] },
34
+ { samples: [{ ...validSample, stage: 'paused' }] },
35
+ { samples: [{ ...validSample, surface: 'worker-123' }] },
36
+ { samples: [{ ...validSample, userId: 'u-1' }] },
37
+ { samples: [validSample], extra: true },
38
+ ])('rejects an invalid or unbounded payload: %j', (body) => {
39
+ (0, bun_test_1.expect)(realtime_telemetry_contract_1.RealtimeInvalidationMetricsRequestSchema.safeParse(body).success).toBe(false);
40
+ });
41
+ });
@@ -0,0 +1,9 @@
1
+ import type { AbilityRule } from '../abilities/abilities.contract';
2
+ /**
3
+ * Pure compiler: relay pod memberships -> CASL rules. Consumed by BOTH the API
4
+ * CaslAbilityFactory and the web computeAbilityRules, mirroring
5
+ * buildUserAccessGrantRules. Callers pass [] for a user without the OUTREACH
6
+ * role, so role and membership stay two independent locks.
7
+ */
8
+ export declare function buildRelayPodMembershipRules(podIds: string[]): AbilityRule[];
9
+ //# sourceMappingURL=build-relay-pod-membership-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-relay-pod-membership-rules.d.ts","sourceRoot":"","sources":["../../contracts/relay-pods/build-relay-pod-membership-rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAM5E"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildRelayPodMembershipRules = buildRelayPodMembershipRules;
4
+ /**
5
+ * Pure compiler: relay pod memberships -> CASL rules. Consumed by BOTH the API
6
+ * CaslAbilityFactory and the web computeAbilityRules, mirroring
7
+ * buildUserAccessGrantRules. Callers pass [] for a user without the OUTREACH
8
+ * role, so role and membership stay two independent locks.
9
+ */
10
+ function buildRelayPodMembershipRules(podIds) {
11
+ const ids = [...new Set(podIds)].sort();
12
+ if (ids.length === 0)
13
+ return [];
14
+ return [
15
+ { action: 'manage', subject: 'RelayPod', conditions: { id: { $in: ids } } },
16
+ ];
17
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=build-relay-pod-membership-rules.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-relay-pod-membership-rules.spec.d.ts","sourceRoot":"","sources":["../../contracts/relay-pods/build-relay-pod-membership-rules.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bun_test_1 = require("bun:test");
4
+ const build_relay_pod_membership_rules_1 = require("./build-relay-pod-membership-rules");
5
+ const A = '00000000-0000-4000-8000-00000000000a';
6
+ const B = '00000000-0000-4000-8000-00000000000b';
7
+ (0, bun_test_1.describe)('buildRelayPodMembershipRules', () => {
8
+ (0, bun_test_1.it)('produces no rules for an empty membership', () => {
9
+ (0, bun_test_1.expect)((0, build_relay_pod_membership_rules_1.buildRelayPodMembershipRules)([])).toEqual([]);
10
+ });
11
+ (0, bun_test_1.it)('emits one manage rule with sorted, de-duplicated ids', () => {
12
+ (0, bun_test_1.expect)((0, build_relay_pod_membership_rules_1.buildRelayPodMembershipRules)([B, A, B])).toEqual([
13
+ {
14
+ action: 'manage',
15
+ subject: 'RelayPod',
16
+ conditions: { id: { $in: [A, B] } },
17
+ },
18
+ ]);
19
+ });
20
+ });