@kici-dev/engine 0.1.14 → 0.1.16
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.
- package/README.md +13 -1
- package/dist/approval/types.d.ts +56 -0
- package/dist/approval/types.js +42 -0
- package/dist/audit/access-log-policy.js +14 -0
- package/dist/audit/retention-policy.js +10 -0
- package/dist/environment/types.d.ts +8 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +10 -8
- package/dist/labels.d.ts +7 -0
- package/dist/labels.js +11 -2
- package/dist/metrics/metric-catalog.generated.d.ts +50 -0
- package/dist/metrics/metric-catalog.generated.js +60 -0
- package/dist/protocol/analytics-events.d.ts +16 -0
- package/dist/protocol/analytics-events.js +20 -0
- package/dist/protocol/dashboard-write-operations.d.ts +4 -1
- package/dist/protocol/dashboard-write-operations.js +11 -1
- package/dist/protocol/messages/access-log.d.ts +26 -0
- package/dist/protocol/messages/access-log.js +5 -0
- package/dist/protocol/messages/actor.d.ts +2 -0
- package/dist/protocol/messages/actor.js +12 -2
- package/dist/protocol/messages/auth.d.ts +1 -0
- package/dist/protocol/messages/capabilities.d.ts +1 -0
- package/dist/protocol/messages/dashboard-global-workflows.d.ts +2 -0
- package/dist/protocol/messages/dashboard.d.ts +619 -6
- package/dist/protocol/messages/dashboard.js +179 -10
- package/dist/protocol/messages/event-log.d.ts +4 -0
- package/dist/protocol/messages/event-log.js +4 -0
- package/dist/protocol/messages/execution-status.d.ts +56 -3
- package/dist/protocol/messages/execution-status.js +44 -4
- package/dist/protocol/messages/orchestrator-agent.d.ts +284 -0
- package/dist/protocol/messages/orchestrator-agent.js +202 -4
- package/dist/protocol/messages/peer.d.ts +89 -0
- package/dist/protocol/messages/peer.js +50 -2
- package/dist/protocol/messages/platform-orchestrator.d.ts +168 -6
- package/dist/protocol/messages/platform-orchestrator.js +15 -56
- package/dist/protocol/messages/run-events.d.ts +1 -0
- package/dist/provenance/schema.d.ts +407 -0
- package/dist/provenance/schema.js +143 -0
- package/dist/provider/index.d.ts +1 -0
- package/dist/provider/index.js +2 -1
- package/dist/provider/lock-file-parse-error.d.ts +14 -0
- package/dist/provider/lock-file-parse-error.js +22 -0
- package/dist/trigger/types.d.ts +29 -1
- package/dist/trigger/types.js +4 -1
- package/dist/ws/close-codes.d.ts +7 -0
- package/dist/ws/close-codes.js +8 -1
- package/package.json +19 -8
- package/sbom.spdx.json +5 -5
|
@@ -4,10 +4,8 @@ import { orchCapabilitiesSchema } from "./capabilities.js";
|
|
|
4
4
|
import { authFailureSchema, authRequestSchema, authSuccessSchema } from "./auth.js";
|
|
5
5
|
import { executionStatusSchema, jobStatusForwardSchema, stateReplaySchema, stepStatusForwardSchema } from "./execution-status.js";
|
|
6
6
|
import { sourceDeregisterAckSchema, sourceDeregisterSchema, sourceRegistrationAckSchema, sourceRegistrationSchema } from "./source-registration.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { globalWorkflowsGetRequestSchema, globalWorkflowsUpdateRequestSchema } from "./dashboard-global-workflows.js";
|
|
10
|
-
import { backendGetRequestSchema, backendSyncRequestSchema, backendTestRequestSchema, backendsListRequestSchema, backendsSyncAllRequestSchema, dashboardDiagnosticsRequestSchema, dashboardEventDlqCountRequestSchema, dashboardEventDlqDiscardRequestSchema, dashboardEventDlqListRequestSchema, dashboardEventDlqRetryRequestSchema, dashboardEventLogDetailRequestSchema, dashboardEventLogListRequestSchema, dashboardEventLogPayloadStreamRequestSchema, dashboardPayloadRequestSchema, dashboardRunDetailRequestSchema, dashboardScalerAgentsRequestSchema, dashboardScalerCapacityRequestSchema, dashboardStepLogsRequestSchema, envBindingsListRequestSchema, envBindingsSetRequestSchema, envCreateRequestSchema, envDeleteRequestSchema, envGetRequestSchema, envHistoryRequestSchema, envListRequestSchema, envSecretDeleteRequestSchema, envSecretScopeCreateRequestSchema, envSecretScopeDeleteRequestSchema, envSecretScopeRenameRequestSchema, envSecretSetRequestSchema, envSecretsListRequestSchema, envSourceOverrideDeleteRequestSchema, envSourceOverrideSetRequestSchema, envSourceOverridesListRequestSchema, envUpdateRequestSchema, envVarDeleteRequestSchema, envVarSetRequestSchema, envVarsListRequestSchema, heldRunApproveRequestSchema, heldRunRejectRequestSchema, heldRunsListRequestSchema, manualScheduleRequestSchema, registrationDeleteRequestSchema, registrationDisableRequestSchema, registrationsListRequestSchema, runCancelRequestSchema, runRerunRequestSchema } from "./dashboard.js";
|
|
7
|
+
import { jobContextMessageSchema, runEventMessageSchema } from "./run-events.js";
|
|
8
|
+
import { dashboardPlatformToOrchSchema } from "./dashboard.js";
|
|
11
9
|
import { z } from "zod";
|
|
12
10
|
//#region src/protocol/messages/platform-orchestrator.ts
|
|
13
11
|
/** Trust policy update pushed from Platform to orchestrator when policy or identity links change. */
|
|
@@ -46,7 +44,18 @@ const trustPolicyUpdateSchema = z.object({
|
|
|
46
44
|
"read",
|
|
47
45
|
"write",
|
|
48
46
|
"admin"
|
|
49
|
-
]))
|
|
47
|
+
])),
|
|
48
|
+
/**
|
|
49
|
+
* Operator-defined teams and their member user ids. The orchestrator has no
|
|
50
|
+
* identity store, so team membership is delivered here (next to
|
|
51
|
+
* `identityLinks`) and cached in-memory. The approval resolver matches a
|
|
52
|
+
* `{team}` clause by looking up the team's members in this list.
|
|
53
|
+
* `.default([])` keeps an older Platform that doesn't send it valid.
|
|
54
|
+
*/
|
|
55
|
+
teamMemberships: z.array(z.object({
|
|
56
|
+
teamName: z.string(),
|
|
57
|
+
memberUserIds: z.array(z.string())
|
|
58
|
+
})).default([])
|
|
50
59
|
});
|
|
51
60
|
/**
|
|
52
61
|
* Internal shape of a fully-reassembled, HMAC-verified webhook relay handed
|
|
@@ -329,57 +338,7 @@ const platformToOrchestratorMessageSchema = z.discriminatedUnion("type", [
|
|
|
329
338
|
peerDiscoverSchema,
|
|
330
339
|
peerUpdateSchema,
|
|
331
340
|
staleCheckrunCleanupSchema,
|
|
332
|
-
|
|
333
|
-
dashboardStepLogsRequestSchema,
|
|
334
|
-
runRerunRequestSchema,
|
|
335
|
-
manualScheduleRequestSchema,
|
|
336
|
-
runCancelRequestSchema,
|
|
337
|
-
dashboardPayloadRequestSchema,
|
|
338
|
-
dashboardOrchLogsRequestSchema,
|
|
339
|
-
envListRequestSchema,
|
|
340
|
-
envGetRequestSchema,
|
|
341
|
-
envCreateRequestSchema,
|
|
342
|
-
envUpdateRequestSchema,
|
|
343
|
-
envDeleteRequestSchema,
|
|
344
|
-
envVarsListRequestSchema,
|
|
345
|
-
envVarSetRequestSchema,
|
|
346
|
-
envVarDeleteRequestSchema,
|
|
347
|
-
envSourceOverridesListRequestSchema,
|
|
348
|
-
envSourceOverrideSetRequestSchema,
|
|
349
|
-
envSourceOverrideDeleteRequestSchema,
|
|
350
|
-
envBindingsListRequestSchema,
|
|
351
|
-
envBindingsSetRequestSchema,
|
|
352
|
-
envSecretsListRequestSchema,
|
|
353
|
-
envSecretSetRequestSchema,
|
|
354
|
-
envSecretDeleteRequestSchema,
|
|
355
|
-
envSecretScopeCreateRequestSchema,
|
|
356
|
-
envSecretScopeRenameRequestSchema,
|
|
357
|
-
envSecretScopeDeleteRequestSchema,
|
|
358
|
-
envHistoryRequestSchema,
|
|
359
|
-
heldRunsListRequestSchema,
|
|
360
|
-
heldRunApproveRequestSchema,
|
|
361
|
-
heldRunRejectRequestSchema,
|
|
362
|
-
registrationsListRequestSchema,
|
|
363
|
-
registrationDisableRequestSchema,
|
|
364
|
-
registrationDeleteRequestSchema,
|
|
365
|
-
dashboardDiagnosticsRequestSchema,
|
|
366
|
-
dashboardScalerCapacityRequestSchema,
|
|
367
|
-
dashboardScalerAgentsRequestSchema,
|
|
368
|
-
backendsListRequestSchema,
|
|
369
|
-
backendGetRequestSchema,
|
|
370
|
-
backendsSyncAllRequestSchema,
|
|
371
|
-
backendSyncRequestSchema,
|
|
372
|
-
backendTestRequestSchema,
|
|
373
|
-
dashboardEventLogListRequestSchema,
|
|
374
|
-
dashboardEventLogDetailRequestSchema,
|
|
375
|
-
dashboardEventLogPayloadStreamRequestSchema,
|
|
376
|
-
dashboardEventDlqListRequestSchema,
|
|
377
|
-
dashboardEventDlqCountRequestSchema,
|
|
378
|
-
dashboardEventDlqRetryRequestSchema,
|
|
379
|
-
dashboardEventDlqDiscardRequestSchema,
|
|
380
|
-
globalWorkflowsGetRequestSchema,
|
|
381
|
-
globalWorkflowsUpdateRequestSchema,
|
|
382
|
-
dashboardAccessLogListRequestSchema
|
|
341
|
+
...dashboardPlatformToOrchSchema.options
|
|
383
342
|
]);
|
|
384
343
|
/** All messages that flow from Orchestrator to Platform.
|
|
385
344
|
*
|
|
@@ -136,6 +136,7 @@ export declare const dashboardOrchLogsRequestSchema: z.ZodObject<{
|
|
|
136
136
|
type: z.ZodLiteral<"platform_operator">;
|
|
137
137
|
sub: z.ZodString;
|
|
138
138
|
reason: z.ZodString;
|
|
139
|
+
sessionId: z.ZodOptional<z.ZodString>;
|
|
139
140
|
}, z.core.$strip>, z.ZodObject<{
|
|
140
141
|
type: z.ZodLiteral<"system">;
|
|
141
142
|
component: z.ZodString;
|
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SLSA v1.0 build-provenance schema for KiCI.
|
|
3
|
+
*
|
|
4
|
+
* Models the in-toto Statement v1 envelope and the SLSA v1.0 provenance
|
|
5
|
+
* predicate as Zod schemas, plus a KiCI-specialized statement schema that pins
|
|
6
|
+
* the KiCI literals and types the KiCI-owned build parameters. This is the
|
|
7
|
+
* single source of truth shared by the agent (produces attestations) and the
|
|
8
|
+
* `kici verify-attestation` CLI (consumes them).
|
|
9
|
+
*
|
|
10
|
+
* Pure schema + types — no Node-only dependencies, so the dashboard can import
|
|
11
|
+
* it for typed artifact rendering. Exported at the subpath
|
|
12
|
+
* `@kici-dev/engine/provenance/schema`.
|
|
13
|
+
*
|
|
14
|
+
* Spec references:
|
|
15
|
+
* - in-toto Statement v1: https://github.com/in-toto/attestation/blob/main/spec/v1/statement.md
|
|
16
|
+
* - SLSA v1.0 provenance: https://slsa.dev/spec/v1.0/provenance
|
|
17
|
+
*/
|
|
18
|
+
import { z } from 'zod';
|
|
19
|
+
/** in-toto Statement `_type` value (pinned). */
|
|
20
|
+
export declare const IN_TOTO_STATEMENT_TYPE = "https://in-toto.io/Statement/v1";
|
|
21
|
+
/** SLSA v1.0 provenance `predicateType` value (pinned). */
|
|
22
|
+
export declare const SLSA_PROVENANCE_PREDICATE_TYPE = "https://slsa.dev/provenance/v1";
|
|
23
|
+
/** KiCI workflow `buildType` URI (we own this namespace). */
|
|
24
|
+
export declare const KICI_WORKFLOW_BUILD_TYPE = "https://kici.dev/buildtypes/workflow/v1";
|
|
25
|
+
/**
|
|
26
|
+
* Known digest algorithms KiCI emits or tests reference. The digest map itself
|
|
27
|
+
* (`digestSetSchema`) keeps its keys open for forward-compatibility; this enum
|
|
28
|
+
* documents the common set so producer code and tests don't repeat literals.
|
|
29
|
+
*/
|
|
30
|
+
export declare const DigestAlgorithm: z.ZodEnum<{
|
|
31
|
+
sha256: "sha256";
|
|
32
|
+
sha512: "sha512";
|
|
33
|
+
sha1: "sha1";
|
|
34
|
+
gitCommit: "gitCommit";
|
|
35
|
+
dirHash: "dirHash";
|
|
36
|
+
}>;
|
|
37
|
+
export type DigestAlgorithm = z.infer<typeof DigestAlgorithm>;
|
|
38
|
+
/**
|
|
39
|
+
* in-toto digest set: a map of algorithm name → lowercase-hex digest. Keys are
|
|
40
|
+
* open (forward-compat); at least one entry is required.
|
|
41
|
+
*/
|
|
42
|
+
export declare const digestSetSchema: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
43
|
+
export type DigestSet = z.infer<typeof digestSetSchema>;
|
|
44
|
+
/**
|
|
45
|
+
* in-toto ResourceDescriptor. Reused for `resolvedDependencies` and
|
|
46
|
+
* `byproducts`. Per spec, at least one of name / uri / digest must be present.
|
|
47
|
+
*/
|
|
48
|
+
export declare const resourceDescriptorSchema: z.ZodObject<{
|
|
49
|
+
name: z.ZodOptional<z.ZodString>;
|
|
50
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
51
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
52
|
+
content: z.ZodOptional<z.ZodString>;
|
|
53
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
54
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
55
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
56
|
+
}, z.core.$strip>;
|
|
57
|
+
export type ResourceDescriptor = z.infer<typeof resourceDescriptorSchema>;
|
|
58
|
+
/**
|
|
59
|
+
* in-toto Statement subject entry: a resource descriptor that MUST carry a
|
|
60
|
+
* digest (the verifier matches the subject digest against the artifact).
|
|
61
|
+
*/
|
|
62
|
+
export declare const subjectSchema: z.ZodObject<{
|
|
63
|
+
name: z.ZodOptional<z.ZodString>;
|
|
64
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
65
|
+
digest: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
66
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
67
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
68
|
+
}, z.core.$strip>;
|
|
69
|
+
export type Subject = z.infer<typeof subjectSchema>;
|
|
70
|
+
/** SLSA `builder`: identity of the build platform. `id` is a required URI. */
|
|
71
|
+
export declare const builderSchema: z.ZodObject<{
|
|
72
|
+
id: z.ZodString;
|
|
73
|
+
builderDependencies: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
74
|
+
name: z.ZodOptional<z.ZodString>;
|
|
75
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
76
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
77
|
+
content: z.ZodOptional<z.ZodString>;
|
|
78
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
79
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
80
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
81
|
+
}, z.core.$strip>>>;
|
|
82
|
+
version: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
83
|
+
}, z.core.$strip>;
|
|
84
|
+
export type Builder = z.infer<typeof builderSchema>;
|
|
85
|
+
/** SLSA `metadata`: build-invocation metadata. */
|
|
86
|
+
export declare const buildMetadataSchema: z.ZodObject<{
|
|
87
|
+
invocationId: z.ZodOptional<z.ZodString>;
|
|
88
|
+
startedOn: z.ZodOptional<z.ZodString>;
|
|
89
|
+
finishedOn: z.ZodOptional<z.ZodString>;
|
|
90
|
+
}, z.core.$strip>;
|
|
91
|
+
export type BuildMetadata = z.infer<typeof buildMetadataSchema>;
|
|
92
|
+
/** SLSA `buildDefinition`. `buildType` + `externalParameters` are required. */
|
|
93
|
+
export declare const buildDefinitionSchema: z.ZodObject<{
|
|
94
|
+
buildType: z.ZodString;
|
|
95
|
+
externalParameters: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
96
|
+
internalParameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
97
|
+
resolvedDependencies: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
98
|
+
name: z.ZodOptional<z.ZodString>;
|
|
99
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
100
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
101
|
+
content: z.ZodOptional<z.ZodString>;
|
|
102
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
103
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
104
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
105
|
+
}, z.core.$strip>>>;
|
|
106
|
+
}, z.core.$strip>;
|
|
107
|
+
export type BuildDefinition = z.infer<typeof buildDefinitionSchema>;
|
|
108
|
+
/** SLSA `runDetails`. `builder` is required. */
|
|
109
|
+
export declare const runDetailsSchema: z.ZodObject<{
|
|
110
|
+
builder: z.ZodObject<{
|
|
111
|
+
id: z.ZodString;
|
|
112
|
+
builderDependencies: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
113
|
+
name: z.ZodOptional<z.ZodString>;
|
|
114
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
115
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
116
|
+
content: z.ZodOptional<z.ZodString>;
|
|
117
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
118
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
119
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
120
|
+
}, z.core.$strip>>>;
|
|
121
|
+
version: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
122
|
+
}, z.core.$strip>;
|
|
123
|
+
metadata: z.ZodOptional<z.ZodObject<{
|
|
124
|
+
invocationId: z.ZodOptional<z.ZodString>;
|
|
125
|
+
startedOn: z.ZodOptional<z.ZodString>;
|
|
126
|
+
finishedOn: z.ZodOptional<z.ZodString>;
|
|
127
|
+
}, z.core.$strip>>;
|
|
128
|
+
byproducts: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
129
|
+
name: z.ZodOptional<z.ZodString>;
|
|
130
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
131
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
132
|
+
content: z.ZodOptional<z.ZodString>;
|
|
133
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
134
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
135
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
136
|
+
}, z.core.$strip>>>;
|
|
137
|
+
}, z.core.$strip>;
|
|
138
|
+
export type RunDetails = z.infer<typeof runDetailsSchema>;
|
|
139
|
+
/** SLSA v1.0 provenance predicate. */
|
|
140
|
+
export declare const slsaProvenancePredicateSchema: z.ZodObject<{
|
|
141
|
+
buildDefinition: z.ZodObject<{
|
|
142
|
+
buildType: z.ZodString;
|
|
143
|
+
externalParameters: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
144
|
+
internalParameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
145
|
+
resolvedDependencies: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
146
|
+
name: z.ZodOptional<z.ZodString>;
|
|
147
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
148
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
149
|
+
content: z.ZodOptional<z.ZodString>;
|
|
150
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
151
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
152
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
153
|
+
}, z.core.$strip>>>;
|
|
154
|
+
}, z.core.$strip>;
|
|
155
|
+
runDetails: z.ZodObject<{
|
|
156
|
+
builder: z.ZodObject<{
|
|
157
|
+
id: z.ZodString;
|
|
158
|
+
builderDependencies: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
159
|
+
name: z.ZodOptional<z.ZodString>;
|
|
160
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
161
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
162
|
+
content: z.ZodOptional<z.ZodString>;
|
|
163
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
164
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
165
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
166
|
+
}, z.core.$strip>>>;
|
|
167
|
+
version: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
168
|
+
}, z.core.$strip>;
|
|
169
|
+
metadata: z.ZodOptional<z.ZodObject<{
|
|
170
|
+
invocationId: z.ZodOptional<z.ZodString>;
|
|
171
|
+
startedOn: z.ZodOptional<z.ZodString>;
|
|
172
|
+
finishedOn: z.ZodOptional<z.ZodString>;
|
|
173
|
+
}, z.core.$strip>>;
|
|
174
|
+
byproducts: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
175
|
+
name: z.ZodOptional<z.ZodString>;
|
|
176
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
177
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
178
|
+
content: z.ZodOptional<z.ZodString>;
|
|
179
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
180
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
181
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
182
|
+
}, z.core.$strip>>>;
|
|
183
|
+
}, z.core.$strip>;
|
|
184
|
+
}, z.core.$strip>;
|
|
185
|
+
export type SlsaProvenancePredicate = z.infer<typeof slsaProvenancePredicateSchema>;
|
|
186
|
+
/** Predicate-agnostic in-toto Statement v1 envelope. */
|
|
187
|
+
export declare const inTotoStatementSchema: z.ZodObject<{
|
|
188
|
+
_type: z.ZodLiteral<"https://in-toto.io/Statement/v1">;
|
|
189
|
+
subject: z.ZodArray<z.ZodObject<{
|
|
190
|
+
name: z.ZodOptional<z.ZodString>;
|
|
191
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
192
|
+
digest: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
193
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
194
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
195
|
+
}, z.core.$strip>>;
|
|
196
|
+
predicateType: z.ZodString;
|
|
197
|
+
predicate: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
198
|
+
}, z.core.$strip>;
|
|
199
|
+
export type InTotoStatement = z.infer<typeof inTotoStatementSchema>;
|
|
200
|
+
/** KiCI workflow external parameters: the workflow source coordinates. */
|
|
201
|
+
export declare const kiciWorkflowExternalParametersSchema: z.ZodObject<{
|
|
202
|
+
workflow: z.ZodObject<{
|
|
203
|
+
repository: z.ZodString;
|
|
204
|
+
ref: z.ZodString;
|
|
205
|
+
path: z.ZodString;
|
|
206
|
+
}, z.core.$strip>;
|
|
207
|
+
}, z.core.$loose>;
|
|
208
|
+
export type KiciWorkflowExternalParameters = z.infer<typeof kiciWorkflowExternalParametersSchema>;
|
|
209
|
+
/** KiCI workflow internal parameters: run-scoped build context. */
|
|
210
|
+
export declare const kiciWorkflowInternalParametersSchema: z.ZodObject<{
|
|
211
|
+
commit: z.ZodOptional<z.ZodString>;
|
|
212
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
213
|
+
jobId: z.ZodOptional<z.ZodString>;
|
|
214
|
+
}, z.core.$loose>;
|
|
215
|
+
export type KiciWorkflowInternalParameters = z.infer<typeof kiciWorkflowInternalParametersSchema>;
|
|
216
|
+
/** KiCI build definition: pins the buildType and types the workflow params. */
|
|
217
|
+
export declare const kiciBuildDefinitionSchema: z.ZodObject<{
|
|
218
|
+
resolvedDependencies: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
219
|
+
name: z.ZodOptional<z.ZodString>;
|
|
220
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
221
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
222
|
+
content: z.ZodOptional<z.ZodString>;
|
|
223
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
224
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
225
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
226
|
+
}, z.core.$strip>>>;
|
|
227
|
+
buildType: z.ZodLiteral<"https://kici.dev/buildtypes/workflow/v1">;
|
|
228
|
+
externalParameters: z.ZodObject<{
|
|
229
|
+
workflow: z.ZodObject<{
|
|
230
|
+
repository: z.ZodString;
|
|
231
|
+
ref: z.ZodString;
|
|
232
|
+
path: z.ZodString;
|
|
233
|
+
}, z.core.$strip>;
|
|
234
|
+
}, z.core.$loose>;
|
|
235
|
+
internalParameters: z.ZodOptional<z.ZodObject<{
|
|
236
|
+
commit: z.ZodOptional<z.ZodString>;
|
|
237
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
238
|
+
jobId: z.ZodOptional<z.ZodString>;
|
|
239
|
+
}, z.core.$loose>>;
|
|
240
|
+
}, z.core.$strip>;
|
|
241
|
+
export type KiciBuildDefinition = z.infer<typeof kiciBuildDefinitionSchema>;
|
|
242
|
+
/** KiCI run details: types builder.version with the KiCI component versions. */
|
|
243
|
+
export declare const kiciRunDetailsSchema: z.ZodObject<{
|
|
244
|
+
metadata: z.ZodOptional<z.ZodObject<{
|
|
245
|
+
invocationId: z.ZodOptional<z.ZodString>;
|
|
246
|
+
startedOn: z.ZodOptional<z.ZodString>;
|
|
247
|
+
finishedOn: z.ZodOptional<z.ZodString>;
|
|
248
|
+
}, z.core.$strip>>;
|
|
249
|
+
byproducts: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
250
|
+
name: z.ZodOptional<z.ZodString>;
|
|
251
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
252
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
253
|
+
content: z.ZodOptional<z.ZodString>;
|
|
254
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
255
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
256
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
257
|
+
}, z.core.$strip>>>;
|
|
258
|
+
builder: z.ZodObject<{
|
|
259
|
+
id: z.ZodString;
|
|
260
|
+
builderDependencies: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
261
|
+
name: z.ZodOptional<z.ZodString>;
|
|
262
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
263
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
264
|
+
content: z.ZodOptional<z.ZodString>;
|
|
265
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
266
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
267
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
268
|
+
}, z.core.$strip>>>;
|
|
269
|
+
version: z.ZodOptional<z.ZodObject<{
|
|
270
|
+
'kici-orchestrator': z.ZodString;
|
|
271
|
+
'kici-agent': z.ZodString;
|
|
272
|
+
}, z.core.$loose>>;
|
|
273
|
+
}, z.core.$strip>;
|
|
274
|
+
}, z.core.$strip>;
|
|
275
|
+
export type KiciRunDetails = z.infer<typeof kiciRunDetailsSchema>;
|
|
276
|
+
/** KiCI SLSA provenance predicate. */
|
|
277
|
+
export declare const kiciProvenancePredicateSchema: z.ZodObject<{
|
|
278
|
+
buildDefinition: z.ZodObject<{
|
|
279
|
+
resolvedDependencies: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
280
|
+
name: z.ZodOptional<z.ZodString>;
|
|
281
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
282
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
283
|
+
content: z.ZodOptional<z.ZodString>;
|
|
284
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
285
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
286
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
287
|
+
}, z.core.$strip>>>;
|
|
288
|
+
buildType: z.ZodLiteral<"https://kici.dev/buildtypes/workflow/v1">;
|
|
289
|
+
externalParameters: z.ZodObject<{
|
|
290
|
+
workflow: z.ZodObject<{
|
|
291
|
+
repository: z.ZodString;
|
|
292
|
+
ref: z.ZodString;
|
|
293
|
+
path: z.ZodString;
|
|
294
|
+
}, z.core.$strip>;
|
|
295
|
+
}, z.core.$loose>;
|
|
296
|
+
internalParameters: z.ZodOptional<z.ZodObject<{
|
|
297
|
+
commit: z.ZodOptional<z.ZodString>;
|
|
298
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
299
|
+
jobId: z.ZodOptional<z.ZodString>;
|
|
300
|
+
}, z.core.$loose>>;
|
|
301
|
+
}, z.core.$strip>;
|
|
302
|
+
runDetails: z.ZodObject<{
|
|
303
|
+
metadata: z.ZodOptional<z.ZodObject<{
|
|
304
|
+
invocationId: z.ZodOptional<z.ZodString>;
|
|
305
|
+
startedOn: z.ZodOptional<z.ZodString>;
|
|
306
|
+
finishedOn: z.ZodOptional<z.ZodString>;
|
|
307
|
+
}, z.core.$strip>>;
|
|
308
|
+
byproducts: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
309
|
+
name: z.ZodOptional<z.ZodString>;
|
|
310
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
311
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
312
|
+
content: z.ZodOptional<z.ZodString>;
|
|
313
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
314
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
315
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
316
|
+
}, z.core.$strip>>>;
|
|
317
|
+
builder: z.ZodObject<{
|
|
318
|
+
id: z.ZodString;
|
|
319
|
+
builderDependencies: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
320
|
+
name: z.ZodOptional<z.ZodString>;
|
|
321
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
322
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
323
|
+
content: z.ZodOptional<z.ZodString>;
|
|
324
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
325
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
326
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
327
|
+
}, z.core.$strip>>>;
|
|
328
|
+
version: z.ZodOptional<z.ZodObject<{
|
|
329
|
+
'kici-orchestrator': z.ZodString;
|
|
330
|
+
'kici-agent': z.ZodString;
|
|
331
|
+
}, z.core.$loose>>;
|
|
332
|
+
}, z.core.$strip>;
|
|
333
|
+
}, z.core.$strip>;
|
|
334
|
+
}, z.core.$strip>;
|
|
335
|
+
export type KiciProvenancePredicate = z.infer<typeof kiciProvenancePredicateSchema>;
|
|
336
|
+
/** KiCI provenance Statement: pins `_type` + `predicateType` + KiCI predicate. */
|
|
337
|
+
export declare const kiciProvenanceStatementSchema: z.ZodObject<{
|
|
338
|
+
_type: z.ZodLiteral<"https://in-toto.io/Statement/v1">;
|
|
339
|
+
subject: z.ZodArray<z.ZodObject<{
|
|
340
|
+
name: z.ZodOptional<z.ZodString>;
|
|
341
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
342
|
+
digest: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
343
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
344
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
345
|
+
}, z.core.$strip>>;
|
|
346
|
+
predicateType: z.ZodLiteral<"https://slsa.dev/provenance/v1">;
|
|
347
|
+
predicate: z.ZodObject<{
|
|
348
|
+
buildDefinition: z.ZodObject<{
|
|
349
|
+
resolvedDependencies: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
350
|
+
name: z.ZodOptional<z.ZodString>;
|
|
351
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
352
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
353
|
+
content: z.ZodOptional<z.ZodString>;
|
|
354
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
355
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
356
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
357
|
+
}, z.core.$strip>>>;
|
|
358
|
+
buildType: z.ZodLiteral<"https://kici.dev/buildtypes/workflow/v1">;
|
|
359
|
+
externalParameters: z.ZodObject<{
|
|
360
|
+
workflow: z.ZodObject<{
|
|
361
|
+
repository: z.ZodString;
|
|
362
|
+
ref: z.ZodString;
|
|
363
|
+
path: z.ZodString;
|
|
364
|
+
}, z.core.$strip>;
|
|
365
|
+
}, z.core.$loose>;
|
|
366
|
+
internalParameters: z.ZodOptional<z.ZodObject<{
|
|
367
|
+
commit: z.ZodOptional<z.ZodString>;
|
|
368
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
369
|
+
jobId: z.ZodOptional<z.ZodString>;
|
|
370
|
+
}, z.core.$loose>>;
|
|
371
|
+
}, z.core.$strip>;
|
|
372
|
+
runDetails: z.ZodObject<{
|
|
373
|
+
metadata: z.ZodOptional<z.ZodObject<{
|
|
374
|
+
invocationId: z.ZodOptional<z.ZodString>;
|
|
375
|
+
startedOn: z.ZodOptional<z.ZodString>;
|
|
376
|
+
finishedOn: z.ZodOptional<z.ZodString>;
|
|
377
|
+
}, z.core.$strip>>;
|
|
378
|
+
byproducts: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
379
|
+
name: z.ZodOptional<z.ZodString>;
|
|
380
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
381
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
382
|
+
content: z.ZodOptional<z.ZodString>;
|
|
383
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
384
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
385
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
386
|
+
}, z.core.$strip>>>;
|
|
387
|
+
builder: z.ZodObject<{
|
|
388
|
+
id: z.ZodString;
|
|
389
|
+
builderDependencies: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
390
|
+
name: z.ZodOptional<z.ZodString>;
|
|
391
|
+
uri: z.ZodOptional<z.ZodString>;
|
|
392
|
+
digest: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
393
|
+
content: z.ZodOptional<z.ZodString>;
|
|
394
|
+
downloadLocation: z.ZodOptional<z.ZodString>;
|
|
395
|
+
mediaType: z.ZodOptional<z.ZodString>;
|
|
396
|
+
annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
397
|
+
}, z.core.$strip>>>;
|
|
398
|
+
version: z.ZodOptional<z.ZodObject<{
|
|
399
|
+
'kici-orchestrator': z.ZodString;
|
|
400
|
+
'kici-agent': z.ZodString;
|
|
401
|
+
}, z.core.$loose>>;
|
|
402
|
+
}, z.core.$strip>;
|
|
403
|
+
}, z.core.$strip>;
|
|
404
|
+
}, z.core.$strip>;
|
|
405
|
+
}, z.core.$strip>;
|
|
406
|
+
export type KiciProvenanceStatement = z.infer<typeof kiciProvenanceStatementSchema>;
|
|
407
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import "../chunk-gOLHoazu.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
//#region src/provenance/schema.ts
|
|
4
|
+
/**
|
|
5
|
+
* SLSA v1.0 build-provenance schema for KiCI.
|
|
6
|
+
*
|
|
7
|
+
* Models the in-toto Statement v1 envelope and the SLSA v1.0 provenance
|
|
8
|
+
* predicate as Zod schemas, plus a KiCI-specialized statement schema that pins
|
|
9
|
+
* the KiCI literals and types the KiCI-owned build parameters. This is the
|
|
10
|
+
* single source of truth shared by the agent (produces attestations) and the
|
|
11
|
+
* `kici verify-attestation` CLI (consumes them).
|
|
12
|
+
*
|
|
13
|
+
* Pure schema + types — no Node-only dependencies, so the dashboard can import
|
|
14
|
+
* it for typed artifact rendering. Exported at the subpath
|
|
15
|
+
* `@kici-dev/engine/provenance/schema`.
|
|
16
|
+
*
|
|
17
|
+
* Spec references:
|
|
18
|
+
* - in-toto Statement v1: https://github.com/in-toto/attestation/blob/main/spec/v1/statement.md
|
|
19
|
+
* - SLSA v1.0 provenance: https://slsa.dev/spec/v1.0/provenance
|
|
20
|
+
*/
|
|
21
|
+
/** in-toto Statement `_type` value (pinned). */
|
|
22
|
+
const IN_TOTO_STATEMENT_TYPE = "https://in-toto.io/Statement/v1";
|
|
23
|
+
/** SLSA v1.0 provenance `predicateType` value (pinned). */
|
|
24
|
+
const SLSA_PROVENANCE_PREDICATE_TYPE = "https://slsa.dev/provenance/v1";
|
|
25
|
+
/** KiCI workflow `buildType` URI (we own this namespace). */
|
|
26
|
+
const KICI_WORKFLOW_BUILD_TYPE = "https://kici.dev/buildtypes/workflow/v1";
|
|
27
|
+
/**
|
|
28
|
+
* Known digest algorithms KiCI emits or tests reference. The digest map itself
|
|
29
|
+
* (`digestSetSchema`) keeps its keys open for forward-compatibility; this enum
|
|
30
|
+
* documents the common set so producer code and tests don't repeat literals.
|
|
31
|
+
*/
|
|
32
|
+
const DigestAlgorithm = z.enum([
|
|
33
|
+
"sha256",
|
|
34
|
+
"sha512",
|
|
35
|
+
"sha1",
|
|
36
|
+
"gitCommit",
|
|
37
|
+
"dirHash"
|
|
38
|
+
]);
|
|
39
|
+
/** Lowercase hex string (in-toto requires lowercase-hex digest encoding). */
|
|
40
|
+
const lowercaseHex = z.string().regex(/^[0-9a-f]+$/, "digest value must be lowercase hex");
|
|
41
|
+
/**
|
|
42
|
+
* in-toto digest set: a map of algorithm name → lowercase-hex digest. Keys are
|
|
43
|
+
* open (forward-compat); at least one entry is required.
|
|
44
|
+
*/
|
|
45
|
+
const digestSetSchema = z.record(z.string().min(1), lowercaseHex).refine((d) => Object.keys(d).length > 0, { message: "digest must contain at least one algorithm" });
|
|
46
|
+
/**
|
|
47
|
+
* in-toto ResourceDescriptor. Reused for `resolvedDependencies` and
|
|
48
|
+
* `byproducts`. Per spec, at least one of name / uri / digest must be present.
|
|
49
|
+
*/
|
|
50
|
+
const resourceDescriptorSchema = z.object({
|
|
51
|
+
name: z.string().optional(),
|
|
52
|
+
uri: z.string().optional(),
|
|
53
|
+
digest: digestSetSchema.optional(),
|
|
54
|
+
content: z.string().optional(),
|
|
55
|
+
downloadLocation: z.string().optional(),
|
|
56
|
+
mediaType: z.string().optional(),
|
|
57
|
+
annotations: z.record(z.string(), z.unknown()).optional()
|
|
58
|
+
}).refine((rd) => rd.name !== void 0 || rd.uri !== void 0 || rd.digest !== void 0, { message: "resource descriptor requires at least one of name, uri, or digest" });
|
|
59
|
+
/**
|
|
60
|
+
* in-toto Statement subject entry: a resource descriptor that MUST carry a
|
|
61
|
+
* digest (the verifier matches the subject digest against the artifact).
|
|
62
|
+
*/
|
|
63
|
+
const subjectSchema = z.object({
|
|
64
|
+
name: z.string().optional(),
|
|
65
|
+
uri: z.string().optional(),
|
|
66
|
+
digest: digestSetSchema,
|
|
67
|
+
mediaType: z.string().optional(),
|
|
68
|
+
annotations: z.record(z.string(), z.unknown()).optional()
|
|
69
|
+
});
|
|
70
|
+
/** SLSA `builder`: identity of the build platform. `id` is a required URI. */
|
|
71
|
+
const builderSchema = z.object({
|
|
72
|
+
id: z.string(),
|
|
73
|
+
builderDependencies: z.array(resourceDescriptorSchema).optional(),
|
|
74
|
+
version: z.record(z.string(), z.string()).optional()
|
|
75
|
+
});
|
|
76
|
+
/** SLSA `metadata`: build-invocation metadata. */
|
|
77
|
+
const buildMetadataSchema = z.object({
|
|
78
|
+
invocationId: z.string().optional(),
|
|
79
|
+
startedOn: z.string().datetime({ offset: true }).optional(),
|
|
80
|
+
finishedOn: z.string().datetime({ offset: true }).optional()
|
|
81
|
+
});
|
|
82
|
+
/** SLSA `buildDefinition`. `buildType` + `externalParameters` are required. */
|
|
83
|
+
const buildDefinitionSchema = z.object({
|
|
84
|
+
buildType: z.string(),
|
|
85
|
+
externalParameters: z.record(z.string(), z.unknown()),
|
|
86
|
+
internalParameters: z.record(z.string(), z.unknown()).optional(),
|
|
87
|
+
resolvedDependencies: z.array(resourceDescriptorSchema).optional()
|
|
88
|
+
});
|
|
89
|
+
/** SLSA `runDetails`. `builder` is required. */
|
|
90
|
+
const runDetailsSchema = z.object({
|
|
91
|
+
builder: builderSchema,
|
|
92
|
+
metadata: buildMetadataSchema.optional(),
|
|
93
|
+
byproducts: z.array(resourceDescriptorSchema).optional()
|
|
94
|
+
});
|
|
95
|
+
/** SLSA v1.0 provenance predicate. */
|
|
96
|
+
const slsaProvenancePredicateSchema = z.object({
|
|
97
|
+
buildDefinition: buildDefinitionSchema,
|
|
98
|
+
runDetails: runDetailsSchema
|
|
99
|
+
});
|
|
100
|
+
/** Predicate-agnostic in-toto Statement v1 envelope. */
|
|
101
|
+
const inTotoStatementSchema = z.object({
|
|
102
|
+
_type: z.literal(IN_TOTO_STATEMENT_TYPE),
|
|
103
|
+
subject: z.array(subjectSchema).min(1),
|
|
104
|
+
predicateType: z.string(),
|
|
105
|
+
predicate: z.record(z.string(), z.unknown())
|
|
106
|
+
});
|
|
107
|
+
/** KiCI workflow external parameters: the workflow source coordinates. */
|
|
108
|
+
const kiciWorkflowExternalParametersSchema = z.object({ workflow: z.object({
|
|
109
|
+
repository: z.string(),
|
|
110
|
+
ref: z.string(),
|
|
111
|
+
path: z.string()
|
|
112
|
+
}) }).passthrough();
|
|
113
|
+
/** KiCI workflow internal parameters: run-scoped build context. */
|
|
114
|
+
const kiciWorkflowInternalParametersSchema = z.object({
|
|
115
|
+
commit: z.string().optional(),
|
|
116
|
+
runId: z.string().optional(),
|
|
117
|
+
jobId: z.string().optional()
|
|
118
|
+
}).passthrough();
|
|
119
|
+
/** KiCI build definition: pins the buildType and types the workflow params. */
|
|
120
|
+
const kiciBuildDefinitionSchema = buildDefinitionSchema.extend({
|
|
121
|
+
buildType: z.literal(KICI_WORKFLOW_BUILD_TYPE),
|
|
122
|
+
externalParameters: kiciWorkflowExternalParametersSchema,
|
|
123
|
+
internalParameters: kiciWorkflowInternalParametersSchema.optional()
|
|
124
|
+
});
|
|
125
|
+
/** KiCI run details: types builder.version with the KiCI component versions. */
|
|
126
|
+
const kiciRunDetailsSchema = runDetailsSchema.extend({ builder: builderSchema.extend({ version: z.object({
|
|
127
|
+
"kici-orchestrator": z.string(),
|
|
128
|
+
"kici-agent": z.string()
|
|
129
|
+
}).passthrough().optional() }) });
|
|
130
|
+
/** KiCI SLSA provenance predicate. */
|
|
131
|
+
const kiciProvenancePredicateSchema = z.object({
|
|
132
|
+
buildDefinition: kiciBuildDefinitionSchema,
|
|
133
|
+
runDetails: kiciRunDetailsSchema
|
|
134
|
+
});
|
|
135
|
+
/** KiCI provenance Statement: pins `_type` + `predicateType` + KiCI predicate. */
|
|
136
|
+
const kiciProvenanceStatementSchema = inTotoStatementSchema.extend({
|
|
137
|
+
predicateType: z.literal(SLSA_PROVENANCE_PREDICATE_TYPE),
|
|
138
|
+
predicate: kiciProvenancePredicateSchema
|
|
139
|
+
});
|
|
140
|
+
//#endregion
|
|
141
|
+
export { DigestAlgorithm, IN_TOTO_STATEMENT_TYPE, KICI_WORKFLOW_BUILD_TYPE, SLSA_PROVENANCE_PREDICATE_TYPE, buildDefinitionSchema, buildMetadataSchema, builderSchema, digestSetSchema, inTotoStatementSchema, kiciBuildDefinitionSchema, kiciProvenancePredicateSchema, kiciProvenanceStatementSchema, kiciRunDetailsSchema, kiciWorkflowExternalParametersSchema, kiciWorkflowInternalParametersSchema, resourceDescriptorSchema, runDetailsSchema, slsaProvenancePredicateSchema, subjectSchema };
|
|
142
|
+
|
|
143
|
+
//# sourceMappingURL=schema.js.map
|
package/dist/provider/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
export type { ProviderType } from './types.js';
|
|
15
15
|
export type { WebhookNormalizer, AccessCacheInvalidation } from './webhook-normalizer.js';
|
|
16
16
|
export type { LockFileFetcher } from './lock-file-fetcher.js';
|
|
17
|
+
export { LockFileParseError } from './lock-file-parse-error.js';
|
|
17
18
|
export type { ChangedFilesFetcher } from './changed-files-fetcher.js';
|
|
18
19
|
export type { CloneTokenProvider, ProviderGitAuth } from './clone-token-provider.js';
|
|
19
20
|
export type { RepoUrlBuilder } from './repo-url-builder.js';
|
package/dist/provider/index.js
CHANGED