@numa-tech/numa 1.13.5 → 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 (83) hide show
  1. package/README.md +132 -24
  2. package/dist/application-onboarding/commands.d.ts +1 -0
  3. package/dist/application-onboarding/commands.js +32 -10
  4. package/dist/application-onboarding/commands.js.map +1 -1
  5. package/dist/application-onboarding/schemas.d.ts +2 -0
  6. package/dist/application-onboarding/schemas.js +3 -2
  7. package/dist/application-onboarding/schemas.js.map +1 -1
  8. package/dist/application-onboarding/scm-credentials.d.ts +5 -2
  9. package/dist/application-onboarding/scm-credentials.js +64 -13
  10. package/dist/application-onboarding/scm-credentials.js.map +1 -1
  11. package/dist/cli.js +4 -2
  12. package/dist/cli.js.map +1 -1
  13. package/dist/command-catalog.js +239 -11
  14. package/dist/command-catalog.js.map +1 -1
  15. package/dist/integration-bootstrap/client.d.ts +23 -0
  16. package/dist/integration-bootstrap/client.js +124 -0
  17. package/dist/integration-bootstrap/client.js.map +1 -0
  18. package/dist/integration-bootstrap/commands.d.ts +20 -0
  19. package/dist/integration-bootstrap/commands.js +129 -0
  20. package/dist/integration-bootstrap/commands.js.map +1 -0
  21. package/dist/integration-bootstrap/schemas.d.ts +422 -0
  22. package/dist/integration-bootstrap/schemas.js +216 -0
  23. package/dist/integration-bootstrap/schemas.js.map +1 -0
  24. package/dist/jenkins/commands.d.ts +10 -0
  25. package/dist/jenkins/commands.js +15 -0
  26. package/dist/jenkins/commands.js.map +1 -0
  27. package/dist/jenkins-jobs/client.d.ts +12 -12
  28. package/dist/jenkins-jobs/schemas.d.ts +96 -8
  29. package/dist/jenkins-jobs/schemas.js +2 -2
  30. package/dist/jenkins-jobs/schemas.js.map +1 -1
  31. package/dist/pipeline/client.d.ts +5 -0
  32. package/dist/pipeline/commands.js +2 -0
  33. package/dist/pipeline/commands.js.map +1 -1
  34. package/dist/pipeline/schemas.d.ts +6 -0
  35. package/dist/pipeline/schemas.js +2 -0
  36. package/dist/pipeline/schemas.js.map +1 -1
  37. package/dist/platform-build-job-replans/client.d.ts +283 -0
  38. package/dist/platform-build-job-replans/client.js +148 -0
  39. package/dist/platform-build-job-replans/client.js.map +1 -0
  40. package/dist/platform-build-job-replans/commands.d.ts +6 -0
  41. package/dist/platform-build-job-replans/commands.js +371 -0
  42. package/dist/platform-build-job-replans/commands.js.map +1 -0
  43. package/dist/platform-build-job-replans/schemas.d.ts +145 -0
  44. package/dist/platform-build-job-replans/schemas.js +150 -0
  45. package/dist/platform-build-job-replans/schemas.js.map +1 -0
  46. package/dist/platform-build-rollouts/client.d.ts +346 -0
  47. package/dist/platform-build-rollouts/client.js +153 -0
  48. package/dist/platform-build-rollouts/client.js.map +1 -0
  49. package/dist/platform-build-rollouts/commands.d.ts +98 -0
  50. package/dist/platform-build-rollouts/commands.js +465 -0
  51. package/dist/platform-build-rollouts/commands.js.map +1 -0
  52. package/dist/platform-build-rollouts/schemas.d.ts +348 -0
  53. package/dist/platform-build-rollouts/schemas.js +257 -0
  54. package/dist/platform-build-rollouts/schemas.js.map +1 -0
  55. package/dist/platform-builds/client.d.ts +147 -0
  56. package/dist/platform-builds/client.js +115 -0
  57. package/dist/platform-builds/client.js.map +1 -0
  58. package/dist/platform-builds/commands.d.ts +7 -0
  59. package/dist/platform-builds/commands.js +226 -0
  60. package/dist/platform-builds/commands.js.map +1 -0
  61. package/dist/platform-builds/schemas.d.ts +127 -0
  62. package/dist/platform-builds/schemas.js +66 -0
  63. package/dist/platform-builds/schemas.js.map +1 -0
  64. package/dist/publications/client.d.ts +30 -0
  65. package/dist/publications/client.js +6 -1
  66. package/dist/publications/client.js.map +1 -1
  67. package/dist/publications/commands.d.ts +2 -0
  68. package/dist/publications/commands.js +84 -5
  69. package/dist/publications/commands.js.map +1 -1
  70. package/dist/repositories/errors.d.ts +2 -1
  71. package/dist/repositories/errors.js +3 -1
  72. package/dist/repositories/errors.js.map +1 -1
  73. package/dist/repositories/schemas.d.ts +4 -0
  74. package/dist/repositories/schemas.js +1 -0
  75. package/dist/repositories/schemas.js.map +1 -1
  76. package/package.json +4 -4
  77. package/skills/numa-create-application/SKILL.md +17 -11
  78. package/skills/numa-create-application/agents/openai.yaml +2 -2
  79. package/skills/numa-create-application/evals/evals.json +56 -10
  80. package/skills/numa-create-application/references/checklist.md +7 -4
  81. package/skills/numa-create-application/references/numa-cli.md +46 -13
  82. package/skills/numa-create-application/references/promote-workflows.md +49 -21
  83. package/skills/numa-create-application/scripts/inspect-project.mjs +1 -0
@@ -0,0 +1,147 @@
1
+ import type { AuthConfig } from "../config.js";
2
+ import { type KeycloakTokenProvider } from "../oauth.js";
3
+ import { type PlatformBuildState, type PlatformBuildTier } from "./schemas.js";
4
+ export declare const PLATFORM_BUILDS_API_ROOT = "/api/v1/jenkins/platform-builds";
5
+ export interface PlatformBuildClientDependencies {
6
+ fetch?: typeof fetch;
7
+ tokenProvider?: KeycloakTokenProvider;
8
+ }
9
+ export interface PlatformBuildApproval {
10
+ approveId?: string;
11
+ productionReason?: string;
12
+ }
13
+ export interface TriggerPlatformBuildInput extends PlatformBuildApproval {
14
+ applicationCode: string;
15
+ tier: PlatformBuildTier;
16
+ branch: string;
17
+ idempotencyKey: string;
18
+ }
19
+ export interface ListPlatformBuildsInput {
20
+ applicationCode?: string;
21
+ tier?: PlatformBuildTier;
22
+ branch?: string;
23
+ state?: PlatformBuildState;
24
+ cursor?: string;
25
+ limit?: number;
26
+ }
27
+ export declare class PlatformBuildClient {
28
+ private readonly config;
29
+ private readonly fetchImpl;
30
+ private readonly tokenProvider;
31
+ constructor(config: AuthConfig, dependencies?: PlatformBuildClientDependencies);
32
+ private request;
33
+ trigger(input: TriggerPlatformBuildInput): Promise<{
34
+ requestId: string;
35
+ applicationId: number;
36
+ applicationCode: string;
37
+ tier: "DEVELOP" | "PRODUCTION" | "STAGING";
38
+ branch: string;
39
+ state: "ABORTED" | "ACCEPTED" | "CANCELLED" | "FAILED" | "NOT_BUILT" | "QUEUED" | "RUNNING" | "STOP_REQUESTED" | "SUCCESS" | "UNKNOWN";
40
+ queueId: number | null;
41
+ buildNumber: number | null;
42
+ canonicalJobId: number;
43
+ canonicalJobFullName: string;
44
+ executionJobFullName: string;
45
+ sourceRevision: string;
46
+ executionConfigDigest: string;
47
+ executionSpecDigest: string;
48
+ acceptedAt: string;
49
+ startedAt: string | null;
50
+ completedAt: string | null;
51
+ result: string | null;
52
+ unknownResult: boolean;
53
+ }>;
54
+ resolve(clientRequestId: string): Promise<{
55
+ requestId: string;
56
+ applicationId: number;
57
+ applicationCode: string;
58
+ tier: "DEVELOP" | "PRODUCTION" | "STAGING";
59
+ branch: string;
60
+ state: "ABORTED" | "ACCEPTED" | "CANCELLED" | "FAILED" | "NOT_BUILT" | "QUEUED" | "RUNNING" | "STOP_REQUESTED" | "SUCCESS" | "UNKNOWN";
61
+ queueId: number | null;
62
+ buildNumber: number | null;
63
+ canonicalJobId: number;
64
+ canonicalJobFullName: string;
65
+ executionJobFullName: string;
66
+ sourceRevision: string;
67
+ executionConfigDigest: string;
68
+ executionSpecDigest: string;
69
+ acceptedAt: string;
70
+ startedAt: string | null;
71
+ completedAt: string | null;
72
+ result: string | null;
73
+ unknownResult: boolean;
74
+ }>;
75
+ list(input?: ListPlatformBuildsInput): Promise<{
76
+ items: {
77
+ requestId: string;
78
+ applicationId: number;
79
+ applicationCode: string;
80
+ tier: "DEVELOP" | "PRODUCTION" | "STAGING";
81
+ branch: string;
82
+ state: "ABORTED" | "ACCEPTED" | "CANCELLED" | "FAILED" | "NOT_BUILT" | "QUEUED" | "RUNNING" | "STOP_REQUESTED" | "SUCCESS" | "UNKNOWN";
83
+ queueId: number | null;
84
+ buildNumber: number | null;
85
+ canonicalJobId: number;
86
+ canonicalJobFullName: string;
87
+ executionJobFullName: string;
88
+ sourceRevision: string;
89
+ executionConfigDigest: string;
90
+ executionSpecDigest: string;
91
+ acceptedAt: string;
92
+ startedAt: string | null;
93
+ completedAt: string | null;
94
+ result: string | null;
95
+ unknownResult: boolean;
96
+ }[];
97
+ nextCursor: string | null;
98
+ }>;
99
+ get(requestId: string): Promise<{
100
+ requestId: string;
101
+ applicationId: number;
102
+ applicationCode: string;
103
+ tier: "DEVELOP" | "PRODUCTION" | "STAGING";
104
+ branch: string;
105
+ state: "ABORTED" | "ACCEPTED" | "CANCELLED" | "FAILED" | "NOT_BUILT" | "QUEUED" | "RUNNING" | "STOP_REQUESTED" | "SUCCESS" | "UNKNOWN";
106
+ queueId: number | null;
107
+ buildNumber: number | null;
108
+ canonicalJobId: number;
109
+ canonicalJobFullName: string;
110
+ executionJobFullName: string;
111
+ sourceRevision: string;
112
+ executionConfigDigest: string;
113
+ executionSpecDigest: string;
114
+ acceptedAt: string;
115
+ startedAt: string | null;
116
+ completedAt: string | null;
117
+ result: string | null;
118
+ unknownResult: boolean;
119
+ }>;
120
+ stop(requestId: string, idempotencyKey: string, approval?: PlatformBuildApproval): Promise<{
121
+ requestId: string;
122
+ applicationId: number;
123
+ applicationCode: string;
124
+ tier: "DEVELOP" | "PRODUCTION" | "STAGING";
125
+ branch: string;
126
+ state: "ABORTED" | "ACCEPTED" | "CANCELLED" | "FAILED" | "NOT_BUILT" | "QUEUED" | "RUNNING" | "STOP_REQUESTED" | "SUCCESS" | "UNKNOWN";
127
+ queueId: number | null;
128
+ buildNumber: number | null;
129
+ canonicalJobId: number;
130
+ canonicalJobFullName: string;
131
+ executionJobFullName: string;
132
+ sourceRevision: string;
133
+ executionConfigDigest: string;
134
+ executionSpecDigest: string;
135
+ acceptedAt: string;
136
+ startedAt: string | null;
137
+ completedAt: string | null;
138
+ result: string | null;
139
+ unknownResult: boolean;
140
+ }>;
141
+ log(requestId: string, start?: number, limit?: number): Promise<{
142
+ text: string;
143
+ nextOffset: number;
144
+ moreData: boolean;
145
+ requestId: string;
146
+ }>;
147
+ }
@@ -0,0 +1,115 @@
1
+ import { resolveBackendUrl } from "../backend.js";
2
+ import { ensureAccessToken, fetchWithKeycloakIdentity } from "../oauth.js";
3
+ import { PipelineError, redactPipelineText } from "../pipeline/errors.js";
4
+ import { PlatformBuildApiErrorSchema, PlatformBuildListSchema, PlatformBuildLogSchema, StopPlatformBuildRequestSchema, TriggerPlatformBuildRequestSchema, PlatformBuildViewSchema } from "./schemas.js";
5
+ export const PLATFORM_BUILDS_API_ROOT = "/api/v1/jenkins/platform-builds";
6
+ function stable(value, label, maximum = 200) {
7
+ const result = value.trim();
8
+ if (!result || result.length > maximum || /[\u0000-\u001f\u007f]/u.test(result)) {
9
+ throw new PipelineError(`${label} is invalid.`, "JENKINS_PLATFORM_BUILD_INPUT_INVALID");
10
+ }
11
+ return result;
12
+ }
13
+ function query(path, values) {
14
+ const params = new URLSearchParams();
15
+ for (const [key, value] of Object.entries(values)) {
16
+ if (value != null && value !== "")
17
+ params.set(key, String(value));
18
+ }
19
+ return params.size ? `${path}?${params.toString()}` : path;
20
+ }
21
+ async function body(response) {
22
+ const value = await response.text();
23
+ if (!value)
24
+ return {};
25
+ try {
26
+ return JSON.parse(value);
27
+ }
28
+ catch {
29
+ return value;
30
+ }
31
+ }
32
+ function failure(response, value) {
33
+ const parsed = PlatformBuildApiErrorSchema.safeParse(value);
34
+ const message = parsed.success
35
+ ? parsed.data.message ?? response.statusText ?? "Platform build API request failed."
36
+ : typeof value === "string" ? value : response.statusText || "Platform build API request failed.";
37
+ return new PipelineError(`Platform build API HTTP ${response.status}: ${redactPipelineText(message)}`, parsed.success ? parsed.data.code ?? "JENKINS_PLATFORM_BUILD_API_ERROR" : "JENKINS_PLATFORM_BUILD_API_ERROR", response.status, parsed.success ? parsed.data.requestId : response.headers.get("x-request-id") ?? undefined);
38
+ }
39
+ export class PlatformBuildClient {
40
+ config;
41
+ fetchImpl;
42
+ tokenProvider;
43
+ constructor(config, dependencies = {}) {
44
+ this.config = config;
45
+ this.fetchImpl = dependencies.fetch ?? fetch;
46
+ this.tokenProvider = dependencies.tokenProvider ?? ensureAccessToken;
47
+ }
48
+ async request(path, schema, init = {}, statuses) {
49
+ const method = String(init.method ?? "GET").toUpperCase();
50
+ const url = resolveBackendUrl(this.config, { method, path });
51
+ const headers = new Headers(init.headers);
52
+ headers.set("Accept", "application/json");
53
+ if (init.body != null)
54
+ headers.set("Content-Type", "application/json");
55
+ const response = await fetchWithKeycloakIdentity(this.config, url, () => ({ ...init, headers }), {
56
+ fetch: this.fetchImpl,
57
+ tokenProvider: this.tokenProvider
58
+ });
59
+ const value = await body(response);
60
+ if (!response.ok)
61
+ throw failure(response, value);
62
+ if (statuses && !statuses.includes(response.status)) {
63
+ throw new PipelineError(`Platform build API returned HTTP ${response.status}; expected ${statuses.join(" or ")}.`, "JENKINS_PLATFORM_BUILD_INVALID_RESPONSE", response.status, response.headers.get("x-request-id") ?? undefined);
64
+ }
65
+ const parsed = schema.safeParse(value);
66
+ if (!parsed.success) {
67
+ throw new PipelineError(`Platform build API returned an invalid response: ${parsed.error.message}`, "JENKINS_PLATFORM_BUILD_INVALID_RESPONSE", response.status, response.headers.get("x-request-id") ?? undefined);
68
+ }
69
+ return parsed.data;
70
+ }
71
+ trigger(input) {
72
+ const parsed = TriggerPlatformBuildRequestSchema.safeParse(input);
73
+ if (!parsed.success)
74
+ throw new PipelineError(`Platform build trigger input is invalid: ${parsed.error.message}`, "JENKINS_PLATFORM_BUILD_INPUT_INVALID");
75
+ const key = stable(parsed.data.idempotencyKey, "idempotency-key");
76
+ return this.request(PLATFORM_BUILDS_API_ROOT, PlatformBuildViewSchema, {
77
+ method: "POST",
78
+ headers: { "Idempotency-Key": key },
79
+ body: JSON.stringify({ ...parsed.data, idempotencyKey: key })
80
+ }, [200, 202]);
81
+ }
82
+ resolve(clientRequestId) {
83
+ return this.request(query(`${PLATFORM_BUILDS_API_ROOT}/resolve`, {
84
+ clientRequestId: stable(clientRequestId, "client-request-id")
85
+ }), PlatformBuildViewSchema);
86
+ }
87
+ list(input = {}) {
88
+ return this.request(query(PLATFORM_BUILDS_API_ROOT, {
89
+ applicationCode: input.applicationCode,
90
+ tier: input.tier,
91
+ branch: input.branch,
92
+ state: input.state,
93
+ cursor: input.cursor,
94
+ limit: input.limit
95
+ }), PlatformBuildListSchema);
96
+ }
97
+ get(requestId) {
98
+ return this.request(`${PLATFORM_BUILDS_API_ROOT}/${encodeURIComponent(stable(requestId, "request-id"))}`, PlatformBuildViewSchema);
99
+ }
100
+ stop(requestId, idempotencyKey, approval = {}) {
101
+ const key = stable(idempotencyKey, "idempotency-key");
102
+ const parsed = StopPlatformBuildRequestSchema.safeParse({ idempotencyKey: key, ...approval });
103
+ if (!parsed.success)
104
+ throw new PipelineError(`Platform build stop input is invalid: ${parsed.error.message}`, "JENKINS_PLATFORM_BUILD_INPUT_INVALID");
105
+ return this.request(`${PLATFORM_BUILDS_API_ROOT}/${encodeURIComponent(stable(requestId, "request-id"))}/stop`, PlatformBuildViewSchema, {
106
+ method: "POST",
107
+ headers: { "Idempotency-Key": key },
108
+ body: JSON.stringify(parsed.data)
109
+ }, [200, 202]);
110
+ }
111
+ log(requestId, start = 0, limit) {
112
+ return this.request(query(`${PLATFORM_BUILDS_API_ROOT}/${encodeURIComponent(stable(requestId, "request-id"))}/log`, { start, limit }), PlatformBuildLogSchema);
113
+ }
114
+ }
115
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/platform-builds/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Command } from "commander";
2
+ import { PlatformBuildClient } from "./client.js";
3
+ export interface PlatformBuildCommandDependencies {
4
+ clientFactory?: () => PlatformBuildClient;
5
+ sleep?: (milliseconds: number) => Promise<void>;
6
+ }
7
+ export declare function registerPlatformBuildCommands(pipeline: Command, dependencies?: PlatformBuildCommandDependencies): void;
@@ -0,0 +1,226 @@
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 { parsePipelineTier, parseProductionApproval } from "../pipeline/commands.js";
6
+ import { PlatformBuildClient } from "./client.js";
7
+ import { PlatformBuildStateSchema } from "./schemas.js";
8
+ const TERMINAL = new Set([
9
+ "SUCCESS", "FAILED", "ABORTED", "CANCELLED", "NOT_BUILT"
10
+ ]);
11
+ const RECOVERY_DELAYS = [0, 200, 500, 1000, 2000];
12
+ function safe(value, label, maximum = 200) {
13
+ const result = value.trim();
14
+ if (!result || result.length > maximum || /[\u0000-\u001f\u007f]/u.test(result)) {
15
+ throw new PipelineError(`${label} is invalid.`, "JENKINS_PLATFORM_BUILD_INPUT_INVALID");
16
+ }
17
+ return result;
18
+ }
19
+ function positive(value, label, fallback, maximum) {
20
+ if (value == null)
21
+ return fallback;
22
+ const parsed = Number(value);
23
+ if (!Number.isInteger(parsed) || parsed < 1 || parsed > maximum) {
24
+ throw new PipelineError(`${label} must be between 1 and ${maximum}.`, "JENKINS_PLATFORM_BUILD_INPUT_INVALID");
25
+ }
26
+ return parsed;
27
+ }
28
+ function state(value) {
29
+ if (value == null)
30
+ return undefined;
31
+ const parsed = PlatformBuildStateSchema.safeParse(value.trim().toUpperCase());
32
+ if (!parsed.success) {
33
+ throw new PipelineError("state is not supported.", "JENKINS_PLATFORM_BUILD_INPUT_INVALID");
34
+ }
35
+ return parsed.data;
36
+ }
37
+ function snake(key) {
38
+ return key.replace(/([a-z0-9])([A-Z])/gu, "$1_$2").toLowerCase();
39
+ }
40
+ function stableOutput(value) {
41
+ const redacted = sanitizePipelineOutput(value);
42
+ if (Array.isArray(redacted))
43
+ return redacted.map(stableOutput);
44
+ if (redacted && typeof redacted === "object") {
45
+ return Object.fromEntries(Object.entries(redacted).map(([key, item]) => [snake(key), stableOutput(item)]));
46
+ }
47
+ return redacted;
48
+ }
49
+ async function jsonEnabled(command) {
50
+ const configured = await loadAppConfig();
51
+ return Boolean(command.optsWithGlobals().json || configured.output === "json");
52
+ }
53
+ async function output(command, payload, text) {
54
+ process.stdout.write(await jsonEnabled(command)
55
+ ? `${JSON.stringify(stableOutput(payload), null, 2)}\n`
56
+ : `${String(sanitizePipelineOutput(text))}\n`);
57
+ }
58
+ function line(build) {
59
+ return `${build.requestId}\t${build.state}\t${build.applicationCode}\t${build.tier}\t${build.branch}`;
60
+ }
61
+ function maybeUnknown(error) {
62
+ return error instanceof TypeError
63
+ || (error instanceof PipelineError && (error.status == null || error.status >= 500
64
+ || error.code === "JENKINS_PLATFORM_BUILD_INVALID_RESPONSE"));
65
+ }
66
+ function unknown(error, message) {
67
+ return new PipelineError(message, "JENKINS_PLATFORM_BUILD_RESULT_UNKNOWN", error instanceof PipelineError ? error.status : undefined, error instanceof PipelineError ? error.requestId : undefined);
68
+ }
69
+ async function recoverTrigger(client, clientRequestId, sleep) {
70
+ for (const delay of RECOVERY_DELAYS) {
71
+ if (delay)
72
+ await sleep(delay);
73
+ try {
74
+ return await client.resolve(clientRequestId);
75
+ }
76
+ catch (error) {
77
+ if (!(error instanceof PipelineError)
78
+ || error.code !== "JENKINS_PLATFORM_BUILD_NOT_RESOLVED"
79
+ || error.status !== 404)
80
+ throw error;
81
+ }
82
+ }
83
+ throw new PipelineError("Platform build result remains unknown. Inspect resolve/status with the original idempotency key; do not replay the trigger.", "JENKINS_PLATFORM_BUILD_RESULT_UNKNOWN");
84
+ }
85
+ async function waitFor(client, initial, sleep) {
86
+ let current = initial;
87
+ while (!TERMINAL.has(current.state)) {
88
+ await sleep(2000);
89
+ current = await client.get(current.requestId);
90
+ }
91
+ return current;
92
+ }
93
+ function examples(command, values, notes = []) {
94
+ return command.addHelpText("after", `\n${notes.length ? `说明:\n${notes.map((v) => ` - ${v}`).join("\n")}\n` : ""}Examples:\n${values.map((v) => ` ${v}`).join("\n")}\n`);
95
+ }
96
+ export function registerPlatformBuildCommands(pipeline, dependencies = {}) {
97
+ const client = () => dependencies.clientFactory?.()
98
+ ?? new PlatformBuildClient(loadConfig("pipeline"));
99
+ const sleep = dependencies.sleep ?? ((milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)));
100
+ const root = pipeline.command("platform-build")
101
+ .description("操作 immutable snapshot + server-owned GitOps writer 的 v2 构建")
102
+ .addHelpText("after", `
103
+ 安全边界:
104
+ 这是新应用的独立 v2 表面;旧 pipeline build/builds/status/log/stop/retry 保持不变。
105
+ v2 不接受任意 Jenkins 参数,不把审批信息注入 Jenkins,不允许 Jenkins 直接写 Flux Git。
106
+ 写响应未知时只按原 request id/key 做只读恢复,绝不重放 POST。
107
+ `);
108
+ examples(root.command("trigger <application>")
109
+ .description("触发一次无任意参数的不可变源码快照构建")
110
+ .requiredOption("--tier <tier>", "develop|staging|production")
111
+ .requiredOption("--branch <name>", "服务端仓库中的逻辑分支")
112
+ .requiredOption("--idempotency-key <key>", "稳定 client request id")
113
+ .option("--approve-id <id>", "生产审批 ID,仅平台审计")
114
+ .option("--production-reason <text>", "无审批 ID 时至少 10 个字符的生产说明")
115
+ .option("--wait", "轮询同一 request id 至终态")
116
+ .option("--yes", "确认触发")
117
+ .action(async (application, options, command) => {
118
+ if (!options.yes)
119
+ throw new PipelineError("Platform build trigger requires --yes.", "JENKINS_CONFIRMATION_REQUIRED");
120
+ const tier = parsePipelineTier(options.tier);
121
+ const idempotencyKey = safe(options.idempotencyKey, "idempotency-key");
122
+ const platformClient = client();
123
+ let result;
124
+ try {
125
+ result = await platformClient.trigger({
126
+ applicationCode: safe(application, "application", 120),
127
+ tier,
128
+ branch: safe(options.branch, "branch", 320),
129
+ idempotencyKey,
130
+ ...parseProductionApproval(options, tier === "PRODUCTION")
131
+ });
132
+ }
133
+ catch (error) {
134
+ if (!maybeUnknown(error))
135
+ throw error;
136
+ result = await recoverTrigger(platformClient, idempotencyKey, sleep)
137
+ .catch(() => {
138
+ throw unknown(error, "Platform build trigger result is unknown. Resolve with the original idempotency key; do not replay the POST.");
139
+ });
140
+ }
141
+ if (options.wait)
142
+ result = await waitFor(platformClient, result, sleep);
143
+ await output(command, { ok: !options.wait || result.state === "SUCCESS", build: result }, line(result));
144
+ if (options.wait && result.state !== "SUCCESS")
145
+ process.exitCode = 1;
146
+ }), [
147
+ "numa pipeline platform-build trigger code-index --tier production --branch master --idempotency-key code-index-prd-first-v2 --production-reason '新运维系统上线前首次生产构建与部署' --yes --wait --json"
148
+ ], ["不接受任意构建参数;审批 ID 和生产说明都不会进入 Jenkins 环境。"]);
149
+ examples(root.command("resolve")
150
+ .description("按原 client request id 只读找回未知 trigger 结果")
151
+ .requiredOption("--client-request-id <id>", "原 trigger 的 idempotency key")
152
+ .action(async (options, command) => {
153
+ const result = await client().resolve(safe(options.clientRequestId, "client-request-id"));
154
+ await output(command, { ok: true, build: result }, line(result));
155
+ }), ["numa pipeline platform-build resolve --client-request-id code-index-prd-first-v2 --json"]);
156
+ examples(root.command("list")
157
+ .description("列出 v2 snapshot 构建")
158
+ .option("--app <code>", "Application code")
159
+ .option("--tier <tier>", "develop|staging|production")
160
+ .option("--branch <name>", "逻辑分支")
161
+ .option("--state <state>", "构建状态")
162
+ .option("--cursor <cursor>", "分页游标")
163
+ .option("--limit <number>", "1-100", "20")
164
+ .action(async (options, command) => {
165
+ const result = await client().list({
166
+ applicationCode: options.app && safe(options.app, "application", 120),
167
+ tier: options.tier ? parsePipelineTier(options.tier) : undefined,
168
+ branch: options.branch && safe(options.branch, "branch", 320),
169
+ state: state(options.state), cursor: options.cursor,
170
+ limit: positive(options.limit, "limit", 20, 100)
171
+ });
172
+ await output(command, { ok: true, builds: result }, result.items.map(line).join("\n") || "没有 v2 构建");
173
+ }), ["numa pipeline platform-build list --app code-index --tier production --json"]);
174
+ examples(root.command("status <request-id>")
175
+ .description("读取或持续观察一个 v2 snapshot 构建")
176
+ .option("--watch", "轮询至终态")
177
+ .action(async (requestId, options, command) => {
178
+ const platformClient = client();
179
+ let result = await platformClient.get(safe(requestId, "request-id"));
180
+ if (options.watch)
181
+ result = await waitFor(platformClient, result, sleep);
182
+ await output(command, { ok: true, build: result }, line(result));
183
+ }), ["numa pipeline platform-build status jbr_01 --watch --json"]);
184
+ examples(root.command("stop <request-id>")
185
+ .description("请求停止 v2 snapshot 构建;未知响应只读同一 request")
186
+ .requiredOption("--idempotency-key <key>", "稳定 stop request id")
187
+ .option("--approve-id <id>", "生产审批 ID,仅平台审计")
188
+ .option("--production-reason <text>", "生产操作说明")
189
+ .option("--yes", "确认停止")
190
+ .action(async (requestId, options, command) => {
191
+ if (!options.yes)
192
+ throw new PipelineError("Platform build stop requires --yes.", "JENKINS_CONFIRMATION_REQUIRED");
193
+ const platformClient = client();
194
+ const stableRequest = safe(requestId, "request-id");
195
+ const baseline = await platformClient.get(stableRequest);
196
+ let result;
197
+ try {
198
+ result = await platformClient.stop(stableRequest, safe(options.idempotencyKey, "idempotency-key"), parseProductionApproval(options, baseline.tier === "PRODUCTION"));
199
+ }
200
+ catch (error) {
201
+ if (!maybeUnknown(error))
202
+ throw error;
203
+ result = await platformClient.get(stableRequest).catch(() => {
204
+ throw unknown(error, "Platform build stop result is unknown. Inspect the same request id; do not replay the POST.");
205
+ });
206
+ if (!(result.state === "STOP_REQUESTED" || TERMINAL.has(result.state))) {
207
+ throw unknown(error, "Platform build stop result is unknown and status does not prove a stop claim; do not replay the POST.");
208
+ }
209
+ }
210
+ await output(command, { ok: true, build: result }, line(result));
211
+ }), [
212
+ "numa pipeline platform-build stop jbr_01 --idempotency-key code-index-stop-1 --production-reason '停止异常的首次生产构建' --yes --json"
213
+ ]);
214
+ examples(root.command("log <request-id>")
215
+ .description("读取 v2 snapshot 构建日志")
216
+ .option("--start <number>", "起始日志游标", "0")
217
+ .option("--limit <number>", "单次读取上限")
218
+ .action(async (requestId, options, command) => {
219
+ const start = Number(options.start ?? "0");
220
+ if (!Number.isInteger(start) || start < 0)
221
+ throw new PipelineError("start must be non-negative.", "JENKINS_PLATFORM_BUILD_INPUT_INVALID");
222
+ const result = await client().log(safe(requestId, "request-id"), start, options.limit == null ? undefined : positive(options.limit, "limit", 1, 10_000_000));
223
+ await output(command, { ok: true, log: result }, result.text);
224
+ }), ["numa pipeline platform-build log jbr_01 --start 0 --json"]);
225
+ }
226
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/platform-builds/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ import { z } from "zod";
2
+ export declare const PlatformBuildTierSchema: z.ZodEnum<{
3
+ DEVELOP: "DEVELOP";
4
+ PRODUCTION: "PRODUCTION";
5
+ STAGING: "STAGING";
6
+ }>;
7
+ export declare const PlatformBuildStateSchema: z.ZodEnum<{
8
+ ABORTED: "ABORTED";
9
+ ACCEPTED: "ACCEPTED";
10
+ CANCELLED: "CANCELLED";
11
+ FAILED: "FAILED";
12
+ NOT_BUILT: "NOT_BUILT";
13
+ QUEUED: "QUEUED";
14
+ RUNNING: "RUNNING";
15
+ STOP_REQUESTED: "STOP_REQUESTED";
16
+ SUCCESS: "SUCCESS";
17
+ UNKNOWN: "UNKNOWN";
18
+ }>;
19
+ export declare const TriggerPlatformBuildRequestSchema: z.ZodObject<{
20
+ applicationCode: z.ZodString;
21
+ tier: z.ZodEnum<{
22
+ DEVELOP: "DEVELOP";
23
+ PRODUCTION: "PRODUCTION";
24
+ STAGING: "STAGING";
25
+ }>;
26
+ branch: z.ZodString;
27
+ idempotencyKey: z.ZodString;
28
+ approveId: z.ZodOptional<z.ZodString>;
29
+ productionReason: z.ZodOptional<z.ZodString>;
30
+ }, z.core.$strict>;
31
+ export declare const StopPlatformBuildRequestSchema: z.ZodObject<{
32
+ idempotencyKey: z.ZodString;
33
+ approveId: z.ZodOptional<z.ZodString>;
34
+ productionReason: z.ZodOptional<z.ZodString>;
35
+ }, z.core.$strict>;
36
+ export declare const PlatformBuildViewSchema: z.ZodObject<{
37
+ requestId: z.ZodString;
38
+ applicationId: z.ZodNumber;
39
+ applicationCode: z.ZodString;
40
+ tier: z.ZodEnum<{
41
+ DEVELOP: "DEVELOP";
42
+ PRODUCTION: "PRODUCTION";
43
+ STAGING: "STAGING";
44
+ }>;
45
+ branch: z.ZodString;
46
+ state: z.ZodEnum<{
47
+ ABORTED: "ABORTED";
48
+ ACCEPTED: "ACCEPTED";
49
+ CANCELLED: "CANCELLED";
50
+ FAILED: "FAILED";
51
+ NOT_BUILT: "NOT_BUILT";
52
+ QUEUED: "QUEUED";
53
+ RUNNING: "RUNNING";
54
+ STOP_REQUESTED: "STOP_REQUESTED";
55
+ SUCCESS: "SUCCESS";
56
+ UNKNOWN: "UNKNOWN";
57
+ }>;
58
+ queueId: z.ZodNullable<z.ZodNumber>;
59
+ buildNumber: z.ZodNullable<z.ZodNumber>;
60
+ canonicalJobId: z.ZodNumber;
61
+ canonicalJobFullName: z.ZodString;
62
+ executionJobFullName: z.ZodString;
63
+ sourceRevision: z.ZodString;
64
+ executionConfigDigest: z.ZodString;
65
+ executionSpecDigest: z.ZodString;
66
+ acceptedAt: z.ZodString;
67
+ startedAt: z.ZodNullable<z.ZodString>;
68
+ completedAt: z.ZodNullable<z.ZodString>;
69
+ result: z.ZodNullable<z.ZodString>;
70
+ unknownResult: z.ZodBoolean;
71
+ }, z.core.$strict>;
72
+ export declare const PlatformBuildListSchema: z.ZodObject<{
73
+ items: z.ZodArray<z.ZodObject<{
74
+ requestId: z.ZodString;
75
+ applicationId: z.ZodNumber;
76
+ applicationCode: z.ZodString;
77
+ tier: z.ZodEnum<{
78
+ DEVELOP: "DEVELOP";
79
+ PRODUCTION: "PRODUCTION";
80
+ STAGING: "STAGING";
81
+ }>;
82
+ branch: z.ZodString;
83
+ state: z.ZodEnum<{
84
+ ABORTED: "ABORTED";
85
+ ACCEPTED: "ACCEPTED";
86
+ CANCELLED: "CANCELLED";
87
+ FAILED: "FAILED";
88
+ NOT_BUILT: "NOT_BUILT";
89
+ QUEUED: "QUEUED";
90
+ RUNNING: "RUNNING";
91
+ STOP_REQUESTED: "STOP_REQUESTED";
92
+ SUCCESS: "SUCCESS";
93
+ UNKNOWN: "UNKNOWN";
94
+ }>;
95
+ queueId: z.ZodNullable<z.ZodNumber>;
96
+ buildNumber: z.ZodNullable<z.ZodNumber>;
97
+ canonicalJobId: z.ZodNumber;
98
+ canonicalJobFullName: z.ZodString;
99
+ executionJobFullName: z.ZodString;
100
+ sourceRevision: z.ZodString;
101
+ executionConfigDigest: z.ZodString;
102
+ executionSpecDigest: z.ZodString;
103
+ acceptedAt: z.ZodString;
104
+ startedAt: z.ZodNullable<z.ZodString>;
105
+ completedAt: z.ZodNullable<z.ZodString>;
106
+ result: z.ZodNullable<z.ZodString>;
107
+ unknownResult: z.ZodBoolean;
108
+ }, z.core.$strict>>;
109
+ nextCursor: z.ZodNullable<z.ZodString>;
110
+ }, z.core.$strict>;
111
+ export declare const PlatformBuildLogSchema: z.ZodObject<{
112
+ text: z.ZodString;
113
+ nextOffset: z.ZodNumber;
114
+ moreData: z.ZodBoolean;
115
+ requestId: z.ZodString;
116
+ }, z.core.$strict>;
117
+ export declare const PlatformBuildApiErrorSchema: z.ZodObject<{
118
+ code: z.ZodOptional<z.ZodString>;
119
+ message: z.ZodOptional<z.ZodString>;
120
+ requestId: z.ZodOptional<z.ZodString>;
121
+ retryable: z.ZodOptional<z.ZodBoolean>;
122
+ }, z.core.$loose>;
123
+ export type PlatformBuildTier = z.infer<typeof PlatformBuildTierSchema>;
124
+ export type PlatformBuildState = z.infer<typeof PlatformBuildStateSchema>;
125
+ export type PlatformBuildView = z.infer<typeof PlatformBuildViewSchema>;
126
+ export type PlatformBuildList = z.infer<typeof PlatformBuildListSchema>;
127
+ export type PlatformBuildLog = z.infer<typeof PlatformBuildLogSchema>;