@pipeline-builder/pipeline-manager 4.1.14 → 4.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/config.yml +16 -37
  2. package/dist/boilerplate.js +10 -2
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +97 -79
  5. package/dist/commands/audit-stacks.js +3 -3
  6. package/dist/commands/create-pat.d.ts +2 -3
  7. package/dist/commands/create-pat.d.ts.map +1 -1
  8. package/dist/commands/create-pat.js +3 -4
  9. package/dist/commands/create-pipeline.d.ts.map +1 -1
  10. package/dist/commands/create-pipeline.js +198 -190
  11. package/dist/commands/list-pipelines.js +2 -2
  12. package/dist/commands/list-plugins.js +2 -2
  13. package/dist/commands/login.d.ts +2 -2
  14. package/dist/commands/login.js +3 -3
  15. package/dist/commands/new-plugin.d.ts +48 -5
  16. package/dist/commands/new-plugin.d.ts.map +1 -1
  17. package/dist/commands/new-plugin.js +261 -95
  18. package/dist/commands/plugin-lifecycle.d.ts +29 -0
  19. package/dist/commands/plugin-lifecycle.d.ts.map +1 -0
  20. package/dist/commands/plugin-lifecycle.js +147 -0
  21. package/dist/commands/provision.d.ts +42 -2
  22. package/dist/commands/provision.d.ts.map +1 -1
  23. package/dist/commands/provision.js +184 -147
  24. package/dist/commands/publish-plugin.d.ts +62 -0
  25. package/dist/commands/publish-plugin.d.ts.map +1 -0
  26. package/dist/commands/publish-plugin.js +224 -0
  27. package/dist/commands/redrive-events.d.ts +1 -1
  28. package/dist/commands/redrive-events.js +2 -2
  29. package/dist/commands/store-token.d.ts +46 -1
  30. package/dist/commands/store-token.d.ts.map +1 -1
  31. package/dist/commands/store-token.js +127 -102
  32. package/dist/commands/test-plugin.d.ts +72 -0
  33. package/dist/commands/test-plugin.d.ts.map +1 -0
  34. package/dist/commands/test-plugin.js +285 -0
  35. package/dist/commands/upload-plugin.d.ts +6 -7
  36. package/dist/commands/upload-plugin.d.ts.map +1 -1
  37. package/dist/commands/upload-plugin.js +127 -189
  38. package/dist/commands/validate-plugin.d.ts +37 -4
  39. package/dist/commands/validate-plugin.d.ts.map +1 -1
  40. package/dist/commands/validate-plugin.js +129 -144
  41. package/dist/commands/validate-templates.d.ts.map +1 -1
  42. package/dist/commands/validate-templates.js +8 -9
  43. package/dist/config/plugin-catalog-assets.d.ts +13 -0
  44. package/dist/config/plugin-catalog-assets.d.ts.map +1 -0
  45. package/dist/config/plugin-catalog-assets.js +21 -0
  46. package/dist/config.yml +16 -37
  47. package/dist/lambda/token-renew-handler.d.ts.map +1 -1
  48. package/dist/lambda/token-renew-handler.js +109 -154
  49. package/dist/types/config.d.ts +2 -6
  50. package/dist/types/config.d.ts.map +1 -1
  51. package/dist/types/config.js +1 -1
  52. package/dist/types/plugin.d.ts +21 -0
  53. package/dist/types/plugin.d.ts.map +1 -1
  54. package/dist/types/plugin.js +1 -1
  55. package/dist/utils/aws-env.d.ts +1 -2
  56. package/dist/utils/aws-env.d.ts.map +1 -1
  57. package/dist/utils/aws-env.js +2 -3
  58. package/dist/utils/catalog-prompt.d.ts +26 -0
  59. package/dist/utils/catalog-prompt.d.ts.map +1 -0
  60. package/dist/utils/catalog-prompt.js +113 -0
  61. package/dist/utils/command-utils.d.ts.map +1 -1
  62. package/dist/utils/command-utils.js +14 -3
  63. package/dist/utils/config-loader.d.ts.map +1 -1
  64. package/dist/utils/config-loader.js +4 -6
  65. package/dist/utils/credential-store.d.ts +16 -0
  66. package/dist/utils/credential-store.d.ts.map +1 -1
  67. package/dist/utils/credential-store.js +57 -2
  68. package/dist/utils/deploy-runner.d.ts.map +1 -1
  69. package/dist/utils/deploy-runner.js +7 -2
  70. package/dist/utils/pipeline-config.d.ts +1 -2
  71. package/dist/utils/pipeline-config.d.ts.map +1 -1
  72. package/dist/utils/pipeline-config.js +1 -1
  73. package/dist/utils/plugin-docker.d.ts +44 -0
  74. package/dist/utils/plugin-docker.d.ts.map +1 -0
  75. package/dist/utils/plugin-docker.js +71 -0
  76. package/dist/utils/plugin-package.d.ts +40 -0
  77. package/dist/utils/plugin-package.d.ts.map +1 -0
  78. package/dist/utils/plugin-package.js +159 -0
  79. package/dist/utils/plugin-resolver.d.ts.map +1 -1
  80. package/dist/utils/plugin-resolver.js +43 -29
  81. package/dist/utils/plugin-scan.d.ts +22 -0
  82. package/dist/utils/plugin-scan.d.ts.map +1 -0
  83. package/dist/utils/plugin-scan.js +52 -0
  84. package/dist/utils/plugin-zip.d.ts +15 -0
  85. package/dist/utils/plugin-zip.d.ts.map +1 -0
  86. package/dist/utils/plugin-zip.js +96 -0
  87. package/dist/utils/registry.d.ts +15 -0
  88. package/dist/utils/registry.d.ts.map +1 -1
  89. package/dist/utils/registry.js +17 -2
  90. package/dist/utils/service-account.d.ts.map +1 -1
  91. package/dist/utils/service-account.js +9 -10
  92. package/package.json +45 -8
package/dist/config.yml CHANGED
@@ -22,43 +22,22 @@ api:
22
22
  rejectUnauthorized: true
23
23
 
24
24
  # API Endpoints
25
- #
26
- # Pipeline Endpoints:
27
- # pipelineUrl - Single pipeline operations (GET by ID, POST)
28
- # Used by: get-pipeline, create-pipeline
29
- # Format: /api/pipeline/{id} or /api/pipeline
30
- #
31
- # pipelineListUrl - List/query multiple pipelines with filters
32
- # Used by: list-pipelines
33
- # Format: /api/pipelines?filter1=value1&filter2=value2
34
- # Supports filters: id, accessModifier, isDefault, isActive,
35
- # project, projectPattern, organizationPattern,
36
- # limit, offset, sort
37
- #
38
- # Plugin Endpoints:
39
- # pluginUrl - Single plugin operations (GET by ID)
40
- # Used by: get-plugin
41
- # Format: /api/plugin/{id}
42
- #
43
- # pluginListUrl - List/query multiple plugins with filters
44
- # Used by: list-plugins
45
- # Format: /api/plugins?filter1=value1&filter2=value2
46
- # Supports filters: id, accessModifier, isDefault, isActive,
47
- # name, namePattern, version, versionRange,
48
- # imageTag, limit, offset, sort
49
- #
50
- # pluginUploadUrl - Plugin upload endpoint
51
- # Used by: upload-plugin
52
- # Format: /api/plugin/upload
53
- #
54
- # Note: Singular vs Plural URLs
55
- # - Singular (/api/plugin, /api/pipeline) - Single resource operations
56
- # - Plural (/api/plugins, /api/pipelines) - List/query operations
57
- pipelineUrl: /api/pipeline
58
- pipelineListUrl: /api/pipelines
59
- pluginUrl: /api/plugin
60
- pluginListUrl: /api/plugins
61
- pluginUploadUrl: /api/plugin/upload
25
+ #
26
+ # pipelineUrl - The pipelines API. Lists and queries at the root
27
+ # (/api/pipelines?project=...), one pipeline at
28
+ # /api/pipelines/{id}, create by POST to the root.
29
+ #
30
+ # pipelineTemplateUrl - The golden-path template catalog.
31
+ #
32
+ # pluginUrl - The plugins API. Lists and queries at the root
33
+ # (/api/plugins?name=...), one plugin at /api/plugins/{id},
34
+ # lifecycle actions at /api/plugins/{id}/deprecate|yank.
35
+ #
36
+ # pluginUploadUrl - Plugin zip upload (multipart POST, long timeout).
37
+ pipelineUrl: /api/pipelines
38
+ pipelineTemplateUrl: /api/pipeline-templates
39
+ pluginUrl: /api/plugins
40
+ pluginUploadUrl: /api/plugins/upload
62
41
 
63
42
  # ============================================================================
64
43
  # AUTHENTICATION
@@ -1 +1 @@
1
- {"version":3,"file":"token-renew-handler.d.ts","sourceRoot":"","sources":["../../src/lambda/token-renew-handler.ts"],"names":[],"mappings":"AAkHA,eAAO,MAAM,OAAO,QAAa,OAAO,CAAC,IAAI,CA+E5C,CAAC"}
1
+ {"version":3,"file":"token-renew-handler.d.ts","sourceRoot":"","sources":["../../src/lambda/token-renew-handler.ts"],"names":[],"mappings":"AA8GA,eAAO,MAAM,OAAO,QAAa,OAAO,CAAC,IAAI,CAwE5C,CAAC"}
@@ -1,164 +1,119 @@
1
- // Copyright 2026 Pipeline Builder Contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
- /**
4
- * Scheduled KEY ROTATOR for the service-account credential in Secrets Manager
5
- * (#N2). Deployed + scheduled (once a day) by `pipeline-manager infra store-token
6
- * --schedule`.
7
- *
8
- * It used to re-mint a person's machine-session JWT by npm-installing the CLI at
9
- * runtime and shelling out to `store-token`. There is nothing left to re-mint:
10
- * the stored credential is an opaque `pb_sa_…` key, and platform rotates it
11
- * through two small pre-auth endpoints where the KEY ITSELF is the authorization
12
- * (an unattended machine has no password and cannot step up). So this handler is
13
- * three HTTP calls and a secret write, with no npm install, no CLI, no `/tmp`.
14
- *
15
- * THE ORDER IS THE WHOLE DESIGN. At no point may the secret name a credential
16
- * that does not work:
17
- *
18
- * 1. ROTATE — mint a sibling key on the same account. The current key stays
19
- * LIVE. Fail here and the secret is untouched: the old key still works.
20
- * 2. STORE — write the new key to the secret. Fail here and the secret still
21
- * holds the old key, which is still live; the new key is an orphan that
22
- * expires on its own (and the next run's rotate prunes it at the cap).
23
- * 3. REVOKE — retire the old key, authenticated with the NEW one. Fail here
24
- * and BOTH keys work; the credential is healthy and the stale key expires
25
- * on its own. Logged at ERROR so it is visible, but it does not fail the
26
- * invocation: a retry would rotate again and churn keys for no gain.
27
- *
28
- * Revoke-then-create would invert every one of those: a failure after the revoke
29
- * leaves the deployment with no working credential at all.
30
- *
31
- * Env: PLATFORM_SECRET_NAME, RENEW_DAYS (default 30),
32
- * PLATFORM_VERIFY_SSL ("false" to disable TLS verification — refused in
33
- * production).
34
- */
35
- import { SecretsManagerClient, GetSecretValueCommand, PutSecretValueCommand } from '@aws-sdk/client-secrets-manager';
36
- import { errorMessage } from '@pipeline-builder/api-core';
37
- /** Per-request timeout for the platform calls. */
38
- const HTTP_TIMEOUT_MS = 10_000;
39
- /** Access-key prefixes platform issues. A stored JWT is not one of them. */
40
- const ACCESS_KEY_PREFIXES = ['pb_sa_', 'pb_pat_'];
1
+ // src/lambda/token-renew-handler.ts
2
+ import { SecretsManagerClient as SecretsManagerClient2, PutSecretValueCommand } from "@aws-sdk/client-secrets-manager";
3
+
4
+ // ../pipeline-core/lib/handlers/platform-credential.js
5
+ import { GetSecretValueCommand, SecretsManagerClient } from "@aws-sdk/client-secrets-manager";
6
+ var ACCESS_KEY_PREFIXES = ["pb_sa_", "pb_pat_"];
7
+ function assertAccessKey(value, source) {
8
+ if (ACCESS_KEY_PREFIXES.some((p) => value.startsWith(p)))
9
+ return;
10
+ const looksLikeJwt = value.split(".").length === 3;
11
+ throw new Error(`${source} does not hold an opaque access key (expected a "pb_sa_\u2026" value)` + (looksLikeJwt ? ' \u2014 it holds a JWT, not a service-account key. Re-run "pipeline-manager infra store-token" to issue one.' : "."));
12
+ }
13
+ async function readCredentialSecret(secretName, client = new SecretsManagerClient({})) {
14
+ const response = await client.send(new GetSecretValueCommand({ SecretId: secretName }));
15
+ if (!response.SecretString)
16
+ throw new Error(`Secret "${secretName}" is empty`);
17
+ return JSON.parse(response.SecretString);
18
+ }
19
+
20
+ // src/lambda/token-renew-handler.ts
21
+ var HTTP_TIMEOUT_MS = 1e4;
41
22
  function required(name) {
42
- const v = process.env[name];
43
- if (!v)
44
- throw new Error(`${name} environment variable is required`);
45
- return v;
23
+ const v = process.env[name];
24
+ if (!v) throw new Error(`${name} environment variable is required`);
25
+ return v;
46
26
  }
47
27
  function log(level, msg, data) {
48
- const line = JSON.stringify({ level, msg, ...data });
49
- // eslint-disable-next-line no-console
50
- if (level === 'ERROR')
51
- console.error(line);
52
- else
53
- console.log(line);
28
+ const line = JSON.stringify({ level, msg, ...data });
29
+ if (level === "ERROR") console.error(line);
30
+ else console.log(line);
54
31
  }
55
- /** POST JSON to the platform, returning the parsed body plus the status. */
56
32
  async function post(baseUrl, route, body) {
57
- const controller = new AbortController();
58
- const timer = setTimeout(() => controller.abort(), HTTP_TIMEOUT_MS);
59
- try {
60
- const res = await fetch(`${baseUrl}${route}`, {
61
- method: 'POST',
62
- headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
63
- body: JSON.stringify(body),
64
- signal: controller.signal,
65
- });
66
- const parsed = await res.json().catch(() => ({}));
67
- return { status: res.status, body: parsed };
68
- }
69
- finally {
70
- clearTimeout(timer);
71
- }
33
+ const controller = new AbortController();
34
+ const timer = setTimeout(() => controller.abort(), HTTP_TIMEOUT_MS);
35
+ try {
36
+ const res = await fetch(`${baseUrl}${route}`, {
37
+ method: "POST",
38
+ headers: { "Content-Type": "application/json", "Accept": "application/json" },
39
+ body: JSON.stringify(body),
40
+ signal: controller.signal
41
+ });
42
+ const parsed = await res.json().catch(() => ({}));
43
+ return { status: res.status, body: parsed };
44
+ } finally {
45
+ clearTimeout(timer);
46
+ }
72
47
  }
73
- /**
74
- * SECURITY: these calls carry a live credential. Refuse to disable TLS
75
- * verification in production so a MITM can't harvest it. Production is this
76
- * Lambda's normal mode (the rotation stack sets NODE_ENV=production), so
77
- * PLATFORM_VERIFY_SSL=false is honored ONLY outside production. This inlines the
78
- * same `NODE_ENV==='production'` policy as utils/tls.ts#assertSslDisableAllowed
79
- * (the handler ships as a single self-contained index.mjs and can't import it).
80
- */
81
48
  function applyTlsPolicy() {
82
- if (process.env.PLATFORM_VERIFY_SSL !== 'false')
83
- return;
84
- if (process.env.NODE_ENV === 'production') {
85
- log('WARN', 'Refusing PLATFORM_VERIFY_SSL=false in production (NODE_ENV=production) — TLS verification stays enabled');
86
- return;
87
- }
88
- process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
49
+ if (process.env.PLATFORM_VERIFY_SSL !== "false") return;
50
+ if (process.env.NODE_ENV === "production") {
51
+ log("WARN", "Refusing PLATFORM_VERIFY_SSL=false in production (NODE_ENV=production) \u2014 TLS verification stays enabled");
52
+ return;
53
+ }
54
+ process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
89
55
  }
90
- export const handler = async () => {
91
- const secretName = required('PLATFORM_SECRET_NAME');
92
- const days = Number(process.env.RENEW_DAYS || '30');
93
- if (!Number.isFinite(days) || days < 1 || days > 365) {
94
- throw new Error(`RENEW_DAYS must be between 1 and 365 (got "${process.env.RENEW_DAYS}")`);
95
- }
96
- const region = process.env.AWS_REGION || 'us-east-1';
97
- applyTlsPolicy();
98
- const sm = new SecretsManagerClient({ region });
99
- const current = await sm.send(new GetSecretValueCommand({ SecretId: secretName }));
100
- if (!current.SecretString)
101
- throw new Error(`Secret "${secretName}" is empty`);
102
- const stored = JSON.parse(current.SecretString);
103
- const oldKey = stored.password;
104
- if (!oldKey)
105
- throw new Error(`Secret "${secretName}" missing password (service-account key)`);
106
- if (!ACCESS_KEY_PREFIXES.some((p) => oldKey.startsWith(p))) {
107
- throw new Error(`Secret "${secretName}" does not hold an opaque service-account key. `
108
- + 'Re-run "pipeline-manager infra store-token" to reissue it as a key (see docs/runbooks/access-key-cutover.md).');
109
- }
110
- // The platform this credential belongs to is recorded IN the secret by
111
- // `store-token` — the single source of truth.
112
- if (!stored.platformUrl)
113
- throw new Error(`Secret "${secretName}" missing platformUrl`);
114
- const platformUrl = stored.platformUrl.replace(/\/+$/, '');
115
- // ── 1. ROTATE — mint the replacement. The old key stays live. ──────────────
116
- const rotate = await post(platformUrl, '/api/auth/key/rotate', {
117
- key: oldKey,
118
- name: `${stored.serviceAccountName || 'rotated'}-${new Date().toISOString().slice(0, 10)}`,
119
- expiresIn: days * 24 * 60 * 60,
56
+ var handler = async () => {
57
+ const secretName = required("PLATFORM_SECRET_NAME");
58
+ const days = Number(process.env.RENEW_DAYS || "30");
59
+ if (!Number.isFinite(days) || days < 1 || days > 365) {
60
+ throw new Error(`RENEW_DAYS must be between 1 and 365 (got "${process.env.RENEW_DAYS}")`);
61
+ }
62
+ const region = process.env.AWS_REGION || "us-east-1";
63
+ applyTlsPolicy();
64
+ const sm = new SecretsManagerClient2({ region });
65
+ const stored = await readCredentialSecret(secretName, sm);
66
+ const oldKey = stored.password;
67
+ if (!oldKey) throw new Error(`Secret "${secretName}" missing password (service-account key)`);
68
+ assertAccessKey(oldKey, `secret "${secretName}"`);
69
+ if (!stored.platformUrl) throw new Error(`Secret "${secretName}" missing platformUrl`);
70
+ const platformUrl = stored.platformUrl.replace(/\/+$/, "");
71
+ const rotate = await post(platformUrl, "/api/auth/key/rotate", {
72
+ key: oldKey,
73
+ name: `${stored.serviceAccountName || "rotated"}-${(/* @__PURE__ */ new Date()).toISOString().slice(0, 10)}`,
74
+ expiresIn: days * 24 * 60 * 60
75
+ });
76
+ if (rotate.status < 200 || rotate.status >= 300) {
77
+ throw new Error(
78
+ `Key rotation refused (${rotate.status}): ${rotate.body.message || "unknown reason"}. The stored key is unchanged and still live.`
79
+ );
80
+ }
81
+ const newKey = rotate.body.data?.key;
82
+ const newKeyId = rotate.body.data?.keyId;
83
+ if (!newKey || !newKeyId) throw new Error("Key rotation returned no replacement key \u2014 the stored key is unchanged");
84
+ const pruned = rotate.body.data?.prunedKeyIds ?? [];
85
+ if (pruned.length > 0) {
86
+ log("WARN", "Platform retired stale sibling keys to stay under the active-key cap", { secretName, prunedKeyIds: pruned });
87
+ }
88
+ log("INFO", "Minted the replacement key", { secretName, keyId: newKeyId });
89
+ const next = {
90
+ ...stored,
91
+ password: newKey,
92
+ keyId: newKeyId,
93
+ platformUrl,
94
+ expiresIn: days * 24 * 60 * 60,
95
+ ...rotate.body.data?.expiresAt ? { expiresAt: rotate.body.data.expiresAt } : {},
96
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
97
+ };
98
+ await sm.send(new PutSecretValueCommand({ SecretId: secretName, SecretString: JSON.stringify(next) }));
99
+ log("INFO", "Stored the rotated key", { secretName, keyId: newKeyId });
100
+ const oldKeyId = stored.keyId;
101
+ if (!oldKeyId) {
102
+ log("WARN", "Secret recorded no previous keyId \u2014 nothing to revoke (it expires on its own)", { secretName });
103
+ return;
104
+ }
105
+ const revoke = await post(platformUrl, "/api/auth/key/revoke", { key: newKey, keyId: oldKeyId }).catch((err) => ({ status: 0, body: { message: err instanceof Error ? err.message : String(err) } }));
106
+ if (revoke.status < 200 || revoke.status >= 300) {
107
+ log("ERROR", "Rotated and stored the new key, but could NOT revoke its predecessor \u2014 it stays valid until it expires", {
108
+ secretName,
109
+ staleKeyId: oldKeyId,
110
+ status: revoke.status,
111
+ reason: revoke.body.message
120
112
  });
121
- if (rotate.status < 200 || rotate.status >= 300) {
122
- throw new Error(`Key rotation refused (${rotate.status}): ${rotate.body.message || 'unknown reason'}. `
123
- + 'The stored key is unchanged and still live.');
124
- }
125
- const newKey = rotate.body.data?.key;
126
- const newKeyId = rotate.body.data?.keyId;
127
- if (!newKey || !newKeyId)
128
- throw new Error('Key rotation returned no replacement key — the stored key is unchanged');
129
- const pruned = rotate.body.data?.prunedKeyIds ?? [];
130
- if (pruned.length > 0) {
131
- log('WARN', 'Platform retired stale sibling keys to stay under the active-key cap', { secretName, prunedKeyIds: pruned });
132
- }
133
- log('INFO', 'Minted the replacement key', { secretName, keyId: newKeyId });
134
- // ── 2. STORE — the secret now names a live credential. ─────────────────────
135
- const next = {
136
- ...stored,
137
- password: newKey,
138
- keyId: newKeyId,
139
- platformUrl,
140
- expiresIn: days * 24 * 60 * 60,
141
- ...(rotate.body.data?.expiresAt ? { expiresAt: rotate.body.data.expiresAt } : {}),
142
- createdAt: new Date().toISOString(),
143
- };
144
- await sm.send(new PutSecretValueCommand({ SecretId: secretName, SecretString: JSON.stringify(next) }));
145
- log('INFO', 'Stored the rotated key', { secretName, keyId: newKeyId });
146
- // ── 3. REVOKE — retire the predecessor, using the key that replaced it. ────
147
- // Best-effort by design: the credential is already healthy, and failing the
148
- // invocation here would only make the next retry rotate again.
149
- const oldKeyId = stored.keyId;
150
- if (!oldKeyId) {
151
- log('WARN', 'Secret recorded no previous keyId — nothing to revoke (it expires on its own)', { secretName });
152
- return;
153
- }
154
- const revoke = await post(platformUrl, '/api/auth/key/revoke', { key: newKey, keyId: oldKeyId })
155
- .catch((err) => ({ status: 0, body: { message: errorMessage(err) } }));
156
- if (revoke.status < 200 || revoke.status >= 300) {
157
- log('ERROR', 'Rotated and stored the new key, but could NOT revoke its predecessor — it stays valid until it expires', {
158
- secretName, staleKeyId: oldKeyId, status: revoke.status, reason: revoke.body.message,
159
- });
160
- return;
161
- }
162
- log('INFO', 'Rotation complete', { secretName, keyId: newKeyId, revokedKeyId: oldKeyId });
113
+ return;
114
+ }
115
+ log("INFO", "Rotation complete", { secretName, keyId: newKeyId, revokedKeyId: oldKeyId });
116
+ };
117
+ export {
118
+ handler
163
119
  };
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tcmVuZXctaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYW1iZGEvdG9rZW4tcmVuZXctaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHO0FBQ0gsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTFELGtEQUFrRDtBQUNsRCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFFL0IsNEVBQTRFO0FBQzVFLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFbEQsU0FBUyxRQUFRLENBQUMsSUFBWTtJQUM1QixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLElBQUksQ0FBQyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksbUNBQW1DLENBQUMsQ0FBQztJQUNwRSxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxTQUFTLEdBQUcsQ0FBQyxLQUFnQyxFQUFFLEdBQVcsRUFBRSxJQUE4QjtJQUN4RixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckQsc0NBQXNDO0lBQ3RDLElBQUksS0FBSyxLQUFLLE9BQU87UUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDOztRQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckUsQ0FBQztBQXFCRCw0RUFBNEU7QUFDNUUs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QVEsRUFBRSxDQUFDLENBQUM7QUFDNUYsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogU2NoZWR1bGVkIEtFWSBST1RBVE9SIGZvciB0aGUgc2VydmljZS1hY2NvdW50IGNyZWRlbnRpYWwgaW4gU2VjcmV0cyBNYW5hZ2VyXG4gKiAoI04yKS4gRGVwbG95ZWQgKyBzY2hlZHVsZWQgKG9uY2UgYSBkYXkpIGJ5IGBwaXBlbGluZS1tYW5hZ2VyIGluZnJhIHN0b3JlLXRva2VuXG4gKiAtLXNjaGVkdWxlYC5cbiAqXG4gKiBJdCB1c2VkIHRvIHJlLW1pbnQgYSBwZXJzb24ncyBtYWNoaW5lLXNlc3Npb24gSldUIGJ5IG5wbS1pbnN0YWxsaW5nIHRoZSBDTEkgYXRcbiAqIHJ1bnRpbWUgYW5kIHNoZWxsaW5nIG91dCB0byBgc3RvcmUtdG9rZW5gLiBUaGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gcmUtbWludDpcbiAqIHRoZSBzdG9yZWQgY3JlZGVudGlhbCBpcyBhbiBvcGFxdWUgYHBiX3NhX+KApmAga2V5LCBhbmQgcGxhdGZvcm0gcm90YXRlcyBpdFxuICogdGhyb3VnaCB0d28gc21hbGwgcHJlLWF1dGggZW5kcG9pbnRzIHdoZXJlIHRoZSBLRVkgSVRTRUxGIGlzIHRoZSBhdXRob3JpemF0aW9uXG4gKiAoYW4gdW5hdHRlbmRlZCBtYWNoaW5lIGhhcyBubyBwYXNzd29yZCBhbmQgY2Fubm90IHN0ZXAgdXApLiBTbyB0aGlzIGhhbmRsZXIgaXNcbiAqIHRocmVlIEhUVFAgY2FsbHMgYW5kIGEgc2VjcmV0IHdyaXRlLCB3aXRoIG5vIG5wbSBpbnN0YWxsLCBubyBDTEksIG5vIGAvdG1wYC5cbiAqXG4gKiBUSEUgT1JERVIgSVMgVEhFIFdIT0xFIERFU0lHTi4gQXQgbm8gcG9pbnQgbWF5IHRoZSBzZWNyZXQgbmFtZSBhIGNyZWRlbnRpYWxcbiAqIHRoYXQgZG9lcyBub3Qgd29yazpcbiAqXG4gKiAgIDEuIFJPVEFURSDigJQgbWludCBhIHNpYmxpbmcga2V5IG9uIHRoZSBzYW1lIGFjY291bnQuIFRoZSBjdXJyZW50IGtleSBzdGF5c1xuICogICAgICBMSVZFLiBGYWlsIGhlcmUgYW5kIHRoZSBzZWNyZXQgaXMgdW50b3VjaGVkOiB0aGUgb2xkIGtleSBzdGlsbCB3b3Jrcy5cbiAqICAgMi4gU1RPUkUgIOKAlCB3cml0ZSB0aGUgbmV3IGtleSB0byB0aGUgc2VjcmV0LiBGYWlsIGhlcmUgYW5kIHRoZSBzZWNyZXQgc3RpbGxcbiAqICAgICAgaG9sZHMgdGhlIG9sZCBrZXksIHdoaWNoIGlzIHN0aWxsIGxpdmU7IHRoZSBuZXcga2V5IGlzIGFuIG9ycGhhbiB0aGF0XG4gKiAgICAgIGV4cGlyZXMgb24gaXRzIG93biAoYW5kIHRoZSBuZXh0IHJ1bidzIHJvdGF0ZSBwcnVuZXMgaXQgYXQgdGhlIGNhcCkuXG4gKiAgIDMuIFJFVk9LRSDigJQgcmV0aXJlIHRoZSBvbGQga2V5LCBhdXRoZW50aWNhdGVkIHdpdGggdGhlIE5FVyBvbmUuIEZhaWwgaGVyZVxuICogICAgICBhbmQgQk9USCBrZXlzIHdvcms7IHRoZSBjcmVkZW50aWFsIGlzIGhlYWx0aHkgYW5kIHRoZSBzdGFsZSBrZXkgZXhwaXJlc1xuICogICAgICBvbiBpdHMgb3duLiBMb2dnZWQgYXQgRVJST1Igc28gaXQgaXMgdmlzaWJsZSwgYnV0IGl0IGRvZXMgbm90IGZhaWwgdGhlXG4gKiAgICAgIGludm9jYXRpb246IGEgcmV0cnkgd291bGQgcm90YXRlIGFnYWluIGFuZCBjaHVybiBrZXlzIGZvciBubyBnYWluLlxuICpcbiAqIFJldm9rZS10aGVuLWNyZWF0ZSB3b3VsZCBpbnZlcnQgZXZlcnkgb25lIG9mIHRob3NlOiBhIGZhaWx1cmUgYWZ0ZXIgdGhlIHJldm9rZVxuICogbGVhdmVzIHRoZSBkZXBsb3ltZW50IHdpdGggbm8gd29ya2luZyBjcmVkZW50aWFsIGF0IGFsbC5cbiAqXG4gKiBFbnY6IFBMQVRGT1JNX1NFQ1JFVF9OQU1FLCBSRU5FV19EQVlTIChkZWZhdWx0IDMwKSxcbiAqICAgICAgUExBVEZPUk1fVkVSSUZZX1NTTCAoXCJmYWxzZVwiIHRvIGRpc2FibGUgVExTIHZlcmlmaWNhdGlvbiDigJQgcmVmdXNlZCBpblxuICogICAgICBwcm9kdWN0aW9uKS5cbiAqL1xuaW1wb3J0IHsgU2VjcmV0c01hbmFnZXJDbGllbnQsIEdldFNlY3JldFZhbHVlQ29tbWFuZCwgUHV0U2VjcmV0VmFsdWVDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNlY3JldHMtbWFuYWdlcic7XG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5cbi8qKiBQZXItcmVxdWVzdCB0aW1lb3V0IGZvciB0aGUgcGxhdGZvcm0gY2FsbHMuICovXG5jb25zdCBIVFRQX1RJTUVPVVRfTVMgPSAxMF8wMDA7XG5cbi8qKiBBY2Nlc3Mta2V5IHByZWZpeGVzIHBsYXRmb3JtIGlzc3Vlcy4gQSBzdG9yZWQgSldUIGlzIG5vdCBvbmUgb2YgdGhlbS4gKi9cbmNvbnN0IEFDQ0VTU19LRVlfUFJFRklYRVMgPSBbJ3BiX3NhXycsICdwYl9wYXRfJ107XG5cbmZ1bmN0aW9uIHJlcXVpcmVkKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHYgPSBwcm9jZXNzLmVudltuYW1lXTtcbiAgaWYgKCF2KSB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgcmVxdWlyZWRgKTtcbiAgcmV0dXJuIHY7XG59XG5cbmZ1bmN0aW9uIGxvZyhsZXZlbDogJ0lORk8nIHwgJ1dBUk4nIHwgJ0VSUk9SJywgbXNnOiBzdHJpbmcsIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuICBjb25zdCBsaW5lID0gSlNPTi5zdHJpbmdpZnkoeyBsZXZlbCwgbXNnLCAuLi5kYXRhIH0pO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBpZiAobGV2ZWwgPT09ICdFUlJPUicpIGNvbnNvbGUuZXJyb3IobGluZSk7IGVsc2UgY29uc29sZS5sb2cobGluZSk7XG59XG5cbi8qKiBUaGUgc3RvcmVkIHNlY3JldCwgYXMgYHN0b3JlLXRva2VuYCB3cml0ZXMgaXQuICovXG5pbnRlcmZhY2UgU3RvcmVkQ3JlZGVudGlhbCB7XG4gIHVzZXJuYW1lPzogc3RyaW5nO1xuICAvKiogVGhlIGNhbm9uaWNhbCBjcmVkZW50aWFsIGZpZWxkIOKAlCBhbiBvcGFxdWUgYHBiX3NhX+KApmAga2V5IGFmdGVyIHRoZSBjdXRvdmVyLiAqL1xuICBwYXNzd29yZD86IHN0cmluZztcbiAgLyoqIFRoZSBwbGF0Zm9ybSB0aGlzIGNyZWRlbnRpYWwgYmVsb25ncyB0byDigJQgYHN0b3JlLXRva2VuYCBhbHdheXMgd3JpdGVzIGl0LiAqL1xuICBwbGF0Zm9ybVVybDogc3RyaW5nO1xuICBvcmdhbml6YXRpb25JZD86IHN0cmluZztcbiAgc2VydmljZUFjY291bnRJZD86IHN0cmluZztcbiAgc2VydmljZUFjY291bnROYW1lPzogc3RyaW5nO1xuICAvKiogUmVjb3JkIGlkIG9mIHRoZSBrZXkgaW4gYHBhc3N3b3JkYDsgd2hhdCBzdGVwIDMgcmV0aXJlcy4gKi9cbiAga2V5SWQ/OiBzdHJpbmc7XG4gIHNjb3BlPzogc3RyaW5nIHwgbnVsbDtcbiAgZXhwaXJlc0luPzogbnVtYmVyO1xuICBleHBpcmVzQXQ/OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdD86IHN0cmluZztcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuLyoqIFBPU1QgSlNPTiB0byB0aGUgcGxhdGZvcm0sIHJldHVybmluZyB0aGUgcGFyc2VkIGJvZHkgcGx1cyB0aGUgc3RhdHVzLiAqL1xuYXN5bmMgZnVuY3Rpb24gcG9zdChcbiAgYmFzZVVybDogc3RyaW5nLFxuICByb3V0ZTogc3RyaW5nLFxuICBib2R5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IFByb21pc2U8eyBzdGF0dXM6IG51bWJlcjsgYm9keTogeyBkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47IG1lc3NhZ2U/OiBzdHJpbmcgfSB9PiB7XG4gIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiBjb250cm9sbGVyLmFib3J0KCksIEhUVFBfVElNRU9VVF9NUyk7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7YmFzZVVybH0ke3JvdXRlfWAsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcbiAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgY29uc3QgcGFyc2VkID0gYXdhaXQgcmVzLmpzb24oKS5jYXRjaCgoKSA9PiAoe30pKSBhcyB7IGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjsgbWVzc2FnZT86IHN0cmluZyB9O1xuICAgIHJldHVybiB7IHN0YXR1czogcmVzLnN0YXR1cywgYm9keTogcGFyc2VkIH07XG4gIH0gZmluYWxseSB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgfVxufVxuXG4vKipcbiAqIFNFQ1VSSVRZOiB0aGVzZSBjYWxscyBjYXJyeSBhIGxpdmUgY3JlZGVudGlhbC4gUmVmdXNlIHRvIGRpc2FibGUgVExTXG4gKiB2ZXJpZmljYXRpb24gaW4gcHJvZHVjdGlvbiBzbyBhIE1JVE0gY2FuJ3QgaGFydmVzdCBpdC4gUHJvZHVjdGlvbiBpcyB0aGlzXG4gKiBMYW1iZGEncyBub3JtYWwgbW9kZSAodGhlIHJvdGF0aW9uIHN0YWNrIHNldHMgTk9ERV9FTlY9cHJvZHVjdGlvbiksIHNvXG4gKiBQTEFURk9STV9WRVJJRllfU1NMPWZhbHNlIGlzIGhvbm9yZWQgT05MWSBvdXRzaWRlIHByb2R1Y3Rpb24uIFRoaXMgaW5saW5lcyB0aGVcbiAqIHNhbWUgYE5PREVfRU5WPT09J3Byb2R1Y3Rpb24nYCBwb2xpY3kgYXMgdXRpbHMvdGxzLnRzI2Fzc2VydFNzbERpc2FibGVBbGxvd2VkXG4gKiAodGhlIGhhbmRsZXIgc2hpcHMgYXMgYSBzaW5nbGUgc2VsZi1jb250YWluZWQgaW5kZXgubWpzIGFuZCBjYW4ndCBpbXBvcnQgaXQpLlxuICovXG5mdW5jdGlvbiBhcHBseVRsc1BvbGljeSgpOiB2b2lkIHtcbiAgaWYgKHByb2Nlc3MuZW52LlBMQVRGT1JNX1ZFUklGWV9TU0wgIT09ICdmYWxzZScpIHJldHVybjtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgICBsb2coJ1dBUk4nLCAnUmVmdXNpbmcgUExBVEZPUk1fVkVSSUZZX1NTTD1mYWxzZSBpbiBwcm9kdWN0aW9uIChOT0RFX0VOVj1wcm9kdWN0aW9uKSDigJQgVExTIHZlcmlmaWNhdGlvbiBzdGF5cyBlbmFibGVkJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHByb2Nlc3MuZW52Lk5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUQgPSAnMCc7XG59XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVyID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBzZWNyZXROYW1lID0gcmVxdWlyZWQoJ1BMQVRGT1JNX1NFQ1JFVF9OQU1FJyk7XG4gIGNvbnN0IGRheXMgPSBOdW1iZXIocHJvY2Vzcy5lbnYuUkVORVdfREFZUyB8fCAnMzAnKTtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoZGF5cykgfHwgZGF5cyA8IDEgfHwgZGF5cyA+IDM2NSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUkVORVdfREFZUyBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMzY1IChnb3QgXCIke3Byb2Nlc3MuZW52LlJFTkVXX0RBWVN9XCIpYCk7XG4gIH1cbiAgY29uc3QgcmVnaW9uID0gcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCAndXMtZWFzdC0xJztcblxuICBhcHBseVRsc1BvbGljeSgpO1xuXG4gIGNvbnN0IHNtID0gbmV3IFNlY3JldHNNYW5hZ2VyQ2xpZW50KHsgcmVnaW9uIH0pO1xuICBjb25zdCBjdXJyZW50ID0gYXdhaXQgc20uc2VuZChuZXcgR2V0U2VjcmV0VmFsdWVDb21tYW5kKHsgU2VjcmV0SWQ6IHNlY3JldE5hbWUgfSkpO1xuICBpZiAoIWN1cnJlbnQuU2VjcmV0U3RyaW5nKSB0aHJvdyBuZXcgRXJyb3IoYFNlY3JldCBcIiR7c2VjcmV0TmFtZX1cIiBpcyBlbXB0eWApO1xuICBjb25zdCBzdG9yZWQgPSBKU09OLnBhcnNlKGN1cnJlbnQuU2VjcmV0U3RyaW5nKSBhcyBTdG9yZWRDcmVkZW50aWFsO1xuXG4gIGNvbnN0IG9sZEtleSA9IHN0b3JlZC5wYXNzd29yZDtcbiAgaWYgKCFvbGRLZXkpIHRocm93IG5ldyBFcnJvcihgU2VjcmV0IFwiJHtzZWNyZXROYW1lfVwiIG1pc3NpbmcgcGFzc3dvcmQgKHNlcnZpY2UtYWNjb3VudCBrZXkpYCk7XG4gIGlmICghQUNDRVNTX0tFWV9QUkVGSVhFUy5zb21lKChwKSA9PiBvbGRLZXkuc3RhcnRzV2l0aChwKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgU2VjcmV0IFwiJHtzZWNyZXROYW1lfVwiIGRvZXMgbm90IGhvbGQgYW4gb3BhcXVlIHNlcnZpY2UtYWNjb3VudCBrZXkuIGBcbiAgICAgICsgJ1JlLXJ1biBcInBpcGVsaW5lLW1hbmFnZXIgaW5mcmEgc3RvcmUtdG9rZW5cIiB0byByZWlzc3VlIGl0IGFzIGEga2V5IChzZWUgZG9jcy9ydW5ib29rcy9hY2Nlc3Mta2V5LWN1dG92ZXIubWQpLicsXG4gICAgKTtcbiAgfVxuICAvLyBUaGUgcGxhdGZvcm0gdGhpcyBjcmVkZW50aWFsIGJlbG9uZ3MgdG8gaXMgcmVjb3JkZWQgSU4gdGhlIHNlY3JldCBieVxuICAvLyBgc3RvcmUtdG9rZW5gIOKAlCB0aGUgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aC5cbiAgaWYgKCFzdG9yZWQucGxhdGZvcm1VcmwpIHRocm93IG5ldyBFcnJvcihgU2VjcmV0IFwiJHtzZWNyZXROYW1lfVwiIG1pc3NpbmcgcGxhdGZvcm1VcmxgKTtcbiAgY29uc3QgcGxhdGZvcm1VcmwgPSBzdG9yZWQucGxhdGZvcm1VcmwucmVwbGFjZSgvXFwvKyQvLCAnJyk7XG5cbiAgLy8g4pSA4pSAIDEuIFJPVEFURSDigJQgbWludCB0aGUgcmVwbGFjZW1lbnQuIFRoZSBvbGQga2V5IHN0YXlzIGxpdmUuIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICBjb25zdCByb3RhdGUgPSBhd2FpdCBwb3N0KHBsYXRmb3JtVXJsLCAnL2FwaS9hdXRoL2tleS9yb3RhdGUnLCB7XG4gICAga2V5OiBvbGRLZXksXG4gICAgbmFtZTogYCR7c3RvcmVkLnNlcnZpY2VBY2NvdW50TmFtZSB8fCAncm90YXRlZCd9LSR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNsaWNlKDAsIDEwKX1gLFxuICAgIGV4cGlyZXNJbjogZGF5cyAqIDI0ICogNjAgKiA2MCxcbiAgfSk7XG4gIGlmIChyb3RhdGUuc3RhdHVzIDwgMjAwIHx8IHJvdGF0ZS5zdGF0dXMgPj0gMzAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEtleSByb3RhdGlvbiByZWZ1c2VkICgke3JvdGF0ZS5zdGF0dXN9KTogJHtyb3RhdGUuYm9keS5tZXNzYWdlIHx8ICd1bmtub3duIHJlYXNvbid9LiBgXG4gICAgICArICdUaGUgc3RvcmVkIGtleSBpcyB1bmNoYW5nZWQgYW5kIHN0aWxsIGxpdmUuJyxcbiAgICApO1xuICB9XG4gIGNvbnN0IG5ld0tleSA9IHJvdGF0ZS5ib2R5LmRhdGE/LmtleSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IG5ld0tleUlkID0gcm90YXRlLmJvZHkuZGF0YT8ua2V5SWQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpZiAoIW5ld0tleSB8fCAhbmV3S2V5SWQpIHRocm93IG5ldyBFcnJvcignS2V5IHJvdGF0aW9uIHJldHVybmVkIG5vIHJlcGxhY2VtZW50IGtleSDigJQgdGhlIHN0b3JlZCBrZXkgaXMgdW5jaGFuZ2VkJyk7XG4gIGNvbnN0IHBydW5lZCA9IChyb3RhdGUuYm9keS5kYXRhPy5wcnVuZWRLZXlJZHMgYXMgc3RyaW5nW10gfCB1bmRlZmluZWQpID8/IFtdO1xuICBpZiAocHJ1bmVkLmxlbmd0aCA+IDApIHtcbiAgICBsb2coJ1dBUk4nLCAnUGxhdGZvcm0gcmV0aXJlZCBzdGFsZSBzaWJsaW5nIGtleXMgdG8gc3RheSB1bmRlciB0aGUgYWN0aXZlLWtleSBjYXAnLCB7IHNlY3JldE5hbWUsIHBydW5lZEtleUlkczogcHJ1bmVkIH0pO1xuICB9XG4gIGxvZygnSU5GTycsICdNaW50ZWQgdGhlIHJlcGxhY2VtZW50IGtleScsIHsgc2VjcmV0TmFtZSwga2V5SWQ6IG5ld0tleUlkIH0pO1xuXG4gIC8vIOKUgOKUgCAyLiBTVE9SRSDigJQgdGhlIHNlY3JldCBub3cgbmFtZXMgYSBsaXZlIGNyZWRlbnRpYWwuIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICBjb25zdCBuZXh0OiBTdG9yZWRDcmVkZW50aWFsID0ge1xuICAgIC4uLnN0b3JlZCxcbiAgICBwYXNzd29yZDogbmV3S2V5LFxuICAgIGtleUlkOiBuZXdLZXlJZCxcbiAgICBwbGF0Zm9ybVVybCxcbiAgICBleHBpcmVzSW46IGRheXMgKiAyNCAqIDYwICogNjAsXG4gICAgLi4uKHJvdGF0ZS5ib2R5LmRhdGE/LmV4cGlyZXNBdCA/IHsgZXhwaXJlc0F0OiByb3RhdGUuYm9keS5kYXRhLmV4cGlyZXNBdCBhcyBzdHJpbmcgfSA6IHt9KSxcbiAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgfTtcbiAgYXdhaXQgc20uc2VuZChuZXcgUHV0U2VjcmV0VmFsdWVDb21tYW5kKHsgU2VjcmV0SWQ6IHNlY3JldE5hbWUsIFNlY3JldFN0cmluZzogSlNPTi5zdHJpbmdpZnkobmV4dCkgfSkpO1xuICBsb2coJ0lORk8nLCAnU3RvcmVkIHRoZSByb3RhdGVkIGtleScsIHsgc2VjcmV0TmFtZSwga2V5SWQ6IG5ld0tleUlkIH0pO1xuXG4gIC8vIOKUgOKUgCAzLiBSRVZPS0Ug4oCUIHJldGlyZSB0aGUgcHJlZGVjZXNzb3IsIHVzaW5nIHRoZSBrZXkgdGhhdCByZXBsYWNlZCBpdC4g4pSA4pSA4pSA4pSAXG4gIC8vIEJlc3QtZWZmb3J0IGJ5IGRlc2lnbjogdGhlIGNyZWRlbnRpYWwgaXMgYWxyZWFkeSBoZWFsdGh5LCBhbmQgZmFpbGluZyB0aGVcbiAgLy8gaW52b2NhdGlvbiBoZXJlIHdvdWxkIG9ubHkgbWFrZSB0aGUgbmV4dCByZXRyeSByb3RhdGUgYWdhaW4uXG4gIGNvbnN0IG9sZEtleUlkID0gc3RvcmVkLmtleUlkO1xuICBpZiAoIW9sZEtleUlkKSB7XG4gICAgbG9nKCdXQVJOJywgJ1NlY3JldCByZWNvcmRlZCBubyBwcmV2aW91cyBrZXlJZCDigJQgbm90aGluZyB0byByZXZva2UgKGl0IGV4cGlyZXMgb24gaXRzIG93biknLCB7IHNlY3JldE5hbWUgfSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHJldm9rZSA9IGF3YWl0IHBvc3QocGxhdGZvcm1VcmwsICcvYXBpL2F1dGgva2V5L3Jldm9rZScsIHsga2V5OiBuZXdLZXksIGtleUlkOiBvbGRLZXlJZCB9KVxuICAgIC5jYXRjaCgoZXJyKSA9PiAoeyBzdGF0dXM6IDAsIGJvZHk6IHsgbWVzc2FnZTogZXJyb3JNZXNzYWdlKGVycikgfSB9KSk7XG4gIGlmIChyZXZva2Uuc3RhdHVzIDwgMjAwIHx8IHJldm9rZS5zdGF0dXMgPj0gMzAwKSB7XG4gICAgbG9nKCdFUlJPUicsICdSb3RhdGVkIGFuZCBzdG9yZWQgdGhlIG5ldyBrZXksIGJ1dCBjb3VsZCBOT1QgcmV2b2tlIGl0cyBwcmVkZWNlc3NvciDigJQgaXQgc3RheXMgdmFsaWQgdW50aWwgaXQgZXhwaXJlcycsIHtcbiAgICAgIHNlY3JldE5hbWUsIHN0YWxlS2V5SWQ6IG9sZEtleUlkLCBzdGF0dXM6IHJldm9rZS5zdGF0dXMsIHJlYXNvbjogcmV2b2tlLmJvZHkubWVzc2FnZSxcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cbiAgbG9nKCdJTkZPJywgJ1JvdGF0aW9uIGNvbXBsZXRlJywgeyBzZWNyZXROYW1lLCBrZXlJZDogbmV3S2V5SWQsIHJldm9rZWRLZXlJZDogb2xkS2V5SWQgfSk7XG59O1xuIl19
@@ -8,16 +8,12 @@ export interface ApiConfig {
8
8
  timeout?: number;
9
9
  /** Extended timeout for plugin upload requests (large files). */
10
10
  uploadTimeout?: number;
11
- /** URL path for single-pipeline CRUD operations. */
11
+ /** URL path of the pipelines API: list/query at the root, one pipeline at `/{id}`. */
12
12
  pipelineUrl: string;
13
- /** URL path for pipeline list/query operations. */
14
- pipelineListUrl: string;
15
13
  /** URL path for the golden-path pipeline-template catalog (list/get/instantiate). */
16
14
  pipelineTemplateUrl: string;
17
- /** URL path for single-plugin CRUD operations. */
15
+ /** URL path of the plugins API: list/query at the root, one plugin at `/{id}`. */
18
16
  pluginUrl: string;
19
- /** URL path for plugin list/query operations. */
20
- pluginListUrl: string;
21
17
  /** URL path for plugin upload (multipart POST). */
22
18
  pluginUploadUrl: string;
23
19
  /** When `false`, disables TLS certificate verification. */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB,qFAAqF;IACrF,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,wCAAwC;IACxC,GAAG,EAAE,SAAS,CAAC;IACf,kCAAkC;IAClC,IAAI,EAAE,UAAU,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sFAAsF;IACtF,WAAW,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,wCAAwC;IACxC,GAAG,EAAE,SAAS,CAAC;IACf,kCAAkC;IAClC,IAAI,EAAE,UAAU,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C"}
@@ -1,4 +1,4 @@
1
1
  // Copyright 2026 Pipeline Builder Contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  export {};
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGxhdGZvcm0gQVBJIGNvbm5lY3Rpb24gc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpQ29uZmlnIHtcbiAgLyoqIEJhc2UgVVJMIG9mIHRoZSBwbGF0Zm9ybSBBUEkgKGUuZy4sIGBodHRwczovL2FwaS5leGFtcGxlLmNvbWApLiAqL1xuICBiYXNlVXJsOiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0IHJlcXVlc3QgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBFeHRlbmRlZCB0aW1lb3V0IGZvciBwbHVnaW4gdXBsb2FkIHJlcXVlc3RzIChsYXJnZSBmaWxlcykuICovXG4gIHVwbG9hZFRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBVUkwgcGF0aCBmb3Igc2luZ2xlLXBpcGVsaW5lIENSVUQgb3BlcmF0aW9ucy4gKi9cbiAgcGlwZWxpbmVVcmw6IHN0cmluZztcbiAgLyoqIFVSTCBwYXRoIGZvciBwaXBlbGluZSBsaXN0L3F1ZXJ5IG9wZXJhdGlvbnMuICovXG4gIHBpcGVsaW5lTGlzdFVybDogc3RyaW5nO1xuICAvKiogVVJMIHBhdGggZm9yIHRoZSBnb2xkZW4tcGF0aCBwaXBlbGluZS10ZW1wbGF0ZSBjYXRhbG9nIChsaXN0L2dldC9pbnN0YW50aWF0ZSkuICovXG4gIHBpcGVsaW5lVGVtcGxhdGVVcmw6IHN0cmluZztcbiAgLyoqIFVSTCBwYXRoIGZvciBzaW5nbGUtcGx1Z2luIENSVUQgb3BlcmF0aW9ucy4gKi9cbiAgcGx1Z2luVXJsOiBzdHJpbmc7XG4gIC8qKiBVUkwgcGF0aCBmb3IgcGx1Z2luIGxpc3QvcXVlcnkgb3BlcmF0aW9ucy4gKi9cbiAgcGx1Z2luTGlzdFVybDogc3RyaW5nO1xuICAvKiogVVJMIHBhdGggZm9yIHBsdWdpbiB1cGxvYWQgKG11bHRpcGFydCBQT1NUKS4gKi9cbiAgcGx1Z2luVXBsb2FkVXJsOiBzdHJpbmc7XG4gIC8qKiBXaGVuIGBmYWxzZWAsIGRpc2FibGVzIFRMUyBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24uICovXG4gIHJlamVjdFVuYXV0aG9yaXplZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgZm9yIHBsYXRmb3JtIEFQSSBhY2Nlc3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aENvbmZpZyB7XG4gIC8qKiBKV1QgYmVhcmVyIHRva2VuIG9idGFpbmVkIGZyb20gdGhlIHBsYXRmb3JtLiAqL1xuICB0b2tlbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbXBsZXRlIENMSSBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIGNvbWJpbmluZyBBUEkgYW5kIGF1dGggc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnIHtcbiAgLyoqIFBsYXRmb3JtIEFQSSBjb25uZWN0aW9uIHNldHRpbmdzLiAqL1xuICBhcGk6IEFwaUNvbmZpZztcbiAgLyoqIEF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLiAqL1xuICBhdXRoOiBBdXRoQ29uZmlnO1xufVxuXG4vKipcbiAqIFRoZSBuYXJyb3cgc2xpY2Ugb2Yge0BsaW5rIENvbmZpZ30gdGhlIGRlcGxveS9yZWdpc3RyeSBwYXRocyByZWFkIG9mZlxuICogYGNsaWVudC5nZXRDb25maWcoKWAg4oCUIHRoZSBwaXBlbGluZSBlbmRwb2ludCArIHBsYXRmb3JtIGJhc2UgVVJMLiBOYW1lZCBzbyB0aGVcbiAqIGBkZXBsb3lgIGFuZCBgY3JlYXRlIC0tZGVwbG95YCBmbG93cyBzaGFyZSBvbmUgc2hhcGUgaW5zdGVhZCBvZiByZS1jYXN0aW5nIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsYXRmb3JtRGVwbG95Q29uZmlnIHtcbiAgYXBpOiB7IHBpcGVsaW5lVXJsOiBzdHJpbmc7IGJhc2VVcmw6IHN0cmluZyB9O1xufVxuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGxhdGZvcm0gQVBJIGNvbm5lY3Rpb24gc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpQ29uZmlnIHtcbiAgLyoqIEJhc2UgVVJMIG9mIHRoZSBwbGF0Zm9ybSBBUEkgKGUuZy4sIGBodHRwczovL2FwaS5leGFtcGxlLmNvbWApLiAqL1xuICBiYXNlVXJsOiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0IHJlcXVlc3QgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBFeHRlbmRlZCB0aW1lb3V0IGZvciBwbHVnaW4gdXBsb2FkIHJlcXVlc3RzIChsYXJnZSBmaWxlcykuICovXG4gIHVwbG9hZFRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBVUkwgcGF0aCBvZiB0aGUgcGlwZWxpbmVzIEFQSTogbGlzdC9xdWVyeSBhdCB0aGUgcm9vdCwgb25lIHBpcGVsaW5lIGF0IGAve2lkfWAuICovXG4gIHBpcGVsaW5lVXJsOiBzdHJpbmc7XG4gIC8qKiBVUkwgcGF0aCBmb3IgdGhlIGdvbGRlbi1wYXRoIHBpcGVsaW5lLXRlbXBsYXRlIGNhdGFsb2cgKGxpc3QvZ2V0L2luc3RhbnRpYXRlKS4gKi9cbiAgcGlwZWxpbmVUZW1wbGF0ZVVybDogc3RyaW5nO1xuICAvKiogVVJMIHBhdGggb2YgdGhlIHBsdWdpbnMgQVBJOiBsaXN0L3F1ZXJ5IGF0IHRoZSByb290LCBvbmUgcGx1Z2luIGF0IGAve2lkfWAuICovXG4gIHBsdWdpblVybDogc3RyaW5nO1xuICAvKiogVVJMIHBhdGggZm9yIHBsdWdpbiB1cGxvYWQgKG11bHRpcGFydCBQT1NUKS4gKi9cbiAgcGx1Z2luVXBsb2FkVXJsOiBzdHJpbmc7XG4gIC8qKiBXaGVuIGBmYWxzZWAsIGRpc2FibGVzIFRMUyBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24uICovXG4gIHJlamVjdFVuYXV0aG9yaXplZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgZm9yIHBsYXRmb3JtIEFQSSBhY2Nlc3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aENvbmZpZyB7XG4gIC8qKiBKV1QgYmVhcmVyIHRva2VuIG9idGFpbmVkIGZyb20gdGhlIHBsYXRmb3JtLiAqL1xuICB0b2tlbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbXBsZXRlIENMSSBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIGNvbWJpbmluZyBBUEkgYW5kIGF1dGggc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnIHtcbiAgLyoqIFBsYXRmb3JtIEFQSSBjb25uZWN0aW9uIHNldHRpbmdzLiAqL1xuICBhcGk6IEFwaUNvbmZpZztcbiAgLyoqIEF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLiAqL1xuICBhdXRoOiBBdXRoQ29uZmlnO1xufVxuXG4vKipcbiAqIFRoZSBuYXJyb3cgc2xpY2Ugb2Yge0BsaW5rIENvbmZpZ30gdGhlIGRlcGxveS9yZWdpc3RyeSBwYXRocyByZWFkIG9mZlxuICogYGNsaWVudC5nZXRDb25maWcoKWAg4oCUIHRoZSBwaXBlbGluZSBlbmRwb2ludCArIHBsYXRmb3JtIGJhc2UgVVJMLiBOYW1lZCBzbyB0aGVcbiAqIGBkZXBsb3lgIGFuZCBgY3JlYXRlIC0tZGVwbG95YCBmbG93cyBzaGFyZSBvbmUgc2hhcGUgaW5zdGVhZCBvZiByZS1jYXN0aW5nIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsYXRmb3JtRGVwbG95Q29uZmlnIHtcbiAgYXBpOiB7IHBpcGVsaW5lVXJsOiBzdHJpbmc7IGJhc2VVcmw6IHN0cmluZyB9O1xufVxuIl19
@@ -125,6 +125,27 @@ export interface Plugin extends PluginBase {
125
125
  * User who uploaded the plugin
126
126
  */
127
127
  uploadedBy?: string;
128
+ /** Whether this version is the default for its name. */
129
+ isDefault?: boolean;
130
+ /** When the version was deprecated (still resolves, with a warning). */
131
+ deprecatedAt?: string | null;
132
+ /** The publisher's deprecation message. */
133
+ deprecationMessage?: string | null;
134
+ /** When the version was yanked (ranges, `latest` and the default skip it). */
135
+ yankedAt?: string | null;
136
+ /** Why the version was yanked. */
137
+ yankReason?: string | null;
138
+ }
139
+ /**
140
+ * Response of `POST /plugins/:id/yank`: the yanked version, plus the version
141
+ * promoted to default when the yanked one was the default.
142
+ */
143
+ export interface PluginYankResponse {
144
+ plugin: Plugin;
145
+ promotedDefault?: {
146
+ id: string;
147
+ version: string;
148
+ };
128
149
  }
129
150
  /**
130
151
  * Response returned by single-plugin API endpoints (get, upload).
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,MAAO,SAAQ,UAAU;IACxC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,MAAO,SAAQ,UAAU;IACxC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,wDAAwD;IACxD,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B,2CAA2C;IAC3C,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -1,4 +1,4 @@
1
1
  // Copyright 2026 Pipeline Builder Contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  export {};
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGFja2FnZS1sZXZlbCBtZXRhZGF0YSBleHRyYWN0ZWQgZnJvbSB0aGUgcGx1Z2luIGFyY2hpdmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luTWV0YWRhdGEge1xuICAvKipcbiAgICogUGx1Z2luIG5hbWVcbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogUGx1Z2luIHZlcnNpb25cbiAgICovXG4gIHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogUGx1Z2luIGRlc2NyaXB0aW9uXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogUGx1Z2luIGF1dGhvclxuICAgKi9cbiAgYXV0aG9yPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gbGljZW5zZVxuICAgKi9cbiAgbGljZW5zZT86IHN0cmluZztcblxuICAvKipcbiAgICogUGx1Z2luIGhvbWVwYWdlIFVSTFxuICAgKi9cbiAgaG9tZXBhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiByZXBvc2l0b3J5IFVSTFxuICAgKi9cbiAgcmVwb3NpdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogUGx1Z2luIGtleXdvcmRzL3RhZ3NcbiAgICovXG4gIGtleXdvcmRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBkZXBlbmRlbmNpZXNcbiAgICovXG4gIGRlcGVuZGVuY2llcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKlxuICogUnVudGltZSBjb25maWd1cmF0aW9uIGZvciBhIHBsdWdpbiwgaW5jbHVkaW5nIGl0cyBlbnRyeSBwb2ludCBhbmQgc2NoZW1hLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBQbHVnaW4gZW50cnkgcG9pbnRcbiAgICovXG4gIG1haW4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBjb25maWd1cmF0aW9uIHNjaGVtYVxuICAgKi9cbiAgc2NoZW1hPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIGRlZmF1bHRzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogQ29yZSBwbHVnaW4gZmllbGRzIHJlcXVpcmVkIG9uIGV2ZXJ5IHBsdWdpbiByZWNvcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luQmFzZSB7XG4gIC8qKlxuICAgKiBVbmlxdWUgcGx1Z2luIGlkZW50aWZpZXJcbiAgICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiB2ZXJzaW9uXG4gICAqL1xuICB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9yZ2FuaXphdGlvbiB0aGF0IG93bnMgdGhlIHBsdWdpblxuICAgKi9cbiAgb3JnYW5pemF0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29tcGxldGUgcGx1Z2luIGVudGl0eSBjb21iaW5pbmcgY29yZSBmaWVsZHMgd2l0aCBvcHRpb25hbCBkZXRhaWwgZmllbGRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2Uge1xuICAvKipcbiAgICogUGx1Z2luIGRlc2NyaXB0aW9uXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogUGx1Z2luIG1ldGFkYXRhXG4gICAqL1xuICBtZXRhZGF0YT86IFBsdWdpbk1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gY29uZmlndXJhdGlvblxuICAgKi9cbiAgY29uZmlnPzogUGx1Z2luQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gZmlsZSBVUkxcbiAgICovXG4gIGZpbGVVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBmaWxlIHNpemUgaW4gYnl0ZXNcbiAgICovXG4gIGZpbGVTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gY2hlY2tzdW0gKFNIQTI1NilcbiAgICovXG4gIGNoZWNrc3VtPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwbHVnaW4gaXMgYWN0aXZlXG4gICAqL1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBsdWdpbiBpcyBwdWJsaWNcbiAgICovXG4gIGlzUHVibGljPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGx1Z2luIGNyZWF0aW9uIHRpbWVzdGFtcFxuICAgKi9cbiAgY3JlYXRlZEF0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gbGFzdCB1cGRhdGUgdGltZXN0YW1wXG4gICAqL1xuICB1cGRhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZXIgd2hvIHVwbG9hZGVkIHRoZSBwbHVnaW5cbiAgICovXG4gIHVwbG9hZGVkQnk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgcmV0dXJuZWQgYnkgc2luZ2xlLXBsdWdpbiBBUEkgZW5kcG9pbnRzIChnZXQsIHVwbG9hZCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luUmVzcG9uc2Uge1xuICBwbHVnaW46IFBsdWdpbjtcbn1cbiJdfQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGFja2FnZS1sZXZlbCBtZXRhZGF0YSBleHRyYWN0ZWQgZnJvbSB0aGUgcGx1Z2luIGFyY2hpdmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luTWV0YWRhdGEge1xuICAvKipcbiAgICogUGx1Z2luIG5hbWVcbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogUGx1Z2luIHZlcnNpb25cbiAgICovXG4gIHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogUGx1Z2luIGRlc2NyaXB0aW9uXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogUGx1Z2luIGF1dGhvclxuICAgKi9cbiAgYXV0aG9yPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gbGljZW5zZVxuICAgKi9cbiAgbGljZW5zZT86IHN0cmluZztcblxuICAvKipcbiAgICogUGx1Z2luIGhvbWVwYWdlIFVSTFxuICAgKi9cbiAgaG9tZXBhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiByZXBvc2l0b3J5IFVSTFxuICAgKi9cbiAgcmVwb3NpdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogUGx1Z2luIGtleXdvcmRzL3RhZ3NcbiAgICovXG4gIGtleXdvcmRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBkZXBlbmRlbmNpZXNcbiAgICovXG4gIGRlcGVuZGVuY2llcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKlxuICogUnVudGltZSBjb25maWd1cmF0aW9uIGZvciBhIHBsdWdpbiwgaW5jbHVkaW5nIGl0cyBlbnRyeSBwb2ludCBhbmQgc2NoZW1hLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBQbHVnaW4gZW50cnkgcG9pbnRcbiAgICovXG4gIG1haW4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBjb25maWd1cmF0aW9uIHNjaGVtYVxuICAgKi9cbiAgc2NoZW1hPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIGRlZmF1bHRzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogQ29yZSBwbHVnaW4gZmllbGRzIHJlcXVpcmVkIG9uIGV2ZXJ5IHBsdWdpbiByZWNvcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luQmFzZSB7XG4gIC8qKlxuICAgKiBVbmlxdWUgcGx1Z2luIGlkZW50aWZpZXJcbiAgICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBuYW1lXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiB2ZXJzaW9uXG4gICAqL1xuICB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9yZ2FuaXphdGlvbiB0aGF0IG93bnMgdGhlIHBsdWdpblxuICAgKi9cbiAgb3JnYW5pemF0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29tcGxldGUgcGx1Z2luIGVudGl0eSBjb21iaW5pbmcgY29yZSBmaWVsZHMgd2l0aCBvcHRpb25hbCBkZXRhaWwgZmllbGRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2Uge1xuICAvKipcbiAgICogUGx1Z2luIGRlc2NyaXB0aW9uXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogUGx1Z2luIG1ldGFkYXRhXG4gICAqL1xuICBtZXRhZGF0YT86IFBsdWdpbk1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gY29uZmlndXJhdGlvblxuICAgKi9cbiAgY29uZmlnPzogUGx1Z2luQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gZmlsZSBVUkxcbiAgICovXG4gIGZpbGVVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBmaWxlIHNpemUgaW4gYnl0ZXNcbiAgICovXG4gIGZpbGVTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gY2hlY2tzdW0gKFNIQTI1NilcbiAgICovXG4gIGNoZWNrc3VtPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwbHVnaW4gaXMgYWN0aXZlXG4gICAqL1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBsdWdpbiBpcyBwdWJsaWNcbiAgICovXG4gIGlzUHVibGljPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGx1Z2luIGNyZWF0aW9uIHRpbWVzdGFtcFxuICAgKi9cbiAgY3JlYXRlZEF0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gbGFzdCB1cGRhdGUgdGltZXN0YW1wXG4gICAqL1xuICB1cGRhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZXIgd2hvIHVwbG9hZGVkIHRoZSBwbHVnaW5cbiAgICovXG4gIHVwbG9hZGVkQnk/OiBzdHJpbmc7XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyB2ZXJzaW9uIGlzIHRoZSBkZWZhdWx0IGZvciBpdHMgbmFtZS4gKi9cbiAgaXNEZWZhdWx0PzogYm9vbGVhbjtcblxuICAvKiogV2hlbiB0aGUgdmVyc2lvbiB3YXMgZGVwcmVjYXRlZCAoc3RpbGwgcmVzb2x2ZXMsIHdpdGggYSB3YXJuaW5nKS4gKi9cbiAgZGVwcmVjYXRlZEF0Pzogc3RyaW5nIHwgbnVsbDtcblxuICAvKiogVGhlIHB1Ymxpc2hlcidzIGRlcHJlY2F0aW9uIG1lc3NhZ2UuICovXG4gIGRlcHJlY2F0aW9uTWVzc2FnZT86IHN0cmluZyB8IG51bGw7XG5cbiAgLyoqIFdoZW4gdGhlIHZlcnNpb24gd2FzIHlhbmtlZCAocmFuZ2VzLCBgbGF0ZXN0YCBhbmQgdGhlIGRlZmF1bHQgc2tpcCBpdCkuICovXG4gIHlhbmtlZEF0Pzogc3RyaW5nIHwgbnVsbDtcblxuICAvKiogV2h5IHRoZSB2ZXJzaW9uIHdhcyB5YW5rZWQuICovXG4gIHlhbmtSZWFzb24/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIG9mIGBQT1NUIC9wbHVnaW5zLzppZC95YW5rYDogdGhlIHlhbmtlZCB2ZXJzaW9uLCBwbHVzIHRoZSB2ZXJzaW9uXG4gKiBwcm9tb3RlZCB0byBkZWZhdWx0IHdoZW4gdGhlIHlhbmtlZCBvbmUgd2FzIHRoZSBkZWZhdWx0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbllhbmtSZXNwb25zZSB7XG4gIHBsdWdpbjogUGx1Z2luO1xuICBwcm9tb3RlZERlZmF1bHQ/OiB7IGlkOiBzdHJpbmc7IHZlcnNpb246IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIHJldHVybmVkIGJ5IHNpbmdsZS1wbHVnaW4gQVBJIGVuZHBvaW50cyAoZ2V0LCB1cGxvYWQpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblJlc3BvbnNlIHtcbiAgcGx1Z2luOiBQbHVnaW47XG59XG4iXX0=
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * Resolve the AWS region for an SDK/CLI call: explicit `--region` override →
3
3
  * `AWS_REGION` → `CDK_DEFAULT_REGION` → `us-east-1`. Single source for the
4
- * fallback that was previously copy-pasted across every AWS command and the
5
- * secrets client.
4
+ * fallback used by every AWS command and the secrets client.
6
5
  */
7
6
  export declare function resolveAwsRegion(override?: string): string;
8
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"aws-env.d.ts","sourceRoot":"","sources":["../../src/utils/aws-env.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAStD"}
1
+ {"version":3,"file":"aws-env.d.ts","sourceRoot":"","sources":["../../src/utils/aws-env.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAStD"}
@@ -4,8 +4,7 @@ import { printWarning } from './output-utils.js';
4
4
  /**
5
5
  * Resolve the AWS region for an SDK/CLI call: explicit `--region` override →
6
6
  * `AWS_REGION` → `CDK_DEFAULT_REGION` → `us-east-1`. Single source for the
7
- * fallback that was previously copy-pasted across every AWS command and the
8
- * secrets client.
7
+ * fallback used by every AWS command and the secrets client.
9
8
  */
10
9
  export function resolveAwsRegion(override) {
11
10
  return override || process.env.AWS_REGION || process.env.CDK_DEFAULT_REGION || 'us-east-1';
@@ -31,4 +30,4 @@ export function applyAwsProfile(profile) {
31
30
  `(${process.env.AWS_ACCESS_KEY_ID ? 'AWS_ACCESS_KEY_ID' : 'AWS_PROFILE'}) take precedence.`);
32
31
  }
33
32
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVudi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hd3MtZW52LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFFBQWlCO0lBQ2hELE9BQU8sUUFBUSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLElBQUksV0FBVyxDQUFDO0FBQzdGLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsT0FBZ0I7SUFDOUMsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxRSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7SUFDcEMsQ0FBQztTQUFNLElBQUksT0FBTyxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM1QyxZQUFZLENBQ1YsYUFBYSxPQUFPLHdEQUF3RDtZQUM1RSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxhQUFhLG9CQUFvQixDQUM1RixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi9vdXRwdXQtdXRpbHMuanMnO1xuXG4vKipcbiAqIFJlc29sdmUgdGhlIEFXUyByZWdpb24gZm9yIGFuIFNESy9DTEkgY2FsbDogZXhwbGljaXQgYC0tcmVnaW9uYCBvdmVycmlkZSDihpJcbiAqIGBBV1NfUkVHSU9OYCDihpIgYENES19ERUZBVUxUX1JFR0lPTmAg4oaSIGB1cy1lYXN0LTFgLiBTaW5nbGUgc291cmNlIGZvciB0aGVcbiAqIGZhbGxiYWNrIHRoYXQgd2FzIHByZXZpb3VzbHkgY29weS1wYXN0ZWQgYWNyb3NzIGV2ZXJ5IEFXUyBjb21tYW5kIGFuZCB0aGVcbiAqIHNlY3JldHMgY2xpZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUF3c1JlZ2lvbihvdmVycmlkZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBvdmVycmlkZSB8fCBwcm9jZXNzLmVudi5BV1NfUkVHSU9OIHx8IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTiB8fCAndXMtZWFzdC0xJztcbn1cblxuLyoqXG4gKiBBcHBseSBhIGAtLXByb2ZpbGVgIHRvIHRoZSBlbnZpcm9ubWVudCBzbyB0aGUgQVdTIFNESydzIGRlZmF1bHQgcHJvdmlkZXIgY2hhaW5cbiAqICh3aGljaCBldmVyeSBjbGllbnQgd2UgYnVpbGQgd2l0aCBgY3JlZGVudGlhbHNgIHVuc2V0IHJlYWRzKSBzZWxlY3RzIHRoYXQgc2hhcmVkXG4gKiBwcm9maWxlLiAqKkNhbGwgQkVGT1JFIGNvbnN0cnVjdGluZyBhbnkgU0RLIGNsaWVudCoqLCBvciBgLS1wcm9maWxlYCBpcyBzaWxlbnRseVxuICogZHJvcHBlZCBhbmQgdGhlIGNsaWVudCBoaXRzIHRoZSBkZWZhdWx0IGFjY291bnQg4oCUIGEgc2lsZW50IHNwbGl0LWJyYWluIHdoZW4gdGhlXG4gKiBhY2NvbXBhbnlpbmcgQ0xJL2BjZGtgIGNhbGwgKmRpZCogaG9ub3IgYC0tcHJvZmlsZWAuXG4gKlxuICogUHJlY2VkZW5jZTogYW1iaWVudCBlbnYgY3JlZGVudGlhbHMgKGBBV1NfQUNDRVNTX0tFWV9JRGApIGFuZCBhbiBpbmhlcml0ZWRcbiAqIGBBV1NfUFJPRklMRWAgYWx3YXlzIHdpbiDigJQgd2UgbmV2ZXIgY2xvYmJlciB0aGUgY2FsbGVyJ3MgZW52aXJvbm1lbnQuIEFuXG4gKiBleHBsaWNpdCBub24tZGVmYXVsdCBgLS1wcm9maWxlYCB0aGF0J3Mgb3ZlcnJpZGRlbiBieSBhbWJpZW50IGNyZWRzIGlzIHN1cmZhY2VkXG4gKiBhcyBhIHdhcm5pbmcgc28gYSBzaWxlbnRseS1pZ25vcmVkIGZsYWcgaXNuJ3QgYSBzdXJwcmlzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5QXdzUHJvZmlsZShwcm9maWxlPzogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChwcm9maWxlICYmICFwcm9jZXNzLmVudi5BV1NfQUNDRVNTX0tFWV9JRCAmJiAhcHJvY2Vzcy5lbnYuQVdTX1BST0ZJTEUpIHtcbiAgICBwcm9jZXNzLmVudi5BV1NfUFJPRklMRSA9IHByb2ZpbGU7XG4gIH0gZWxzZSBpZiAocHJvZmlsZSAmJiBwcm9maWxlICE9PSAnZGVmYXVsdCcpIHtcbiAgICBwcmludFdhcm5pbmcoXG4gICAgICBgLS1wcm9maWxlICR7cHJvZmlsZX0gaWdub3JlZDogZXhpc3RpbmcgQVdTIGNyZWRlbnRpYWxzIGluIHRoZSBlbnZpcm9ubWVudCBgICtcbiAgICAgIGAoJHtwcm9jZXNzLmVudi5BV1NfQUNDRVNTX0tFWV9JRCA/ICdBV1NfQUNDRVNTX0tFWV9JRCcgOiAnQVdTX1BST0ZJTEUnfSkgdGFrZSBwcmVjZWRlbmNlLmAsXG4gICAgKTtcbiAgfVxufVxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVudi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hd3MtZW52LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsUUFBaUI7SUFDaEQsT0FBTyxRQUFRLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxXQUFXLENBQUM7QUFDN0YsQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxPQUFnQjtJQUM5QyxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztJQUNwQyxDQUFDO1NBQU0sSUFBSSxPQUFPLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzVDLFlBQVksQ0FDVixhQUFhLE9BQU8sd0RBQXdEO1lBQzVFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLGFBQWEsb0JBQW9CLENBQzVGLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBwcmludFdhcm5pbmcgfSBmcm9tICcuL291dHB1dC11dGlscy5qcyc7XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgQVdTIHJlZ2lvbiBmb3IgYW4gU0RLL0NMSSBjYWxsOiBleHBsaWNpdCBgLS1yZWdpb25gIG92ZXJyaWRlIOKGklxuICogYEFXU19SRUdJT05gIOKGkiBgQ0RLX0RFRkFVTFRfUkVHSU9OYCDihpIgYHVzLWVhc3QtMWAuIFNpbmdsZSBzb3VyY2UgZm9yIHRoZVxuICogZmFsbGJhY2sgdXNlZCBieSBldmVyeSBBV1MgY29tbWFuZCBhbmQgdGhlIHNlY3JldHMgY2xpZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUF3c1JlZ2lvbihvdmVycmlkZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBvdmVycmlkZSB8fCBwcm9jZXNzLmVudi5BV1NfUkVHSU9OIHx8IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTiB8fCAndXMtZWFzdC0xJztcbn1cblxuLyoqXG4gKiBBcHBseSBhIGAtLXByb2ZpbGVgIHRvIHRoZSBlbnZpcm9ubWVudCBzbyB0aGUgQVdTIFNESydzIGRlZmF1bHQgcHJvdmlkZXIgY2hhaW5cbiAqICh3aGljaCBldmVyeSBjbGllbnQgd2UgYnVpbGQgd2l0aCBgY3JlZGVudGlhbHNgIHVuc2V0IHJlYWRzKSBzZWxlY3RzIHRoYXQgc2hhcmVkXG4gKiBwcm9maWxlLiAqKkNhbGwgQkVGT1JFIGNvbnN0cnVjdGluZyBhbnkgU0RLIGNsaWVudCoqLCBvciBgLS1wcm9maWxlYCBpcyBzaWxlbnRseVxuICogZHJvcHBlZCBhbmQgdGhlIGNsaWVudCBoaXRzIHRoZSBkZWZhdWx0IGFjY291bnQg4oCUIGEgc2lsZW50IHNwbGl0LWJyYWluIHdoZW4gdGhlXG4gKiBhY2NvbXBhbnlpbmcgQ0xJL2BjZGtgIGNhbGwgKmRpZCogaG9ub3IgYC0tcHJvZmlsZWAuXG4gKlxuICogUHJlY2VkZW5jZTogYW1iaWVudCBlbnYgY3JlZGVudGlhbHMgKGBBV1NfQUNDRVNTX0tFWV9JRGApIGFuZCBhbiBpbmhlcml0ZWRcbiAqIGBBV1NfUFJPRklMRWAgYWx3YXlzIHdpbiDigJQgd2UgbmV2ZXIgY2xvYmJlciB0aGUgY2FsbGVyJ3MgZW52aXJvbm1lbnQuIEFuXG4gKiBleHBsaWNpdCBub24tZGVmYXVsdCBgLS1wcm9maWxlYCB0aGF0J3Mgb3ZlcnJpZGRlbiBieSBhbWJpZW50IGNyZWRzIGlzIHN1cmZhY2VkXG4gKiBhcyBhIHdhcm5pbmcgc28gYSBzaWxlbnRseS1pZ25vcmVkIGZsYWcgaXNuJ3QgYSBzdXJwcmlzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5QXdzUHJvZmlsZShwcm9maWxlPzogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChwcm9maWxlICYmICFwcm9jZXNzLmVudi5BV1NfQUNDRVNTX0tFWV9JRCAmJiAhcHJvY2Vzcy5lbnYuQVdTX1BST0ZJTEUpIHtcbiAgICBwcm9jZXNzLmVudi5BV1NfUFJPRklMRSA9IHByb2ZpbGU7XG4gIH0gZWxzZSBpZiAocHJvZmlsZSAmJiBwcm9maWxlICE9PSAnZGVmYXVsdCcpIHtcbiAgICBwcmludFdhcm5pbmcoXG4gICAgICBgLS1wcm9maWxlICR7cHJvZmlsZX0gaWdub3JlZDogZXhpc3RpbmcgQVdTIGNyZWRlbnRpYWxzIGluIHRoZSBlbnZpcm9ubWVudCBgICtcbiAgICAgIGAoJHtwcm9jZXNzLmVudi5BV1NfQUNDRVNTX0tFWV9JRCA/ICdBV1NfQUNDRVNTX0tFWV9JRCcgOiAnQVdTX1BST0ZJTEUnfSkgdGFrZSBwcmVjZWRlbmNlLmAsXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,26 @@
1
+ import { type DetectedField, type PluginCatalogEdits, type PluginCatalogField } from '@pipeline-builder/api-core';
2
+ /** Asks one question, returns the answer (trimmed by the caller). */
3
+ export type Ask = (question: string) => Promise<string>;
4
+ /** Read and validate a `--metadata` edits file (YAML or JSON). */
5
+ export declare function readMetadataFile(file: string): PluginCatalogEdits;
6
+ /** Turn a typed answer into a field value (before validation). */
7
+ export declare function parseTypedValue(field: PluginCatalogField, text: string, cwd?: string): unknown;
8
+ /** One line describing a detected field for the prompt. */
9
+ export declare function describeDetected(d: DetectedField): string;
10
+ /**
11
+ * Walk every field: Enter/`a` accepts, `e` edits (validated, re-asked on a bad
12
+ * value), `c` clears. Returns only the fields the author changed.
13
+ */
14
+ export declare function promptCatalogEdits(detected: DetectedField[], ask: Ask): Promise<PluginCatalogEdits>;
15
+ /**
16
+ * Resolve the author's edits, non-interactively when asked: `--metadata` edits
17
+ * (every other detected value accepted) or `--yes` (everything detected
18
+ * accepted); otherwise the interactive prompt. Without a terminal, `--yes` or
19
+ * `--metadata` is required — nothing is accepted silently.
20
+ */
21
+ export declare function collectCatalogEdits(detected: DetectedField[], opts: {
22
+ yes?: boolean;
23
+ metadataFile?: string;
24
+ ask?: Ask;
25
+ }): Promise<PluginCatalogEdits>;
26
+ //# sourceMappingURL=catalog-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-prompt.d.ts","sourceRoot":"","sources":["../../src/utils/catalog-prompt.ts"],"names":[],"mappings":"AAaA,OAAO,EAEL,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EACrE,MAAM,4BAA4B,CAAC;AAQpC,qEAAqE;AACrE,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAExD,kEAAkE;AAClE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAYjE;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,SAAgB,GAAG,OAAO,CAYrG;AAED,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAKzD;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA2BzG;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,aAAa,EAAE,EACzB,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAA;CAAE,GACxD,OAAO,CAAC,kBAAkB,CAAC,CAO7B"}