@dakkitor/api-contracts 1.1.154 → 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
@@ -7,7 +7,7 @@
7
7
  * Provides role-specific widgets for First Agent (FA) and Second Agent (SA).
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.dashboardWidgetsContract = exports.CollaborationsTrendSchema = exports.WorkersTrendSchema = exports.CallPerformanceTrendSchema = exports.BookingsTrendSchema = exports.ActivesTrendSchema = exports.AdminSaAggregateSchema = exports.AdminFaAggregateSchema = exports.SaActivesWidgetSchema = exports.SaBookingsWidgetSchema = exports.SaWorkersWidgetSchema = exports.FaBookingsWidgetSchema = exports.FaActivesWidgetSchema = exports.AllAgentsCallHistoryQuerySchema = exports.FaCallHistoryWidgetSchema = exports.FaCheckingsWidgetSchema = exports.FaClientsWidgetSchema = exports.FaPipelineWidgetSchema = exports.TrendDataPointSchema = exports.DateRangeQuerySchema = exports.DashboardWidgetQuerySchema = void 0;
10
+ exports.dashboardWidgetsContract = exports.LeadActivityTrendSchema = exports.LeadActivityOutcomeKeySchema = exports.ProofsTrendSchema = exports.ProofsWidgetSchema = exports.CollaborationsTrendSchema = exports.JobsTrendSchema = exports.WorkersTrendSchema = exports.CallPerformanceTrendSchema = exports.BookingsTrendSchema = exports.ActivesTrendSchema = exports.AdminSaAggregateSchema = exports.AdminFaAggregateSchema = exports.SaActivesWidgetSchema = exports.SaBookingsWidgetSchema = exports.SaWorkersWidgetSchema = exports.FaJobsWidgetSchema = exports.FaBookingsWidgetSchema = exports.FaActivesWidgetSchema = exports.AllAgentsCallHistoryQuerySchema = exports.AgentStatsSortFieldSchema = exports.FaCallHistoryWidgetSchema = exports.FaCheckingsWidgetSchema = exports.FaClientsWidgetSchema = exports.FaPipelineWidgetSchema = exports.TrendDataPointSchema = exports.RoleScopedDateRangeQuerySchema = exports.AgentTrendQuerySchema = exports.DateRangeOfficeQuerySchema = exports.DateRangeQuerySchema = exports.DashboardWidgetQuerySchema = void 0;
11
11
  const core_1 = require("@ts-rest/core");
12
12
  const zod_1 = require("zod");
13
13
  const pagination_schema_1 = require("../common/pagination.schema");
@@ -17,6 +17,9 @@ const collaborations_contract_1 = require("../collaborations/collaborations.cont
17
17
  const bookings_contract_1 = require("../bookings/bookings.contract");
18
18
  const actives_contract_1 = require("../actives/actives.contract");
19
19
  const call_rating_schema_1 = require("../common/call-rating.schema");
20
+ const common_schemas_1 = require("../common/common-schemas");
21
+ const users_contract_1 = require("../users/users.contract");
22
+ const proof_type_enum_1 = require("../proofs/proof-type.enum");
20
23
  const c = (0, core_1.initContract)();
21
24
  // =============================================================================
22
25
  // COMMON SCHEMAS
@@ -29,6 +32,11 @@ exports.DashboardWidgetQuerySchema = zod_1.z.object({
29
32
  .string()
30
33
  .optional()
31
34
  .describe('Date in YYYY-MM-DD format. Defaults to today if not provided.'),
35
+ office: zod_1.z
36
+ .string()
37
+ .uuid()
38
+ .optional()
39
+ .describe('Filter by office ID. Omit for all accessible offices.'),
32
40
  });
33
41
  /**
34
42
  * Date range filter for historical queries
@@ -37,6 +45,35 @@ exports.DateRangeQuerySchema = zod_1.z.object({
37
45
  startDate: zod_1.z.string().describe('Start date in YYYY-MM-DD format'),
38
46
  endDate: zod_1.z.string().describe('End date in YYYY-MM-DD format'),
39
47
  });
48
+ /**
49
+ * Date range + office filter for admin aggregate trends.
50
+ */
51
+ exports.DateRangeOfficeQuerySchema = exports.DateRangeQuerySchema.extend({
52
+ office: zod_1.z
53
+ .string()
54
+ .uuid()
55
+ .optional()
56
+ .describe('Filter by office ID. Omit for all accessible offices.'),
57
+ });
58
+ /** Date range + the agent's role (FA/SA), for per-agent admin trend lookups. */
59
+ exports.AgentTrendQuerySchema = exports.DateRangeQuerySchema.extend({
60
+ role: zod_1.z
61
+ .enum(['FA', 'SA'])
62
+ .optional()
63
+ .describe('Agent role for role-scoped metrics'),
64
+ });
65
+ /**
66
+ * Date range + an optional self role scope for personal trends that exist in
67
+ * both the FA and SA widget sections (actives, bookings). When omitted the
68
+ * server falls back to the caller's default role. A role the caller does not
69
+ * hold is ignored server-side.
70
+ */
71
+ exports.RoleScopedDateRangeQuerySchema = exports.DateRangeQuerySchema.extend({
72
+ role: zod_1.z
73
+ .enum(['FA', 'SA'])
74
+ .optional()
75
+ .describe('Self role scope (FA/SA) for the requesting user'),
76
+ });
40
77
  /**
41
78
  * Common trend data point for time-series charts
42
79
  */
@@ -111,18 +148,88 @@ exports.FaCallHistoryWidgetSchema = zod_1.z.object({
111
148
  .describe('Own research leads that already existed in system'),
112
149
  ownResearchLeadsNew: zod_1.z.number().describe('Own research leads new to system'),
113
150
  });
151
+ exports.AgentStatsSortFieldSchema = zod_1.z.enum([
152
+ 'agentName',
153
+ 'activesFaActive',
154
+ 'activesFaOthers',
155
+ 'activesSaActive',
156
+ 'activesSaOthers',
157
+ 'bookingsFaAttempts',
158
+ 'bookingsFaFailed',
159
+ 'bookingsFaInProgress',
160
+ 'bookingsFaCompleted',
161
+ 'bookingsFaCancelled',
162
+ 'bookingsSaAttempts',
163
+ 'bookingsSaFailed',
164
+ 'bookingsSaInProgress',
165
+ 'bookingsSaCompleted',
166
+ 'bookingsSaCancelled',
167
+ 'callsOnDate',
168
+ 'efficientCalls',
169
+ 'conversionsOnDate',
170
+ 'dailyConversionRate',
171
+ 'performanceScore',
172
+ 'ownResearchLeadsAdded',
173
+ 'jobsCreatedOnDate',
174
+ 'jobsTotalOpenPositions',
175
+ 'jobsFilledPositions',
176
+ 'workersAddedToday',
177
+ 'consentLeadsActioned',
178
+ 'consentConsented',
179
+ 'consentDeclined',
180
+ 'consentWrongNumber',
181
+ 'consentSnoozed',
182
+ 'offersSent',
183
+ 'offersBooked',
184
+ ]);
114
185
  /**
115
186
  * Query parameters for all agents call history endpoint
116
187
  */
117
188
  exports.AllAgentsCallHistoryQuerySchema = pagination_query_schema_1.PaginationQuerySchema.extend({
189
+ // The admin agent-stats table renders every agent in one unpaginated grid, so
190
+ // it asks for the whole set at once rather than the shared MAX_PAGE_SIZE.
191
+ limit: zod_1.z.coerce
192
+ .number()
193
+ .int()
194
+ .min(1)
195
+ .max(1000)
196
+ .default(50)
197
+ .describe('The number of items to return per page.'),
118
198
  date: zod_1.z
119
199
  .string()
120
200
  .optional()
121
201
  .describe('Date in YYYY-MM-DD format. Defaults to today if not provided.'),
202
+ startDate: zod_1.z
203
+ .string()
204
+ .optional()
205
+ .describe('Range start (YYYY-MM-DD). When set with endDate and != endDate, the table aggregates over the range.'),
206
+ endDate: zod_1.z.string().optional().describe('Range end (YYYY-MM-DD).'),
122
207
  view: zod_1.z
123
208
  .enum(['FA', 'SA'])
124
209
  .optional()
125
210
  .describe('Filter by agent view context (FA or SA).'),
211
+ sort: (0, common_schemas_1.createSortArraySchema)(exports.AgentStatsSortFieldSchema)
212
+ .optional()
213
+ .describe('Sort order. Array of {field, order} objects.'),
214
+ search: zod_1.z
215
+ .string()
216
+ .optional()
217
+ .describe('Search agent name (case-insensitive partial match).'),
218
+ office: zod_1.z
219
+ .array(zod_1.z.string().uuid())
220
+ .optional()
221
+ .describe('Filter by office IDs.'),
222
+ status: users_contract_1.UserStatusSchema.optional()
223
+ .default('ACTIVE')
224
+ .describe('Filter by agent account status. Defaults to ACTIVE.'),
225
+ minScore: zod_1.z.coerce
226
+ .number()
227
+ .optional()
228
+ .describe('Minimum performance score filter.'),
229
+ maxScore: zod_1.z.coerce
230
+ .number()
231
+ .optional()
232
+ .describe('Maximum performance score filter.'),
126
233
  });
127
234
  /**
128
235
  * FA Actives Widget - Today's active workers (FA perspective)
@@ -133,19 +240,76 @@ exports.FaActivesWidgetSchema = zod_1.z.object({
133
240
  byStatusFa: zod_1.z.record(actives_contract_1.ActiveStatusSchema, zod_1.z.number()),
134
241
  }),
135
242
  });
243
+ // Reusable shape for "forToday" / "createdToday" buckets.
244
+ // `includeOfficeSplits` adds the FA/SA/FaSa optional splits (admin aggregates only).
245
+ const bookingsCountsBlock = (includeOfficeSplits) => zod_1.z.object({
246
+ total: zod_1.z.number(),
247
+ byStatus: zod_1.z.record(bookings_contract_1.BookingTypeSchema, zod_1.z.number()),
248
+ byCategory: zod_1.z.record(bookings_contract_1.BookingCategoryEnumSchema, zod_1.z.number()),
249
+ /**
250
+ * Bookings that start on this day AND were created on this day (booked and
251
+ * starting same-day). A subset of the start-side count, so the share of
252
+ * today's starts = sameDay / starting. Only populated for the `forToday`
253
+ * bucket (meaningless for `createdToday`).
254
+ */
255
+ sameDay: zod_1.z.number().optional(),
256
+ ...(includeOfficeSplits
257
+ ? {
258
+ byStatusFa: zod_1.z.record(bookings_contract_1.BookingTypeSchema, zod_1.z.number()).optional(),
259
+ byStatusSa: zod_1.z.record(bookings_contract_1.BookingTypeSchema, zod_1.z.number()).optional(),
260
+ byStatusFaSa: zod_1.z.record(bookings_contract_1.BookingTypeSchema, zod_1.z.number()).optional(),
261
+ byCategoryFa: zod_1.z
262
+ .record(bookings_contract_1.BookingCategoryEnumSchema, zod_1.z.number())
263
+ .optional(),
264
+ byCategorySa: zod_1.z
265
+ .record(bookings_contract_1.BookingCategoryEnumSchema, zod_1.z.number())
266
+ .optional(),
267
+ byCategoryFaSa: zod_1.z
268
+ .record(bookings_contract_1.BookingCategoryEnumSchema, zod_1.z.number())
269
+ .optional(),
270
+ }
271
+ : {}),
272
+ });
136
273
  /**
137
274
  * FA Bookings Widget - Booking management (FA perspective)
138
275
  */
139
276
  exports.FaBookingsWidgetSchema = zod_1.z.object({
140
- totalToday: zod_1.z.number().describe('Total bookings created today'),
141
- byStatus: zod_1.z.record(bookings_contract_1.BookingTypeSchema, zod_1.z.number()),
142
- byCategory: zod_1.z.record(bookings_contract_1.BookingCategoryEnumSchema, zod_1.z.number()),
143
- ongoingBookings: zod_1.z
277
+ forToday: bookingsCountsBlock(false),
278
+ createdToday: bookingsCountsBlock(false),
279
+ ongoingBookings: zod_1.z.number(),
280
+ startingToday: zod_1.z.number(),
281
+ pendingConfirmation: zod_1.z.number(),
282
+ upcomingStarts: zod_1.z.number(),
283
+ });
284
+ /**
285
+ * FA Jobs Widget - Job metrics for a single First Agent
286
+ */
287
+ exports.FaJobsWidgetSchema = zod_1.z.object({
288
+ totalCreated: zod_1.z
289
+ .number()
290
+ .describe('Jobs created by this agent on the selected date'),
291
+ totalOpenPositions: zod_1.z
292
+ .number()
293
+ .describe('Sum of positions across jobs that were AVAILABLE at any point during the selected date'),
294
+ availableJobs: zod_1.z
295
+ .number()
296
+ .describe('Count of distinct jobs that were AVAILABLE at any point during the selected date'),
297
+ filledPositions: zod_1.z.number().describe('Positions filled on the selected date'),
298
+ transitionCounts: zod_1.z
299
+ .record(zod_1.z.string(), zod_1.z.number())
300
+ .describe('Job status transitions on the selected date'),
301
+ fillRate: zod_1.z
302
+ .number()
303
+ .describe('Sourcing fill-rate over jobs CLOSED on the selected date: filledForRate / total positions (0 when no closes). Declared-filled counts as fully filled; booking-filled capped at total.'),
304
+ positionsAdjusted: zod_1.z
305
+ .number()
306
+ .describe('Count of position-count changes (POSITIONS_CHANGED) on the selected date'),
307
+ positionsNetChange: zod_1.z
144
308
  .number()
145
- .describe('Bookings where today is between startDate and endDate (or no endDate)'),
146
- startingToday: zod_1.z.number().describe('Bookings with startDate equal to today'),
147
- pendingConfirmation: zod_1.z.number().describe('Bookings awaiting confirmation'),
148
- upcomingStarts: zod_1.z.number().describe('All future bookings not starting today'),
309
+ .describe('Net positions added/removed across adjustments on the selected date'),
310
+ overbookedCount: zod_1.z
311
+ .number()
312
+ .describe('Count of jobs closed on the selected date with more bookings than positions'),
149
313
  });
150
314
  // =============================================================================
151
315
  // SECOND AGENT (SA) WIDGET SCHEMAS
@@ -161,15 +325,12 @@ exports.SaWorkersWidgetSchema = zod_1.z.object({
161
325
  * SA Bookings Widget - Booking management (SA perspective)
162
326
  */
163
327
  exports.SaBookingsWidgetSchema = zod_1.z.object({
164
- totalToday: zod_1.z.number().describe('Total bookings created today'),
165
- byStatus: zod_1.z.record(bookings_contract_1.BookingTypeSchema, zod_1.z.number()),
166
- byCategory: zod_1.z.record(bookings_contract_1.BookingCategoryEnumSchema, zod_1.z.number()),
167
- ongoingBookings: zod_1.z
168
- .number()
169
- .describe('Bookings where today is between startDate and endDate (or no endDate)'),
170
- startingToday: zod_1.z.number().describe('Bookings with startDate equal to today'),
171
- waitingForConfirmation: zod_1.z.number(),
172
- upcomingStarts: zod_1.z.number().describe('All future bookings not starting today'),
328
+ forToday: bookingsCountsBlock(false),
329
+ createdToday: bookingsCountsBlock(false),
330
+ ongoingBookings: zod_1.z.number(),
331
+ startingToday: zod_1.z.number(),
332
+ pendingConfirmation: zod_1.z.number(),
333
+ upcomingStarts: zod_1.z.number(),
173
334
  });
174
335
  /**
175
336
  * SA Actives Widget - Today's active workers (SA perspective)
@@ -190,12 +351,16 @@ exports.AdminFaAggregateSchema = zod_1.z.object({
190
351
  actives: zod_1.z.object({
191
352
  /** Flat structure (unlike per-agent FaActivesWidgetSchema which nests under 'today') */
192
353
  total: zod_1.z.number(),
193
- byStatusFa: zod_1.z.record(actives_contract_1.ActiveStatusSchema, zod_1.z.number()),
354
+ /**
355
+ * Actives grouped by unified status, counting every active in scope (FA OR SA
356
+ * in office). Replaces the former separate byStatusFa/byStatusSa breakdowns now
357
+ * that the FA/SA status fields are unified into a single `status`.
358
+ */
359
+ byStatus: zod_1.z.record(actives_contract_1.ActiveStatusSchema, zod_1.z.number()),
194
360
  }),
195
361
  bookings: zod_1.z.object({
196
- totalToday: zod_1.z.number(),
197
- byStatus: zod_1.z.record(bookings_contract_1.BookingTypeSchema, zod_1.z.number()),
198
- byCategory: zod_1.z.record(bookings_contract_1.BookingCategoryEnumSchema, zod_1.z.number()),
362
+ forToday: bookingsCountsBlock(true),
363
+ createdToday: bookingsCountsBlock(true),
199
364
  ongoingBookings: zod_1.z.number(),
200
365
  startingToday: zod_1.z.number(),
201
366
  pendingConfirmation: zod_1.z.number(),
@@ -251,6 +416,35 @@ exports.AdminFaAggregateSchema = zod_1.z.object({
251
416
  .number()
252
417
  .describe('Own research leads new to system'),
253
418
  }),
419
+ jobs: zod_1.z.object({
420
+ totalOpenPositions: zod_1.z
421
+ .number()
422
+ .describe('Sum of positions across jobs that were AVAILABLE at any point during the selected date, across all FA agents'),
423
+ availableJobs: zod_1.z
424
+ .number()
425
+ .describe('Count of distinct jobs that were AVAILABLE at any point during the selected date, across all FA agents'),
426
+ createdToday: zod_1.z
427
+ .number()
428
+ .describe('Jobs created on this date across all FA agents'),
429
+ filledPositions: zod_1.z
430
+ .number()
431
+ .describe('Filled positions (current booking state, window-scoped)'),
432
+ transitionCounts: zod_1.z
433
+ .record(zod_1.z.string(), zod_1.z.number())
434
+ .describe('Aggregated status transition counts for the date'),
435
+ fillRate: zod_1.z
436
+ .number()
437
+ .describe('Sourcing fill-rate over jobs CLOSED on the selected date: filledForRate / total positions (0 when no closes). Declared-filled counts as fully filled; booking-filled capped at total.'),
438
+ positionsAdjusted: zod_1.z
439
+ .number()
440
+ .describe('Count of position-count changes (POSITIONS_CHANGED) on the selected date'),
441
+ positionsNetChange: zod_1.z
442
+ .number()
443
+ .describe('Net positions added/removed across adjustments on the selected date'),
444
+ overbookedCount: zod_1.z
445
+ .number()
446
+ .describe('Count of jobs closed on the selected date with more bookings than positions'),
447
+ }),
254
448
  agentCount: zod_1.z
255
449
  .number()
256
450
  .describe('Number of FA agents included in aggregation'),
@@ -265,12 +459,11 @@ exports.AdminSaAggregateSchema = zod_1.z.object({
265
459
  byStatusSa: zod_1.z.record(actives_contract_1.ActiveStatusSchema, zod_1.z.number()),
266
460
  }),
267
461
  bookings: zod_1.z.object({
268
- totalToday: zod_1.z.number(),
269
- byStatus: zod_1.z.record(bookings_contract_1.BookingTypeSchema, zod_1.z.number()),
270
- byCategory: zod_1.z.record(bookings_contract_1.BookingCategoryEnumSchema, zod_1.z.number()),
462
+ forToday: bookingsCountsBlock(true),
463
+ createdToday: bookingsCountsBlock(true),
271
464
  ongoingBookings: zod_1.z.number(),
272
465
  startingToday: zod_1.z.number(),
273
- waitingForConfirmation: zod_1.z.number(),
466
+ pendingConfirmation: zod_1.z.number(),
274
467
  upcomingStarts: zod_1.z.number(),
275
468
  }),
276
469
  workers: zod_1.z.object({
@@ -300,13 +493,24 @@ exports.ActivesTrendSchema = zod_1.z.object({
300
493
  }),
301
494
  });
302
495
  /**
303
- * Bookings trend data for charts
496
+ * Bookings trend data for charts.
497
+ *
498
+ * Per day we expose TWO views of the same timeline:
499
+ * - created* : bookings CREATED on that day (the line) — `total`/`byStatus`
500
+ * kept under their legacy names for backward compatibility.
501
+ * - forDay* : bookings whose startDate OR endDate is that day (the stacked
502
+ * bars), grouped by category, with per-status detail for tooltips.
304
503
  */
305
504
  exports.BookingsTrendSchema = zod_1.z.object({
306
505
  data: zod_1.z.array(zod_1.z.object({
307
506
  date: zod_1.z.string(),
507
+ // created-on-this-day (the line)
308
508
  total: zod_1.z.number(),
309
509
  byStatus: zod_1.z.record(bookings_contract_1.BookingTypeSchema, zod_1.z.number()),
510
+ // for-this-day = startDate OR endDate on this day (the stacked bars)
511
+ forDayTotal: zod_1.z.number(),
512
+ forDayByCategory: zod_1.z.record(bookings_contract_1.BookingCategoryEnumSchema, zod_1.z.number()),
513
+ forDayByStatus: zod_1.z.record(bookings_contract_1.BookingTypeSchema, zod_1.z.number()),
310
514
  })),
311
515
  summary: zod_1.z.object({
312
516
  averageDaily: zod_1.z.number(),
@@ -323,6 +527,9 @@ exports.CallPerformanceTrendSchema = zod_1.z.object({
323
527
  averageRating: zod_1.z.number(),
324
528
  conversionRate: zod_1.z.number(),
325
529
  performanceScore: zod_1.z.number(),
530
+ // calls grouped by rating weight (0–10; "unrated" bucket for null) — the
531
+ // stacked-bar breakdown in the range chart.
532
+ ratingBreakdown: zod_1.z.record(zod_1.z.string(), zod_1.z.number()),
326
533
  })),
327
534
  summary: zod_1.z.object({
328
535
  averageDailyCalls: zod_1.z.number(),
@@ -344,6 +551,25 @@ exports.WorkersTrendSchema = zod_1.z.object({
344
551
  averagePerDay: zod_1.z.number(),
345
552
  }),
346
553
  });
554
+ /**
555
+ * Jobs trend data for charts (FA). created/day bars; open positions is the
556
+ * positions available during each date (date-scoped); filled is a per-day flow.
557
+ */
558
+ exports.JobsTrendSchema = zod_1.z.object({
559
+ data: zod_1.z.array(zod_1.z.object({
560
+ date: zod_1.z.string(),
561
+ created: zod_1.z.number(),
562
+ openPositions: zod_1.z.number(),
563
+ filled: zod_1.z.number(),
564
+ fillRate: zod_1.z.number().describe('Sourcing fill-rate for the date'),
565
+ })),
566
+ summary: zod_1.z.object({
567
+ totalCreated: zod_1.z.number(),
568
+ totalFilled: zod_1.z.number(),
569
+ endOpenPositions: zod_1.z.number(),
570
+ fillRate: zod_1.z.number().describe('Sourcing fill-rate over the range'),
571
+ }),
572
+ });
347
573
  /**
348
574
  * Collaborations trend data for charts (FA only)
349
575
  */
@@ -359,6 +585,74 @@ exports.CollaborationsTrendSchema = zod_1.z.object({
359
585
  }),
360
586
  });
361
587
  // =============================================================================
588
+ // PROOFS WIDGET + TREND SCHEMAS
589
+ // =============================================================================
590
+ /** Per-category breakdown: a total plus per-platform (section-type) counts. */
591
+ const ProofPostBreakdownSchema = zod_1.z.object({
592
+ total: zod_1.z.number(),
593
+ byType: zod_1.z.record(proof_type_enum_1.PostTypeEnum, zod_1.z.number()),
594
+ });
595
+ const ProofBookingBreakdownSchema = zod_1.z.object({
596
+ total: zod_1.z.number(),
597
+ byType: zod_1.z.record(proof_type_enum_1.BookingTypeEnum, zod_1.z.number()),
598
+ });
599
+ /**
600
+ * Proofs widget — section-entry counts split by category, each broken down by
601
+ * platform/type. Used by the per-user widget and the admin total.
602
+ */
603
+ exports.ProofsWidgetSchema = zod_1.z.object({
604
+ post: ProofPostBreakdownSchema,
605
+ booking: ProofBookingBreakdownSchema,
606
+ total: zod_1.z.number().describe('post.total + booking.total'),
607
+ });
608
+ /**
609
+ * Proofs trend — per-date post/booking breakdowns over a range. Bars use
610
+ * post.total/booking.total; the per-platform byType detail feeds the tooltip.
611
+ */
612
+ exports.ProofsTrendSchema = zod_1.z.object({
613
+ data: zod_1.z.array(zod_1.z.object({
614
+ date: zod_1.z.string(),
615
+ post: ProofPostBreakdownSchema,
616
+ booking: ProofBookingBreakdownSchema,
617
+ total: zod_1.z.number(),
618
+ })),
619
+ summary: zod_1.z.object({
620
+ totalPost: zod_1.z.number(),
621
+ totalBooking: zod_1.z.number(),
622
+ total: zod_1.z.number(),
623
+ averageDaily: zod_1.z.number(),
624
+ }),
625
+ });
626
+ /**
627
+ * Lead activity outcome keys (curated lead event types)
628
+ */
629
+ exports.LeadActivityOutcomeKeySchema = zod_1.z.enum([
630
+ 'CONSENTED',
631
+ 'DECLINED',
632
+ 'WRONG_NUMBER',
633
+ 'SNOOZED',
634
+ 'OFFER_SENT',
635
+ 'BOOKED',
636
+ 'BOOKING_CANCELLED',
637
+ 'TOO_FAR',
638
+ 'NOT_INTERESTED',
639
+ ]);
640
+ /**
641
+ * Lead activity trend data for charts (curated leads, by outcome).
642
+ */
643
+ exports.LeadActivityTrendSchema = zod_1.z.object({
644
+ data: zod_1.z.array(zod_1.z.object({
645
+ date: zod_1.z.string(),
646
+ total: zod_1.z.number(),
647
+ byOutcome: zod_1.z.record(exports.LeadActivityOutcomeKeySchema, zod_1.z.number()),
648
+ })),
649
+ summary: zod_1.z.object({
650
+ averageDaily: zod_1.z.number(),
651
+ peakDay: zod_1.z.string().nullable(),
652
+ peakValue: zod_1.z.number(),
653
+ }),
654
+ });
655
+ // =============================================================================
362
656
  // API CONTRACT ROUTER
363
657
  // =============================================================================
364
658
  exports.dashboardWidgetsContract = c.router({
@@ -425,6 +719,48 @@ exports.dashboardWidgetsContract = c.router({
425
719
  summary: 'Get FA bookings widget data',
426
720
  description: 'Returns booking management summary for First Agent dashboard',
427
721
  },
722
+ getFaJobs: {
723
+ method: 'GET',
724
+ path: '/widgets/fa/jobs',
725
+ query: exports.DashboardWidgetQuerySchema,
726
+ responses: {
727
+ 200: exports.FaJobsWidgetSchema,
728
+ },
729
+ summary: 'Get FA jobs widget data',
730
+ description: 'Returns job metrics (created, open positions, filled, transitions) for First Agent dashboard',
731
+ },
732
+ getProofs: {
733
+ method: 'GET',
734
+ path: '/widgets/proofs',
735
+ query: exports.DashboardWidgetQuerySchema,
736
+ responses: { 200: exports.ProofsWidgetSchema },
737
+ summary: 'Get the current user’s proofs widget data',
738
+ description: 'Counts proofs (split POST/BOOKING) where forUserId = current user and proofDate = the selected date.',
739
+ },
740
+ getProofsTrend: {
741
+ method: 'GET',
742
+ path: '/trends/proofs',
743
+ query: exports.DateRangeQuerySchema,
744
+ responses: { 200: exports.ProofsTrendSchema },
745
+ summary: 'Get the current user’s proofs trend',
746
+ description: 'Per-date POST/BOOKING proof counts (by proofDate) over a range.',
747
+ },
748
+ getAdminProofs: {
749
+ method: 'GET',
750
+ path: '/widgets/admin/proofs',
751
+ query: exports.DashboardWidgetQuerySchema,
752
+ responses: { 200: exports.ProofsWidgetSchema },
753
+ summary: 'Get aggregate proofs total across in-scope agents (Admin)',
754
+ description: 'Counts proofs (split POST/BOOKING) for all agents in the office/CASL scope on a date.',
755
+ },
756
+ getAdminProofsTrend: {
757
+ method: 'GET',
758
+ path: '/trends/admin/proofs',
759
+ query: exports.DateRangeOfficeQuerySchema,
760
+ responses: { 200: exports.ProofsTrendSchema },
761
+ summary: 'Get aggregate proofs trend across in-scope agents (Admin)',
762
+ description: 'Per-date POST/BOOKING proof totals across the office’s agents.',
763
+ },
428
764
  // -------------------------------------------------------------------------
429
765
  // SECOND AGENT (SA) WIDGETS
430
766
  // -------------------------------------------------------------------------
@@ -461,6 +797,18 @@ exports.dashboardWidgetsContract = c.router({
461
797
  // -------------------------------------------------------------------------
462
798
  // ADMIN WIDGETS
463
799
  // -------------------------------------------------------------------------
800
+ getAccessibleOffices: {
801
+ method: 'GET',
802
+ path: '/widgets/admin/accessible-offices',
803
+ responses: {
804
+ 200: zod_1.z.array(zod_1.z.object({
805
+ id: zod_1.z.string().uuid(),
806
+ name: zod_1.z.string(),
807
+ })),
808
+ },
809
+ summary: 'Get offices accessible for dashboard filtering',
810
+ description: 'Returns offices the current user can view stats for. Admins see all offices; office managers see only their managed offices.',
811
+ },
464
812
  getAdminAgentStats: {
465
813
  method: 'GET',
466
814
  path: '/widgets/admin/agent-stats',
@@ -469,6 +817,10 @@ exports.dashboardWidgetsContract = c.router({
469
817
  200: (0, pagination_schema_1.createPaginatedResponseSchema)(zod_1.z.object({
470
818
  agentId: zod_1.z.string().uuid(),
471
819
  agentName: zod_1.z.string(),
820
+ officeName: zod_1.z
821
+ .string()
822
+ .nullable()
823
+ .describe('Agent office name, null if unassigned'),
472
824
  // Actives (FA)
473
825
  activesFaTotal: zod_1.z.number(),
474
826
  activesFaByStatus: zod_1.z.record(actives_contract_1.ActiveStatusSchema, zod_1.z.number()),
@@ -525,6 +877,43 @@ exports.dashboardWidgetsContract = c.router({
525
877
  workersAddedToday: zod_1.z
526
878
  .number()
527
879
  .describe('Workers added by this agent on the selected date'),
880
+ // Jobs
881
+ jobsCreatedOnDate: zod_1.z
882
+ .number()
883
+ .describe('Jobs created by this agent on the selected date'),
884
+ jobsTotalOpenPositions: zod_1.z
885
+ .number()
886
+ .describe('Positions available on the selected date'),
887
+ jobsFilledPositions: zod_1.z
888
+ .number()
889
+ .describe('Filled positions (current booking state)'),
890
+ jobsTransitionCounts: zod_1.z
891
+ .record(zod_1.z.string(), zod_1.z.number())
892
+ .describe('Job status transitions on this date'),
893
+ jobsFillRate: zod_1.z
894
+ .number()
895
+ .describe('Sourcing fill-rate for jobs closed on the date'),
896
+ jobsPositionsAdjusted: zod_1.z
897
+ .number()
898
+ .describe('Position-count changes on the date'),
899
+ jobsOverbooked: zod_1.z
900
+ .number()
901
+ .describe('Jobs closed overbooked on the date'),
902
+ // Proofs per platform (section-type), forUserId-attributed, proofDate-scoped
903
+ proofsPostByType: zod_1.z
904
+ .record(proof_type_enum_1.PostTypeEnum, zod_1.z.number())
905
+ .describe('Post-type section counts for the date'),
906
+ proofsBookingByType: zod_1.z
907
+ .record(proof_type_enum_1.BookingTypeEnum, zod_1.z.number())
908
+ .describe('Booking-type section counts for the date'),
909
+ // Consent queue activity (curated lead outcomes) + offers
910
+ consentLeadsActioned: zod_1.z.number(),
911
+ consentConsented: zod_1.z.number(),
912
+ consentDeclined: zod_1.z.number(),
913
+ consentWrongNumber: zod_1.z.number(),
914
+ consentSnoozed: zod_1.z.number(),
915
+ offersSent: zod_1.z.number(),
916
+ offersBooked: zod_1.z.number(),
528
917
  })),
529
918
  },
530
919
  summary: 'Get daily stats for all agents (Admin)',
@@ -556,7 +945,7 @@ exports.dashboardWidgetsContract = c.router({
556
945
  getActivesTrend: {
557
946
  method: 'GET',
558
947
  path: '/trends/actives',
559
- query: exports.DateRangeQuerySchema,
948
+ query: exports.RoleScopedDateRangeQuerySchema,
560
949
  responses: {
561
950
  200: exports.ActivesTrendSchema,
562
951
  },
@@ -566,7 +955,7 @@ exports.dashboardWidgetsContract = c.router({
566
955
  getBookingsTrend: {
567
956
  method: 'GET',
568
957
  path: '/trends/bookings',
569
- query: exports.DateRangeQuerySchema,
958
+ query: exports.RoleScopedDateRangeQuerySchema,
570
959
  responses: {
571
960
  200: exports.BookingsTrendSchema,
572
961
  },
@@ -603,4 +992,113 @@ exports.dashboardWidgetsContract = c.router({
603
992
  summary: 'Get collaborations historical trend (FA only)',
604
993
  description: 'Returns time-series data for collaborations over a date range',
605
994
  },
995
+ getJobsTrend: {
996
+ method: 'GET',
997
+ path: '/trends/jobs',
998
+ query: exports.DateRangeQuerySchema,
999
+ responses: {
1000
+ 200: exports.JobsTrendSchema,
1001
+ },
1002
+ summary: 'Get jobs historical trend (FA)',
1003
+ description: 'Returns time-series data for job creation, fills and open positions over a date range',
1004
+ },
1005
+ getAdminBookingsTrend: {
1006
+ method: 'GET',
1007
+ path: '/trends/admin/bookings',
1008
+ query: exports.DateRangeOfficeQuerySchema,
1009
+ responses: {
1010
+ 200: exports.BookingsTrendSchema,
1011
+ },
1012
+ summary: 'Get admin aggregate bookings trend',
1013
+ description: 'Bookings trend aggregated across the office first agents over a date range',
1014
+ },
1015
+ getAdminActivesTrend: {
1016
+ method: 'GET',
1017
+ path: '/trends/admin/actives',
1018
+ query: exports.DateRangeOfficeQuerySchema,
1019
+ responses: {
1020
+ 200: exports.ActivesTrendSchema,
1021
+ },
1022
+ summary: 'Get admin aggregate actives trend',
1023
+ description: 'Actives trend aggregated across the office first agents',
1024
+ },
1025
+ getAdminCallPerformanceTrend: {
1026
+ method: 'GET',
1027
+ path: '/trends/admin/call-performance',
1028
+ query: exports.DateRangeOfficeQuerySchema,
1029
+ responses: {
1030
+ 200: exports.CallPerformanceTrendSchema,
1031
+ },
1032
+ summary: 'Get admin aggregate call performance trend',
1033
+ description: 'Call performance trend aggregated across the office first agents',
1034
+ },
1035
+ getAdminJobsTrend: {
1036
+ method: 'GET',
1037
+ path: '/trends/admin/jobs',
1038
+ query: exports.DateRangeOfficeQuerySchema,
1039
+ responses: {
1040
+ 200: exports.JobsTrendSchema,
1041
+ },
1042
+ summary: 'Get admin aggregate jobs trend',
1043
+ description: 'Jobs trend aggregated across the office first agents',
1044
+ },
1045
+ getAdminWorkersTrend: {
1046
+ method: 'GET',
1047
+ path: '/trends/admin/workers',
1048
+ query: exports.DateRangeOfficeQuerySchema,
1049
+ responses: {
1050
+ 200: exports.WorkersTrendSchema,
1051
+ },
1052
+ summary: 'Get admin aggregate workers trend',
1053
+ description: 'Workers trend aggregated across the office second agents',
1054
+ },
1055
+ getLeadActivityTrend: {
1056
+ method: 'GET',
1057
+ path: '/trends/lead-activity',
1058
+ query: zod_1.z.object({ startDate: zod_1.z.string(), endDate: zod_1.z.string() }),
1059
+ responses: { 200: exports.LeadActivityTrendSchema },
1060
+ summary: "Current user's curated lead activity trend",
1061
+ },
1062
+ getAdminLeadActivityTrend: {
1063
+ method: 'GET',
1064
+ path: '/trends/admin/lead-activity',
1065
+ query: exports.DateRangeOfficeQuerySchema,
1066
+ responses: { 200: exports.LeadActivityTrendSchema },
1067
+ summary: 'Admin aggregate curated lead activity trend',
1068
+ },
1069
+ getAgentBookingsTrend: {
1070
+ method: 'GET',
1071
+ path: '/trends/agent/:agentId/bookings',
1072
+ query: exports.AgentTrendQuerySchema,
1073
+ responses: { 200: exports.BookingsTrendSchema },
1074
+ summary: 'Per-agent bookings trend (admin)',
1075
+ },
1076
+ getAgentActivesTrend: {
1077
+ method: 'GET',
1078
+ path: '/trends/agent/:agentId/actives',
1079
+ query: exports.AgentTrendQuerySchema,
1080
+ responses: { 200: exports.ActivesTrendSchema },
1081
+ summary: 'Per-agent actives trend (admin)',
1082
+ },
1083
+ getAgentCallPerformanceTrend: {
1084
+ method: 'GET',
1085
+ path: '/trends/agent/:agentId/call-performance',
1086
+ query: exports.DateRangeQuerySchema,
1087
+ responses: { 200: exports.CallPerformanceTrendSchema },
1088
+ summary: 'Per-agent call performance trend (admin)',
1089
+ },
1090
+ getAgentJobsTrend: {
1091
+ method: 'GET',
1092
+ path: '/trends/agent/:agentId/jobs',
1093
+ query: exports.DateRangeQuerySchema,
1094
+ responses: { 200: exports.JobsTrendSchema },
1095
+ summary: 'Per-agent jobs trend (admin)',
1096
+ },
1097
+ getAgentWorkersTrend: {
1098
+ method: 'GET',
1099
+ path: '/trends/agent/:agentId/workers',
1100
+ query: exports.DateRangeQuerySchema,
1101
+ responses: { 200: exports.WorkersTrendSchema },
1102
+ summary: 'Per-agent workers trend (admin)',
1103
+ },
606
1104
  });