@dakkitor/api-contracts 1.5.0 → 1.7.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 (144) hide show
  1. package/dist/abilities/abilities.contract.d.ts +6 -2
  2. package/dist/abilities/abilities.contract.d.ts.map +1 -1
  3. package/dist/abilities/abilities.contract.js +45 -1
  4. package/dist/abilities/abilities.contract.spec.js +98 -0
  5. package/dist/abilities/first-agent.abilities.json +8 -14
  6. package/dist/abilities/outreach.abilities.json +25 -0
  7. package/dist/abilities/second-agent.abilities.json +4 -13
  8. package/dist/actives/actives.contract.d.ts +3618 -3479
  9. package/dist/actives/actives.contract.d.ts.map +1 -1
  10. package/dist/actives/actives.contract.js +2 -0
  11. package/dist/actives/actives.contract.spec.d.ts +2 -0
  12. package/dist/actives/actives.contract.spec.d.ts.map +1 -0
  13. package/dist/actives/actives.contract.spec.js +35 -0
  14. package/dist/agent-client-links/agent-client-links.contract.d.ts +1087 -1087
  15. package/dist/auth/auth.contract.d.ts +108 -108
  16. package/dist/bookings/bookings.contract.d.ts +6644 -6452
  17. package/dist/bookings/bookings.contract.d.ts.map +1 -1
  18. package/dist/call-history/call-history.contract.d.ts +718 -718
  19. package/dist/calls-feed/calls-feed.contract.d.ts +86 -86
  20. package/dist/client-contacts/client-contacts.contract.d.ts +469 -469
  21. package/dist/clients/clients.contract.d.ts +203 -203
  22. package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts +2713 -2713
  23. package/dist/collaborations/collaborations.contract.d.ts +2270 -2270
  24. package/dist/common/common-schemas.d.ts +12 -12
  25. package/dist/companies/companies.contract.d.ts +74 -74
  26. package/dist/crews/crews.contract.d.ts +253 -253
  27. package/dist/cron-executions/cron-executions.contract.d.ts +182 -182
  28. package/dist/curated-worker-leads/candidate-coordination.contract.d.ts +2723 -2723
  29. package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts +378 -378
  30. package/dist/curated-worker-leads/consent-queue.contract.d.ts +1117 -1087
  31. package/dist/curated-worker-leads/consent-queue.contract.d.ts.map +1 -1
  32. package/dist/curated-worker-leads/curated-worker-lead-config.contract.d.ts +16 -16
  33. package/dist/curated-worker-leads/curated-worker-leads.contract.d.ts +2 -2
  34. package/dist/curated-worker-leads/jobs-tab.contract.d.ts +5818 -5372
  35. package/dist/curated-worker-leads/jobs-tab.contract.d.ts.map +1 -1
  36. package/dist/curated-worker-leads/jobs-tab.contract.js +34 -1
  37. package/dist/curated-worker-leads/lead-agent-area.contract.d.ts +4 -4
  38. package/dist/curated-worker-leads/outreach-pool-summary.contract.spec.d.ts +2 -0
  39. package/dist/curated-worker-leads/outreach-pool-summary.contract.spec.d.ts.map +1 -0
  40. package/dist/curated-worker-leads/outreach-pool-summary.contract.spec.js +39 -0
  41. package/dist/curated-worker-leads/owned-jobs-tab.contract.d.ts +148 -148
  42. package/dist/curated-workers/curated-workers.contract.d.ts +789 -789
  43. package/dist/dashboards/agent-daily-metrics.contract.d.ts +2 -2
  44. package/dist/dashboards/dashboard-widgets.contract.d.ts +180 -180
  45. package/dist/dashboards/dashboard.contract.d.ts +12 -12
  46. package/dist/document-intake/document-intake.contract.d.ts +601 -601
  47. package/dist/export-jobs/export-jobs.contract.d.ts +694 -694
  48. package/dist/exports-events/exports-events.schemas.d.ts +4 -4
  49. package/dist/files/files.contract.d.ts +74 -74
  50. package/dist/index.d.ts +12 -0
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +12 -0
  53. package/dist/interactions/interactions.contract.d.ts +6 -6
  54. package/dist/job-clusters/job-clusters.contract.d.ts +112 -112
  55. package/dist/jobs/job-moderation-fields.spec.d.ts +2 -0
  56. package/dist/jobs/job-moderation-fields.spec.d.ts.map +1 -0
  57. package/dist/jobs/job-moderation-fields.spec.js +72 -0
  58. package/dist/jobs/jobs.contract.d.ts +4773 -4525
  59. package/dist/jobs/jobs.contract.d.ts.map +1 -1
  60. package/dist/jobs/jobs.contract.js +48 -0
  61. package/dist/kpi-impersonation/kpi-impersonation.contract.d.ts +141 -141
  62. package/dist/lead-assignments/lead-assignments.contract.d.ts +911 -911
  63. package/dist/lead-distribution/agent-lead-distribution.contract.d.ts +209 -209
  64. package/dist/lead-distribution/lead-distribution-config.contract.d.ts +77 -77
  65. package/dist/leads/leads.contract.d.ts +283 -283
  66. package/dist/locations/locations.contract.d.ts +49 -49
  67. package/dist/notifications/notifications.contract.d.ts +67 -67
  68. package/dist/offices/offices.contract.d.ts +34 -34
  69. package/dist/outreach/__tests__/outreach-contract-additions.spec.js +11 -0
  70. package/dist/outreach/__tests__/outreach-requests.contract.spec.js +50 -0
  71. package/dist/outreach/__tests__/outreach-routes.test.js +14 -3
  72. package/dist/outreach/lab-outreach.contract.d.ts +1110 -0
  73. package/dist/outreach/lab-outreach.contract.d.ts.map +1 -0
  74. package/dist/outreach/lab-outreach.contract.js +174 -0
  75. package/dist/outreach/lab-outreach.contract.spec.d.ts +2 -0
  76. package/dist/outreach/lab-outreach.contract.spec.d.ts.map +1 -0
  77. package/dist/outreach/lab-outreach.contract.spec.js +90 -0
  78. package/dist/outreach/outreach-requests.contract.d.ts +946 -217
  79. package/dist/outreach/outreach-requests.contract.d.ts.map +1 -1
  80. package/dist/outreach/outreach-requests.contract.js +23 -3
  81. package/dist/outreach/outreach-requests.schemas.d.ts +65 -10
  82. package/dist/outreach/outreach-requests.schemas.d.ts.map +1 -1
  83. package/dist/outreach/outreach-requests.schemas.js +6 -0
  84. package/dist/outreach/outreach.contract.d.ts +300 -38
  85. package/dist/outreach/outreach.contract.d.ts.map +1 -1
  86. package/dist/outreach/outreach.contract.js +18 -0
  87. package/dist/outreach/outreach.contract.spec.d.ts +2 -0
  88. package/dist/outreach/outreach.contract.spec.d.ts.map +1 -0
  89. package/dist/outreach/outreach.contract.spec.js +57 -0
  90. package/dist/outreach/outreach.schemas.d.ts +2 -2
  91. package/dist/own-research/own-research.contract.d.ts +775 -775
  92. package/dist/postcodes/postcodes.contract.d.ts +24 -24
  93. package/dist/proofs/proof-type.enum.d.ts +4 -4
  94. package/dist/proofs/proofs.contract.d.ts +363 -363
  95. package/dist/proofs/proofs.dtos.d.ts +124 -124
  96. package/dist/qualifications/qualifications.contract.d.ts +38 -38
  97. package/dist/relay-pods/relay-lab-fleet.contract.d.ts +829 -0
  98. package/dist/relay-pods/relay-lab-fleet.contract.d.ts.map +1 -0
  99. package/dist/relay-pods/relay-lab-fleet.contract.js +79 -0
  100. package/dist/relay-pods/relay-lab-fleet.contract.spec.d.ts +2 -0
  101. package/dist/relay-pods/relay-lab-fleet.contract.spec.d.ts.map +1 -0
  102. package/dist/relay-pods/relay-lab-fleet.contract.spec.js +146 -0
  103. package/dist/relay-pods/relay-lab-fleet.schemas.d.ts +443 -0
  104. package/dist/relay-pods/relay-lab-fleet.schemas.d.ts.map +1 -0
  105. package/dist/relay-pods/relay-lab-fleet.schemas.js +138 -0
  106. package/dist/relay-pods/relay-pod-sessions.contract.d.ts +680 -0
  107. package/dist/relay-pods/relay-pod-sessions.contract.d.ts.map +1 -0
  108. package/dist/relay-pods/relay-pod-sessions.contract.js +67 -0
  109. package/dist/relay-pods/relay-pod-sessions.contract.spec.d.ts +2 -0
  110. package/dist/relay-pods/relay-pod-sessions.contract.spec.d.ts.map +1 -0
  111. package/dist/relay-pods/relay-pod-sessions.contract.spec.js +129 -0
  112. package/dist/relay-pods/relay-pods.contract.d.ts +1569 -0
  113. package/dist/relay-pods/relay-pods.contract.d.ts.map +1 -0
  114. package/dist/relay-pods/relay-pods.contract.js +188 -0
  115. package/dist/relay-pods/relay-pods.contract.spec.d.ts +2 -0
  116. package/dist/relay-pods/relay-pods.contract.spec.d.ts.map +1 -0
  117. package/dist/relay-pods/relay-pods.contract.spec.js +141 -0
  118. package/dist/relay-pods/relay-pods.schemas.d.ts +415 -0
  119. package/dist/relay-pods/relay-pods.schemas.d.ts.map +1 -0
  120. package/dist/relay-pods/relay-pods.schemas.js +112 -0
  121. package/dist/shared/live-booking.schema.d.ts +4 -4
  122. package/dist/shared/summary-schemas.d.ts +6 -6
  123. package/dist/sheets-sync/sheets-sync.contract.d.ts +939 -939
  124. package/dist/telegram/telegram.contract.d.ts +22 -22
  125. package/dist/trades/trades.contract.d.ts +90 -90
  126. package/dist/user-access-grants/user-access-grants.contract.d.ts +165 -165
  127. package/dist/users/__tests__/assignable-roles.spec.d.ts +2 -0
  128. package/dist/users/__tests__/assignable-roles.spec.d.ts.map +1 -0
  129. package/dist/users/__tests__/assignable-roles.spec.js +41 -0
  130. package/dist/users/users.contract.d.ts +399 -393
  131. package/dist/users/users.contract.d.ts.map +1 -1
  132. package/dist/users/users.contract.js +11 -0
  133. package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts +585 -527
  134. package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts.map +1 -1
  135. package/dist/worker-merge-proposals/worker-merge-proposals.contract.d.ts +278 -236
  136. package/dist/worker-merge-proposals/worker-merge-proposals.contract.d.ts.map +1 -1
  137. package/dist/worker-merge-proposals/worker-merge-proposals.contract.js +1 -0
  138. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.d.ts +153 -153
  139. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.schemas.d.ts +59 -59
  140. package/dist/workers/workers.contract.d.ts +2919 -2919
  141. package/package.json +1 -1
  142. package/dist/bookings/bookings.contract.spec.d.ts +0 -2
  143. package/dist/bookings/bookings.contract.spec.d.ts.map +0 -1
  144. package/dist/bookings/bookings.contract.spec.js +0 -11
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.relayPodSessionsContract = exports.RevokeRelayPodSessionResponseSchema = exports.ExchangeRelayPodSessionBodySchema = exports.RelayPodSessionValidationSchema = exports.RelayPodSessionExchangeSchema = void 0;
4
+ const core_1 = require("@ts-rest/core");
5
+ const zod_1 = require("zod");
6
+ const error_schemas_1 = require("../common/error-schemas");
7
+ const relay_pods_schemas_1 = require("./relay-pods.schemas");
8
+ var relay_pods_schemas_2 = require("./relay-pods.schemas");
9
+ Object.defineProperty(exports, "RelayPodSessionExchangeSchema", { enumerable: true, get: function () { return relay_pods_schemas_2.RelayPodSessionExchangeSchema; } });
10
+ Object.defineProperty(exports, "RelayPodSessionValidationSchema", { enumerable: true, get: function () { return relay_pods_schemas_2.RelayPodSessionValidationSchema; } });
11
+ const c = (0, core_1.initContract)();
12
+ exports.ExchangeRelayPodSessionBodySchema = zod_1.z
13
+ .object({
14
+ code: zod_1.z.string().min(1),
15
+ })
16
+ .strict();
17
+ exports.RevokeRelayPodSessionResponseSchema = zod_1.z
18
+ .object({
19
+ revoked: zod_1.z.literal(true),
20
+ })
21
+ .strict();
22
+ const sessionPathParams = zod_1.z.object({ id: zod_1.z.string().uuid() }).strict();
23
+ exports.relayPodSessionsContract = c.router({
24
+ exchange: {
25
+ method: 'POST',
26
+ path: '/relay-pod-sessions/exchange',
27
+ body: exports.ExchangeRelayPodSessionBodySchema,
28
+ responses: {
29
+ 200: relay_pods_schemas_1.RelayPodSessionExchangeSchema,
30
+ 404: error_schemas_1.ErrorResponseSchema,
31
+ },
32
+ summary: 'Exchange a one-time Relay pod login code',
33
+ metadata: { tags: ['Relay Pod Sessions'] },
34
+ },
35
+ validate: {
36
+ method: 'POST',
37
+ path: '/relay-pod-sessions/:id/validate',
38
+ pathParams: sessionPathParams,
39
+ body: zod_1.z.object({}).strict(),
40
+ responses: {
41
+ 200: relay_pods_schemas_1.RelayPodSessionValidationSchema,
42
+ 404: error_schemas_1.ErrorResponseSchema,
43
+ },
44
+ summary: 'Validate and refresh a Relay pod session',
45
+ metadata: { tags: ['Relay Pod Sessions'] },
46
+ },
47
+ revoke: {
48
+ method: 'POST',
49
+ path: '/relay-pod-sessions/:id/revoke',
50
+ pathParams: sessionPathParams,
51
+ body: zod_1.z.object({}).strict(),
52
+ responses: {
53
+ 200: exports.RevokeRelayPodSessionResponseSchema,
54
+ 404: error_schemas_1.ErrorResponseSchema,
55
+ },
56
+ summary: 'Revoke a Relay pod session',
57
+ metadata: { tags: ['Relay Pod Sessions'] },
58
+ },
59
+ }, {
60
+ pathPrefix: '/v2',
61
+ commonResponses: {
62
+ 400: error_schemas_1.ErrorResponseSchema,
63
+ 401: error_schemas_1.ErrorResponseSchema,
64
+ 403: error_schemas_1.ErrorResponseSchema,
65
+ 500: error_schemas_1.ErrorResponseSchema,
66
+ },
67
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=relay-pod-sessions.contract.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay-pod-sessions.contract.spec.d.ts","sourceRoot":"","sources":["../../contracts/relay-pods/relay-pod-sessions.contract.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bun_test_1 = require("bun:test");
4
+ const index_1 = require("../index");
5
+ const relay_pod_sessions_contract_1 = require("./relay-pod-sessions.contract");
6
+ const exchange = {
7
+ sessionId: '11111111-1111-4111-8111-111111111111',
8
+ expiresAt: '2026-08-01T17:00:00.000Z',
9
+ accessType: 'OWNER',
10
+ user: {
11
+ id: '22222222-2222-4222-8222-222222222222',
12
+ email: 'owner@example.com',
13
+ displayName: 'Relay Owner',
14
+ impersonatedBy: null,
15
+ },
16
+ pod: {
17
+ id: '33333333-3333-4333-8333-333333333333',
18
+ slug: 'pod-01',
19
+ displayName: 'Pod 01',
20
+ ownerUserId: '22222222-2222-4222-8222-222222222222',
21
+ ownerName: 'Relay Owner',
22
+ publicBaseUrl: 'https://pod.test',
23
+ status: 'ACTIVE',
24
+ },
25
+ rules: [
26
+ {
27
+ action: 'manage',
28
+ subject: 'RelayPod',
29
+ conditions: { id: '33333333-3333-4333-8333-333333333333' },
30
+ },
31
+ ],
32
+ };
33
+ (0, bun_test_1.describe)('relay pod session schemas', () => {
34
+ (0, bun_test_1.it)('accepts a non-empty opaque login code', () => {
35
+ (0, bun_test_1.expect)(relay_pod_sessions_contract_1.ExchangeRelayPodSessionBodySchema.parse({ code: 'opaque.login-code' })
36
+ .code).toBe('opaque.login-code');
37
+ (0, bun_test_1.expect)(relay_pod_sessions_contract_1.ExchangeRelayPodSessionBodySchema.safeParse({ code: '' }).success).toBe(false);
38
+ });
39
+ (0, bun_test_1.it)('returns resolved ability rules without central role data or code hashes', () => {
40
+ (0, bun_test_1.expect)(relay_pod_sessions_contract_1.RelayPodSessionExchangeSchema.parse(exchange).rules).toEqual(exchange.rules);
41
+ (0, bun_test_1.expect)(relay_pod_sessions_contract_1.RelayPodSessionExchangeSchema.safeParse({
42
+ ...exchange,
43
+ roles: ['OUTREACH'],
44
+ codeHash: 'must-not-leak',
45
+ }).success).toBe(false);
46
+ });
47
+ (0, bun_test_1.it)('validates to the same replacement resolved-rule snapshot', () => {
48
+ (0, bun_test_1.expect)(relay_pod_sessions_contract_1.RelayPodSessionValidationSchema.parse(exchange).rules).toEqual(exchange.rules);
49
+ (0, bun_test_1.expect)(relay_pod_sessions_contract_1.RelayPodSessionValidationSchema.safeParse({
50
+ ...exchange,
51
+ secretHash: 'must-not-leak',
52
+ token: 'must-not-leak',
53
+ }).success).toBe(false);
54
+ });
55
+ bun_test_1.it.each([
56
+ ['exchange', 'secretHash', relay_pod_sessions_contract_1.RelayPodSessionExchangeSchema],
57
+ ['exchange', 'codeHash', relay_pod_sessions_contract_1.RelayPodSessionExchangeSchema],
58
+ ['exchange', 'token', relay_pod_sessions_contract_1.RelayPodSessionExchangeSchema],
59
+ ['validation', 'secretHash', relay_pod_sessions_contract_1.RelayPodSessionValidationSchema],
60
+ ['validation', 'codeHash', relay_pod_sessions_contract_1.RelayPodSessionValidationSchema],
61
+ ['validation', 'token', relay_pod_sessions_contract_1.RelayPodSessionValidationSchema],
62
+ ])('%s rejects nested %s keys in resolved rule conditions', (_response, forbiddenKey, schema) => {
63
+ (0, bun_test_1.expect)(schema.safeParse({
64
+ ...exchange,
65
+ rules: [
66
+ {
67
+ action: 'manage',
68
+ subject: 'RelayPod',
69
+ conditions: {
70
+ anyOf: [{ nested: { [forbiddenKey]: 'must-not-leak' } }],
71
+ },
72
+ },
73
+ ],
74
+ }).success).toBe(false);
75
+ });
76
+ (0, bun_test_1.it)('retains generic nested CASL conditions without overmatching key names', () => {
77
+ const parsed = relay_pod_sessions_contract_1.RelayPodSessionExchangeSchema.parse({
78
+ ...exchange,
79
+ rules: [
80
+ {
81
+ action: 'manage',
82
+ subject: 'RelayPod',
83
+ conditions: {
84
+ anyOf: [
85
+ {
86
+ tokenIdentifier: 'pod_01',
87
+ secretHashAlgorithm: 'sha256',
88
+ },
89
+ ],
90
+ },
91
+ },
92
+ ],
93
+ });
94
+ (0, bun_test_1.expect)(parsed.rules[0].conditions).toEqual({
95
+ anyOf: [
96
+ {
97
+ tokenIdentifier: 'pod_01',
98
+ secretHashAlgorithm: 'sha256',
99
+ },
100
+ ],
101
+ });
102
+ });
103
+ (0, bun_test_1.it)('acknowledges idempotent revocation without returning session data', () => {
104
+ (0, bun_test_1.expect)(relay_pod_sessions_contract_1.RevokeRelayPodSessionResponseSchema.parse({ revoked: true })).toEqual({
105
+ revoked: true,
106
+ });
107
+ (0, bun_test_1.expect)(relay_pod_sessions_contract_1.RevokeRelayPodSessionResponseSchema.safeParse({
108
+ revoked: true,
109
+ sessionId: exchange.sessionId,
110
+ }).success).toBe(false);
111
+ });
112
+ });
113
+ (0, bun_test_1.describe)('relayPodSessionsContract routes', () => {
114
+ (0, bun_test_1.it)('publishes exchange, validate, and revoke under /v2', () => {
115
+ (0, bun_test_1.expect)(relay_pod_sessions_contract_1.relayPodSessionsContract.exchange).toMatchObject({
116
+ method: 'POST',
117
+ path: '/v2/relay-pod-sessions/exchange',
118
+ });
119
+ (0, bun_test_1.expect)(relay_pod_sessions_contract_1.relayPodSessionsContract.validate).toMatchObject({
120
+ method: 'POST',
121
+ path: '/v2/relay-pod-sessions/:id/validate',
122
+ });
123
+ (0, bun_test_1.expect)(relay_pod_sessions_contract_1.relayPodSessionsContract.revoke).toMatchObject({
124
+ method: 'POST',
125
+ path: '/v2/relay-pod-sessions/:id/revoke',
126
+ });
127
+ (0, bun_test_1.expect)(index_1.apiContractRouter.RelayPodSessions.exchange.path).toBe('/v2/relay-pod-sessions/exchange');
128
+ });
129
+ });