@numa-tech/numa 1.14.29 → 1.14.30

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 (94) hide show
  1. package/README.md +35 -201
  2. package/dist/application-onboarding/client.d.ts +3 -17
  3. package/dist/application-onboarding/client.js +1 -14
  4. package/dist/application-onboarding/client.js.map +1 -1
  5. package/dist/application-onboarding/commands.d.ts +0 -2
  6. package/dist/application-onboarding/commands.js +5 -76
  7. package/dist/application-onboarding/commands.js.map +1 -1
  8. package/dist/application-onboarding/schemas.d.ts +28 -301
  9. package/dist/application-onboarding/schemas.js +13 -91
  10. package/dist/application-onboarding/schemas.js.map +1 -1
  11. package/dist/cli.js +0 -2
  12. package/dist/cli.js.map +1 -1
  13. package/dist/command-catalog.js +6 -336
  14. package/dist/command-catalog.js.map +1 -1
  15. package/dist/gitops/client.d.ts +0 -38
  16. package/dist/gitops/client.js +1 -9
  17. package/dist/gitops/client.js.map +1 -1
  18. package/dist/gitops/commands.js +1 -20
  19. package/dist/gitops/commands.js.map +1 -1
  20. package/dist/gitops/schemas.d.ts +0 -112
  21. package/dist/gitops/schemas.js +0 -38
  22. package/dist/gitops/schemas.js.map +1 -1
  23. package/dist/jenkins/commands.d.ts +0 -4
  24. package/dist/jenkins/commands.js +0 -10
  25. package/dist/jenkins/commands.js.map +1 -1
  26. package/dist/jenkins-jobs/commands.d.ts +0 -2
  27. package/dist/jenkins-jobs/commands.js +0 -2
  28. package/dist/jenkins-jobs/commands.js.map +1 -1
  29. package/dist/pipeline/commands.js +0 -2
  30. package/dist/pipeline/commands.js.map +1 -1
  31. package/dist/platform-profile.d.ts +2 -0
  32. package/dist/platform-profile.js +2 -1
  33. package/dist/platform-profile.js.map +1 -1
  34. package/package.json +4 -4
  35. package/skills/numa-create-application/SKILL.md +30 -163
  36. package/skills/numa-create-application/agents/openai.yaml +2 -2
  37. package/skills/numa-create-application/evals/evals.json +9 -150
  38. package/skills/numa-create-application/references/checklist.md +22 -139
  39. package/skills/numa-create-application/references/numa-cli.md +27 -257
  40. package/skills/numa-create-application/references/promote-workflows.md +22 -188
  41. package/skills/numa-create-application/scripts/inspect-project.mjs +1 -1
  42. package/skills/numa-jenkins-deployment/SKILL.md +21 -132
  43. package/skills/numa-jenkins-deployment/agents/openai.yaml +2 -2
  44. package/skills/numa-jenkins-deployment/evals/evals.json +9 -59
  45. package/skills/numa-jenkins-deployment/references/cli-contract.md +22 -101
  46. package/skills/numa-jenkins-deployment/references/diagnostics.md +2 -2
  47. package/skills/numa-jenkins-deployment/references/release-policy.md +19 -85
  48. package/skills/numa-local-flux-deploy/SKILL.md +1 -1
  49. package/skills/numa-local-flux-deploy/references/local-flux-release.md +1 -1
  50. package/dist/integration-bootstrap/client.d.ts +0 -61
  51. package/dist/integration-bootstrap/client.js +0 -293
  52. package/dist/integration-bootstrap/client.js.map +0 -1
  53. package/dist/integration-bootstrap/commands.d.ts +0 -86
  54. package/dist/integration-bootstrap/commands.js +0 -615
  55. package/dist/integration-bootstrap/commands.js.map +0 -1
  56. package/dist/integration-bootstrap/schemas.d.ts +0 -831
  57. package/dist/integration-bootstrap/schemas.js +0 -565
  58. package/dist/integration-bootstrap/schemas.js.map +0 -1
  59. package/dist/jenkins-gitops-rollouts/client.d.ts +0 -197
  60. package/dist/jenkins-gitops-rollouts/client.js +0 -126
  61. package/dist/jenkins-gitops-rollouts/client.js.map +0 -1
  62. package/dist/jenkins-gitops-rollouts/commands.d.ts +0 -50
  63. package/dist/jenkins-gitops-rollouts/commands.js +0 -358
  64. package/dist/jenkins-gitops-rollouts/commands.js.map +0 -1
  65. package/dist/jenkins-gitops-rollouts/schemas.d.ts +0 -217
  66. package/dist/jenkins-gitops-rollouts/schemas.js +0 -131
  67. package/dist/jenkins-gitops-rollouts/schemas.js.map +0 -1
  68. package/dist/platform-build-job-replans/client.d.ts +0 -291
  69. package/dist/platform-build-job-replans/client.js +0 -148
  70. package/dist/platform-build-job-replans/client.js.map +0 -1
  71. package/dist/platform-build-job-replans/commands.d.ts +0 -6
  72. package/dist/platform-build-job-replans/commands.js +0 -373
  73. package/dist/platform-build-job-replans/commands.js.map +0 -1
  74. package/dist/platform-build-job-replans/schemas.d.ts +0 -147
  75. package/dist/platform-build-job-replans/schemas.js +0 -151
  76. package/dist/platform-build-job-replans/schemas.js.map +0 -1
  77. package/dist/platform-build-rollouts/client.d.ts +0 -346
  78. package/dist/platform-build-rollouts/client.js +0 -153
  79. package/dist/platform-build-rollouts/client.js.map +0 -1
  80. package/dist/platform-build-rollouts/commands.d.ts +0 -98
  81. package/dist/platform-build-rollouts/commands.js +0 -465
  82. package/dist/platform-build-rollouts/commands.js.map +0 -1
  83. package/dist/platform-build-rollouts/schemas.d.ts +0 -348
  84. package/dist/platform-build-rollouts/schemas.js +0 -257
  85. package/dist/platform-build-rollouts/schemas.js.map +0 -1
  86. package/dist/platform-builds/client.d.ts +0 -147
  87. package/dist/platform-builds/client.js +0 -115
  88. package/dist/platform-builds/client.js.map +0 -1
  89. package/dist/platform-builds/commands.d.ts +0 -7
  90. package/dist/platform-builds/commands.js +0 -226
  91. package/dist/platform-builds/commands.js.map +0 -1
  92. package/dist/platform-builds/schemas.d.ts +0 -127
  93. package/dist/platform-builds/schemas.js +0 -66
  94. package/dist/platform-builds/schemas.js.map +0 -1
@@ -1,565 +0,0 @@
1
- import { z } from "zod";
2
- const CONTROL_CHARACTERS = /[\u0000-\u001f\u007f]/u;
3
- const SAFE_KEY = /^[A-Za-z0-9][A-Za-z0-9._:-]*$/u;
4
- const DIGEST = /^[a-f0-9]{64}$/u;
5
- const PLAN_SESSION_NO = /^ibp2_[0-9a-f]{32}$/u;
6
- const RUN_NO = /^ibar_[0-9a-f]{32}$/u;
7
- const ACTION_NO = /^ibaa_[0-9a-f]{32}$/u;
8
- const UUID = /(?:^|[^0-9a-f])[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}(?:$|[^0-9a-f])/iu;
9
- const safeText = (maximum) => z.string().min(1).max(maximum)
10
- .refine((value) => value === value.trim() && !CONTROL_CHARACTERS.test(value), "leading/trailing whitespace and control characters are not allowed");
11
- const safeKey = (maximum, minimum = 1) => z.string().min(minimum).max(maximum)
12
- .regex(SAFE_KEY)
13
- .refine((value) => value === value.trim() && !CONTROL_CHARACTERS.test(value), "leading/trailing whitespace and control characters are not allowed");
14
- const safePlanTarget = safeText(320).refine((value) => !/(?:https?:\/\/|@)/iu.test(value) && !UUID.test(value), "target cannot contain a URL, username, or UUID");
15
- const digest = z.string().regex(DIGEST);
16
- const nullableDigest = digest.nullable();
17
- const instant = z.string().datetime({ offset: true }).refine((value) => /^(?:\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(?:\.\d{1,6})?Z$/u.test(value), "timestamp must be an RFC3339 UTC instant with at most microsecond precision");
18
- const nullableInstant = instant.nullable();
19
- const positiveInt64 = z.number().int().positive().max(Number.MAX_SAFE_INTEGER);
20
- const nonnegativeInt64 = z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);
21
- const nonnegativeInt32 = z.number().int().nonnegative().max(2_147_483_647);
22
- const clientRequestId = safeKey(200, 8);
23
- const AuthorizationUrlSchema = z.string().max(8_192).refine((value) => {
24
- try {
25
- const url = new URL(value);
26
- const safeTransport = url.protocol === "https:"
27
- || (url.protocol === "http:"
28
- && ["127.0.0.1", "localhost", "[::1]"].includes(url.hostname));
29
- return value === value.trim()
30
- && safeTransport
31
- && url.username === ""
32
- && url.password === ""
33
- && url.hash === "";
34
- }
35
- catch {
36
- return false;
37
- }
38
- }, "authorizationUrl must be HTTPS or exact loopback HTTP without userinfo or fragment");
39
- export const IntegrationBootstrapTrustAnchorClientSchema = z.object({
40
- clientId: z.literal("mci-devops-platform-bootstrap"),
41
- name: z.literal("MCI DevOps Platform bootstrap"),
42
- description: z.literal("Dedicated public PKCE bootstrap client for target realm numa-realm; import into the master realm only."),
43
- enabled: z.literal(true),
44
- protocol: z.literal("openid-connect"),
45
- publicClient: z.literal(true),
46
- bearerOnly: z.literal(false),
47
- consentRequired: z.literal(false),
48
- standardFlowEnabled: z.literal(true),
49
- implicitFlowEnabled: z.literal(false),
50
- directAccessGrantsEnabled: z.literal(false),
51
- serviceAccountsEnabled: z.literal(false),
52
- authorizationServicesEnabled: z.literal(false),
53
- fullScopeAllowed: z.literal(true),
54
- redirectUris: z.tuple([AuthorizationUrlSchema]),
55
- webOrigins: z.tuple([]),
56
- attributes: z.object({
57
- "pkce.code.challenge.method": z.literal("S256"),
58
- "access.token.lifespan": z.literal("180"),
59
- "oauth2.device.authorization.grant.enabled": z.literal("false"),
60
- "oidc.ciba.grant.enabled": z.literal("false")
61
- }).strict(),
62
- defaultClientScopes: z.tuple([
63
- z.literal("web-origins"),
64
- z.literal("acr"),
65
- z.literal("roles"),
66
- z.literal("profile"),
67
- z.literal("email")
68
- ]),
69
- optionalClientScopes: z.tuple([])
70
- }).strict();
71
- export const IntegrationBootstrapSessionStatusSchema = z.enum([
72
- "AWAITING_AUTHORIZATION", "AUTHORIZING", "INSPECTING", "SUCCEEDED", "FAILED", "EXPIRED"
73
- ]);
74
- export const IntegrationBootstrapPlanStateSchema = z.enum(["READY", "BLOCKED"]);
75
- export const IntegrationBootstrapRemoteStateSchema = z.enum([
76
- "MISSING", "PRESENT_UNVERIFIED", "MATCHED", "DRIFTED", "COLLISION", "UNAVAILABLE"
77
- ]);
78
- export const IntegrationBootstrapActionSchema = z.enum([
79
- "CREATE", "GRANT", "GENERATE", "NOOP", "BLOCKED"
80
- ]);
81
- export const IntegrationBootstrapComponentSchema = z.enum([
82
- "KEYCLOAK_SERVICE_CLIENT",
83
- "KEYCLOAK_SERVICE_CREDENTIAL",
84
- "KEYCLOAK_ROLE_CLIENT",
85
- "KEYCLOAK_CLIENT_ROLE",
86
- "KEYCLOAK_AUDIENCE_MAPPER",
87
- "KEYCLOAK_ROLE_CLAIM_MAPPER",
88
- "KEYCLOAK_CLIENT_SCOPE_CONTRACT",
89
- "KEYCLOAK_ROLE_GRANT",
90
- "JENKINS_SNAPSHOT_FOLDER",
91
- "JENKINS_SNAPSHOT_FOLDER_ACL",
92
- "JENKINS_SNAPSHOT_FOLDER_CREDENTIAL_CONTRACT",
93
- "JENKINS_WRITER_CREDENTIAL"
94
- ]);
95
- const COMPONENTS = IntegrationBootstrapComponentSchema.options;
96
- export const IntegrationBootstrapChangeSchema = z.object({
97
- component: IntegrationBootstrapComponentSchema,
98
- action: IntegrationBootstrapActionSchema,
99
- target: safePlanTarget,
100
- reasonCode: safeKey(160)
101
- }).strict();
102
- export const IntegrationBootstrapBlockerSchema = z.object({
103
- component: IntegrationBootstrapComponentSchema,
104
- target: safePlanTarget,
105
- reasonCode: safeKey(160)
106
- }).strict();
107
- export const IntegrationBootstrapJenkinsInstancePlanSchema = z.object({
108
- instanceId: positiveInt64,
109
- instanceVersion: nonnegativeInt32,
110
- instanceCode: z.literal("numa"),
111
- status: z.literal("ACTIVE"),
112
- inventoryGeneration: nonnegativeInt64,
113
- inventorySnapshotDigest: digest,
114
- adminCredentialRecordId: positiveInt64,
115
- adminCredentialRecordVersion: nonnegativeInt32,
116
- adminCredentialRecordStatus: z.literal("ACTIVE"),
117
- snapshotFolderState: IntegrationBootstrapRemoteStateSchema,
118
- snapshotFolderAclDigest: digest,
119
- snapshotFolderCredentialMetadataDigest: digest.nullable(),
120
- snapshotFolderRuntimeTupleDigest: digest.nullable(),
121
- snapshotFolderTopologyDigest: digest.nullable(),
122
- snapshotFolderBaselineDigest: digest.nullable(),
123
- snapshotFolderAction: IntegrationBootstrapActionSchema,
124
- credentialState: IntegrationBootstrapRemoteStateSchema,
125
- action: IntegrationBootstrapActionSchema
126
- }).strict().superRefine((instance, context) => {
127
- const expectedFolderAction = instance.snapshotFolderState === "MISSING"
128
- ? "CREATE"
129
- : instance.snapshotFolderState === "MATCHED" ? "NOOP" : "BLOCKED";
130
- if (instance.snapshotFolderAction !== expectedFolderAction) {
131
- context.addIssue({
132
- code: "custom",
133
- path: ["snapshotFolderAction"],
134
- message: "snapshot folder action must match the observed remote state"
135
- });
136
- }
137
- const baselineValues = [
138
- instance.snapshotFolderCredentialMetadataDigest,
139
- instance.snapshotFolderRuntimeTupleDigest,
140
- instance.snapshotFolderTopologyDigest,
141
- instance.snapshotFolderBaselineDigest
142
- ];
143
- if (expectedFolderAction === "NOOP") {
144
- if (baselineValues.some((value) => value == null)) {
145
- context.addIssue({
146
- code: "custom",
147
- path: ["snapshotFolderBaselineDigest"],
148
- message: "a matched snapshot folder requires all four exact baseline digests"
149
- });
150
- }
151
- }
152
- else if (baselineValues.some((value) => value != null)) {
153
- context.addIssue({
154
- code: "custom",
155
- path: ["snapshotFolderBaselineDigest"],
156
- message: "a non-matched snapshot folder cannot claim a plan baseline"
157
- });
158
- }
159
- });
160
- export const IntegrationBootstrapPlanSchema = z.object({
161
- schemaVersion: z.literal("integration-bootstrap-plan/v2"),
162
- profileCode: z.literal("JENKINS_GITOPS_IMAGE_WRITER"),
163
- profileVersion: z.literal("2"),
164
- profileDigest: digest,
165
- ownershipMarkerSchema: z.literal("mci-devops-platform/integration-bootstrap-owner/v1"),
166
- secretTransferMode: z.literal("KEYCLOAK_POST_ROTATE_TO_JENKINS_MEMORY_ONLY"),
167
- state: IntegrationBootstrapPlanStateSchema,
168
- realm: safeKey(256),
169
- serviceClientId: z.literal("mci-devops-platform-jenkins-gitops-writer"),
170
- roleClientId: z.literal("mci-devops-platform"),
171
- audience: z.literal("mci-devops-platform"),
172
- roleName: z.literal("mci-devops-platform-gitops-image-writer"),
173
- roleId: positiveInt64,
174
- roleVersion: nonnegativeInt32,
175
- localRoleSnapshotDigest: digest,
176
- credentialId: z.literal("mci-devops-platform-gitops-writer"),
177
- credentialKind: z.literal("USERNAME_PASSWORD"),
178
- credentialStore: z.literal("FOLDER_STORE"),
179
- credentialFolderFullName: z.literal("mci-platform-snapshots"),
180
- credentialDomain: z.literal("GLOBAL_DOMAIN"),
181
- credentialScope: z.literal("GLOBAL"),
182
- credentialUsername: z.literal("mci-devops-platform-jenkins-gitops-writer"),
183
- managedDescriptionMarkerTemplate: z.literal("managed-by=mci-devops-platform;profile=jenkins-gitops-image-writer/v2;" +
184
- "originProfile={profile};originPlan={planDigest};originRun={runNo};" +
185
- "originMarker={markerDigest}"),
186
- keycloakSnapshotDigest: digest,
187
- jenkinsInventorySnapshotDigest: digest,
188
- jenkinsInstance: IntegrationBootstrapJenkinsInstancePlanSchema,
189
- changes: z.array(IntegrationBootstrapChangeSchema).length(COMPONENTS.length),
190
- blockers: z.array(IntegrationBootstrapBlockerSchema).max(COMPONENTS.length),
191
- authorizationSessionNo: z.string().regex(PLAN_SESSION_NO),
192
- clientRequestId,
193
- requestDigest: digest,
194
- platformActor: safeText(320),
195
- bootstrapSubject: safeText(320),
196
- bootstrapUsername: safeText(320),
197
- reviewedAt: instant,
198
- reviewExpiresAt: instant,
199
- planDigest: digest
200
- }).strict().superRefine((plan, context) => {
201
- const issue = (path, message) => context.addIssue({ code: "custom", path, message });
202
- const changes = new Map(plan.changes.map((change) => [change.component, change]));
203
- if (changes.size !== COMPONENTS.length || COMPONENTS.some((component) => !changes.has(component))) {
204
- issue(["changes"], "plan requires exactly one change for every component");
205
- }
206
- const blocked = plan.changes.filter((change) => change.action === "BLOCKED");
207
- const blockerKeys = new Set(plan.blockers.map((blocker) => `${blocker.component}\n${blocker.target}\n${blocker.reasonCode}`));
208
- const blockedKeys = new Set(blocked.map((change) => `${change.component}\n${change.target}\n${change.reasonCode}`));
209
- if (blockerKeys.size !== plan.blockers.length || blockerKeys.size !== blockedKeys.size
210
- || [...blockedKeys].some((key) => !blockerKeys.has(key))) {
211
- issue(["blockers"], "blockers must exactly mirror BLOCKED changes");
212
- }
213
- if ((plan.state === "READY") !== (blocked.length === 0)) {
214
- issue(["state"], "READY is allowed exactly when no component is BLOCKED");
215
- }
216
- if (plan.jenkinsInstance.inventorySnapshotDigest !== plan.jenkinsInventorySnapshotDigest) {
217
- issue(["jenkinsInstance", "inventorySnapshotDigest"], "instance inventory digest must match plan");
218
- }
219
- if (Date.parse(plan.reviewExpiresAt) <= Date.parse(plan.reviewedAt)) {
220
- issue(["reviewExpiresAt"], "reviewExpiresAt must be later than reviewedAt");
221
- }
222
- });
223
- export const IntegrationBootstrapStartSchema = z.object({
224
- sessionNo: z.string().regex(PLAN_SESSION_NO),
225
- profileCode: z.literal("JENKINS_GITOPS_IMAGE_WRITER"),
226
- profileVersion: z.literal("2"),
227
- clientRequestId,
228
- requestDigest: digest,
229
- status: z.literal("AWAITING_AUTHORIZATION"),
230
- authorizationNo: z.string().regex(PLAN_SESSION_NO),
231
- authorizationUrl: AuthorizationUrlSchema,
232
- authorizationExpiresAt: instant
233
- }).strict().superRefine((started, context) => {
234
- if (started.authorizationNo !== started.sessionNo) {
235
- context.addIssue({ code: "custom", path: ["authorizationNo"], message: "authorizationNo must match sessionNo" });
236
- }
237
- });
238
- const IntegrationBootstrapSessionBaseSchema = z.object({
239
- sessionNo: z.string().regex(PLAN_SESSION_NO),
240
- profileCode: z.literal("JENKINS_GITOPS_IMAGE_WRITER"),
241
- profileVersion: z.literal("2"),
242
- clientRequestId,
243
- requestDigest: digest,
244
- status: IntegrationBootstrapSessionStatusSchema,
245
- plan: IntegrationBootstrapPlanSchema.nullable(),
246
- errorCode: safeKey(100).nullable(),
247
- errorSummary: safeText(800).nullable(),
248
- createdAt: instant,
249
- expiresAt: instant,
250
- completedAt: nullableInstant
251
- }).strict();
252
- export const IntegrationBootstrapSessionSchema = IntegrationBootstrapSessionBaseSchema.superRefine((session, context) => {
253
- const issue = (path, message) => context.addIssue({ code: "custom", path: [path], message });
254
- if (Date.parse(session.expiresAt) <= Date.parse(session.createdAt)) {
255
- issue("expiresAt", "session expiry must follow creation");
256
- }
257
- if (session.completedAt != null && Date.parse(session.completedAt) < Date.parse(session.createdAt)) {
258
- issue("completedAt", "session completion cannot precede creation");
259
- }
260
- if (session.plan != null && (session.plan.authorizationSessionNo !== session.sessionNo
261
- || session.plan.clientRequestId !== session.clientRequestId
262
- || session.plan.requestDigest !== session.requestDigest
263
- || session.plan.profileCode !== session.profileCode
264
- || session.plan.profileVersion !== session.profileVersion))
265
- issue("plan", "plan identity must match its actor-scoped session");
266
- if (["AWAITING_AUTHORIZATION", "AUTHORIZING", "INSPECTING"].includes(session.status)) {
267
- if (session.plan != null || session.errorCode != null || session.errorSummary != null || session.completedAt != null) {
268
- issue("status", `${session.status} tuple is invalid`);
269
- }
270
- }
271
- else if (session.status === "SUCCEEDED") {
272
- if (session.plan == null || session.errorCode != null || session.errorSummary != null
273
- || session.completedAt == null || session.completedAt !== session.plan.reviewedAt) {
274
- issue("status", "SUCCEEDED tuple is invalid");
275
- }
276
- }
277
- else if (session.plan != null || session.errorCode == null || session.errorSummary == null
278
- || session.completedAt == null)
279
- issue("status", `${session.status} tuple is invalid`);
280
- });
281
- export const IntegrationBootstrapRunStateSchema = z.enum(["ACCEPTED", "RUNNING", "UNKNOWN", "SUCCEEDED", "FAILED"]);
282
- export const IntegrationBootstrapActionKindSchema = z.enum(["APPLY", "RECONCILE", "RECOVER", "REAPPLY"]);
283
- export const IntegrationBootstrapActionStateSchema = z.enum([
284
- "AWAITING_AUTHORIZATION", "AUTHORIZING", "RUNNING", "UNKNOWN", "SUCCEEDED", "FAILED", "EXPIRED"
285
- ]);
286
- export const IntegrationBootstrapStepSchema = z.enum([
287
- "RESERVED", "FRESHNESS_CHECK", "KEYCLOAK_CLIENT_CREATE", "KEYCLOAK_CLIENT_HARDEN", "KEYCLOAK_ROLE_CREATE",
288
- "KEYCLOAK_CONTRACT_APPLY", "KEYCLOAK_ROLE_GRANT", "JENKINS_FOLDER_CREATE", "KEYCLOAK_SECRET_ROTATE",
289
- "JENKINS_CREDENTIAL_WRITE", "TOKEN_CANARY", "FINAL_READBACK", "COMPLETE"
290
- ]);
291
- export const IntegrationBootstrapRecoveryDispositionSchema = z.enum([
292
- "VERIFIED", "UNTOUCHED", "RECOVERABLE", "CONFLICT", "READBACK_UNKNOWN", "WRITE_UNKNOWN", "PAIRING_UNVERIFIED"
293
- ]);
294
- export const IntegrationBootstrapStoredErrorCodeSchema = z.enum([
295
- "INTEGRATION_BOOTSTRAP_RESULT_UNKNOWN",
296
- "INTEGRATION_BOOTSTRAP_AUTHORIZATION_REJECTED",
297
- "INTEGRATION_BOOTSTRAP_AUTHORIZATION_INVALID",
298
- "INTEGRATION_BOOTSTRAP_AUTHORIZATION_EXPIRED",
299
- "INTEGRATION_BOOTSTRAP_PLAN_EXPIRED",
300
- "INTEGRATION_BOOTSTRAP_PLAN_DRIFTED",
301
- "INTEGRATION_BOOTSTRAP_FRESHNESS_CHECK_FAILED",
302
- "INTEGRATION_BOOTSTRAP_PREREQUISITE_FAILED",
303
- "INTEGRATION_BOOTSTRAP_KEYCLOAK_REQUEST_FAILED",
304
- "INTEGRATION_BOOTSTRAP_JENKINS_REQUEST_FAILED",
305
- "INTEGRATION_BOOTSTRAP_INTERNAL_FAILED"
306
- ]);
307
- const ActionObjectSchema = z.object({
308
- actionNo: z.string().regex(ACTION_NO),
309
- runNo: z.string().regex(RUN_NO),
310
- kind: IntegrationBootstrapActionKindSchema,
311
- state: IntegrationBootstrapActionStateSchema,
312
- disposition: IntegrationBootstrapRecoveryDispositionSchema.nullable(),
313
- expectedRunVersion: nonnegativeInt32,
314
- clientRequestId,
315
- requestDigest: digest,
316
- step: IntegrationBootstrapStepSchema,
317
- authorizationExpiresAt: instant,
318
- writeAttempted: z.boolean(),
319
- writeAttemptCount: nonnegativeInt32,
320
- firstWriteAttemptedAt: nullableInstant,
321
- lastWriteAttemptedAt: nullableInstant,
322
- ownershipEvidenceDigest: nullableDigest,
323
- jenkinsMetadataEvidenceDigest: nullableDigest,
324
- tokenClaimEvidenceDigest: nullableDigest,
325
- finalEvidenceDigest: nullableDigest,
326
- tokenVerifiedAt: nullableInstant,
327
- errorCode: IntegrationBootstrapStoredErrorCodeSchema.nullable(),
328
- retryable: z.boolean(),
329
- createdAt: instant,
330
- startedAt: nullableInstant,
331
- completedAt: nullableInstant
332
- }).strict();
333
- function refineWriteTuple(value, issue) {
334
- if (value.writeAttempted !== (value.writeAttemptCount > 0))
335
- issue("writeAttemptCount", "write count must match writeAttempted");
336
- if (value.writeAttempted !== (value.firstWriteAttemptedAt != null && value.lastWriteAttemptedAt != null)) {
337
- issue("writeAttempted", "write timestamps must be present exactly when a write was attempted");
338
- }
339
- if (value.firstWriteAttemptedAt != null && value.lastWriteAttemptedAt != null
340
- && Date.parse(value.firstWriteAttemptedAt) > Date.parse(value.lastWriteAttemptedAt)) {
341
- issue("lastWriteAttemptedAt", "write timestamps are not monotonic");
342
- }
343
- }
344
- function refineChronology(value, issue) {
345
- const before = (left, right) => left != null && right != null && Date.parse(left) < Date.parse(right);
346
- if (before(value.startedAt, value.createdAt))
347
- issue("startedAt", "startedAt cannot precede createdAt");
348
- if (value.firstWriteAttemptedAt != null && value.startedAt == null) {
349
- issue("firstWriteAttemptedAt", "a write requires startedAt");
350
- }
351
- else if (before(value.firstWriteAttemptedAt, value.startedAt)) {
352
- issue("firstWriteAttemptedAt", "first write cannot precede startedAt");
353
- }
354
- const tokenFloor = value.lastWriteAttemptedAt ?? value.startedAt;
355
- if (before(value.tokenVerifiedAt, tokenFloor))
356
- issue("tokenVerifiedAt", "token verification chronology is invalid");
357
- const completionFloor = value.tokenVerifiedAt ?? value.lastWriteAttemptedAt ?? value.startedAt ?? value.createdAt;
358
- if (before(value.completedAt, completionFloor))
359
- issue("completedAt", "completion chronology is invalid");
360
- }
361
- export const IntegrationBootstrapActionViewSchema = ActionObjectSchema.superRefine((action, context) => {
362
- const issue = (path, message) => context.addIssue({ code: "custom", path: [path], message });
363
- refineWriteTuple(action, issue);
364
- refineChronology(action, issue);
365
- if (Date.parse(action.authorizationExpiresAt) <= Date.parse(action.createdAt)) {
366
- issue("authorizationExpiresAt", "authorization expiry must follow action creation");
367
- }
368
- if (action.kind === "RECONCILE" && action.writeAttempted)
369
- issue("writeAttempted", "RECONCILE is strictly read-only");
370
- const noEvidence = action.ownershipEvidenceDigest == null && action.jenkinsMetadataEvidenceDigest == null
371
- && action.tokenClaimEvidenceDigest == null && action.finalEvidenceDigest == null && action.tokenVerifiedAt == null;
372
- if (["AWAITING_AUTHORIZATION", "AUTHORIZING"].includes(action.state)) {
373
- if (action.step !== "RESERVED" || action.disposition != null || !noEvidence || action.errorCode != null
374
- || action.writeAttempted || action.startedAt != null || action.completedAt != null || action.retryable) {
375
- issue("state", `${action.state} tuple is invalid`);
376
- }
377
- }
378
- else if (action.state === "RUNNING") {
379
- if (action.startedAt == null || action.completedAt != null || action.disposition != null
380
- || !noEvidence || action.errorCode != null || action.retryable) {
381
- issue("state", "RUNNING action tuple is invalid");
382
- }
383
- }
384
- else if (action.state === "UNKNOWN") {
385
- if (action.completedAt == null || action.ownershipEvidenceDigest == null
386
- || action.errorCode !== "INTEGRATION_BOOTSTRAP_RESULT_UNKNOWN" || !action.retryable
387
- || action.disposition == null)
388
- issue("state", "UNKNOWN action tuple is invalid");
389
- if (action.kind === "RECONCILE" && !["CONFLICT", "READBACK_UNKNOWN"].includes(action.disposition ?? "")) {
390
- issue("disposition", "RECONCILE UNKNOWN disposition is invalid");
391
- }
392
- if (action.kind !== "RECONCILE" && ![
393
- "CONFLICT", "READBACK_UNKNOWN", "WRITE_UNKNOWN", "PAIRING_UNVERIFIED"
394
- ].includes(action.disposition ?? "")) {
395
- issue("disposition", "write action UNKNOWN disposition is invalid");
396
- }
397
- if (action.disposition === "PAIRING_UNVERIFIED" && (action.jenkinsMetadataEvidenceDigest == null || action.tokenClaimEvidenceDigest != null
398
- || action.finalEvidenceDigest != null || action.tokenVerifiedAt != null))
399
- issue("disposition", "PAIRING_UNVERIFIED evidence tuple is invalid");
400
- }
401
- else if (action.state === "SUCCEEDED") {
402
- if (action.step !== "COMPLETE" || action.disposition == null || action.ownershipEvidenceDigest == null
403
- || action.errorCode != null || action.retryable || action.completedAt == null) {
404
- issue("state", "SUCCEEDED action tuple is invalid");
405
- }
406
- if (action.kind !== "RECONCILE" && (action.disposition !== "VERIFIED" || !action.writeAttempted
407
- || action.jenkinsMetadataEvidenceDigest == null || action.tokenClaimEvidenceDigest == null
408
- || action.finalEvidenceDigest == null || action.tokenVerifiedAt == null))
409
- issue("state", "successful write action lacks exact final evidence");
410
- if (action.kind === "RECONCILE" && ![
411
- "VERIFIED", "UNTOUCHED", "RECOVERABLE", "CONFLICT", "READBACK_UNKNOWN", "PAIRING_UNVERIFIED"
412
- ].includes(action.disposition ?? ""))
413
- issue("disposition", "successful RECONCILE disposition is invalid");
414
- }
415
- else if (action.completedAt == null || action.errorCode == null || action.disposition != null
416
- || !noEvidence || action.writeAttempted || action.retryable)
417
- issue("state", `${action.state} tuple is invalid`);
418
- });
419
- export const IntegrationBootstrapApplyStartSchema = z.object({
420
- runNo: z.string().regex(RUN_NO),
421
- actionNo: z.string().regex(ACTION_NO),
422
- authorizationNo: z.string().regex(ACTION_NO),
423
- profileCode: z.literal("JENKINS_GITOPS_IMAGE_WRITER"),
424
- profileVersion: z.literal("2"),
425
- planSessionNo: z.string().regex(PLAN_SESSION_NO),
426
- planDigest: digest,
427
- clientRequestId,
428
- requestDigest: digest,
429
- runState: z.literal("ACCEPTED"),
430
- actionState: z.literal("AWAITING_AUTHORIZATION"),
431
- authorizationUrl: AuthorizationUrlSchema,
432
- authorizationExpiresAt: instant
433
- }).strict().superRefine((started, context) => {
434
- if (started.authorizationNo !== started.actionNo) {
435
- context.addIssue({ code: "custom", path: ["authorizationNo"], message: "authorizationNo must match actionNo" });
436
- }
437
- });
438
- export const IntegrationBootstrapActionStartSchema = z.object({
439
- runNo: z.string().regex(RUN_NO),
440
- actionNo: z.string().regex(ACTION_NO),
441
- authorizationNo: z.string().regex(ACTION_NO),
442
- kind: IntegrationBootstrapActionKindSchema.exclude(["APPLY"]),
443
- clientRequestId,
444
- requestDigest: digest,
445
- state: z.literal("AWAITING_AUTHORIZATION"),
446
- authorizationUrl: AuthorizationUrlSchema,
447
- authorizationExpiresAt: instant
448
- }).strict().superRefine((started, context) => {
449
- if (started.authorizationNo !== started.actionNo) {
450
- context.addIssue({ code: "custom", path: ["authorizationNo"], message: "authorizationNo must match actionNo" });
451
- }
452
- });
453
- const RunObjectSchema = z.object({
454
- runNo: z.string().regex(RUN_NO),
455
- profileCode: z.literal("JENKINS_GITOPS_IMAGE_WRITER"),
456
- profileVersion: z.literal("2"),
457
- planSessionNo: z.string().regex(PLAN_SESSION_NO),
458
- planDigest: digest,
459
- clientRequestId,
460
- requestDigest: digest,
461
- state: IntegrationBootstrapRunStateSchema,
462
- version: nonnegativeInt32,
463
- step: IntegrationBootstrapStepSchema,
464
- disposition: IntegrationBootstrapRecoveryDispositionSchema.nullable(),
465
- reconcileAllowed: z.boolean(),
466
- recoverAllowed: z.boolean(),
467
- reapplyAllowed: z.boolean(),
468
- writeAttempted: z.boolean(),
469
- writeAttemptCount: nonnegativeInt32,
470
- firstWriteAttemptedAt: nullableInstant,
471
- lastWriteAttemptedAt: nullableInstant,
472
- ownershipEvidenceDigest: nullableDigest,
473
- jenkinsMetadataEvidenceDigest: nullableDigest,
474
- tokenClaimEvidenceDigest: nullableDigest,
475
- finalEvidenceDigest: nullableDigest,
476
- tokenVerifiedAt: nullableInstant,
477
- errorCode: IntegrationBootstrapStoredErrorCodeSchema.nullable(),
478
- retryable: z.boolean(),
479
- createdAt: instant,
480
- startedAt: nullableInstant,
481
- completedAt: nullableInstant,
482
- currentAction: IntegrationBootstrapActionViewSchema.nullable(),
483
- lastAction: IntegrationBootstrapActionViewSchema.nullable()
484
- }).strict();
485
- export const IntegrationBootstrapRunViewSchema = RunObjectSchema.superRefine((run, context) => {
486
- const issue = (path, message) => context.addIssue({ code: "custom", path: [path], message });
487
- refineWriteTuple(run, issue);
488
- refineChronology(run, issue);
489
- for (const [path, action] of [["currentAction", run.currentAction], ["lastAction", run.lastAction]]) {
490
- if (action != null && action.runNo !== run.runNo)
491
- issue(path, `${path} must belong to the same run`);
492
- }
493
- const noEvidence = run.ownershipEvidenceDigest == null && run.jenkinsMetadataEvidenceDigest == null
494
- && run.tokenClaimEvidenceDigest == null && run.finalEvidenceDigest == null && run.tokenVerifiedAt == null;
495
- const noAllowed = !run.reconcileAllowed && !run.recoverAllowed && !run.reapplyAllowed;
496
- const currentIsInitial = run.currentAction?.kind === "APPLY"
497
- && run.currentAction.clientRequestId === run.clientRequestId
498
- && run.currentAction.requestDigest === run.requestDigest;
499
- if (run.state === "ACCEPTED") {
500
- if (run.step !== "RESERVED" || run.disposition != null || !noEvidence || run.errorCode != null
501
- || run.writeAttempted || run.startedAt != null || run.completedAt != null || run.retryable || !noAllowed
502
- || !currentIsInitial
503
- || !["AWAITING_AUTHORIZATION", "AUTHORIZING"].includes(run.currentAction?.state ?? "")
504
- || run.lastAction != null)
505
- issue("state", "ACCEPTED run tuple is invalid");
506
- }
507
- else if (run.state === "RUNNING") {
508
- if (run.startedAt == null || run.completedAt != null || run.disposition != null
509
- || run.ownershipEvidenceDigest != null || run.errorCode != null || run.retryable || !noAllowed
510
- || !currentIsInitial || run.currentAction?.state !== "RUNNING" || run.lastAction != null) {
511
- issue("state", "RUNNING run tuple is invalid");
512
- }
513
- }
514
- else if (run.state === "UNKNOWN") {
515
- const expectedReconcile = run.currentAction == null;
516
- const expectedRecover = expectedReconcile && ["RECOVERABLE", "PAIRING_UNVERIFIED"].includes(run.disposition ?? "");
517
- const expectedReapply = expectedReconcile && run.disposition === "UNTOUCHED";
518
- if (run.startedAt == null || run.completedAt != null || run.disposition == null || run.disposition === "VERIFIED"
519
- || run.ownershipEvidenceDigest == null || run.errorCode !== "INTEGRATION_BOOTSTRAP_RESULT_UNKNOWN"
520
- || !run.retryable || run.lastAction == null || run.reconcileAllowed !== expectedReconcile
521
- || run.recoverAllowed !== expectedRecover || run.reapplyAllowed !== expectedReapply) {
522
- issue("state", "UNKNOWN run tuple is invalid");
523
- }
524
- if (run.currentAction != null && (run.currentAction.kind === "APPLY"
525
- || !["AWAITING_AUTHORIZATION", "AUTHORIZING", "RUNNING"].includes(run.currentAction.state)))
526
- issue("currentAction", "UNKNOWN run current action must be active recovery");
527
- if (!["UNKNOWN", "SUCCEEDED", "FAILED", "EXPIRED"].includes(run.lastAction?.state ?? "")
528
- || run.lastAction?.disposition !== run.disposition
529
- || run.lastAction?.ownershipEvidenceDigest !== run.ownershipEvidenceDigest
530
- || run.lastAction?.jenkinsMetadataEvidenceDigest !== run.jenkinsMetadataEvidenceDigest
531
- || run.lastAction?.tokenClaimEvidenceDigest !== run.tokenClaimEvidenceDigest
532
- || run.lastAction?.finalEvidenceDigest !== run.finalEvidenceDigest
533
- || run.lastAction?.tokenVerifiedAt !== run.tokenVerifiedAt) {
534
- issue("lastAction", "UNKNOWN run must expose its exact terminal evidence action");
535
- }
536
- if (run.disposition === "PAIRING_UNVERIFIED" && (run.jenkinsMetadataEvidenceDigest == null || run.tokenClaimEvidenceDigest != null
537
- || run.finalEvidenceDigest != null || run.tokenVerifiedAt != null))
538
- issue("disposition", "PAIRING_UNVERIFIED run evidence tuple is invalid");
539
- }
540
- else if (run.state === "SUCCEEDED") {
541
- if (run.step !== "COMPLETE" || run.disposition !== "VERIFIED" || !run.writeAttempted
542
- || run.ownershipEvidenceDigest == null || run.jenkinsMetadataEvidenceDigest == null
543
- || run.tokenClaimEvidenceDigest == null || run.finalEvidenceDigest == null || run.tokenVerifiedAt == null
544
- || run.errorCode != null || run.retryable || !noAllowed || run.startedAt == null || run.completedAt == null
545
- || run.currentAction != null || run.lastAction == null
546
- || !["APPLY", "RECOVER", "REAPPLY"].includes(run.lastAction.kind)
547
- || run.lastAction.state !== "SUCCEEDED"
548
- || run.lastAction.disposition !== run.disposition
549
- || run.lastAction.ownershipEvidenceDigest !== run.ownershipEvidenceDigest
550
- || run.lastAction.jenkinsMetadataEvidenceDigest !== run.jenkinsMetadataEvidenceDigest
551
- || run.lastAction.tokenClaimEvidenceDigest !== run.tokenClaimEvidenceDigest
552
- || run.lastAction.finalEvidenceDigest !== run.finalEvidenceDigest
553
- || run.lastAction.tokenVerifiedAt !== run.tokenVerifiedAt)
554
- issue("state", "SUCCEEDED run tuple is invalid");
555
- }
556
- else if (run.currentAction != null || run.lastAction?.kind !== "APPLY"
557
- || !["FAILED", "EXPIRED"].includes(run.lastAction.state) || run.completedAt == null
558
- || run.lastAction.clientRequestId !== run.clientRequestId
559
- || run.lastAction.requestDigest !== run.requestDigest
560
- || run.errorCode == null || run.disposition != null || !noEvidence || run.writeAttempted
561
- || run.lastAction.errorCode !== run.errorCode
562
- || run.retryable || !noAllowed)
563
- issue("state", "FAILED run tuple is invalid");
564
- });
565
- //# sourceMappingURL=schemas.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/integration-bootstrap/schemas.ts"],"names":[],"mappings":"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"}