@pipeline-builder/pipeline-manager 3.4.70 → 3.4.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +43 -2
  2. package/dist/agent/ai.d.ts +55 -0
  3. package/dist/agent/ai.d.ts.map +1 -0
  4. package/dist/agent/ai.js +130 -0
  5. package/dist/agent/bootstrap.d.ts +54 -0
  6. package/dist/agent/bootstrap.d.ts.map +1 -0
  7. package/dist/agent/bootstrap.js +76 -0
  8. package/dist/agent/executor.d.ts +27 -0
  9. package/dist/agent/executor.d.ts.map +1 -0
  10. package/dist/agent/executor.js +57 -0
  11. package/dist/agent/health.d.ts +22 -0
  12. package/dist/agent/health.d.ts.map +1 -0
  13. package/dist/agent/health.js +55 -0
  14. package/dist/agent/post-steps.d.ts +55 -0
  15. package/dist/agent/post-steps.d.ts.map +1 -0
  16. package/dist/agent/post-steps.js +73 -0
  17. package/dist/agent/prereqs.d.ts +25 -0
  18. package/dist/agent/prereqs.d.ts.map +1 -0
  19. package/dist/agent/prereqs.js +100 -0
  20. package/dist/agent/targets.d.ts +122 -0
  21. package/dist/agent/targets.d.ts.map +1 -0
  22. package/dist/agent/targets.js +180 -0
  23. package/dist/agent/troubleshoot.d.ts +30 -0
  24. package/dist/agent/troubleshoot.d.ts.map +1 -0
  25. package/dist/agent/troubleshoot.js +87 -0
  26. package/dist/boilerplate.js +8 -13
  27. package/dist/cli.d.ts.map +1 -1
  28. package/dist/cli.js +123 -118
  29. package/dist/commands/audit-stacks.js +22 -24
  30. package/dist/commands/audit-tokens.js +25 -27
  31. package/dist/commands/bootstrap.js +29 -37
  32. package/dist/commands/create-pipeline.js +55 -92
  33. package/dist/commands/deploy.d.ts.map +1 -1
  34. package/dist/commands/deploy.js +58 -62
  35. package/dist/commands/get-pipeline.js +24 -28
  36. package/dist/commands/get-plugin.js +24 -28
  37. package/dist/commands/list-pipelines.js +30 -31
  38. package/dist/commands/list-plugins.js +32 -33
  39. package/dist/commands/login.js +44 -49
  40. package/dist/commands/org-export.js +22 -60
  41. package/dist/commands/provision.d.ts +13 -0
  42. package/dist/commands/provision.d.ts.map +1 -0
  43. package/dist/commands/provision.js +489 -0
  44. package/dist/commands/register.js +29 -30
  45. package/dist/commands/setup-events.d.ts.map +1 -1
  46. package/dist/commands/setup-events.js +42 -77
  47. package/dist/commands/status.js +20 -25
  48. package/dist/commands/store-token.js +44 -82
  49. package/dist/commands/synth.d.ts.map +1 -1
  50. package/dist/commands/synth.js +36 -35
  51. package/dist/commands/upload-plugin.js +59 -96
  52. package/dist/commands/validate-templates.d.ts.map +1 -1
  53. package/dist/commands/validate-templates.js +23 -29
  54. package/dist/commands/version.js +42 -47
  55. package/dist/config/cli.constants.d.ts.map +1 -1
  56. package/dist/config/cli.constants.js +24 -31
  57. package/dist/types/config.js +2 -3
  58. package/dist/types/error.js +3 -7
  59. package/dist/types/index.d.ts +4 -4
  60. package/dist/types/index.d.ts.map +1 -1
  61. package/dist/types/index.js +5 -21
  62. package/dist/types/pipeline.js +2 -3
  63. package/dist/types/plugin.js +2 -3
  64. package/dist/utils/api-client.d.ts +1 -1
  65. package/dist/utils/api-client.d.ts.map +1 -1
  66. package/dist/utils/api-client.js +23 -28
  67. package/dist/utils/audit-log.js +16 -22
  68. package/dist/utils/auth-guard.js +2 -5
  69. package/dist/utils/aws-secrets.js +17 -23
  70. package/dist/utils/banner.js +16 -23
  71. package/dist/utils/cdk-utils.js +14 -24
  72. package/dist/utils/command-utils.d.ts +1 -1
  73. package/dist/utils/command-utils.d.ts.map +1 -1
  74. package/dist/utils/command-utils.js +32 -44
  75. package/dist/utils/config-loader.d.ts +1 -1
  76. package/dist/utils/config-loader.d.ts.map +1 -1
  77. package/dist/utils/config-loader.js +24 -58
  78. package/dist/utils/error-handler.d.ts +1 -1
  79. package/dist/utils/error-handler.d.ts.map +1 -1
  80. package/dist/utils/error-handler.js +16 -24
  81. package/dist/utils/list-command-utils.js +15 -20
  82. package/dist/utils/output-utils.d.ts +1 -1
  83. package/dist/utils/output-utils.d.ts.map +1 -1
  84. package/dist/utils/output-utils.js +35 -55
  85. package/dist/utils/plugin-resolver.d.ts +1 -1
  86. package/dist/utils/plugin-resolver.d.ts.map +1 -1
  87. package/dist/utils/plugin-resolver.js +6 -8
  88. package/dist/utils/rate-limiter.js +11 -19
  89. package/dist/utils/registry.js +16 -22
  90. package/package.json +26 -17
@@ -0,0 +1,180 @@
1
+ // Copyright 2026 Pipeline Builder Contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ // --- Shared input specs -----------------------------------------------------
4
+ const DOMAIN = { flag: 'domain', key: 'domain', description: 'Fully-qualified domain name (ALB ACM cert + SES DKIM)' };
5
+ const HOSTED_ZONE = { flag: 'hosted-zone-id', key: 'hostedZoneId', description: 'Public Route 53 hosted zone ID authoritative for the domain' };
6
+ const GHCR_TOKEN = { flag: 'ghcr-token', key: 'ghcrToken', description: 'GitHub PAT with read:packages (avoids ghcr.io anonymous rate limits)', secret: true };
7
+ const REGION = { flag: 'region', key: 'region', description: 'AWS region' };
8
+ const DEPLOY_MODE = { flag: 'deploy-mode', key: 'deployMode', description: 'public (internet-facing ALB) or private (internal, default)' };
9
+ const KEY_PAIR = { flag: 'key-pair', key: 'keyPair', description: 'EC2 key pair in the region (break-glass serial console; routine access is SSM)' };
10
+ const INSTANCE_TYPE = { flag: 'instance-type', key: 'instanceType', description: 'EC2 instance type (default t3.2xlarge)' };
11
+ // SES / email family — shared by ec2 + fargate. SES is provisioned BY DEFAULT
12
+ // on AWS deploys; `--no-email` is the opt-out (`--email` is a harmless no-op kept
13
+ // for back-compat).
14
+ const EMAIL = [
15
+ { flag: 'email', key: 'email', description: 'Enable SES transactional email (on by default for AWS)', boolean: true },
16
+ { flag: 'no-email', key: 'noEmail', description: 'Skip SES (transactional email is provisioned by default)', boolean: true },
17
+ { flag: 'email-from', key: 'emailFrom', description: 'From address (default noreply@<domain>)' },
18
+ { flag: 'email-from-name', key: 'emailFromName', description: 'Display name on outbound email' },
19
+ { flag: 'alert-email', key: 'alertEmail', description: 'Subscribe an address to the bounce/complaint SNS topic' },
20
+ { flag: 'no-create-ses-identity', key: 'noCreateSesIdentity', description: 'Skip SES identity creation (domain already verified)', boolean: true },
21
+ ];
22
+ // --- Targets ----------------------------------------------------------------
23
+ export const TARGETS = {
24
+ local: {
25
+ id: 'local',
26
+ label: 'Local (Docker Compose)',
27
+ dir: 'deploy/local',
28
+ entrypoint: 'bin/setup.sh',
29
+ sparsePaths: ['deploy/local'],
30
+ required: [],
31
+ optional: [],
32
+ postDeploy: './deploy/bin/init-platform.sh local',
33
+ cost: 'Free',
34
+ bestFor: 'Development',
35
+ destroys: 'stops all containers — data under deploy/local/data persists on disk (delete it manually for a clean slate)',
36
+ },
37
+ minikube: {
38
+ id: 'minikube',
39
+ label: 'Minikube (local Kubernetes)',
40
+ dir: 'deploy/minikube',
41
+ entrypoint: 'bin/setup.sh',
42
+ sparsePaths: ['deploy/minikube'],
43
+ required: [],
44
+ optional: [],
45
+ postDeploy: './deploy/bin/init-platform.sh minikube',
46
+ cost: 'Free',
47
+ bestFor: 'Local Kubernetes',
48
+ destroys: 'stops the minikube stack — persistent volumes (PVC data) remain until the cluster is deleted',
49
+ },
50
+ ec2: {
51
+ id: 'ec2',
52
+ label: 'AWS EC2 (single Minikube instance behind an ALB)',
53
+ dir: 'deploy/aws/ec2',
54
+ entrypoint: 'bin/setup.sh',
55
+ sparsePaths: ['deploy/aws/ec2'],
56
+ required: [KEY_PAIR, DOMAIN, HOSTED_ZONE],
57
+ optional: [REGION, DEPLOY_MODE, GHCR_TOKEN, INSTANCE_TYPE, ...EMAIL],
58
+ postDeploy: './deploy/bin/init-platform.sh ec2 # from inside the VPC (SSM)',
59
+ cost: '~$140-265/mo',
60
+ bestFor: 'Dev / staging',
61
+ destroys: 'DELETES the CloudFormation stack: the VPC, EC2 instance, and its EBS data volume (databases, registry, plugin builds). Irreversible.',
62
+ },
63
+ fargate: {
64
+ id: 'fargate',
65
+ label: 'AWS Fargate (serverless ECS, 6 CloudFormation stacks)',
66
+ dir: 'deploy/aws/fargate',
67
+ entrypoint: 'bin/setup.sh',
68
+ sparsePaths: ['deploy/aws/fargate'],
69
+ required: [DOMAIN, HOSTED_ZONE],
70
+ optional: [REGION, DEPLOY_MODE, GHCR_TOKEN, ...EMAIL],
71
+ postDeploy: './deploy/bin/init-platform.sh fargate # from a VPC-attached host',
72
+ cost: '~$100-300/mo',
73
+ bestFor: 'Production',
74
+ destroys: 'DELETES all pb-* CloudFormation stacks: EFS data, databases, and registry. Secrets Manager entries are NOT auto-deleted. Irreversible.',
75
+ },
76
+ };
77
+ export const TARGET_IDS = ['local', 'minikube', 'ec2', 'fargate'];
78
+ export function isTargetId(value) {
79
+ return typeof value === 'string' && TARGET_IDS.includes(value);
80
+ }
81
+ // --- Sparse bootstrap paths -------------------------------------------------
82
+ /**
83
+ * Folders every `--repo` bootstrap needs regardless of target: the orchestration
84
+ * scripts. Each target's setup.sh + init-platform.sh live in / drive these.
85
+ * Deliberately minimal — heavier folders (plugins/compliance/samples) are pulled
86
+ * in only when their post-install option is selected (see LOAD_STEPS).
87
+ */
88
+ export const COMMON_SPARSE_PATHS = ['deploy/bin'];
89
+ /**
90
+ * Opt-in post-install load steps. Each maps a provision `--with-*` flag to the
91
+ * init-platform env var that enables it AND the repo folder(s) it reads — so the
92
+ * sparse checkout grows exactly with the selected options.
93
+ */
94
+ export const LOAD_STEPS = [
95
+ // The plugin build reads deploy/plugins/_base AND deploy/codebuild/bootstrap.
96
+ { id: 'plugins', flag: 'withPlugins', env: 'LOAD_PLUGINS', paths: ['deploy/plugins', 'deploy/codebuild'] },
97
+ { id: 'compliance', flag: 'withCompliance', env: 'LOAD_COMPLIANCE', paths: ['deploy/compliance'] },
98
+ { id: 'samples', flag: 'withSamples', env: 'LOAD_PIPELINES', paths: ['deploy/samples'] },
99
+ ];
100
+ /**
101
+ * The de-duplicated set of sparse paths for a target plus the enabled load
102
+ * steps: common base ∪ target folder(s) ∪ each enabled step's folder(s).
103
+ */
104
+ export function sparsePathsFor(target, enabledLoadIds) {
105
+ const paths = new Set(COMMON_SPARSE_PATHS);
106
+ for (const p of TARGETS[target].sparsePaths)
107
+ paths.add(p);
108
+ for (const step of LOAD_STEPS) {
109
+ if (enabledLoadIds.includes(step.id))
110
+ for (const p of step.paths)
111
+ paths.add(p);
112
+ }
113
+ return [...paths];
114
+ }
115
+ /**
116
+ * Assemble the deploy command for a target from the provided params. Pure and
117
+ * deterministic — no shell, no LLM. Missing required inputs are reported (never
118
+ * guessed). By default secrets are masked (`***`) for DISPLAY; pass `mask: false`
119
+ * to build the real command for EXECUTION — that string must never be logged or
120
+ * shown to the model.
121
+ */
122
+ export function assembleCommand(target, params, opts = {}) {
123
+ const mask = opts.mask ?? true;
124
+ const provided = (spec) => {
125
+ const v = params[spec.key];
126
+ return v !== undefined && v !== '' && v !== false;
127
+ };
128
+ const missing = target.required.filter((spec) => !provided(spec));
129
+ const parts = [`cd ${target.dir} && bash ${target.entrypoint}`];
130
+ for (const spec of [...target.required, ...target.optional]) {
131
+ if (!provided(spec))
132
+ continue;
133
+ if (spec.boolean) {
134
+ parts.push(`--${spec.flag}`);
135
+ continue;
136
+ }
137
+ const value = spec.secret && mask ? '***' : String(params[spec.key]);
138
+ parts.push(`--${spec.flag} ${value}`);
139
+ }
140
+ return { command: parts.join(' \\\n '), missing };
141
+ }
142
+ /** CloudFormation stack name the EC2 setup.sh defaults to. */
143
+ const DEFAULT_EC2_STACK = 'pipeline-builder';
144
+ /** Stack prefix the Fargate teardown.sh defaults to. */
145
+ const DEFAULT_FARGATE_PREFIX = 'pb';
146
+ /**
147
+ * Assemble the teardown command for a target. Pure and deterministic — mirrors
148
+ * `assembleCommand` for the destroy path. local/minikube STOP the stack
149
+ * (non-destructive — on-disk / PVC data survives); ec2/fargate DELETE their
150
+ * CloudFormation stacks and are irreversible. For Fargate, `assumeYes` forwards
151
+ * the native script's own `--yes` (the agent runs its own typed confirmation
152
+ * first, so the script must not also block on stdin); EC2 `delete-stack` has no
153
+ * native prompt, which is exactly why the agent gate is mandatory there.
154
+ */
155
+ export function teardownCommand(target, opts = {}) {
156
+ const region = opts.region || process.env.AWS_REGION || 'us-east-1';
157
+ switch (target) {
158
+ case 'local':
159
+ return { command: 'cd deploy/local && bash bin/shutdown.sh', destructive: false };
160
+ case 'minikube':
161
+ return { command: 'cd deploy/minikube && bash bin/shutdown.sh', destructive: false };
162
+ case 'ec2': {
163
+ const stack = opts.stackName || DEFAULT_EC2_STACK;
164
+ return {
165
+ command: `aws cloudformation delete-stack --stack-name ${stack} --region ${region} && ` +
166
+ `aws cloudformation wait stack-delete-complete --stack-name ${stack} --region ${region}`,
167
+ destructive: true,
168
+ };
169
+ }
170
+ case 'fargate': {
171
+ const prefix = opts.stackName || DEFAULT_FARGATE_PREFIX;
172
+ return {
173
+ command: `cd deploy/aws/fargate && bash bin/teardown.sh --stack-prefix ${prefix} --region ${region}` +
174
+ (opts.assumeYes ? ' --yes' : ''),
175
+ destructive: true,
176
+ };
177
+ }
178
+ }
179
+ }
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZ2VudC90YXJnZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFzRHRDLCtFQUErRTtBQUUvRSxNQUFNLE1BQU0sR0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsdURBQXVELEVBQUUsQ0FBQztBQUNsSSxNQUFNLFdBQVcsR0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSw2REFBNkQsRUFBRSxDQUFDO0FBQzNKLE1BQU0sVUFBVSxHQUFjLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxzRUFBc0UsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDMUssTUFBTSxNQUFNLEdBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxDQUFDO0FBQ3ZGLE1BQU0sV0FBVyxHQUFjLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSw2REFBNkQsRUFBRSxDQUFDO0FBQ3RKLE1BQU0sUUFBUSxHQUFjLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxnRkFBZ0YsRUFBRSxDQUFDO0FBQ2hLLE1BQU0sYUFBYSxHQUFjLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSx3Q0FBd0MsRUFBRSxDQUFDO0FBRXZJLDhFQUE4RTtBQUM5RSxrRkFBa0Y7QUFDbEYsb0JBQW9CO0FBQ3BCLE1BQU0sS0FBSyxHQUF5QjtJQUNsQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsd0RBQXdELEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtJQUNySCxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsMERBQTBELEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtJQUM1SCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUseUNBQXlDLEVBQUU7SUFDaEcsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsZ0NBQWdDLEVBQUU7SUFDaEcsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLHdEQUF3RCxFQUFFO0lBQ2pILEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsc0RBQXNELEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtDQUNuSixDQUFDO0FBRUYsK0VBQStFO0FBRS9FLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBMkM7SUFDN0QsS0FBSyxFQUFFO1FBQ0wsRUFBRSxFQUFFLE9BQU87UUFDWCxLQUFLLEVBQUUsd0JBQXdCO1FBQy9CLEdBQUcsRUFBRSxjQUFjO1FBQ25CLFVBQVUsRUFBRSxjQUFjO1FBQzFCLFdBQVcsRUFBRSxDQUFDLGNBQWMsQ0FBQztRQUM3QixRQUFRLEVBQUUsRUFBRTtRQUNaLFFBQVEsRUFBRSxFQUFFO1FBQ1osVUFBVSxFQUFFLHFDQUFxQztRQUNqRCxJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxhQUFhO1FBQ3RCLFFBQVEsRUFBRSw2R0FBNkc7S0FDeEg7SUFDRCxRQUFRLEVBQUU7UUFDUixFQUFFLEVBQUUsVUFBVTtRQUNkLEtBQUssRUFBRSw2QkFBNkI7UUFDcEMsR0FBRyxFQUFFLGlCQUFpQjtRQUN0QixVQUFVLEVBQUUsY0FBYztRQUMxQixXQUFXLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztRQUNoQyxRQUFRLEVBQUUsRUFBRTtRQUNaLFFBQVEsRUFBRSxFQUFFO1FBQ1osVUFBVSxFQUFFLHdDQUF3QztRQUNwRCxJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxrQkFBa0I7UUFDM0IsUUFBUSxFQUFFLDhGQUE4RjtLQUN6RztJQUNELEdBQUcsRUFBRTtRQUNILEVBQUUsRUFBRSxLQUFLO1FBQ1QsS0FBSyxFQUFFLGtEQUFrRDtRQUN6RCxHQUFHLEVBQUUsZ0JBQWdCO1FBQ3JCLFVBQVUsRUFBRSxjQUFjO1FBQzFCLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDO1FBQ3pDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNwRSxVQUFVLEVBQUUsZ0VBQWdFO1FBQzVFLElBQUksRUFBRSxjQUFjO1FBQ3BCLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLFFBQVEsRUFBRSxzSUFBc0k7S0FDako7SUFDRCxPQUFPLEVBQUU7UUFDUCxFQUFFLEVBQUUsU0FBUztRQUNiLEtBQUssRUFBRSx1REFBdUQ7UUFDOUQsR0FBRyxFQUFFLG9CQUFvQjtRQUN6QixVQUFVLEVBQUUsY0FBYztRQUMxQixXQUFXLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztRQUNuQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO1FBQy9CLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ3JELFVBQVUsRUFBRSxtRUFBbUU7UUFDL0UsSUFBSSxFQUFFLGNBQWM7UUFDcEIsT0FBTyxFQUFFLFlBQVk7UUFDckIsUUFBUSxFQUFFLHdJQUF3STtLQUNuSjtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQXdCLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFdkYsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFjO0lBQ3ZDLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFLLFVBQWdDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hGLENBQUM7QUFFRCwrRUFBK0U7QUFFL0U7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBc0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUVyRTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLDhFQUE4RTtJQUM5RSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLGdCQUFnQixFQUFFLGtCQUFrQixDQUFDLEVBQUU7SUFDMUcsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsbUJBQW1CLENBQUMsRUFBRTtJQUNsRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtDQUNoRixDQUFDO0FBSVg7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFnQixFQUFFLGNBQWlDO0lBQ2hGLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFTLG1CQUFtQixDQUFDLENBQUM7SUFDbkQsS0FBSyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVztRQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsS0FBSyxNQUFNLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM5QixJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUFFLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUs7Z0JBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDcEIsQ0FBQztBQVNEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQzdCLE1BQWtCLEVBQ2xCLE1BQStCLEVBQy9CLE9BQTJCLEVBQUU7SUFFN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7SUFDL0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFlLEVBQVcsRUFBRTtRQUM1QyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUM7SUFDcEQsQ0FBQyxDQUFDO0lBRUYsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFbEUsTUFBTSxLQUFLLEdBQWEsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxHQUFHLFlBQVksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDMUUsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQUUsU0FBUztRQUM5QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDN0IsU0FBUztRQUNYLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUNyRCxDQUFDO0FBU0QsOERBQThEO0FBQzlELE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBQUM7QUFDN0Msd0RBQXdEO0FBQ3hELE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0FBRXBDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsTUFBZ0IsRUFDaEIsT0FBcUUsRUFBRTtJQUV2RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLFdBQVcsQ0FBQztJQUNwRSxRQUFRLE1BQU0sRUFBRSxDQUFDO1FBQ2YsS0FBSyxPQUFPO1lBQ1YsT0FBTyxFQUFFLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDcEYsS0FBSyxVQUFVO1lBQ2IsT0FBTyxFQUFFLE9BQU8sRUFBRSw0Q0FBNEMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDdkYsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ1gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxpQkFBaUIsQ0FBQztZQUNsRCxPQUFPO2dCQUNMLE9BQU8sRUFDTCxnREFBZ0QsS0FBSyxhQUFhLE1BQU0sTUFBTTtvQkFDOUUsOERBQThELEtBQUssYUFBYSxNQUFNLEVBQUU7Z0JBQzFGLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUM7UUFDSixDQUFDO1FBQ0QsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxzQkFBc0IsQ0FBQztZQUN4RCxPQUFPO2dCQUNMLE9BQU8sRUFDTCxnRUFBZ0UsTUFBTSxhQUFhLE1BQU0sRUFBRTtvQkFDM0YsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsV0FBVyxFQUFFLElBQUk7YUFDbEIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIERldGVybWluaXN0aWMgcmVnaXN0cnkgb2YgcGxhdGZvcm0gZGVwbG95IHRhcmdldHMg4oCUIHRoZSBzb3VyY2Ugb2YgdHJ1dGggdGhlXG4gKiBgcHJvdmlzaW9uYCBhZHZpc29yIHVzZXMgdG8gYXNzZW1ibGUgdGhlIEVYQUNUIGRlcGxveSBjb21tYW5kLiBUaGUgYWdlbnQgaXMgYVxuICogdGhpbiB3cmFwcGVyIG92ZXIgdGhlIGV4aXN0aW5nIGRlcGxveSBzY3JpcHRzOyBpdCBuZXZlciByZWltcGxlbWVudHNcbiAqIGRlcGxveW1lbnQsIG9ubHkgdmFsaWRhdGVzIGlucHV0cyBhbmQgYXNzZW1ibGVzIHRoZSBjb21tYW5kIHRvIHJ1bi5cbiAqXG4gKiBLZWVwIHRoaXMgaW4gbG9jay1zdGVwIHdpdGggdGhlIGZsYWdzIHRoZSBzY3JpcHRzIGFjY2VwdCDigJQgZXZlcnkgdGFyZ2V0J3NcbiAqIG9wZXJhdG9yIGVudHJ5cG9pbnQgaXMgYGJpbi9zZXR1cC5zaGAgKGRlcGxveS88dGFyZ2V0Pi9iaW4vc2V0dXAuc2gpLlxuICovXG5cbmV4cG9ydCB0eXBlIFRhcmdldElkID0gJ2xvY2FsJyB8ICdtaW5pa3ViZScgfCAnZWMyJyB8ICdmYXJnYXRlJztcblxuLyoqIEEgc2luZ2xlIGlucHV0IHRoZSB1bmRlcmx5aW5nIGRlcGxveSBzY3JpcHQgYWNjZXB0cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRTcGVjIHtcbiAgLyoqIEZsYWcgbmFtZSBwYXNzZWQgdG8gdGhlIHNjcmlwdCAod2l0aG91dCB0aGUgbGVhZGluZyBgLS1gKS4gKi9cbiAgcmVhZG9ubHkgZmxhZzogc3RyaW5nO1xuICAvKiogS2V5IG9uIHRoZSBwcm92aXNpb24gcGFyYW1zIG9iamVjdC4gKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gIC8qKiBIdW1hbiBkZXNjcmlwdGlvbiDigJQgc2hvd24gd2hlbiBhIHJlcXVpcmVkIGlucHV0IGlzIG1pc3NpbmcuICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKiBTZWNyZXQg4oCUIG5ldmVyIHByaW50ZWQgaW4gdGhlIGFzc2VtYmxlZCBjb21tYW5kIChtYXNrZWQgYXMgYCoqKmApLiAqL1xuICByZWFkb25seSBzZWNyZXQ/OiBib29sZWFuO1xuICAvKiogQm9vbGVhbiBmbGFnIHdpdGggbm8gdmFsdWUgKGUuZy4gYC0tZW1haWxgKS4gKi9cbiAgcmVhZG9ubHkgYm9vbGVhbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0U3BlYyB7XG4gIHJlYWRvbmx5IGlkOiBUYXJnZXRJZDtcbiAgcmVhZG9ubHkgbGFiZWw6IHN0cmluZztcbiAgLyoqIERpcmVjdG9yeSB0aGUgZW50cnlwb2ludCBydW5zIGZyb20gKHJlbGF0aXZlIHRvIHJlcG8gcm9vdCkuICovXG4gIHJlYWRvbmx5IGRpcjogc3RyaW5nO1xuICAvKiogRW50cnlwb2ludCBzY3JpcHQgKHJlbGF0aXZlIHRvIGBkaXJgKS4gKi9cbiAgcmVhZG9ubHkgZW50cnlwb2ludDogc3RyaW5nO1xuICAvKiogSW5wdXRzIHRoZSBzY3JpcHQgUkVRVUlSRVMg4oCUIHRoZSBhZHZpc29yIHJlcG9ydHMgYW55IHRoYXQgYXJlIG1pc3NpbmcuICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkOiByZWFkb25seSBJbnB1dFNwZWNbXTtcbiAgLyoqIE9wdGlvbmFsIGlucHV0cywgcGFzc2VkIHRocm91Z2ggb25seSB3aGVuIHByb3ZpZGVkLiAqL1xuICByZWFkb25seSBvcHRpb25hbDogcmVhZG9ubHkgSW5wdXRTcGVjW107XG4gIC8qKlxuICAgKiBSZXBvIGZvbGRlcihzKSB0aGlzIHRhcmdldCdzIGRlcGxveSBuZWVkcywgZm9yIGEgc3BhcnNlIGAtLXJlcG9gIGJvb3RzdHJhcC5cbiAgICogQ29tYmluZWQgd2l0aCBDT01NT05fU1BBUlNFX1BBVEhTIGFuZCBhbnkgc2VsZWN0ZWQgbG9hZCBzdGVwcycgcGF0aHMuXG4gICAqL1xuICByZWFkb25seSBzcGFyc2VQYXRoczogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBQb3N0LWRlcGxveSBzdGVwIHRvIHN1cmZhY2UgKHJlZ2lzdGVycyBhZG1pbiArIGxvYWRzIHBsdWdpbnMpLiAqL1xuICByZWFkb25seSBwb3N0RGVwbG95Pzogc3RyaW5nO1xuICAvKiogUm91Z2ggbW9udGhseSBjb3N0IChmcm9tIGRvY3MpLiAqL1xuICByZWFkb25seSBjb3N0OiBzdHJpbmc7XG4gIC8qKiBPbmUtbGluZSBcImJlc3QgZm9yXCIuICovXG4gIHJlYWRvbmx5IGJlc3RGb3I6IHN0cmluZztcbiAgLyoqIFdoYXQgYSB0ZWFyZG93biBvZiB0aGlzIHRhcmdldCBkZXN0cm95cyDigJQgc2hvd24gYmVmb3JlIGEgKGdhdGVkKSB0ZWFyZG93bi4gKi9cbiAgcmVhZG9ubHkgZGVzdHJveXM6IHN0cmluZztcbn1cblxuLy8gLS0tIFNoYXJlZCBpbnB1dCBzcGVjcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBET01BSU46IElucHV0U3BlYyA9IHsgZmxhZzogJ2RvbWFpbicsIGtleTogJ2RvbWFpbicsIGRlc2NyaXB0aW9uOiAnRnVsbHktcXVhbGlmaWVkIGRvbWFpbiBuYW1lIChBTEIgQUNNIGNlcnQgKyBTRVMgREtJTSknIH07XG5jb25zdCBIT1NURURfWk9ORTogSW5wdXRTcGVjID0geyBmbGFnOiAnaG9zdGVkLXpvbmUtaWQnLCBrZXk6ICdob3N0ZWRab25lSWQnLCBkZXNjcmlwdGlvbjogJ1B1YmxpYyBSb3V0ZSA1MyBob3N0ZWQgem9uZSBJRCBhdXRob3JpdGF0aXZlIGZvciB0aGUgZG9tYWluJyB9O1xuY29uc3QgR0hDUl9UT0tFTjogSW5wdXRTcGVjID0geyBmbGFnOiAnZ2hjci10b2tlbicsIGtleTogJ2doY3JUb2tlbicsIGRlc2NyaXB0aW9uOiAnR2l0SHViIFBBVCB3aXRoIHJlYWQ6cGFja2FnZXMgKGF2b2lkcyBnaGNyLmlvIGFub255bW91cyByYXRlIGxpbWl0cyknLCBzZWNyZXQ6IHRydWUgfTtcbmNvbnN0IFJFR0lPTjogSW5wdXRTcGVjID0geyBmbGFnOiAncmVnaW9uJywga2V5OiAncmVnaW9uJywgZGVzY3JpcHRpb246ICdBV1MgcmVnaW9uJyB9O1xuY29uc3QgREVQTE9ZX01PREU6IElucHV0U3BlYyA9IHsgZmxhZzogJ2RlcGxveS1tb2RlJywga2V5OiAnZGVwbG95TW9kZScsIGRlc2NyaXB0aW9uOiAncHVibGljIChpbnRlcm5ldC1mYWNpbmcgQUxCKSBvciBwcml2YXRlIChpbnRlcm5hbCwgZGVmYXVsdCknIH07XG5jb25zdCBLRVlfUEFJUjogSW5wdXRTcGVjID0geyBmbGFnOiAna2V5LXBhaXInLCBrZXk6ICdrZXlQYWlyJywgZGVzY3JpcHRpb246ICdFQzIga2V5IHBhaXIgaW4gdGhlIHJlZ2lvbiAoYnJlYWstZ2xhc3Mgc2VyaWFsIGNvbnNvbGU7IHJvdXRpbmUgYWNjZXNzIGlzIFNTTSknIH07XG5jb25zdCBJTlNUQU5DRV9UWVBFOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICdpbnN0YW5jZS10eXBlJywga2V5OiAnaW5zdGFuY2VUeXBlJywgZGVzY3JpcHRpb246ICdFQzIgaW5zdGFuY2UgdHlwZSAoZGVmYXVsdCB0My4yeGxhcmdlKScgfTtcblxuLy8gU0VTIC8gZW1haWwgZmFtaWx5IOKAlCBzaGFyZWQgYnkgZWMyICsgZmFyZ2F0ZS4gU0VTIGlzIHByb3Zpc2lvbmVkIEJZIERFRkFVTFRcbi8vIG9uIEFXUyBkZXBsb3lzOyBgLS1uby1lbWFpbGAgaXMgdGhlIG9wdC1vdXQgKGAtLWVtYWlsYCBpcyBhIGhhcm1sZXNzIG5vLW9wIGtlcHRcbi8vIGZvciBiYWNrLWNvbXBhdCkuXG5jb25zdCBFTUFJTDogcmVhZG9ubHkgSW5wdXRTcGVjW10gPSBbXG4gIHsgZmxhZzogJ2VtYWlsJywga2V5OiAnZW1haWwnLCBkZXNjcmlwdGlvbjogJ0VuYWJsZSBTRVMgdHJhbnNhY3Rpb25hbCBlbWFpbCAob24gYnkgZGVmYXVsdCBmb3IgQVdTKScsIGJvb2xlYW46IHRydWUgfSxcbiAgeyBmbGFnOiAnbm8tZW1haWwnLCBrZXk6ICdub0VtYWlsJywgZGVzY3JpcHRpb246ICdTa2lwIFNFUyAodHJhbnNhY3Rpb25hbCBlbWFpbCBpcyBwcm92aXNpb25lZCBieSBkZWZhdWx0KScsIGJvb2xlYW46IHRydWUgfSxcbiAgeyBmbGFnOiAnZW1haWwtZnJvbScsIGtleTogJ2VtYWlsRnJvbScsIGRlc2NyaXB0aW9uOiAnRnJvbSBhZGRyZXNzIChkZWZhdWx0IG5vcmVwbHlAPGRvbWFpbj4pJyB9LFxuICB7IGZsYWc6ICdlbWFpbC1mcm9tLW5hbWUnLCBrZXk6ICdlbWFpbEZyb21OYW1lJywgZGVzY3JpcHRpb246ICdEaXNwbGF5IG5hbWUgb24gb3V0Ym91bmQgZW1haWwnIH0sXG4gIHsgZmxhZzogJ2FsZXJ0LWVtYWlsJywga2V5OiAnYWxlcnRFbWFpbCcsIGRlc2NyaXB0aW9uOiAnU3Vic2NyaWJlIGFuIGFkZHJlc3MgdG8gdGhlIGJvdW5jZS9jb21wbGFpbnQgU05TIHRvcGljJyB9LFxuICB7IGZsYWc6ICduby1jcmVhdGUtc2VzLWlkZW50aXR5Jywga2V5OiAnbm9DcmVhdGVTZXNJZGVudGl0eScsIGRlc2NyaXB0aW9uOiAnU2tpcCBTRVMgaWRlbnRpdHkgY3JlYXRpb24gKGRvbWFpbiBhbHJlYWR5IHZlcmlmaWVkKScsIGJvb2xlYW46IHRydWUgfSxcbl07XG5cbi8vIC0tLSBUYXJnZXRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IFRBUkdFVFM6IFJlYWRvbmx5PFJlY29yZDxUYXJnZXRJZCwgVGFyZ2V0U3BlYz4+ID0ge1xuICBsb2NhbDoge1xuICAgIGlkOiAnbG9jYWwnLFxuICAgIGxhYmVsOiAnTG9jYWwgKERvY2tlciBDb21wb3NlKScsXG4gICAgZGlyOiAnZGVwbG95L2xvY2FsJyxcbiAgICBlbnRyeXBvaW50OiAnYmluL3NldHVwLnNoJyxcbiAgICBzcGFyc2VQYXRoczogWydkZXBsb3kvbG9jYWwnXSxcbiAgICByZXF1aXJlZDogW10sXG4gICAgb3B0aW9uYWw6IFtdLFxuICAgIHBvc3REZXBsb3k6ICcuL2RlcGxveS9iaW4vaW5pdC1wbGF0Zm9ybS5zaCBsb2NhbCcsXG4gICAgY29zdDogJ0ZyZWUnLFxuICAgIGJlc3RGb3I6ICdEZXZlbG9wbWVudCcsXG4gICAgZGVzdHJveXM6ICdzdG9wcyBhbGwgY29udGFpbmVycyDigJQgZGF0YSB1bmRlciBkZXBsb3kvbG9jYWwvZGF0YSBwZXJzaXN0cyBvbiBkaXNrIChkZWxldGUgaXQgbWFudWFsbHkgZm9yIGEgY2xlYW4gc2xhdGUpJyxcbiAgfSxcbiAgbWluaWt1YmU6IHtcbiAgICBpZDogJ21pbmlrdWJlJyxcbiAgICBsYWJlbDogJ01pbmlrdWJlIChsb2NhbCBLdWJlcm5ldGVzKScsXG4gICAgZGlyOiAnZGVwbG95L21pbmlrdWJlJyxcbiAgICBlbnRyeXBvaW50OiAnYmluL3NldHVwLnNoJyxcbiAgICBzcGFyc2VQYXRoczogWydkZXBsb3kvbWluaWt1YmUnXSxcbiAgICByZXF1aXJlZDogW10sXG4gICAgb3B0aW9uYWw6IFtdLFxuICAgIHBvc3REZXBsb3k6ICcuL2RlcGxveS9iaW4vaW5pdC1wbGF0Zm9ybS5zaCBtaW5pa3ViZScsXG4gICAgY29zdDogJ0ZyZWUnLFxuICAgIGJlc3RGb3I6ICdMb2NhbCBLdWJlcm5ldGVzJyxcbiAgICBkZXN0cm95czogJ3N0b3BzIHRoZSBtaW5pa3ViZSBzdGFjayDigJQgcGVyc2lzdGVudCB2b2x1bWVzIChQVkMgZGF0YSkgcmVtYWluIHVudGlsIHRoZSBjbHVzdGVyIGlzIGRlbGV0ZWQnLFxuICB9LFxuICBlYzI6IHtcbiAgICBpZDogJ2VjMicsXG4gICAgbGFiZWw6ICdBV1MgRUMyIChzaW5nbGUgTWluaWt1YmUgaW5zdGFuY2UgYmVoaW5kIGFuIEFMQiknLFxuICAgIGRpcjogJ2RlcGxveS9hd3MvZWMyJyxcbiAgICBlbnRyeXBvaW50OiAnYmluL3NldHVwLnNoJyxcbiAgICBzcGFyc2VQYXRoczogWydkZXBsb3kvYXdzL2VjMiddLFxuICAgIHJlcXVpcmVkOiBbS0VZX1BBSVIsIERPTUFJTiwgSE9TVEVEX1pPTkVdLFxuICAgIG9wdGlvbmFsOiBbUkVHSU9OLCBERVBMT1lfTU9ERSwgR0hDUl9UT0tFTiwgSU5TVEFOQ0VfVFlQRSwgLi4uRU1BSUxdLFxuICAgIHBvc3REZXBsb3k6ICcuL2RlcGxveS9iaW4vaW5pdC1wbGF0Zm9ybS5zaCBlYzIgICMgZnJvbSBpbnNpZGUgdGhlIFZQQyAoU1NNKScsXG4gICAgY29zdDogJ34kMTQwLTI2NS9tbycsXG4gICAgYmVzdEZvcjogJ0RldiAvIHN0YWdpbmcnLFxuICAgIGRlc3Ryb3lzOiAnREVMRVRFUyB0aGUgQ2xvdWRGb3JtYXRpb24gc3RhY2s6IHRoZSBWUEMsIEVDMiBpbnN0YW5jZSwgYW5kIGl0cyBFQlMgZGF0YSB2b2x1bWUgKGRhdGFiYXNlcywgcmVnaXN0cnksIHBsdWdpbiBidWlsZHMpLiBJcnJldmVyc2libGUuJyxcbiAgfSxcbiAgZmFyZ2F0ZToge1xuICAgIGlkOiAnZmFyZ2F0ZScsXG4gICAgbGFiZWw6ICdBV1MgRmFyZ2F0ZSAoc2VydmVybGVzcyBFQ1MsIDYgQ2xvdWRGb3JtYXRpb24gc3RhY2tzKScsXG4gICAgZGlyOiAnZGVwbG95L2F3cy9mYXJnYXRlJyxcbiAgICBlbnRyeXBvaW50OiAnYmluL3NldHVwLnNoJyxcbiAgICBzcGFyc2VQYXRoczogWydkZXBsb3kvYXdzL2ZhcmdhdGUnXSxcbiAgICByZXF1aXJlZDogW0RPTUFJTiwgSE9TVEVEX1pPTkVdLFxuICAgIG9wdGlvbmFsOiBbUkVHSU9OLCBERVBMT1lfTU9ERSwgR0hDUl9UT0tFTiwgLi4uRU1BSUxdLFxuICAgIHBvc3REZXBsb3k6ICcuL2RlcGxveS9iaW4vaW5pdC1wbGF0Zm9ybS5zaCBmYXJnYXRlICAjIGZyb20gYSBWUEMtYXR0YWNoZWQgaG9zdCcsXG4gICAgY29zdDogJ34kMTAwLTMwMC9tbycsXG4gICAgYmVzdEZvcjogJ1Byb2R1Y3Rpb24nLFxuICAgIGRlc3Ryb3lzOiAnREVMRVRFUyBhbGwgcGItKiBDbG91ZEZvcm1hdGlvbiBzdGFja3M6IEVGUyBkYXRhLCBkYXRhYmFzZXMsIGFuZCByZWdpc3RyeS4gU2VjcmV0cyBNYW5hZ2VyIGVudHJpZXMgYXJlIE5PVCBhdXRvLWRlbGV0ZWQuIElycmV2ZXJzaWJsZS4nLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IFRBUkdFVF9JRFM6IHJlYWRvbmx5IFRhcmdldElkW10gPSBbJ2xvY2FsJywgJ21pbmlrdWJlJywgJ2VjMicsICdmYXJnYXRlJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RhcmdldElkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgVGFyZ2V0SWQge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAoVEFSR0VUX0lEUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXModmFsdWUpO1xufVxuXG4vLyAtLS0gU3BhcnNlIGJvb3RzdHJhcCBwYXRocyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRm9sZGVycyBldmVyeSBgLS1yZXBvYCBib290c3RyYXAgbmVlZHMgcmVnYXJkbGVzcyBvZiB0YXJnZXQ6IHRoZSBvcmNoZXN0cmF0aW9uXG4gKiBzY3JpcHRzLiBFYWNoIHRhcmdldCdzIHNldHVwLnNoICsgaW5pdC1wbGF0Zm9ybS5zaCBsaXZlIGluIC8gZHJpdmUgdGhlc2UuXG4gKiBEZWxpYmVyYXRlbHkgbWluaW1hbCDigJQgaGVhdmllciBmb2xkZXJzIChwbHVnaW5zL2NvbXBsaWFuY2Uvc2FtcGxlcykgYXJlIHB1bGxlZFxuICogaW4gb25seSB3aGVuIHRoZWlyIHBvc3QtaW5zdGFsbCBvcHRpb24gaXMgc2VsZWN0ZWQgKHNlZSBMT0FEX1NURVBTKS5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTU1PTl9TUEFSU0VfUEFUSFM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWydkZXBsb3kvYmluJ107XG5cbi8qKlxuICogT3B0LWluIHBvc3QtaW5zdGFsbCBsb2FkIHN0ZXBzLiBFYWNoIG1hcHMgYSBwcm92aXNpb24gYC0td2l0aC0qYCBmbGFnIHRvIHRoZVxuICogaW5pdC1wbGF0Zm9ybSBlbnYgdmFyIHRoYXQgZW5hYmxlcyBpdCBBTkQgdGhlIHJlcG8gZm9sZGVyKHMpIGl0IHJlYWRzIOKAlCBzbyB0aGVcbiAqIHNwYXJzZSBjaGVja291dCBncm93cyBleGFjdGx5IHdpdGggdGhlIHNlbGVjdGVkIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBMT0FEX1NURVBTID0gW1xuICAvLyBUaGUgcGx1Z2luIGJ1aWxkIHJlYWRzIGRlcGxveS9wbHVnaW5zL19iYXNlIEFORCBkZXBsb3kvY29kZWJ1aWxkL2Jvb3RzdHJhcC5cbiAgeyBpZDogJ3BsdWdpbnMnLCBmbGFnOiAnd2l0aFBsdWdpbnMnLCBlbnY6ICdMT0FEX1BMVUdJTlMnLCBwYXRoczogWydkZXBsb3kvcGx1Z2lucycsICdkZXBsb3kvY29kZWJ1aWxkJ10gfSxcbiAgeyBpZDogJ2NvbXBsaWFuY2UnLCBmbGFnOiAnd2l0aENvbXBsaWFuY2UnLCBlbnY6ICdMT0FEX0NPTVBMSUFOQ0UnLCBwYXRoczogWydkZXBsb3kvY29tcGxpYW5jZSddIH0sXG4gIHsgaWQ6ICdzYW1wbGVzJywgZmxhZzogJ3dpdGhTYW1wbGVzJywgZW52OiAnTE9BRF9QSVBFTElORVMnLCBwYXRoczogWydkZXBsb3kvc2FtcGxlcyddIH0sXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBMb2FkU3RlcElkID0gKHR5cGVvZiBMT0FEX1NURVBTKVtudW1iZXJdWydpZCddO1xuXG4vKipcbiAqIFRoZSBkZS1kdXBsaWNhdGVkIHNldCBvZiBzcGFyc2UgcGF0aHMgZm9yIGEgdGFyZ2V0IHBsdXMgdGhlIGVuYWJsZWQgbG9hZFxuICogc3RlcHM6IGNvbW1vbiBiYXNlIOKIqiB0YXJnZXQgZm9sZGVyKHMpIOKIqiBlYWNoIGVuYWJsZWQgc3RlcCdzIGZvbGRlcihzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwYXJzZVBhdGhzRm9yKHRhcmdldDogVGFyZ2V0SWQsIGVuYWJsZWRMb2FkSWRzOiByZWFkb25seSBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcGF0aHMgPSBuZXcgU2V0PHN0cmluZz4oQ09NTU9OX1NQQVJTRV9QQVRIUyk7XG4gIGZvciAoY29uc3QgcCBvZiBUQVJHRVRTW3RhcmdldF0uc3BhcnNlUGF0aHMpIHBhdGhzLmFkZChwKTtcbiAgZm9yIChjb25zdCBzdGVwIG9mIExPQURfU1RFUFMpIHtcbiAgICBpZiAoZW5hYmxlZExvYWRJZHMuaW5jbHVkZXMoc3RlcC5pZCkpIGZvciAoY29uc3QgcCBvZiBzdGVwLnBhdGhzKSBwYXRocy5hZGQocCk7XG4gIH1cbiAgcmV0dXJuIFsuLi5wYXRoc107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZW1ibGVSZXN1bHQge1xuICAvKiogVGhlIGV4YWN0IGNvbW1hbmQgdG8gcnVuIOKAlCBzZWNyZXRzIG1hc2tlZCBhcyBgKioqYC4gKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuICAvKiogUmVxdWlyZWQgaW5wdXRzIHRoYXQgd2VyZSBub3Qgc3VwcGxpZWQuICovXG4gIHJlYWRvbmx5IG1pc3Npbmc6IHJlYWRvbmx5IElucHV0U3BlY1tdO1xufVxuXG4vKipcbiAqIEFzc2VtYmxlIHRoZSBkZXBsb3kgY29tbWFuZCBmb3IgYSB0YXJnZXQgZnJvbSB0aGUgcHJvdmlkZWQgcGFyYW1zLiBQdXJlIGFuZFxuICogZGV0ZXJtaW5pc3RpYyDigJQgbm8gc2hlbGwsIG5vIExMTS4gTWlzc2luZyByZXF1aXJlZCBpbnB1dHMgYXJlIHJlcG9ydGVkIChuZXZlclxuICogZ3Vlc3NlZCkuIEJ5IGRlZmF1bHQgc2VjcmV0cyBhcmUgbWFza2VkIChgKioqYCkgZm9yIERJU1BMQVk7IHBhc3MgYG1hc2s6IGZhbHNlYFxuICogdG8gYnVpbGQgdGhlIHJlYWwgY29tbWFuZCBmb3IgRVhFQ1VUSU9OIOKAlCB0aGF0IHN0cmluZyBtdXN0IG5ldmVyIGJlIGxvZ2dlZCBvclxuICogc2hvd24gdG8gdGhlIG1vZGVsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZW1ibGVDb21tYW5kKFxuICB0YXJnZXQ6IFRhcmdldFNwZWMsXG4gIHBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIG9wdHM6IHsgbWFzaz86IGJvb2xlYW4gfSA9IHt9LFxuKTogQXNzZW1ibGVSZXN1bHQge1xuICBjb25zdCBtYXNrID0gb3B0cy5tYXNrID8/IHRydWU7XG4gIGNvbnN0IHByb3ZpZGVkID0gKHNwZWM6IElucHV0U3BlYyk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IHYgPSBwYXJhbXNbc3BlYy5rZXldO1xuICAgIHJldHVybiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gJycgJiYgdiAhPT0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgbWlzc2luZyA9IHRhcmdldC5yZXF1aXJlZC5maWx0ZXIoKHNwZWMpID0+ICFwcm92aWRlZChzcGVjKSk7XG5cbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW2BjZCAke3RhcmdldC5kaXJ9ICYmIGJhc2ggJHt0YXJnZXQuZW50cnlwb2ludH1gXTtcbiAgZm9yIChjb25zdCBzcGVjIG9mIFsuLi50YXJnZXQucmVxdWlyZWQsIC4uLnRhcmdldC5vcHRpb25hbF0pIHtcbiAgICBpZiAoIXByb3ZpZGVkKHNwZWMpKSBjb250aW51ZTtcbiAgICBpZiAoc3BlYy5ib29sZWFuKSB7XG4gICAgICBwYXJ0cy5wdXNoKGAtLSR7c3BlYy5mbGFnfWApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gc3BlYy5zZWNyZXQgJiYgbWFzayA/ICcqKionIDogU3RyaW5nKHBhcmFtc1tzcGVjLmtleV0pO1xuICAgIHBhcnRzLnB1c2goYC0tJHtzcGVjLmZsYWd9ICR7dmFsdWV9YCk7XG4gIH1cblxuICByZXR1cm4geyBjb21tYW5kOiBwYXJ0cy5qb2luKCcgXFxcXFxcbiAgJyksIG1pc3NpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZWFyZG93blJlc3VsdCB7XG4gIC8qKiBUaGUgZXhhY3QgdGVhcmRvd24gY29tbWFuZCB0byBydW4uICovXG4gIHJlYWRvbmx5IGNvbW1hbmQ6IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhpcyB0ZWFyZG93biBpcnJldmVyc2libHkgZGVzdHJveXMgZGF0YSAoQVdTIHRhcmdldHMpLiAqL1xuICByZWFkb25seSBkZXN0cnVjdGl2ZTogYm9vbGVhbjtcbn1cblxuLyoqIENsb3VkRm9ybWF0aW9uIHN0YWNrIG5hbWUgdGhlIEVDMiBzZXR1cC5zaCBkZWZhdWx0cyB0by4gKi9cbmNvbnN0IERFRkFVTFRfRUMyX1NUQUNLID0gJ3BpcGVsaW5lLWJ1aWxkZXInO1xuLyoqIFN0YWNrIHByZWZpeCB0aGUgRmFyZ2F0ZSB0ZWFyZG93bi5zaCBkZWZhdWx0cyB0by4gKi9cbmNvbnN0IERFRkFVTFRfRkFSR0FURV9QUkVGSVggPSAncGInO1xuXG4vKipcbiAqIEFzc2VtYmxlIHRoZSB0ZWFyZG93biBjb21tYW5kIGZvciBhIHRhcmdldC4gUHVyZSBhbmQgZGV0ZXJtaW5pc3RpYyDigJQgbWlycm9yc1xuICogYGFzc2VtYmxlQ29tbWFuZGAgZm9yIHRoZSBkZXN0cm95IHBhdGguIGxvY2FsL21pbmlrdWJlIFNUT1AgdGhlIHN0YWNrXG4gKiAobm9uLWRlc3RydWN0aXZlIOKAlCBvbi1kaXNrIC8gUFZDIGRhdGEgc3Vydml2ZXMpOyBlYzIvZmFyZ2F0ZSBERUxFVEUgdGhlaXJcbiAqIENsb3VkRm9ybWF0aW9uIHN0YWNrcyBhbmQgYXJlIGlycmV2ZXJzaWJsZS4gRm9yIEZhcmdhdGUsIGBhc3N1bWVZZXNgIGZvcndhcmRzXG4gKiB0aGUgbmF0aXZlIHNjcmlwdCdzIG93biBgLS15ZXNgICh0aGUgYWdlbnQgcnVucyBpdHMgb3duIHR5cGVkIGNvbmZpcm1hdGlvblxuICogZmlyc3QsIHNvIHRoZSBzY3JpcHQgbXVzdCBub3QgYWxzbyBibG9jayBvbiBzdGRpbik7IEVDMiBgZGVsZXRlLXN0YWNrYCBoYXMgbm9cbiAqIG5hdGl2ZSBwcm9tcHQsIHdoaWNoIGlzIGV4YWN0bHkgd2h5IHRoZSBhZ2VudCBnYXRlIGlzIG1hbmRhdG9yeSB0aGVyZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlYXJkb3duQ29tbWFuZChcbiAgdGFyZ2V0OiBUYXJnZXRJZCxcbiAgb3B0czogeyBzdGFja05hbWU/OiBzdHJpbmc7IHJlZ2lvbj86IHN0cmluZzsgYXNzdW1lWWVzPzogYm9vbGVhbiB9ID0ge30sXG4pOiBUZWFyZG93blJlc3VsdCB7XG4gIGNvbnN0IHJlZ2lvbiA9IG9wdHMucmVnaW9uIHx8IHByb2Nlc3MuZW52LkFXU19SRUdJT04gfHwgJ3VzLWVhc3QtMSc7XG4gIHN3aXRjaCAodGFyZ2V0KSB7XG4gICAgY2FzZSAnbG9jYWwnOlxuICAgICAgcmV0dXJuIHsgY29tbWFuZDogJ2NkIGRlcGxveS9sb2NhbCAmJiBiYXNoIGJpbi9zaHV0ZG93bi5zaCcsIGRlc3RydWN0aXZlOiBmYWxzZSB9O1xuICAgIGNhc2UgJ21pbmlrdWJlJzpcbiAgICAgIHJldHVybiB7IGNvbW1hbmQ6ICdjZCBkZXBsb3kvbWluaWt1YmUgJiYgYmFzaCBiaW4vc2h1dGRvd24uc2gnLCBkZXN0cnVjdGl2ZTogZmFsc2UgfTtcbiAgICBjYXNlICdlYzInOiB7XG4gICAgICBjb25zdCBzdGFjayA9IG9wdHMuc3RhY2tOYW1lIHx8IERFRkFVTFRfRUMyX1NUQUNLO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29tbWFuZDpcbiAgICAgICAgICBgYXdzIGNsb3VkZm9ybWF0aW9uIGRlbGV0ZS1zdGFjayAtLXN0YWNrLW5hbWUgJHtzdGFja30gLS1yZWdpb24gJHtyZWdpb259ICYmIGAgK1xuICAgICAgICAgIGBhd3MgY2xvdWRmb3JtYXRpb24gd2FpdCBzdGFjay1kZWxldGUtY29tcGxldGUgLS1zdGFjay1uYW1lICR7c3RhY2t9IC0tcmVnaW9uICR7cmVnaW9ufWAsXG4gICAgICAgIGRlc3RydWN0aXZlOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSAnZmFyZ2F0ZSc6IHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IG9wdHMuc3RhY2tOYW1lIHx8IERFRkFVTFRfRkFSR0FURV9QUkVGSVg7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb21tYW5kOlxuICAgICAgICAgIGBjZCBkZXBsb3kvYXdzL2ZhcmdhdGUgJiYgYmFzaCBiaW4vdGVhcmRvd24uc2ggLS1zdGFjay1wcmVmaXggJHtwcmVmaXh9IC0tcmVnaW9uICR7cmVnaW9ufWAgK1xuICAgICAgICAgIChvcHRzLmFzc3VtZVllcyA/ICcgLS15ZXMnIDogJycpLFxuICAgICAgICBkZXN0cnVjdGl2ZTogdHJ1ZSxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Deterministic known-issue matcher for deploy failures. This is the structured,
3
+ * safe complement to the LLM diagnosis: it recognizes well-known CloudFormation /
4
+ * deploy signatures and maps them to a concrete cause + suggestion, and — for a
5
+ * few — a param fix the executor can re-apply for a gated retry. Pattern matching
6
+ * on output is a script's job, not the model's; the LLM only adds free-form
7
+ * diagnosis on top.
8
+ */
9
+ export interface KnownIssue {
10
+ readonly id: string;
11
+ /** Plain-English root cause. */
12
+ readonly cause: string;
13
+ /** Concrete next step. */
14
+ readonly suggestion: string;
15
+ /** Whether a re-run can plausibly resolve it (deploy scripts are idempotent). */
16
+ readonly retryable: boolean;
17
+ /** A param the executor can set, then re-run automatically (gated). */
18
+ readonly paramFix?: {
19
+ readonly key: string;
20
+ readonly value: unknown;
21
+ };
22
+ }
23
+ /** Return every known issue whose signature appears in the failure output. */
24
+ export declare function matchIssues(failureText: string): KnownIssue[];
25
+ /**
26
+ * Post-deploy guidance to print after a successful deploy that enabled SES.
27
+ * Surfaces the two things the operator must act on (async DKIM, the sandbox).
28
+ */
29
+ export declare function sesPostDeployGuidance(): string[];
30
+ //# sourceMappingURL=troubleshoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"troubleshoot.d.ts","sourceRoot":"","sources":["../../src/agent/troubleshoot.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0BAA0B;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CACvE;AAwED,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,EAAE,CAE7D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAMhD"}
@@ -0,0 +1,87 @@
1
+ // Copyright 2026 Pipeline Builder Contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ const RULES = [
4
+ {
5
+ // SES identity already verified in this account/region → reuse it.
6
+ // CFN phrasings vary: "Email identity … already exists", "SesEmailIdentity … AlreadyExists".
7
+ match: /(?:email\s*identity|ses[\s\S]{0,40}?identity|:identity\/)[\s\S]{0,160}?(?:already exists|AlreadyExists)/i,
8
+ issue: {
9
+ id: 'ses-identity-exists',
10
+ cause: 'The SES email identity for this domain already exists in the account/region.',
11
+ suggestion: 'Reuse it with --skip-ses-identity instead of creating a new one.',
12
+ retryable: true,
13
+ paramFix: { key: 'noCreateSesIdentity', value: true },
14
+ },
15
+ },
16
+ {
17
+ // A prior failed attempt left the stack un-updatable.
18
+ match: /ROLLBACK_COMPLETE|is in ROLLBACK_COMPLETE state and can not be updated/i,
19
+ issue: {
20
+ id: 'stack-rollback-complete',
21
+ cause: 'A previous attempt left the stack in ROLLBACK_COMPLETE — CloudFormation cannot update a stack in that state.',
22
+ suggestion: 'Delete the failed stack (aws cloudformation delete-stack --stack-name <name>), then re-run. Destructive — not auto-applied.',
23
+ retryable: false,
24
+ },
25
+ },
26
+ {
27
+ match: /toomanyrequests|rate.?limit|HTTP 429|denied: requested access to the resource is denied/i,
28
+ issue: {
29
+ id: 'ghcr-rate-limit',
30
+ cause: 'ghcr.io anonymous pulls are rate-limited (60/hr) and tripped mid-deploy.',
31
+ suggestion: 'Pass --ghcr-token <GitHub PAT with read:packages>, then re-run.',
32
+ retryable: false, // needs a token value the agent does not hold
33
+ },
34
+ },
35
+ {
36
+ match: /ses:SendEmail|FromAddress|MessageRejected|Email address (?:is )?not verified/i,
37
+ issue: {
38
+ id: 'ses-from-mismatch',
39
+ cause: 'SES rejected the sender — the From address is not verified or not covered by the identity.',
40
+ suggestion: 'Make sure --email-from is on the verified domain; in the SES sandbox, verify the recipient too.',
41
+ retryable: false,
42
+ },
43
+ },
44
+ {
45
+ match: /ExpiredToken|InvalidClientTokenId|Unable to locate credentials|security token.*invalid|AuthFailure/i,
46
+ issue: {
47
+ id: 'aws-credentials',
48
+ cause: 'AWS credentials are missing or expired.',
49
+ suggestion: 'Refresh credentials (aws configure / AWS_PROFILE / SSO login), then re-run.',
50
+ retryable: false,
51
+ },
52
+ },
53
+ {
54
+ match: /(?:HostedZone|hosted zone)[\s\S]{0,80}?(?:not found|NoSuchHostedZone|does not exist)/i,
55
+ issue: {
56
+ id: 'hosted-zone-not-found',
57
+ cause: 'The Route 53 hosted zone could not be found.',
58
+ suggestion: 'Check --hosted-zone-id is the PUBLIC zone ID authoritative for --domain.',
59
+ retryable: false,
60
+ },
61
+ },
62
+ {
63
+ match: /Certificate[\s\S]{0,80}?(?:failed|timed out|PENDING_VALIDATION)|CertificateValidation.*(?:FAILED|timed out)/i,
64
+ issue: {
65
+ id: 'acm-validation',
66
+ cause: 'The ACM certificate did not validate in time — DNS validation needs the CNAME in the hosted zone, and propagation can take several minutes.',
67
+ suggestion: 'Confirm --hosted-zone-id matches --domain, then re-run to resume once DNS propagates.',
68
+ retryable: true, // a plain re-run can resume
69
+ },
70
+ },
71
+ ];
72
+ /** Return every known issue whose signature appears in the failure output. */
73
+ export function matchIssues(failureText) {
74
+ return RULES.filter((r) => r.match.test(failureText)).map((r) => r.issue);
75
+ }
76
+ /**
77
+ * Post-deploy guidance to print after a successful deploy that enabled SES.
78
+ * Surfaces the two things the operator must act on (async DKIM, the sandbox).
79
+ */
80
+ export function sesPostDeployGuidance() {
81
+ return [
82
+ 'DKIM verification is ASYNCHRONOUS (minutes–hours) — check SES console → Verified identities.',
83
+ 'New SES accounts are SANDBOXED: you can only send to verified recipients (200/day) until you request production access. To smoke-test in sandbox, verify a REAL recipient — never admin@internal.',
84
+ 'Bounces/complaints publish to the stack\'s SNS topic — subscribe to it (or pass --alert-email next time) to get warned before SES throttles you.',
85
+ ];
86
+ }
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJvdWJsZXNob290LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FnZW50L3Ryb3VibGVzaG9vdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBdUJ0QyxNQUFNLEtBQUssR0FBMEU7SUFDbkY7UUFDRSxtRUFBbUU7UUFDbkUsNkZBQTZGO1FBQzdGLEtBQUssRUFBRSwwR0FBMEc7UUFDakgsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLHFCQUFxQjtZQUN6QixLQUFLLEVBQUUsOEVBQThFO1lBQ3JGLFVBQVUsRUFBRSxrRUFBa0U7WUFDOUUsU0FBUyxFQUFFLElBQUk7WUFDZixRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtTQUN0RDtLQUNGO0lBQ0Q7UUFDRSxzREFBc0Q7UUFDdEQsS0FBSyxFQUFFLHlFQUF5RTtRQUNoRixLQUFLLEVBQUU7WUFDTCxFQUFFLEVBQUUseUJBQXlCO1lBQzdCLEtBQUssRUFBRSw4R0FBOEc7WUFDckgsVUFBVSxFQUFFLDZIQUE2SDtZQUN6SSxTQUFTLEVBQUUsS0FBSztTQUNqQjtLQUNGO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsMEZBQTBGO1FBQ2pHLEtBQUssRUFBRTtZQUNMLEVBQUUsRUFBRSxpQkFBaUI7WUFDckIsS0FBSyxFQUFFLDBFQUEwRTtZQUNqRixVQUFVLEVBQUUsaUVBQWlFO1lBQzdFLFNBQVMsRUFBRSxLQUFLLEVBQUUsOENBQThDO1NBQ2pFO0tBQ0Y7SUFDRDtRQUNFLEtBQUssRUFBRSwrRUFBK0U7UUFDdEYsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLG1CQUFtQjtZQUN2QixLQUFLLEVBQUUsNEZBQTRGO1lBQ25HLFVBQVUsRUFBRSxpR0FBaUc7WUFDN0csU0FBUyxFQUFFLEtBQUs7U0FDakI7S0FDRjtJQUNEO1FBQ0UsS0FBSyxFQUFFLHFHQUFxRztRQUM1RyxLQUFLLEVBQUU7WUFDTCxFQUFFLEVBQUUsaUJBQWlCO1lBQ3JCLEtBQUssRUFBRSx5Q0FBeUM7WUFDaEQsVUFBVSxFQUFFLDZFQUE2RTtZQUN6RixTQUFTLEVBQUUsS0FBSztTQUNqQjtLQUNGO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsdUZBQXVGO1FBQzlGLEtBQUssRUFBRTtZQUNMLEVBQUUsRUFBRSx1QkFBdUI7WUFDM0IsS0FBSyxFQUFFLDhDQUE4QztZQUNyRCxVQUFVLEVBQUUsMEVBQTBFO1lBQ3RGLFNBQVMsRUFBRSxLQUFLO1NBQ2pCO0tBQ0Y7SUFDRDtRQUNFLEtBQUssRUFBRSw4R0FBOEc7UUFDckgsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLGdCQUFnQjtZQUNwQixLQUFLLEVBQUUsNklBQTZJO1lBQ3BKLFVBQVUsRUFBRSx1RkFBdUY7WUFDbkcsU0FBUyxFQUFFLElBQUksRUFBRSw0QkFBNEI7U0FDOUM7S0FDRjtDQUNGLENBQUM7QUFFRiw4RUFBOEU7QUFDOUUsTUFBTSxVQUFVLFdBQVcsQ0FBQyxXQUFtQjtJQUM3QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUUsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxxQkFBcUI7SUFDbkMsT0FBTztRQUNMLDhGQUE4RjtRQUM5RixtTUFBbU07UUFDbk0sa0pBQWtKO0tBQ25KLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogRGV0ZXJtaW5pc3RpYyBrbm93bi1pc3N1ZSBtYXRjaGVyIGZvciBkZXBsb3kgZmFpbHVyZXMuIFRoaXMgaXMgdGhlIHN0cnVjdHVyZWQsXG4gKiBzYWZlIGNvbXBsZW1lbnQgdG8gdGhlIExMTSBkaWFnbm9zaXM6IGl0IHJlY29nbml6ZXMgd2VsbC1rbm93biBDbG91ZEZvcm1hdGlvbiAvXG4gKiBkZXBsb3kgc2lnbmF0dXJlcyBhbmQgbWFwcyB0aGVtIHRvIGEgY29uY3JldGUgY2F1c2UgKyBzdWdnZXN0aW9uLCBhbmQg4oCUIGZvciBhXG4gKiBmZXcg4oCUIGEgcGFyYW0gZml4IHRoZSBleGVjdXRvciBjYW4gcmUtYXBwbHkgZm9yIGEgZ2F0ZWQgcmV0cnkuIFBhdHRlcm4gbWF0Y2hpbmdcbiAqIG9uIG91dHB1dCBpcyBhIHNjcmlwdCdzIGpvYiwgbm90IHRoZSBtb2RlbCdzOyB0aGUgTExNIG9ubHkgYWRkcyBmcmVlLWZvcm1cbiAqIGRpYWdub3NpcyBvbiB0b3AuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBLbm93bklzc3VlIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgLyoqIFBsYWluLUVuZ2xpc2ggcm9vdCBjYXVzZS4gKi9cbiAgcmVhZG9ubHkgY2F1c2U6IHN0cmluZztcbiAgLyoqIENvbmNyZXRlIG5leHQgc3RlcC4gKi9cbiAgcmVhZG9ubHkgc3VnZ2VzdGlvbjogc3RyaW5nO1xuICAvKiogV2hldGhlciBhIHJlLXJ1biBjYW4gcGxhdXNpYmx5IHJlc29sdmUgaXQgKGRlcGxveSBzY3JpcHRzIGFyZSBpZGVtcG90ZW50KS4gKi9cbiAgcmVhZG9ubHkgcmV0cnlhYmxlOiBib29sZWFuO1xuICAvKiogQSBwYXJhbSB0aGUgZXhlY3V0b3IgY2FuIHNldCwgdGhlbiByZS1ydW4gYXV0b21hdGljYWxseSAoZ2F0ZWQpLiAqL1xuICByZWFkb25seSBwYXJhbUZpeD86IHsgcmVhZG9ubHkga2V5OiBzdHJpbmc7IHJlYWRvbmx5IHZhbHVlOiB1bmtub3duIH07XG59XG5cbmNvbnN0IFJVTEVTOiBSZWFkb25seUFycmF5PHsgcmVhZG9ubHkgbWF0Y2g6IFJlZ0V4cDsgcmVhZG9ubHkgaXNzdWU6IEtub3duSXNzdWUgfT4gPSBbXG4gIHtcbiAgICAvLyBTRVMgaWRlbnRpdHkgYWxyZWFkeSB2ZXJpZmllZCBpbiB0aGlzIGFjY291bnQvcmVnaW9uIOKGkiByZXVzZSBpdC5cbiAgICAvLyBDRk4gcGhyYXNpbmdzIHZhcnk6IFwiRW1haWwgaWRlbnRpdHkg4oCmIGFscmVhZHkgZXhpc3RzXCIsIFwiU2VzRW1haWxJZGVudGl0eSDigKYgQWxyZWFkeUV4aXN0c1wiLlxuICAgIG1hdGNoOiAvKD86ZW1haWxcXHMqaWRlbnRpdHl8c2VzW1xcc1xcU117MCw0MH0/aWRlbnRpdHl8OmlkZW50aXR5XFwvKVtcXHNcXFNdezAsMTYwfT8oPzphbHJlYWR5IGV4aXN0c3xBbHJlYWR5RXhpc3RzKS9pLFxuICAgIGlzc3VlOiB7XG4gICAgICBpZDogJ3Nlcy1pZGVudGl0eS1leGlzdHMnLFxuICAgICAgY2F1c2U6ICdUaGUgU0VTIGVtYWlsIGlkZW50aXR5IGZvciB0aGlzIGRvbWFpbiBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgYWNjb3VudC9yZWdpb24uJyxcbiAgICAgIHN1Z2dlc3Rpb246ICdSZXVzZSBpdCB3aXRoIC0tc2tpcC1zZXMtaWRlbnRpdHkgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUuJyxcbiAgICAgIHJldHJ5YWJsZTogdHJ1ZSxcbiAgICAgIHBhcmFtRml4OiB7IGtleTogJ25vQ3JlYXRlU2VzSWRlbnRpdHknLCB2YWx1ZTogdHJ1ZSB9LFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICAvLyBBIHByaW9yIGZhaWxlZCBhdHRlbXB0IGxlZnQgdGhlIHN0YWNrIHVuLXVwZGF0YWJsZS5cbiAgICBtYXRjaDogL1JPTExCQUNLX0NPTVBMRVRFfGlzIGluIFJPTExCQUNLX0NPTVBMRVRFIHN0YXRlIGFuZCBjYW4gbm90IGJlIHVwZGF0ZWQvaSxcbiAgICBpc3N1ZToge1xuICAgICAgaWQ6ICdzdGFjay1yb2xsYmFjay1jb21wbGV0ZScsXG4gICAgICBjYXVzZTogJ0EgcHJldmlvdXMgYXR0ZW1wdCBsZWZ0IHRoZSBzdGFjayBpbiBST0xMQkFDS19DT01QTEVURSDigJQgQ2xvdWRGb3JtYXRpb24gY2Fubm90IHVwZGF0ZSBhIHN0YWNrIGluIHRoYXQgc3RhdGUuJyxcbiAgICAgIHN1Z2dlc3Rpb246ICdEZWxldGUgdGhlIGZhaWxlZCBzdGFjayAoYXdzIGNsb3VkZm9ybWF0aW9uIGRlbGV0ZS1zdGFjayAtLXN0YWNrLW5hbWUgPG5hbWU+KSwgdGhlbiByZS1ydW4uIERlc3RydWN0aXZlIOKAlCBub3QgYXV0by1hcHBsaWVkLicsXG4gICAgICByZXRyeWFibGU6IGZhbHNlLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBtYXRjaDogL3Rvb21hbnlyZXF1ZXN0c3xyYXRlLj9saW1pdHxIVFRQIDQyOXxkZW5pZWQ6IHJlcXVlc3RlZCBhY2Nlc3MgdG8gdGhlIHJlc291cmNlIGlzIGRlbmllZC9pLFxuICAgIGlzc3VlOiB7XG4gICAgICBpZDogJ2doY3ItcmF0ZS1saW1pdCcsXG4gICAgICBjYXVzZTogJ2doY3IuaW8gYW5vbnltb3VzIHB1bGxzIGFyZSByYXRlLWxpbWl0ZWQgKDYwL2hyKSBhbmQgdHJpcHBlZCBtaWQtZGVwbG95LicsXG4gICAgICBzdWdnZXN0aW9uOiAnUGFzcyAtLWdoY3ItdG9rZW4gPEdpdEh1YiBQQVQgd2l0aCByZWFkOnBhY2thZ2VzPiwgdGhlbiByZS1ydW4uJyxcbiAgICAgIHJldHJ5YWJsZTogZmFsc2UsIC8vIG5lZWRzIGEgdG9rZW4gdmFsdWUgdGhlIGFnZW50IGRvZXMgbm90IGhvbGRcbiAgICB9LFxuICB9LFxuICB7XG4gICAgbWF0Y2g6IC9zZXM6U2VuZEVtYWlsfEZyb21BZGRyZXNzfE1lc3NhZ2VSZWplY3RlZHxFbWFpbCBhZGRyZXNzICg/OmlzICk/bm90IHZlcmlmaWVkL2ksXG4gICAgaXNzdWU6IHtcbiAgICAgIGlkOiAnc2VzLWZyb20tbWlzbWF0Y2gnLFxuICAgICAgY2F1c2U6ICdTRVMgcmVqZWN0ZWQgdGhlIHNlbmRlciDigJQgdGhlIEZyb20gYWRkcmVzcyBpcyBub3QgdmVyaWZpZWQgb3Igbm90IGNvdmVyZWQgYnkgdGhlIGlkZW50aXR5LicsXG4gICAgICBzdWdnZXN0aW9uOiAnTWFrZSBzdXJlIC0tZW1haWwtZnJvbSBpcyBvbiB0aGUgdmVyaWZpZWQgZG9tYWluOyBpbiB0aGUgU0VTIHNhbmRib3gsIHZlcmlmeSB0aGUgcmVjaXBpZW50IHRvby4nLFxuICAgICAgcmV0cnlhYmxlOiBmYWxzZSxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgbWF0Y2g6IC9FeHBpcmVkVG9rZW58SW52YWxpZENsaWVudFRva2VuSWR8VW5hYmxlIHRvIGxvY2F0ZSBjcmVkZW50aWFsc3xzZWN1cml0eSB0b2tlbi4qaW52YWxpZHxBdXRoRmFpbHVyZS9pLFxuICAgIGlzc3VlOiB7XG4gICAgICBpZDogJ2F3cy1jcmVkZW50aWFscycsXG4gICAgICBjYXVzZTogJ0FXUyBjcmVkZW50aWFscyBhcmUgbWlzc2luZyBvciBleHBpcmVkLicsXG4gICAgICBzdWdnZXN0aW9uOiAnUmVmcmVzaCBjcmVkZW50aWFscyAoYXdzIGNvbmZpZ3VyZSAvIEFXU19QUk9GSUxFIC8gU1NPIGxvZ2luKSwgdGhlbiByZS1ydW4uJyxcbiAgICAgIHJldHJ5YWJsZTogZmFsc2UsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIG1hdGNoOiAvKD86SG9zdGVkWm9uZXxob3N0ZWQgem9uZSlbXFxzXFxTXXswLDgwfT8oPzpub3QgZm91bmR8Tm9TdWNoSG9zdGVkWm9uZXxkb2VzIG5vdCBleGlzdCkvaSxcbiAgICBpc3N1ZToge1xuICAgICAgaWQ6ICdob3N0ZWQtem9uZS1ub3QtZm91bmQnLFxuICAgICAgY2F1c2U6ICdUaGUgUm91dGUgNTMgaG9zdGVkIHpvbmUgY291bGQgbm90IGJlIGZvdW5kLicsXG4gICAgICBzdWdnZXN0aW9uOiAnQ2hlY2sgLS1ob3N0ZWQtem9uZS1pZCBpcyB0aGUgUFVCTElDIHpvbmUgSUQgYXV0aG9yaXRhdGl2ZSBmb3IgLS1kb21haW4uJyxcbiAgICAgIHJldHJ5YWJsZTogZmFsc2UsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIG1hdGNoOiAvQ2VydGlmaWNhdGVbXFxzXFxTXXswLDgwfT8oPzpmYWlsZWR8dGltZWQgb3V0fFBFTkRJTkdfVkFMSURBVElPTil8Q2VydGlmaWNhdGVWYWxpZGF0aW9uLiooPzpGQUlMRUR8dGltZWQgb3V0KS9pLFxuICAgIGlzc3VlOiB7XG4gICAgICBpZDogJ2FjbS12YWxpZGF0aW9uJyxcbiAgICAgIGNhdXNlOiAnVGhlIEFDTSBjZXJ0aWZpY2F0ZSBkaWQgbm90IHZhbGlkYXRlIGluIHRpbWUg4oCUIEROUyB2YWxpZGF0aW9uIG5lZWRzIHRoZSBDTkFNRSBpbiB0aGUgaG9zdGVkIHpvbmUsIGFuZCBwcm9wYWdhdGlvbiBjYW4gdGFrZSBzZXZlcmFsIG1pbnV0ZXMuJyxcbiAgICAgIHN1Z2dlc3Rpb246ICdDb25maXJtIC0taG9zdGVkLXpvbmUtaWQgbWF0Y2hlcyAtLWRvbWFpbiwgdGhlbiByZS1ydW4gdG8gcmVzdW1lIG9uY2UgRE5TIHByb3BhZ2F0ZXMuJyxcbiAgICAgIHJldHJ5YWJsZTogdHJ1ZSwgLy8gYSBwbGFpbiByZS1ydW4gY2FuIHJlc3VtZVxuICAgIH0sXG4gIH0sXG5dO1xuXG4vKiogUmV0dXJuIGV2ZXJ5IGtub3duIGlzc3VlIHdob3NlIHNpZ25hdHVyZSBhcHBlYXJzIGluIHRoZSBmYWlsdXJlIG91dHB1dC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaElzc3VlcyhmYWlsdXJlVGV4dDogc3RyaW5nKTogS25vd25Jc3N1ZVtdIHtcbiAgcmV0dXJuIFJVTEVTLmZpbHRlcigocikgPT4gci5tYXRjaC50ZXN0KGZhaWx1cmVUZXh0KSkubWFwKChyKSA9PiByLmlzc3VlKTtcbn1cblxuLyoqXG4gKiBQb3N0LWRlcGxveSBndWlkYW5jZSB0byBwcmludCBhZnRlciBhIHN1Y2Nlc3NmdWwgZGVwbG95IHRoYXQgZW5hYmxlZCBTRVMuXG4gKiBTdXJmYWNlcyB0aGUgdHdvIHRoaW5ncyB0aGUgb3BlcmF0b3IgbXVzdCBhY3Qgb24gKGFzeW5jIERLSU0sIHRoZSBzYW5kYm94KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlc1Bvc3REZXBsb3lHdWlkYW5jZSgpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBbXG4gICAgJ0RLSU0gdmVyaWZpY2F0aW9uIGlzIEFTWU5DSFJPTk9VUyAobWludXRlc+KAk2hvdXJzKSDigJQgY2hlY2sgU0VTIGNvbnNvbGUg4oaSIFZlcmlmaWVkIGlkZW50aXRpZXMuJyxcbiAgICAnTmV3IFNFUyBhY2NvdW50cyBhcmUgU0FOREJPWEVEOiB5b3UgY2FuIG9ubHkgc2VuZCB0byB2ZXJpZmllZCByZWNpcGllbnRzICgyMDAvZGF5KSB1bnRpbCB5b3UgcmVxdWVzdCBwcm9kdWN0aW9uIGFjY2Vzcy4gVG8gc21va2UtdGVzdCBpbiBzYW5kYm94LCB2ZXJpZnkgYSBSRUFMIHJlY2lwaWVudCDigJQgbmV2ZXIgYWRtaW5AaW50ZXJuYWwuJyxcbiAgICAnQm91bmNlcy9jb21wbGFpbnRzIHB1Ymxpc2ggdG8gdGhlIHN0YWNrXFwncyBTTlMgdG9waWMg4oCUIHN1YnNjcmliZSB0byBpdCAob3IgcGFzcyAtLWFsZXJ0LWVtYWlsIG5leHQgdGltZSkgdG8gZ2V0IHdhcm5lZCBiZWZvcmUgU0VTIHRocm90dGxlcyB5b3UuJyxcbiAgXTtcbn1cbiJdfQ==
@@ -1,16 +1,11 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
2
  // Copyright 2026 Pipeline Builder Contributors
4
3
  // SPDX-License-Identifier: Apache-2.0
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- const pipeline_core_1 = require("@pipeline-builder/pipeline-core");
10
- const aws_cdk_lib_1 = require("aws-cdk-lib");
11
- const picocolors_1 = __importDefault(require("picocolors"));
12
- const { cyan, green, dim, bold, magenta, red } = picocolors_1.default;
13
- const app = new aws_cdk_lib_1.App();
4
+ import { PipelineBuilder } from '@pipeline-builder/pipeline-core';
5
+ import { App, Stack } from 'aws-cdk-lib';
6
+ import pico from 'picocolors';
7
+ const { cyan, green, dim, bold, magenta, red } = pico;
8
+ const app = new App();
14
9
  /**
15
10
  * Parse PIPELINE_PROPS from environment variable (base64-encoded JSON).
16
11
  * This is always set by the `synth` or `deploy` command before invoking boilerplate.
@@ -41,8 +36,8 @@ function main() {
41
36
  organization: props.organization,
42
37
  componentId,
43
38
  });
44
- const stack = new aws_cdk_lib_1.Stack(app, stackName, {});
45
- new pipeline_core_1.PipelineBuilder(stack, componentId, props);
39
+ const stack = new Stack(app, stackName, {});
40
+ new PipelineBuilder(stack, componentId, props);
46
41
  console.log(green(bold('Success')), green('CDK constructs synthesized successfully'));
47
42
  }
48
43
  try {
@@ -55,4 +50,4 @@ catch (error) {
55
50
  }
56
51
  process.exit(1);
57
52
  }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9pbGVycGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYm9pbGVycGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwrQ0FBK0M7QUFDL0Msc0NBQXNDOzs7OztBQUV0QyxtRUFBZ0Y7QUFDaEYsNkNBQXlDO0FBQ3pDLDREQUE4QjtBQUU5QixNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxvQkFBSSxDQUFDO0FBRXRELE1BQU0sR0FBRyxHQUFHLElBQUksaUJBQUcsRUFBRSxDQUFDO0FBRXRCOzs7R0FHRztBQUNILFNBQVMsS0FBSztJQUNaLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO0lBRWhELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUNiLGtEQUFrRDtZQUNsRCwwRkFBMEYsQ0FDM0YsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBaUIsQ0FBQztJQUM3QyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQ2IsbUNBQW1DLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixFQUFFLENBQzNHLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsSUFBSTtJQUNYLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRTFFLE9BQU8sQ0FBQyxHQUFHLENBQ1QsR0FBRyxPQUFPLENBQUMsWUFBWSxXQUFXLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLENBQzlFLENBQUM7SUFFRixNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUV0QixNQUFNLFNBQVMsR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pFLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDO0lBRXZDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUU7UUFDckMsU0FBUztRQUNULE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztRQUN0QixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7UUFDaEMsV0FBVztLQUNaLENBQUMsQ0FBQztJQUVILE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLElBQUksK0JBQWUsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRS9DLE9BQU8sQ0FBQyxHQUFHLENBQ1QsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUN0QixLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FDakQsQ0FBQztBQUNKLENBQUM7QUFFRCxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUUsQ0FBQztBQUNULENBQUM7QUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO0lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FDWCxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFDM0IsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUN2RCxDQUFDO0lBRUYsSUFBSSxLQUFLLFlBQVksS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IFBpcGVsaW5lQnVpbGRlciwgQnVpbGRlclByb3BzIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZSc7XG5pbXBvcnQgeyBBcHAsIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5cbmNvbnN0IHsgY3lhbiwgZ3JlZW4sIGRpbSwgYm9sZCwgbWFnZW50YSwgcmVkIH0gPSBwaWNvO1xuXG5jb25zdCBhcHAgPSBuZXcgQXBwKCk7XG5cbi8qKlxuICogUGFyc2UgUElQRUxJTkVfUFJPUFMgZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZSAoYmFzZTY0LWVuY29kZWQgSlNPTikuXG4gKiBUaGlzIGlzIGFsd2F5cyBzZXQgYnkgdGhlIGBzeW50aGAgb3IgYGRlcGxveWAgY29tbWFuZCBiZWZvcmUgaW52b2tpbmcgYm9pbGVycGxhdGUuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlKCk6IEJ1aWxkZXJQcm9wcyB7XG4gIGNvbnN0IGVuY29kZWRQcm9wcyA9IHByb2Nlc3MuZW52LlBJUEVMSU5FX1BST1BTO1xuXG4gIGlmICghZW5jb2RlZFByb3BzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1BJUEVMSU5FX1BST1BTIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG1pc3NpbmcuICcgK1xuICAgICAgJ1VzZSBcInBpcGVsaW5lLW1hbmFnZXIgc3ludGggLS1pZCA8aWQ+XCIgb3IgXCJwaXBlbGluZS1tYW5hZ2VyIGRlcGxveSAtLWlkIDxpZD5cIiB0byBzZXQgaXQuJyxcbiAgICApO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBkZWNvZGVkID0gQnVmZmVyLmZyb20oZW5jb2RlZFByb3BzLCAnYmFzZTY0JykudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoZGVjb2RlZCkgYXMgQnVpbGRlclByb3BzO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBGYWlsZWQgdG8gcGFyc2UgUElQRUxJTkVfUFJPUFM6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnSW52YWxpZCBCYXNlNjQvSlNPTiBmb3JtYXQnfWAsXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYWluKCk6IHZvaWQge1xuICBjb25zdCBleGVjdXRpb25JZCA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg3KS50b1VwcGVyQ2FzZSgpO1xuXG4gIGNvbnNvbGUubG9nKFxuICAgIGAke21hZ2VudGEoYFtDREstQVBQLSR7ZXhlY3V0aW9uSWR9XWApfSAke2N5YW4oJ1BpcGVsaW5lIGJ1aWxkZXIgc3RhcnRpbmcnKX1gLFxuICApO1xuXG4gIGNvbnN0IHByb3BzID0gcGFyc2UoKTtcblxuICBjb25zdCBzdGFja05hbWUgPSBgJHtwcm9wcy5wcm9qZWN0fS0ke3Byb3BzLm9yZ2FuaXphdGlvbn1gLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IGNvbXBvbmVudElkID0gJ3BpcGVsaW5lLWJ1aWxkZXInO1xuXG4gIGNvbnNvbGUubG9nKCdQaXBlbGluZSBjb25maWd1cmF0aW9uOicsIHtcbiAgICBzdGFja05hbWUsXG4gICAgcHJvamVjdDogcHJvcHMucHJvamVjdCxcbiAgICBvcmdhbml6YXRpb246IHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICBjb21wb25lbnRJZCxcbiAgfSk7XG5cbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCBzdGFja05hbWUsIHt9KTtcbiAgbmV3IFBpcGVsaW5lQnVpbGRlcihzdGFjaywgY29tcG9uZW50SWQsIHByb3BzKTtcblxuICBjb25zb2xlLmxvZyhcbiAgICBncmVlbihib2xkKCdTdWNjZXNzJykpLFxuICAgIGdyZWVuKCdDREsgY29uc3RydWN0cyBzeW50aGVzaXplZCBzdWNjZXNzZnVsbHknKSxcbiAgKTtcbn1cblxudHJ5IHtcbiAgbWFpbigpO1xufSBjYXRjaCAoZXJyb3IpIHtcbiAgY29uc29sZS5lcnJvcihcbiAgICBib2xkKHJlZCgnW0JVSUxEIEZBSUxFRF0nKSksXG4gICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICApO1xuXG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLnN0YWNrKSB7XG4gICAgY29uc29sZS5lcnJvcihkaW0oZXJyb3Iuc3RhY2spKTtcbiAgfVxuXG4gIHByb2Nlc3MuZXhpdCgxKTtcbn1cbiJdfQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9pbGVycGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYm9pbGVycGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLGVBQWUsRUFBcUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFFOUIsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRXRELE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFFdEI7OztHQUdHO0FBQ0gsU0FBUyxLQUFLO0lBQ1osTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7SUFFaEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQ2Isa0RBQWtEO1lBQ2xELDBGQUEwRixDQUMzRixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFpQixDQUFDO0lBQzdDLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FDYixtQ0FBbUMsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsNEJBQTRCLEVBQUUsQ0FDM0csQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxJQUFJO0lBQ1gsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFMUUsT0FBTyxDQUFDLEdBQUcsQ0FDVCxHQUFHLE9BQU8sQ0FBQyxZQUFZLFdBQVcsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FDOUUsQ0FBQztJQUVGLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDO0lBRXRCLE1BQU0sU0FBUyxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekUsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUM7SUFFdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRTtRQUNyQyxTQUFTO1FBQ1QsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtRQUNoQyxXQUFXO0tBQ1osQ0FBQyxDQUFDO0lBRUgsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxJQUFJLGVBQWUsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRS9DLE9BQU8sQ0FBQyxHQUFHLENBQ1QsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUN0QixLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FDakQsQ0FBQztBQUNKLENBQUM7QUFFRCxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUUsQ0FBQztBQUNULENBQUM7QUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO0lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FDWCxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFDM0IsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUN2RCxDQUFDO0lBRUYsSUFBSSxLQUFLLFlBQVksS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IFBpcGVsaW5lQnVpbGRlciwgdHlwZSBCdWlsZGVyUHJvcHMgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1jb3JlJztcbmltcG9ydCB7IEFwcCwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcblxuY29uc3QgeyBjeWFuLCBncmVlbiwgZGltLCBib2xkLCBtYWdlbnRhLCByZWQgfSA9IHBpY287XG5cbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcblxuLyoqXG4gKiBQYXJzZSBQSVBFTElORV9QUk9QUyBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlIChiYXNlNjQtZW5jb2RlZCBKU09OKS5cbiAqIFRoaXMgaXMgYWx3YXlzIHNldCBieSB0aGUgYHN5bnRoYCBvciBgZGVwbG95YCBjb21tYW5kIGJlZm9yZSBpbnZva2luZyBib2lsZXJwbGF0ZS5cbiAqL1xuZnVuY3Rpb24gcGFyc2UoKTogQnVpbGRlclByb3BzIHtcbiAgY29uc3QgZW5jb2RlZFByb3BzID0gcHJvY2Vzcy5lbnYuUElQRUxJTkVfUFJPUFM7XG5cbiAgaWYgKCFlbmNvZGVkUHJvcHMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnUElQRUxJTkVfUFJPUFMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbWlzc2luZy4gJyArXG4gICAgICAnVXNlIFwicGlwZWxpbmUtbWFuYWdlciBzeW50aCAtLWlkIDxpZD5cIiBvciBcInBpcGVsaW5lLW1hbmFnZXIgZGVwbG95IC0taWQgPGlkPlwiIHRvIHNldCBpdC4nLFxuICAgICk7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGRlY29kZWQgPSBCdWZmZXIuZnJvbShlbmNvZGVkUHJvcHMsICdiYXNlNjQnKS50b1N0cmluZygndXRmLTgnKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShkZWNvZGVkKSBhcyBCdWlsZGVyUHJvcHM7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEZhaWxlZCB0byBwYXJzZSBQSVBFTElORV9QUk9QUzogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdJbnZhbGlkIEJhc2U2NC9KU09OIGZvcm1hdCd9YCxcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1haW4oKTogdm9pZCB7XG4gIGNvbnN0IGV4ZWN1dGlvbklkID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDcpLnRvVXBwZXJDYXNlKCk7XG5cbiAgY29uc29sZS5sb2coXG4gICAgYCR7bWFnZW50YShgW0NESy1BUFAtJHtleGVjdXRpb25JZH1dYCl9ICR7Y3lhbignUGlwZWxpbmUgYnVpbGRlciBzdGFydGluZycpfWAsXG4gICk7XG5cbiAgY29uc3QgcHJvcHMgPSBwYXJzZSgpO1xuXG4gIGNvbnN0IHN0YWNrTmFtZSA9IGAke3Byb3BzLnByb2plY3R9LSR7cHJvcHMub3JnYW5pemF0aW9ufWAudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgY29tcG9uZW50SWQgPSAncGlwZWxpbmUtYnVpbGRlcic7XG5cbiAgY29uc29sZS5sb2coJ1BpcGVsaW5lIGNvbmZpZ3VyYXRpb246Jywge1xuICAgIHN0YWNrTmFtZSxcbiAgICBwcm9qZWN0OiBwcm9wcy5wcm9qZWN0LFxuICAgIG9yZ2FuaXphdGlvbjogcHJvcHMub3JnYW5pemF0aW9uLFxuICAgIGNvbXBvbmVudElkLFxuICB9KTtcblxuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayhhcHAsIHN0YWNrTmFtZSwge30pO1xuICBuZXcgUGlwZWxpbmVCdWlsZGVyKHN0YWNrLCBjb21wb25lbnRJZCwgcHJvcHMpO1xuXG4gIGNvbnNvbGUubG9nKFxuICAgIGdyZWVuKGJvbGQoJ1N1Y2Nlc3MnKSksXG4gICAgZ3JlZW4oJ0NESyBjb25zdHJ1Y3RzIHN5bnRoZXNpemVkIHN1Y2Nlc3NmdWxseScpLFxuICApO1xufVxuXG50cnkge1xuICBtYWluKCk7XG59IGNhdGNoIChlcnJvcikge1xuICBjb25zb2xlLmVycm9yKFxuICAgIGJvbGQocmVkKCdbQlVJTEQgRkFJTEVEXScpKSxcbiAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvciksXG4gICk7XG5cbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyb3Iuc3RhY2spIHtcbiAgICBjb25zb2xlLmVycm9yKGRpbShlcnJvci5zdGFjaykpO1xuICB9XG5cbiAgcHJvY2Vzcy5leGl0KDEpO1xufVxuIl19
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAoCA;;GAEG;AACH,UAAU,UAAU;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAwOD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CAyD5D;AAiDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CA0BnD"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAuCA;;GAEG;AACH,UAAU,UAAU;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAyOD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CAyD5D;AAiDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CA0BnD"}