@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 @@
1
+ {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"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"}
package/dist/ingest.js ADDED
@@ -0,0 +1,177 @@
1
+ import { z } from 'zod';
2
+ import { ActionSchema, ActorSchema, AnomalyFlagSchema, DecisionSchema, EnvironmentEnum, LabelsSchema, ModelRefSchema, PayloadEncryptionSchema, RedactionAppliedSchema, SdkMetadataSchema, SubjectSchema, WallClockSourceEnum, } from './event.js';
3
+ const sha256Hex = z.string().regex(/^sha256:[a-f0-9]{64}$/);
4
+ const ulid = z.string().regex(/^[0-9A-HJKMNP-TV-Z]{26}$/);
5
+ const semver = z.string().regex(/^\d+\.\d+\.\d+$/);
6
+ /**
7
+ * PayloadSubmission — the on-the-wire payload bundled into a BatchSubmission.
8
+ *
9
+ * Differs from the persisted `payload_ref` (in event-schema.json) as follows:
10
+ * - `s3_uri` is replaced by `s3_uri_intent` (hint; server assigns canonical URI)
11
+ * - `ciphertext_base64` carries the encrypted bytes inline (server uploads to S3)
12
+ */
13
+ export const PayloadSubmissionSchema = z
14
+ .object({
15
+ s3_uri_intent: z.string().max(1024).optional(),
16
+ sha256: sha256Hex,
17
+ size_bytes: z.number().int().min(0).max(67_108_864),
18
+ encryption: PayloadEncryptionSchema,
19
+ content_type: z
20
+ .enum([
21
+ 'application/json',
22
+ 'text/plain',
23
+ 'application/vnd.runfile.llm-request+json',
24
+ 'application/vnd.runfile.llm-response+json',
25
+ 'application/vnd.runfile.tool-call+json',
26
+ 'application/vnd.runfile.tool-result+json',
27
+ 'application/vnd.runfile.state-snapshot+json',
28
+ ])
29
+ .optional(),
30
+ redaction_applied: RedactionAppliedSchema.optional(),
31
+ ciphertext_base64: z.string().max(7_340_032),
32
+ })
33
+ .strict();
34
+ /**
35
+ * EventSubmission — an event as submitted by the SDK. Differs from RunfileEvent:
36
+ * - `tenant_id` omitted (server resolves from API key)
37
+ * - `received_at` omitted (server stamps on receipt)
38
+ * - `event_hash` omitted (server computes after chain assembly)
39
+ * - `prev_hash` → `prev_hash_intent` (advisory; server validates)
40
+ * - `payload_ref` → `PayloadSubmission` (inline ciphertext, server assigns URI)
41
+ * - `merkle_inclusion` omitted (set later by Merkle Builder)
42
+ */
43
+ export const EventSubmissionSchema = z
44
+ .object({
45
+ schema_version: semver,
46
+ event_id: ulid,
47
+ agent_run_id: z.string().regex(/^run_[0-9A-HJKMNP-TV-Z]{26}$/),
48
+ parent_event_id: ulid.nullable(),
49
+ captured_at: z.string().datetime(),
50
+ wall_clock_source: WallClockSourceEnum,
51
+ sdk: SdkMetadataSchema,
52
+ actor: ActorSchema,
53
+ action: ActionSchema,
54
+ subject: SubjectSchema,
55
+ model_ref: ModelRefSchema.optional(),
56
+ decision: DecisionSchema.optional(),
57
+ payload_ref: PayloadSubmissionSchema.optional(),
58
+ redaction_policy_version: semver,
59
+ regulatory_scope_version: semver.optional(),
60
+ anomaly_flags: z.array(AnomalyFlagSchema).max(32).optional(),
61
+ environment: EnvironmentEnum.optional(),
62
+ labels: LabelsSchema.optional(),
63
+ prev_hash_intent: sha256Hex,
64
+ })
65
+ .strict()
66
+ .superRefine((data, ctx) => {
67
+ if (data.action.kind === 'llm_call' && !data.model_ref) {
68
+ ctx.addIssue({
69
+ code: z.ZodIssueCode.custom,
70
+ message: 'model_ref is required when action.kind=llm_call',
71
+ path: ['model_ref'],
72
+ });
73
+ }
74
+ if (data.action.kind === 'decision' && !data.decision) {
75
+ ctx.addIssue({
76
+ code: z.ZodIssueCode.custom,
77
+ message: 'decision is required when action.kind=decision',
78
+ path: ['decision'],
79
+ });
80
+ }
81
+ });
82
+ export const BatchSubmissionSchema = z
83
+ .object({
84
+ batch_id: z.string().regex(/^b_[0-9A-HJKMNP-TV-Z]{26}$/),
85
+ events: z.array(EventSubmissionSchema).min(1).max(100),
86
+ })
87
+ .strict();
88
+ export const AcceptedEventSchema = z
89
+ .object({
90
+ event_id: ulid,
91
+ accepted_at: z.string().datetime(),
92
+ payload_s3_uri: z.string(),
93
+ processing_status: z.literal('queued').optional(),
94
+ })
95
+ .strict();
96
+ export const BatchAcceptedSchema = z
97
+ .object({
98
+ batch_id: z.string().regex(/^b_[0-9A-HJKMNP-TV-Z]{26}$/),
99
+ accepted_count: z.number().int().min(1),
100
+ accepted_events: z.array(AcceptedEventSchema),
101
+ received_at: z.string().datetime(),
102
+ })
103
+ .strict();
104
+ export const EventRejectionCodeEnum = z.enum([
105
+ 'schema_validation_failed',
106
+ 'duplicate_event_id',
107
+ 'payload_too_large',
108
+ 'payload_sha256_mismatch',
109
+ 'kms_key_unknown',
110
+ 'kms_key_unauthorized',
111
+ 'actor_scope_violation',
112
+ 'environment_scope_violation',
113
+ 'region_scope_violation',
114
+ 'timestamp_out_of_range',
115
+ 'missing_required_conditional_field',
116
+ ]);
117
+ export const EventRejectionSchema = z
118
+ .object({
119
+ event_id: z.string(),
120
+ error_code: EventRejectionCodeEnum,
121
+ error_message: z.string().max(1024),
122
+ field_path: z.string().optional(),
123
+ })
124
+ .strict();
125
+ export const BatchPartialSchema = z
126
+ .object({
127
+ batch_id: z.string().regex(/^b_[0-9A-HJKMNP-TV-Z]{26}$/),
128
+ accepted_count: z.number().int().min(0),
129
+ rejected_count: z.number().int().min(1),
130
+ accepted_events: z.array(AcceptedEventSchema),
131
+ rejected_events: z.array(EventRejectionSchema),
132
+ received_at: z.string().datetime(),
133
+ })
134
+ .strict();
135
+ export const ErrorCodeEnum = z.enum([
136
+ 'unauthorized',
137
+ 'forbidden',
138
+ 'bad_request',
139
+ 'schema_version_unsupported',
140
+ 'batch_too_large',
141
+ 'rate_limited',
142
+ 'quota_exceeded',
143
+ 'service_unavailable',
144
+ 'internal_error',
145
+ 'idempotency_conflict',
146
+ ]);
147
+ export const ErrorSchema = z
148
+ .object({
149
+ error_code: ErrorCodeEnum,
150
+ error_message: z.string().max(1024),
151
+ retry_after_seconds: z.number().int().nonnegative().optional(),
152
+ request_id: z.string().optional(),
153
+ })
154
+ .strict();
155
+ export const BatchRejectedSchema = z
156
+ .object({
157
+ batch_id: z.string().regex(/^b_[0-9A-HJKMNP-TV-Z]{26}$/),
158
+ error: ErrorSchema,
159
+ rejected_events: z.array(EventRejectionSchema),
160
+ })
161
+ .strict();
162
+ export const RedactionTreatmentEnum = z.enum(['redact', 'tokenize', 'encrypt']);
163
+ export const RedactionPolicySchema = z
164
+ .object({
165
+ policy_version: semver,
166
+ classification_rules: z.array(z
167
+ .object({
168
+ classification: z.string(),
169
+ treatment: RedactionTreatmentEnum,
170
+ detector: z.record(z.string(), z.unknown()).optional(),
171
+ })
172
+ .strict()),
173
+ fetched_at: z.string().datetime(),
174
+ ttl_seconds: z.number().int().positive().default(300),
175
+ })
176
+ .strict();
177
+ //# sourceMappingURL=ingest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Daily Merkle manifest — produced by the Merkle Builder per tenant per UTC day.
4
+ *
5
+ * The KMS-signed root commits to every event with `received_at` in [day_start, day_end).
6
+ * `attestation_document` is nullable in v1 (KMS-only signing); v1.5 will populate it
7
+ * with a Nitro Enclave attestation. The Verifier CLI handles both modes.
8
+ */
9
+ export declare const MerkleManifestSchema: z.ZodObject<{
10
+ manifest_version: z.ZodString;
11
+ schema_version: z.ZodString;
12
+ tenant_id: z.ZodString;
13
+ day_utc: z.ZodString;
14
+ built_at: z.ZodString;
15
+ leaf_count: z.ZodNumber;
16
+ merkle_root: z.ZodString;
17
+ prev_manifest_root: z.ZodNullable<z.ZodString>;
18
+ leaves: z.ZodArray<z.ZodObject<{
19
+ event_id: z.ZodString;
20
+ event_hash: z.ZodString;
21
+ leaf_index: z.ZodNumber;
22
+ }, "strict", z.ZodTypeAny, {
23
+ event_hash: string;
24
+ leaf_index: number;
25
+ event_id: string;
26
+ }, {
27
+ event_hash: string;
28
+ leaf_index: number;
29
+ event_id: string;
30
+ }>, "many">;
31
+ kms_signature: z.ZodObject<{
32
+ kms_key_arn: z.ZodString;
33
+ signing_algorithm: z.ZodString;
34
+ signature_base64: z.ZodString;
35
+ }, "strict", z.ZodTypeAny, {
36
+ kms_key_arn: string;
37
+ signing_algorithm: string;
38
+ signature_base64: string;
39
+ }, {
40
+ kms_key_arn: string;
41
+ signing_algorithm: string;
42
+ signature_base64: string;
43
+ }>;
44
+ attestation_document: z.ZodNullable<z.ZodString>;
45
+ rekor_entry: z.ZodOptional<z.ZodObject<{
46
+ log_index: z.ZodNumber;
47
+ log_id: z.ZodString;
48
+ inclusion_proof: z.ZodString;
49
+ }, "strict", z.ZodTypeAny, {
50
+ log_index: number;
51
+ log_id: string;
52
+ inclusion_proof: string;
53
+ }, {
54
+ log_index: number;
55
+ log_id: string;
56
+ inclusion_proof: string;
57
+ }>>;
58
+ }, "strict", z.ZodTypeAny, {
59
+ merkle_root: string;
60
+ schema_version: string;
61
+ tenant_id: string;
62
+ manifest_version: string;
63
+ day_utc: string;
64
+ built_at: string;
65
+ leaf_count: number;
66
+ prev_manifest_root: string | null;
67
+ leaves: {
68
+ event_hash: string;
69
+ leaf_index: number;
70
+ event_id: string;
71
+ }[];
72
+ kms_signature: {
73
+ kms_key_arn: string;
74
+ signing_algorithm: string;
75
+ signature_base64: string;
76
+ };
77
+ attestation_document: string | null;
78
+ rekor_entry?: {
79
+ log_index: number;
80
+ log_id: string;
81
+ inclusion_proof: string;
82
+ } | undefined;
83
+ }, {
84
+ merkle_root: string;
85
+ schema_version: string;
86
+ tenant_id: string;
87
+ manifest_version: string;
88
+ day_utc: string;
89
+ built_at: string;
90
+ leaf_count: number;
91
+ prev_manifest_root: string | null;
92
+ leaves: {
93
+ event_hash: string;
94
+ leaf_index: number;
95
+ event_id: string;
96
+ }[];
97
+ kms_signature: {
98
+ kms_key_arn: string;
99
+ signing_algorithm: string;
100
+ signature_base64: string;
101
+ };
102
+ attestation_document: string | null;
103
+ rekor_entry?: {
104
+ log_index: number;
105
+ log_id: string;
106
+ inclusion_proof: string;
107
+ } | undefined;
108
+ }>;
109
+ export type MerkleManifest = z.infer<typeof MerkleManifestSchema>;
110
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCtB,CAAC;AACZ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { z } from 'zod';
2
+ const sha256Hex = z.string().regex(/^sha256:[a-f0-9]{64}$/);
3
+ const semver = z.string().regex(/^\d+\.\d+\.\d+$/);
4
+ /**
5
+ * Daily Merkle manifest — produced by the Merkle Builder per tenant per UTC day.
6
+ *
7
+ * The KMS-signed root commits to every event with `received_at` in [day_start, day_end).
8
+ * `attestation_document` is nullable in v1 (KMS-only signing); v1.5 will populate it
9
+ * with a Nitro Enclave attestation. The Verifier CLI handles both modes.
10
+ */
11
+ export const MerkleManifestSchema = z
12
+ .object({
13
+ manifest_version: semver,
14
+ schema_version: semver,
15
+ tenant_id: z.string().regex(/^tnt_[0-9a-z]{12}$/),
16
+ day_utc: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
17
+ built_at: z.string().datetime(),
18
+ leaf_count: z.number().int().nonnegative(),
19
+ merkle_root: sha256Hex,
20
+ prev_manifest_root: sha256Hex.nullable(),
21
+ leaves: z.array(z
22
+ .object({
23
+ event_id: z.string().regex(/^[0-9A-HJKMNP-TV-Z]{26}$/),
24
+ event_hash: sha256Hex,
25
+ leaf_index: z.number().int().nonnegative(),
26
+ })
27
+ .strict()),
28
+ kms_signature: z
29
+ .object({
30
+ kms_key_arn: z.string(),
31
+ signing_algorithm: z.string(),
32
+ signature_base64: z.string(),
33
+ })
34
+ .strict(),
35
+ attestation_document: z.string().nullable(),
36
+ rekor_entry: z
37
+ .object({
38
+ log_index: z.number().int().nonnegative(),
39
+ log_id: z.string(),
40
+ inclusion_proof: z.string(),
41
+ })
42
+ .strict()
43
+ .optional(),
44
+ })
45
+ .strict();
46
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAC5D,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,gBAAgB,EAAE,MAAM;IACxB,cAAc,EAAE,MAAM;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC;IAChD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC1C,WAAW,EAAE,SAAS;IACtB,kBAAkB,EAAE,SAAS,CAAC,QAAQ,EAAE;IACxC,MAAM,EAAE,CAAC,CAAC,KAAK,CACb,CAAC;SACE,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,0BAA0B,CAAC;QACtD,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;KAC3C,CAAC;SACD,MAAM,EAAE,CACZ;IACD,aAAa,EAAE,CAAC;SACb,MAAM,CAAC;QACN,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE;QAC7B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;KAC7B,CAAC;SACD,MAAM,EAAE;IACX,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3C,WAAW,EAAE,CAAC;SACX,MAAM,CAAC;QACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;QACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;KAC5B,CAAC;SACD,MAAM,EAAE;SACR,QAAQ,EAAE;CACd,CAAC;KACD,MAAM,EAAE,CAAC"}