@numa-tech/numa 1.13.4 → 1.14.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 (90) hide show
  1. package/README.md +140 -26
  2. package/dist/application-onboarding/client.d.ts +1 -0
  3. package/dist/application-onboarding/commands.d.ts +2 -0
  4. package/dist/application-onboarding/commands.js +41 -16
  5. package/dist/application-onboarding/commands.js.map +1 -1
  6. package/dist/application-onboarding/errors.js +1 -1
  7. package/dist/application-onboarding/errors.js.map +1 -1
  8. package/dist/application-onboarding/schemas.d.ts +8 -0
  9. package/dist/application-onboarding/schemas.js +4 -2
  10. package/dist/application-onboarding/schemas.js.map +1 -1
  11. package/dist/application-onboarding/scm-credentials.d.ts +5 -2
  12. package/dist/application-onboarding/scm-credentials.js +64 -13
  13. package/dist/application-onboarding/scm-credentials.js.map +1 -1
  14. package/dist/cli.js +4 -2
  15. package/dist/cli.js.map +1 -1
  16. package/dist/command-catalog.js +252 -15
  17. package/dist/command-catalog.js.map +1 -1
  18. package/dist/integration-bootstrap/client.d.ts +23 -0
  19. package/dist/integration-bootstrap/client.js +124 -0
  20. package/dist/integration-bootstrap/client.js.map +1 -0
  21. package/dist/integration-bootstrap/commands.d.ts +20 -0
  22. package/dist/integration-bootstrap/commands.js +129 -0
  23. package/dist/integration-bootstrap/commands.js.map +1 -0
  24. package/dist/integration-bootstrap/schemas.d.ts +422 -0
  25. package/dist/integration-bootstrap/schemas.js +216 -0
  26. package/dist/integration-bootstrap/schemas.js.map +1 -0
  27. package/dist/jenkins/commands.d.ts +10 -0
  28. package/dist/jenkins/commands.js +15 -0
  29. package/dist/jenkins/commands.js.map +1 -0
  30. package/dist/jenkins-jobs/client.d.ts +12 -12
  31. package/dist/jenkins-jobs/schemas.d.ts +96 -8
  32. package/dist/jenkins-jobs/schemas.js +2 -2
  33. package/dist/jenkins-jobs/schemas.js.map +1 -1
  34. package/dist/pipeline/client.d.ts +5 -0
  35. package/dist/pipeline/commands.js +2 -0
  36. package/dist/pipeline/commands.js.map +1 -1
  37. package/dist/pipeline/schemas.d.ts +6 -0
  38. package/dist/pipeline/schemas.js +2 -0
  39. package/dist/pipeline/schemas.js.map +1 -1
  40. package/dist/platform-build-job-replans/client.d.ts +283 -0
  41. package/dist/platform-build-job-replans/client.js +148 -0
  42. package/dist/platform-build-job-replans/client.js.map +1 -0
  43. package/dist/platform-build-job-replans/commands.d.ts +6 -0
  44. package/dist/platform-build-job-replans/commands.js +371 -0
  45. package/dist/platform-build-job-replans/commands.js.map +1 -0
  46. package/dist/platform-build-job-replans/schemas.d.ts +145 -0
  47. package/dist/platform-build-job-replans/schemas.js +150 -0
  48. package/dist/platform-build-job-replans/schemas.js.map +1 -0
  49. package/dist/platform-build-rollouts/client.d.ts +346 -0
  50. package/dist/platform-build-rollouts/client.js +153 -0
  51. package/dist/platform-build-rollouts/client.js.map +1 -0
  52. package/dist/platform-build-rollouts/commands.d.ts +98 -0
  53. package/dist/platform-build-rollouts/commands.js +465 -0
  54. package/dist/platform-build-rollouts/commands.js.map +1 -0
  55. package/dist/platform-build-rollouts/schemas.d.ts +348 -0
  56. package/dist/platform-build-rollouts/schemas.js +257 -0
  57. package/dist/platform-build-rollouts/schemas.js.map +1 -0
  58. package/dist/platform-builds/client.d.ts +147 -0
  59. package/dist/platform-builds/client.js +115 -0
  60. package/dist/platform-builds/client.js.map +1 -0
  61. package/dist/platform-builds/commands.d.ts +7 -0
  62. package/dist/platform-builds/commands.js +226 -0
  63. package/dist/platform-builds/commands.js.map +1 -0
  64. package/dist/platform-builds/schemas.d.ts +127 -0
  65. package/dist/platform-builds/schemas.js +66 -0
  66. package/dist/platform-builds/schemas.js.map +1 -0
  67. package/dist/publications/client.d.ts +30 -0
  68. package/dist/publications/client.js +6 -1
  69. package/dist/publications/client.js.map +1 -1
  70. package/dist/publications/commands.d.ts +2 -0
  71. package/dist/publications/commands.js +84 -5
  72. package/dist/publications/commands.js.map +1 -1
  73. package/dist/repositories/client.d.ts +6 -0
  74. package/dist/repositories/commands.d.ts +3 -1
  75. package/dist/repositories/commands.js +22 -8
  76. package/dist/repositories/commands.js.map +1 -1
  77. package/dist/repositories/errors.d.ts +2 -1
  78. package/dist/repositories/errors.js +4 -2
  79. package/dist/repositories/errors.js.map +1 -1
  80. package/dist/repositories/schemas.d.ts +32 -0
  81. package/dist/repositories/schemas.js +4 -0
  82. package/dist/repositories/schemas.js.map +1 -1
  83. package/package.json +4 -4
  84. package/skills/numa-create-application/SKILL.md +26 -13
  85. package/skills/numa-create-application/agents/openai.yaml +2 -2
  86. package/skills/numa-create-application/evals/evals.json +72 -12
  87. package/skills/numa-create-application/references/checklist.md +12 -5
  88. package/skills/numa-create-application/references/numa-cli.md +55 -13
  89. package/skills/numa-create-application/references/promote-workflows.md +63 -24
  90. package/skills/numa-create-application/scripts/inspect-project.mjs +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/platform-build-rollouts/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import type { Command } from "commander";
2
+ import { PlatformBuildRolloutClient } from "./client.js";
3
+ import { type PlatformBuildRollout, type PlatformBuildRolloutConfigureAction, type PlatformBuildRolloutPlan } from "./schemas.js";
4
+ export interface PlatformBuildRolloutCommandDependencies {
5
+ clientFactory?: () => PlatformBuildRolloutClient;
6
+ }
7
+ export declare function publicPlatformBuildRolloutPlan(result: PlatformBuildRolloutPlan): {
8
+ plan_no: string;
9
+ operation: "DISABLE_PLATFORM" | "ENABLE_PLATFORM";
10
+ state: "BLOCKED" | "CONSUMED" | "EXPIRED" | "READY";
11
+ plan_hash: string;
12
+ application_code: string;
13
+ instance_code: string;
14
+ contract_version: "gitops-image-delivery/v2" | null;
15
+ shared_library_revision: string | null;
16
+ verification_mode: "JENKINS_API_VERIFIED" | null | undefined;
17
+ blockers: string[];
18
+ side_effects: string[];
19
+ expires_at: string | null;
20
+ };
21
+ export declare function publicPlatformBuildRollout(result: PlatformBuildRollout): {
22
+ rollout_no: string;
23
+ application_code: string;
24
+ instance_code: string;
25
+ desired_mode: "DISABLED" | "PLATFORM";
26
+ status: "ACTION_REQUIRED" | "DISABLED" | "DISABLE_ACTION_REQUIRED" | "READY" | "STALE";
27
+ contract_version: "gitops-image-delivery/v2" | null;
28
+ shared_library_revision: string | null;
29
+ verification_source: "JENKINS_API_VERIFIED" | null;
30
+ verification_reference: string | null;
31
+ verified_at: string | null;
32
+ verification_state: "DRIFTED" | "UNAVAILABLE" | "VERIFIED";
33
+ version: number;
34
+ public_tuple: Record<string, never> | {
35
+ contractVersion: "gitops-image-delivery/v2";
36
+ sharedLibraryRevision: string;
37
+ platformUrl: string;
38
+ oidcEndpoint: string;
39
+ jenkinsInstanceCode: string;
40
+ audience: string;
41
+ rolloutMode: "platform";
42
+ legacyFallback: false;
43
+ rolloutEntry: string;
44
+ snapshotFolderFullName: "mci-platform-snapshots";
45
+ };
46
+ writer_credential_configured: boolean;
47
+ observed_shared_library_revision: string | null;
48
+ verified_source_revision: string | null;
49
+ jenkinsfile_digest: string | null;
50
+ configuration_digest: string | null;
51
+ required_actions: string[];
52
+ };
53
+ export declare function publicPlatformBuildRolloutConfigureAction(result: PlatformBuildRolloutConfigureAction): {
54
+ rollout_no: string;
55
+ idempotency_key: string;
56
+ request_digest: string;
57
+ expected_version: number;
58
+ state: "FAILED" | "PENDING" | "RECOVERING" | "SUCCEEDED" | "UNKNOWN";
59
+ disposition: "CONFLICT" | "FAILED" | "PENDING" | "READBACK_UNKNOWN" | "RECOVERING" | "UNTOUCHED" | "VERIFIED" | "WRITE_UNKNOWN";
60
+ result_version: number | null;
61
+ error_code: string | null;
62
+ retryable: boolean;
63
+ reapply_allowed: boolean;
64
+ recovery_started_at: string | null;
65
+ rollout: {
66
+ rollout_no: string;
67
+ application_code: string;
68
+ instance_code: string;
69
+ desired_mode: "DISABLED" | "PLATFORM";
70
+ status: "ACTION_REQUIRED" | "DISABLED" | "DISABLE_ACTION_REQUIRED" | "READY" | "STALE";
71
+ contract_version: "gitops-image-delivery/v2" | null;
72
+ shared_library_revision: string | null;
73
+ verification_source: "JENKINS_API_VERIFIED" | null;
74
+ verification_reference: string | null;
75
+ verified_at: string | null;
76
+ verification_state: "DRIFTED" | "UNAVAILABLE" | "VERIFIED";
77
+ version: number;
78
+ public_tuple: Record<string, never> | {
79
+ contractVersion: "gitops-image-delivery/v2";
80
+ sharedLibraryRevision: string;
81
+ platformUrl: string;
82
+ oidcEndpoint: string;
83
+ jenkinsInstanceCode: string;
84
+ audience: string;
85
+ rolloutMode: "platform";
86
+ legacyFallback: false;
87
+ rolloutEntry: string;
88
+ snapshotFolderFullName: "mci-platform-snapshots";
89
+ };
90
+ writer_credential_configured: boolean;
91
+ observed_shared_library_revision: string | null;
92
+ verified_source_revision: string | null;
93
+ jenkinsfile_digest: string | null;
94
+ configuration_digest: string | null;
95
+ required_actions: string[];
96
+ };
97
+ };
98
+ export declare function registerPlatformBuildRolloutCommands(jenkins: Command, dependencies?: PlatformBuildRolloutCommandDependencies): void;
@@ -0,0 +1,465 @@
1
+ import process from "node:process";
2
+ import { loadAppConfig } from "../app-config.js";
3
+ import { loadConfig } from "../config.js";
4
+ import { PipelineError, sanitizePipelineOutput } from "../pipeline/errors.js";
5
+ import { PlatformBuildRolloutClient } from "./client.js";
6
+ import { PLATFORM_BUILD_IMAGE_CONTRACT } from "./schemas.js";
7
+ const PLAN_HASH = /^[0-9a-f]{64}$/u;
8
+ const COMMIT = /^[0-9a-f]{40}$/u;
9
+ const SAFE_KEY = /^[A-Za-z0-9][A-Za-z0-9._:/+-]*$/u;
10
+ const CONFIGURATION_ERROR_PREFIX = "JENKINS_GITOPS_CONFIGURATION_";
11
+ const DEFINITE_CONFIGURATION_DIAGNOSTICS = new Set([
12
+ "JENKINS_GITOPS_CONFIGURATION_CREDENTIALS_API_UNAVAILABLE",
13
+ "JENKINS_GITOPS_CONFIGURATION_FOLDER_API_UNAVAILABLE",
14
+ "JENKINS_GITOPS_CONFIGURATION_MATRIX_AUTH_API_UNAVAILABLE",
15
+ "JENKINS_GITOPS_CONFIGURATION_PIPELINE_LIBRARY_API_UNAVAILABLE",
16
+ "JENKINS_GITOPS_CONFIGURATION_WORKFLOW_JOB_API_UNAVAILABLE",
17
+ "JENKINS_GITOPS_CONFIGURATION_GIT_API_UNAVAILABLE",
18
+ "JENKINS_GITOPS_CONFIGURATION_RUNTIME_TUPLE_UNAPPROVED",
19
+ "JENKINS_GITOPS_CONFIGURATION_SCRIPT_BOOTSTRAP_INSPECTION_FAILED",
20
+ "JENKINS_GITOPS_CONFIGURATION_CORE_API_INSPECTION_FAILED",
21
+ "JENKINS_GITOPS_CONFIGURATION_ENVIRONMENT_INSPECTION_FAILED",
22
+ "JENKINS_GITOPS_CONFIGURATION_ROLLOUT_INSPECTION_FAILED",
23
+ "JENKINS_GITOPS_CONFIGURATION_CONFIGURATION_INSPECTION_FAILED",
24
+ "JENKINS_GITOPS_CONFIGURATION_LIBRARY_INSPECTION_FAILED",
25
+ "JENKINS_GITOPS_CONFIGURATION_CREDENTIAL_INSPECTION_FAILED",
26
+ "JENKINS_GITOPS_CONFIGURATION_AUTHORIZATION_INSPECTION_FAILED",
27
+ "JENKINS_GITOPS_CONFIGURATION_SNAPSHOT_FOLDER_INSPECTION_FAILED"
28
+ ]);
29
+ const DEFINITE_CONFIGURATION_APPLY_ONLY_DIAGNOSTICS = new Set([
30
+ "JENKINS_GITOPS_CONFIGURATION_RESPONSE_NON_JSON",
31
+ "JENKINS_GITOPS_CONFIGURATION_RESPONSE_TOP_LEVEL_TYPE",
32
+ "JENKINS_GITOPS_CONFIGURATION_RESPONSE_TOP_LEVEL_KEYS",
33
+ "JENKINS_GITOPS_CONFIGURATION_RESPONSE_FIELD_MISSING",
34
+ "JENKINS_GITOPS_CONFIGURATION_RESPONSE_FIELD_TYPE",
35
+ "JENKINS_GITOPS_CONFIGURATION_RESPONSE_FIELD_VALUE",
36
+ "JENKINS_GITOPS_CONFIGURATION_RESPONSE_TOO_LARGE",
37
+ "JENKINS_GITOPS_CONFIGURATION_WRITER_CREDENTIAL_NOT_FOUND"
38
+ ]);
39
+ function requireYes(value) {
40
+ if (!value) {
41
+ throw new PipelineError("Platform-build rollout mutation requires --yes after reviewing its exact scope.", "JENKINS_PLATFORM_BUILD_ROLLOUT_CONFIRMATION_REQUIRED");
42
+ }
43
+ }
44
+ function safeKey(value) {
45
+ const trimmed = value?.trim() ?? "";
46
+ if (!trimmed || trimmed.length > 200 || !SAFE_KEY.test(trimmed)) {
47
+ throw new PipelineError("idempotency-key must be 1-200 safe opaque characters.", "JENKINS_PLATFORM_BUILD_ROLLOUT_IDEMPOTENCY_INVALID");
48
+ }
49
+ return trimmed;
50
+ }
51
+ function exactPlanHash(value) {
52
+ const trimmed = value?.trim() ?? "";
53
+ if (!PLAN_HASH.test(trimmed)) {
54
+ throw new PipelineError("plan-hash must be the exact lower-case SHA-256 returned by the server.", "JENKINS_PLATFORM_BUILD_ROLLOUT_PLAN_HASH_INVALID");
55
+ }
56
+ return trimmed;
57
+ }
58
+ function sharedLibraryRevision(value) {
59
+ const trimmed = value?.trim() ?? "";
60
+ if (!COMMIT.test(trimmed)) {
61
+ throw new PipelineError("shared-library-revision must be an approved full lower-case 40-character commit.", "JENKINS_PLATFORM_BUILD_ROLLOUT_INPUT_INVALID");
62
+ }
63
+ return trimmed;
64
+ }
65
+ function expectedVersion(value) {
66
+ const parsed = Number(value);
67
+ if (!Number.isSafeInteger(parsed) || parsed < 0) {
68
+ throw new PipelineError("expected-version must be a non-negative integer.", "JENKINS_PLATFORM_BUILD_ROLLOUT_INPUT_INVALID");
69
+ }
70
+ return parsed;
71
+ }
72
+ function resultMayBeUnknown(error) {
73
+ return error instanceof TypeError
74
+ || (error instanceof PipelineError && ((error.status ?? 0) >= 500
75
+ || (error.status != null && error.status >= 200 && error.status < 300
76
+ && error.code === "JENKINS_PLATFORM_BUILD_ROLLOUT_INVALID_RESPONSE")));
77
+ }
78
+ function configureApplyResultMayBeUnknown(error) {
79
+ if (error instanceof PipelineError
80
+ && (DEFINITE_CONFIGURATION_DIAGNOSTICS.has(error.code)
81
+ || DEFINITE_CONFIGURATION_APPLY_ONLY_DIAGNOSTICS.has(error.code)))
82
+ return false;
83
+ if (error instanceof PipelineError
84
+ && error.code.startsWith(CONFIGURATION_ERROR_PREFIX))
85
+ return true;
86
+ return resultMayBeUnknown(error);
87
+ }
88
+ function configurationRecoveryResultMayBeUnknown(error) {
89
+ return !(error instanceof PipelineError
90
+ && DEFINITE_CONFIGURATION_DIAGNOSTICS.has(error.code))
91
+ && resultMayBeUnknown(error);
92
+ }
93
+ function resultUnknown(error, message) {
94
+ return new PipelineError(message, "JENKINS_PLATFORM_BUILD_ROLLOUT_RESULT_UNKNOWN", error instanceof PipelineError ? error.status : undefined, error instanceof PipelineError ? error.requestId : undefined);
95
+ }
96
+ function same(left, right) {
97
+ return JSON.stringify(left) === JSON.stringify(right);
98
+ }
99
+ function exactApplied(plan, baseline, candidate) {
100
+ const expectedMode = plan.operation === "ENABLE_PLATFORM" ? "PLATFORM" : "DISABLED";
101
+ const previous = baseline.find((item) => item.applicationCode === plan.applicationCode
102
+ && item.instanceCode === plan.instanceCode);
103
+ return candidate.applicationCode === plan.applicationCode
104
+ && candidate.instanceCode === plan.instanceCode
105
+ && candidate.desiredMode === expectedMode
106
+ && candidate.contractVersion === plan.contractVersion
107
+ && candidate.sharedLibraryRevision === plan.sharedLibraryRevision
108
+ && (previous == null || candidate.version > previous.version);
109
+ }
110
+ function exactConfigured(baseline, candidate) {
111
+ const common = candidate.rolloutNo === baseline.rolloutNo
112
+ && candidate.applicationCode === baseline.applicationCode
113
+ && candidate.instanceCode === baseline.instanceCode
114
+ && candidate.desiredMode === baseline.desiredMode
115
+ && candidate.contractVersion === baseline.contractVersion
116
+ && candidate.sharedLibraryRevision === baseline.sharedLibraryRevision
117
+ && candidate.version > baseline.version
118
+ && candidate.verificationSource === "JENKINS_API_VERIFIED"
119
+ && candidate.configurationDigest != null
120
+ && same(candidate.expectedPublicConfiguration, baseline.expectedPublicConfiguration)
121
+ && same(candidate.expectedCredentialReferences, baseline.expectedCredentialReferences);
122
+ if (!common)
123
+ return false;
124
+ if (baseline.desiredMode === "DISABLED") {
125
+ return candidate.status === "DISABLED"
126
+ && candidate.verificationState === "UNAVAILABLE"
127
+ && candidate.writerCredentialConfigured === false
128
+ && candidate.observedSharedLibraryRevision == null
129
+ && candidate.verifiedSourceRevision == null
130
+ && candidate.jenkinsfileDigest == null;
131
+ }
132
+ return candidate.status === "READY"
133
+ && candidate.verificationState === "VERIFIED"
134
+ && candidate.observedSharedLibraryRevision === baseline.sharedLibraryRevision
135
+ && candidate.writerCredentialConfigured === true
136
+ && candidate.verifiedSourceRevision != null
137
+ && candidate.jenkinsfileDigest != null;
138
+ }
139
+ function snake(key) {
140
+ return key.replace(/([a-z0-9])([A-Z])/gu, "$1_$2").toLowerCase();
141
+ }
142
+ function stableOutput(value) {
143
+ const safe = sanitizePipelineOutput(value);
144
+ if (Array.isArray(safe))
145
+ return safe.map(stableOutput);
146
+ if (safe && typeof safe === "object") {
147
+ return Object.fromEntries(Object.entries(safe).map(([key, item]) => [snake(key), stableOutput(item)]));
148
+ }
149
+ return safe;
150
+ }
151
+ async function jsonEnabled(command) {
152
+ return Boolean(command.optsWithGlobals().json
153
+ || (await loadAppConfig()).output === "json");
154
+ }
155
+ async function output(command, payload, text) {
156
+ process.stdout.write(await jsonEnabled(command)
157
+ ? `${JSON.stringify(stableOutput(payload), null, 2)}\n`
158
+ : `${String(sanitizePipelineOutput(text))}\n`);
159
+ }
160
+ function examples(command, values, notes = []) {
161
+ const note = notes.length
162
+ ? `\n说明:\n${notes.map((value) => ` - ${value}`).join("\n")}\n`
163
+ : "";
164
+ return command.addHelpText("after", `${note}\nExamples:\n${values.map((value) => ` ${value}`).join("\n")}\n`);
165
+ }
166
+ export function publicPlatformBuildRolloutPlan(result) {
167
+ return {
168
+ plan_no: result.planNo,
169
+ operation: result.operation,
170
+ state: result.state,
171
+ plan_hash: result.planHash,
172
+ application_code: result.applicationCode,
173
+ instance_code: result.instanceCode,
174
+ contract_version: result.contractVersion,
175
+ shared_library_revision: result.sharedLibraryRevision,
176
+ verification_mode: "verificationMode" in result.readiness
177
+ ? result.readiness.verificationMode : null,
178
+ blockers: result.blockers,
179
+ side_effects: result.sideEffects,
180
+ expires_at: result.expiresAt
181
+ };
182
+ }
183
+ export function publicPlatformBuildRollout(result) {
184
+ return {
185
+ rollout_no: result.rolloutNo,
186
+ application_code: result.applicationCode,
187
+ instance_code: result.instanceCode,
188
+ desired_mode: result.desiredMode,
189
+ status: result.status,
190
+ contract_version: result.contractVersion,
191
+ shared_library_revision: result.sharedLibraryRevision,
192
+ verification_source: result.verificationSource,
193
+ verification_reference: result.verificationReference,
194
+ verified_at: result.verifiedAt,
195
+ verification_state: result.verificationState,
196
+ version: result.version,
197
+ public_tuple: result.expectedPublicConfiguration,
198
+ writer_credential_configured: result.writerCredentialConfigured,
199
+ observed_shared_library_revision: result.observedSharedLibraryRevision,
200
+ verified_source_revision: result.verifiedSourceRevision,
201
+ jenkinsfile_digest: result.jenkinsfileDigest,
202
+ configuration_digest: result.configurationDigest,
203
+ required_actions: result.requiredActions
204
+ };
205
+ }
206
+ export function publicPlatformBuildRolloutConfigureAction(result) {
207
+ return {
208
+ rollout_no: result.rolloutNo,
209
+ idempotency_key: result.idempotencyKey,
210
+ request_digest: result.requestDigest,
211
+ expected_version: result.expectedVersion,
212
+ state: result.state,
213
+ disposition: result.disposition,
214
+ result_version: result.resultVersion,
215
+ error_code: result.errorCode,
216
+ retryable: result.retryable,
217
+ reapply_allowed: result.reapplyAllowed,
218
+ recovery_started_at: result.recoveryStartedAt,
219
+ rollout: publicPlatformBuildRollout(result.rollout)
220
+ };
221
+ }
222
+ export function registerPlatformBuildRolloutCommands(jenkins, dependencies = {}) {
223
+ const client = () => dependencies.clientFactory?.()
224
+ ?? new PlatformBuildRolloutClient(loadConfig());
225
+ const rollout = jenkins.command("platform-build-rollout")
226
+ .description("管理独立 Platform Delivery v2 Jenkins rollout")
227
+ .addHelpText("after", `
228
+ 安全边界:
229
+ 该命令族与 legacy jenkins gitops-rollout 完全分离;只支持 ENABLE_PLATFORM/DISABLE_PLATFORM。
230
+ plan/apply/configure 写操作均要求 Idempotency-Key 和 --yes;configure body 只有 expectedVersion。
231
+ CLI 不接受 manual readiness、Flux Git credential、credential ID/value、XML、Groovy、token 或 env map。
232
+ 写响应未知时只 GET 同一 plan/rollout/list 状态,绝不自动重放 POST。
233
+ `);
234
+ const plan = rollout.command("plan").description("创建或读取不可变 v2 rollout plan");
235
+ examples(plan.command("get <plan-no>").description("读取不可变 v2 rollout plan")
236
+ .action(async (planNo, _options, command) => {
237
+ const result = await client().getPlan(planNo);
238
+ const safe = publicPlatformBuildRolloutPlan(result);
239
+ await output(command, { ok: true, plan: safe }, `${safe.plan_no}\t${safe.operation}\t${safe.state}\t${safe.plan_hash}`);
240
+ }), ["numa jenkins platform-build-rollout plan get jgplan_01 --json"]);
241
+ examples(plan.command("enable-platform")
242
+ .description("规划为单应用启用 API-verified Platform Delivery v2")
243
+ .requiredOption("--application <code>", "Application stable code")
244
+ .requiredOption("--instance <code>", "Jenkins instance stable code")
245
+ .requiredOption("--shared-library-revision <40hex>", "服务端批准的 shared-library commit")
246
+ .requiredOption("--idempotency-key <key>", "稳定幂等键")
247
+ .option("--yes", "确认创建不可变 plan")
248
+ .action(async (options, command) => {
249
+ requireYes(options.yes);
250
+ let result;
251
+ try {
252
+ result = await client().createPlan({
253
+ operation: "ENABLE_PLATFORM",
254
+ applicationCode: options.application,
255
+ instanceCode: options.instance,
256
+ contractVersion: PLATFORM_BUILD_IMAGE_CONTRACT,
257
+ sharedLibraryRevision: sharedLibraryRevision(options.sharedLibraryRevision)
258
+ }, safeKey(options.idempotencyKey));
259
+ }
260
+ catch (error) {
261
+ if (!resultMayBeUnknown(error))
262
+ throw error;
263
+ throw resultUnknown(error, "Platform-build rollout plan result is unknown. There is no resolve-by-key endpoint; inspect plan/list before any replay.");
264
+ }
265
+ const safe = publicPlatformBuildRolloutPlan(result);
266
+ await output(command, { ok: result.state === "READY", plan: safe }, `${safe.plan_no}\t${safe.state}\t${safe.plan_hash}\t${safe.blockers.length} blocker(s)`);
267
+ }), [
268
+ "numa jenkins platform-build-rollout plan enable-platform --application code-index --instance numa --shared-library-revision <approved-40hex> --idempotency-key code-index-v2-plan-1 --yes --json"
269
+ ]);
270
+ examples(plan.command("disable-platform")
271
+ .description("规划仅为单应用移除 Platform Delivery v2 gate")
272
+ .requiredOption("--application <code>", "Application stable code")
273
+ .requiredOption("--instance <code>", "Jenkins instance stable code")
274
+ .requiredOption("--idempotency-key <key>", "稳定幂等键")
275
+ .option("--yes", "确认创建不可变 plan")
276
+ .action(async (options, command) => {
277
+ requireYes(options.yes);
278
+ let result;
279
+ try {
280
+ result = await client().createPlan({
281
+ operation: "DISABLE_PLATFORM",
282
+ applicationCode: options.application,
283
+ instanceCode: options.instance
284
+ }, safeKey(options.idempotencyKey));
285
+ }
286
+ catch (error) {
287
+ if (!resultMayBeUnknown(error))
288
+ throw error;
289
+ throw resultUnknown(error, "Platform-build disable plan result is unknown. Inspect the existing rollout before any replay.");
290
+ }
291
+ const safe = publicPlatformBuildRolloutPlan(result);
292
+ await output(command, { ok: result.state === "READY", plan: safe }, `${safe.plan_no}\t${safe.state}\t${safe.plan_hash}\t${safe.blockers.length} blocker(s)`);
293
+ }), [
294
+ "numa jenkins platform-build-rollout plan disable-platform --application code-index --instance numa --idempotency-key code-index-v2-disable-plan-1 --yes --json"
295
+ ]);
296
+ examples(rollout.command("apply")
297
+ .description("执行已审阅 READY plan;只更新独立 v2 rollout registration")
298
+ .requiredOption("--plan-no <number>", "服务端 plan 编号")
299
+ .requiredOption("--plan-hash <64hex>", "服务端 exact plan hash")
300
+ .requiredOption("--idempotency-key <key>", "稳定幂等键")
301
+ .option("--yes", "确认应用 plan")
302
+ .action(async (options, command) => {
303
+ requireYes(options.yes);
304
+ const hash = exactPlanHash(options.planHash);
305
+ const rolloutClient = client();
306
+ const current = await rolloutClient.getPlan(options.planNo);
307
+ if (current.planHash !== hash)
308
+ throw new PipelineError("plan-hash does not match the current immutable plan.", "JENKINS_PLATFORM_BUILD_ROLLOUT_PLAN_HASH_MISMATCH");
309
+ if (current.state !== "READY" || current.blockers.length > 0)
310
+ throw new PipelineError("Platform-build rollout plan is not READY or contains blockers.", "JENKINS_PLATFORM_BUILD_ROLLOUT_PLAN_NOT_READY");
311
+ const baseline = await rolloutClient.list({
312
+ applicationCode: current.applicationCode,
313
+ instanceCode: current.instanceCode
314
+ });
315
+ let result;
316
+ let recoveredFromStatus = false;
317
+ try {
318
+ result = await rolloutClient.apply({ planNo: current.planNo, planHash: hash }, safeKey(options.idempotencyKey));
319
+ }
320
+ catch (error) {
321
+ if (!resultMayBeUnknown(error))
322
+ throw error;
323
+ let candidates;
324
+ try {
325
+ candidates = await rolloutClient.list({
326
+ applicationCode: current.applicationCode,
327
+ instanceCode: current.instanceCode
328
+ });
329
+ }
330
+ catch {
331
+ throw resultUnknown(error, "Platform-build rollout apply result is unknown. Read-only list recovery failed; do not replay.");
332
+ }
333
+ const exact = candidates.filter((candidate) => exactApplied(current, baseline, candidate));
334
+ if (exact.length !== 1)
335
+ throw resultUnknown(error, "Platform-build rollout apply result is unknown. GET recovery found no unique newer exact registration; do not replay.");
336
+ result = exact[0];
337
+ recoveredFromStatus = true;
338
+ }
339
+ const safe = publicPlatformBuildRollout(result);
340
+ await output(command, { ok: true, recovered_from_status: recoveredFromStatus, rollout: safe }, `${safe.rollout_no}\t${safe.desired_mode}\t${safe.status}\tv${safe.version}`);
341
+ }), [
342
+ "numa jenkins platform-build-rollout apply --plan-no jgplan_01 --plan-hash <64hex> --idempotency-key code-index-v2-apply-1 --yes --json"
343
+ ], ["响应未知时只 list/get,并要求唯一 newer exact registration;绝不重放 apply。"]);
344
+ examples(rollout.command("list")
345
+ .description("列出独立 Platform Delivery v2 rollout registrations")
346
+ .option("--application <code>", "按 Application code 过滤")
347
+ .option("--instance <code>", "按 Jenkins instance code 过滤")
348
+ .action(async (options, command) => {
349
+ const result = await client().list({
350
+ applicationCode: options.application,
351
+ instanceCode: options.instance
352
+ });
353
+ const safe = result.map(publicPlatformBuildRollout);
354
+ await output(command, { ok: true, rollouts: safe }, safe.map((item) => `${item.rollout_no}\t${item.application_code}\t${item.instance_code}\t${item.status}`).join("\n") || "没有 platform-build rollout registrations");
355
+ }), ["numa jenkins platform-build-rollout list --application code-index --instance numa --json"]);
356
+ examples(rollout.command("get <rollout-no>")
357
+ .description("读取 v2 rollout 的持久化状态和非敏感 evidence")
358
+ .action(async (rolloutNo, _options, command) => {
359
+ const result = await client().get(rolloutNo);
360
+ const safe = publicPlatformBuildRollout(result);
361
+ await output(command, { ok: true, rollout: safe }, `${safe.rollout_no}\t${safe.desired_mode}\t${safe.status}\t${safe.verification_state}\tv${safe.version}`);
362
+ }), ["numa jenkins platform-build-rollout get jgr_01 --json"]);
363
+ const configureApply = async (rolloutNo, options, command) => {
364
+ if (!rolloutNo)
365
+ throw new PipelineError("rollout-no is required. Use configure apply <rollout-no> or the compatible direct form.", "JENKINS_PLATFORM_BUILD_ROLLOUT_INPUT_INVALID");
366
+ requireYes(options.yes);
367
+ const rolloutClient = client();
368
+ const version = expectedVersion(options.expectedVersion);
369
+ const current = await rolloutClient.get(rolloutNo);
370
+ if (current.version !== version)
371
+ throw new PipelineError("expected-version does not match the current rollout version.", "JENKINS_PLATFORM_BUILD_ROLLOUT_VERSION_MISMATCH");
372
+ const expectedStatus = current.desiredMode === "PLATFORM"
373
+ ? "ACTION_REQUIRED" : "DISABLE_ACTION_REQUIRED";
374
+ if (current.status !== expectedStatus)
375
+ throw new PipelineError("Rollout is not in its exact configurable state.", "JENKINS_PLATFORM_BUILD_ROLLOUT_NOT_CONFIGURABLE");
376
+ let result;
377
+ try {
378
+ const configured = await rolloutClient.configure(current.rolloutNo, { expectedVersion: version }, safeKey(options.idempotencyKey));
379
+ if (!exactConfigured(current, configured))
380
+ throw new PipelineError("Configure returned a response that does not match the locked rollout tuple.", "JENKINS_PLATFORM_BUILD_ROLLOUT_INVALID_RESPONSE", 200);
381
+ result = configured;
382
+ }
383
+ catch (error) {
384
+ if (!configureApplyResultMayBeUnknown(error))
385
+ throw error;
386
+ try {
387
+ await rolloutClient.get(current.rolloutNo);
388
+ }
389
+ catch { /* diagnostic GET is deliberately best effort */ }
390
+ throw resultUnknown(error, `Platform-build configure result is unknown. Do not replay configure. Run "numa jenkins platform-build-rollout configure reconcile ${current.rolloutNo} --expected-version ${version} --idempotency-key <same-idempotency-key> --yes --json".`);
391
+ }
392
+ const safe = publicPlatformBuildRollout(result);
393
+ await output(command, { ok: true, recovered_from_status: false, rollout: safe }, `${safe.rollout_no}\t${safe.status}\t${safe.verification_state}\tv${safe.version}`);
394
+ };
395
+ const configureRecovery = async (operation, rolloutNo, options, command) => {
396
+ requireYes(options.yes);
397
+ const version = expectedVersion(options.expectedVersion);
398
+ const key = safeKey(options.idempotencyKey);
399
+ const rolloutClient = client();
400
+ let result;
401
+ try {
402
+ result = operation === "reconcile"
403
+ ? await rolloutClient.reconcileConfigure(rolloutNo, { expectedVersion: version }, key)
404
+ : await rolloutClient.reapplyConfigure(rolloutNo, { expectedVersion: version }, key);
405
+ if (result.rolloutNo !== rolloutNo.trim()
406
+ || result.expectedVersion !== version
407
+ || result.idempotencyKey !== key) {
408
+ throw new PipelineError("Configure recovery returned evidence for a different rollout, version, or idempotency key.", "JENKINS_PLATFORM_BUILD_ROLLOUT_INVALID_RESPONSE", 200);
409
+ }
410
+ }
411
+ catch (error) {
412
+ if (!configurationRecoveryResultMayBeUnknown(error))
413
+ throw error;
414
+ try {
415
+ await rolloutClient.get(rolloutNo);
416
+ }
417
+ catch { /* diagnostic GET is deliberately best effort */ }
418
+ const next = operation === "reconcile"
419
+ ? `Run the same explicit reconcile command again; never replay configure or call reapply without an UNTOUCHED result.`
420
+ : `Run configure reconcile with the same rollout, expected version, and original idempotency key; never automatically replay reapply.`;
421
+ throw resultUnknown(error, `Platform-build configure ${operation} result is unknown. Read-only rollout GET cannot prove the action result. ${next}`);
422
+ }
423
+ const safe = publicPlatformBuildRolloutConfigureAction(result);
424
+ await output(command, {
425
+ ok: result.state === "SUCCEEDED",
426
+ action: safe,
427
+ next_action: result.reapplyAllowed
428
+ ? "Explicit configure reapply is allowed after reviewing this UNTOUCHED evidence."
429
+ : null
430
+ }, `${safe.rollout_no}\t${safe.state}\t${safe.disposition}\t${safe.result_version ?? "-"}`);
431
+ };
432
+ const configure = rollout.command("configure [rollout-no]")
433
+ .description("执行或显式恢复 typed Jenkins configure")
434
+ .enablePositionalOptions()
435
+ .option("--expected-version <version>", "原 configure 使用的乐观锁版本")
436
+ .option("--idempotency-key <key>", "原 configure 使用的稳定幂等键")
437
+ .option("--yes", "确认执行 typed Jenkins configure")
438
+ .action(configureApply);
439
+ examples(configure, [
440
+ "numa jenkins platform-build-rollout configure jgr_01 --expected-version 0 --idempotency-key code-index-v2-configure-1 --yes --json"
441
+ ], [
442
+ "请求体只有 expectedVersion;应用、Jenkins instance、shared library、writer credential reference 与 snapshot folder 均由服务端派生。",
443
+ "无 manual readiness 命令,也不接受或输出 Flux Git credential。",
444
+ "响应未知时只 GET 同一 rollout 并报告 UNKNOWN;必须显式运行 configure reconcile,绝不重放 configure。"
445
+ ]);
446
+ examples(configure.command("apply <rollout-no>")
447
+ .description("配置 Jenkins(与原 configure <rollout-no> 兼容形式语义相同)")
448
+ .action(async (rolloutNo, _options, command) => configureApply(rolloutNo, configure.opts(), command))
449
+ .addHelpText("after", "\nRequired parent options: --expected-version <version> --idempotency-key <key> --yes\n"), [
450
+ "numa jenkins platform-build-rollout configure apply jgr_01 --expected-version 0 --idempotency-key code-index-v2-configure-1 --yes --json"
451
+ ]);
452
+ examples(configure.command("reconcile <rollout-no>")
453
+ .description("只读核对原 configure 动作;绝不自动 reapply")
454
+ .action(async (rolloutNo, _options, command) => configureRecovery("reconcile", rolloutNo, configure.opts(), command))
455
+ .addHelpText("after", "\nRequired parent options: --expected-version <version> --idempotency-key <key> --yes\n"), [
456
+ "numa jenkins platform-build-rollout configure reconcile jgr_01 --expected-version 0 --idempotency-key code-index-v2-configure-1 --yes --json"
457
+ ], ["只有 UNKNOWN+UNTOUCHED 会返回 reapply_allowed=true;命令不会自动调用 reapply。"]);
458
+ examples(configure.command("reapply <rollout-no>")
459
+ .description("仅在服务端证明原 configure UNTOUCHED 后显式重新应用")
460
+ .action(async (rolloutNo, _options, command) => configureRecovery("reapply", rolloutNo, configure.opts(), command))
461
+ .addHelpText("after", "\nRequired parent options: --expected-version <version> --idempotency-key <key> --yes\n"), [
462
+ "numa jenkins platform-build-rollout configure reapply jgr_01 --expected-version 0 --idempotency-key code-index-v2-configure-1 --yes --json"
463
+ ], ["服务端会再次只读 Jenkins 并仅在 UNTOUCHED 前置条件仍成立时执行一次 CAS APPLY。"]);
464
+ }
465
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/platform-build-rollouts/commands.ts"],"names":[],"mappings":"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"}