@runfile-ai/schemas 0.1.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 (41) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +163 -0
  3. package/dist/canonical.d.ts +32 -0
  4. package/dist/canonical.d.ts.map +1 -0
  5. package/dist/canonical.js +46 -0
  6. package/dist/canonical.js.map +1 -0
  7. package/dist/control-mapping.d.ts +85 -0
  8. package/dist/control-mapping.d.ts.map +1 -0
  9. package/dist/control-mapping.js +31 -0
  10. package/dist/control-mapping.js.map +1 -0
  11. package/dist/event.d.ts +866 -0
  12. package/dist/event.d.ts.map +1 -0
  13. package/dist/event.js +289 -0
  14. package/dist/event.js.map +1 -0
  15. package/dist/evidence.d.ts +955 -0
  16. package/dist/evidence.d.ts.map +1 -0
  17. package/dist/evidence.js +31 -0
  18. package/dist/evidence.js.map +1 -0
  19. package/dist/index.d.ts +8 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +8 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/ingest.d.ts +1595 -0
  24. package/dist/ingest.d.ts.map +1 -0
  25. package/dist/ingest.js +177 -0
  26. package/dist/ingest.js.map +1 -0
  27. package/dist/manifest.d.ts +110 -0
  28. package/dist/manifest.d.ts.map +1 -0
  29. package/dist/manifest.js +46 -0
  30. package/dist/manifest.js.map +1 -0
  31. package/dist/vault.d.ts +459 -0
  32. package/dist/vault.d.ts.map +1 -0
  33. package/dist/vault.js +188 -0
  34. package/dist/vault.js.map +1 -0
  35. package/generated/json-schema/control_mapping.json +107 -0
  36. package/generated/json-schema/event.json +600 -0
  37. package/generated/json-schema/evidence.json +721 -0
  38. package/generated/json-schema/ingest.json +800 -0
  39. package/generated/json-schema/manifest.json +148 -0
  40. package/generated/json-schema/vault.json +468 -0
  41. package/package.json +59 -0
@@ -0,0 +1,459 @@
1
+ import { z } from 'zod';
2
+ export declare const ClassificationEnum: z.ZodEnum<["person_name", "email", "phone", "address", "dob", "tax_id_partial", "account_id", "user_handle", "other_identifier"]>;
3
+ export type Classification = z.infer<typeof ClassificationEnum>;
4
+ export declare const TokenizeRequestSchema: z.ZodObject<{
5
+ value: z.ZodString;
6
+ classification: z.ZodEnum<["person_name", "email", "phone", "address", "dob", "tax_id_partial", "account_id", "user_handle", "other_identifier"]>;
7
+ context: z.ZodOptional<z.ZodObject<{
8
+ normalize: z.ZodDefault<z.ZodBoolean>;
9
+ }, "strict", z.ZodTypeAny, {
10
+ normalize: boolean;
11
+ }, {
12
+ normalize?: boolean | undefined;
13
+ }>>;
14
+ }, "strict", z.ZodTypeAny, {
15
+ value: string;
16
+ classification: "email" | "person_name" | "phone" | "address" | "dob" | "tax_id_partial" | "account_id" | "user_handle" | "other_identifier";
17
+ context?: {
18
+ normalize: boolean;
19
+ } | undefined;
20
+ }, {
21
+ value: string;
22
+ classification: "email" | "person_name" | "phone" | "address" | "dob" | "tax_id_partial" | "account_id" | "user_handle" | "other_identifier";
23
+ context?: {
24
+ normalize?: boolean | undefined;
25
+ } | undefined;
26
+ }>;
27
+ export type TokenizeRequest = z.infer<typeof TokenizeRequestSchema>;
28
+ export declare const TokenizeResponseSchema: z.ZodObject<{
29
+ token: z.ZodString;
30
+ created: z.ZodBoolean;
31
+ }, "strict", z.ZodTypeAny, {
32
+ token: string;
33
+ created: boolean;
34
+ }, {
35
+ token: string;
36
+ created: boolean;
37
+ }>;
38
+ export type TokenizeResponse = z.infer<typeof TokenizeResponseSchema>;
39
+ export declare const TokenizeBatchRequestSchema: z.ZodObject<{
40
+ items: z.ZodArray<z.ZodObject<{
41
+ value: z.ZodString;
42
+ classification: z.ZodEnum<["person_name", "email", "phone", "address", "dob", "tax_id_partial", "account_id", "user_handle", "other_identifier"]>;
43
+ context: z.ZodOptional<z.ZodObject<{
44
+ normalize: z.ZodDefault<z.ZodBoolean>;
45
+ }, "strict", z.ZodTypeAny, {
46
+ normalize: boolean;
47
+ }, {
48
+ normalize?: boolean | undefined;
49
+ }>>;
50
+ }, "strict", z.ZodTypeAny, {
51
+ value: string;
52
+ classification: "email" | "person_name" | "phone" | "address" | "dob" | "tax_id_partial" | "account_id" | "user_handle" | "other_identifier";
53
+ context?: {
54
+ normalize: boolean;
55
+ } | undefined;
56
+ }, {
57
+ value: string;
58
+ classification: "email" | "person_name" | "phone" | "address" | "dob" | "tax_id_partial" | "account_id" | "user_handle" | "other_identifier";
59
+ context?: {
60
+ normalize?: boolean | undefined;
61
+ } | undefined;
62
+ }>, "many">;
63
+ }, "strict", z.ZodTypeAny, {
64
+ items: {
65
+ value: string;
66
+ classification: "email" | "person_name" | "phone" | "address" | "dob" | "tax_id_partial" | "account_id" | "user_handle" | "other_identifier";
67
+ context?: {
68
+ normalize: boolean;
69
+ } | undefined;
70
+ }[];
71
+ }, {
72
+ items: {
73
+ value: string;
74
+ classification: "email" | "person_name" | "phone" | "address" | "dob" | "tax_id_partial" | "account_id" | "user_handle" | "other_identifier";
75
+ context?: {
76
+ normalize?: boolean | undefined;
77
+ } | undefined;
78
+ }[];
79
+ }>;
80
+ export type TokenizeBatchRequest = z.infer<typeof TokenizeBatchRequestSchema>;
81
+ export declare const TokenizeBatchResponseSchema: z.ZodObject<{
82
+ results: z.ZodArray<z.ZodObject<{
83
+ token: z.ZodString;
84
+ created: z.ZodBoolean;
85
+ }, "strict", z.ZodTypeAny, {
86
+ token: string;
87
+ created: boolean;
88
+ }, {
89
+ token: string;
90
+ created: boolean;
91
+ }>, "many">;
92
+ }, "strict", z.ZodTypeAny, {
93
+ results: {
94
+ token: string;
95
+ created: boolean;
96
+ }[];
97
+ }, {
98
+ results: {
99
+ token: string;
100
+ created: boolean;
101
+ }[];
102
+ }>;
103
+ export type TokenizeBatchResponse = z.infer<typeof TokenizeBatchResponseSchema>;
104
+ export declare const RequesterRoleEnum: z.ZodEnum<["compliance_officer", "internal_auditor", "external_auditor", "workspace_admin", "workspace_owner"]>;
105
+ export declare const RequesterContextSchema: z.ZodObject<{
106
+ tenant_id: z.ZodString;
107
+ member_id: z.ZodString;
108
+ role: z.ZodEnum<["compliance_officer", "internal_auditor", "external_auditor", "workspace_admin", "workspace_owner"]>;
109
+ session_id: z.ZodString;
110
+ mfa_age_seconds: z.ZodNumber;
111
+ ip_address: z.ZodOptional<z.ZodString>;
112
+ user_agent: z.ZodOptional<z.ZodString>;
113
+ }, "strict", z.ZodTypeAny, {
114
+ tenant_id: string;
115
+ member_id: string;
116
+ role: "compliance_officer" | "internal_auditor" | "external_auditor" | "workspace_admin" | "workspace_owner";
117
+ session_id: string;
118
+ mfa_age_seconds: number;
119
+ ip_address?: string | undefined;
120
+ user_agent?: string | undefined;
121
+ }, {
122
+ tenant_id: string;
123
+ member_id: string;
124
+ role: "compliance_officer" | "internal_auditor" | "external_auditor" | "workspace_admin" | "workspace_owner";
125
+ session_id: string;
126
+ mfa_age_seconds: number;
127
+ ip_address?: string | undefined;
128
+ user_agent?: string | undefined;
129
+ }>;
130
+ export type RequesterContext = z.infer<typeof RequesterContextSchema>;
131
+ export declare const ReasonCodeEnum: z.ZodEnum<["sample_review", "finding_investigation", "escalation_workflow", "rtbf_processing", "regulatory_inquiry", "other"]>;
132
+ export declare const JustificationSchema: z.ZodObject<{
133
+ engagement_id: z.ZodString;
134
+ reason_code: z.ZodEnum<["sample_review", "finding_investigation", "escalation_workflow", "rtbf_processing", "regulatory_inquiry", "other"]>;
135
+ free_text: z.ZodString;
136
+ approver_member_id: z.ZodOptional<z.ZodString>;
137
+ }, "strict", z.ZodTypeAny, {
138
+ engagement_id: string;
139
+ reason_code: "other" | "sample_review" | "finding_investigation" | "escalation_workflow" | "rtbf_processing" | "regulatory_inquiry";
140
+ free_text: string;
141
+ approver_member_id?: string | undefined;
142
+ }, {
143
+ engagement_id: string;
144
+ reason_code: "other" | "sample_review" | "finding_investigation" | "escalation_workflow" | "rtbf_processing" | "regulatory_inquiry";
145
+ free_text: string;
146
+ approver_member_id?: string | undefined;
147
+ }>;
148
+ export type Justification = z.infer<typeof JustificationSchema>;
149
+ export declare const ResolveRequestSchema: z.ZodObject<{
150
+ token: z.ZodString;
151
+ requester: z.ZodObject<{
152
+ tenant_id: z.ZodString;
153
+ member_id: z.ZodString;
154
+ role: z.ZodEnum<["compliance_officer", "internal_auditor", "external_auditor", "workspace_admin", "workspace_owner"]>;
155
+ session_id: z.ZodString;
156
+ mfa_age_seconds: z.ZodNumber;
157
+ ip_address: z.ZodOptional<z.ZodString>;
158
+ user_agent: z.ZodOptional<z.ZodString>;
159
+ }, "strict", z.ZodTypeAny, {
160
+ tenant_id: string;
161
+ member_id: string;
162
+ role: "compliance_officer" | "internal_auditor" | "external_auditor" | "workspace_admin" | "workspace_owner";
163
+ session_id: string;
164
+ mfa_age_seconds: number;
165
+ ip_address?: string | undefined;
166
+ user_agent?: string | undefined;
167
+ }, {
168
+ tenant_id: string;
169
+ member_id: string;
170
+ role: "compliance_officer" | "internal_auditor" | "external_auditor" | "workspace_admin" | "workspace_owner";
171
+ session_id: string;
172
+ mfa_age_seconds: number;
173
+ ip_address?: string | undefined;
174
+ user_agent?: string | undefined;
175
+ }>;
176
+ justification: z.ZodObject<{
177
+ engagement_id: z.ZodString;
178
+ reason_code: z.ZodEnum<["sample_review", "finding_investigation", "escalation_workflow", "rtbf_processing", "regulatory_inquiry", "other"]>;
179
+ free_text: z.ZodString;
180
+ approver_member_id: z.ZodOptional<z.ZodString>;
181
+ }, "strict", z.ZodTypeAny, {
182
+ engagement_id: string;
183
+ reason_code: "other" | "sample_review" | "finding_investigation" | "escalation_workflow" | "rtbf_processing" | "regulatory_inquiry";
184
+ free_text: string;
185
+ approver_member_id?: string | undefined;
186
+ }, {
187
+ engagement_id: string;
188
+ reason_code: "other" | "sample_review" | "finding_investigation" | "escalation_workflow" | "rtbf_processing" | "regulatory_inquiry";
189
+ free_text: string;
190
+ approver_member_id?: string | undefined;
191
+ }>;
192
+ }, "strict", z.ZodTypeAny, {
193
+ token: string;
194
+ requester: {
195
+ tenant_id: string;
196
+ member_id: string;
197
+ role: "compliance_officer" | "internal_auditor" | "external_auditor" | "workspace_admin" | "workspace_owner";
198
+ session_id: string;
199
+ mfa_age_seconds: number;
200
+ ip_address?: string | undefined;
201
+ user_agent?: string | undefined;
202
+ };
203
+ justification: {
204
+ engagement_id: string;
205
+ reason_code: "other" | "sample_review" | "finding_investigation" | "escalation_workflow" | "rtbf_processing" | "regulatory_inquiry";
206
+ free_text: string;
207
+ approver_member_id?: string | undefined;
208
+ };
209
+ }, {
210
+ token: string;
211
+ requester: {
212
+ tenant_id: string;
213
+ member_id: string;
214
+ role: "compliance_officer" | "internal_auditor" | "external_auditor" | "workspace_admin" | "workspace_owner";
215
+ session_id: string;
216
+ mfa_age_seconds: number;
217
+ ip_address?: string | undefined;
218
+ user_agent?: string | undefined;
219
+ };
220
+ justification: {
221
+ engagement_id: string;
222
+ reason_code: "other" | "sample_review" | "finding_investigation" | "escalation_workflow" | "rtbf_processing" | "regulatory_inquiry";
223
+ free_text: string;
224
+ approver_member_id?: string | undefined;
225
+ };
226
+ }>;
227
+ export type ResolveRequest = z.infer<typeof ResolveRequestSchema>;
228
+ export declare const ResolveResponseSchema: z.ZodObject<{
229
+ token: z.ZodString;
230
+ value: z.ZodString;
231
+ classification: z.ZodString;
232
+ created_at: z.ZodOptional<z.ZodString>;
233
+ audit_event_id: z.ZodString;
234
+ }, "strict", z.ZodTypeAny, {
235
+ value: string;
236
+ classification: string;
237
+ token: string;
238
+ audit_event_id: string;
239
+ created_at?: string | undefined;
240
+ }, {
241
+ value: string;
242
+ classification: string;
243
+ token: string;
244
+ audit_event_id: string;
245
+ created_at?: string | undefined;
246
+ }>;
247
+ export type ResolveResponse = z.infer<typeof ResolveResponseSchema>;
248
+ export declare const ResolveBatchRequestSchema: z.ZodObject<{
249
+ tokens: z.ZodArray<z.ZodString, "many">;
250
+ requester: z.ZodObject<{
251
+ tenant_id: z.ZodString;
252
+ member_id: z.ZodString;
253
+ role: z.ZodEnum<["compliance_officer", "internal_auditor", "external_auditor", "workspace_admin", "workspace_owner"]>;
254
+ session_id: z.ZodString;
255
+ mfa_age_seconds: z.ZodNumber;
256
+ ip_address: z.ZodOptional<z.ZodString>;
257
+ user_agent: z.ZodOptional<z.ZodString>;
258
+ }, "strict", z.ZodTypeAny, {
259
+ tenant_id: string;
260
+ member_id: string;
261
+ role: "compliance_officer" | "internal_auditor" | "external_auditor" | "workspace_admin" | "workspace_owner";
262
+ session_id: string;
263
+ mfa_age_seconds: number;
264
+ ip_address?: string | undefined;
265
+ user_agent?: string | undefined;
266
+ }, {
267
+ tenant_id: string;
268
+ member_id: string;
269
+ role: "compliance_officer" | "internal_auditor" | "external_auditor" | "workspace_admin" | "workspace_owner";
270
+ session_id: string;
271
+ mfa_age_seconds: number;
272
+ ip_address?: string | undefined;
273
+ user_agent?: string | undefined;
274
+ }>;
275
+ justification: z.ZodObject<{
276
+ engagement_id: z.ZodString;
277
+ reason_code: z.ZodEnum<["sample_review", "finding_investigation", "escalation_workflow", "rtbf_processing", "regulatory_inquiry", "other"]>;
278
+ free_text: z.ZodString;
279
+ approver_member_id: z.ZodOptional<z.ZodString>;
280
+ }, "strict", z.ZodTypeAny, {
281
+ engagement_id: string;
282
+ reason_code: "other" | "sample_review" | "finding_investigation" | "escalation_workflow" | "rtbf_processing" | "regulatory_inquiry";
283
+ free_text: string;
284
+ approver_member_id?: string | undefined;
285
+ }, {
286
+ engagement_id: string;
287
+ reason_code: "other" | "sample_review" | "finding_investigation" | "escalation_workflow" | "rtbf_processing" | "regulatory_inquiry";
288
+ free_text: string;
289
+ approver_member_id?: string | undefined;
290
+ }>;
291
+ }, "strict", z.ZodTypeAny, {
292
+ requester: {
293
+ tenant_id: string;
294
+ member_id: string;
295
+ role: "compliance_officer" | "internal_auditor" | "external_auditor" | "workspace_admin" | "workspace_owner";
296
+ session_id: string;
297
+ mfa_age_seconds: number;
298
+ ip_address?: string | undefined;
299
+ user_agent?: string | undefined;
300
+ };
301
+ justification: {
302
+ engagement_id: string;
303
+ reason_code: "other" | "sample_review" | "finding_investigation" | "escalation_workflow" | "rtbf_processing" | "regulatory_inquiry";
304
+ free_text: string;
305
+ approver_member_id?: string | undefined;
306
+ };
307
+ tokens: string[];
308
+ }, {
309
+ requester: {
310
+ tenant_id: string;
311
+ member_id: string;
312
+ role: "compliance_officer" | "internal_auditor" | "external_auditor" | "workspace_admin" | "workspace_owner";
313
+ session_id: string;
314
+ mfa_age_seconds: number;
315
+ ip_address?: string | undefined;
316
+ user_agent?: string | undefined;
317
+ };
318
+ justification: {
319
+ engagement_id: string;
320
+ reason_code: "other" | "sample_review" | "finding_investigation" | "escalation_workflow" | "rtbf_processing" | "regulatory_inquiry";
321
+ free_text: string;
322
+ approver_member_id?: string | undefined;
323
+ };
324
+ tokens: string[];
325
+ }>;
326
+ export type ResolveBatchRequest = z.infer<typeof ResolveBatchRequestSchema>;
327
+ export declare const ResolveBatchResultStatusEnum: z.ZodEnum<["resolved", "not_found", "tombstoned", "denied"]>;
328
+ export declare const TombstoneReasonEnum: z.ZodEnum<["retention_expired", "rtbf_processed", "tenant_offboarded"]>;
329
+ export declare const ResolveBatchResultSchema: z.ZodObject<{
330
+ token: z.ZodString;
331
+ status: z.ZodEnum<["resolved", "not_found", "tombstoned", "denied"]>;
332
+ value: z.ZodOptional<z.ZodString>;
333
+ tombstone_reason: z.ZodOptional<z.ZodEnum<["retention_expired", "rtbf_processed", "tenant_offboarded"]>>;
334
+ denial_reason: z.ZodOptional<z.ZodString>;
335
+ audit_event_id: z.ZodOptional<z.ZodString>;
336
+ }, "strict", z.ZodTypeAny, {
337
+ status: "denied" | "resolved" | "not_found" | "tombstoned";
338
+ token: string;
339
+ value?: string | undefined;
340
+ audit_event_id?: string | undefined;
341
+ tombstone_reason?: "retention_expired" | "rtbf_processed" | "tenant_offboarded" | undefined;
342
+ denial_reason?: string | undefined;
343
+ }, {
344
+ status: "denied" | "resolved" | "not_found" | "tombstoned";
345
+ token: string;
346
+ value?: string | undefined;
347
+ audit_event_id?: string | undefined;
348
+ tombstone_reason?: "retention_expired" | "rtbf_processed" | "tenant_offboarded" | undefined;
349
+ denial_reason?: string | undefined;
350
+ }>;
351
+ export type ResolveBatchResult = z.infer<typeof ResolveBatchResultSchema>;
352
+ export declare const ResolveBatchResponseSchema: z.ZodObject<{
353
+ results: z.ZodArray<z.ZodObject<{
354
+ token: z.ZodString;
355
+ status: z.ZodEnum<["resolved", "not_found", "tombstoned", "denied"]>;
356
+ value: z.ZodOptional<z.ZodString>;
357
+ tombstone_reason: z.ZodOptional<z.ZodEnum<["retention_expired", "rtbf_processed", "tenant_offboarded"]>>;
358
+ denial_reason: z.ZodOptional<z.ZodString>;
359
+ audit_event_id: z.ZodOptional<z.ZodString>;
360
+ }, "strict", z.ZodTypeAny, {
361
+ status: "denied" | "resolved" | "not_found" | "tombstoned";
362
+ token: string;
363
+ value?: string | undefined;
364
+ audit_event_id?: string | undefined;
365
+ tombstone_reason?: "retention_expired" | "rtbf_processed" | "tenant_offboarded" | undefined;
366
+ denial_reason?: string | undefined;
367
+ }, {
368
+ status: "denied" | "resolved" | "not_found" | "tombstoned";
369
+ token: string;
370
+ value?: string | undefined;
371
+ audit_event_id?: string | undefined;
372
+ tombstone_reason?: "retention_expired" | "rtbf_processed" | "tenant_offboarded" | undefined;
373
+ denial_reason?: string | undefined;
374
+ }>, "many">;
375
+ }, "strict", z.ZodTypeAny, {
376
+ results: {
377
+ status: "denied" | "resolved" | "not_found" | "tombstoned";
378
+ token: string;
379
+ value?: string | undefined;
380
+ audit_event_id?: string | undefined;
381
+ tombstone_reason?: "retention_expired" | "rtbf_processed" | "tenant_offboarded" | undefined;
382
+ denial_reason?: string | undefined;
383
+ }[];
384
+ }, {
385
+ results: {
386
+ status: "denied" | "resolved" | "not_found" | "tombstoned";
387
+ token: string;
388
+ value?: string | undefined;
389
+ audit_event_id?: string | undefined;
390
+ tombstone_reason?: "retention_expired" | "rtbf_processed" | "tenant_offboarded" | undefined;
391
+ denial_reason?: string | undefined;
392
+ }[];
393
+ }>;
394
+ export type ResolveBatchResponse = z.infer<typeof ResolveBatchResponseSchema>;
395
+ export declare const LifecycleActionEnum: z.ZodEnum<["tombstone_immediately", "tombstone_at", "place_on_legal_hold", "release_legal_hold"]>;
396
+ export declare const LifecycleRequestSchema: z.ZodEffects<z.ZodObject<{
397
+ action: z.ZodEnum<["tombstone_immediately", "tombstone_at", "place_on_legal_hold", "release_legal_hold"]>;
398
+ scheduled_at: z.ZodOptional<z.ZodString>;
399
+ reason: z.ZodString;
400
+ approver_member_id: z.ZodOptional<z.ZodString>;
401
+ }, "strict", z.ZodTypeAny, {
402
+ action: "tombstone_immediately" | "tombstone_at" | "place_on_legal_hold" | "release_legal_hold";
403
+ reason: string;
404
+ approver_member_id?: string | undefined;
405
+ scheduled_at?: string | undefined;
406
+ }, {
407
+ action: "tombstone_immediately" | "tombstone_at" | "place_on_legal_hold" | "release_legal_hold";
408
+ reason: string;
409
+ approver_member_id?: string | undefined;
410
+ scheduled_at?: string | undefined;
411
+ }>, {
412
+ action: "tombstone_immediately" | "tombstone_at" | "place_on_legal_hold" | "release_legal_hold";
413
+ reason: string;
414
+ approver_member_id?: string | undefined;
415
+ scheduled_at?: string | undefined;
416
+ }, {
417
+ action: "tombstone_immediately" | "tombstone_at" | "place_on_legal_hold" | "release_legal_hold";
418
+ reason: string;
419
+ approver_member_id?: string | undefined;
420
+ scheduled_at?: string | undefined;
421
+ }>;
422
+ export type LifecycleRequest = z.infer<typeof LifecycleRequestSchema>;
423
+ export declare const TokenStateEnum: z.ZodEnum<["active", "scheduled_for_tombstone", "tombstoned", "on_legal_hold"]>;
424
+ export declare const LifecycleResponseSchema: z.ZodObject<{
425
+ token: z.ZodString;
426
+ new_state: z.ZodEnum<["active", "scheduled_for_tombstone", "tombstoned", "on_legal_hold"]>;
427
+ scheduled_at: z.ZodOptional<z.ZodString>;
428
+ audit_event_id: z.ZodString;
429
+ }, "strict", z.ZodTypeAny, {
430
+ token: string;
431
+ audit_event_id: string;
432
+ new_state: "tombstoned" | "active" | "scheduled_for_tombstone" | "on_legal_hold";
433
+ scheduled_at?: string | undefined;
434
+ }, {
435
+ token: string;
436
+ audit_event_id: string;
437
+ new_state: "tombstoned" | "active" | "scheduled_for_tombstone" | "on_legal_hold";
438
+ scheduled_at?: string | undefined;
439
+ }>;
440
+ export type LifecycleResponse = z.infer<typeof LifecycleResponseSchema>;
441
+ export declare const VaultErrorCodeEnum: z.ZodEnum<["unauthorized", "forbidden", "classification_not_vaultable", "invalid_value", "invalid_classification", "rate_limited", "mfa_too_old", "engagement_not_active", "engagement_scope_violation", "approval_required", "approval_invalid", "token_not_found", "token_tombstoned", "lifecycle_conflict", "internal_error"]>;
442
+ export declare const VaultErrorSchema: z.ZodObject<{
443
+ error_code: z.ZodEnum<["unauthorized", "forbidden", "classification_not_vaultable", "invalid_value", "invalid_classification", "rate_limited", "mfa_too_old", "engagement_not_active", "engagement_scope_violation", "approval_required", "approval_invalid", "token_not_found", "token_tombstoned", "lifecycle_conflict", "internal_error"]>;
444
+ error_message: z.ZodString;
445
+ request_id: z.ZodOptional<z.ZodString>;
446
+ retry_after_seconds: z.ZodOptional<z.ZodNumber>;
447
+ }, "strict", z.ZodTypeAny, {
448
+ error_code: "unauthorized" | "forbidden" | "rate_limited" | "internal_error" | "classification_not_vaultable" | "invalid_value" | "invalid_classification" | "mfa_too_old" | "engagement_not_active" | "engagement_scope_violation" | "approval_required" | "approval_invalid" | "token_not_found" | "token_tombstoned" | "lifecycle_conflict";
449
+ error_message: string;
450
+ retry_after_seconds?: number | undefined;
451
+ request_id?: string | undefined;
452
+ }, {
453
+ error_code: "unauthorized" | "forbidden" | "rate_limited" | "internal_error" | "classification_not_vaultable" | "invalid_value" | "invalid_classification" | "mfa_too_old" | "engagement_not_active" | "engagement_scope_violation" | "approval_required" | "approval_invalid" | "token_not_found" | "token_tombstoned" | "lifecycle_conflict";
454
+ error_message: string;
455
+ retry_after_seconds?: number | undefined;
456
+ request_id?: string | undefined;
457
+ }>;
458
+ export type VaultError = z.infer<typeof VaultErrorSchema>;
459
+ //# sourceMappingURL=vault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../src/vault.ts"],"names":[],"mappings":"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"}
package/dist/vault.js ADDED
@@ -0,0 +1,188 @@
1
+ import { z } from 'zod';
2
+ const ulid = z.string().regex(/^[0-9A-HJKMNP-TV-Z]{26}$/);
3
+ const vaultToken = z.string().regex(/^tok_[A-Za-z0-9]{24}$/);
4
+ export const ClassificationEnum = z.enum([
5
+ 'person_name',
6
+ 'email',
7
+ 'phone',
8
+ 'address',
9
+ 'dob',
10
+ 'tax_id_partial',
11
+ 'account_id',
12
+ 'user_handle',
13
+ 'other_identifier',
14
+ ]);
15
+ export const TokenizeRequestSchema = z
16
+ .object({
17
+ value: z.string().min(1).max(4096),
18
+ classification: ClassificationEnum,
19
+ context: z
20
+ .object({
21
+ normalize: z.boolean().default(true),
22
+ })
23
+ .strict()
24
+ .optional(),
25
+ })
26
+ .strict();
27
+ export const TokenizeResponseSchema = z
28
+ .object({
29
+ token: vaultToken,
30
+ created: z.boolean(),
31
+ })
32
+ .strict();
33
+ export const TokenizeBatchRequestSchema = z
34
+ .object({
35
+ items: z.array(TokenizeRequestSchema).min(1).max(100),
36
+ })
37
+ .strict();
38
+ export const TokenizeBatchResponseSchema = z
39
+ .object({
40
+ results: z.array(TokenizeResponseSchema),
41
+ })
42
+ .strict();
43
+ export const RequesterRoleEnum = z.enum([
44
+ 'compliance_officer',
45
+ 'internal_auditor',
46
+ 'external_auditor',
47
+ 'workspace_admin',
48
+ 'workspace_owner',
49
+ ]);
50
+ export const RequesterContextSchema = z
51
+ .object({
52
+ tenant_id: z.string().regex(/^tnt_[0-9a-z]{12}$/),
53
+ member_id: z.string(),
54
+ role: RequesterRoleEnum,
55
+ session_id: z.string(),
56
+ mfa_age_seconds: z.number().int().nonnegative(),
57
+ ip_address: z.string().optional(),
58
+ user_agent: z.string().max(512).optional(),
59
+ })
60
+ .strict();
61
+ export const ReasonCodeEnum = z.enum([
62
+ 'sample_review',
63
+ 'finding_investigation',
64
+ 'escalation_workflow',
65
+ 'rtbf_processing',
66
+ 'regulatory_inquiry',
67
+ 'other',
68
+ ]);
69
+ export const JustificationSchema = z
70
+ .object({
71
+ engagement_id: z.string().regex(/^eng_[0-9A-HJKMNP-TV-Z]{26}$/),
72
+ reason_code: ReasonCodeEnum,
73
+ free_text: z.string().min(8).max(1024),
74
+ approver_member_id: z.string().optional(),
75
+ })
76
+ .strict();
77
+ export const ResolveRequestSchema = z
78
+ .object({
79
+ token: vaultToken,
80
+ requester: RequesterContextSchema,
81
+ justification: JustificationSchema,
82
+ })
83
+ .strict();
84
+ export const ResolveResponseSchema = z
85
+ .object({
86
+ token: vaultToken,
87
+ value: z.string(),
88
+ classification: z.string(),
89
+ created_at: z.string().datetime().optional(),
90
+ audit_event_id: ulid,
91
+ })
92
+ .strict();
93
+ export const ResolveBatchRequestSchema = z
94
+ .object({
95
+ tokens: z.array(vaultToken).min(1).max(100),
96
+ requester: RequesterContextSchema,
97
+ justification: JustificationSchema,
98
+ })
99
+ .strict();
100
+ export const ResolveBatchResultStatusEnum = z.enum([
101
+ 'resolved',
102
+ 'not_found',
103
+ 'tombstoned',
104
+ 'denied',
105
+ ]);
106
+ export const TombstoneReasonEnum = z.enum([
107
+ 'retention_expired',
108
+ 'rtbf_processed',
109
+ 'tenant_offboarded',
110
+ ]);
111
+ export const ResolveBatchResultSchema = z
112
+ .object({
113
+ token: vaultToken,
114
+ status: ResolveBatchResultStatusEnum,
115
+ value: z.string().optional(),
116
+ tombstone_reason: TombstoneReasonEnum.optional(),
117
+ denial_reason: z.string().optional(),
118
+ audit_event_id: ulid.optional(),
119
+ })
120
+ .strict();
121
+ export const ResolveBatchResponseSchema = z
122
+ .object({
123
+ results: z.array(ResolveBatchResultSchema),
124
+ })
125
+ .strict();
126
+ export const LifecycleActionEnum = z.enum([
127
+ 'tombstone_immediately',
128
+ 'tombstone_at',
129
+ 'place_on_legal_hold',
130
+ 'release_legal_hold',
131
+ ]);
132
+ export const LifecycleRequestSchema = z
133
+ .object({
134
+ action: LifecycleActionEnum,
135
+ scheduled_at: z.string().datetime().optional(),
136
+ reason: z.string().min(8).max(1024),
137
+ approver_member_id: z.string().optional(),
138
+ })
139
+ .strict()
140
+ .superRefine((data, ctx) => {
141
+ if (data.action === 'tombstone_at' && !data.scheduled_at) {
142
+ ctx.addIssue({
143
+ code: z.ZodIssueCode.custom,
144
+ message: 'scheduled_at is required when action=tombstone_at',
145
+ path: ['scheduled_at'],
146
+ });
147
+ }
148
+ });
149
+ export const TokenStateEnum = z.enum([
150
+ 'active',
151
+ 'scheduled_for_tombstone',
152
+ 'tombstoned',
153
+ 'on_legal_hold',
154
+ ]);
155
+ export const LifecycleResponseSchema = z
156
+ .object({
157
+ token: vaultToken,
158
+ new_state: TokenStateEnum,
159
+ scheduled_at: z.string().datetime().optional(),
160
+ audit_event_id: ulid,
161
+ })
162
+ .strict();
163
+ export const VaultErrorCodeEnum = z.enum([
164
+ 'unauthorized',
165
+ 'forbidden',
166
+ 'classification_not_vaultable',
167
+ 'invalid_value',
168
+ 'invalid_classification',
169
+ 'rate_limited',
170
+ 'mfa_too_old',
171
+ 'engagement_not_active',
172
+ 'engagement_scope_violation',
173
+ 'approval_required',
174
+ 'approval_invalid',
175
+ 'token_not_found',
176
+ 'token_tombstoned',
177
+ 'lifecycle_conflict',
178
+ 'internal_error',
179
+ ]);
180
+ export const VaultErrorSchema = z
181
+ .object({
182
+ error_code: VaultErrorCodeEnum,
183
+ error_message: z.string().max(1024),
184
+ request_id: z.string().optional(),
185
+ retry_after_seconds: z.number().int().nonnegative().optional(),
186
+ })
187
+ .strict();
188
+ //# sourceMappingURL=vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.js","sourceRoot":"","sources":["../src/vault.ts"],"names":[],"mappings":"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"}