@dakkitor/api-contracts 1.1.153 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/dist/abilities/abilities.contract.d.ts +53 -1
  2. package/dist/abilities/abilities.contract.d.ts.map +1 -1
  3. package/dist/abilities/abilities.contract.js +92 -1
  4. package/dist/abilities/abilities.contract.spec.d.ts +2 -0
  5. package/dist/abilities/abilities.contract.spec.d.ts.map +1 -0
  6. package/dist/abilities/abilities.contract.spec.js +145 -0
  7. package/dist/abilities/admin-dashboard.abilities.test.d.ts +2 -0
  8. package/dist/abilities/admin-dashboard.abilities.test.d.ts.map +1 -0
  9. package/dist/abilities/admin-dashboard.abilities.test.js +33 -0
  10. package/dist/abilities/admin.abilities.json +19 -0
  11. package/dist/abilities/bot.abilities.json +13 -4
  12. package/dist/abilities/first-agent.abilities.json +317 -70
  13. package/dist/abilities/interconnection.abilities.json +75 -0
  14. package/dist/abilities/kpi.abilities.json +68 -0
  15. package/dist/abilities/office-manager.abilities.json +111 -0
  16. package/dist/abilities/second-agent.abilities.json +417 -43
  17. package/dist/abilities/team-leads.json +71 -6
  18. package/dist/abilities/worker-curator.abilities.json +233 -0
  19. package/dist/actives/actives.contract.d.ts +19379 -23651
  20. package/dist/actives/actives.contract.d.ts.map +1 -1
  21. package/dist/actives/actives.contract.js +517 -114
  22. package/dist/agent-client-links/agent-client-links.contract.d.ts +1431 -291
  23. package/dist/agent-client-links/agent-client-links.contract.d.ts.map +1 -1
  24. package/dist/auth/auth.contract.d.ts +1050 -81
  25. package/dist/auth/auth.contract.d.ts.map +1 -1
  26. package/dist/auth/auth.contract.js +115 -3
  27. package/dist/bookings/booking-worker-summary.spec.d.ts +2 -0
  28. package/dist/bookings/booking-worker-summary.spec.d.ts.map +1 -0
  29. package/dist/bookings/booking-worker-summary.spec.js +25 -0
  30. package/dist/bookings/bookings.contract.d.ts +20643 -26117
  31. package/dist/bookings/bookings.contract.d.ts.map +1 -1
  32. package/dist/bookings/bookings.contract.js +383 -91
  33. package/dist/bookings/bookings.contract.spec.d.ts +2 -0
  34. package/dist/bookings/bookings.contract.spec.d.ts.map +1 -0
  35. package/dist/bookings/bookings.contract.spec.js +11 -0
  36. package/dist/bookings/job-lock.spec.d.ts +2 -0
  37. package/dist/bookings/job-lock.spec.d.ts.map +1 -0
  38. package/dist/bookings/job-lock.spec.js +56 -0
  39. package/dist/bot-parse-cache/bot-parse-cache.contract.d.ts +232 -0
  40. package/dist/bot-parse-cache/bot-parse-cache.contract.d.ts.map +1 -0
  41. package/dist/bot-parse-cache/bot-parse-cache.contract.js +64 -0
  42. package/dist/call-history/call-history.contract.d.ts +1336 -767
  43. package/dist/call-history/call-history.contract.d.ts.map +1 -1
  44. package/dist/call-history/call-history.contract.js +86 -10
  45. package/dist/calls-feed/calls-feed.contract.d.ts +417 -0
  46. package/dist/calls-feed/calls-feed.contract.d.ts.map +1 -0
  47. package/dist/calls-feed/calls-feed.contract.js +32 -0
  48. package/dist/client-contacts/client-contacts.contract.d.ts +410 -226
  49. package/dist/client-contacts/client-contacts.contract.d.ts.map +1 -1
  50. package/dist/client-contacts/client-contacts.contract.js +35 -4
  51. package/dist/clients/clients.contract.d.ts +227 -73
  52. package/dist/clients/clients.contract.d.ts.map +1 -1
  53. package/dist/clients/clients.contract.js +45 -21
  54. package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts +2908 -1834
  55. package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts.map +1 -1
  56. package/dist/collaboration-checkings/collaboration-checkings.contract.js +14 -9
  57. package/dist/collaborations/collaborations.contract.d.ts +2676 -1409
  58. package/dist/collaborations/collaborations.contract.d.ts.map +1 -1
  59. package/dist/collaborations/collaborations.contract.js +33 -9
  60. package/dist/common/call-rating.schema.d.ts.map +1 -1
  61. package/dist/common/call-rating.schema.js +4 -2
  62. package/dist/common/common-schemas.d.ts +59 -11
  63. package/dist/common/common-schemas.d.ts.map +1 -1
  64. package/dist/common/common-schemas.js +55 -29
  65. package/dist/common/error-schemas.d.ts +2 -2
  66. package/dist/common/pagination-query.schema.d.ts +13 -2
  67. package/dist/common/pagination-query.schema.d.ts.map +1 -1
  68. package/dist/common/pagination-query.schema.js +21 -2
  69. package/dist/common/pagination-query.schema.spec.d.ts +2 -0
  70. package/dist/common/pagination-query.schema.spec.d.ts.map +1 -0
  71. package/dist/common/pagination-query.schema.spec.js +53 -0
  72. package/dist/companies/companies.contract.d.ts +53 -28
  73. package/dist/companies/companies.contract.d.ts.map +1 -1
  74. package/dist/companies/companies.contract.js +11 -10
  75. package/dist/crews/crews.contract.d.ts +1010 -196
  76. package/dist/crews/crews.contract.d.ts.map +1 -1
  77. package/dist/crews/crews.contract.js +98 -17
  78. package/dist/crews/crews.contract.spec.d.ts +2 -0
  79. package/dist/crews/crews.contract.spec.d.ts.map +1 -0
  80. package/dist/crews/crews.contract.spec.js +67 -0
  81. package/dist/cron-executions/cron-executions.contract.d.ts +988 -59
  82. package/dist/cron-executions/cron-executions.contract.d.ts.map +1 -1
  83. package/dist/cron-executions/cron-executions.contract.js +127 -7
  84. package/dist/curated-worker-leads/__tests__/disposition-reason.spec.d.ts +2 -0
  85. package/dist/curated-worker-leads/__tests__/disposition-reason.spec.d.ts.map +1 -0
  86. package/dist/curated-worker-leads/__tests__/disposition-reason.spec.js +40 -0
  87. package/dist/curated-worker-leads/candidate-coordination-snapshot.spec.d.ts +2 -0
  88. package/dist/curated-worker-leads/candidate-coordination-snapshot.spec.d.ts.map +1 -0
  89. package/dist/curated-worker-leads/candidate-coordination-snapshot.spec.js +16 -0
  90. package/dist/curated-worker-leads/candidate-coordination.contract.d.ts +21650 -0
  91. package/dist/curated-worker-leads/candidate-coordination.contract.d.ts.map +1 -0
  92. package/dist/curated-worker-leads/candidate-coordination.contract.js +921 -0
  93. package/dist/curated-worker-leads/candidate-coordination.contract.spec.d.ts +2 -0
  94. package/dist/curated-worker-leads/candidate-coordination.contract.spec.d.ts.map +1 -0
  95. package/dist/curated-worker-leads/candidate-coordination.contract.spec.js +51 -0
  96. package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts +2364 -0
  97. package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts.map +1 -0
  98. package/dist/curated-worker-leads/candidate-edit-session.contract.js +173 -0
  99. package/dist/curated-worker-leads/consent-queue.contract.d.ts +4497 -0
  100. package/dist/curated-worker-leads/consent-queue.contract.d.ts.map +1 -0
  101. package/dist/curated-worker-leads/consent-queue.contract.js +201 -0
  102. package/dist/curated-worker-leads/contact-history.spec.d.ts +2 -0
  103. package/dist/curated-worker-leads/contact-history.spec.d.ts.map +1 -0
  104. package/dist/curated-worker-leads/contact-history.spec.js +88 -0
  105. package/dist/curated-worker-leads/contact-session.contract.spec.d.ts +2 -0
  106. package/dist/curated-worker-leads/contact-session.contract.spec.d.ts.map +1 -0
  107. package/dist/curated-worker-leads/contact-session.contract.spec.js +315 -0
  108. package/dist/curated-worker-leads/curated-worker-lead-config.contract.d.ts +489 -0
  109. package/dist/curated-worker-leads/curated-worker-lead-config.contract.d.ts.map +1 -0
  110. package/dist/curated-worker-leads/curated-worker-lead-config.contract.js +88 -0
  111. package/dist/curated-worker-leads/curated-worker-leads.contract.d.ts +135 -0
  112. package/dist/curated-worker-leads/curated-worker-leads.contract.d.ts.map +1 -0
  113. package/dist/curated-worker-leads/curated-worker-leads.contract.js +32 -0
  114. package/dist/curated-worker-leads/job-candidate-cards.spec.d.ts +2 -0
  115. package/dist/curated-worker-leads/job-candidate-cards.spec.d.ts.map +1 -0
  116. package/dist/curated-worker-leads/job-candidate-cards.spec.js +157 -0
  117. package/dist/curated-worker-leads/job-candidates.spec.d.ts +2 -0
  118. package/dist/curated-worker-leads/job-candidates.spec.d.ts.map +1 -0
  119. package/dist/curated-worker-leads/job-candidates.spec.js +140 -0
  120. package/dist/curated-worker-leads/job-feed-match-counts.contract.spec.d.ts +2 -0
  121. package/dist/curated-worker-leads/job-feed-match-counts.contract.spec.d.ts.map +1 -0
  122. package/dist/curated-worker-leads/job-feed-match-counts.contract.spec.js +19 -0
  123. package/dist/curated-worker-leads/jobs-tab.contract.d.ts +18365 -0
  124. package/dist/curated-worker-leads/jobs-tab.contract.d.ts.map +1 -0
  125. package/dist/curated-worker-leads/jobs-tab.contract.js +642 -0
  126. package/dist/curated-worker-leads/lead-agent-area.contract.d.ts +348 -0
  127. package/dist/curated-worker-leads/lead-agent-area.contract.d.ts.map +1 -0
  128. package/dist/curated-worker-leads/lead-agent-area.contract.js +51 -0
  129. package/dist/curated-worker-leads/owned-jobs-tab.contract.d.ts +1116 -0
  130. package/dist/curated-worker-leads/owned-jobs-tab.contract.d.ts.map +1 -0
  131. package/dist/curated-worker-leads/owned-jobs-tab.contract.js +93 -0
  132. package/dist/curated-workers/curated-filter-additions.spec.d.ts +2 -0
  133. package/dist/curated-workers/curated-filter-additions.spec.d.ts.map +1 -0
  134. package/dist/curated-workers/curated-filter-additions.spec.js +17 -0
  135. package/dist/curated-workers/curated-job-seeking.spec.d.ts +2 -0
  136. package/dist/curated-workers/curated-job-seeking.spec.d.ts.map +1 -0
  137. package/dist/curated-workers/curated-job-seeking.spec.js +53 -0
  138. package/dist/curated-workers/curated-workers-id-documents.spec.d.ts +2 -0
  139. package/dist/curated-workers/curated-workers-id-documents.spec.d.ts.map +1 -0
  140. package/dist/curated-workers/curated-workers-id-documents.spec.js +38 -0
  141. package/dist/curated-workers/curated-workers.contract.d.ts +6160 -1906
  142. package/dist/curated-workers/curated-workers.contract.d.ts.map +1 -1
  143. package/dist/curated-workers/curated-workers.contract.js +333 -51
  144. package/dist/dashboards/agent-daily-metrics.contract.d.ts +10 -10
  145. package/dist/dashboards/agent-daily-metrics.contract.js +1 -1
  146. package/dist/dashboards/dashboard-widgets.contract.d.ts +3800 -496
  147. package/dist/dashboards/dashboard-widgets.contract.d.ts.map +1 -1
  148. package/dist/dashboards/dashboard-widgets.contract.js +527 -29
  149. package/dist/dashboards/dashboard.contract.d.ts +8 -8
  150. package/dist/document-intake/document-intake.contract.d.ts +3132 -0
  151. package/dist/document-intake/document-intake.contract.d.ts.map +1 -0
  152. package/dist/document-intake/document-intake.contract.js +418 -0
  153. package/dist/export-jobs/export-jobs.contract.d.ts +3918 -0
  154. package/dist/export-jobs/export-jobs.contract.d.ts.map +1 -0
  155. package/dist/export-jobs/export-jobs.contract.js +240 -0
  156. package/dist/exports-events/exports-events.schemas.d.ts +90 -0
  157. package/dist/exports-events/exports-events.schemas.d.ts.map +1 -0
  158. package/dist/exports-events/exports-events.schemas.js +56 -0
  159. package/dist/files/files.contract.d.ts +133 -126
  160. package/dist/files/files.contract.d.ts.map +1 -1
  161. package/dist/files/files.contract.js +8 -0
  162. package/dist/health/health.contract.d.ts +4 -4
  163. package/dist/index.d.ts +82 -0
  164. package/dist/index.d.ts.map +1 -1
  165. package/dist/index.js +87 -1
  166. package/dist/interactions/interactions.contract.d.ts +162 -0
  167. package/dist/interactions/interactions.contract.d.ts.map +1 -0
  168. package/dist/interactions/interactions.contract.js +42 -0
  169. package/dist/job-clusters/job-clusters.contract.d.ts +1584 -0
  170. package/dist/job-clusters/job-clusters.contract.d.ts.map +1 -0
  171. package/dist/job-clusters/job-clusters.contract.js +133 -0
  172. package/dist/jobs/jobs.contract.d.ts +16517 -8495
  173. package/dist/jobs/jobs.contract.d.ts.map +1 -1
  174. package/dist/jobs/jobs.contract.js +394 -190
  175. package/dist/jobs/jobs.contract.spec.d.ts +2 -0
  176. package/dist/jobs/jobs.contract.spec.d.ts.map +1 -0
  177. package/dist/jobs/jobs.contract.spec.js +70 -0
  178. package/dist/kpi-impersonation/kpi-impersonation.contract.d.ts +75 -75
  179. package/dist/lead-assignments/lead-assignments.contract.d.ts +2933 -1122
  180. package/dist/lead-assignments/lead-assignments.contract.d.ts.map +1 -1
  181. package/dist/lead-assignments/lead-assignments.contract.js +29 -7
  182. package/dist/lead-distribution/agent-lead-distribution.contract.d.ts +328 -64
  183. package/dist/lead-distribution/agent-lead-distribution.contract.d.ts.map +1 -1
  184. package/dist/lead-distribution/agent-lead-distribution.contract.js +1 -1
  185. package/dist/lead-distribution/lead-distribution-config.contract.d.ts +31 -31
  186. package/dist/leads/leads.contract.d.ts +830 -368
  187. package/dist/leads/leads.contract.d.ts.map +1 -1
  188. package/dist/leads/leads.contract.js +106 -26
  189. package/dist/locations/locations.contract.d.ts +36 -36
  190. package/dist/notifications/notifications.contract.d.ts +1039 -0
  191. package/dist/notifications/notifications.contract.d.ts.map +1 -0
  192. package/dist/notifications/notifications.contract.js +110 -0
  193. package/dist/offices/offices.contract.d.ts +210 -60
  194. package/dist/offices/offices.contract.d.ts.map +1 -1
  195. package/dist/offices/offices.contract.js +18 -4
  196. package/dist/outreach/__tests__/outreach-claim.test.d.ts +2 -0
  197. package/dist/outreach/__tests__/outreach-claim.test.d.ts.map +1 -0
  198. package/dist/outreach/__tests__/outreach-claim.test.js +97 -0
  199. package/dist/outreach/__tests__/outreach-confirm-release.test.d.ts +2 -0
  200. package/dist/outreach/__tests__/outreach-confirm-release.test.d.ts.map +1 -0
  201. package/dist/outreach/__tests__/outreach-confirm-release.test.js +98 -0
  202. package/dist/outreach/__tests__/outreach-routes.test.d.ts +2 -0
  203. package/dist/outreach/__tests__/outreach-routes.test.d.ts.map +1 -0
  204. package/dist/outreach/__tests__/outreach-routes.test.js +57 -0
  205. package/dist/outreach/__tests__/outreach.schemas.test.d.ts +2 -0
  206. package/dist/outreach/__tests__/outreach.schemas.test.d.ts.map +1 -0
  207. package/dist/outreach/__tests__/outreach.schemas.test.js +140 -0
  208. package/dist/outreach/outreach.contract.d.ts +809 -0
  209. package/dist/outreach/outreach.contract.d.ts.map +1 -0
  210. package/dist/outreach/outreach.contract.js +195 -0
  211. package/dist/outreach/outreach.schemas.d.ts +113 -0
  212. package/dist/outreach/outreach.schemas.d.ts.map +1 -0
  213. package/dist/outreach/outreach.schemas.js +132 -0
  214. package/dist/own-research/own-research.contract.d.ts +1356 -552
  215. package/dist/own-research/own-research.contract.d.ts.map +1 -1
  216. package/dist/own-research/own-research.contract.js +14 -3
  217. package/dist/postcodes/postcodes.contract.d.ts +16 -16
  218. package/dist/proofs/proof-category.enum.d.ts +4 -0
  219. package/dist/proofs/proof-category.enum.d.ts.map +1 -0
  220. package/dist/proofs/proof-category.enum.js +5 -0
  221. package/dist/proofs/proof-entity-type.enum.d.ts +4 -0
  222. package/dist/proofs/proof-entity-type.enum.d.ts.map +1 -0
  223. package/dist/proofs/proof-entity-type.enum.js +5 -0
  224. package/dist/proofs/proof-type.enum.d.ts +28 -0
  225. package/dist/proofs/proof-type.enum.d.ts.map +1 -0
  226. package/dist/proofs/proof-type.enum.js +14 -0
  227. package/dist/proofs/proofs.contract.d.ts +3009 -0
  228. package/dist/proofs/proofs.contract.d.ts.map +1 -0
  229. package/dist/proofs/proofs.contract.js +92 -0
  230. package/dist/proofs/proofs.dtos.d.ts +1319 -0
  231. package/dist/proofs/proofs.dtos.d.ts.map +1 -0
  232. package/dist/proofs/proofs.dtos.js +178 -0
  233. package/dist/qualifications/qualifications.contract.d.ts +94 -94
  234. package/dist/realtime/data-changed.d.ts +21 -0
  235. package/dist/realtime/data-changed.d.ts.map +1 -0
  236. package/dist/realtime/data-changed.js +37 -0
  237. package/dist/shared/booking-history.schema.d.ts +27 -0
  238. package/dist/shared/booking-history.schema.d.ts.map +1 -0
  239. package/dist/shared/booking-history.schema.js +22 -0
  240. package/dist/shared/booking-history.spec.d.ts +2 -0
  241. package/dist/shared/booking-history.spec.d.ts.map +1 -0
  242. package/dist/shared/booking-history.spec.js +44 -0
  243. package/dist/shared/contact-suppressions.contract.d.ts +22 -0
  244. package/dist/shared/contact-suppressions.contract.d.ts.map +1 -0
  245. package/dist/shared/contact-suppressions.contract.js +13 -0
  246. package/dist/shared/live-booking.schema.d.ts +57 -0
  247. package/dist/shared/live-booking.schema.d.ts.map +1 -0
  248. package/dist/shared/live-booking.schema.js +34 -0
  249. package/dist/shared/summary-schemas.d.ts +218 -0
  250. package/dist/shared/summary-schemas.d.ts.map +1 -0
  251. package/dist/shared/summary-schemas.js +56 -0
  252. package/dist/sheets-sync/__tests__/sheets-sync-events.schemas.test.d.ts +2 -0
  253. package/dist/sheets-sync/__tests__/sheets-sync-events.schemas.test.d.ts.map +1 -0
  254. package/dist/sheets-sync/__tests__/sheets-sync-events.schemas.test.js +20 -0
  255. package/dist/sheets-sync/__tests__/tab-sync-config.schema.test.d.ts +2 -0
  256. package/dist/sheets-sync/__tests__/tab-sync-config.schema.test.d.ts.map +1 -0
  257. package/dist/sheets-sync/__tests__/tab-sync-config.schema.test.js +41 -0
  258. package/dist/sheets-sync/sheets-sync-events.schemas.d.ts +43 -0
  259. package/dist/sheets-sync/sheets-sync-events.schemas.d.ts.map +1 -0
  260. package/dist/sheets-sync/sheets-sync-events.schemas.js +29 -0
  261. package/dist/sheets-sync/sheets-sync.contract.d.ts +7258 -0
  262. package/dist/sheets-sync/sheets-sync.contract.d.ts.map +1 -0
  263. package/dist/sheets-sync/sheets-sync.contract.js +323 -0
  264. package/dist/telegram/telegram.contract.d.ts +727 -0
  265. package/dist/telegram/telegram.contract.d.ts.map +1 -0
  266. package/dist/telegram/telegram.contract.js +75 -0
  267. package/dist/trades/trade-rate-assessment.d.ts +18 -0
  268. package/dist/trades/trade-rate-assessment.d.ts.map +1 -0
  269. package/dist/trades/trade-rate-assessment.js +46 -0
  270. package/dist/trades/trade-rate-assessment.spec.d.ts +2 -0
  271. package/dist/trades/trade-rate-assessment.spec.d.ts.map +1 -0
  272. package/dist/trades/trade-rate-assessment.spec.js +223 -0
  273. package/dist/trades/trades.contract.d.ts +111 -0
  274. package/dist/trades/trades.contract.d.ts.map +1 -1
  275. package/dist/trades/trades.contract.js +49 -1
  276. package/dist/trades/trades.contract.spec.d.ts +2 -0
  277. package/dist/trades/trades.contract.spec.d.ts.map +1 -0
  278. package/dist/trades/trades.contract.spec.js +173 -0
  279. package/dist/user-access-grants/build-user-access-grant-rules.d.ts +10 -0
  280. package/dist/user-access-grants/build-user-access-grant-rules.d.ts.map +1 -0
  281. package/dist/user-access-grants/build-user-access-grant-rules.js +69 -0
  282. package/dist/user-access-grants/build-user-access-grant-rules.spec.d.ts +2 -0
  283. package/dist/user-access-grants/build-user-access-grant-rules.spec.d.ts.map +1 -0
  284. package/dist/user-access-grants/build-user-access-grant-rules.spec.js +77 -0
  285. package/dist/user-access-grants/user-access-grant-templates.json +454 -0
  286. package/dist/user-access-grants/user-access-grants.contract.d.ts +3886 -0
  287. package/dist/user-access-grants/user-access-grants.contract.d.ts.map +1 -0
  288. package/dist/user-access-grants/user-access-grants.contract.js +189 -0
  289. package/dist/user-access-grants/user-access-grants.contract.spec.d.ts +2 -0
  290. package/dist/user-access-grants/user-access-grants.contract.spec.d.ts.map +1 -0
  291. package/dist/user-access-grants/user-access-grants.contract.spec.js +149 -0
  292. package/dist/users/users.contract.d.ts +1959 -349
  293. package/dist/users/users.contract.d.ts.map +1 -1
  294. package/dist/users/users.contract.js +222 -37
  295. package/dist/users/users.contract.spec.d.ts +2 -0
  296. package/dist/users/users.contract.spec.d.ts.map +1 -0
  297. package/dist/users/users.contract.spec.js +103 -0
  298. package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts +4609 -0
  299. package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts.map +1 -0
  300. package/dist/worker-identity-cases/worker-identity-cases.contract.js +409 -0
  301. package/dist/worker-merge-proposals/worker-merge-proposals.contract.d.ts +1511 -0
  302. package/dist/worker-merge-proposals/worker-merge-proposals.contract.d.ts.map +1 -0
  303. package/dist/worker-merge-proposals/worker-merge-proposals.contract.js +150 -0
  304. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.d.ts +1106 -0
  305. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.d.ts.map +1 -0
  306. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.js +85 -0
  307. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.spec.d.ts +2 -0
  308. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.spec.d.ts.map +1 -0
  309. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.spec.js +216 -0
  310. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.schemas.d.ts +453 -0
  311. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.schemas.d.ts.map +1 -0
  312. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.schemas.js +109 -0
  313. package/dist/workers/do-not-contact.contract.d.ts +46 -0
  314. package/dist/workers/do-not-contact.contract.d.ts.map +1 -0
  315. package/dist/workers/do-not-contact.contract.js +41 -0
  316. package/dist/workers/do-not-contact.contract.spec.d.ts +2 -0
  317. package/dist/workers/do-not-contact.contract.spec.d.ts.map +1 -0
  318. package/dist/workers/do-not-contact.contract.spec.js +47 -0
  319. package/dist/workers/duplicate-group-worker.spec.d.ts +2 -0
  320. package/dist/workers/duplicate-group-worker.spec.d.ts.map +1 -0
  321. package/dist/workers/duplicate-group-worker.spec.js +34 -0
  322. package/dist/workers/filter-exact-flags.spec.d.ts +2 -0
  323. package/dist/workers/filter-exact-flags.spec.d.ts.map +1 -0
  324. package/dist/workers/filter-exact-flags.spec.js +37 -0
  325. package/dist/workers/worker-source-attribution.contract.spec.d.ts +2 -0
  326. package/dist/workers/worker-source-attribution.contract.spec.d.ts.map +1 -0
  327. package/dist/workers/worker-source-attribution.contract.spec.js +442 -0
  328. package/dist/workers/worker-source.spec.d.ts +2 -0
  329. package/dist/workers/worker-source.spec.d.ts.map +1 -0
  330. package/dist/workers/worker-source.spec.js +13 -0
  331. package/dist/workers/worker-status-facets.spec.d.ts +2 -0
  332. package/dist/workers/worker-status-facets.spec.d.ts.map +1 -0
  333. package/dist/workers/worker-status-facets.spec.js +34 -0
  334. package/dist/workers/workers.contract.d.ts +19534 -5969
  335. package/dist/workers/workers.contract.d.ts.map +1 -1
  336. package/dist/workers/workers.contract.js +1096 -113
  337. package/dist/workers/workers.contract.spec.d.ts +2 -0
  338. package/dist/workers/workers.contract.spec.d.ts.map +1 -0
  339. package/dist/workers/workers.contract.spec.js +31 -0
  340. package/package.json +5 -4
@@ -0,0 +1,4609 @@
1
+ import { z } from 'zod';
2
+ export declare const WorkerIdentityCaseQueueSchema: z.ZodEnum<["NEEDS_REVIEW", "CONFLICTS", "RESOLVED"]>;
3
+ export declare const WorkerIdentityCaseStatusSchema: z.ZodEnum<["PENDING", "CONFLICT", "AUTO_APPLIED", "CONFIRMED", "PARTIALLY_CONFIRMED", "REJECTED", "OBSOLETE"]>;
4
+ export declare const WorkerIdentityCaseKindSchema: z.ZodEnum<["IDENTITY_MERGE", "CURATED_UPDATE", "CURATED_LINK_AUDIT"]>;
5
+ export declare const WorkerCuratedLinkAuditReasonSchema: z.ZodEnum<["NAME_MISMATCH", "NINO_CONFLICT", "DOB_CONFLICT", "NO_SUPPORTING_EVIDENCE", "WEAK_PHONE_ONLY"]>;
6
+ export declare const WorkerCuratedLinkAuditSchema: z.ZodObject<{
7
+ suggestedAction: z.ZodLiteral<"UNLINK">;
8
+ reasons: z.ZodArray<z.ZodEnum<["NAME_MISMATCH", "NINO_CONFLICT", "DOB_CONFLICT", "NO_SUPPORTING_EVIDENCE", "WEAK_PHONE_ONLY"]>, "many">;
9
+ }, "strip", z.ZodTypeAny, {
10
+ suggestedAction: "UNLINK";
11
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
12
+ }, {
13
+ suggestedAction: "UNLINK";
14
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
15
+ }>;
16
+ export declare const WorkerCuratedLinkAuditRunResultSchema: z.ZodObject<{
17
+ scanned: z.ZodNumber;
18
+ suggestions: z.ZodNumber;
19
+ closed: z.ZodNumber;
20
+ }, "strip", z.ZodTypeAny, {
21
+ scanned: number;
22
+ suggestions: number;
23
+ closed: number;
24
+ }, {
25
+ scanned: number;
26
+ suggestions: number;
27
+ closed: number;
28
+ }>;
29
+ export declare const IdentityEvidenceSignalSchema: z.ZodEnum<["NINO", "DOC_NUMBER", "SHARE_CODE", "EMAIL", "PHONE", "DOB_NAME", "AI"]>;
30
+ export declare const WorkerIdentityCaseEdgeSchema: z.ZodObject<{
31
+ workerId: z.ZodString;
32
+ targetType: z.ZodEnum<["CURATED", "WORKER"]>;
33
+ targetId: z.ZodString;
34
+ signals: z.ZodRecord<z.ZodString, z.ZodUnknown>;
35
+ conflicts: z.ZodArray<z.ZodString, "many">;
36
+ nameSim: z.ZodNullable<z.ZodNumber>;
37
+ } & {
38
+ kind: z.ZodOptional<z.ZodEnum<["HARD", "REVIEW", "AI", "CONFLICT"]>>;
39
+ llmVerdict: z.ZodOptional<z.ZodEnum<["SAME", "DIFFERENT", "UNSURE"]>>;
40
+ llmReason: z.ZodOptional<z.ZodString>;
41
+ }, "strip", z.ZodTypeAny, {
42
+ workerId: string;
43
+ conflicts: string[];
44
+ targetType: "WORKER" | "CURATED";
45
+ targetId: string;
46
+ signals: Record<string, unknown>;
47
+ nameSim: number | null;
48
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
49
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
50
+ llmReason?: string | undefined;
51
+ }, {
52
+ workerId: string;
53
+ conflicts: string[];
54
+ targetType: "WORKER" | "CURATED";
55
+ targetId: string;
56
+ signals: Record<string, unknown>;
57
+ nameSim: number | null;
58
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
59
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
60
+ llmReason?: string | undefined;
61
+ }>;
62
+ export declare const WorkerIdentityCaseSummarySchema: z.ZodObject<{
63
+ id: z.ZodString;
64
+ kind: z.ZodEnum<["IDENTITY_MERGE", "CURATED_UPDATE", "CURATED_LINK_AUDIT"]>;
65
+ status: z.ZodEnum<["PENDING", "CONFLICT", "AUTO_APPLIED", "CONFIRMED", "PARTIALLY_CONFIRMED", "REJECTED", "OBSOLETE"]>;
66
+ revision: z.ZodNumber;
67
+ confidence: z.ZodNullable<z.ZodNumber>;
68
+ curatedWorker: z.ZodNullable<z.ZodObject<{
69
+ id: z.ZodString;
70
+ firstName: z.ZodString;
71
+ lastName: z.ZodNullable<z.ZodString>;
72
+ }, "strip", z.ZodTypeAny, {
73
+ id: string;
74
+ lastName: string | null;
75
+ firstName: string;
76
+ }, {
77
+ id: string;
78
+ lastName: string | null;
79
+ firstName: string;
80
+ }>>;
81
+ workers: z.ZodArray<z.ZodObject<{
82
+ id: z.ZodString;
83
+ firstName: z.ZodString;
84
+ lastName: z.ZodNullable<z.ZodString>;
85
+ agentName: z.ZodNullable<z.ZodString>;
86
+ }, "strip", z.ZodTypeAny, {
87
+ id: string;
88
+ lastName: string | null;
89
+ firstName: string;
90
+ agentName: string | null;
91
+ }, {
92
+ id: string;
93
+ lastName: string | null;
94
+ firstName: string;
95
+ agentName: string | null;
96
+ }>, "many">;
97
+ evidenceBadges: z.ZodArray<z.ZodEnum<["NINO", "DOC_NUMBER", "SHARE_CODE", "EMAIL", "PHONE", "DOB_NAME", "AI"]>, "many">;
98
+ conflicts: z.ZodArray<z.ZodString, "many">;
99
+ hasHardEvidence: z.ZodBoolean;
100
+ linkAudit: z.ZodNullable<z.ZodObject<{
101
+ suggestedAction: z.ZodLiteral<"UNLINK">;
102
+ reasons: z.ZodArray<z.ZodEnum<["NAME_MISMATCH", "NINO_CONFLICT", "DOB_CONFLICT", "NO_SUPPORTING_EVIDENCE", "WEAK_PHONE_ONLY"]>, "many">;
103
+ }, "strip", z.ZodTypeAny, {
104
+ suggestedAction: "UNLINK";
105
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
106
+ }, {
107
+ suggestedAction: "UNLINK";
108
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
109
+ }>>;
110
+ createdAt: z.ZodString;
111
+ }, "strip", z.ZodTypeAny, {
112
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
113
+ id: string;
114
+ createdAt: string;
115
+ confidence: number | null;
116
+ workers: {
117
+ id: string;
118
+ lastName: string | null;
119
+ firstName: string;
120
+ agentName: string | null;
121
+ }[];
122
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
123
+ conflicts: string[];
124
+ curatedWorker: {
125
+ id: string;
126
+ lastName: string | null;
127
+ firstName: string;
128
+ } | null;
129
+ revision: number;
130
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
131
+ hasHardEvidence: boolean;
132
+ linkAudit: {
133
+ suggestedAction: "UNLINK";
134
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
135
+ } | null;
136
+ }, {
137
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
138
+ id: string;
139
+ createdAt: string;
140
+ confidence: number | null;
141
+ workers: {
142
+ id: string;
143
+ lastName: string | null;
144
+ firstName: string;
145
+ agentName: string | null;
146
+ }[];
147
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
148
+ conflicts: string[];
149
+ curatedWorker: {
150
+ id: string;
151
+ lastName: string | null;
152
+ firstName: string;
153
+ } | null;
154
+ revision: number;
155
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
156
+ hasHardEvidence: boolean;
157
+ linkAudit: {
158
+ suggestedAction: "UNLINK";
159
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
160
+ } | null;
161
+ }>;
162
+ export declare const WorkerIdentityCaseCuratedSubjectSchema: z.ZodObject<{
163
+ id: z.ZodString;
164
+ firstName: z.ZodString;
165
+ lastName: z.ZodNullable<z.ZodString>;
166
+ }, "strip", z.ZodTypeAny, {
167
+ id: string;
168
+ lastName: string | null;
169
+ firstName: string;
170
+ }, {
171
+ id: string;
172
+ lastName: string | null;
173
+ firstName: string;
174
+ }>;
175
+ /** Member documents the intelligence pipeline has not finished with — a
176
+ * staleness hint (spec §5): the case's evidence may still gain hard signals
177
+ * once these are extracted and their values reviewed/applied. */
178
+ export declare const WorkerIdentityCasePendingDocumentsSchema: z.ZodObject<{
179
+ /** Attachments with no extraction attempt yet (await the intake sweep). */
180
+ notExtracted: z.ZodNumber;
181
+ /** Extractions awaiting human review (or failed and retryable). */
182
+ awaitingReview: z.ZodNumber;
183
+ }, "strip", z.ZodTypeAny, {
184
+ notExtracted: number;
185
+ awaitingReview: number;
186
+ }, {
187
+ notExtracted: number;
188
+ awaitingReview: number;
189
+ }>;
190
+ export declare const WorkerIdentityCaseDetailSchema: z.ZodObject<{
191
+ id: z.ZodString;
192
+ kind: z.ZodEnum<["IDENTITY_MERGE", "CURATED_UPDATE", "CURATED_LINK_AUDIT"]>;
193
+ status: z.ZodEnum<["PENDING", "CONFLICT", "AUTO_APPLIED", "CONFIRMED", "PARTIALLY_CONFIRMED", "REJECTED", "OBSOLETE"]>;
194
+ revision: z.ZodNumber;
195
+ confidence: z.ZodNullable<z.ZodNumber>;
196
+ curatedWorker: z.ZodNullable<z.ZodObject<{
197
+ id: z.ZodString;
198
+ firstName: z.ZodString;
199
+ lastName: z.ZodNullable<z.ZodString>;
200
+ }, "strip", z.ZodTypeAny, {
201
+ id: string;
202
+ lastName: string | null;
203
+ firstName: string;
204
+ }, {
205
+ id: string;
206
+ lastName: string | null;
207
+ firstName: string;
208
+ }>>;
209
+ workers: z.ZodArray<z.ZodObject<{
210
+ id: z.ZodString;
211
+ firstName: z.ZodString;
212
+ lastName: z.ZodNullable<z.ZodString>;
213
+ agentName: z.ZodNullable<z.ZodString>;
214
+ }, "strip", z.ZodTypeAny, {
215
+ id: string;
216
+ lastName: string | null;
217
+ firstName: string;
218
+ agentName: string | null;
219
+ }, {
220
+ id: string;
221
+ lastName: string | null;
222
+ firstName: string;
223
+ agentName: string | null;
224
+ }>, "many">;
225
+ evidenceBadges: z.ZodArray<z.ZodEnum<["NINO", "DOC_NUMBER", "SHARE_CODE", "EMAIL", "PHONE", "DOB_NAME", "AI"]>, "many">;
226
+ conflicts: z.ZodArray<z.ZodString, "many">;
227
+ hasHardEvidence: z.ZodBoolean;
228
+ linkAudit: z.ZodNullable<z.ZodObject<{
229
+ suggestedAction: z.ZodLiteral<"UNLINK">;
230
+ reasons: z.ZodArray<z.ZodEnum<["NAME_MISMATCH", "NINO_CONFLICT", "DOB_CONFLICT", "NO_SUPPORTING_EVIDENCE", "WEAK_PHONE_ONLY"]>, "many">;
231
+ }, "strip", z.ZodTypeAny, {
232
+ suggestedAction: "UNLINK";
233
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
234
+ }, {
235
+ suggestedAction: "UNLINK";
236
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
237
+ }>>;
238
+ createdAt: z.ZodString;
239
+ } & {
240
+ edges: z.ZodArray<z.ZodObject<{
241
+ workerId: z.ZodString;
242
+ targetType: z.ZodEnum<["CURATED", "WORKER"]>;
243
+ targetId: z.ZodString;
244
+ signals: z.ZodRecord<z.ZodString, z.ZodUnknown>;
245
+ conflicts: z.ZodArray<z.ZodString, "many">;
246
+ nameSim: z.ZodNullable<z.ZodNumber>;
247
+ } & {
248
+ kind: z.ZodOptional<z.ZodEnum<["HARD", "REVIEW", "AI", "CONFLICT"]>>;
249
+ llmVerdict: z.ZodOptional<z.ZodEnum<["SAME", "DIFFERENT", "UNSURE"]>>;
250
+ llmReason: z.ZodOptional<z.ZodString>;
251
+ }, "strip", z.ZodTypeAny, {
252
+ workerId: string;
253
+ conflicts: string[];
254
+ targetType: "WORKER" | "CURATED";
255
+ targetId: string;
256
+ signals: Record<string, unknown>;
257
+ nameSim: number | null;
258
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
259
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
260
+ llmReason?: string | undefined;
261
+ }, {
262
+ workerId: string;
263
+ conflicts: string[];
264
+ targetType: "WORKER" | "CURATED";
265
+ targetId: string;
266
+ signals: Record<string, unknown>;
267
+ nameSim: number | null;
268
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
269
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
270
+ llmReason?: string | undefined;
271
+ }>, "many">;
272
+ /** Every curated subject of the case (evidence targets included), so
273
+ * multi-target conflict cases can offer each as an EXISTING target. */
274
+ curatedSubjects: z.ZodArray<z.ZodObject<{
275
+ id: z.ZodString;
276
+ firstName: z.ZodString;
277
+ lastName: z.ZodNullable<z.ZodString>;
278
+ }, "strip", z.ZodTypeAny, {
279
+ id: string;
280
+ lastName: string | null;
281
+ firstName: string;
282
+ }, {
283
+ id: string;
284
+ lastName: string | null;
285
+ firstName: string;
286
+ }>, "many">;
287
+ pendingDocuments: z.ZodObject<{
288
+ /** Attachments with no extraction attempt yet (await the intake sweep). */
289
+ notExtracted: z.ZodNumber;
290
+ /** Extractions awaiting human review (or failed and retryable). */
291
+ awaitingReview: z.ZodNumber;
292
+ }, "strip", z.ZodTypeAny, {
293
+ notExtracted: number;
294
+ awaitingReview: number;
295
+ }, {
296
+ notExtracted: number;
297
+ awaitingReview: number;
298
+ }>;
299
+ /** The surviving case id when the requested case was absorbed; null when
300
+ * the requested id is the live case. */
301
+ absorbedIntoCaseId: z.ZodNullable<z.ZodString>;
302
+ obsoleteReason: z.ZodNullable<z.ZodString>;
303
+ reviewedAt: z.ZodNullable<z.ZodString>;
304
+ appliedCuratedWorkerId: z.ZodNullable<z.ZodString>;
305
+ }, "strip", z.ZodTypeAny, {
306
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
307
+ id: string;
308
+ createdAt: string;
309
+ confidence: number | null;
310
+ workers: {
311
+ id: string;
312
+ lastName: string | null;
313
+ firstName: string;
314
+ agentName: string | null;
315
+ }[];
316
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
317
+ conflicts: string[];
318
+ reviewedAt: string | null;
319
+ curatedWorker: {
320
+ id: string;
321
+ lastName: string | null;
322
+ firstName: string;
323
+ } | null;
324
+ revision: number;
325
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
326
+ hasHardEvidence: boolean;
327
+ linkAudit: {
328
+ suggestedAction: "UNLINK";
329
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
330
+ } | null;
331
+ edges: {
332
+ workerId: string;
333
+ conflicts: string[];
334
+ targetType: "WORKER" | "CURATED";
335
+ targetId: string;
336
+ signals: Record<string, unknown>;
337
+ nameSim: number | null;
338
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
339
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
340
+ llmReason?: string | undefined;
341
+ }[];
342
+ curatedSubjects: {
343
+ id: string;
344
+ lastName: string | null;
345
+ firstName: string;
346
+ }[];
347
+ pendingDocuments: {
348
+ notExtracted: number;
349
+ awaitingReview: number;
350
+ };
351
+ absorbedIntoCaseId: string | null;
352
+ obsoleteReason: string | null;
353
+ appliedCuratedWorkerId: string | null;
354
+ }, {
355
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
356
+ id: string;
357
+ createdAt: string;
358
+ confidence: number | null;
359
+ workers: {
360
+ id: string;
361
+ lastName: string | null;
362
+ firstName: string;
363
+ agentName: string | null;
364
+ }[];
365
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
366
+ conflicts: string[];
367
+ reviewedAt: string | null;
368
+ curatedWorker: {
369
+ id: string;
370
+ lastName: string | null;
371
+ firstName: string;
372
+ } | null;
373
+ revision: number;
374
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
375
+ hasHardEvidence: boolean;
376
+ linkAudit: {
377
+ suggestedAction: "UNLINK";
378
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
379
+ } | null;
380
+ edges: {
381
+ workerId: string;
382
+ conflicts: string[];
383
+ targetType: "WORKER" | "CURATED";
384
+ targetId: string;
385
+ signals: Record<string, unknown>;
386
+ nameSim: number | null;
387
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
388
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
389
+ llmReason?: string | undefined;
390
+ }[];
391
+ curatedSubjects: {
392
+ id: string;
393
+ lastName: string | null;
394
+ firstName: string;
395
+ }[];
396
+ pendingDocuments: {
397
+ notExtracted: number;
398
+ awaitingReview: number;
399
+ };
400
+ absorbedIntoCaseId: string | null;
401
+ obsoleteReason: string | null;
402
+ appliedCuratedWorkerId: string | null;
403
+ }>;
404
+ export declare const FilterWorkerIdentityCasesSchema: z.ZodObject<{
405
+ page: z.ZodDefault<z.ZodNumber>;
406
+ limit: z.ZodDefault<z.ZodNumber>;
407
+ queue: z.ZodDefault<z.ZodEnum<["NEEDS_REVIEW", "CONFLICTS", "RESOLVED"]>>;
408
+ status: z.ZodOptional<z.ZodEnum<["PENDING", "CONFLICT", "AUTO_APPLIED", "CONFIRMED", "PARTIALLY_CONFIRMED", "REJECTED", "OBSOLETE"]>>;
409
+ kind: z.ZodOptional<z.ZodEnum<["IDENTITY_MERGE", "CURATED_UPDATE", "CURATED_LINK_AUDIT"]>>;
410
+ evidence: z.ZodOptional<z.ZodEnum<["NINO", "DOC_NUMBER", "SHARE_CODE", "EMAIL", "PHONE", "DOB_NAME", "AI"]>>;
411
+ targetType: z.ZodOptional<z.ZodEnum<["EXISTING", "NEW"]>>;
412
+ search: z.ZodOptional<z.ZodString>;
413
+ }, "strip", z.ZodTypeAny, {
414
+ page: number;
415
+ limit: number;
416
+ queue: "NEEDS_REVIEW" | "CONFLICTS" | "RESOLVED";
417
+ status?: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE" | undefined;
418
+ search?: string | undefined;
419
+ kind?: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT" | undefined;
420
+ evidence?: "AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME" | undefined;
421
+ targetType?: "NEW" | "EXISTING" | undefined;
422
+ }, {
423
+ status?: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE" | undefined;
424
+ page?: number | undefined;
425
+ limit?: number | undefined;
426
+ search?: string | undefined;
427
+ kind?: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT" | undefined;
428
+ queue?: "NEEDS_REVIEW" | "CONFLICTS" | "RESOLVED" | undefined;
429
+ evidence?: "AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME" | undefined;
430
+ targetType?: "NEW" | "EXISTING" | undefined;
431
+ }>;
432
+ export type FilterWorkerIdentityCases = z.infer<typeof FilterWorkerIdentityCasesSchema>;
433
+ export declare const WorkerIdentityCaseListResponseSchema: z.ZodObject<{
434
+ cases: z.ZodArray<z.ZodObject<{
435
+ id: z.ZodString;
436
+ kind: z.ZodEnum<["IDENTITY_MERGE", "CURATED_UPDATE", "CURATED_LINK_AUDIT"]>;
437
+ status: z.ZodEnum<["PENDING", "CONFLICT", "AUTO_APPLIED", "CONFIRMED", "PARTIALLY_CONFIRMED", "REJECTED", "OBSOLETE"]>;
438
+ revision: z.ZodNumber;
439
+ confidence: z.ZodNullable<z.ZodNumber>;
440
+ curatedWorker: z.ZodNullable<z.ZodObject<{
441
+ id: z.ZodString;
442
+ firstName: z.ZodString;
443
+ lastName: z.ZodNullable<z.ZodString>;
444
+ }, "strip", z.ZodTypeAny, {
445
+ id: string;
446
+ lastName: string | null;
447
+ firstName: string;
448
+ }, {
449
+ id: string;
450
+ lastName: string | null;
451
+ firstName: string;
452
+ }>>;
453
+ workers: z.ZodArray<z.ZodObject<{
454
+ id: z.ZodString;
455
+ firstName: z.ZodString;
456
+ lastName: z.ZodNullable<z.ZodString>;
457
+ agentName: z.ZodNullable<z.ZodString>;
458
+ }, "strip", z.ZodTypeAny, {
459
+ id: string;
460
+ lastName: string | null;
461
+ firstName: string;
462
+ agentName: string | null;
463
+ }, {
464
+ id: string;
465
+ lastName: string | null;
466
+ firstName: string;
467
+ agentName: string | null;
468
+ }>, "many">;
469
+ evidenceBadges: z.ZodArray<z.ZodEnum<["NINO", "DOC_NUMBER", "SHARE_CODE", "EMAIL", "PHONE", "DOB_NAME", "AI"]>, "many">;
470
+ conflicts: z.ZodArray<z.ZodString, "many">;
471
+ hasHardEvidence: z.ZodBoolean;
472
+ linkAudit: z.ZodNullable<z.ZodObject<{
473
+ suggestedAction: z.ZodLiteral<"UNLINK">;
474
+ reasons: z.ZodArray<z.ZodEnum<["NAME_MISMATCH", "NINO_CONFLICT", "DOB_CONFLICT", "NO_SUPPORTING_EVIDENCE", "WEAK_PHONE_ONLY"]>, "many">;
475
+ }, "strip", z.ZodTypeAny, {
476
+ suggestedAction: "UNLINK";
477
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
478
+ }, {
479
+ suggestedAction: "UNLINK";
480
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
481
+ }>>;
482
+ createdAt: z.ZodString;
483
+ }, "strip", z.ZodTypeAny, {
484
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
485
+ id: string;
486
+ createdAt: string;
487
+ confidence: number | null;
488
+ workers: {
489
+ id: string;
490
+ lastName: string | null;
491
+ firstName: string;
492
+ agentName: string | null;
493
+ }[];
494
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
495
+ conflicts: string[];
496
+ curatedWorker: {
497
+ id: string;
498
+ lastName: string | null;
499
+ firstName: string;
500
+ } | null;
501
+ revision: number;
502
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
503
+ hasHardEvidence: boolean;
504
+ linkAudit: {
505
+ suggestedAction: "UNLINK";
506
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
507
+ } | null;
508
+ }, {
509
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
510
+ id: string;
511
+ createdAt: string;
512
+ confidence: number | null;
513
+ workers: {
514
+ id: string;
515
+ lastName: string | null;
516
+ firstName: string;
517
+ agentName: string | null;
518
+ }[];
519
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
520
+ conflicts: string[];
521
+ curatedWorker: {
522
+ id: string;
523
+ lastName: string | null;
524
+ firstName: string;
525
+ } | null;
526
+ revision: number;
527
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
528
+ hasHardEvidence: boolean;
529
+ linkAudit: {
530
+ suggestedAction: "UNLINK";
531
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
532
+ } | null;
533
+ }>, "many">;
534
+ totalCount: z.ZodNumber;
535
+ totalPages: z.ZodNumber;
536
+ page: z.ZodNumber;
537
+ limit: z.ZodNumber;
538
+ }, "strip", z.ZodTypeAny, {
539
+ page: number;
540
+ limit: number;
541
+ totalCount: number;
542
+ totalPages: number;
543
+ cases: {
544
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
545
+ id: string;
546
+ createdAt: string;
547
+ confidence: number | null;
548
+ workers: {
549
+ id: string;
550
+ lastName: string | null;
551
+ firstName: string;
552
+ agentName: string | null;
553
+ }[];
554
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
555
+ conflicts: string[];
556
+ curatedWorker: {
557
+ id: string;
558
+ lastName: string | null;
559
+ firstName: string;
560
+ } | null;
561
+ revision: number;
562
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
563
+ hasHardEvidence: boolean;
564
+ linkAudit: {
565
+ suggestedAction: "UNLINK";
566
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
567
+ } | null;
568
+ }[];
569
+ }, {
570
+ page: number;
571
+ limit: number;
572
+ totalCount: number;
573
+ totalPages: number;
574
+ cases: {
575
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
576
+ id: string;
577
+ createdAt: string;
578
+ confidence: number | null;
579
+ workers: {
580
+ id: string;
581
+ lastName: string | null;
582
+ firstName: string;
583
+ agentName: string | null;
584
+ }[];
585
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
586
+ conflicts: string[];
587
+ curatedWorker: {
588
+ id: string;
589
+ lastName: string | null;
590
+ firstName: string;
591
+ } | null;
592
+ revision: number;
593
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
594
+ hasHardEvidence: boolean;
595
+ linkAudit: {
596
+ suggestedAction: "UNLINK";
597
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
598
+ } | null;
599
+ }[];
600
+ }>;
601
+ export declare const WorkerIdentityBackfillResultSchema: z.ZodObject<{
602
+ scanned: z.ZodNumber;
603
+ linkedScanned: z.ZodNumber;
604
+ linkAudits: z.ZodNumber;
605
+ cases: z.ZodNumber;
606
+ conflicts: z.ZodNumber;
607
+ autoApplied: z.ZodNumber;
608
+ pending: z.ZodNumber;
609
+ llmCalls: z.ZodNumber;
610
+ rejected: z.ZodNumber;
611
+ absorbed: z.ZodNumber;
612
+ obsoleteClosed: z.ZodNumber;
613
+ parity: z.ZodObject<{
614
+ legacyPhoneGroups: z.ZodNumber;
615
+ representedPhoneGroups: z.ZodNumber;
616
+ }, "strip", z.ZodTypeAny, {
617
+ legacyPhoneGroups: number;
618
+ representedPhoneGroups: number;
619
+ }, {
620
+ legacyPhoneGroups: number;
621
+ representedPhoneGroups: number;
622
+ }>;
623
+ }, "strip", z.ZodTypeAny, {
624
+ pending: number;
625
+ scanned: number;
626
+ conflicts: number;
627
+ llmCalls: number;
628
+ cases: number;
629
+ linkedScanned: number;
630
+ linkAudits: number;
631
+ autoApplied: number;
632
+ rejected: number;
633
+ absorbed: number;
634
+ obsoleteClosed: number;
635
+ parity: {
636
+ legacyPhoneGroups: number;
637
+ representedPhoneGroups: number;
638
+ };
639
+ }, {
640
+ pending: number;
641
+ scanned: number;
642
+ conflicts: number;
643
+ llmCalls: number;
644
+ cases: number;
645
+ linkedScanned: number;
646
+ linkAudits: number;
647
+ autoApplied: number;
648
+ rejected: number;
649
+ absorbed: number;
650
+ obsoleteClosed: number;
651
+ parity: {
652
+ legacyPhoneGroups: number;
653
+ representedPhoneGroups: number;
654
+ };
655
+ }>;
656
+ export type WorkerIdentityBackfillResult = z.infer<typeof WorkerIdentityBackfillResultSchema>;
657
+ export declare const WorkerIdentityBackfillStartResponseSchema: z.ZodObject<{
658
+ started: z.ZodBoolean;
659
+ alreadyRunning: z.ZodBoolean;
660
+ }, "strip", z.ZodTypeAny, {
661
+ started: boolean;
662
+ alreadyRunning: boolean;
663
+ }, {
664
+ started: boolean;
665
+ alreadyRunning: boolean;
666
+ }>;
667
+ export declare const WorkerIdentityBackfillStatusSchema: z.ZodObject<{
668
+ running: z.ZodBoolean;
669
+ startedAt: z.ZodNullable<z.ZodString>;
670
+ finishedAt: z.ZodNullable<z.ZodString>;
671
+ error: z.ZodNullable<z.ZodString>;
672
+ result: z.ZodNullable<z.ZodObject<{
673
+ scanned: z.ZodNumber;
674
+ linkedScanned: z.ZodNumber;
675
+ linkAudits: z.ZodNumber;
676
+ cases: z.ZodNumber;
677
+ conflicts: z.ZodNumber;
678
+ autoApplied: z.ZodNumber;
679
+ pending: z.ZodNumber;
680
+ llmCalls: z.ZodNumber;
681
+ rejected: z.ZodNumber;
682
+ absorbed: z.ZodNumber;
683
+ obsoleteClosed: z.ZodNumber;
684
+ parity: z.ZodObject<{
685
+ legacyPhoneGroups: z.ZodNumber;
686
+ representedPhoneGroups: z.ZodNumber;
687
+ }, "strip", z.ZodTypeAny, {
688
+ legacyPhoneGroups: number;
689
+ representedPhoneGroups: number;
690
+ }, {
691
+ legacyPhoneGroups: number;
692
+ representedPhoneGroups: number;
693
+ }>;
694
+ }, "strip", z.ZodTypeAny, {
695
+ pending: number;
696
+ scanned: number;
697
+ conflicts: number;
698
+ llmCalls: number;
699
+ cases: number;
700
+ linkedScanned: number;
701
+ linkAudits: number;
702
+ autoApplied: number;
703
+ rejected: number;
704
+ absorbed: number;
705
+ obsoleteClosed: number;
706
+ parity: {
707
+ legacyPhoneGroups: number;
708
+ representedPhoneGroups: number;
709
+ };
710
+ }, {
711
+ pending: number;
712
+ scanned: number;
713
+ conflicts: number;
714
+ llmCalls: number;
715
+ cases: number;
716
+ linkedScanned: number;
717
+ linkAudits: number;
718
+ autoApplied: number;
719
+ rejected: number;
720
+ absorbed: number;
721
+ obsoleteClosed: number;
722
+ parity: {
723
+ legacyPhoneGroups: number;
724
+ representedPhoneGroups: number;
725
+ };
726
+ }>>;
727
+ }, "strip", z.ZodTypeAny, {
728
+ startedAt: string | null;
729
+ error: string | null;
730
+ finishedAt: string | null;
731
+ result: {
732
+ pending: number;
733
+ scanned: number;
734
+ conflicts: number;
735
+ llmCalls: number;
736
+ cases: number;
737
+ linkedScanned: number;
738
+ linkAudits: number;
739
+ autoApplied: number;
740
+ rejected: number;
741
+ absorbed: number;
742
+ obsoleteClosed: number;
743
+ parity: {
744
+ legacyPhoneGroups: number;
745
+ representedPhoneGroups: number;
746
+ };
747
+ } | null;
748
+ running: boolean;
749
+ }, {
750
+ startedAt: string | null;
751
+ error: string | null;
752
+ finishedAt: string | null;
753
+ result: {
754
+ pending: number;
755
+ scanned: number;
756
+ conflicts: number;
757
+ llmCalls: number;
758
+ cases: number;
759
+ linkedScanned: number;
760
+ linkAudits: number;
761
+ autoApplied: number;
762
+ rejected: number;
763
+ absorbed: number;
764
+ obsoleteClosed: number;
765
+ parity: {
766
+ legacyPhoneGroups: number;
767
+ representedPhoneGroups: number;
768
+ };
769
+ } | null;
770
+ running: boolean;
771
+ }>;
772
+ export type WorkerIdentityBackfillStatus = z.infer<typeof WorkerIdentityBackfillStatusSchema>;
773
+ export declare const IdentityCaseTargetSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
774
+ type: z.ZodLiteral<"EXISTING">;
775
+ curatedWorkerId: z.ZodString;
776
+ }, "strip", z.ZodTypeAny, {
777
+ type: "EXISTING";
778
+ curatedWorkerId: string;
779
+ }, {
780
+ type: "EXISTING";
781
+ curatedWorkerId: string;
782
+ }>, z.ZodObject<{
783
+ type: z.ZodLiteral<"NEW">;
784
+ }, "strip", z.ZodTypeAny, {
785
+ type: "NEW";
786
+ }, {
787
+ type: "NEW";
788
+ }>]>;
789
+ export declare const ConfirmIdentityCaseSchema: z.ZodObject<{
790
+ expectedRevision: z.ZodNumber;
791
+ selectedWorkerIds: z.ZodArray<z.ZodString, "many">;
792
+ excluded: z.ZodDefault<z.ZodArray<z.ZodObject<{
793
+ workerId: z.ZodString;
794
+ mode: z.ZodEnum<["NOT_SAME", "DECIDE_LATER"]>;
795
+ }, "strip", z.ZodTypeAny, {
796
+ workerId: string;
797
+ mode: "NOT_SAME" | "DECIDE_LATER";
798
+ }, {
799
+ workerId: string;
800
+ mode: "NOT_SAME" | "DECIDE_LATER";
801
+ }>, "many">>;
802
+ target: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
803
+ type: z.ZodLiteral<"EXISTING">;
804
+ curatedWorkerId: z.ZodString;
805
+ }, "strip", z.ZodTypeAny, {
806
+ type: "EXISTING";
807
+ curatedWorkerId: string;
808
+ }, {
809
+ type: "EXISTING";
810
+ curatedWorkerId: string;
811
+ }>, z.ZodObject<{
812
+ type: z.ZodLiteral<"NEW">;
813
+ }, "strip", z.ZodTypeAny, {
814
+ type: "NEW";
815
+ }, {
816
+ type: "NEW";
817
+ }>]>;
818
+ acknowledgeHardEvidence: z.ZodOptional<z.ZodBoolean>;
819
+ reason: z.ZodOptional<z.ZodString>;
820
+ }, "strip", z.ZodTypeAny, {
821
+ target: {
822
+ type: "EXISTING";
823
+ curatedWorkerId: string;
824
+ } | {
825
+ type: "NEW";
826
+ };
827
+ expectedRevision: number;
828
+ selectedWorkerIds: string[];
829
+ excluded: {
830
+ workerId: string;
831
+ mode: "NOT_SAME" | "DECIDE_LATER";
832
+ }[];
833
+ reason?: string | undefined;
834
+ acknowledgeHardEvidence?: boolean | undefined;
835
+ }, {
836
+ target: {
837
+ type: "EXISTING";
838
+ curatedWorkerId: string;
839
+ } | {
840
+ type: "NEW";
841
+ };
842
+ expectedRevision: number;
843
+ selectedWorkerIds: string[];
844
+ reason?: string | undefined;
845
+ excluded?: {
846
+ workerId: string;
847
+ mode: "NOT_SAME" | "DECIDE_LATER";
848
+ }[] | undefined;
849
+ acknowledgeHardEvidence?: boolean | undefined;
850
+ }>;
851
+ /** The standard merge policy's field choices for a selection — used to seed
852
+ * the hand-tune dialogs so reviewers start from what Confirm would apply. */
853
+ export declare const WorkerIdentitySuggestedMergeValuesSchema: z.ZodObject<{
854
+ firstName: z.ZodNullable<z.ZodString>;
855
+ lastName: z.ZodNullable<z.ZodString>;
856
+ email: z.ZodNullable<z.ZodString>;
857
+ nino: z.ZodNullable<z.ZodString>;
858
+ shareCode: z.ZodNullable<z.ZodString>;
859
+ dateOfBirth: z.ZodNullable<z.ZodString>;
860
+ bio: z.ZodNullable<z.ZodString>;
861
+ hasTools: z.ZodBoolean;
862
+ hasPpe: z.ZodBoolean;
863
+ englishLevel: z.ZodNullable<z.ZodString>;
864
+ nationality: z.ZodNullable<z.ZodString>;
865
+ locationId: z.ZodNullable<z.ZodString>;
866
+ phoneNumbers: z.ZodArray<z.ZodString, "many">;
867
+ tradeIds: z.ZodArray<z.ZodString, "many">;
868
+ mainTradeId: z.ZodNullable<z.ZodString>;
869
+ }, "strip", z.ZodTypeAny, {
870
+ email: string | null;
871
+ lastName: string | null;
872
+ firstName: string | null;
873
+ phoneNumbers: string[];
874
+ englishLevel: string | null;
875
+ nationality: string | null;
876
+ hasTools: boolean;
877
+ hasPpe: boolean;
878
+ dateOfBirth: string | null;
879
+ bio: string | null;
880
+ nino: string | null;
881
+ shareCode: string | null;
882
+ tradeIds: string[];
883
+ locationId: string | null;
884
+ mainTradeId: string | null;
885
+ }, {
886
+ email: string | null;
887
+ lastName: string | null;
888
+ firstName: string | null;
889
+ phoneNumbers: string[];
890
+ englishLevel: string | null;
891
+ nationality: string | null;
892
+ hasTools: boolean;
893
+ hasPpe: boolean;
894
+ dateOfBirth: string | null;
895
+ bio: string | null;
896
+ nino: string | null;
897
+ shareCode: string | null;
898
+ tradeIds: string[];
899
+ locationId: string | null;
900
+ mainTradeId: string | null;
901
+ }>;
902
+ export type WorkerIdentitySuggestedMergeValues = z.infer<typeof WorkerIdentitySuggestedMergeValuesSchema>;
903
+ export declare const ResolveIdentityCaseValuesSchema: z.ZodObject<{
904
+ selectedWorkerIds: z.ZodArray<z.ZodString, "many">;
905
+ target: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
906
+ type: z.ZodLiteral<"EXISTING">;
907
+ curatedWorkerId: z.ZodString;
908
+ }, "strip", z.ZodTypeAny, {
909
+ type: "EXISTING";
910
+ curatedWorkerId: string;
911
+ }, {
912
+ type: "EXISTING";
913
+ curatedWorkerId: string;
914
+ }>, z.ZodObject<{
915
+ type: z.ZodLiteral<"NEW">;
916
+ }, "strip", z.ZodTypeAny, {
917
+ type: "NEW";
918
+ }, {
919
+ type: "NEW";
920
+ }>]>;
921
+ }, "strip", z.ZodTypeAny, {
922
+ target: {
923
+ type: "EXISTING";
924
+ curatedWorkerId: string;
925
+ } | {
926
+ type: "NEW";
927
+ };
928
+ selectedWorkerIds: string[];
929
+ }, {
930
+ target: {
931
+ type: "EXISTING";
932
+ curatedWorkerId: string;
933
+ } | {
934
+ type: "NEW";
935
+ };
936
+ selectedWorkerIds: string[];
937
+ }>;
938
+ export declare const RejectIdentityCaseSchema: z.ZodObject<{
939
+ expectedRevision: z.ZodNumber;
940
+ acknowledgeHardEvidence: z.ZodOptional<z.ZodBoolean>;
941
+ reason: z.ZodOptional<z.ZodString>;
942
+ }, "strip", z.ZodTypeAny, {
943
+ expectedRevision: number;
944
+ reason?: string | undefined;
945
+ acknowledgeHardEvidence?: boolean | undefined;
946
+ }, {
947
+ expectedRevision: number;
948
+ reason?: string | undefined;
949
+ acknowledgeHardEvidence?: boolean | undefined;
950
+ }>;
951
+ export declare const ResolveCuratedLinkAuditSchema: z.ZodDiscriminatedUnion<"action", [z.ZodObject<{
952
+ action: z.ZodLiteral<"KEEP_CURRENT">;
953
+ expectedRevision: z.ZodNumber;
954
+ reason: z.ZodOptional<z.ZodString>;
955
+ }, "strip", z.ZodTypeAny, {
956
+ action: "KEEP_CURRENT";
957
+ expectedRevision: number;
958
+ reason?: string | undefined;
959
+ }, {
960
+ action: "KEEP_CURRENT";
961
+ expectedRevision: number;
962
+ reason?: string | undefined;
963
+ }>, z.ZodObject<{
964
+ action: z.ZodLiteral<"UNLINK_REPROCESS">;
965
+ expectedRevision: z.ZodNumber;
966
+ reason: z.ZodOptional<z.ZodString>;
967
+ }, "strip", z.ZodTypeAny, {
968
+ action: "UNLINK_REPROCESS";
969
+ expectedRevision: number;
970
+ reason?: string | undefined;
971
+ }, {
972
+ action: "UNLINK_REPROCESS";
973
+ expectedRevision: number;
974
+ reason?: string | undefined;
975
+ }>, z.ZodObject<{
976
+ action: z.ZodLiteral<"MOVE">;
977
+ expectedRevision: z.ZodNumber;
978
+ curatedWorkerId: z.ZodString;
979
+ reason: z.ZodOptional<z.ZodString>;
980
+ }, "strip", z.ZodTypeAny, {
981
+ curatedWorkerId: string;
982
+ action: "MOVE";
983
+ expectedRevision: number;
984
+ reason?: string | undefined;
985
+ }, {
986
+ curatedWorkerId: string;
987
+ action: "MOVE";
988
+ expectedRevision: number;
989
+ reason?: string | undefined;
990
+ }>, z.ZodObject<{
991
+ action: z.ZodLiteral<"CREATE_NEW">;
992
+ expectedRevision: z.ZodNumber;
993
+ reason: z.ZodOptional<z.ZodString>;
994
+ }, "strip", z.ZodTypeAny, {
995
+ action: "CREATE_NEW";
996
+ expectedRevision: number;
997
+ reason?: string | undefined;
998
+ }, {
999
+ action: "CREATE_NEW";
1000
+ expectedRevision: number;
1001
+ reason?: string | undefined;
1002
+ }>]>;
1003
+ export type ResolveCuratedLinkAudit = z.infer<typeof ResolveCuratedLinkAuditSchema>;
1004
+ export declare const CuratedLinkAuditReprocessingSchema: z.ZodObject<{
1005
+ status: z.ZodEnum<["COMPLETED", "FAILED"]>;
1006
+ casesCreated: z.ZodNumber;
1007
+ message: z.ZodNullable<z.ZodString>;
1008
+ }, "strip", z.ZodTypeAny, {
1009
+ status: "COMPLETED" | "FAILED";
1010
+ message: string | null;
1011
+ casesCreated: number;
1012
+ }, {
1013
+ status: "COMPLETED" | "FAILED";
1014
+ message: string | null;
1015
+ casesCreated: number;
1016
+ }>;
1017
+ export declare const ResolveCuratedLinkAuditResponseSchema: z.ZodObject<{
1018
+ case: z.ZodObject<{
1019
+ id: z.ZodString;
1020
+ kind: z.ZodEnum<["IDENTITY_MERGE", "CURATED_UPDATE", "CURATED_LINK_AUDIT"]>;
1021
+ status: z.ZodEnum<["PENDING", "CONFLICT", "AUTO_APPLIED", "CONFIRMED", "PARTIALLY_CONFIRMED", "REJECTED", "OBSOLETE"]>;
1022
+ revision: z.ZodNumber;
1023
+ confidence: z.ZodNullable<z.ZodNumber>;
1024
+ curatedWorker: z.ZodNullable<z.ZodObject<{
1025
+ id: z.ZodString;
1026
+ firstName: z.ZodString;
1027
+ lastName: z.ZodNullable<z.ZodString>;
1028
+ }, "strip", z.ZodTypeAny, {
1029
+ id: string;
1030
+ lastName: string | null;
1031
+ firstName: string;
1032
+ }, {
1033
+ id: string;
1034
+ lastName: string | null;
1035
+ firstName: string;
1036
+ }>>;
1037
+ workers: z.ZodArray<z.ZodObject<{
1038
+ id: z.ZodString;
1039
+ firstName: z.ZodString;
1040
+ lastName: z.ZodNullable<z.ZodString>;
1041
+ agentName: z.ZodNullable<z.ZodString>;
1042
+ }, "strip", z.ZodTypeAny, {
1043
+ id: string;
1044
+ lastName: string | null;
1045
+ firstName: string;
1046
+ agentName: string | null;
1047
+ }, {
1048
+ id: string;
1049
+ lastName: string | null;
1050
+ firstName: string;
1051
+ agentName: string | null;
1052
+ }>, "many">;
1053
+ evidenceBadges: z.ZodArray<z.ZodEnum<["NINO", "DOC_NUMBER", "SHARE_CODE", "EMAIL", "PHONE", "DOB_NAME", "AI"]>, "many">;
1054
+ conflicts: z.ZodArray<z.ZodString, "many">;
1055
+ hasHardEvidence: z.ZodBoolean;
1056
+ linkAudit: z.ZodNullable<z.ZodObject<{
1057
+ suggestedAction: z.ZodLiteral<"UNLINK">;
1058
+ reasons: z.ZodArray<z.ZodEnum<["NAME_MISMATCH", "NINO_CONFLICT", "DOB_CONFLICT", "NO_SUPPORTING_EVIDENCE", "WEAK_PHONE_ONLY"]>, "many">;
1059
+ }, "strip", z.ZodTypeAny, {
1060
+ suggestedAction: "UNLINK";
1061
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
1062
+ }, {
1063
+ suggestedAction: "UNLINK";
1064
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
1065
+ }>>;
1066
+ createdAt: z.ZodString;
1067
+ } & {
1068
+ edges: z.ZodArray<z.ZodObject<{
1069
+ workerId: z.ZodString;
1070
+ targetType: z.ZodEnum<["CURATED", "WORKER"]>;
1071
+ targetId: z.ZodString;
1072
+ signals: z.ZodRecord<z.ZodString, z.ZodUnknown>;
1073
+ conflicts: z.ZodArray<z.ZodString, "many">;
1074
+ nameSim: z.ZodNullable<z.ZodNumber>;
1075
+ } & {
1076
+ kind: z.ZodOptional<z.ZodEnum<["HARD", "REVIEW", "AI", "CONFLICT"]>>;
1077
+ llmVerdict: z.ZodOptional<z.ZodEnum<["SAME", "DIFFERENT", "UNSURE"]>>;
1078
+ llmReason: z.ZodOptional<z.ZodString>;
1079
+ }, "strip", z.ZodTypeAny, {
1080
+ workerId: string;
1081
+ conflicts: string[];
1082
+ targetType: "WORKER" | "CURATED";
1083
+ targetId: string;
1084
+ signals: Record<string, unknown>;
1085
+ nameSim: number | null;
1086
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
1087
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
1088
+ llmReason?: string | undefined;
1089
+ }, {
1090
+ workerId: string;
1091
+ conflicts: string[];
1092
+ targetType: "WORKER" | "CURATED";
1093
+ targetId: string;
1094
+ signals: Record<string, unknown>;
1095
+ nameSim: number | null;
1096
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
1097
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
1098
+ llmReason?: string | undefined;
1099
+ }>, "many">;
1100
+ /** Every curated subject of the case (evidence targets included), so
1101
+ * multi-target conflict cases can offer each as an EXISTING target. */
1102
+ curatedSubjects: z.ZodArray<z.ZodObject<{
1103
+ id: z.ZodString;
1104
+ firstName: z.ZodString;
1105
+ lastName: z.ZodNullable<z.ZodString>;
1106
+ }, "strip", z.ZodTypeAny, {
1107
+ id: string;
1108
+ lastName: string | null;
1109
+ firstName: string;
1110
+ }, {
1111
+ id: string;
1112
+ lastName: string | null;
1113
+ firstName: string;
1114
+ }>, "many">;
1115
+ pendingDocuments: z.ZodObject<{
1116
+ /** Attachments with no extraction attempt yet (await the intake sweep). */
1117
+ notExtracted: z.ZodNumber;
1118
+ /** Extractions awaiting human review (or failed and retryable). */
1119
+ awaitingReview: z.ZodNumber;
1120
+ }, "strip", z.ZodTypeAny, {
1121
+ notExtracted: number;
1122
+ awaitingReview: number;
1123
+ }, {
1124
+ notExtracted: number;
1125
+ awaitingReview: number;
1126
+ }>;
1127
+ /** The surviving case id when the requested case was absorbed; null when
1128
+ * the requested id is the live case. */
1129
+ absorbedIntoCaseId: z.ZodNullable<z.ZodString>;
1130
+ obsoleteReason: z.ZodNullable<z.ZodString>;
1131
+ reviewedAt: z.ZodNullable<z.ZodString>;
1132
+ appliedCuratedWorkerId: z.ZodNullable<z.ZodString>;
1133
+ }, "strip", z.ZodTypeAny, {
1134
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
1135
+ id: string;
1136
+ createdAt: string;
1137
+ confidence: number | null;
1138
+ workers: {
1139
+ id: string;
1140
+ lastName: string | null;
1141
+ firstName: string;
1142
+ agentName: string | null;
1143
+ }[];
1144
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
1145
+ conflicts: string[];
1146
+ reviewedAt: string | null;
1147
+ curatedWorker: {
1148
+ id: string;
1149
+ lastName: string | null;
1150
+ firstName: string;
1151
+ } | null;
1152
+ revision: number;
1153
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
1154
+ hasHardEvidence: boolean;
1155
+ linkAudit: {
1156
+ suggestedAction: "UNLINK";
1157
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
1158
+ } | null;
1159
+ edges: {
1160
+ workerId: string;
1161
+ conflicts: string[];
1162
+ targetType: "WORKER" | "CURATED";
1163
+ targetId: string;
1164
+ signals: Record<string, unknown>;
1165
+ nameSim: number | null;
1166
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
1167
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
1168
+ llmReason?: string | undefined;
1169
+ }[];
1170
+ curatedSubjects: {
1171
+ id: string;
1172
+ lastName: string | null;
1173
+ firstName: string;
1174
+ }[];
1175
+ pendingDocuments: {
1176
+ notExtracted: number;
1177
+ awaitingReview: number;
1178
+ };
1179
+ absorbedIntoCaseId: string | null;
1180
+ obsoleteReason: string | null;
1181
+ appliedCuratedWorkerId: string | null;
1182
+ }, {
1183
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
1184
+ id: string;
1185
+ createdAt: string;
1186
+ confidence: number | null;
1187
+ workers: {
1188
+ id: string;
1189
+ lastName: string | null;
1190
+ firstName: string;
1191
+ agentName: string | null;
1192
+ }[];
1193
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
1194
+ conflicts: string[];
1195
+ reviewedAt: string | null;
1196
+ curatedWorker: {
1197
+ id: string;
1198
+ lastName: string | null;
1199
+ firstName: string;
1200
+ } | null;
1201
+ revision: number;
1202
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
1203
+ hasHardEvidence: boolean;
1204
+ linkAudit: {
1205
+ suggestedAction: "UNLINK";
1206
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
1207
+ } | null;
1208
+ edges: {
1209
+ workerId: string;
1210
+ conflicts: string[];
1211
+ targetType: "WORKER" | "CURATED";
1212
+ targetId: string;
1213
+ signals: Record<string, unknown>;
1214
+ nameSim: number | null;
1215
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
1216
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
1217
+ llmReason?: string | undefined;
1218
+ }[];
1219
+ curatedSubjects: {
1220
+ id: string;
1221
+ lastName: string | null;
1222
+ firstName: string;
1223
+ }[];
1224
+ pendingDocuments: {
1225
+ notExtracted: number;
1226
+ awaitingReview: number;
1227
+ };
1228
+ absorbedIntoCaseId: string | null;
1229
+ obsoleteReason: string | null;
1230
+ appliedCuratedWorkerId: string | null;
1231
+ }>;
1232
+ reprocessing: z.ZodNullable<z.ZodObject<{
1233
+ status: z.ZodEnum<["COMPLETED", "FAILED"]>;
1234
+ casesCreated: z.ZodNumber;
1235
+ message: z.ZodNullable<z.ZodString>;
1236
+ }, "strip", z.ZodTypeAny, {
1237
+ status: "COMPLETED" | "FAILED";
1238
+ message: string | null;
1239
+ casesCreated: number;
1240
+ }, {
1241
+ status: "COMPLETED" | "FAILED";
1242
+ message: string | null;
1243
+ casesCreated: number;
1244
+ }>>;
1245
+ }, "strip", z.ZodTypeAny, {
1246
+ case: {
1247
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
1248
+ id: string;
1249
+ createdAt: string;
1250
+ confidence: number | null;
1251
+ workers: {
1252
+ id: string;
1253
+ lastName: string | null;
1254
+ firstName: string;
1255
+ agentName: string | null;
1256
+ }[];
1257
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
1258
+ conflicts: string[];
1259
+ reviewedAt: string | null;
1260
+ curatedWorker: {
1261
+ id: string;
1262
+ lastName: string | null;
1263
+ firstName: string;
1264
+ } | null;
1265
+ revision: number;
1266
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
1267
+ hasHardEvidence: boolean;
1268
+ linkAudit: {
1269
+ suggestedAction: "UNLINK";
1270
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
1271
+ } | null;
1272
+ edges: {
1273
+ workerId: string;
1274
+ conflicts: string[];
1275
+ targetType: "WORKER" | "CURATED";
1276
+ targetId: string;
1277
+ signals: Record<string, unknown>;
1278
+ nameSim: number | null;
1279
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
1280
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
1281
+ llmReason?: string | undefined;
1282
+ }[];
1283
+ curatedSubjects: {
1284
+ id: string;
1285
+ lastName: string | null;
1286
+ firstName: string;
1287
+ }[];
1288
+ pendingDocuments: {
1289
+ notExtracted: number;
1290
+ awaitingReview: number;
1291
+ };
1292
+ absorbedIntoCaseId: string | null;
1293
+ obsoleteReason: string | null;
1294
+ appliedCuratedWorkerId: string | null;
1295
+ };
1296
+ reprocessing: {
1297
+ status: "COMPLETED" | "FAILED";
1298
+ message: string | null;
1299
+ casesCreated: number;
1300
+ } | null;
1301
+ }, {
1302
+ case: {
1303
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
1304
+ id: string;
1305
+ createdAt: string;
1306
+ confidence: number | null;
1307
+ workers: {
1308
+ id: string;
1309
+ lastName: string | null;
1310
+ firstName: string;
1311
+ agentName: string | null;
1312
+ }[];
1313
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
1314
+ conflicts: string[];
1315
+ reviewedAt: string | null;
1316
+ curatedWorker: {
1317
+ id: string;
1318
+ lastName: string | null;
1319
+ firstName: string;
1320
+ } | null;
1321
+ revision: number;
1322
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
1323
+ hasHardEvidence: boolean;
1324
+ linkAudit: {
1325
+ suggestedAction: "UNLINK";
1326
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
1327
+ } | null;
1328
+ edges: {
1329
+ workerId: string;
1330
+ conflicts: string[];
1331
+ targetType: "WORKER" | "CURATED";
1332
+ targetId: string;
1333
+ signals: Record<string, unknown>;
1334
+ nameSim: number | null;
1335
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
1336
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
1337
+ llmReason?: string | undefined;
1338
+ }[];
1339
+ curatedSubjects: {
1340
+ id: string;
1341
+ lastName: string | null;
1342
+ firstName: string;
1343
+ }[];
1344
+ pendingDocuments: {
1345
+ notExtracted: number;
1346
+ awaitingReview: number;
1347
+ };
1348
+ absorbedIntoCaseId: string | null;
1349
+ obsoleteReason: string | null;
1350
+ appliedCuratedWorkerId: string | null;
1351
+ };
1352
+ reprocessing: {
1353
+ status: "COMPLETED" | "FAILED";
1354
+ message: string | null;
1355
+ casesCreated: number;
1356
+ } | null;
1357
+ }>;
1358
+ export type WorkerIdentityCaseSummary = z.infer<typeof WorkerIdentityCaseSummarySchema>;
1359
+ export type WorkerIdentityCaseDetail = z.infer<typeof WorkerIdentityCaseDetailSchema>;
1360
+ export declare const workerIdentityCasesContract: {
1361
+ list: {
1362
+ query: z.ZodObject<{
1363
+ page: z.ZodDefault<z.ZodNumber>;
1364
+ limit: z.ZodDefault<z.ZodNumber>;
1365
+ queue: z.ZodDefault<z.ZodEnum<["NEEDS_REVIEW", "CONFLICTS", "RESOLVED"]>>;
1366
+ status: z.ZodOptional<z.ZodEnum<["PENDING", "CONFLICT", "AUTO_APPLIED", "CONFIRMED", "PARTIALLY_CONFIRMED", "REJECTED", "OBSOLETE"]>>;
1367
+ kind: z.ZodOptional<z.ZodEnum<["IDENTITY_MERGE", "CURATED_UPDATE", "CURATED_LINK_AUDIT"]>>;
1368
+ evidence: z.ZodOptional<z.ZodEnum<["NINO", "DOC_NUMBER", "SHARE_CODE", "EMAIL", "PHONE", "DOB_NAME", "AI"]>>;
1369
+ targetType: z.ZodOptional<z.ZodEnum<["EXISTING", "NEW"]>>;
1370
+ search: z.ZodOptional<z.ZodString>;
1371
+ }, "strip", z.ZodTypeAny, {
1372
+ page: number;
1373
+ limit: number;
1374
+ queue: "NEEDS_REVIEW" | "CONFLICTS" | "RESOLVED";
1375
+ status?: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE" | undefined;
1376
+ search?: string | undefined;
1377
+ kind?: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT" | undefined;
1378
+ evidence?: "AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME" | undefined;
1379
+ targetType?: "NEW" | "EXISTING" | undefined;
1380
+ }, {
1381
+ status?: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE" | undefined;
1382
+ page?: number | undefined;
1383
+ limit?: number | undefined;
1384
+ search?: string | undefined;
1385
+ kind?: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT" | undefined;
1386
+ queue?: "NEEDS_REVIEW" | "CONFLICTS" | "RESOLVED" | undefined;
1387
+ evidence?: "AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME" | undefined;
1388
+ targetType?: "NEW" | "EXISTING" | undefined;
1389
+ }>;
1390
+ metadata: {
1391
+ tags: string[];
1392
+ openApi: {
1393
+ operationId: string;
1394
+ };
1395
+ };
1396
+ summary: "List worker identity cases by queue";
1397
+ method: "GET";
1398
+ path: "/v2/worker-identity-cases";
1399
+ responses: {
1400
+ 401: z.ZodObject<{
1401
+ statusCode: z.ZodNumber;
1402
+ message: z.ZodString;
1403
+ code: z.ZodString;
1404
+ details: z.ZodOptional<z.ZodUnknown>;
1405
+ timestamp: z.ZodString;
1406
+ path: z.ZodString;
1407
+ correlationId: z.ZodOptional<z.ZodString>;
1408
+ }, "strip", z.ZodTypeAny, {
1409
+ message: string;
1410
+ code: string;
1411
+ path: string;
1412
+ statusCode: number;
1413
+ timestamp: string;
1414
+ details?: unknown;
1415
+ correlationId?: string | undefined;
1416
+ }, {
1417
+ message: string;
1418
+ code: string;
1419
+ path: string;
1420
+ statusCode: number;
1421
+ timestamp: string;
1422
+ details?: unknown;
1423
+ correlationId?: string | undefined;
1424
+ }>;
1425
+ 400: z.ZodObject<{
1426
+ statusCode: z.ZodNumber;
1427
+ message: z.ZodString;
1428
+ code: z.ZodString;
1429
+ details: z.ZodOptional<z.ZodUnknown>;
1430
+ timestamp: z.ZodString;
1431
+ path: z.ZodString;
1432
+ correlationId: z.ZodOptional<z.ZodString>;
1433
+ }, "strip", z.ZodTypeAny, {
1434
+ message: string;
1435
+ code: string;
1436
+ path: string;
1437
+ statusCode: number;
1438
+ timestamp: string;
1439
+ details?: unknown;
1440
+ correlationId?: string | undefined;
1441
+ }, {
1442
+ message: string;
1443
+ code: string;
1444
+ path: string;
1445
+ statusCode: number;
1446
+ timestamp: string;
1447
+ details?: unknown;
1448
+ correlationId?: string | undefined;
1449
+ }>;
1450
+ 403: z.ZodObject<{
1451
+ statusCode: z.ZodNumber;
1452
+ message: z.ZodString;
1453
+ code: z.ZodString;
1454
+ details: z.ZodOptional<z.ZodUnknown>;
1455
+ timestamp: z.ZodString;
1456
+ path: z.ZodString;
1457
+ correlationId: z.ZodOptional<z.ZodString>;
1458
+ }, "strip", z.ZodTypeAny, {
1459
+ message: string;
1460
+ code: string;
1461
+ path: string;
1462
+ statusCode: number;
1463
+ timestamp: string;
1464
+ details?: unknown;
1465
+ correlationId?: string | undefined;
1466
+ }, {
1467
+ message: string;
1468
+ code: string;
1469
+ path: string;
1470
+ statusCode: number;
1471
+ timestamp: string;
1472
+ details?: unknown;
1473
+ correlationId?: string | undefined;
1474
+ }>;
1475
+ 500: z.ZodObject<{
1476
+ statusCode: z.ZodNumber;
1477
+ message: z.ZodString;
1478
+ code: z.ZodString;
1479
+ details: z.ZodOptional<z.ZodUnknown>;
1480
+ timestamp: z.ZodString;
1481
+ path: z.ZodString;
1482
+ correlationId: z.ZodOptional<z.ZodString>;
1483
+ }, "strip", z.ZodTypeAny, {
1484
+ message: string;
1485
+ code: string;
1486
+ path: string;
1487
+ statusCode: number;
1488
+ timestamp: string;
1489
+ details?: unknown;
1490
+ correlationId?: string | undefined;
1491
+ }, {
1492
+ message: string;
1493
+ code: string;
1494
+ path: string;
1495
+ statusCode: number;
1496
+ timestamp: string;
1497
+ details?: unknown;
1498
+ correlationId?: string | undefined;
1499
+ }>;
1500
+ 200: z.ZodObject<{
1501
+ cases: z.ZodArray<z.ZodObject<{
1502
+ id: z.ZodString;
1503
+ kind: z.ZodEnum<["IDENTITY_MERGE", "CURATED_UPDATE", "CURATED_LINK_AUDIT"]>;
1504
+ status: z.ZodEnum<["PENDING", "CONFLICT", "AUTO_APPLIED", "CONFIRMED", "PARTIALLY_CONFIRMED", "REJECTED", "OBSOLETE"]>;
1505
+ revision: z.ZodNumber;
1506
+ confidence: z.ZodNullable<z.ZodNumber>;
1507
+ curatedWorker: z.ZodNullable<z.ZodObject<{
1508
+ id: z.ZodString;
1509
+ firstName: z.ZodString;
1510
+ lastName: z.ZodNullable<z.ZodString>;
1511
+ }, "strip", z.ZodTypeAny, {
1512
+ id: string;
1513
+ lastName: string | null;
1514
+ firstName: string;
1515
+ }, {
1516
+ id: string;
1517
+ lastName: string | null;
1518
+ firstName: string;
1519
+ }>>;
1520
+ workers: z.ZodArray<z.ZodObject<{
1521
+ id: z.ZodString;
1522
+ firstName: z.ZodString;
1523
+ lastName: z.ZodNullable<z.ZodString>;
1524
+ agentName: z.ZodNullable<z.ZodString>;
1525
+ }, "strip", z.ZodTypeAny, {
1526
+ id: string;
1527
+ lastName: string | null;
1528
+ firstName: string;
1529
+ agentName: string | null;
1530
+ }, {
1531
+ id: string;
1532
+ lastName: string | null;
1533
+ firstName: string;
1534
+ agentName: string | null;
1535
+ }>, "many">;
1536
+ evidenceBadges: z.ZodArray<z.ZodEnum<["NINO", "DOC_NUMBER", "SHARE_CODE", "EMAIL", "PHONE", "DOB_NAME", "AI"]>, "many">;
1537
+ conflicts: z.ZodArray<z.ZodString, "many">;
1538
+ hasHardEvidence: z.ZodBoolean;
1539
+ linkAudit: z.ZodNullable<z.ZodObject<{
1540
+ suggestedAction: z.ZodLiteral<"UNLINK">;
1541
+ reasons: z.ZodArray<z.ZodEnum<["NAME_MISMATCH", "NINO_CONFLICT", "DOB_CONFLICT", "NO_SUPPORTING_EVIDENCE", "WEAK_PHONE_ONLY"]>, "many">;
1542
+ }, "strip", z.ZodTypeAny, {
1543
+ suggestedAction: "UNLINK";
1544
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
1545
+ }, {
1546
+ suggestedAction: "UNLINK";
1547
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
1548
+ }>>;
1549
+ createdAt: z.ZodString;
1550
+ }, "strip", z.ZodTypeAny, {
1551
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
1552
+ id: string;
1553
+ createdAt: string;
1554
+ confidence: number | null;
1555
+ workers: {
1556
+ id: string;
1557
+ lastName: string | null;
1558
+ firstName: string;
1559
+ agentName: string | null;
1560
+ }[];
1561
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
1562
+ conflicts: string[];
1563
+ curatedWorker: {
1564
+ id: string;
1565
+ lastName: string | null;
1566
+ firstName: string;
1567
+ } | null;
1568
+ revision: number;
1569
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
1570
+ hasHardEvidence: boolean;
1571
+ linkAudit: {
1572
+ suggestedAction: "UNLINK";
1573
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
1574
+ } | null;
1575
+ }, {
1576
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
1577
+ id: string;
1578
+ createdAt: string;
1579
+ confidence: number | null;
1580
+ workers: {
1581
+ id: string;
1582
+ lastName: string | null;
1583
+ firstName: string;
1584
+ agentName: string | null;
1585
+ }[];
1586
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
1587
+ conflicts: string[];
1588
+ curatedWorker: {
1589
+ id: string;
1590
+ lastName: string | null;
1591
+ firstName: string;
1592
+ } | null;
1593
+ revision: number;
1594
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
1595
+ hasHardEvidence: boolean;
1596
+ linkAudit: {
1597
+ suggestedAction: "UNLINK";
1598
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
1599
+ } | null;
1600
+ }>, "many">;
1601
+ totalCount: z.ZodNumber;
1602
+ totalPages: z.ZodNumber;
1603
+ page: z.ZodNumber;
1604
+ limit: z.ZodNumber;
1605
+ }, "strip", z.ZodTypeAny, {
1606
+ page: number;
1607
+ limit: number;
1608
+ totalCount: number;
1609
+ totalPages: number;
1610
+ cases: {
1611
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
1612
+ id: string;
1613
+ createdAt: string;
1614
+ confidence: number | null;
1615
+ workers: {
1616
+ id: string;
1617
+ lastName: string | null;
1618
+ firstName: string;
1619
+ agentName: string | null;
1620
+ }[];
1621
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
1622
+ conflicts: string[];
1623
+ curatedWorker: {
1624
+ id: string;
1625
+ lastName: string | null;
1626
+ firstName: string;
1627
+ } | null;
1628
+ revision: number;
1629
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
1630
+ hasHardEvidence: boolean;
1631
+ linkAudit: {
1632
+ suggestedAction: "UNLINK";
1633
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
1634
+ } | null;
1635
+ }[];
1636
+ }, {
1637
+ page: number;
1638
+ limit: number;
1639
+ totalCount: number;
1640
+ totalPages: number;
1641
+ cases: {
1642
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
1643
+ id: string;
1644
+ createdAt: string;
1645
+ confidence: number | null;
1646
+ workers: {
1647
+ id: string;
1648
+ lastName: string | null;
1649
+ firstName: string;
1650
+ agentName: string | null;
1651
+ }[];
1652
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
1653
+ conflicts: string[];
1654
+ curatedWorker: {
1655
+ id: string;
1656
+ lastName: string | null;
1657
+ firstName: string;
1658
+ } | null;
1659
+ revision: number;
1660
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
1661
+ hasHardEvidence: boolean;
1662
+ linkAudit: {
1663
+ suggestedAction: "UNLINK";
1664
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
1665
+ } | null;
1666
+ }[];
1667
+ }>;
1668
+ };
1669
+ };
1670
+ backfill: {
1671
+ metadata: {
1672
+ tags: string[];
1673
+ openApi: {
1674
+ operationId: string;
1675
+ };
1676
+ };
1677
+ summary: "Start a bounded full-history worker identity backfill in the background";
1678
+ method: "POST";
1679
+ body: z.ZodObject<{
1680
+ batchSize: z.ZodDefault<z.ZodNumber>;
1681
+ maxWorkers: z.ZodOptional<z.ZodNumber>;
1682
+ }, "strip", z.ZodTypeAny, {
1683
+ batchSize: number;
1684
+ maxWorkers?: number | undefined;
1685
+ }, {
1686
+ batchSize?: number | undefined;
1687
+ maxWorkers?: number | undefined;
1688
+ }>;
1689
+ path: "/v2/worker-identity-cases/backfill";
1690
+ responses: {
1691
+ 401: z.ZodObject<{
1692
+ statusCode: z.ZodNumber;
1693
+ message: z.ZodString;
1694
+ code: z.ZodString;
1695
+ details: z.ZodOptional<z.ZodUnknown>;
1696
+ timestamp: z.ZodString;
1697
+ path: z.ZodString;
1698
+ correlationId: z.ZodOptional<z.ZodString>;
1699
+ }, "strip", z.ZodTypeAny, {
1700
+ message: string;
1701
+ code: string;
1702
+ path: string;
1703
+ statusCode: number;
1704
+ timestamp: string;
1705
+ details?: unknown;
1706
+ correlationId?: string | undefined;
1707
+ }, {
1708
+ message: string;
1709
+ code: string;
1710
+ path: string;
1711
+ statusCode: number;
1712
+ timestamp: string;
1713
+ details?: unknown;
1714
+ correlationId?: string | undefined;
1715
+ }>;
1716
+ 400: z.ZodObject<{
1717
+ statusCode: z.ZodNumber;
1718
+ message: z.ZodString;
1719
+ code: z.ZodString;
1720
+ details: z.ZodOptional<z.ZodUnknown>;
1721
+ timestamp: z.ZodString;
1722
+ path: z.ZodString;
1723
+ correlationId: z.ZodOptional<z.ZodString>;
1724
+ }, "strip", z.ZodTypeAny, {
1725
+ message: string;
1726
+ code: string;
1727
+ path: string;
1728
+ statusCode: number;
1729
+ timestamp: string;
1730
+ details?: unknown;
1731
+ correlationId?: string | undefined;
1732
+ }, {
1733
+ message: string;
1734
+ code: string;
1735
+ path: string;
1736
+ statusCode: number;
1737
+ timestamp: string;
1738
+ details?: unknown;
1739
+ correlationId?: string | undefined;
1740
+ }>;
1741
+ 403: z.ZodObject<{
1742
+ statusCode: z.ZodNumber;
1743
+ message: z.ZodString;
1744
+ code: z.ZodString;
1745
+ details: z.ZodOptional<z.ZodUnknown>;
1746
+ timestamp: z.ZodString;
1747
+ path: z.ZodString;
1748
+ correlationId: z.ZodOptional<z.ZodString>;
1749
+ }, "strip", z.ZodTypeAny, {
1750
+ message: string;
1751
+ code: string;
1752
+ path: string;
1753
+ statusCode: number;
1754
+ timestamp: string;
1755
+ details?: unknown;
1756
+ correlationId?: string | undefined;
1757
+ }, {
1758
+ message: string;
1759
+ code: string;
1760
+ path: string;
1761
+ statusCode: number;
1762
+ timestamp: string;
1763
+ details?: unknown;
1764
+ correlationId?: string | undefined;
1765
+ }>;
1766
+ 500: z.ZodObject<{
1767
+ statusCode: z.ZodNumber;
1768
+ message: z.ZodString;
1769
+ code: z.ZodString;
1770
+ details: z.ZodOptional<z.ZodUnknown>;
1771
+ timestamp: z.ZodString;
1772
+ path: z.ZodString;
1773
+ correlationId: z.ZodOptional<z.ZodString>;
1774
+ }, "strip", z.ZodTypeAny, {
1775
+ message: string;
1776
+ code: string;
1777
+ path: string;
1778
+ statusCode: number;
1779
+ timestamp: string;
1780
+ details?: unknown;
1781
+ correlationId?: string | undefined;
1782
+ }, {
1783
+ message: string;
1784
+ code: string;
1785
+ path: string;
1786
+ statusCode: number;
1787
+ timestamp: string;
1788
+ details?: unknown;
1789
+ correlationId?: string | undefined;
1790
+ }>;
1791
+ 200: z.ZodObject<{
1792
+ started: z.ZodBoolean;
1793
+ alreadyRunning: z.ZodBoolean;
1794
+ }, "strip", z.ZodTypeAny, {
1795
+ started: boolean;
1796
+ alreadyRunning: boolean;
1797
+ }, {
1798
+ started: boolean;
1799
+ alreadyRunning: boolean;
1800
+ }>;
1801
+ };
1802
+ };
1803
+ backfillStatus: {
1804
+ metadata: {
1805
+ tags: string[];
1806
+ openApi: {
1807
+ operationId: string;
1808
+ };
1809
+ };
1810
+ summary: "Progress and last-run counters of the identity backfill";
1811
+ method: "GET";
1812
+ path: "/v2/worker-identity-cases/backfill/status";
1813
+ responses: {
1814
+ 401: z.ZodObject<{
1815
+ statusCode: z.ZodNumber;
1816
+ message: z.ZodString;
1817
+ code: z.ZodString;
1818
+ details: z.ZodOptional<z.ZodUnknown>;
1819
+ timestamp: z.ZodString;
1820
+ path: z.ZodString;
1821
+ correlationId: z.ZodOptional<z.ZodString>;
1822
+ }, "strip", z.ZodTypeAny, {
1823
+ message: string;
1824
+ code: string;
1825
+ path: string;
1826
+ statusCode: number;
1827
+ timestamp: string;
1828
+ details?: unknown;
1829
+ correlationId?: string | undefined;
1830
+ }, {
1831
+ message: string;
1832
+ code: string;
1833
+ path: string;
1834
+ statusCode: number;
1835
+ timestamp: string;
1836
+ details?: unknown;
1837
+ correlationId?: string | undefined;
1838
+ }>;
1839
+ 400: z.ZodObject<{
1840
+ statusCode: z.ZodNumber;
1841
+ message: z.ZodString;
1842
+ code: z.ZodString;
1843
+ details: z.ZodOptional<z.ZodUnknown>;
1844
+ timestamp: z.ZodString;
1845
+ path: z.ZodString;
1846
+ correlationId: z.ZodOptional<z.ZodString>;
1847
+ }, "strip", z.ZodTypeAny, {
1848
+ message: string;
1849
+ code: string;
1850
+ path: string;
1851
+ statusCode: number;
1852
+ timestamp: string;
1853
+ details?: unknown;
1854
+ correlationId?: string | undefined;
1855
+ }, {
1856
+ message: string;
1857
+ code: string;
1858
+ path: string;
1859
+ statusCode: number;
1860
+ timestamp: string;
1861
+ details?: unknown;
1862
+ correlationId?: string | undefined;
1863
+ }>;
1864
+ 403: z.ZodObject<{
1865
+ statusCode: z.ZodNumber;
1866
+ message: z.ZodString;
1867
+ code: z.ZodString;
1868
+ details: z.ZodOptional<z.ZodUnknown>;
1869
+ timestamp: z.ZodString;
1870
+ path: z.ZodString;
1871
+ correlationId: z.ZodOptional<z.ZodString>;
1872
+ }, "strip", z.ZodTypeAny, {
1873
+ message: string;
1874
+ code: string;
1875
+ path: string;
1876
+ statusCode: number;
1877
+ timestamp: string;
1878
+ details?: unknown;
1879
+ correlationId?: string | undefined;
1880
+ }, {
1881
+ message: string;
1882
+ code: string;
1883
+ path: string;
1884
+ statusCode: number;
1885
+ timestamp: string;
1886
+ details?: unknown;
1887
+ correlationId?: string | undefined;
1888
+ }>;
1889
+ 500: z.ZodObject<{
1890
+ statusCode: z.ZodNumber;
1891
+ message: z.ZodString;
1892
+ code: z.ZodString;
1893
+ details: z.ZodOptional<z.ZodUnknown>;
1894
+ timestamp: z.ZodString;
1895
+ path: z.ZodString;
1896
+ correlationId: z.ZodOptional<z.ZodString>;
1897
+ }, "strip", z.ZodTypeAny, {
1898
+ message: string;
1899
+ code: string;
1900
+ path: string;
1901
+ statusCode: number;
1902
+ timestamp: string;
1903
+ details?: unknown;
1904
+ correlationId?: string | undefined;
1905
+ }, {
1906
+ message: string;
1907
+ code: string;
1908
+ path: string;
1909
+ statusCode: number;
1910
+ timestamp: string;
1911
+ details?: unknown;
1912
+ correlationId?: string | undefined;
1913
+ }>;
1914
+ 200: z.ZodObject<{
1915
+ running: z.ZodBoolean;
1916
+ startedAt: z.ZodNullable<z.ZodString>;
1917
+ finishedAt: z.ZodNullable<z.ZodString>;
1918
+ error: z.ZodNullable<z.ZodString>;
1919
+ result: z.ZodNullable<z.ZodObject<{
1920
+ scanned: z.ZodNumber;
1921
+ linkedScanned: z.ZodNumber;
1922
+ linkAudits: z.ZodNumber;
1923
+ cases: z.ZodNumber;
1924
+ conflicts: z.ZodNumber;
1925
+ autoApplied: z.ZodNumber;
1926
+ pending: z.ZodNumber;
1927
+ llmCalls: z.ZodNumber;
1928
+ rejected: z.ZodNumber;
1929
+ absorbed: z.ZodNumber;
1930
+ obsoleteClosed: z.ZodNumber;
1931
+ parity: z.ZodObject<{
1932
+ legacyPhoneGroups: z.ZodNumber;
1933
+ representedPhoneGroups: z.ZodNumber;
1934
+ }, "strip", z.ZodTypeAny, {
1935
+ legacyPhoneGroups: number;
1936
+ representedPhoneGroups: number;
1937
+ }, {
1938
+ legacyPhoneGroups: number;
1939
+ representedPhoneGroups: number;
1940
+ }>;
1941
+ }, "strip", z.ZodTypeAny, {
1942
+ pending: number;
1943
+ scanned: number;
1944
+ conflicts: number;
1945
+ llmCalls: number;
1946
+ cases: number;
1947
+ linkedScanned: number;
1948
+ linkAudits: number;
1949
+ autoApplied: number;
1950
+ rejected: number;
1951
+ absorbed: number;
1952
+ obsoleteClosed: number;
1953
+ parity: {
1954
+ legacyPhoneGroups: number;
1955
+ representedPhoneGroups: number;
1956
+ };
1957
+ }, {
1958
+ pending: number;
1959
+ scanned: number;
1960
+ conflicts: number;
1961
+ llmCalls: number;
1962
+ cases: number;
1963
+ linkedScanned: number;
1964
+ linkAudits: number;
1965
+ autoApplied: number;
1966
+ rejected: number;
1967
+ absorbed: number;
1968
+ obsoleteClosed: number;
1969
+ parity: {
1970
+ legacyPhoneGroups: number;
1971
+ representedPhoneGroups: number;
1972
+ };
1973
+ }>>;
1974
+ }, "strip", z.ZodTypeAny, {
1975
+ startedAt: string | null;
1976
+ error: string | null;
1977
+ finishedAt: string | null;
1978
+ result: {
1979
+ pending: number;
1980
+ scanned: number;
1981
+ conflicts: number;
1982
+ llmCalls: number;
1983
+ cases: number;
1984
+ linkedScanned: number;
1985
+ linkAudits: number;
1986
+ autoApplied: number;
1987
+ rejected: number;
1988
+ absorbed: number;
1989
+ obsoleteClosed: number;
1990
+ parity: {
1991
+ legacyPhoneGroups: number;
1992
+ representedPhoneGroups: number;
1993
+ };
1994
+ } | null;
1995
+ running: boolean;
1996
+ }, {
1997
+ startedAt: string | null;
1998
+ error: string | null;
1999
+ finishedAt: string | null;
2000
+ result: {
2001
+ pending: number;
2002
+ scanned: number;
2003
+ conflicts: number;
2004
+ llmCalls: number;
2005
+ cases: number;
2006
+ linkedScanned: number;
2007
+ linkAudits: number;
2008
+ autoApplied: number;
2009
+ rejected: number;
2010
+ absorbed: number;
2011
+ obsoleteClosed: number;
2012
+ parity: {
2013
+ legacyPhoneGroups: number;
2014
+ representedPhoneGroups: number;
2015
+ };
2016
+ } | null;
2017
+ running: boolean;
2018
+ }>;
2019
+ };
2020
+ };
2021
+ auditLinks: {
2022
+ metadata: {
2023
+ tags: string[];
2024
+ openApi: {
2025
+ operationId: string;
2026
+ };
2027
+ };
2028
+ summary: "Audit specific existing worker-to-curated links";
2029
+ method: "POST";
2030
+ body: z.ZodObject<{
2031
+ workerIds: z.ZodArray<z.ZodString, "many">;
2032
+ }, "strip", z.ZodTypeAny, {
2033
+ workerIds: string[];
2034
+ }, {
2035
+ workerIds: string[];
2036
+ }>;
2037
+ path: "/v2/worker-identity-cases/audit-links";
2038
+ responses: {
2039
+ 401: z.ZodObject<{
2040
+ statusCode: z.ZodNumber;
2041
+ message: z.ZodString;
2042
+ code: z.ZodString;
2043
+ details: z.ZodOptional<z.ZodUnknown>;
2044
+ timestamp: z.ZodString;
2045
+ path: z.ZodString;
2046
+ correlationId: z.ZodOptional<z.ZodString>;
2047
+ }, "strip", z.ZodTypeAny, {
2048
+ message: string;
2049
+ code: string;
2050
+ path: string;
2051
+ statusCode: number;
2052
+ timestamp: string;
2053
+ details?: unknown;
2054
+ correlationId?: string | undefined;
2055
+ }, {
2056
+ message: string;
2057
+ code: string;
2058
+ path: string;
2059
+ statusCode: number;
2060
+ timestamp: string;
2061
+ details?: unknown;
2062
+ correlationId?: string | undefined;
2063
+ }>;
2064
+ 400: z.ZodObject<{
2065
+ statusCode: z.ZodNumber;
2066
+ message: z.ZodString;
2067
+ code: z.ZodString;
2068
+ details: z.ZodOptional<z.ZodUnknown>;
2069
+ timestamp: z.ZodString;
2070
+ path: z.ZodString;
2071
+ correlationId: z.ZodOptional<z.ZodString>;
2072
+ }, "strip", z.ZodTypeAny, {
2073
+ message: string;
2074
+ code: string;
2075
+ path: string;
2076
+ statusCode: number;
2077
+ timestamp: string;
2078
+ details?: unknown;
2079
+ correlationId?: string | undefined;
2080
+ }, {
2081
+ message: string;
2082
+ code: string;
2083
+ path: string;
2084
+ statusCode: number;
2085
+ timestamp: string;
2086
+ details?: unknown;
2087
+ correlationId?: string | undefined;
2088
+ }>;
2089
+ 403: z.ZodObject<{
2090
+ statusCode: z.ZodNumber;
2091
+ message: z.ZodString;
2092
+ code: z.ZodString;
2093
+ details: z.ZodOptional<z.ZodUnknown>;
2094
+ timestamp: z.ZodString;
2095
+ path: z.ZodString;
2096
+ correlationId: z.ZodOptional<z.ZodString>;
2097
+ }, "strip", z.ZodTypeAny, {
2098
+ message: string;
2099
+ code: string;
2100
+ path: string;
2101
+ statusCode: number;
2102
+ timestamp: string;
2103
+ details?: unknown;
2104
+ correlationId?: string | undefined;
2105
+ }, {
2106
+ message: string;
2107
+ code: string;
2108
+ path: string;
2109
+ statusCode: number;
2110
+ timestamp: string;
2111
+ details?: unknown;
2112
+ correlationId?: string | undefined;
2113
+ }>;
2114
+ 500: z.ZodObject<{
2115
+ statusCode: z.ZodNumber;
2116
+ message: z.ZodString;
2117
+ code: z.ZodString;
2118
+ details: z.ZodOptional<z.ZodUnknown>;
2119
+ timestamp: z.ZodString;
2120
+ path: z.ZodString;
2121
+ correlationId: z.ZodOptional<z.ZodString>;
2122
+ }, "strip", z.ZodTypeAny, {
2123
+ message: string;
2124
+ code: string;
2125
+ path: string;
2126
+ statusCode: number;
2127
+ timestamp: string;
2128
+ details?: unknown;
2129
+ correlationId?: string | undefined;
2130
+ }, {
2131
+ message: string;
2132
+ code: string;
2133
+ path: string;
2134
+ statusCode: number;
2135
+ timestamp: string;
2136
+ details?: unknown;
2137
+ correlationId?: string | undefined;
2138
+ }>;
2139
+ 200: z.ZodObject<{
2140
+ scanned: z.ZodNumber;
2141
+ suggestions: z.ZodNumber;
2142
+ closed: z.ZodNumber;
2143
+ }, "strip", z.ZodTypeAny, {
2144
+ scanned: number;
2145
+ suggestions: number;
2146
+ closed: number;
2147
+ }, {
2148
+ scanned: number;
2149
+ suggestions: number;
2150
+ closed: number;
2151
+ }>;
2152
+ };
2153
+ };
2154
+ getOne: {
2155
+ metadata: {
2156
+ tags: string[];
2157
+ openApi: {
2158
+ operationId: string;
2159
+ };
2160
+ };
2161
+ pathParams: z.ZodObject<{
2162
+ id: z.ZodString;
2163
+ }, "strip", z.ZodTypeAny, {
2164
+ id: string;
2165
+ }, {
2166
+ id: string;
2167
+ }>;
2168
+ summary: "Get one identity case (follows absorbed-case redirects)";
2169
+ method: "GET";
2170
+ path: "/v2/worker-identity-cases/:id";
2171
+ responses: {
2172
+ 401: z.ZodObject<{
2173
+ statusCode: z.ZodNumber;
2174
+ message: z.ZodString;
2175
+ code: z.ZodString;
2176
+ details: z.ZodOptional<z.ZodUnknown>;
2177
+ timestamp: z.ZodString;
2178
+ path: z.ZodString;
2179
+ correlationId: z.ZodOptional<z.ZodString>;
2180
+ }, "strip", z.ZodTypeAny, {
2181
+ message: string;
2182
+ code: string;
2183
+ path: string;
2184
+ statusCode: number;
2185
+ timestamp: string;
2186
+ details?: unknown;
2187
+ correlationId?: string | undefined;
2188
+ }, {
2189
+ message: string;
2190
+ code: string;
2191
+ path: string;
2192
+ statusCode: number;
2193
+ timestamp: string;
2194
+ details?: unknown;
2195
+ correlationId?: string | undefined;
2196
+ }>;
2197
+ 400: z.ZodObject<{
2198
+ statusCode: z.ZodNumber;
2199
+ message: z.ZodString;
2200
+ code: z.ZodString;
2201
+ details: z.ZodOptional<z.ZodUnknown>;
2202
+ timestamp: z.ZodString;
2203
+ path: z.ZodString;
2204
+ correlationId: z.ZodOptional<z.ZodString>;
2205
+ }, "strip", z.ZodTypeAny, {
2206
+ message: string;
2207
+ code: string;
2208
+ path: string;
2209
+ statusCode: number;
2210
+ timestamp: string;
2211
+ details?: unknown;
2212
+ correlationId?: string | undefined;
2213
+ }, {
2214
+ message: string;
2215
+ code: string;
2216
+ path: string;
2217
+ statusCode: number;
2218
+ timestamp: string;
2219
+ details?: unknown;
2220
+ correlationId?: string | undefined;
2221
+ }>;
2222
+ 403: z.ZodObject<{
2223
+ statusCode: z.ZodNumber;
2224
+ message: z.ZodString;
2225
+ code: z.ZodString;
2226
+ details: z.ZodOptional<z.ZodUnknown>;
2227
+ timestamp: z.ZodString;
2228
+ path: z.ZodString;
2229
+ correlationId: z.ZodOptional<z.ZodString>;
2230
+ }, "strip", z.ZodTypeAny, {
2231
+ message: string;
2232
+ code: string;
2233
+ path: string;
2234
+ statusCode: number;
2235
+ timestamp: string;
2236
+ details?: unknown;
2237
+ correlationId?: string | undefined;
2238
+ }, {
2239
+ message: string;
2240
+ code: string;
2241
+ path: string;
2242
+ statusCode: number;
2243
+ timestamp: string;
2244
+ details?: unknown;
2245
+ correlationId?: string | undefined;
2246
+ }>;
2247
+ 500: z.ZodObject<{
2248
+ statusCode: z.ZodNumber;
2249
+ message: z.ZodString;
2250
+ code: z.ZodString;
2251
+ details: z.ZodOptional<z.ZodUnknown>;
2252
+ timestamp: z.ZodString;
2253
+ path: z.ZodString;
2254
+ correlationId: z.ZodOptional<z.ZodString>;
2255
+ }, "strip", z.ZodTypeAny, {
2256
+ message: string;
2257
+ code: string;
2258
+ path: string;
2259
+ statusCode: number;
2260
+ timestamp: string;
2261
+ details?: unknown;
2262
+ correlationId?: string | undefined;
2263
+ }, {
2264
+ message: string;
2265
+ code: string;
2266
+ path: string;
2267
+ statusCode: number;
2268
+ timestamp: string;
2269
+ details?: unknown;
2270
+ correlationId?: string | undefined;
2271
+ }>;
2272
+ 200: z.ZodObject<{
2273
+ id: z.ZodString;
2274
+ kind: z.ZodEnum<["IDENTITY_MERGE", "CURATED_UPDATE", "CURATED_LINK_AUDIT"]>;
2275
+ status: z.ZodEnum<["PENDING", "CONFLICT", "AUTO_APPLIED", "CONFIRMED", "PARTIALLY_CONFIRMED", "REJECTED", "OBSOLETE"]>;
2276
+ revision: z.ZodNumber;
2277
+ confidence: z.ZodNullable<z.ZodNumber>;
2278
+ curatedWorker: z.ZodNullable<z.ZodObject<{
2279
+ id: z.ZodString;
2280
+ firstName: z.ZodString;
2281
+ lastName: z.ZodNullable<z.ZodString>;
2282
+ }, "strip", z.ZodTypeAny, {
2283
+ id: string;
2284
+ lastName: string | null;
2285
+ firstName: string;
2286
+ }, {
2287
+ id: string;
2288
+ lastName: string | null;
2289
+ firstName: string;
2290
+ }>>;
2291
+ workers: z.ZodArray<z.ZodObject<{
2292
+ id: z.ZodString;
2293
+ firstName: z.ZodString;
2294
+ lastName: z.ZodNullable<z.ZodString>;
2295
+ agentName: z.ZodNullable<z.ZodString>;
2296
+ }, "strip", z.ZodTypeAny, {
2297
+ id: string;
2298
+ lastName: string | null;
2299
+ firstName: string;
2300
+ agentName: string | null;
2301
+ }, {
2302
+ id: string;
2303
+ lastName: string | null;
2304
+ firstName: string;
2305
+ agentName: string | null;
2306
+ }>, "many">;
2307
+ evidenceBadges: z.ZodArray<z.ZodEnum<["NINO", "DOC_NUMBER", "SHARE_CODE", "EMAIL", "PHONE", "DOB_NAME", "AI"]>, "many">;
2308
+ conflicts: z.ZodArray<z.ZodString, "many">;
2309
+ hasHardEvidence: z.ZodBoolean;
2310
+ linkAudit: z.ZodNullable<z.ZodObject<{
2311
+ suggestedAction: z.ZodLiteral<"UNLINK">;
2312
+ reasons: z.ZodArray<z.ZodEnum<["NAME_MISMATCH", "NINO_CONFLICT", "DOB_CONFLICT", "NO_SUPPORTING_EVIDENCE", "WEAK_PHONE_ONLY"]>, "many">;
2313
+ }, "strip", z.ZodTypeAny, {
2314
+ suggestedAction: "UNLINK";
2315
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
2316
+ }, {
2317
+ suggestedAction: "UNLINK";
2318
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
2319
+ }>>;
2320
+ createdAt: z.ZodString;
2321
+ } & {
2322
+ edges: z.ZodArray<z.ZodObject<{
2323
+ workerId: z.ZodString;
2324
+ targetType: z.ZodEnum<["CURATED", "WORKER"]>;
2325
+ targetId: z.ZodString;
2326
+ signals: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2327
+ conflicts: z.ZodArray<z.ZodString, "many">;
2328
+ nameSim: z.ZodNullable<z.ZodNumber>;
2329
+ } & {
2330
+ kind: z.ZodOptional<z.ZodEnum<["HARD", "REVIEW", "AI", "CONFLICT"]>>;
2331
+ llmVerdict: z.ZodOptional<z.ZodEnum<["SAME", "DIFFERENT", "UNSURE"]>>;
2332
+ llmReason: z.ZodOptional<z.ZodString>;
2333
+ }, "strip", z.ZodTypeAny, {
2334
+ workerId: string;
2335
+ conflicts: string[];
2336
+ targetType: "WORKER" | "CURATED";
2337
+ targetId: string;
2338
+ signals: Record<string, unknown>;
2339
+ nameSim: number | null;
2340
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
2341
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
2342
+ llmReason?: string | undefined;
2343
+ }, {
2344
+ workerId: string;
2345
+ conflicts: string[];
2346
+ targetType: "WORKER" | "CURATED";
2347
+ targetId: string;
2348
+ signals: Record<string, unknown>;
2349
+ nameSim: number | null;
2350
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
2351
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
2352
+ llmReason?: string | undefined;
2353
+ }>, "many">;
2354
+ /** Every curated subject of the case (evidence targets included), so
2355
+ * multi-target conflict cases can offer each as an EXISTING target. */
2356
+ curatedSubjects: z.ZodArray<z.ZodObject<{
2357
+ id: z.ZodString;
2358
+ firstName: z.ZodString;
2359
+ lastName: z.ZodNullable<z.ZodString>;
2360
+ }, "strip", z.ZodTypeAny, {
2361
+ id: string;
2362
+ lastName: string | null;
2363
+ firstName: string;
2364
+ }, {
2365
+ id: string;
2366
+ lastName: string | null;
2367
+ firstName: string;
2368
+ }>, "many">;
2369
+ pendingDocuments: z.ZodObject<{
2370
+ /** Attachments with no extraction attempt yet (await the intake sweep). */
2371
+ notExtracted: z.ZodNumber;
2372
+ /** Extractions awaiting human review (or failed and retryable). */
2373
+ awaitingReview: z.ZodNumber;
2374
+ }, "strip", z.ZodTypeAny, {
2375
+ notExtracted: number;
2376
+ awaitingReview: number;
2377
+ }, {
2378
+ notExtracted: number;
2379
+ awaitingReview: number;
2380
+ }>;
2381
+ /** The surviving case id when the requested case was absorbed; null when
2382
+ * the requested id is the live case. */
2383
+ absorbedIntoCaseId: z.ZodNullable<z.ZodString>;
2384
+ obsoleteReason: z.ZodNullable<z.ZodString>;
2385
+ reviewedAt: z.ZodNullable<z.ZodString>;
2386
+ appliedCuratedWorkerId: z.ZodNullable<z.ZodString>;
2387
+ }, "strip", z.ZodTypeAny, {
2388
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
2389
+ id: string;
2390
+ createdAt: string;
2391
+ confidence: number | null;
2392
+ workers: {
2393
+ id: string;
2394
+ lastName: string | null;
2395
+ firstName: string;
2396
+ agentName: string | null;
2397
+ }[];
2398
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
2399
+ conflicts: string[];
2400
+ reviewedAt: string | null;
2401
+ curatedWorker: {
2402
+ id: string;
2403
+ lastName: string | null;
2404
+ firstName: string;
2405
+ } | null;
2406
+ revision: number;
2407
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
2408
+ hasHardEvidence: boolean;
2409
+ linkAudit: {
2410
+ suggestedAction: "UNLINK";
2411
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
2412
+ } | null;
2413
+ edges: {
2414
+ workerId: string;
2415
+ conflicts: string[];
2416
+ targetType: "WORKER" | "CURATED";
2417
+ targetId: string;
2418
+ signals: Record<string, unknown>;
2419
+ nameSim: number | null;
2420
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
2421
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
2422
+ llmReason?: string | undefined;
2423
+ }[];
2424
+ curatedSubjects: {
2425
+ id: string;
2426
+ lastName: string | null;
2427
+ firstName: string;
2428
+ }[];
2429
+ pendingDocuments: {
2430
+ notExtracted: number;
2431
+ awaitingReview: number;
2432
+ };
2433
+ absorbedIntoCaseId: string | null;
2434
+ obsoleteReason: string | null;
2435
+ appliedCuratedWorkerId: string | null;
2436
+ }, {
2437
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
2438
+ id: string;
2439
+ createdAt: string;
2440
+ confidence: number | null;
2441
+ workers: {
2442
+ id: string;
2443
+ lastName: string | null;
2444
+ firstName: string;
2445
+ agentName: string | null;
2446
+ }[];
2447
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
2448
+ conflicts: string[];
2449
+ reviewedAt: string | null;
2450
+ curatedWorker: {
2451
+ id: string;
2452
+ lastName: string | null;
2453
+ firstName: string;
2454
+ } | null;
2455
+ revision: number;
2456
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
2457
+ hasHardEvidence: boolean;
2458
+ linkAudit: {
2459
+ suggestedAction: "UNLINK";
2460
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
2461
+ } | null;
2462
+ edges: {
2463
+ workerId: string;
2464
+ conflicts: string[];
2465
+ targetType: "WORKER" | "CURATED";
2466
+ targetId: string;
2467
+ signals: Record<string, unknown>;
2468
+ nameSim: number | null;
2469
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
2470
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
2471
+ llmReason?: string | undefined;
2472
+ }[];
2473
+ curatedSubjects: {
2474
+ id: string;
2475
+ lastName: string | null;
2476
+ firstName: string;
2477
+ }[];
2478
+ pendingDocuments: {
2479
+ notExtracted: number;
2480
+ awaitingReview: number;
2481
+ };
2482
+ absorbedIntoCaseId: string | null;
2483
+ obsoleteReason: string | null;
2484
+ appliedCuratedWorkerId: string | null;
2485
+ }>;
2486
+ 404: z.ZodObject<{
2487
+ statusCode: z.ZodNumber;
2488
+ message: z.ZodString;
2489
+ code: z.ZodString;
2490
+ details: z.ZodOptional<z.ZodUnknown>;
2491
+ timestamp: z.ZodString;
2492
+ path: z.ZodString;
2493
+ correlationId: z.ZodOptional<z.ZodString>;
2494
+ }, "strip", z.ZodTypeAny, {
2495
+ message: string;
2496
+ code: string;
2497
+ path: string;
2498
+ statusCode: number;
2499
+ timestamp: string;
2500
+ details?: unknown;
2501
+ correlationId?: string | undefined;
2502
+ }, {
2503
+ message: string;
2504
+ code: string;
2505
+ path: string;
2506
+ statusCode: number;
2507
+ timestamp: string;
2508
+ details?: unknown;
2509
+ correlationId?: string | undefined;
2510
+ }>;
2511
+ };
2512
+ };
2513
+ confirm: {
2514
+ metadata: {
2515
+ tags: string[];
2516
+ openApi: {
2517
+ operationId: string;
2518
+ };
2519
+ };
2520
+ pathParams: z.ZodObject<{
2521
+ id: z.ZodString;
2522
+ }, "strip", z.ZodTypeAny, {
2523
+ id: string;
2524
+ }, {
2525
+ id: string;
2526
+ }>;
2527
+ summary: "Confirm selected identity members and target at an expected revision";
2528
+ method: "PATCH";
2529
+ body: z.ZodObject<{
2530
+ expectedRevision: z.ZodNumber;
2531
+ selectedWorkerIds: z.ZodArray<z.ZodString, "many">;
2532
+ excluded: z.ZodDefault<z.ZodArray<z.ZodObject<{
2533
+ workerId: z.ZodString;
2534
+ mode: z.ZodEnum<["NOT_SAME", "DECIDE_LATER"]>;
2535
+ }, "strip", z.ZodTypeAny, {
2536
+ workerId: string;
2537
+ mode: "NOT_SAME" | "DECIDE_LATER";
2538
+ }, {
2539
+ workerId: string;
2540
+ mode: "NOT_SAME" | "DECIDE_LATER";
2541
+ }>, "many">>;
2542
+ target: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
2543
+ type: z.ZodLiteral<"EXISTING">;
2544
+ curatedWorkerId: z.ZodString;
2545
+ }, "strip", z.ZodTypeAny, {
2546
+ type: "EXISTING";
2547
+ curatedWorkerId: string;
2548
+ }, {
2549
+ type: "EXISTING";
2550
+ curatedWorkerId: string;
2551
+ }>, z.ZodObject<{
2552
+ type: z.ZodLiteral<"NEW">;
2553
+ }, "strip", z.ZodTypeAny, {
2554
+ type: "NEW";
2555
+ }, {
2556
+ type: "NEW";
2557
+ }>]>;
2558
+ acknowledgeHardEvidence: z.ZodOptional<z.ZodBoolean>;
2559
+ reason: z.ZodOptional<z.ZodString>;
2560
+ }, "strip", z.ZodTypeAny, {
2561
+ target: {
2562
+ type: "EXISTING";
2563
+ curatedWorkerId: string;
2564
+ } | {
2565
+ type: "NEW";
2566
+ };
2567
+ expectedRevision: number;
2568
+ selectedWorkerIds: string[];
2569
+ excluded: {
2570
+ workerId: string;
2571
+ mode: "NOT_SAME" | "DECIDE_LATER";
2572
+ }[];
2573
+ reason?: string | undefined;
2574
+ acknowledgeHardEvidence?: boolean | undefined;
2575
+ }, {
2576
+ target: {
2577
+ type: "EXISTING";
2578
+ curatedWorkerId: string;
2579
+ } | {
2580
+ type: "NEW";
2581
+ };
2582
+ expectedRevision: number;
2583
+ selectedWorkerIds: string[];
2584
+ reason?: string | undefined;
2585
+ excluded?: {
2586
+ workerId: string;
2587
+ mode: "NOT_SAME" | "DECIDE_LATER";
2588
+ }[] | undefined;
2589
+ acknowledgeHardEvidence?: boolean | undefined;
2590
+ }>;
2591
+ path: "/v2/worker-identity-cases/:id/confirm";
2592
+ responses: {
2593
+ 401: z.ZodObject<{
2594
+ statusCode: z.ZodNumber;
2595
+ message: z.ZodString;
2596
+ code: z.ZodString;
2597
+ details: z.ZodOptional<z.ZodUnknown>;
2598
+ timestamp: z.ZodString;
2599
+ path: z.ZodString;
2600
+ correlationId: z.ZodOptional<z.ZodString>;
2601
+ }, "strip", z.ZodTypeAny, {
2602
+ message: string;
2603
+ code: string;
2604
+ path: string;
2605
+ statusCode: number;
2606
+ timestamp: string;
2607
+ details?: unknown;
2608
+ correlationId?: string | undefined;
2609
+ }, {
2610
+ message: string;
2611
+ code: string;
2612
+ path: string;
2613
+ statusCode: number;
2614
+ timestamp: string;
2615
+ details?: unknown;
2616
+ correlationId?: string | undefined;
2617
+ }>;
2618
+ 400: z.ZodObject<{
2619
+ statusCode: z.ZodNumber;
2620
+ message: z.ZodString;
2621
+ code: z.ZodString;
2622
+ details: z.ZodOptional<z.ZodUnknown>;
2623
+ timestamp: z.ZodString;
2624
+ path: z.ZodString;
2625
+ correlationId: z.ZodOptional<z.ZodString>;
2626
+ }, "strip", z.ZodTypeAny, {
2627
+ message: string;
2628
+ code: string;
2629
+ path: string;
2630
+ statusCode: number;
2631
+ timestamp: string;
2632
+ details?: unknown;
2633
+ correlationId?: string | undefined;
2634
+ }, {
2635
+ message: string;
2636
+ code: string;
2637
+ path: string;
2638
+ statusCode: number;
2639
+ timestamp: string;
2640
+ details?: unknown;
2641
+ correlationId?: string | undefined;
2642
+ }>;
2643
+ 403: z.ZodObject<{
2644
+ statusCode: z.ZodNumber;
2645
+ message: z.ZodString;
2646
+ code: z.ZodString;
2647
+ details: z.ZodOptional<z.ZodUnknown>;
2648
+ timestamp: z.ZodString;
2649
+ path: z.ZodString;
2650
+ correlationId: z.ZodOptional<z.ZodString>;
2651
+ }, "strip", z.ZodTypeAny, {
2652
+ message: string;
2653
+ code: string;
2654
+ path: string;
2655
+ statusCode: number;
2656
+ timestamp: string;
2657
+ details?: unknown;
2658
+ correlationId?: string | undefined;
2659
+ }, {
2660
+ message: string;
2661
+ code: string;
2662
+ path: string;
2663
+ statusCode: number;
2664
+ timestamp: string;
2665
+ details?: unknown;
2666
+ correlationId?: string | undefined;
2667
+ }>;
2668
+ 500: z.ZodObject<{
2669
+ statusCode: z.ZodNumber;
2670
+ message: z.ZodString;
2671
+ code: z.ZodString;
2672
+ details: z.ZodOptional<z.ZodUnknown>;
2673
+ timestamp: z.ZodString;
2674
+ path: z.ZodString;
2675
+ correlationId: z.ZodOptional<z.ZodString>;
2676
+ }, "strip", z.ZodTypeAny, {
2677
+ message: string;
2678
+ code: string;
2679
+ path: string;
2680
+ statusCode: number;
2681
+ timestamp: string;
2682
+ details?: unknown;
2683
+ correlationId?: string | undefined;
2684
+ }, {
2685
+ message: string;
2686
+ code: string;
2687
+ path: string;
2688
+ statusCode: number;
2689
+ timestamp: string;
2690
+ details?: unknown;
2691
+ correlationId?: string | undefined;
2692
+ }>;
2693
+ 200: z.ZodObject<{
2694
+ id: z.ZodString;
2695
+ kind: z.ZodEnum<["IDENTITY_MERGE", "CURATED_UPDATE", "CURATED_LINK_AUDIT"]>;
2696
+ status: z.ZodEnum<["PENDING", "CONFLICT", "AUTO_APPLIED", "CONFIRMED", "PARTIALLY_CONFIRMED", "REJECTED", "OBSOLETE"]>;
2697
+ revision: z.ZodNumber;
2698
+ confidence: z.ZodNullable<z.ZodNumber>;
2699
+ curatedWorker: z.ZodNullable<z.ZodObject<{
2700
+ id: z.ZodString;
2701
+ firstName: z.ZodString;
2702
+ lastName: z.ZodNullable<z.ZodString>;
2703
+ }, "strip", z.ZodTypeAny, {
2704
+ id: string;
2705
+ lastName: string | null;
2706
+ firstName: string;
2707
+ }, {
2708
+ id: string;
2709
+ lastName: string | null;
2710
+ firstName: string;
2711
+ }>>;
2712
+ workers: z.ZodArray<z.ZodObject<{
2713
+ id: z.ZodString;
2714
+ firstName: z.ZodString;
2715
+ lastName: z.ZodNullable<z.ZodString>;
2716
+ agentName: z.ZodNullable<z.ZodString>;
2717
+ }, "strip", z.ZodTypeAny, {
2718
+ id: string;
2719
+ lastName: string | null;
2720
+ firstName: string;
2721
+ agentName: string | null;
2722
+ }, {
2723
+ id: string;
2724
+ lastName: string | null;
2725
+ firstName: string;
2726
+ agentName: string | null;
2727
+ }>, "many">;
2728
+ evidenceBadges: z.ZodArray<z.ZodEnum<["NINO", "DOC_NUMBER", "SHARE_CODE", "EMAIL", "PHONE", "DOB_NAME", "AI"]>, "many">;
2729
+ conflicts: z.ZodArray<z.ZodString, "many">;
2730
+ hasHardEvidence: z.ZodBoolean;
2731
+ linkAudit: z.ZodNullable<z.ZodObject<{
2732
+ suggestedAction: z.ZodLiteral<"UNLINK">;
2733
+ reasons: z.ZodArray<z.ZodEnum<["NAME_MISMATCH", "NINO_CONFLICT", "DOB_CONFLICT", "NO_SUPPORTING_EVIDENCE", "WEAK_PHONE_ONLY"]>, "many">;
2734
+ }, "strip", z.ZodTypeAny, {
2735
+ suggestedAction: "UNLINK";
2736
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
2737
+ }, {
2738
+ suggestedAction: "UNLINK";
2739
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
2740
+ }>>;
2741
+ createdAt: z.ZodString;
2742
+ } & {
2743
+ edges: z.ZodArray<z.ZodObject<{
2744
+ workerId: z.ZodString;
2745
+ targetType: z.ZodEnum<["CURATED", "WORKER"]>;
2746
+ targetId: z.ZodString;
2747
+ signals: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2748
+ conflicts: z.ZodArray<z.ZodString, "many">;
2749
+ nameSim: z.ZodNullable<z.ZodNumber>;
2750
+ } & {
2751
+ kind: z.ZodOptional<z.ZodEnum<["HARD", "REVIEW", "AI", "CONFLICT"]>>;
2752
+ llmVerdict: z.ZodOptional<z.ZodEnum<["SAME", "DIFFERENT", "UNSURE"]>>;
2753
+ llmReason: z.ZodOptional<z.ZodString>;
2754
+ }, "strip", z.ZodTypeAny, {
2755
+ workerId: string;
2756
+ conflicts: string[];
2757
+ targetType: "WORKER" | "CURATED";
2758
+ targetId: string;
2759
+ signals: Record<string, unknown>;
2760
+ nameSim: number | null;
2761
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
2762
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
2763
+ llmReason?: string | undefined;
2764
+ }, {
2765
+ workerId: string;
2766
+ conflicts: string[];
2767
+ targetType: "WORKER" | "CURATED";
2768
+ targetId: string;
2769
+ signals: Record<string, unknown>;
2770
+ nameSim: number | null;
2771
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
2772
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
2773
+ llmReason?: string | undefined;
2774
+ }>, "many">;
2775
+ /** Every curated subject of the case (evidence targets included), so
2776
+ * multi-target conflict cases can offer each as an EXISTING target. */
2777
+ curatedSubjects: z.ZodArray<z.ZodObject<{
2778
+ id: z.ZodString;
2779
+ firstName: z.ZodString;
2780
+ lastName: z.ZodNullable<z.ZodString>;
2781
+ }, "strip", z.ZodTypeAny, {
2782
+ id: string;
2783
+ lastName: string | null;
2784
+ firstName: string;
2785
+ }, {
2786
+ id: string;
2787
+ lastName: string | null;
2788
+ firstName: string;
2789
+ }>, "many">;
2790
+ pendingDocuments: z.ZodObject<{
2791
+ /** Attachments with no extraction attempt yet (await the intake sweep). */
2792
+ notExtracted: z.ZodNumber;
2793
+ /** Extractions awaiting human review (or failed and retryable). */
2794
+ awaitingReview: z.ZodNumber;
2795
+ }, "strip", z.ZodTypeAny, {
2796
+ notExtracted: number;
2797
+ awaitingReview: number;
2798
+ }, {
2799
+ notExtracted: number;
2800
+ awaitingReview: number;
2801
+ }>;
2802
+ /** The surviving case id when the requested case was absorbed; null when
2803
+ * the requested id is the live case. */
2804
+ absorbedIntoCaseId: z.ZodNullable<z.ZodString>;
2805
+ obsoleteReason: z.ZodNullable<z.ZodString>;
2806
+ reviewedAt: z.ZodNullable<z.ZodString>;
2807
+ appliedCuratedWorkerId: z.ZodNullable<z.ZodString>;
2808
+ }, "strip", z.ZodTypeAny, {
2809
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
2810
+ id: string;
2811
+ createdAt: string;
2812
+ confidence: number | null;
2813
+ workers: {
2814
+ id: string;
2815
+ lastName: string | null;
2816
+ firstName: string;
2817
+ agentName: string | null;
2818
+ }[];
2819
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
2820
+ conflicts: string[];
2821
+ reviewedAt: string | null;
2822
+ curatedWorker: {
2823
+ id: string;
2824
+ lastName: string | null;
2825
+ firstName: string;
2826
+ } | null;
2827
+ revision: number;
2828
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
2829
+ hasHardEvidence: boolean;
2830
+ linkAudit: {
2831
+ suggestedAction: "UNLINK";
2832
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
2833
+ } | null;
2834
+ edges: {
2835
+ workerId: string;
2836
+ conflicts: string[];
2837
+ targetType: "WORKER" | "CURATED";
2838
+ targetId: string;
2839
+ signals: Record<string, unknown>;
2840
+ nameSim: number | null;
2841
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
2842
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
2843
+ llmReason?: string | undefined;
2844
+ }[];
2845
+ curatedSubjects: {
2846
+ id: string;
2847
+ lastName: string | null;
2848
+ firstName: string;
2849
+ }[];
2850
+ pendingDocuments: {
2851
+ notExtracted: number;
2852
+ awaitingReview: number;
2853
+ };
2854
+ absorbedIntoCaseId: string | null;
2855
+ obsoleteReason: string | null;
2856
+ appliedCuratedWorkerId: string | null;
2857
+ }, {
2858
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
2859
+ id: string;
2860
+ createdAt: string;
2861
+ confidence: number | null;
2862
+ workers: {
2863
+ id: string;
2864
+ lastName: string | null;
2865
+ firstName: string;
2866
+ agentName: string | null;
2867
+ }[];
2868
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
2869
+ conflicts: string[];
2870
+ reviewedAt: string | null;
2871
+ curatedWorker: {
2872
+ id: string;
2873
+ lastName: string | null;
2874
+ firstName: string;
2875
+ } | null;
2876
+ revision: number;
2877
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
2878
+ hasHardEvidence: boolean;
2879
+ linkAudit: {
2880
+ suggestedAction: "UNLINK";
2881
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
2882
+ } | null;
2883
+ edges: {
2884
+ workerId: string;
2885
+ conflicts: string[];
2886
+ targetType: "WORKER" | "CURATED";
2887
+ targetId: string;
2888
+ signals: Record<string, unknown>;
2889
+ nameSim: number | null;
2890
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
2891
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
2892
+ llmReason?: string | undefined;
2893
+ }[];
2894
+ curatedSubjects: {
2895
+ id: string;
2896
+ lastName: string | null;
2897
+ firstName: string;
2898
+ }[];
2899
+ pendingDocuments: {
2900
+ notExtracted: number;
2901
+ awaitingReview: number;
2902
+ };
2903
+ absorbedIntoCaseId: string | null;
2904
+ obsoleteReason: string | null;
2905
+ appliedCuratedWorkerId: string | null;
2906
+ }>;
2907
+ 404: z.ZodObject<{
2908
+ statusCode: z.ZodNumber;
2909
+ message: z.ZodString;
2910
+ code: z.ZodString;
2911
+ details: z.ZodOptional<z.ZodUnknown>;
2912
+ timestamp: z.ZodString;
2913
+ path: z.ZodString;
2914
+ correlationId: z.ZodOptional<z.ZodString>;
2915
+ }, "strip", z.ZodTypeAny, {
2916
+ message: string;
2917
+ code: string;
2918
+ path: string;
2919
+ statusCode: number;
2920
+ timestamp: string;
2921
+ details?: unknown;
2922
+ correlationId?: string | undefined;
2923
+ }, {
2924
+ message: string;
2925
+ code: string;
2926
+ path: string;
2927
+ statusCode: number;
2928
+ timestamp: string;
2929
+ details?: unknown;
2930
+ correlationId?: string | undefined;
2931
+ }>;
2932
+ 409: z.ZodObject<{
2933
+ statusCode: z.ZodNumber;
2934
+ message: z.ZodString;
2935
+ code: z.ZodString;
2936
+ details: z.ZodOptional<z.ZodUnknown>;
2937
+ timestamp: z.ZodString;
2938
+ path: z.ZodString;
2939
+ correlationId: z.ZodOptional<z.ZodString>;
2940
+ }, "strip", z.ZodTypeAny, {
2941
+ message: string;
2942
+ code: string;
2943
+ path: string;
2944
+ statusCode: number;
2945
+ timestamp: string;
2946
+ details?: unknown;
2947
+ correlationId?: string | undefined;
2948
+ }, {
2949
+ message: string;
2950
+ code: string;
2951
+ path: string;
2952
+ statusCode: number;
2953
+ timestamp: string;
2954
+ details?: unknown;
2955
+ correlationId?: string | undefined;
2956
+ }>;
2957
+ 422: z.ZodObject<{
2958
+ statusCode: z.ZodNumber;
2959
+ message: z.ZodString;
2960
+ code: z.ZodString;
2961
+ details: z.ZodOptional<z.ZodUnknown>;
2962
+ timestamp: z.ZodString;
2963
+ path: z.ZodString;
2964
+ correlationId: z.ZodOptional<z.ZodString>;
2965
+ }, "strip", z.ZodTypeAny, {
2966
+ message: string;
2967
+ code: string;
2968
+ path: string;
2969
+ statusCode: number;
2970
+ timestamp: string;
2971
+ details?: unknown;
2972
+ correlationId?: string | undefined;
2973
+ }, {
2974
+ message: string;
2975
+ code: string;
2976
+ path: string;
2977
+ statusCode: number;
2978
+ timestamp: string;
2979
+ details?: unknown;
2980
+ correlationId?: string | undefined;
2981
+ }>;
2982
+ };
2983
+ };
2984
+ reject: {
2985
+ metadata: {
2986
+ tags: string[];
2987
+ openApi: {
2988
+ operationId: string;
2989
+ };
2990
+ };
2991
+ pathParams: z.ZodObject<{
2992
+ id: z.ZodString;
2993
+ }, "strip", z.ZodTypeAny, {
2994
+ id: string;
2995
+ }, {
2996
+ id: string;
2997
+ }>;
2998
+ summary: "Mark every candidate edge in a case as not the same (hard edges need acknowledgment)";
2999
+ method: "PATCH";
3000
+ body: z.ZodObject<{
3001
+ expectedRevision: z.ZodNumber;
3002
+ acknowledgeHardEvidence: z.ZodOptional<z.ZodBoolean>;
3003
+ reason: z.ZodOptional<z.ZodString>;
3004
+ }, "strip", z.ZodTypeAny, {
3005
+ expectedRevision: number;
3006
+ reason?: string | undefined;
3007
+ acknowledgeHardEvidence?: boolean | undefined;
3008
+ }, {
3009
+ expectedRevision: number;
3010
+ reason?: string | undefined;
3011
+ acknowledgeHardEvidence?: boolean | undefined;
3012
+ }>;
3013
+ path: "/v2/worker-identity-cases/:id/reject";
3014
+ responses: {
3015
+ 401: z.ZodObject<{
3016
+ statusCode: z.ZodNumber;
3017
+ message: z.ZodString;
3018
+ code: z.ZodString;
3019
+ details: z.ZodOptional<z.ZodUnknown>;
3020
+ timestamp: z.ZodString;
3021
+ path: z.ZodString;
3022
+ correlationId: z.ZodOptional<z.ZodString>;
3023
+ }, "strip", z.ZodTypeAny, {
3024
+ message: string;
3025
+ code: string;
3026
+ path: string;
3027
+ statusCode: number;
3028
+ timestamp: string;
3029
+ details?: unknown;
3030
+ correlationId?: string | undefined;
3031
+ }, {
3032
+ message: string;
3033
+ code: string;
3034
+ path: string;
3035
+ statusCode: number;
3036
+ timestamp: string;
3037
+ details?: unknown;
3038
+ correlationId?: string | undefined;
3039
+ }>;
3040
+ 400: z.ZodObject<{
3041
+ statusCode: z.ZodNumber;
3042
+ message: z.ZodString;
3043
+ code: z.ZodString;
3044
+ details: z.ZodOptional<z.ZodUnknown>;
3045
+ timestamp: z.ZodString;
3046
+ path: z.ZodString;
3047
+ correlationId: z.ZodOptional<z.ZodString>;
3048
+ }, "strip", z.ZodTypeAny, {
3049
+ message: string;
3050
+ code: string;
3051
+ path: string;
3052
+ statusCode: number;
3053
+ timestamp: string;
3054
+ details?: unknown;
3055
+ correlationId?: string | undefined;
3056
+ }, {
3057
+ message: string;
3058
+ code: string;
3059
+ path: string;
3060
+ statusCode: number;
3061
+ timestamp: string;
3062
+ details?: unknown;
3063
+ correlationId?: string | undefined;
3064
+ }>;
3065
+ 403: z.ZodObject<{
3066
+ statusCode: z.ZodNumber;
3067
+ message: z.ZodString;
3068
+ code: z.ZodString;
3069
+ details: z.ZodOptional<z.ZodUnknown>;
3070
+ timestamp: z.ZodString;
3071
+ path: z.ZodString;
3072
+ correlationId: z.ZodOptional<z.ZodString>;
3073
+ }, "strip", z.ZodTypeAny, {
3074
+ message: string;
3075
+ code: string;
3076
+ path: string;
3077
+ statusCode: number;
3078
+ timestamp: string;
3079
+ details?: unknown;
3080
+ correlationId?: string | undefined;
3081
+ }, {
3082
+ message: string;
3083
+ code: string;
3084
+ path: string;
3085
+ statusCode: number;
3086
+ timestamp: string;
3087
+ details?: unknown;
3088
+ correlationId?: string | undefined;
3089
+ }>;
3090
+ 500: z.ZodObject<{
3091
+ statusCode: z.ZodNumber;
3092
+ message: z.ZodString;
3093
+ code: z.ZodString;
3094
+ details: z.ZodOptional<z.ZodUnknown>;
3095
+ timestamp: z.ZodString;
3096
+ path: z.ZodString;
3097
+ correlationId: z.ZodOptional<z.ZodString>;
3098
+ }, "strip", z.ZodTypeAny, {
3099
+ message: string;
3100
+ code: string;
3101
+ path: string;
3102
+ statusCode: number;
3103
+ timestamp: string;
3104
+ details?: unknown;
3105
+ correlationId?: string | undefined;
3106
+ }, {
3107
+ message: string;
3108
+ code: string;
3109
+ path: string;
3110
+ statusCode: number;
3111
+ timestamp: string;
3112
+ details?: unknown;
3113
+ correlationId?: string | undefined;
3114
+ }>;
3115
+ 200: z.ZodObject<{
3116
+ id: z.ZodString;
3117
+ kind: z.ZodEnum<["IDENTITY_MERGE", "CURATED_UPDATE", "CURATED_LINK_AUDIT"]>;
3118
+ status: z.ZodEnum<["PENDING", "CONFLICT", "AUTO_APPLIED", "CONFIRMED", "PARTIALLY_CONFIRMED", "REJECTED", "OBSOLETE"]>;
3119
+ revision: z.ZodNumber;
3120
+ confidence: z.ZodNullable<z.ZodNumber>;
3121
+ curatedWorker: z.ZodNullable<z.ZodObject<{
3122
+ id: z.ZodString;
3123
+ firstName: z.ZodString;
3124
+ lastName: z.ZodNullable<z.ZodString>;
3125
+ }, "strip", z.ZodTypeAny, {
3126
+ id: string;
3127
+ lastName: string | null;
3128
+ firstName: string;
3129
+ }, {
3130
+ id: string;
3131
+ lastName: string | null;
3132
+ firstName: string;
3133
+ }>>;
3134
+ workers: z.ZodArray<z.ZodObject<{
3135
+ id: z.ZodString;
3136
+ firstName: z.ZodString;
3137
+ lastName: z.ZodNullable<z.ZodString>;
3138
+ agentName: z.ZodNullable<z.ZodString>;
3139
+ }, "strip", z.ZodTypeAny, {
3140
+ id: string;
3141
+ lastName: string | null;
3142
+ firstName: string;
3143
+ agentName: string | null;
3144
+ }, {
3145
+ id: string;
3146
+ lastName: string | null;
3147
+ firstName: string;
3148
+ agentName: string | null;
3149
+ }>, "many">;
3150
+ evidenceBadges: z.ZodArray<z.ZodEnum<["NINO", "DOC_NUMBER", "SHARE_CODE", "EMAIL", "PHONE", "DOB_NAME", "AI"]>, "many">;
3151
+ conflicts: z.ZodArray<z.ZodString, "many">;
3152
+ hasHardEvidence: z.ZodBoolean;
3153
+ linkAudit: z.ZodNullable<z.ZodObject<{
3154
+ suggestedAction: z.ZodLiteral<"UNLINK">;
3155
+ reasons: z.ZodArray<z.ZodEnum<["NAME_MISMATCH", "NINO_CONFLICT", "DOB_CONFLICT", "NO_SUPPORTING_EVIDENCE", "WEAK_PHONE_ONLY"]>, "many">;
3156
+ }, "strip", z.ZodTypeAny, {
3157
+ suggestedAction: "UNLINK";
3158
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
3159
+ }, {
3160
+ suggestedAction: "UNLINK";
3161
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
3162
+ }>>;
3163
+ createdAt: z.ZodString;
3164
+ } & {
3165
+ edges: z.ZodArray<z.ZodObject<{
3166
+ workerId: z.ZodString;
3167
+ targetType: z.ZodEnum<["CURATED", "WORKER"]>;
3168
+ targetId: z.ZodString;
3169
+ signals: z.ZodRecord<z.ZodString, z.ZodUnknown>;
3170
+ conflicts: z.ZodArray<z.ZodString, "many">;
3171
+ nameSim: z.ZodNullable<z.ZodNumber>;
3172
+ } & {
3173
+ kind: z.ZodOptional<z.ZodEnum<["HARD", "REVIEW", "AI", "CONFLICT"]>>;
3174
+ llmVerdict: z.ZodOptional<z.ZodEnum<["SAME", "DIFFERENT", "UNSURE"]>>;
3175
+ llmReason: z.ZodOptional<z.ZodString>;
3176
+ }, "strip", z.ZodTypeAny, {
3177
+ workerId: string;
3178
+ conflicts: string[];
3179
+ targetType: "WORKER" | "CURATED";
3180
+ targetId: string;
3181
+ signals: Record<string, unknown>;
3182
+ nameSim: number | null;
3183
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
3184
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
3185
+ llmReason?: string | undefined;
3186
+ }, {
3187
+ workerId: string;
3188
+ conflicts: string[];
3189
+ targetType: "WORKER" | "CURATED";
3190
+ targetId: string;
3191
+ signals: Record<string, unknown>;
3192
+ nameSim: number | null;
3193
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
3194
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
3195
+ llmReason?: string | undefined;
3196
+ }>, "many">;
3197
+ /** Every curated subject of the case (evidence targets included), so
3198
+ * multi-target conflict cases can offer each as an EXISTING target. */
3199
+ curatedSubjects: z.ZodArray<z.ZodObject<{
3200
+ id: z.ZodString;
3201
+ firstName: z.ZodString;
3202
+ lastName: z.ZodNullable<z.ZodString>;
3203
+ }, "strip", z.ZodTypeAny, {
3204
+ id: string;
3205
+ lastName: string | null;
3206
+ firstName: string;
3207
+ }, {
3208
+ id: string;
3209
+ lastName: string | null;
3210
+ firstName: string;
3211
+ }>, "many">;
3212
+ pendingDocuments: z.ZodObject<{
3213
+ /** Attachments with no extraction attempt yet (await the intake sweep). */
3214
+ notExtracted: z.ZodNumber;
3215
+ /** Extractions awaiting human review (or failed and retryable). */
3216
+ awaitingReview: z.ZodNumber;
3217
+ }, "strip", z.ZodTypeAny, {
3218
+ notExtracted: number;
3219
+ awaitingReview: number;
3220
+ }, {
3221
+ notExtracted: number;
3222
+ awaitingReview: number;
3223
+ }>;
3224
+ /** The surviving case id when the requested case was absorbed; null when
3225
+ * the requested id is the live case. */
3226
+ absorbedIntoCaseId: z.ZodNullable<z.ZodString>;
3227
+ obsoleteReason: z.ZodNullable<z.ZodString>;
3228
+ reviewedAt: z.ZodNullable<z.ZodString>;
3229
+ appliedCuratedWorkerId: z.ZodNullable<z.ZodString>;
3230
+ }, "strip", z.ZodTypeAny, {
3231
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
3232
+ id: string;
3233
+ createdAt: string;
3234
+ confidence: number | null;
3235
+ workers: {
3236
+ id: string;
3237
+ lastName: string | null;
3238
+ firstName: string;
3239
+ agentName: string | null;
3240
+ }[];
3241
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
3242
+ conflicts: string[];
3243
+ reviewedAt: string | null;
3244
+ curatedWorker: {
3245
+ id: string;
3246
+ lastName: string | null;
3247
+ firstName: string;
3248
+ } | null;
3249
+ revision: number;
3250
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
3251
+ hasHardEvidence: boolean;
3252
+ linkAudit: {
3253
+ suggestedAction: "UNLINK";
3254
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
3255
+ } | null;
3256
+ edges: {
3257
+ workerId: string;
3258
+ conflicts: string[];
3259
+ targetType: "WORKER" | "CURATED";
3260
+ targetId: string;
3261
+ signals: Record<string, unknown>;
3262
+ nameSim: number | null;
3263
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
3264
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
3265
+ llmReason?: string | undefined;
3266
+ }[];
3267
+ curatedSubjects: {
3268
+ id: string;
3269
+ lastName: string | null;
3270
+ firstName: string;
3271
+ }[];
3272
+ pendingDocuments: {
3273
+ notExtracted: number;
3274
+ awaitingReview: number;
3275
+ };
3276
+ absorbedIntoCaseId: string | null;
3277
+ obsoleteReason: string | null;
3278
+ appliedCuratedWorkerId: string | null;
3279
+ }, {
3280
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
3281
+ id: string;
3282
+ createdAt: string;
3283
+ confidence: number | null;
3284
+ workers: {
3285
+ id: string;
3286
+ lastName: string | null;
3287
+ firstName: string;
3288
+ agentName: string | null;
3289
+ }[];
3290
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
3291
+ conflicts: string[];
3292
+ reviewedAt: string | null;
3293
+ curatedWorker: {
3294
+ id: string;
3295
+ lastName: string | null;
3296
+ firstName: string;
3297
+ } | null;
3298
+ revision: number;
3299
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
3300
+ hasHardEvidence: boolean;
3301
+ linkAudit: {
3302
+ suggestedAction: "UNLINK";
3303
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
3304
+ } | null;
3305
+ edges: {
3306
+ workerId: string;
3307
+ conflicts: string[];
3308
+ targetType: "WORKER" | "CURATED";
3309
+ targetId: string;
3310
+ signals: Record<string, unknown>;
3311
+ nameSim: number | null;
3312
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
3313
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
3314
+ llmReason?: string | undefined;
3315
+ }[];
3316
+ curatedSubjects: {
3317
+ id: string;
3318
+ lastName: string | null;
3319
+ firstName: string;
3320
+ }[];
3321
+ pendingDocuments: {
3322
+ notExtracted: number;
3323
+ awaitingReview: number;
3324
+ };
3325
+ absorbedIntoCaseId: string | null;
3326
+ obsoleteReason: string | null;
3327
+ appliedCuratedWorkerId: string | null;
3328
+ }>;
3329
+ 404: z.ZodObject<{
3330
+ statusCode: z.ZodNumber;
3331
+ message: z.ZodString;
3332
+ code: z.ZodString;
3333
+ details: z.ZodOptional<z.ZodUnknown>;
3334
+ timestamp: z.ZodString;
3335
+ path: z.ZodString;
3336
+ correlationId: z.ZodOptional<z.ZodString>;
3337
+ }, "strip", z.ZodTypeAny, {
3338
+ message: string;
3339
+ code: string;
3340
+ path: string;
3341
+ statusCode: number;
3342
+ timestamp: string;
3343
+ details?: unknown;
3344
+ correlationId?: string | undefined;
3345
+ }, {
3346
+ message: string;
3347
+ code: string;
3348
+ path: string;
3349
+ statusCode: number;
3350
+ timestamp: string;
3351
+ details?: unknown;
3352
+ correlationId?: string | undefined;
3353
+ }>;
3354
+ 409: z.ZodObject<{
3355
+ statusCode: z.ZodNumber;
3356
+ message: z.ZodString;
3357
+ code: z.ZodString;
3358
+ details: z.ZodOptional<z.ZodUnknown>;
3359
+ timestamp: z.ZodString;
3360
+ path: z.ZodString;
3361
+ correlationId: z.ZodOptional<z.ZodString>;
3362
+ }, "strip", z.ZodTypeAny, {
3363
+ message: string;
3364
+ code: string;
3365
+ path: string;
3366
+ statusCode: number;
3367
+ timestamp: string;
3368
+ details?: unknown;
3369
+ correlationId?: string | undefined;
3370
+ }, {
3371
+ message: string;
3372
+ code: string;
3373
+ path: string;
3374
+ statusCode: number;
3375
+ timestamp: string;
3376
+ details?: unknown;
3377
+ correlationId?: string | undefined;
3378
+ }>;
3379
+ 422: z.ZodObject<{
3380
+ statusCode: z.ZodNumber;
3381
+ message: z.ZodString;
3382
+ code: z.ZodString;
3383
+ details: z.ZodOptional<z.ZodUnknown>;
3384
+ timestamp: z.ZodString;
3385
+ path: z.ZodString;
3386
+ correlationId: z.ZodOptional<z.ZodString>;
3387
+ }, "strip", z.ZodTypeAny, {
3388
+ message: string;
3389
+ code: string;
3390
+ path: string;
3391
+ statusCode: number;
3392
+ timestamp: string;
3393
+ details?: unknown;
3394
+ correlationId?: string | undefined;
3395
+ }, {
3396
+ message: string;
3397
+ code: string;
3398
+ path: string;
3399
+ statusCode: number;
3400
+ timestamp: string;
3401
+ details?: unknown;
3402
+ correlationId?: string | undefined;
3403
+ }>;
3404
+ };
3405
+ };
3406
+ resolveValues: {
3407
+ metadata: {
3408
+ tags: string[];
3409
+ openApi: {
3410
+ operationId: string;
3411
+ };
3412
+ };
3413
+ pathParams: z.ZodObject<{
3414
+ id: z.ZodString;
3415
+ }, "strip", z.ZodTypeAny, {
3416
+ id: string;
3417
+ }, {
3418
+ id: string;
3419
+ }>;
3420
+ summary: "Preview the standard merge policy's field choices for a selection (seeds hand-tuning)";
3421
+ method: "POST";
3422
+ body: z.ZodObject<{
3423
+ selectedWorkerIds: z.ZodArray<z.ZodString, "many">;
3424
+ target: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
3425
+ type: z.ZodLiteral<"EXISTING">;
3426
+ curatedWorkerId: z.ZodString;
3427
+ }, "strip", z.ZodTypeAny, {
3428
+ type: "EXISTING";
3429
+ curatedWorkerId: string;
3430
+ }, {
3431
+ type: "EXISTING";
3432
+ curatedWorkerId: string;
3433
+ }>, z.ZodObject<{
3434
+ type: z.ZodLiteral<"NEW">;
3435
+ }, "strip", z.ZodTypeAny, {
3436
+ type: "NEW";
3437
+ }, {
3438
+ type: "NEW";
3439
+ }>]>;
3440
+ }, "strip", z.ZodTypeAny, {
3441
+ target: {
3442
+ type: "EXISTING";
3443
+ curatedWorkerId: string;
3444
+ } | {
3445
+ type: "NEW";
3446
+ };
3447
+ selectedWorkerIds: string[];
3448
+ }, {
3449
+ target: {
3450
+ type: "EXISTING";
3451
+ curatedWorkerId: string;
3452
+ } | {
3453
+ type: "NEW";
3454
+ };
3455
+ selectedWorkerIds: string[];
3456
+ }>;
3457
+ path: "/v2/worker-identity-cases/:id/resolve-values";
3458
+ responses: {
3459
+ 401: z.ZodObject<{
3460
+ statusCode: z.ZodNumber;
3461
+ message: z.ZodString;
3462
+ code: z.ZodString;
3463
+ details: z.ZodOptional<z.ZodUnknown>;
3464
+ timestamp: z.ZodString;
3465
+ path: z.ZodString;
3466
+ correlationId: z.ZodOptional<z.ZodString>;
3467
+ }, "strip", z.ZodTypeAny, {
3468
+ message: string;
3469
+ code: string;
3470
+ path: string;
3471
+ statusCode: number;
3472
+ timestamp: string;
3473
+ details?: unknown;
3474
+ correlationId?: string | undefined;
3475
+ }, {
3476
+ message: string;
3477
+ code: string;
3478
+ path: string;
3479
+ statusCode: number;
3480
+ timestamp: string;
3481
+ details?: unknown;
3482
+ correlationId?: string | undefined;
3483
+ }>;
3484
+ 400: z.ZodObject<{
3485
+ statusCode: z.ZodNumber;
3486
+ message: z.ZodString;
3487
+ code: z.ZodString;
3488
+ details: z.ZodOptional<z.ZodUnknown>;
3489
+ timestamp: z.ZodString;
3490
+ path: z.ZodString;
3491
+ correlationId: z.ZodOptional<z.ZodString>;
3492
+ }, "strip", z.ZodTypeAny, {
3493
+ message: string;
3494
+ code: string;
3495
+ path: string;
3496
+ statusCode: number;
3497
+ timestamp: string;
3498
+ details?: unknown;
3499
+ correlationId?: string | undefined;
3500
+ }, {
3501
+ message: string;
3502
+ code: string;
3503
+ path: string;
3504
+ statusCode: number;
3505
+ timestamp: string;
3506
+ details?: unknown;
3507
+ correlationId?: string | undefined;
3508
+ }>;
3509
+ 403: z.ZodObject<{
3510
+ statusCode: z.ZodNumber;
3511
+ message: z.ZodString;
3512
+ code: z.ZodString;
3513
+ details: z.ZodOptional<z.ZodUnknown>;
3514
+ timestamp: z.ZodString;
3515
+ path: z.ZodString;
3516
+ correlationId: z.ZodOptional<z.ZodString>;
3517
+ }, "strip", z.ZodTypeAny, {
3518
+ message: string;
3519
+ code: string;
3520
+ path: string;
3521
+ statusCode: number;
3522
+ timestamp: string;
3523
+ details?: unknown;
3524
+ correlationId?: string | undefined;
3525
+ }, {
3526
+ message: string;
3527
+ code: string;
3528
+ path: string;
3529
+ statusCode: number;
3530
+ timestamp: string;
3531
+ details?: unknown;
3532
+ correlationId?: string | undefined;
3533
+ }>;
3534
+ 500: z.ZodObject<{
3535
+ statusCode: z.ZodNumber;
3536
+ message: z.ZodString;
3537
+ code: z.ZodString;
3538
+ details: z.ZodOptional<z.ZodUnknown>;
3539
+ timestamp: z.ZodString;
3540
+ path: z.ZodString;
3541
+ correlationId: z.ZodOptional<z.ZodString>;
3542
+ }, "strip", z.ZodTypeAny, {
3543
+ message: string;
3544
+ code: string;
3545
+ path: string;
3546
+ statusCode: number;
3547
+ timestamp: string;
3548
+ details?: unknown;
3549
+ correlationId?: string | undefined;
3550
+ }, {
3551
+ message: string;
3552
+ code: string;
3553
+ path: string;
3554
+ statusCode: number;
3555
+ timestamp: string;
3556
+ details?: unknown;
3557
+ correlationId?: string | undefined;
3558
+ }>;
3559
+ 200: z.ZodObject<{
3560
+ firstName: z.ZodNullable<z.ZodString>;
3561
+ lastName: z.ZodNullable<z.ZodString>;
3562
+ email: z.ZodNullable<z.ZodString>;
3563
+ nino: z.ZodNullable<z.ZodString>;
3564
+ shareCode: z.ZodNullable<z.ZodString>;
3565
+ dateOfBirth: z.ZodNullable<z.ZodString>;
3566
+ bio: z.ZodNullable<z.ZodString>;
3567
+ hasTools: z.ZodBoolean;
3568
+ hasPpe: z.ZodBoolean;
3569
+ englishLevel: z.ZodNullable<z.ZodString>;
3570
+ nationality: z.ZodNullable<z.ZodString>;
3571
+ locationId: z.ZodNullable<z.ZodString>;
3572
+ phoneNumbers: z.ZodArray<z.ZodString, "many">;
3573
+ tradeIds: z.ZodArray<z.ZodString, "many">;
3574
+ mainTradeId: z.ZodNullable<z.ZodString>;
3575
+ }, "strip", z.ZodTypeAny, {
3576
+ email: string | null;
3577
+ lastName: string | null;
3578
+ firstName: string | null;
3579
+ phoneNumbers: string[];
3580
+ englishLevel: string | null;
3581
+ nationality: string | null;
3582
+ hasTools: boolean;
3583
+ hasPpe: boolean;
3584
+ dateOfBirth: string | null;
3585
+ bio: string | null;
3586
+ nino: string | null;
3587
+ shareCode: string | null;
3588
+ tradeIds: string[];
3589
+ locationId: string | null;
3590
+ mainTradeId: string | null;
3591
+ }, {
3592
+ email: string | null;
3593
+ lastName: string | null;
3594
+ firstName: string | null;
3595
+ phoneNumbers: string[];
3596
+ englishLevel: string | null;
3597
+ nationality: string | null;
3598
+ hasTools: boolean;
3599
+ hasPpe: boolean;
3600
+ dateOfBirth: string | null;
3601
+ bio: string | null;
3602
+ nino: string | null;
3603
+ shareCode: string | null;
3604
+ tradeIds: string[];
3605
+ locationId: string | null;
3606
+ mainTradeId: string | null;
3607
+ }>;
3608
+ 404: z.ZodObject<{
3609
+ statusCode: z.ZodNumber;
3610
+ message: z.ZodString;
3611
+ code: z.ZodString;
3612
+ details: z.ZodOptional<z.ZodUnknown>;
3613
+ timestamp: z.ZodString;
3614
+ path: z.ZodString;
3615
+ correlationId: z.ZodOptional<z.ZodString>;
3616
+ }, "strip", z.ZodTypeAny, {
3617
+ message: string;
3618
+ code: string;
3619
+ path: string;
3620
+ statusCode: number;
3621
+ timestamp: string;
3622
+ details?: unknown;
3623
+ correlationId?: string | undefined;
3624
+ }, {
3625
+ message: string;
3626
+ code: string;
3627
+ path: string;
3628
+ statusCode: number;
3629
+ timestamp: string;
3630
+ details?: unknown;
3631
+ correlationId?: string | undefined;
3632
+ }>;
3633
+ 409: z.ZodObject<{
3634
+ statusCode: z.ZodNumber;
3635
+ message: z.ZodString;
3636
+ code: z.ZodString;
3637
+ details: z.ZodOptional<z.ZodUnknown>;
3638
+ timestamp: z.ZodString;
3639
+ path: z.ZodString;
3640
+ correlationId: z.ZodOptional<z.ZodString>;
3641
+ }, "strip", z.ZodTypeAny, {
3642
+ message: string;
3643
+ code: string;
3644
+ path: string;
3645
+ statusCode: number;
3646
+ timestamp: string;
3647
+ details?: unknown;
3648
+ correlationId?: string | undefined;
3649
+ }, {
3650
+ message: string;
3651
+ code: string;
3652
+ path: string;
3653
+ statusCode: number;
3654
+ timestamp: string;
3655
+ details?: unknown;
3656
+ correlationId?: string | undefined;
3657
+ }>;
3658
+ };
3659
+ };
3660
+ refresh: {
3661
+ metadata: {
3662
+ tags: string[];
3663
+ openApi: {
3664
+ operationId: string;
3665
+ };
3666
+ };
3667
+ pathParams: z.ZodObject<{
3668
+ id: z.ZodString;
3669
+ }, "strip", z.ZodTypeAny, {
3670
+ id: string;
3671
+ }, {
3672
+ id: string;
3673
+ }>;
3674
+ summary: "Recompute a stale open case before review";
3675
+ method: "POST";
3676
+ body: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
3677
+ path: "/v2/worker-identity-cases/:id/refresh";
3678
+ responses: {
3679
+ 401: z.ZodObject<{
3680
+ statusCode: z.ZodNumber;
3681
+ message: z.ZodString;
3682
+ code: z.ZodString;
3683
+ details: z.ZodOptional<z.ZodUnknown>;
3684
+ timestamp: z.ZodString;
3685
+ path: z.ZodString;
3686
+ correlationId: z.ZodOptional<z.ZodString>;
3687
+ }, "strip", z.ZodTypeAny, {
3688
+ message: string;
3689
+ code: string;
3690
+ path: string;
3691
+ statusCode: number;
3692
+ timestamp: string;
3693
+ details?: unknown;
3694
+ correlationId?: string | undefined;
3695
+ }, {
3696
+ message: string;
3697
+ code: string;
3698
+ path: string;
3699
+ statusCode: number;
3700
+ timestamp: string;
3701
+ details?: unknown;
3702
+ correlationId?: string | undefined;
3703
+ }>;
3704
+ 400: z.ZodObject<{
3705
+ statusCode: z.ZodNumber;
3706
+ message: z.ZodString;
3707
+ code: z.ZodString;
3708
+ details: z.ZodOptional<z.ZodUnknown>;
3709
+ timestamp: z.ZodString;
3710
+ path: z.ZodString;
3711
+ correlationId: z.ZodOptional<z.ZodString>;
3712
+ }, "strip", z.ZodTypeAny, {
3713
+ message: string;
3714
+ code: string;
3715
+ path: string;
3716
+ statusCode: number;
3717
+ timestamp: string;
3718
+ details?: unknown;
3719
+ correlationId?: string | undefined;
3720
+ }, {
3721
+ message: string;
3722
+ code: string;
3723
+ path: string;
3724
+ statusCode: number;
3725
+ timestamp: string;
3726
+ details?: unknown;
3727
+ correlationId?: string | undefined;
3728
+ }>;
3729
+ 403: z.ZodObject<{
3730
+ statusCode: z.ZodNumber;
3731
+ message: z.ZodString;
3732
+ code: z.ZodString;
3733
+ details: z.ZodOptional<z.ZodUnknown>;
3734
+ timestamp: z.ZodString;
3735
+ path: z.ZodString;
3736
+ correlationId: z.ZodOptional<z.ZodString>;
3737
+ }, "strip", z.ZodTypeAny, {
3738
+ message: string;
3739
+ code: string;
3740
+ path: string;
3741
+ statusCode: number;
3742
+ timestamp: string;
3743
+ details?: unknown;
3744
+ correlationId?: string | undefined;
3745
+ }, {
3746
+ message: string;
3747
+ code: string;
3748
+ path: string;
3749
+ statusCode: number;
3750
+ timestamp: string;
3751
+ details?: unknown;
3752
+ correlationId?: string | undefined;
3753
+ }>;
3754
+ 500: z.ZodObject<{
3755
+ statusCode: z.ZodNumber;
3756
+ message: z.ZodString;
3757
+ code: z.ZodString;
3758
+ details: z.ZodOptional<z.ZodUnknown>;
3759
+ timestamp: z.ZodString;
3760
+ path: z.ZodString;
3761
+ correlationId: z.ZodOptional<z.ZodString>;
3762
+ }, "strip", z.ZodTypeAny, {
3763
+ message: string;
3764
+ code: string;
3765
+ path: string;
3766
+ statusCode: number;
3767
+ timestamp: string;
3768
+ details?: unknown;
3769
+ correlationId?: string | undefined;
3770
+ }, {
3771
+ message: string;
3772
+ code: string;
3773
+ path: string;
3774
+ statusCode: number;
3775
+ timestamp: string;
3776
+ details?: unknown;
3777
+ correlationId?: string | undefined;
3778
+ }>;
3779
+ 200: z.ZodObject<{
3780
+ id: z.ZodString;
3781
+ kind: z.ZodEnum<["IDENTITY_MERGE", "CURATED_UPDATE", "CURATED_LINK_AUDIT"]>;
3782
+ status: z.ZodEnum<["PENDING", "CONFLICT", "AUTO_APPLIED", "CONFIRMED", "PARTIALLY_CONFIRMED", "REJECTED", "OBSOLETE"]>;
3783
+ revision: z.ZodNumber;
3784
+ confidence: z.ZodNullable<z.ZodNumber>;
3785
+ curatedWorker: z.ZodNullable<z.ZodObject<{
3786
+ id: z.ZodString;
3787
+ firstName: z.ZodString;
3788
+ lastName: z.ZodNullable<z.ZodString>;
3789
+ }, "strip", z.ZodTypeAny, {
3790
+ id: string;
3791
+ lastName: string | null;
3792
+ firstName: string;
3793
+ }, {
3794
+ id: string;
3795
+ lastName: string | null;
3796
+ firstName: string;
3797
+ }>>;
3798
+ workers: z.ZodArray<z.ZodObject<{
3799
+ id: z.ZodString;
3800
+ firstName: z.ZodString;
3801
+ lastName: z.ZodNullable<z.ZodString>;
3802
+ agentName: z.ZodNullable<z.ZodString>;
3803
+ }, "strip", z.ZodTypeAny, {
3804
+ id: string;
3805
+ lastName: string | null;
3806
+ firstName: string;
3807
+ agentName: string | null;
3808
+ }, {
3809
+ id: string;
3810
+ lastName: string | null;
3811
+ firstName: string;
3812
+ agentName: string | null;
3813
+ }>, "many">;
3814
+ evidenceBadges: z.ZodArray<z.ZodEnum<["NINO", "DOC_NUMBER", "SHARE_CODE", "EMAIL", "PHONE", "DOB_NAME", "AI"]>, "many">;
3815
+ conflicts: z.ZodArray<z.ZodString, "many">;
3816
+ hasHardEvidence: z.ZodBoolean;
3817
+ linkAudit: z.ZodNullable<z.ZodObject<{
3818
+ suggestedAction: z.ZodLiteral<"UNLINK">;
3819
+ reasons: z.ZodArray<z.ZodEnum<["NAME_MISMATCH", "NINO_CONFLICT", "DOB_CONFLICT", "NO_SUPPORTING_EVIDENCE", "WEAK_PHONE_ONLY"]>, "many">;
3820
+ }, "strip", z.ZodTypeAny, {
3821
+ suggestedAction: "UNLINK";
3822
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
3823
+ }, {
3824
+ suggestedAction: "UNLINK";
3825
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
3826
+ }>>;
3827
+ createdAt: z.ZodString;
3828
+ } & {
3829
+ edges: z.ZodArray<z.ZodObject<{
3830
+ workerId: z.ZodString;
3831
+ targetType: z.ZodEnum<["CURATED", "WORKER"]>;
3832
+ targetId: z.ZodString;
3833
+ signals: z.ZodRecord<z.ZodString, z.ZodUnknown>;
3834
+ conflicts: z.ZodArray<z.ZodString, "many">;
3835
+ nameSim: z.ZodNullable<z.ZodNumber>;
3836
+ } & {
3837
+ kind: z.ZodOptional<z.ZodEnum<["HARD", "REVIEW", "AI", "CONFLICT"]>>;
3838
+ llmVerdict: z.ZodOptional<z.ZodEnum<["SAME", "DIFFERENT", "UNSURE"]>>;
3839
+ llmReason: z.ZodOptional<z.ZodString>;
3840
+ }, "strip", z.ZodTypeAny, {
3841
+ workerId: string;
3842
+ conflicts: string[];
3843
+ targetType: "WORKER" | "CURATED";
3844
+ targetId: string;
3845
+ signals: Record<string, unknown>;
3846
+ nameSim: number | null;
3847
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
3848
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
3849
+ llmReason?: string | undefined;
3850
+ }, {
3851
+ workerId: string;
3852
+ conflicts: string[];
3853
+ targetType: "WORKER" | "CURATED";
3854
+ targetId: string;
3855
+ signals: Record<string, unknown>;
3856
+ nameSim: number | null;
3857
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
3858
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
3859
+ llmReason?: string | undefined;
3860
+ }>, "many">;
3861
+ /** Every curated subject of the case (evidence targets included), so
3862
+ * multi-target conflict cases can offer each as an EXISTING target. */
3863
+ curatedSubjects: z.ZodArray<z.ZodObject<{
3864
+ id: z.ZodString;
3865
+ firstName: z.ZodString;
3866
+ lastName: z.ZodNullable<z.ZodString>;
3867
+ }, "strip", z.ZodTypeAny, {
3868
+ id: string;
3869
+ lastName: string | null;
3870
+ firstName: string;
3871
+ }, {
3872
+ id: string;
3873
+ lastName: string | null;
3874
+ firstName: string;
3875
+ }>, "many">;
3876
+ pendingDocuments: z.ZodObject<{
3877
+ /** Attachments with no extraction attempt yet (await the intake sweep). */
3878
+ notExtracted: z.ZodNumber;
3879
+ /** Extractions awaiting human review (or failed and retryable). */
3880
+ awaitingReview: z.ZodNumber;
3881
+ }, "strip", z.ZodTypeAny, {
3882
+ notExtracted: number;
3883
+ awaitingReview: number;
3884
+ }, {
3885
+ notExtracted: number;
3886
+ awaitingReview: number;
3887
+ }>;
3888
+ /** The surviving case id when the requested case was absorbed; null when
3889
+ * the requested id is the live case. */
3890
+ absorbedIntoCaseId: z.ZodNullable<z.ZodString>;
3891
+ obsoleteReason: z.ZodNullable<z.ZodString>;
3892
+ reviewedAt: z.ZodNullable<z.ZodString>;
3893
+ appliedCuratedWorkerId: z.ZodNullable<z.ZodString>;
3894
+ }, "strip", z.ZodTypeAny, {
3895
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
3896
+ id: string;
3897
+ createdAt: string;
3898
+ confidence: number | null;
3899
+ workers: {
3900
+ id: string;
3901
+ lastName: string | null;
3902
+ firstName: string;
3903
+ agentName: string | null;
3904
+ }[];
3905
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
3906
+ conflicts: string[];
3907
+ reviewedAt: string | null;
3908
+ curatedWorker: {
3909
+ id: string;
3910
+ lastName: string | null;
3911
+ firstName: string;
3912
+ } | null;
3913
+ revision: number;
3914
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
3915
+ hasHardEvidence: boolean;
3916
+ linkAudit: {
3917
+ suggestedAction: "UNLINK";
3918
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
3919
+ } | null;
3920
+ edges: {
3921
+ workerId: string;
3922
+ conflicts: string[];
3923
+ targetType: "WORKER" | "CURATED";
3924
+ targetId: string;
3925
+ signals: Record<string, unknown>;
3926
+ nameSim: number | null;
3927
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
3928
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
3929
+ llmReason?: string | undefined;
3930
+ }[];
3931
+ curatedSubjects: {
3932
+ id: string;
3933
+ lastName: string | null;
3934
+ firstName: string;
3935
+ }[];
3936
+ pendingDocuments: {
3937
+ notExtracted: number;
3938
+ awaitingReview: number;
3939
+ };
3940
+ absorbedIntoCaseId: string | null;
3941
+ obsoleteReason: string | null;
3942
+ appliedCuratedWorkerId: string | null;
3943
+ }, {
3944
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
3945
+ id: string;
3946
+ createdAt: string;
3947
+ confidence: number | null;
3948
+ workers: {
3949
+ id: string;
3950
+ lastName: string | null;
3951
+ firstName: string;
3952
+ agentName: string | null;
3953
+ }[];
3954
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
3955
+ conflicts: string[];
3956
+ reviewedAt: string | null;
3957
+ curatedWorker: {
3958
+ id: string;
3959
+ lastName: string | null;
3960
+ firstName: string;
3961
+ } | null;
3962
+ revision: number;
3963
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
3964
+ hasHardEvidence: boolean;
3965
+ linkAudit: {
3966
+ suggestedAction: "UNLINK";
3967
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
3968
+ } | null;
3969
+ edges: {
3970
+ workerId: string;
3971
+ conflicts: string[];
3972
+ targetType: "WORKER" | "CURATED";
3973
+ targetId: string;
3974
+ signals: Record<string, unknown>;
3975
+ nameSim: number | null;
3976
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
3977
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
3978
+ llmReason?: string | undefined;
3979
+ }[];
3980
+ curatedSubjects: {
3981
+ id: string;
3982
+ lastName: string | null;
3983
+ firstName: string;
3984
+ }[];
3985
+ pendingDocuments: {
3986
+ notExtracted: number;
3987
+ awaitingReview: number;
3988
+ };
3989
+ absorbedIntoCaseId: string | null;
3990
+ obsoleteReason: string | null;
3991
+ appliedCuratedWorkerId: string | null;
3992
+ }>;
3993
+ 404: z.ZodObject<{
3994
+ statusCode: z.ZodNumber;
3995
+ message: z.ZodString;
3996
+ code: z.ZodString;
3997
+ details: z.ZodOptional<z.ZodUnknown>;
3998
+ timestamp: z.ZodString;
3999
+ path: z.ZodString;
4000
+ correlationId: z.ZodOptional<z.ZodString>;
4001
+ }, "strip", z.ZodTypeAny, {
4002
+ message: string;
4003
+ code: string;
4004
+ path: string;
4005
+ statusCode: number;
4006
+ timestamp: string;
4007
+ details?: unknown;
4008
+ correlationId?: string | undefined;
4009
+ }, {
4010
+ message: string;
4011
+ code: string;
4012
+ path: string;
4013
+ statusCode: number;
4014
+ timestamp: string;
4015
+ details?: unknown;
4016
+ correlationId?: string | undefined;
4017
+ }>;
4018
+ };
4019
+ };
4020
+ resolveLinkAudit: {
4021
+ metadata: {
4022
+ tags: string[];
4023
+ openApi: {
4024
+ operationId: string;
4025
+ };
4026
+ };
4027
+ pathParams: z.ZodObject<{
4028
+ id: z.ZodString;
4029
+ }, "strip", z.ZodTypeAny, {
4030
+ id: string;
4031
+ }, {
4032
+ id: string;
4033
+ }>;
4034
+ summary: "Keep, unlink, move, or replace a curated-worker link audit suggestion";
4035
+ method: "PATCH";
4036
+ body: z.ZodDiscriminatedUnion<"action", [z.ZodObject<{
4037
+ action: z.ZodLiteral<"KEEP_CURRENT">;
4038
+ expectedRevision: z.ZodNumber;
4039
+ reason: z.ZodOptional<z.ZodString>;
4040
+ }, "strip", z.ZodTypeAny, {
4041
+ action: "KEEP_CURRENT";
4042
+ expectedRevision: number;
4043
+ reason?: string | undefined;
4044
+ }, {
4045
+ action: "KEEP_CURRENT";
4046
+ expectedRevision: number;
4047
+ reason?: string | undefined;
4048
+ }>, z.ZodObject<{
4049
+ action: z.ZodLiteral<"UNLINK_REPROCESS">;
4050
+ expectedRevision: z.ZodNumber;
4051
+ reason: z.ZodOptional<z.ZodString>;
4052
+ }, "strip", z.ZodTypeAny, {
4053
+ action: "UNLINK_REPROCESS";
4054
+ expectedRevision: number;
4055
+ reason?: string | undefined;
4056
+ }, {
4057
+ action: "UNLINK_REPROCESS";
4058
+ expectedRevision: number;
4059
+ reason?: string | undefined;
4060
+ }>, z.ZodObject<{
4061
+ action: z.ZodLiteral<"MOVE">;
4062
+ expectedRevision: z.ZodNumber;
4063
+ curatedWorkerId: z.ZodString;
4064
+ reason: z.ZodOptional<z.ZodString>;
4065
+ }, "strip", z.ZodTypeAny, {
4066
+ curatedWorkerId: string;
4067
+ action: "MOVE";
4068
+ expectedRevision: number;
4069
+ reason?: string | undefined;
4070
+ }, {
4071
+ curatedWorkerId: string;
4072
+ action: "MOVE";
4073
+ expectedRevision: number;
4074
+ reason?: string | undefined;
4075
+ }>, z.ZodObject<{
4076
+ action: z.ZodLiteral<"CREATE_NEW">;
4077
+ expectedRevision: z.ZodNumber;
4078
+ reason: z.ZodOptional<z.ZodString>;
4079
+ }, "strip", z.ZodTypeAny, {
4080
+ action: "CREATE_NEW";
4081
+ expectedRevision: number;
4082
+ reason?: string | undefined;
4083
+ }, {
4084
+ action: "CREATE_NEW";
4085
+ expectedRevision: number;
4086
+ reason?: string | undefined;
4087
+ }>]>;
4088
+ path: "/v2/worker-identity-cases/:id/resolve-link-audit";
4089
+ responses: {
4090
+ 401: z.ZodObject<{
4091
+ statusCode: z.ZodNumber;
4092
+ message: z.ZodString;
4093
+ code: z.ZodString;
4094
+ details: z.ZodOptional<z.ZodUnknown>;
4095
+ timestamp: z.ZodString;
4096
+ path: z.ZodString;
4097
+ correlationId: z.ZodOptional<z.ZodString>;
4098
+ }, "strip", z.ZodTypeAny, {
4099
+ message: string;
4100
+ code: string;
4101
+ path: string;
4102
+ statusCode: number;
4103
+ timestamp: string;
4104
+ details?: unknown;
4105
+ correlationId?: string | undefined;
4106
+ }, {
4107
+ message: string;
4108
+ code: string;
4109
+ path: string;
4110
+ statusCode: number;
4111
+ timestamp: string;
4112
+ details?: unknown;
4113
+ correlationId?: string | undefined;
4114
+ }>;
4115
+ 400: z.ZodObject<{
4116
+ statusCode: z.ZodNumber;
4117
+ message: z.ZodString;
4118
+ code: z.ZodString;
4119
+ details: z.ZodOptional<z.ZodUnknown>;
4120
+ timestamp: z.ZodString;
4121
+ path: z.ZodString;
4122
+ correlationId: z.ZodOptional<z.ZodString>;
4123
+ }, "strip", z.ZodTypeAny, {
4124
+ message: string;
4125
+ code: string;
4126
+ path: string;
4127
+ statusCode: number;
4128
+ timestamp: string;
4129
+ details?: unknown;
4130
+ correlationId?: string | undefined;
4131
+ }, {
4132
+ message: string;
4133
+ code: string;
4134
+ path: string;
4135
+ statusCode: number;
4136
+ timestamp: string;
4137
+ details?: unknown;
4138
+ correlationId?: string | undefined;
4139
+ }>;
4140
+ 403: z.ZodObject<{
4141
+ statusCode: z.ZodNumber;
4142
+ message: z.ZodString;
4143
+ code: z.ZodString;
4144
+ details: z.ZodOptional<z.ZodUnknown>;
4145
+ timestamp: z.ZodString;
4146
+ path: z.ZodString;
4147
+ correlationId: z.ZodOptional<z.ZodString>;
4148
+ }, "strip", z.ZodTypeAny, {
4149
+ message: string;
4150
+ code: string;
4151
+ path: string;
4152
+ statusCode: number;
4153
+ timestamp: string;
4154
+ details?: unknown;
4155
+ correlationId?: string | undefined;
4156
+ }, {
4157
+ message: string;
4158
+ code: string;
4159
+ path: string;
4160
+ statusCode: number;
4161
+ timestamp: string;
4162
+ details?: unknown;
4163
+ correlationId?: string | undefined;
4164
+ }>;
4165
+ 500: z.ZodObject<{
4166
+ statusCode: z.ZodNumber;
4167
+ message: z.ZodString;
4168
+ code: z.ZodString;
4169
+ details: z.ZodOptional<z.ZodUnknown>;
4170
+ timestamp: z.ZodString;
4171
+ path: z.ZodString;
4172
+ correlationId: z.ZodOptional<z.ZodString>;
4173
+ }, "strip", z.ZodTypeAny, {
4174
+ message: string;
4175
+ code: string;
4176
+ path: string;
4177
+ statusCode: number;
4178
+ timestamp: string;
4179
+ details?: unknown;
4180
+ correlationId?: string | undefined;
4181
+ }, {
4182
+ message: string;
4183
+ code: string;
4184
+ path: string;
4185
+ statusCode: number;
4186
+ timestamp: string;
4187
+ details?: unknown;
4188
+ correlationId?: string | undefined;
4189
+ }>;
4190
+ 200: z.ZodObject<{
4191
+ case: z.ZodObject<{
4192
+ id: z.ZodString;
4193
+ kind: z.ZodEnum<["IDENTITY_MERGE", "CURATED_UPDATE", "CURATED_LINK_AUDIT"]>;
4194
+ status: z.ZodEnum<["PENDING", "CONFLICT", "AUTO_APPLIED", "CONFIRMED", "PARTIALLY_CONFIRMED", "REJECTED", "OBSOLETE"]>;
4195
+ revision: z.ZodNumber;
4196
+ confidence: z.ZodNullable<z.ZodNumber>;
4197
+ curatedWorker: z.ZodNullable<z.ZodObject<{
4198
+ id: z.ZodString;
4199
+ firstName: z.ZodString;
4200
+ lastName: z.ZodNullable<z.ZodString>;
4201
+ }, "strip", z.ZodTypeAny, {
4202
+ id: string;
4203
+ lastName: string | null;
4204
+ firstName: string;
4205
+ }, {
4206
+ id: string;
4207
+ lastName: string | null;
4208
+ firstName: string;
4209
+ }>>;
4210
+ workers: z.ZodArray<z.ZodObject<{
4211
+ id: z.ZodString;
4212
+ firstName: z.ZodString;
4213
+ lastName: z.ZodNullable<z.ZodString>;
4214
+ agentName: z.ZodNullable<z.ZodString>;
4215
+ }, "strip", z.ZodTypeAny, {
4216
+ id: string;
4217
+ lastName: string | null;
4218
+ firstName: string;
4219
+ agentName: string | null;
4220
+ }, {
4221
+ id: string;
4222
+ lastName: string | null;
4223
+ firstName: string;
4224
+ agentName: string | null;
4225
+ }>, "many">;
4226
+ evidenceBadges: z.ZodArray<z.ZodEnum<["NINO", "DOC_NUMBER", "SHARE_CODE", "EMAIL", "PHONE", "DOB_NAME", "AI"]>, "many">;
4227
+ conflicts: z.ZodArray<z.ZodString, "many">;
4228
+ hasHardEvidence: z.ZodBoolean;
4229
+ linkAudit: z.ZodNullable<z.ZodObject<{
4230
+ suggestedAction: z.ZodLiteral<"UNLINK">;
4231
+ reasons: z.ZodArray<z.ZodEnum<["NAME_MISMATCH", "NINO_CONFLICT", "DOB_CONFLICT", "NO_SUPPORTING_EVIDENCE", "WEAK_PHONE_ONLY"]>, "many">;
4232
+ }, "strip", z.ZodTypeAny, {
4233
+ suggestedAction: "UNLINK";
4234
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
4235
+ }, {
4236
+ suggestedAction: "UNLINK";
4237
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
4238
+ }>>;
4239
+ createdAt: z.ZodString;
4240
+ } & {
4241
+ edges: z.ZodArray<z.ZodObject<{
4242
+ workerId: z.ZodString;
4243
+ targetType: z.ZodEnum<["CURATED", "WORKER"]>;
4244
+ targetId: z.ZodString;
4245
+ signals: z.ZodRecord<z.ZodString, z.ZodUnknown>;
4246
+ conflicts: z.ZodArray<z.ZodString, "many">;
4247
+ nameSim: z.ZodNullable<z.ZodNumber>;
4248
+ } & {
4249
+ kind: z.ZodOptional<z.ZodEnum<["HARD", "REVIEW", "AI", "CONFLICT"]>>;
4250
+ llmVerdict: z.ZodOptional<z.ZodEnum<["SAME", "DIFFERENT", "UNSURE"]>>;
4251
+ llmReason: z.ZodOptional<z.ZodString>;
4252
+ }, "strip", z.ZodTypeAny, {
4253
+ workerId: string;
4254
+ conflicts: string[];
4255
+ targetType: "WORKER" | "CURATED";
4256
+ targetId: string;
4257
+ signals: Record<string, unknown>;
4258
+ nameSim: number | null;
4259
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
4260
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
4261
+ llmReason?: string | undefined;
4262
+ }, {
4263
+ workerId: string;
4264
+ conflicts: string[];
4265
+ targetType: "WORKER" | "CURATED";
4266
+ targetId: string;
4267
+ signals: Record<string, unknown>;
4268
+ nameSim: number | null;
4269
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
4270
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
4271
+ llmReason?: string | undefined;
4272
+ }>, "many">;
4273
+ /** Every curated subject of the case (evidence targets included), so
4274
+ * multi-target conflict cases can offer each as an EXISTING target. */
4275
+ curatedSubjects: z.ZodArray<z.ZodObject<{
4276
+ id: z.ZodString;
4277
+ firstName: z.ZodString;
4278
+ lastName: z.ZodNullable<z.ZodString>;
4279
+ }, "strip", z.ZodTypeAny, {
4280
+ id: string;
4281
+ lastName: string | null;
4282
+ firstName: string;
4283
+ }, {
4284
+ id: string;
4285
+ lastName: string | null;
4286
+ firstName: string;
4287
+ }>, "many">;
4288
+ pendingDocuments: z.ZodObject<{
4289
+ /** Attachments with no extraction attempt yet (await the intake sweep). */
4290
+ notExtracted: z.ZodNumber;
4291
+ /** Extractions awaiting human review (or failed and retryable). */
4292
+ awaitingReview: z.ZodNumber;
4293
+ }, "strip", z.ZodTypeAny, {
4294
+ notExtracted: number;
4295
+ awaitingReview: number;
4296
+ }, {
4297
+ notExtracted: number;
4298
+ awaitingReview: number;
4299
+ }>;
4300
+ /** The surviving case id when the requested case was absorbed; null when
4301
+ * the requested id is the live case. */
4302
+ absorbedIntoCaseId: z.ZodNullable<z.ZodString>;
4303
+ obsoleteReason: z.ZodNullable<z.ZodString>;
4304
+ reviewedAt: z.ZodNullable<z.ZodString>;
4305
+ appliedCuratedWorkerId: z.ZodNullable<z.ZodString>;
4306
+ }, "strip", z.ZodTypeAny, {
4307
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
4308
+ id: string;
4309
+ createdAt: string;
4310
+ confidence: number | null;
4311
+ workers: {
4312
+ id: string;
4313
+ lastName: string | null;
4314
+ firstName: string;
4315
+ agentName: string | null;
4316
+ }[];
4317
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
4318
+ conflicts: string[];
4319
+ reviewedAt: string | null;
4320
+ curatedWorker: {
4321
+ id: string;
4322
+ lastName: string | null;
4323
+ firstName: string;
4324
+ } | null;
4325
+ revision: number;
4326
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
4327
+ hasHardEvidence: boolean;
4328
+ linkAudit: {
4329
+ suggestedAction: "UNLINK";
4330
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
4331
+ } | null;
4332
+ edges: {
4333
+ workerId: string;
4334
+ conflicts: string[];
4335
+ targetType: "WORKER" | "CURATED";
4336
+ targetId: string;
4337
+ signals: Record<string, unknown>;
4338
+ nameSim: number | null;
4339
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
4340
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
4341
+ llmReason?: string | undefined;
4342
+ }[];
4343
+ curatedSubjects: {
4344
+ id: string;
4345
+ lastName: string | null;
4346
+ firstName: string;
4347
+ }[];
4348
+ pendingDocuments: {
4349
+ notExtracted: number;
4350
+ awaitingReview: number;
4351
+ };
4352
+ absorbedIntoCaseId: string | null;
4353
+ obsoleteReason: string | null;
4354
+ appliedCuratedWorkerId: string | null;
4355
+ }, {
4356
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
4357
+ id: string;
4358
+ createdAt: string;
4359
+ confidence: number | null;
4360
+ workers: {
4361
+ id: string;
4362
+ lastName: string | null;
4363
+ firstName: string;
4364
+ agentName: string | null;
4365
+ }[];
4366
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
4367
+ conflicts: string[];
4368
+ reviewedAt: string | null;
4369
+ curatedWorker: {
4370
+ id: string;
4371
+ lastName: string | null;
4372
+ firstName: string;
4373
+ } | null;
4374
+ revision: number;
4375
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
4376
+ hasHardEvidence: boolean;
4377
+ linkAudit: {
4378
+ suggestedAction: "UNLINK";
4379
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
4380
+ } | null;
4381
+ edges: {
4382
+ workerId: string;
4383
+ conflicts: string[];
4384
+ targetType: "WORKER" | "CURATED";
4385
+ targetId: string;
4386
+ signals: Record<string, unknown>;
4387
+ nameSim: number | null;
4388
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
4389
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
4390
+ llmReason?: string | undefined;
4391
+ }[];
4392
+ curatedSubjects: {
4393
+ id: string;
4394
+ lastName: string | null;
4395
+ firstName: string;
4396
+ }[];
4397
+ pendingDocuments: {
4398
+ notExtracted: number;
4399
+ awaitingReview: number;
4400
+ };
4401
+ absorbedIntoCaseId: string | null;
4402
+ obsoleteReason: string | null;
4403
+ appliedCuratedWorkerId: string | null;
4404
+ }>;
4405
+ reprocessing: z.ZodNullable<z.ZodObject<{
4406
+ status: z.ZodEnum<["COMPLETED", "FAILED"]>;
4407
+ casesCreated: z.ZodNumber;
4408
+ message: z.ZodNullable<z.ZodString>;
4409
+ }, "strip", z.ZodTypeAny, {
4410
+ status: "COMPLETED" | "FAILED";
4411
+ message: string | null;
4412
+ casesCreated: number;
4413
+ }, {
4414
+ status: "COMPLETED" | "FAILED";
4415
+ message: string | null;
4416
+ casesCreated: number;
4417
+ }>>;
4418
+ }, "strip", z.ZodTypeAny, {
4419
+ case: {
4420
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
4421
+ id: string;
4422
+ createdAt: string;
4423
+ confidence: number | null;
4424
+ workers: {
4425
+ id: string;
4426
+ lastName: string | null;
4427
+ firstName: string;
4428
+ agentName: string | null;
4429
+ }[];
4430
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
4431
+ conflicts: string[];
4432
+ reviewedAt: string | null;
4433
+ curatedWorker: {
4434
+ id: string;
4435
+ lastName: string | null;
4436
+ firstName: string;
4437
+ } | null;
4438
+ revision: number;
4439
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
4440
+ hasHardEvidence: boolean;
4441
+ linkAudit: {
4442
+ suggestedAction: "UNLINK";
4443
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
4444
+ } | null;
4445
+ edges: {
4446
+ workerId: string;
4447
+ conflicts: string[];
4448
+ targetType: "WORKER" | "CURATED";
4449
+ targetId: string;
4450
+ signals: Record<string, unknown>;
4451
+ nameSim: number | null;
4452
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
4453
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
4454
+ llmReason?: string | undefined;
4455
+ }[];
4456
+ curatedSubjects: {
4457
+ id: string;
4458
+ lastName: string | null;
4459
+ firstName: string;
4460
+ }[];
4461
+ pendingDocuments: {
4462
+ notExtracted: number;
4463
+ awaitingReview: number;
4464
+ };
4465
+ absorbedIntoCaseId: string | null;
4466
+ obsoleteReason: string | null;
4467
+ appliedCuratedWorkerId: string | null;
4468
+ };
4469
+ reprocessing: {
4470
+ status: "COMPLETED" | "FAILED";
4471
+ message: string | null;
4472
+ casesCreated: number;
4473
+ } | null;
4474
+ }, {
4475
+ case: {
4476
+ status: "PENDING" | "CONFIRMED" | "REJECTED" | "CONFLICT" | "AUTO_APPLIED" | "PARTIALLY_CONFIRMED" | "OBSOLETE";
4477
+ id: string;
4478
+ createdAt: string;
4479
+ confidence: number | null;
4480
+ workers: {
4481
+ id: string;
4482
+ lastName: string | null;
4483
+ firstName: string;
4484
+ agentName: string | null;
4485
+ }[];
4486
+ kind: "IDENTITY_MERGE" | "CURATED_UPDATE" | "CURATED_LINK_AUDIT";
4487
+ conflicts: string[];
4488
+ reviewedAt: string | null;
4489
+ curatedWorker: {
4490
+ id: string;
4491
+ lastName: string | null;
4492
+ firstName: string;
4493
+ } | null;
4494
+ revision: number;
4495
+ evidenceBadges: ("AI" | "SHARE_CODE" | "PHONE" | "NINO" | "EMAIL" | "DOC_NUMBER" | "DOB_NAME")[];
4496
+ hasHardEvidence: boolean;
4497
+ linkAudit: {
4498
+ suggestedAction: "UNLINK";
4499
+ reasons: ("NAME_MISMATCH" | "NINO_CONFLICT" | "DOB_CONFLICT" | "NO_SUPPORTING_EVIDENCE" | "WEAK_PHONE_ONLY")[];
4500
+ } | null;
4501
+ edges: {
4502
+ workerId: string;
4503
+ conflicts: string[];
4504
+ targetType: "WORKER" | "CURATED";
4505
+ targetId: string;
4506
+ signals: Record<string, unknown>;
4507
+ nameSim: number | null;
4508
+ kind?: "AI" | "CONFLICT" | "HARD" | "REVIEW" | undefined;
4509
+ llmVerdict?: "SAME" | "DIFFERENT" | "UNSURE" | undefined;
4510
+ llmReason?: string | undefined;
4511
+ }[];
4512
+ curatedSubjects: {
4513
+ id: string;
4514
+ lastName: string | null;
4515
+ firstName: string;
4516
+ }[];
4517
+ pendingDocuments: {
4518
+ notExtracted: number;
4519
+ awaitingReview: number;
4520
+ };
4521
+ absorbedIntoCaseId: string | null;
4522
+ obsoleteReason: string | null;
4523
+ appliedCuratedWorkerId: string | null;
4524
+ };
4525
+ reprocessing: {
4526
+ status: "COMPLETED" | "FAILED";
4527
+ message: string | null;
4528
+ casesCreated: number;
4529
+ } | null;
4530
+ }>;
4531
+ 404: z.ZodObject<{
4532
+ statusCode: z.ZodNumber;
4533
+ message: z.ZodString;
4534
+ code: z.ZodString;
4535
+ details: z.ZodOptional<z.ZodUnknown>;
4536
+ timestamp: z.ZodString;
4537
+ path: z.ZodString;
4538
+ correlationId: z.ZodOptional<z.ZodString>;
4539
+ }, "strip", z.ZodTypeAny, {
4540
+ message: string;
4541
+ code: string;
4542
+ path: string;
4543
+ statusCode: number;
4544
+ timestamp: string;
4545
+ details?: unknown;
4546
+ correlationId?: string | undefined;
4547
+ }, {
4548
+ message: string;
4549
+ code: string;
4550
+ path: string;
4551
+ statusCode: number;
4552
+ timestamp: string;
4553
+ details?: unknown;
4554
+ correlationId?: string | undefined;
4555
+ }>;
4556
+ 409: z.ZodObject<{
4557
+ statusCode: z.ZodNumber;
4558
+ message: z.ZodString;
4559
+ code: z.ZodString;
4560
+ details: z.ZodOptional<z.ZodUnknown>;
4561
+ timestamp: z.ZodString;
4562
+ path: z.ZodString;
4563
+ correlationId: z.ZodOptional<z.ZodString>;
4564
+ }, "strip", z.ZodTypeAny, {
4565
+ message: string;
4566
+ code: string;
4567
+ path: string;
4568
+ statusCode: number;
4569
+ timestamp: string;
4570
+ details?: unknown;
4571
+ correlationId?: string | undefined;
4572
+ }, {
4573
+ message: string;
4574
+ code: string;
4575
+ path: string;
4576
+ statusCode: number;
4577
+ timestamp: string;
4578
+ details?: unknown;
4579
+ correlationId?: string | undefined;
4580
+ }>;
4581
+ 422: z.ZodObject<{
4582
+ statusCode: z.ZodNumber;
4583
+ message: z.ZodString;
4584
+ code: z.ZodString;
4585
+ details: z.ZodOptional<z.ZodUnknown>;
4586
+ timestamp: z.ZodString;
4587
+ path: z.ZodString;
4588
+ correlationId: z.ZodOptional<z.ZodString>;
4589
+ }, "strip", z.ZodTypeAny, {
4590
+ message: string;
4591
+ code: string;
4592
+ path: string;
4593
+ statusCode: number;
4594
+ timestamp: string;
4595
+ details?: unknown;
4596
+ correlationId?: string | undefined;
4597
+ }, {
4598
+ message: string;
4599
+ code: string;
4600
+ path: string;
4601
+ statusCode: number;
4602
+ timestamp: string;
4603
+ details?: unknown;
4604
+ correlationId?: string | undefined;
4605
+ }>;
4606
+ };
4607
+ };
4608
+ };
4609
+ //# sourceMappingURL=worker-identity-cases.contract.d.ts.map