@intentius/chant-lexicon-aws 0.13.1 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/dist/components/__tests__/mock-cloud-executor.d.ts +106 -0
  2. package/dist/components/__tests__/mock-cloud-executor.d.ts.map +1 -0
  3. package/dist/components/apply.d.ts +242 -0
  4. package/dist/components/apply.d.ts.map +1 -0
  5. package/dist/components/builders.d.ts +37 -0
  6. package/dist/components/builders.d.ts.map +1 -0
  7. package/dist/components/capability-plugin.d.ts +23 -0
  8. package/dist/components/capability-plugin.d.ts.map +1 -0
  9. package/dist/components/cloud-executor.d.ts +350 -0
  10. package/dist/components/cloud-executor.d.ts.map +1 -0
  11. package/dist/components/config-bom.d.ts +135 -0
  12. package/dist/components/config-bom.d.ts.map +1 -0
  13. package/dist/components/host-delivery.d.ts +110 -0
  14. package/dist/components/host-delivery.d.ts.map +1 -0
  15. package/dist/components/index.d.ts +19 -0
  16. package/dist/components/index.d.ts.map +1 -0
  17. package/dist/components/job-submission.d.ts +89 -0
  18. package/dist/components/job-submission.d.ts.map +1 -0
  19. package/dist/components/publish.d.ts +194 -0
  20. package/dist/components/publish.d.ts.map +1 -0
  21. package/dist/components/safety.d.ts +49 -0
  22. package/dist/components/safety.d.ts.map +1 -0
  23. package/dist/components/wait-aws.d.ts +65 -0
  24. package/dist/components/wait-aws.d.ts.map +1 -0
  25. package/dist/generated/index.d.ts +68 -40
  26. package/dist/generated/index.d.ts.map +1 -1
  27. package/dist/import/live-export.d.ts.map +1 -1
  28. package/dist/index.d.ts +1 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/integrity.json +4 -4
  31. package/dist/lint/audit-catalog.d.ts +10 -0
  32. package/dist/lint/audit-catalog.d.ts.map +1 -0
  33. package/dist/manifest.json +1 -1
  34. package/dist/meta.json +893 -737
  35. package/dist/op/activities/floci.d.ts +54 -0
  36. package/dist/op/activities/floci.d.ts.map +1 -0
  37. package/dist/op/activities/index.d.ts +8 -0
  38. package/dist/op/activities/index.d.ts.map +1 -0
  39. package/dist/ownership.d.ts +10 -0
  40. package/dist/ownership.d.ts.map +1 -0
  41. package/dist/plugin.d.ts.map +1 -1
  42. package/dist/serializer.d.ts.map +1 -1
  43. package/dist/types/index.d.ts +905 -659
  44. package/package.json +12 -2
  45. package/src/components/__fixtures__/schemas/cyclonedx-1.5.schema.json +3800 -0
  46. package/src/components/__fixtures__/schemas/cyclonedx-spdx-license.schema.json +621 -0
  47. package/src/components/__fixtures__/schemas/jsf-0.82.schema.json +240 -0
  48. package/src/components/__fixtures__/schemas/spdx-2.3.schema.json +740 -0
  49. package/src/components/__fixtures__/synthesized-template.json +53 -0
  50. package/src/components/__tests__/mock-cloud-executor.ts +425 -0
  51. package/src/components/apply.test.ts +382 -0
  52. package/src/components/apply.ts +499 -0
  53. package/src/components/builders.test.ts +49 -0
  54. package/src/components/builders.ts +59 -0
  55. package/src/components/capability-plugin.ts +73 -0
  56. package/src/components/cloud-executor.test.ts +25 -0
  57. package/src/components/cloud-executor.ts +814 -0
  58. package/src/components/config-bom.test.ts +273 -0
  59. package/src/components/config-bom.ts +310 -0
  60. package/src/components/host-delivery.test.ts +121 -0
  61. package/src/components/host-delivery.ts +193 -0
  62. package/src/components/index.ts +19 -0
  63. package/src/components/job-submission.test.ts +97 -0
  64. package/src/components/job-submission.ts +138 -0
  65. package/src/components/pilots-e2e.test.ts +460 -0
  66. package/src/components/presets-e2e.test.ts +166 -0
  67. package/src/components/publish.test.ts +318 -0
  68. package/src/components/publish.ts +356 -0
  69. package/src/components/safety.test.ts +47 -0
  70. package/src/components/safety.ts +78 -0
  71. package/src/components/wait-aws.test.ts +79 -0
  72. package/src/components/wait-aws.ts +132 -0
  73. package/src/generated/index.d.ts +905 -659
  74. package/src/generated/index.ts +79 -51
  75. package/src/generated/lexicon-aws.json +893 -737
  76. package/src/import/live-export.ts +2 -1
  77. package/src/index.ts +5 -0
  78. package/src/lint/audit-catalog.ts +45 -0
  79. package/src/lsp/completions.test.ts +4 -2
  80. package/src/op/activities/floci.test.ts +67 -0
  81. package/src/op/activities/floci.ts +149 -0
  82. package/src/op/activities/index.ts +16 -0
  83. package/src/ownership.test.ts +18 -0
  84. package/src/ownership.ts +15 -0
  85. package/src/plugin.ts +3 -0
  86. package/src/serializer.ts +2 -1
@@ -0,0 +1,106 @@
1
+ /**
2
+ * `MockCloudExecutor` — an in-memory fake of `CloudExecutor` (../cloud-executor.ts)
3
+ * for tests. No live AWS, no live docker: every method records its call and
4
+ * returns/derives a canned result, with enough state (a fake stack registry, a
5
+ * fake deployment registry, a fake cluster registry) to exercise realistic
6
+ * scenarios — a changeset that proposes a replacement, a stack that takes a
7
+ * few polls to go terminal, a CodeDeploy deployment that fails then rolls back,
8
+ * a cluster that becomes healthy after enough members join.
9
+ *
10
+ * Every capability factory in `../*.ts` accepts a `CloudExecutor`, so a test
11
+ * builds one `MockCloudExecutor` and passes it to every `create*Capability`
12
+ * under test — never touching the real, `child_process`/`net`-backed
13
+ * executor in `../cloud-executor.ts`.
14
+ */
15
+ import type { CfnChange, CloudExecutor, EcsServiceState } from "../cloud-executor.js";
16
+ import type { Neo4jClusterClient } from "@intentius/chant/components/verbs/cloud-executor";
17
+ /** The mock's executor is a superset of the aws `CloudExecutor` plus the agnostic Neo4j client, so it satisfies both aws-leaf and core-agnostic capability factories in the e2e suites. */
18
+ type MockExecutor = CloudExecutor & {
19
+ neo4j: Neo4jClusterClient;
20
+ };
21
+ export interface RecordedCall {
22
+ client: string;
23
+ method: string;
24
+ args: unknown;
25
+ }
26
+ /** Scripted behavior for one fake CloudFormation stack. */
27
+ export interface FakeStackConfig {
28
+ /** Changes CloudFormation would propose for the next changeset created against this stack. Default: no changes (no-op update). */
29
+ changes?: CfnChange[];
30
+ /** Outputs the stack reports once terminal. */
31
+ outputs?: Record<string, string>;
32
+ /** Terminal status reported after `executeChangeSet` (or from the start, if the stack pre-exists). Default: "UPDATE_COMPLETE". */
33
+ terminalStatus?: string;
34
+ /** True if this is a brand-new stack (no prior stack) — affects `isCreate`. Default: false. */
35
+ isCreate?: boolean;
36
+ }
37
+ export interface FakeDeploymentConfig {
38
+ /** Terminal status CodeDeploy reports for this deployment. Default: "Succeeded". */
39
+ terminalStatus?: "Succeeded" | "Failed" | "Stopped";
40
+ }
41
+ export interface FakeClusterConfig {
42
+ /** Number of bolt endpoints (out of however many `cluster` lists) that report healthy. Default: all of them. */
43
+ healthyCount?: number;
44
+ }
45
+ export interface FakeLambdaConfig {
46
+ /** Alias -> version this function's alias currently resolves to, before any deploy in the test runs. */
47
+ aliasVersions?: Record<string, string>;
48
+ /** Force `waitForUpdate` to report a failed code update (simulates a bad image). */
49
+ failUpdate?: boolean;
50
+ }
51
+ /** Scripted behavior for one fake EMR job run. */
52
+ export interface FakeJobRunConfig {
53
+ /** Terminal state reported once the run "completes". Default: "COMPLETED". */
54
+ terminalState?: "COMPLETED" | "FAILED" | "CANCELLED";
55
+ }
56
+ export interface MockCloudExecutorOptions {
57
+ stacks?: Record<string, FakeStackConfig>;
58
+ deployments?: Record<string, FakeDeploymentConfig>;
59
+ clusters?: Record<string, FakeClusterConfig>;
60
+ /** ECS service states keyed by `cluster/service`, evolved by `updateService`/`rollbackService` calls. */
61
+ ecsServices?: Record<string, EcsServiceState>;
62
+ /** Force every docker/ecr call to fail (simulates a build/push failure). */
63
+ failDocker?: boolean;
64
+ /** Force every `host` (registry-less `load-image-on-host`) call to fail (simulates an unreachable host). */
65
+ failHost?: boolean;
66
+ /** Lambda functions keyed by function name. */
67
+ lambdas?: Record<string, FakeLambdaConfig>;
68
+ /** Scripted job runs keyed by the run id the test expects (see `MockCloudExecutor.setJobRun` for post-construction control, e.g. before the run id is known). */
69
+ jobRuns?: Record<string, FakeJobRunConfig>;
70
+ /** Object counts `s3.sync` reports (uploaded always; deleted only when the call passes `delete: true`). */
71
+ s3Sync?: {
72
+ uploaded?: number;
73
+ deleted?: number;
74
+ };
75
+ /** Canned stdout `host.exec` returns (e.g. a byte count for `copy-to-host`, or command output for `remote-exec`). */
76
+ hostExecStdout?: string;
77
+ /** Result `ecs.waitForTask` reports for a one-off `run-task` (e.g. a migration task). Default: clean exit (`STOPPED`, exit 0). */
78
+ ecsTask?: {
79
+ lastStatus?: string;
80
+ exitCode?: number;
81
+ stoppedReason?: string;
82
+ };
83
+ /** Result `lambda.invoke` returns. Default: `{ statusCode: 200, payload: "" }`. */
84
+ lambdaInvoke?: {
85
+ statusCode?: number;
86
+ payload?: string;
87
+ functionError?: string;
88
+ };
89
+ }
90
+ /** An injected `CloudExecutor` plus the call log and stack-status controls tests use to script scenarios and assert on I/O. */
91
+ export interface MockCloudExecutor {
92
+ executor: MockExecutor;
93
+ calls: RecordedCall[];
94
+ /** Change a stack's terminal status/outputs/changes after construction (e.g. to simulate a later poll succeeding). */
95
+ setStack(name: string, config: FakeStackConfig): void;
96
+ /** Change a deployment's terminal status after construction. */
97
+ setDeployment(id: string, config: FakeDeploymentConfig): void;
98
+ /** Change how many cluster members report healthy after construction (simulates a follower catching up). */
99
+ setClusterHealth(cluster: string, healthyCount: number): void;
100
+ /** Change a job run's terminal state after construction (e.g. once its runId is known from a prior `startJobRun` call). */
101
+ setJobRun(runId: string, config: FakeJobRunConfig): void;
102
+ }
103
+ /** Build a fresh mock `CloudExecutor`. Every method is deterministic and synchronous-fast — no real polling delay. */
104
+ export declare function createMockCloudExecutor(options?: MockCloudExecutorOptions): MockCloudExecutor;
105
+ export {};
106
+ //# sourceMappingURL=mock-cloud-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-cloud-executor.d.ts","sourceRoot":"","sources":["../../../src/components/__tests__/mock-cloud-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,242 @@
1
+ /**
2
+ * apply family — the most cloud-shaped family (see docs/components/cloud-boundary).
3
+ * AWS leaves for this starter set: cfn-deploy, ecs-update-service,
4
+ * lambda-deploy, s3-sync, cdn-invalidate, run-migration.
5
+ *
6
+ * `cfn-deploy` carries declarative safety options (changeset preview,
7
+ * `onReplace`, `stageGsi`) — sticky per-resource knowledge (a DynamoDB GSI
8
+ * updates one at a time; a key-schema change forces replacement) lives inside
9
+ * the capability, configured by options, never scripted per component. See
10
+ * docs/components/capabilities.mdx#stickiness-lives-in-the-capability.
11
+ *
12
+ * `cfn-deploy` and `ecs-update-service` are real implementations (#557, epic
13
+ * #551) over the injectable `CloudExecutor` (./cloud-executor.ts).
14
+ * `lambda-deploy` gained a real implementation in #558 (epic #551) — the one
15
+ * new capability the fourth, genuinely different validation component
16
+ * (image-processor-lambda) needed; see ../SPRAWL-VALIDATION.md. `s3-sync`,
17
+ * `cdn-invalidate`, and `run-migration` are also real over the same executor —
18
+ * `run-migration` dispatches on its target transport (ECS one-off task, Lambda
19
+ * invoke, or SSM host command).
20
+ */
21
+ import type { Capability } from "@intentius/chant/components/capability";
22
+ import { type CfnChange, type CloudExecutor } from "./cloud-executor.js";
23
+ /**
24
+ * How `cfn-deploy` handles a changeset that requires resource replacement.
25
+ * - `block`: refuse to apply; surface the changeset for human review.
26
+ * - `allow`: apply the replacement as CloudFormation proposes it.
27
+ * - `snapshot-first`: take a `snapshot-before` capture, then allow the replacement.
28
+ */
29
+ export type CfnReplacePolicy = "block" | "allow" | "snapshot-first";
30
+ export interface CfnDeployInput {
31
+ /**
32
+ * Stack name. Optional because an `infra`-archetype component with a single
33
+ * stack per component (e.g. the DynamoDB pilot) may omit it and let it
34
+ * default to `ctx.component` — the component name doubles as the stack
35
+ * name, the same identifier the sibling `wait-for-stack` step in that
36
+ * pilot's Verify phase references explicitly.
37
+ */
38
+ stack?: string;
39
+ /** Path to the template, or an archive-relative reference (`archive:search.template.json`). */
40
+ template: string;
41
+ /** Template parameters, including wired references (e.g. `imageRef: "@Publish.digest"`). */
42
+ inputs?: Record<string, string>;
43
+ /** Image reference wired from a `docker-build`/`publish-image` step (e.g. `"@Publish.digest"`, already resolved by the driver). Passed through as the `ImageRef` template parameter. */
44
+ imageRef?: string;
45
+ /** Preview the changeset before applying. Default: true. */
46
+ previewChangeset?: boolean;
47
+ /** Replacement safety policy. Default: "block". */
48
+ onReplace?: CfnReplacePolicy;
49
+ /** Stage DynamoDB GSI changes (add-then-backfill-then-remove) instead of an in-place replace. Default: false. */
50
+ stageGsi?: boolean;
51
+ }
52
+ export interface CfnDeployOutput {
53
+ /** Final stack status (`CREATE_COMPLETE`, `UPDATE_COMPLETE`, ...). */
54
+ stackStatus: string;
55
+ /** Stack outputs, available to downstream steps/components. */
56
+ outputs: Record<string, string>;
57
+ /** Snapshot id captured before an `onReplace: "snapshot-first"` replacement, if one was taken. */
58
+ snapshotId?: string;
59
+ }
60
+ /**
61
+ * Thrown when a changeset proposes a resource replacement and `onReplace` is
62
+ * `"block"` (the default) — refusing to apply rather than silently destroying
63
+ * and recreating a resource, which for a stateful resource (a DynamoDB table,
64
+ * an RDS instance) means data loss. Carries the specific resources CloudFormation
65
+ * proposed replacing, so the caller/human reviewing the changeset knows exactly
66
+ * what was refused.
67
+ */
68
+ export declare class CfnReplacementBlockedError extends Error {
69
+ readonly stack: string;
70
+ readonly replacements: CfnChange[];
71
+ constructor(stack: string, replacements: CfnChange[]);
72
+ }
73
+ /**
74
+ * Deploy a CloudFormation stack: create a changeset, apply the declarative
75
+ * safety policy against its proposed changes, then execute (or refuse) it and
76
+ * wait for the stack to reach a terminal status.
77
+ *
78
+ * - `onReplace: "block"` (default) — `CfnReplacementBlockedError` if any
79
+ * change requires replacement; the changeset is left/deleted unexecuted.
80
+ * - `onReplace: "allow"` — executes regardless of replacement.
81
+ * - `onReplace: "snapshot-first"` — takes a `snapshot-before`-style capture
82
+ * (via `executor.cloudformation`'s DynamoDB/RDS-aware snapshot, when the
83
+ * replaced resource is a stateful type) before executing.
84
+ * - `stageGsi` records intent only in this phase (the real add→backfill→remove
85
+ * staging is DynamoDB-specific choreography layered on top of the plain
86
+ * changeset apply; Phase 1 surfaces the option and passes it through
87
+ * uninterpreted rather than half-implementing GSI staging, since staging
88
+ * requires a second follow-up deploy the single-step `cfn-deploy` capability
89
+ * does not orchestrate on its own).
90
+ *
91
+ * Rollback: trigger CloudFormation's native `rollback-stack` — the stack's own
92
+ * automatic-rollback mechanism restores the last known-good state.
93
+ */
94
+ export declare function createCfnDeployCapability(executor?: CloudExecutor): Capability<CfnDeployInput, CfnDeployOutput>;
95
+ /** Default `cfn-deploy` capability, backed by the real `CloudExecutor`. */
96
+ export declare const cfnDeployCapability: Capability<CfnDeployInput, CfnDeployOutput>;
97
+ export interface EcsUpdateServiceInput {
98
+ /** ECS cluster name or ARN. */
99
+ cluster: string;
100
+ /** ECS service name. */
101
+ service: string;
102
+ /** Task definition/image reference to roll out (e.g. `"@Publish.digest"`). */
103
+ imageRef?: string;
104
+ /** Desired task count. Omit to leave unchanged. */
105
+ desiredCount?: number;
106
+ /** Force a new deployment even if the task definition is unchanged. Default: false. */
107
+ forceNewDeployment?: boolean;
108
+ }
109
+ export interface EcsUpdateServiceOutput {
110
+ /** ARN of the new/updated service deployment. */
111
+ deploymentId: string;
112
+ }
113
+ /**
114
+ * Roll a new task definition/image out to an ECS service via `UpdateService`.
115
+ * Rollback re-invokes `updateService` with the same input — a best-effort
116
+ * capability-level compensation for the common case (recorded here so the
117
+ * capability is never rollback-silent); a component whose service swap needs
118
+ * a specific prior task definition/count restored (rather than a re-apply of
119
+ * the same input) supplies its own explicit rollback phase instead, as the
120
+ * ALB/ECS pilot does with `rollback-previous`.
121
+ */
122
+ export declare function createEcsUpdateServiceCapability(executor?: CloudExecutor): Capability<EcsUpdateServiceInput, EcsUpdateServiceOutput>;
123
+ /** Default `ecs-update-service` capability, backed by the real `CloudExecutor`. */
124
+ export declare const ecsUpdateServiceCapability: Capability<EcsUpdateServiceInput, EcsUpdateServiceOutput>;
125
+ export interface LambdaDeployInput {
126
+ /** Function name or ARN. */
127
+ functionName: string;
128
+ /** Reference to the packaged code — an image URI (e.g. `"@Publish.uri"` from `publish-image`) for a container-image function. */
129
+ codeRef: string;
130
+ /** Publish a new immutable version after updating code. Default: true. */
131
+ publish?: boolean;
132
+ /** Alias to repoint at the new version (e.g. "live"). */
133
+ alias?: string;
134
+ }
135
+ export interface LambdaDeployOutput {
136
+ /** Published function version. */
137
+ version: string;
138
+ /** Function ARN (version-qualified if `publish` was true). */
139
+ functionArn: string;
140
+ }
141
+ /**
142
+ * Update a Lambda function's code to a new container image, wait for the
143
+ * update to apply, and (by default) publish an immutable version and repoint
144
+ * `alias` at it — the same digest-promotion invariant every other apply verb
145
+ * follows (`imageRef`/`codeRef` is a resolved `publish-image` digest, never a
146
+ * rebuild). Rollback restores whatever version `alias` pointed at before this
147
+ * step ran (captured up front), repointing the alias back — mirroring
148
+ * `ecs-update-service`'s best-effort re-apply style rather than a native
149
+ * automatic rollback (Lambda has none for code updates).
150
+ */
151
+ export declare function createLambdaDeployCapability(executor?: CloudExecutor): Capability<LambdaDeployInput, LambdaDeployOutput>;
152
+ /** Default `lambda-deploy` capability, backed by the real `CloudExecutor`. */
153
+ export declare const lambdaDeployCapability: Capability<LambdaDeployInput, LambdaDeployOutput>;
154
+ export interface S3SyncInput {
155
+ /** Local path or archive-relative path to sync from. */
156
+ from: string;
157
+ /** Destination S3 URI (e.g. `s3://bucket/prefix`). */
158
+ to: string;
159
+ /** Delete destination keys not present in the source. Default: false. */
160
+ delete?: boolean;
161
+ }
162
+ export interface S3SyncOutput {
163
+ /** Number of objects uploaded. */
164
+ uploaded: number;
165
+ /** Number of objects deleted (when `delete: true`). */
166
+ deleted: number;
167
+ }
168
+ /** Sync a directory of static assets to an S3 bucket via `aws s3 sync` (endpoint-aware through the `CloudExecutor`). */
169
+ export declare function createS3SyncCapability(executor?: CloudExecutor): Capability<S3SyncInput, S3SyncOutput>;
170
+ /** Default `s3-sync` capability, backed by the real `CloudExecutor`. */
171
+ export declare const s3SyncCapability: Capability<S3SyncInput, S3SyncOutput>;
172
+ export interface CdnInvalidateInput {
173
+ /** CloudFront distribution id. */
174
+ distributionId: string;
175
+ /** Path patterns to invalidate. Default: `["/*"]`. */
176
+ paths?: string[];
177
+ }
178
+ export interface CdnInvalidateOutput {
179
+ /** Invalidation batch id, for polling completion. */
180
+ invalidationId: string;
181
+ }
182
+ /** Invalidate CDN cache paths after a content update (e.g. following `s3-sync`), via `aws cloudfront create-invalidation`. */
183
+ export declare function createCdnInvalidateCapability(executor?: CloudExecutor): Capability<CdnInvalidateInput, CdnInvalidateOutput>;
184
+ /** Default `cdn-invalidate` capability, backed by the real `CloudExecutor`. */
185
+ export declare const cdnInvalidateCapability: Capability<CdnInvalidateInput, CdnInvalidateOutput>;
186
+ /**
187
+ * Where a migration runs. Discriminated on `via` so the composition grammar
188
+ * stays honest about the transport (each is a different AWS surface), while the
189
+ * verb reports a single `{applied, version}` regardless.
190
+ * - `ecs-task`: run the migration image as a one-off ECS/Fargate task (the most
191
+ * common DB-migration transport — a Rails/Django/Flyway `migrate` container).
192
+ * - `lambda`: synchronously invoke a migration function.
193
+ * - `host`: run a migration command on an SSM-managed host (reuses the same
194
+ * transport as `remote-exec`).
195
+ */
196
+ export type MigrationTarget = {
197
+ via: "ecs-task";
198
+ cluster: string;
199
+ taskDefinition: string;
200
+ /** Container to override the command on; defaults to the task def's single container. */
201
+ container?: string;
202
+ /** Command (argv) the migration runs; omit to use the task def's own command. */
203
+ command?: string[];
204
+ launchType?: "FARGATE" | "EC2";
205
+ subnets?: string[];
206
+ securityGroups?: string[];
207
+ assignPublicIp?: boolean;
208
+ } | {
209
+ via: "lambda";
210
+ function: string;
211
+ payload?: string;
212
+ } | {
213
+ via: "host";
214
+ host: string;
215
+ command: string;
216
+ cwd?: string;
217
+ };
218
+ export interface RunMigrationInput {
219
+ /** Migration tool/runner identifier (e.g. "flyway", "prisma", "custom"). Informational — recorded for provenance, does not change the transport. */
220
+ tool: string;
221
+ /** Where the migration runs. */
222
+ target: MigrationTarget;
223
+ /** Reference to the migration artifact (e.g. `"@Publish.digest"` for a migration image). Informational. */
224
+ artifactRef?: string;
225
+ }
226
+ export interface RunMigrationOutput {
227
+ /** True if any migrations were applied (false if already up to date, when the runner reports it). */
228
+ applied: boolean;
229
+ /** Migration version/checksum reached, when the runner reports one (empty string otherwise). */
230
+ version: string;
231
+ }
232
+ /**
233
+ * Run a database/schema migration against a target as a deploy step, dispatching
234
+ * on the target transport (ECS one-off task, Lambda invoke, or SSM host command)
235
+ * through the injectable `CloudExecutor`. A non-clean outcome (non-zero exit, a
236
+ * Lambda `FunctionError`) throws so the phase fails rather than proceeding on an
237
+ * unmigrated schema.
238
+ */
239
+ export declare function createRunMigrationCapability(executor?: CloudExecutor): Capability<RunMigrationInput, RunMigrationOutput>;
240
+ /** Default `run-migration` capability, backed by the real `CloudExecutor`. */
241
+ export declare const runMigrationCapability: Capability<RunMigrationInput, RunMigrationOutput>;
242
+ //# sourceMappingURL=apply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/components/apply.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Typed step-builders for the aws lexicon's verbs — the same ergonomic sugar
3
+ * core offers for its agnostic verbs (#658), reusing the exported `step`
4
+ * projection from `@intentius/chant/components`. `cfnDeploy({ template })` is
5
+ * exactly `{ kind: "cfn-deploy", template }`, but with per-verb argument
6
+ * checking from each capability's own `Input` type.
7
+ */
8
+ import type { ExtractConfigBomInput } from "./config-bom.js";
9
+ import type { PublishImageInput, PublishArtifactInput } from "./publish.js";
10
+ import type { CfnDeployInput, EcsUpdateServiceInput, LambdaDeployInput, S3SyncInput, CdnInvalidateInput, RunMigrationInput } from "./apply.js";
11
+ import type { EmrStartJobRunInput, EmrSubmitStepInput } from "./job-submission.js";
12
+ import type { CodeDeployInput, CopyToHostInput, RemoteExecInput } from "./host-delivery.js";
13
+ import type { WaitForStackInput, WaitSteadyStateInput, WaitJobInput } from "./wait-aws.js";
14
+ import type { SnapshotBeforeInput, RollbackPreviousInput } from "./safety.js";
15
+ export declare const extractConfigBom: (input: ExtractConfigBomInput) => import("@intentius/chant/components").Step;
16
+ export declare const publishImage: (input: PublishImageInput) => import("@intentius/chant/components").Step;
17
+ export declare const loadImageOnHost: (input: PublishImageInput) => import("@intentius/chant/components").Step;
18
+ export declare const publishArtifact: (input: PublishArtifactInput) => import("@intentius/chant/components").Step;
19
+ /** Alias for {@link publishArtifact} — the docs/epic use both names for the same verb. */
20
+ export declare const publishAsset: (input: PublishArtifactInput) => import("@intentius/chant/components").Step;
21
+ export declare const cfnDeploy: (input: CfnDeployInput) => import("@intentius/chant/components").Step;
22
+ export declare const ecsUpdateService: (input: EcsUpdateServiceInput) => import("@intentius/chant/components").Step;
23
+ export declare const lambdaDeploy: (input: LambdaDeployInput) => import("@intentius/chant/components").Step;
24
+ export declare const s3Sync: (input: S3SyncInput) => import("@intentius/chant/components").Step;
25
+ export declare const cdnInvalidate: (input: CdnInvalidateInput) => import("@intentius/chant/components").Step;
26
+ export declare const runMigration: (input: RunMigrationInput) => import("@intentius/chant/components").Step;
27
+ export declare const emrStartJobRun: (input: EmrStartJobRunInput) => import("@intentius/chant/components").Step;
28
+ export declare const emrSubmitStep: (input: EmrSubmitStepInput) => import("@intentius/chant/components").Step;
29
+ export declare const codeDeploy: (input: CodeDeployInput) => import("@intentius/chant/components").Step;
30
+ export declare const copyToHost: (input: CopyToHostInput) => import("@intentius/chant/components").Step;
31
+ export declare const remoteExec: (input: RemoteExecInput) => import("@intentius/chant/components").Step;
32
+ export declare const waitForStack: (input: WaitForStackInput) => import("@intentius/chant/components").Step;
33
+ export declare const waitSteadyState: (input: WaitSteadyStateInput) => import("@intentius/chant/components").Step;
34
+ export declare const waitJob: (input: WaitJobInput) => import("@intentius/chant/components").Step;
35
+ export declare const snapshotBefore: (input: SnapshotBeforeInput) => import("@intentius/chant/components").Step;
36
+ export declare const rollbackPrevious: (input: RollbackPreviousInput) => import("@intentius/chant/components").Step;
37
+ //# sourceMappingURL=builders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/components/builders.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAG3E,eAAO,MAAM,gBAAgB,8EAAoD,CAAC;AAGlF,eAAO,MAAM,YAAY,0EAA2C,CAAC;AACrE,eAAO,MAAM,eAAe,0EAAgD,CAAC;AAC7E,eAAO,MAAM,eAAe,6EAAiD,CAAC;AAC9E,0FAA0F;AAC1F,eAAO,MAAM,YAAY,6EAAkB,CAAC;AAG5C,eAAO,MAAM,SAAS,uEAAqC,CAAC;AAC5D,eAAO,MAAM,gBAAgB,8EAAoD,CAAC;AAClF,eAAO,MAAM,YAAY,0EAA2C,CAAC;AACrE,eAAO,MAAM,MAAM,oEAA+B,CAAC;AACnD,eAAO,MAAM,aAAa,2EAA6C,CAAC;AACxE,eAAO,MAAM,YAAY,0EAA2C,CAAC;AAGrE,eAAO,MAAM,cAAc,4EAAiD,CAAC;AAC7E,eAAO,MAAM,aAAa,2EAA8C,CAAC;AAGzE,eAAO,MAAM,UAAU,wEAAuC,CAAC;AAC/D,eAAO,MAAM,UAAU,wEAAwC,CAAC;AAChE,eAAO,MAAM,UAAU,wEAAuC,CAAC;AAG/D,eAAO,MAAM,YAAY,0EAA4C,CAAC;AACtE,eAAO,MAAM,eAAe,6EAAkD,CAAC;AAC/E,eAAO,MAAM,OAAO,qEAAiC,CAAC;AAGtD,eAAO,MAAM,cAAc,4EAA+C,CAAC;AAC3E,eAAO,MAAM,gBAAgB,8EAAmD,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * `awsCapabilityPlugin` — the aws lexicon's capability plugin. It contributes
3
+ * every AWS operational leaf (apply, job-submission, host-delivery, safety, the
4
+ * cloud-specific waits, and publish) through core's `CapabilityPlugin` contract
5
+ * (`@intentius/chant/components/capability-plugin`), so a project declaring
6
+ * `lexicons: ["aws"]` gets these verbs registered automatically when it runs
7
+ * components — the seam docs/components/cloud-boundary describes. Core's starter
8
+ * set carries only the agnostic verbs; the cloud leaves live here.
9
+ */
10
+ import type { CapabilityPlugin } from "@intentius/chant/components/capability-plugin";
11
+ /** The AWS verb families this plugin contributes, grouped for `families()` — mirrors core's `STARTER_VERB_FAMILIES` shape. */
12
+ export declare const AWS_VERB_FAMILIES: {
13
+ readonly sbom: readonly ["extract-config-bom"];
14
+ readonly publish: readonly ["publish-image", "load-image-on-host", "publish-artifact"];
15
+ readonly apply: readonly ["cfn-deploy", "ecs-update-service", "lambda-deploy", "s3-sync", "cdn-invalidate", "run-migration"];
16
+ readonly jobSubmission: readonly ["emr-start-job-run", "emr-submit-step"];
17
+ readonly hostDelivery: readonly ["code-deploy", "copy-to-host", "remote-exec"];
18
+ readonly waitVerify: readonly ["wait-for-stack", "wait-steady-state", "wait-job"];
19
+ readonly safety: readonly ["snapshot-before", "rollback-previous"];
20
+ };
21
+ /** The aws lexicon's capability plugin — loaded by core when a project's `chant.config.ts` lists `lexicons: ["aws"]`. */
22
+ export declare const awsCapabilityPlugin: CapabilityPlugin;
23
+ //# sourceMappingURL=capability-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-plugin.d.ts","sourceRoot":"","sources":["../../src/components/capability-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AAiBtF,8HAA8H;AAC9H,eAAO,MAAM,iBAAiB;;;;;;;;CASpB,CAAC;AA4BX,yHAAyH;AACzH,eAAO,MAAM,mBAAmB,EAAE,gBAKjC,CAAC"}