@intentius/chant-lexicon-aws 0.45.0 → 0.49.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.
- package/dist/api/read-client.d.ts +10 -2
- package/dist/api/read-client.d.ts.map +1 -1
- package/dist/components/cloud-executor.d.ts.map +1 -1
- package/dist/composites/agentcore-agent.d.ts +26 -1
- package/dist/composites/agentcore-agent.d.ts.map +1 -1
- package/dist/composites/bucket-deployment.d.ts +82 -0
- package/dist/composites/bucket-deployment.d.ts.map +1 -0
- package/dist/composites/dynamodb-table.d.ts +45 -0
- package/dist/composites/dynamodb-table.d.ts.map +1 -0
- package/dist/composites/ec2-instance-bundle.d.ts +61 -0
- package/dist/composites/ec2-instance-bundle.d.ts.map +1 -0
- package/dist/composites/ecr-repository.d.ts +49 -0
- package/dist/composites/ecr-repository.d.ts.map +1 -0
- package/dist/composites/fargate-service.d.ts +16 -0
- package/dist/composites/fargate-service.d.ts.map +1 -1
- package/dist/composites/index.d.ts +16 -2
- package/dist/composites/index.d.ts.map +1 -1
- package/dist/composites/lambda-function.d.ts +4 -4
- package/dist/composites/lambda-function.d.ts.map +1 -1
- package/dist/composites/monitoring-stack.d.ts +99 -0
- package/dist/composites/monitoring-stack.d.ts.map +1 -0
- package/dist/composites/nlb-service.d.ts +48 -0
- package/dist/composites/nlb-service.d.ts.map +1 -0
- package/dist/composites/step-functions-workflow.d.ts +36 -0
- package/dist/composites/step-functions-workflow.d.ts.map +1 -0
- package/dist/deep-observe.d.ts +45 -0
- package/dist/deep-observe.d.ts.map +1 -1
- package/dist/deep-topology.d.ts +104 -0
- package/dist/deep-topology.d.ts.map +1 -0
- package/dist/effect-receipt-row.d.ts +92 -0
- package/dist/effect-receipt-row.d.ts.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/integrity.json +9 -4
- package/dist/lint/audit-catalog.d.ts.map +1 -1
- package/dist/lint/post-synth/cf-refs.d.ts +24 -0
- package/dist/lint/post-synth/cf-refs.d.ts.map +1 -1
- package/dist/lint/post-synth/index.d.ts.map +1 -1
- package/dist/lint/post-synth/waw059.d.ts +36 -0
- package/dist/lint/post-synth/waw059.d.ts.map +1 -0
- package/dist/lint/post-synth/waw060.d.ts +16 -0
- package/dist/lint/post-synth/waw060.d.ts.map +1 -0
- package/dist/lint/post-synth/waw061.d.ts +19 -0
- package/dist/lint/post-synth/waw061.d.ts.map +1 -0
- package/dist/lint/post-synth/waw062.d.ts +19 -0
- package/dist/lint/post-synth/waw062.d.ts.map +1 -0
- package/dist/lint/post-synth/waw063.d.ts +35 -0
- package/dist/lint/post-synth/waw063.d.ts.map +1 -0
- package/dist/manifest.json +1 -1
- package/dist/okf/index.md +5 -0
- package/dist/okf/rules/WAW059.md +25 -0
- package/dist/okf/rules/WAW060.md +17 -0
- package/dist/okf/rules/WAW061.md +17 -0
- package/dist/okf/rules/WAW062.md +27 -0
- package/dist/okf/rules/WAW063.md +19 -0
- package/dist/okf/types/Action.md +2 -0
- package/dist/okf/types/AutoScalingGroup.md +1 -0
- package/dist/okf/types/Bucket.md +2 -0
- package/dist/okf/types/ECRRepository.md +1 -0
- package/dist/okf/types/Function.md +1 -0
- package/dist/okf/types/GlobalTable.md +4 -0
- package/dist/okf/types/IamPolicy.md +3 -0
- package/dist/okf/types/InstanceProfile.md +4 -0
- package/dist/okf/types/LaunchTemplate.md +1 -0
- package/dist/okf/types/LoadBalancer.md +1 -0
- package/dist/okf/types/ManagedPolicy.md +4 -0
- package/dist/okf/types/Map.md +2 -0
- package/dist/okf/types/Queue.md +1 -0
- package/dist/okf/types/Role.md +3 -0
- package/dist/okf/types/SecurityGroup.md +1 -0
- package/dist/okf/types/StateMachine.md +4 -0
- package/dist/okf/types/Subnet.md +4 -0
- package/dist/okf/types/Table.md +2 -0
- package/dist/okf/types/Type.md +5 -0
- package/dist/okf/types/Vpc.md +1 -0
- package/dist/op/activities/aws-apply.d.ts +48 -5
- package/dist/op/activities/aws-apply.d.ts.map +1 -1
- package/dist/op/activities/index.d.ts +11 -4
- package/dist/op/activities/index.d.ts.map +1 -1
- package/dist/ownership.d.ts +18 -0
- package/dist/ownership.d.ts.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/receipt-store.d.ts +109 -0
- package/dist/receipt-store.d.ts.map +1 -0
- package/dist/rules/cf-refs.ts +62 -0
- package/dist/rules/waw059.ts +353 -0
- package/dist/rules/waw060.ts +91 -0
- package/dist/rules/waw061.ts +67 -0
- package/dist/rules/waw062.ts +0 -0
- package/dist/rules/waw063.ts +0 -0
- package/dist/serializer.d.ts.map +1 -1
- package/dist/skills/chant-aws-carve-terraform.md +26 -23
- package/dist/teardown.d.ts +85 -0
- package/dist/teardown.d.ts.map +1 -0
- package/package.json +3 -3
- package/src/api/read-client.test.ts +9 -0
- package/src/api/read-client.ts +15 -2
- package/src/components/cloud-executor.ts +10 -1
- package/src/composites/agentcore-agent.ts +35 -13
- package/src/composites/bucket-deployment.test.ts +84 -0
- package/src/composites/bucket-deployment.ts +153 -0
- package/src/composites/composites.test.ts +325 -0
- package/src/composites/dynamodb-table.test.ts +154 -0
- package/src/composites/dynamodb-table.ts +124 -0
- package/src/composites/ec2-instance-bundle.ts +134 -0
- package/src/composites/ecr-repository.test.ts +118 -0
- package/src/composites/ecr-repository.ts +117 -0
- package/src/composites/fargate-service.ts +19 -3
- package/src/composites/index.ts +21 -2
- package/src/composites/monitoring-stack.test.ts +130 -0
- package/src/composites/monitoring-stack.ts +164 -0
- package/src/composites/nlb-service.ts +117 -0
- package/src/composites/step-functions-workflow.ts +127 -0
- package/src/deep-observe.test.ts +201 -1
- package/src/deep-observe.ts +204 -0
- package/src/deep-topology.test.ts +392 -0
- package/src/deep-topology.ts +237 -0
- package/src/effect-receipt-row.test.ts +164 -0
- package/src/effect-receipt-row.ts +147 -0
- package/src/index.ts +28 -7
- package/src/lifecycle-integration.test.ts +4 -0
- package/src/lint/audit-catalog.ts +11 -0
- package/src/lint/post-synth/cf-refs.ts +62 -0
- package/src/lint/post-synth/index.ts +10 -0
- package/src/lint/post-synth/waw059.test.ts +309 -0
- package/src/lint/post-synth/waw059.ts +353 -0
- package/src/lint/post-synth/waw060.test.ts +131 -0
- package/src/lint/post-synth/waw060.ts +91 -0
- package/src/lint/post-synth/waw061.test.ts +99 -0
- package/src/lint/post-synth/waw061.ts +67 -0
- package/src/lint/post-synth/waw062.test.ts +109 -0
- package/src/lint/post-synth/waw062.ts +0 -0
- package/src/lint/post-synth/waw063.test.ts +220 -0
- package/src/lint/post-synth/waw063.ts +0 -0
- package/src/op/activities/aws-apply.test.ts +111 -0
- package/src/op/activities/aws-apply.ts +100 -6
- package/src/op/activities/index.ts +20 -3
- package/src/ownership.test.ts +24 -1
- package/src/ownership.ts +37 -0
- package/src/plugin.ts +59 -10
- package/src/receipt-store.test.ts +204 -0
- package/src/receipt-store.ts +315 -0
- package/src/serializer-ownership.test.ts +18 -0
- package/src/serializer.ts +114 -3
- package/src/skills/chant-aws-carve-terraform.md +26 -23
- package/src/teardown.test.ts +258 -0
- package/src/teardown.ts +276 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WAW059: Wildcard Resource where the declared graph enumerates the touched set
|
|
3
|
+
*
|
|
4
|
+
* An identity policy that allows resource-scopable actions on `Resource: "*"`
|
|
5
|
+
* (or a service-wide ARN pattern) when every consumer of the attached role
|
|
6
|
+
* only touches resources declared in the same template. In that case the
|
|
7
|
+
* declared graph already enumerates the touched set, so the statement can be
|
|
8
|
+
* tightened to the `Fn::GetAtt` Arn list of those declared entities.
|
|
9
|
+
*
|
|
10
|
+
* Deliberately narrow (#1225). Fires only when ALL of these hold:
|
|
11
|
+
* - the statement is an `Effect: Allow` identity-policy statement (role inline
|
|
12
|
+
* policy, IAM::Policy, IAM::ManagedPolicy) — trust policies carry a
|
|
13
|
+
* Principal and are skipped, resource policies live on other types;
|
|
14
|
+
* - no Condition/NotAction/NotResource and no intrinsics in Action/Resource;
|
|
15
|
+
* - `Resource` is `"*"` or a service-wide ARN pattern;
|
|
16
|
+
* - every Action is in the curated resource-scopable table (s3, dynamodb,
|
|
17
|
+
* sqs) — actions that genuinely need `"*"` (s3:ListAllMyBuckets,
|
|
18
|
+
* dynamodb:ListTables, sqs:ListQueues) are not in the table;
|
|
19
|
+
* - the attached principal resolves to declared roles only, those roles have
|
|
20
|
+
* consumers in the template, and no consumer carries a foreign edge (a
|
|
21
|
+
* literal ARN of the service) or an intrinsic edge (Fn::ImportValue) that
|
|
22
|
+
* would put resources outside the declared graph in reach.
|
|
23
|
+
*
|
|
24
|
+
* Anything the static graph cannot prove stays quiet.
|
|
25
|
+
*/
|
|
26
|
+
import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
|
|
27
|
+
/**
|
|
28
|
+
* Curated table of actions that support resource-level permissions, per
|
|
29
|
+
* service. Lower-cased (IAM action matching is case-insensitive). An action
|
|
30
|
+
* outside this table gates the whole statement off — it may legitimately
|
|
31
|
+
* require `Resource: "*"`.
|
|
32
|
+
*/
|
|
33
|
+
export declare const RESOURCE_SCOPABLE_ACTIONS: Record<string, ReadonlySet<string>>;
|
|
34
|
+
export declare function checkWildcardResourceEnumerable(ctx: PostSynthContext): PostSynthDiagnostic[];
|
|
35
|
+
export declare const waw059: PostSynthCheck;
|
|
36
|
+
//# sourceMappingURL=waw059.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waw059.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw059.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAW9G;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CA6CzE,CAAC;AA6KF,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAiF5F;AAED,eAAO,MAAM,MAAM,EAAE,cAQpB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WAW060: IAM Policy Attached to No Principal
|
|
3
|
+
*
|
|
4
|
+
* Flags AWS::IAM::Policy / AWS::IAM::ManagedPolicy resources with empty or
|
|
5
|
+
* absent Roles, Users, and Groups that no other part of the template
|
|
6
|
+
* references. A policy attached to no principal grants nothing — the same
|
|
7
|
+
* detached-guardrail shape WAW057 catches for SCPs. Any Ref/GetAtt edge to
|
|
8
|
+
* the policy (a role's ManagedPolicyArns, an attachment-style resource, a
|
|
9
|
+
* stack Output exporting it for another stack to attach) keeps it quiet;
|
|
10
|
+
* plain AWS-managed ARN strings elsewhere are not references to the
|
|
11
|
+
* template's own policy.
|
|
12
|
+
*/
|
|
13
|
+
import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
|
|
14
|
+
export declare function checkPolicyUnattached(ctx: PostSynthContext): PostSynthDiagnostic[];
|
|
15
|
+
export declare const waw060: PostSynthCheck;
|
|
16
|
+
//# sourceMappingURL=waw060.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waw060.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw060.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAsB9G,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CA8ClF;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WAW061: Subnet CIDR Not Contained In VPC CIDR
|
|
3
|
+
*
|
|
4
|
+
* A subnet's CidrBlock must fall entirely inside its VPC's CidrBlock.
|
|
5
|
+
* Stock CDK does not check this — CloudFormation accepts the template and
|
|
6
|
+
* only fails the `AWS::EC2::Subnet` resource at deploy time
|
|
7
|
+
* ("The CIDR ... is invalid" / "does not fall within the CIDR range of the
|
|
8
|
+
* VPC"), after the rest of the stack may have already started rolling out.
|
|
9
|
+
* This is a cheap static graph check: follow the subnet's VpcId Ref to a
|
|
10
|
+
* declared VPC in the same template and do IPv4 CIDR-range math.
|
|
11
|
+
*
|
|
12
|
+
* Stays quiet whenever the graph can't prove it: intrinsic CIDR blocks,
|
|
13
|
+
* IPv6, a VpcId that isn't a simple Ref to a declared AWS::EC2::VPC, or a
|
|
14
|
+
* VPC whose own CidrBlock isn't a literal string.
|
|
15
|
+
*/
|
|
16
|
+
import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
|
|
17
|
+
export declare function checkSubnetCidrContainment(ctx: PostSynthContext): PostSynthDiagnostic[];
|
|
18
|
+
export declare const waw061: PostSynthCheck;
|
|
19
|
+
//# sourceMappingURL=waw061.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waw061.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw061.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAG9G,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAsCvF;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WAW062: Duplicate Name Or Export Within A Template
|
|
3
|
+
*
|
|
4
|
+
* CloudFormation requires certain names to be unique within a single
|
|
5
|
+
* template/stack: `Outputs.*.Export.Name`, and several resource-level
|
|
6
|
+
* "explicit name" properties (LaunchTemplateName, AutoScalingGroupName,
|
|
7
|
+
* GroupName, ...). Stock CDK doesn't catch a collision here — synth
|
|
8
|
+
* succeeds and the stack fails at CloudFormation deploy/changeset time.
|
|
9
|
+
* A duplicate is easy to introduce by copy-pasting a composite invocation
|
|
10
|
+
* (e.g. two EcrRepository or NlbService composites) without varying the
|
|
11
|
+
* explicit name.
|
|
12
|
+
*
|
|
13
|
+
* Only literal string values are compared — anything built from an
|
|
14
|
+
* intrinsic (Fn::Sub, Ref, ...) is statically unprovable and skipped.
|
|
15
|
+
*/
|
|
16
|
+
import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
|
|
17
|
+
export declare function checkDuplicateNamesAndExports(ctx: PostSynthContext): PostSynthDiagnostic[];
|
|
18
|
+
export declare const waw062: PostSynthCheck;
|
|
19
|
+
//# sourceMappingURL=waw062.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waw062.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw062.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAqF9G,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAY1F;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WAW063: IAM Policy Denies An Action It Also Allows
|
|
3
|
+
*
|
|
4
|
+
* IAM evaluates an explicit Deny as an absolute veto: it wins over any
|
|
5
|
+
* Allow granted to the same principal, from any attached policy, no matter
|
|
6
|
+
* how the Allow got there. When a role ends up with both an Allow and a
|
|
7
|
+
* Deny for the same action (over an overlapping resource scope) —
|
|
8
|
+
* typically because a broad guardrail policy and a feature-specific policy
|
|
9
|
+
* were attached to the same role independently — CloudFormation deploys
|
|
10
|
+
* the stack without complaint and the contradiction only surfaces as a
|
|
11
|
+
* runtime 403, the most expensive class of error to trace back to its
|
|
12
|
+
* source. This is IAM-reasoning static analysis over the declared graph:
|
|
13
|
+
* collect every Allow/Deny statement attached to each declared IAM::Role
|
|
14
|
+
* (inline, standalone IAM::Policy, and IAM::ManagedPolicy) and flag a
|
|
15
|
+
* literal action+resource collision between an Allow and a Deny.
|
|
16
|
+
*
|
|
17
|
+
* Deliberately conservative to avoid flagging the common intentional
|
|
18
|
+
* "broad Allow + narrow safety-Deny" guardrail pattern (e.g. `Allow ec2:*`
|
|
19
|
+
* plus `Deny ec2:TerminateInstances`):
|
|
20
|
+
* - both statements' Action lists are compared string-by-string; a match
|
|
21
|
+
* requires either the literal same action on both sides, or a
|
|
22
|
+
* wildcarded Deny action that matches a literal (non-wildcarded) Allow
|
|
23
|
+
* action. A wildcarded Allow paired with a literal Deny is exactly the
|
|
24
|
+
* guardrail pattern and is never flagged;
|
|
25
|
+
* - resources are compared the same way: `Resource: "*"` on the Deny
|
|
26
|
+
* side always overlaps, or a literal exact match; a wildcarded Allow
|
|
27
|
+
* resource paired with a narrower literal Deny is not flagged;
|
|
28
|
+
* - any statement carrying a Condition, NotAction, NotResource,
|
|
29
|
+
* Principal, or an intrinsic Action/Resource is skipped — the rule
|
|
30
|
+
* can't prove those statically, so it stays quiet.
|
|
31
|
+
*/
|
|
32
|
+
import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
|
|
33
|
+
export declare function checkDenyAllowContradiction(ctx: PostSynthContext): PostSynthDiagnostic[];
|
|
34
|
+
export declare const waw063: PostSynthCheck;
|
|
35
|
+
//# sourceMappingURL=waw063.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waw063.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw063.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAyG9G,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CA8CxF;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
|
package/dist/manifest.json
CHANGED
package/dist/okf/index.md
CHANGED
|
@@ -1722,3 +1722,8 @@ okf_version: '0.2'
|
|
|
1722
1722
|
* [WAW056](/rules/WAW056.md) - SCP guardrail has no Deny statement — it constrains nothing
|
|
1723
1723
|
* [WAW057](/rules/WAW057.md) - SCP guardrail is attached to no targets — it enforces nothing
|
|
1724
1724
|
* [WAW058](/rules/WAW058.md) - Organization audit trail missing, not logging, or scoped down to a single region
|
|
1725
|
+
* [WAW059](/rules/WAW059.md) - Wildcard Resource where the declared graph enumerates the touched set — tighten to the consumers' declared Arns
|
|
1726
|
+
* [WAW060](/rules/WAW060.md) - IAM policy attached to no principal — it grants nothing
|
|
1727
|
+
* [WAW061](/rules/WAW061.md) - Subnet CidrBlock falls outside its VPC's CidrBlock — fails at deploy time
|
|
1728
|
+
* [WAW062](/rules/WAW062.md) - Duplicate export name or explicit resource name within a template — fails at deploy time
|
|
1729
|
+
* [WAW063](/rules/WAW063.md) - IAM policy denies an action another attached policy on the same role allows — explicit Deny wins, runtime 403
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WAW059
|
|
4
|
+
description: Wildcard Resource where the declared graph enumerates the touched set — tighten to the consumers' declared Arns
|
|
5
|
+
id: WAW059
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: aws
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/aws/rules/
|
|
10
|
+
---
|
|
11
|
+
Wildcard Resource where the declared graph enumerates the touched set — tighten to the consumers' declared Arns
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Action](/types/Action.md)
|
|
16
|
+
- [Bucket](/types/Bucket.md)
|
|
17
|
+
- [GlobalTable](/types/GlobalTable.md)
|
|
18
|
+
- [IamPolicy](/types/IamPolicy.md)
|
|
19
|
+
- [InstanceProfile](/types/InstanceProfile.md)
|
|
20
|
+
- [ManagedPolicy](/types/ManagedPolicy.md)
|
|
21
|
+
- [Map](/types/Map.md)
|
|
22
|
+
- [Queue](/types/Queue.md)
|
|
23
|
+
- [Role](/types/Role.md)
|
|
24
|
+
- [Table](/types/Table.md)
|
|
25
|
+
- [Type](/types/Type.md)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WAW060
|
|
4
|
+
description: IAM policy attached to no principal — it grants nothing
|
|
5
|
+
id: WAW060
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: aws
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/aws/rules/
|
|
10
|
+
---
|
|
11
|
+
IAM policy attached to no principal — it grants nothing
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [IamPolicy](/types/IamPolicy.md)
|
|
16
|
+
- [ManagedPolicy](/types/ManagedPolicy.md)
|
|
17
|
+
- [Type](/types/Type.md)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WAW061
|
|
4
|
+
description: Subnet CidrBlock falls outside its VPC's CidrBlock — fails at deploy time
|
|
5
|
+
id: WAW061
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: aws
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/aws/rules/
|
|
10
|
+
---
|
|
11
|
+
Subnet CidrBlock falls outside its VPC's CidrBlock — fails at deploy time
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Subnet](/types/Subnet.md)
|
|
16
|
+
- [Type](/types/Type.md)
|
|
17
|
+
- [Vpc](/types/Vpc.md)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WAW062
|
|
4
|
+
description: Duplicate export name or explicit resource name within a template — fails at deploy time
|
|
5
|
+
id: WAW062
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: aws
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/aws/rules/
|
|
10
|
+
---
|
|
11
|
+
Duplicate export name or explicit resource name within a template — fails at deploy time
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [AutoScalingGroup](/types/AutoScalingGroup.md)
|
|
16
|
+
- [Bucket](/types/Bucket.md)
|
|
17
|
+
- [ECRRepository](/types/ECRRepository.md)
|
|
18
|
+
- [Function](/types/Function.md)
|
|
19
|
+
- [LaunchTemplate](/types/LaunchTemplate.md)
|
|
20
|
+
- [LoadBalancer](/types/LoadBalancer.md)
|
|
21
|
+
- [ManagedPolicy](/types/ManagedPolicy.md)
|
|
22
|
+
- [Map](/types/Map.md)
|
|
23
|
+
- [Role](/types/Role.md)
|
|
24
|
+
- [SecurityGroup](/types/SecurityGroup.md)
|
|
25
|
+
- [StateMachine](/types/StateMachine.md)
|
|
26
|
+
- [Table](/types/Table.md)
|
|
27
|
+
- [Type](/types/Type.md)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: WAW063
|
|
4
|
+
description: IAM policy denies an action another attached policy on the same role allows — explicit Deny wins, runtime 403
|
|
5
|
+
id: WAW063
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: aws
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/aws/rules/
|
|
10
|
+
---
|
|
11
|
+
IAM policy denies an action another attached policy on the same role allows — explicit Deny wins, runtime 403
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [Action](/types/Action.md)
|
|
16
|
+
- [IamPolicy](/types/IamPolicy.md)
|
|
17
|
+
- [ManagedPolicy](/types/ManagedPolicy.md)
|
|
18
|
+
- [Role](/types/Role.md)
|
|
19
|
+
- [Type](/types/Type.md)
|
package/dist/okf/types/Action.md
CHANGED
|
@@ -31,3 +31,5 @@ resource_type: AWS::SageMaker::Action
|
|
|
31
31
|
## Governed by
|
|
32
32
|
|
|
33
33
|
- [WAW020](/rules/WAW020.md): IAM policy uses wildcard Action — use specific actions following least privilege
|
|
34
|
+
- [WAW059](/rules/WAW059.md): Wildcard Resource where the declared graph enumerates the touched set — tighten to the consumers' declared Arns
|
|
35
|
+
- [WAW063](/rules/WAW063.md): IAM policy denies an action another attached policy on the same role allows — explicit Deny wins, runtime 403
|
|
@@ -57,3 +57,4 @@ resource_type: AWS::AutoScaling::AutoScalingGroup
|
|
|
57
57
|
## Governed by
|
|
58
58
|
|
|
59
59
|
- [WAW036](/rules/WAW036.md): Non-ASCII characters in EC2/IAM/CW string properties — rejected at changeset time
|
|
60
|
+
- [WAW062](/rules/WAW062.md): Duplicate export name or explicit resource name within a template — fails at deploy time
|
package/dist/okf/types/Bucket.md
CHANGED
|
@@ -63,3 +63,5 @@ resource_type: AWS::S3::Bucket
|
|
|
63
63
|
- [WAW006](/rules/WAW006.md): S3 Bucket Encryption
|
|
64
64
|
- [WAW018](/rules/WAW018.md): S3 bucket missing public access block — all public access should be blocked
|
|
65
65
|
- [WAW042](/rules/WAW042.md): S3 bucket missing a TLS-only bucket policy — deny requests over plaintext
|
|
66
|
+
- [WAW059](/rules/WAW059.md): Wildcard Resource where the declared graph enumerates the touched set — tighten to the consumers' declared Arns
|
|
67
|
+
- [WAW062](/rules/WAW062.md): Duplicate export name or explicit resource name within a template — fails at deploy time
|
|
@@ -31,3 +31,4 @@ resource_type: AWS::ECR::Repository
|
|
|
31
31
|
|
|
32
32
|
- [WAW053](/rules/WAW053.md): ECR repository does not scan images on push
|
|
33
33
|
- [WAW054](/rules/WAW054.md): ECR repository does not have immutable image tags
|
|
34
|
+
- [WAW062](/rules/WAW062.md): Duplicate export name or explicit resource name within a template — fails at deploy time
|
|
@@ -56,3 +56,4 @@ resource_type: AWS::Lambda::Function
|
|
|
56
56
|
- [WAW011](/rules/WAW011.md): Deprecated Lambda runtime — flags deprecated or approaching-EOL Lambda runtimes
|
|
57
57
|
- [WAW022](/rules/WAW022.md): Lambda function is not configured with a VPC — consider adding VpcConfig for network isolation
|
|
58
58
|
- [WAW036](/rules/WAW036.md): Non-ASCII characters in EC2/IAM/CW string properties — rejected at changeset time
|
|
59
|
+
- [WAW062](/rules/WAW062.md): Duplicate export name or explicit resource name within a template — fails at deploy time
|
|
@@ -24,3 +24,6 @@ resource_type: AWS::IAM::Policy
|
|
|
24
24
|
## Governed by
|
|
25
25
|
|
|
26
26
|
- [WAW020](/rules/WAW020.md): IAM policy uses wildcard Action — use specific actions following least privilege
|
|
27
|
+
- [WAW059](/rules/WAW059.md): Wildcard Resource where the declared graph enumerates the touched set — tighten to the consumers' declared Arns
|
|
28
|
+
- [WAW060](/rules/WAW060.md): IAM policy attached to no principal — it grants nothing
|
|
29
|
+
- [WAW063](/rules/WAW063.md): IAM policy denies an action another attached policy on the same role allows — explicit Deny wins, runtime 403
|
|
@@ -27,3 +27,4 @@ resource_type: AWS::EC2::LaunchTemplate
|
|
|
27
27
|
## Governed by
|
|
28
28
|
|
|
29
29
|
- [WAW036](/rules/WAW036.md): Non-ASCII characters in EC2/IAM/CW string properties — rejected at changeset time
|
|
30
|
+
- [WAW062](/rules/WAW062.md): Duplicate export name or explicit resource name within a template — fails at deploy time
|
|
@@ -41,3 +41,4 @@ resource_type: AWS::ElasticLoadBalancingV2::LoadBalancer
|
|
|
41
41
|
## Governed by
|
|
42
42
|
|
|
43
43
|
- [WAW024](/rules/WAW024.md): Application Load Balancer does not have access logging enabled
|
|
44
|
+
- [WAW062](/rules/WAW062.md): Duplicate export name or explicit resource name within a template — fails at deploy time
|
|
@@ -40,3 +40,7 @@ resource_type: AWS::IAM::ManagedPolicy
|
|
|
40
40
|
## Governed by
|
|
41
41
|
|
|
42
42
|
- [WAW020](/rules/WAW020.md): IAM policy uses wildcard Action — use specific actions following least privilege
|
|
43
|
+
- [WAW059](/rules/WAW059.md): Wildcard Resource where the declared graph enumerates the touched set — tighten to the consumers' declared Arns
|
|
44
|
+
- [WAW060](/rules/WAW060.md): IAM policy attached to no principal — it grants nothing
|
|
45
|
+
- [WAW062](/rules/WAW062.md): Duplicate export name or explicit resource name within a template — fails at deploy time
|
|
46
|
+
- [WAW063](/rules/WAW063.md): IAM policy denies an action another attached policy on the same role allows — explicit Deny wins, runtime 403
|
package/dist/okf/types/Map.md
CHANGED
|
@@ -34,3 +34,5 @@ resource_type: AWS::Location::Map
|
|
|
34
34
|
- [WAW015](/rules/WAW015.md): Circular dependency between nested stacks would cause infinite build recursion
|
|
35
35
|
- [WAW016](/rules/WAW016.md): Deprecated property usage — flags properties marked as deprecated in the CloudFormation Registry
|
|
36
36
|
- [WAW036](/rules/WAW036.md): Non-ASCII characters in EC2/IAM/CW string properties — rejected at changeset time
|
|
37
|
+
- [WAW059](/rules/WAW059.md): Wildcard Resource where the declared graph enumerates the touched set — tighten to the consumers' declared Arns
|
|
38
|
+
- [WAW062](/rules/WAW062.md): Duplicate export name or explicit resource name within a template — fails at deploy time
|
package/dist/okf/types/Queue.md
CHANGED
|
@@ -37,3 +37,4 @@ resource_type: AWS::SQS::Queue
|
|
|
37
37
|
## Governed by
|
|
38
38
|
|
|
39
39
|
- [WAW026](/rules/WAW026.md): SQS queue is not encrypted — enable SqsManagedSseEnabled or set KmsMasterKeyId
|
|
40
|
+
- [WAW059](/rules/WAW059.md): Wildcard Resource where the declared graph enumerates the touched set — tighten to the consumers' declared Arns
|
package/dist/okf/types/Role.md
CHANGED
|
@@ -31,3 +31,6 @@ resource_type: AWS::IAM::Role
|
|
|
31
31
|
|
|
32
32
|
- [WAW020](/rules/WAW020.md): IAM policy uses wildcard Action — use specific actions following least privilege
|
|
33
33
|
- [WAW036](/rules/WAW036.md): Non-ASCII characters in EC2/IAM/CW string properties — rejected at changeset time
|
|
34
|
+
- [WAW059](/rules/WAW059.md): Wildcard Resource where the declared graph enumerates the touched set — tighten to the consumers' declared Arns
|
|
35
|
+
- [WAW062](/rules/WAW062.md): Duplicate export name or explicit resource name within a template — fails at deploy time
|
|
36
|
+
- [WAW063](/rules/WAW063.md): IAM policy denies an action another attached policy on the same role allows — explicit Deny wins, runtime 403
|
|
@@ -29,3 +29,4 @@ resource_type: AWS::EC2::SecurityGroup
|
|
|
29
29
|
- [WAW019](/rules/WAW019.md): Security group allows unrestricted ingress on sensitive ports (SSH, RDP, database)
|
|
30
30
|
- [WAW036](/rules/WAW036.md): Non-ASCII characters in EC2/IAM/CW string properties — rejected at changeset time
|
|
31
31
|
- [WAW049](/rules/WAW049.md): Security group allows unrestricted ingress on a port other than ALB:80/443
|
|
32
|
+
- [WAW062](/rules/WAW062.md): Duplicate export name or explicit resource name within a template — fails at deploy time
|
package/dist/okf/types/Subnet.md
CHANGED
package/dist/okf/types/Table.md
CHANGED
|
@@ -42,3 +42,5 @@ resource_type: AWS::DynamoDB::Table
|
|
|
42
42
|
|
|
43
43
|
- [WAW027](/rules/WAW027.md): DynamoDB table does not have point-in-time recovery enabled
|
|
44
44
|
- [WAW030](/rules/WAW030.md): Missing DependsOn for known CloudFormation ordering patterns
|
|
45
|
+
- [WAW059](/rules/WAW059.md): Wildcard Resource where the declared graph enumerates the touched set — tighten to the consumers' declared Arns
|
|
46
|
+
- [WAW062](/rules/WAW062.md): Duplicate export name or explicit resource name within a template — fails at deploy time
|
package/dist/okf/types/Type.md
CHANGED
|
@@ -73,3 +73,8 @@ resource_type: AWS::Cassandra::Type
|
|
|
73
73
|
- [WAW056](/rules/WAW056.md): SCP guardrail has no Deny statement — it constrains nothing
|
|
74
74
|
- [WAW057](/rules/WAW057.md): SCP guardrail is attached to no targets — it enforces nothing
|
|
75
75
|
- [WAW058](/rules/WAW058.md): Organization audit trail missing, not logging, or scoped down to a single region
|
|
76
|
+
- [WAW059](/rules/WAW059.md): Wildcard Resource where the declared graph enumerates the touched set — tighten to the consumers' declared Arns
|
|
77
|
+
- [WAW060](/rules/WAW060.md): IAM policy attached to no principal — it grants nothing
|
|
78
|
+
- [WAW061](/rules/WAW061.md): Subnet CidrBlock falls outside its VPC's CidrBlock — fails at deploy time
|
|
79
|
+
- [WAW062](/rules/WAW062.md): Duplicate export name or explicit resource name within a template — fails at deploy time
|
|
80
|
+
- [WAW063](/rules/WAW063.md): IAM policy denies an action another attached policy on the same role allows — explicit Deny wins, runtime 403
|
package/dist/okf/types/Vpc.md
CHANGED
|
@@ -35,6 +35,12 @@ export declare function cfnUrl(endpoint?: string, region?: string, env?: Record<
|
|
|
35
35
|
export declare function cfnForm(action: string, params: Record<string, string>): Record<string, string>;
|
|
36
36
|
/** Capabilities as the CFN `Capabilities.member.N` list params. */
|
|
37
37
|
export declare function capabilityParams(capabilities: string[]): Record<string, string>;
|
|
38
|
+
/**
|
|
39
|
+
* Stack tags as the CFN `Tags.member.N.Key/Value` list params (#1222). Sorted
|
|
40
|
+
* so the request is deterministic. Empty in, empty out — a template without an
|
|
41
|
+
* ownership marker adds no `Tags` parameter at all.
|
|
42
|
+
*/
|
|
43
|
+
export declare function tagParams(tags: Record<string, string>): Record<string, string>;
|
|
38
44
|
/**
|
|
39
45
|
* First `<tag>…</tag>` text in a CFN XML response.
|
|
40
46
|
*
|
|
@@ -65,22 +71,59 @@ export declare function waitForStackSettled(url: string, stackName: string, http
|
|
|
65
71
|
* CloudFormation API directly (create-or-update + poll to a settled stack),
|
|
66
72
|
* targeting a local Floci emulator or real AWS by endpoint override. The direct
|
|
67
73
|
* twin of `azApply`/`gcpApply`: it speaks the CloudFormation Query API over HTTP
|
|
68
|
-
* rather than shelling `aws cloudformation deploy`
|
|
69
|
-
*
|
|
70
|
-
* ownership boundary, so deletes ride CloudFormation
|
|
71
|
-
* `http` is injectable for tests.
|
|
74
|
+
* rather than shelling `aws cloudformation deploy` — and since chant #1449 it is
|
|
75
|
+
* also what `nativeApply({ target: "cloudformation" })` runs, so no CLI path
|
|
76
|
+
* remains. The stack is the ownership boundary, so deletes ride CloudFormation
|
|
77
|
+
* itself — no separate prune. `http` is injectable for tests.
|
|
72
78
|
*/
|
|
73
79
|
export declare function awsApply(args: AwsApplyArgs, signal?: AbortSignal, http?: AwsHttp): Promise<{
|
|
74
80
|
stackName: string;
|
|
75
81
|
status: string;
|
|
76
82
|
action: "created" | "updated" | "unchanged";
|
|
77
83
|
}>;
|
|
84
|
+
/** {@link awsDelete}'s arguments: {@link AwsApplyArgs} minus the template — a
|
|
85
|
+
* delete needs no body, so teardown (#1222) can call it with a stack name
|
|
86
|
+
* alone. Op builders that thread `templatePath` through keep working; it is
|
|
87
|
+
* simply unused here. */
|
|
88
|
+
export type AwsDeleteArgs = Omit<AwsApplyArgs, "templatePath"> & {
|
|
89
|
+
templatePath?: string;
|
|
90
|
+
};
|
|
78
91
|
/**
|
|
79
92
|
* The inverse of {@link awsApply} — DeleteStack, then poll until the stack is
|
|
80
93
|
* gone. Idempotent: an already-absent stack is a no-op. `http` is injectable.
|
|
81
94
|
*/
|
|
82
|
-
export declare function awsDelete(args:
|
|
95
|
+
export declare function awsDelete(args: AwsDeleteArgs, signal?: AbortSignal, http?: AwsHttp): Promise<{
|
|
83
96
|
stackName: string;
|
|
84
97
|
deleted: boolean;
|
|
85
98
|
}>;
|
|
99
|
+
export interface RollbackStackArgs {
|
|
100
|
+
/** CloudFormation stack name to roll back. */
|
|
101
|
+
stackName: string;
|
|
102
|
+
/** CFN endpoint override — same resolution rule as {@link AwsApplyArgs.endpoint} (#1694). */
|
|
103
|
+
endpoint?: string;
|
|
104
|
+
/** Region (real CFN host). Default: `us-east-1`. */
|
|
105
|
+
region?: string;
|
|
106
|
+
/** Stack-settle timeout in ms. Default: `300000`. */
|
|
107
|
+
timeoutMs?: number;
|
|
108
|
+
/** Poll interval in ms. Default: `3000`. */
|
|
109
|
+
intervalMs?: number;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* The saga compensation for {@link awsApply} — CloudFormation `RollbackStack`
|
|
113
|
+
* via the same Query-API client, then poll until the stack settles. Returns the
|
|
114
|
+
* stack to its last known stable state after a failed update (#1449 — this
|
|
115
|
+
* replaces the Temporal lexicon exec-ing `aws cloudformation rollback-stack`).
|
|
116
|
+
*
|
|
117
|
+
* Degrades rather than crashes in two cases where there is nothing to do:
|
|
118
|
+
* an absent stack (nothing applied, nothing to revert) and a target that does
|
|
119
|
+
* not implement the action — Floci answers `UnknownAction` (#947). Both return
|
|
120
|
+
* `rolledBack: false` with a logged warning; every other API error throws,
|
|
121
|
+
* because a compensation that silently fails leaves partial state looking
|
|
122
|
+
* reverted when it isn't. `http` is injectable for tests.
|
|
123
|
+
*/
|
|
124
|
+
export declare function rollbackStack(args: RollbackStackArgs, signal?: AbortSignal, http?: AwsHttp): Promise<{
|
|
125
|
+
stackName: string;
|
|
126
|
+
rolledBack: boolean;
|
|
127
|
+
status?: string;
|
|
128
|
+
}>;
|
|
86
129
|
//# sourceMappingURL=aws-apply.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws-apply.d.ts","sourceRoot":"","sources":["../../../src/op/activities/aws-apply.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"aws-apply.d.ts","sourceRoot":"","sources":["../../../src/op/activities/aws-apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* AWS Op activities — resolved by the core activity registry when a project's
|
|
3
3
|
* `chant.config.ts` lists the `aws` lexicon. Contributes the local Floci AWS
|
|
4
4
|
* emulator lifecycle (`flociUp`/`flociDown`) and the native CloudFormation
|
|
5
|
-
* applier (`awsApply`
|
|
6
|
-
* shelling `aws` — the
|
|
5
|
+
* applier (`awsApply`, with `awsDelete` and the `rollbackStack` compensation),
|
|
6
|
+
* which calls the CloudFormation API directly rather than shelling `aws` — the
|
|
7
|
+
* direct twin of `azApply`/`gcpApply`.
|
|
7
8
|
*
|
|
8
9
|
* The registry keys every exported *function* here by its name, so only the
|
|
9
10
|
* activities themselves belong in this barrel. `awsAgentCoreFetchTrace`'s
|
|
@@ -15,8 +16,14 @@
|
|
|
15
16
|
*/
|
|
16
17
|
export { flociUp, flociDown, flociRunCommand, flociRmCommand, flociExistsCommand, flociHealthUrl, flociEnv, isFlociReady, } from "./floci.js";
|
|
17
18
|
export type { FlociUpArgs, FlociDownArgs } from "./floci.js";
|
|
18
|
-
export { awsApply, awsDelete, waitForStackSettled, cfnUrl, cfnForm, capabilityParams, xmlField, stackStatus, stackId, cfnErrorMessage, isStackMissing, isNoUpdates, isSuccessStatus, isFailureStatus, isTerminalStatus, } from "./aws-apply.js";
|
|
19
|
-
export type { AwsApplyArgs, AwsHttp } from "./aws-apply.js";
|
|
19
|
+
export { awsApply, awsDelete, rollbackStack, waitForStackSettled, cfnUrl, cfnForm, capabilityParams, xmlField, stackStatus, stackId, cfnErrorMessage, isStackMissing, isNoUpdates, isSuccessStatus, isFailureStatus, isTerminalStatus, } from "./aws-apply.js";
|
|
20
|
+
export type { AwsApplyArgs, RollbackStackArgs, AwsHttp } from "./aws-apply.js";
|
|
21
|
+
export declare const receiptRead: (args: import("@intentius/chant/op/receipt-store").ReceiptReadArgs, signal?: AbortSignal) => Promise<import("@intentius/chant/op/receipt-store").ReceiptReadResult>;
|
|
22
|
+
export declare const receiptWrite: (args: import("@intentius/chant/op/receipt-store").ReceiptWriteArgs, signal?: AbortSignal) => Promise<{
|
|
23
|
+
written: true;
|
|
24
|
+
receipt: string;
|
|
25
|
+
}>;
|
|
26
|
+
export declare const receiptStaleness: (args: import("@intentius/chant/op/receipt-store").ReceiptStalenessArgs, signal?: AbortSignal) => Promise<import("@intentius/chant/op/receipt-store").ReceiptStalenessResult>;
|
|
20
27
|
export { awsAgentCoreFetchTrace } from "../../agentcore/trace-fetch.js";
|
|
21
28
|
export type { AgentCoreTraceSource, AwsAgentCoreFetchTraceArgs, AwsAgentCoreFetchTraceResult, } from "../../agentcore/trace-fetch.js";
|
|
22
29
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/op/activities/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/op/activities/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EACL,OAAO,EACP,SAAS,EACT,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EACL,QAAQ,EACR,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,MAAM,EACN,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,OAAO,EACP,eAAe,EACf,cAAc,EACd,WAAW,EACX,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAa5E,eAAO,MAAM,WAAW,qKAAqC,CAAC;AAC9D,eAAO,MAAM,YAAY;;;EAAsC,CAAC;AAChE,eAAO,MAAM,gBAAgB,+KAA0C,CAAC;AAExE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,YAAY,EACV,oBAAoB,EACpB,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,6BAA6B,CAAC"}
|
package/dist/ownership.d.ts
CHANGED
|
@@ -7,4 +7,22 @@
|
|
|
7
7
|
import type { ChannelKeys } from "@intentius/chant/ownership";
|
|
8
8
|
/** AWS tag keys for chant's ownership markers. */
|
|
9
9
|
export declare const AWS_TAG_OWNERSHIP_KEYS: ChannelKeys;
|
|
10
|
+
/**
|
|
11
|
+
* Template-level `Metadata` key the serializer stamps the ownership marker
|
|
12
|
+
* under (#1222). Stack-level teardown verifies ownership on the *stack's own*
|
|
13
|
+
* tags, and CloudFormation stack tags are an API parameter, not a template
|
|
14
|
+
* section — so the template carries the marker here and the apply paths
|
|
15
|
+
* (`awsApply`, the `cfn-deploy` change set) turn it into stack tags on
|
|
16
|
+
* create/update. One source: the same build that stamps resource tags decides
|
|
17
|
+
* the stack tags.
|
|
18
|
+
*/
|
|
19
|
+
export declare const OWNERSHIP_METADATA_KEY = "chant:ownership";
|
|
20
|
+
/**
|
|
21
|
+
* The stack tags a template body asks for: the flat tag map under
|
|
22
|
+
* `Metadata["chant:ownership"]`, or nothing. Total on bad input — a body that
|
|
23
|
+
* is not JSON (a YAML template, a handwritten one) or carries no marker
|
|
24
|
+
* returns `{}`, and the stack simply stays untagged, which teardown reports
|
|
25
|
+
* as unverified rather than deleting.
|
|
26
|
+
*/
|
|
27
|
+
export declare function ownershipStackTagsForBody(body: string): Record<string, string>;
|
|
10
28
|
//# sourceMappingURL=ownership.d.ts.map
|
package/dist/ownership.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ownership.d.ts","sourceRoot":"","sources":["../src/ownership.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,kDAAkD;AAClD,eAAO,MAAM,sBAAsB,EAAE,WAIpC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ownership.d.ts","sourceRoot":"","sources":["../src/ownership.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,kDAAkD;AAClD,eAAO,MAAM,sBAAsB,EAAE,WAIpC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,oBAAoB,CAAC;AAExD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiB9E"}
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAgL,MAAM,0BAA0B,CAAC;AAqC5O;yEACyE;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAiBnD,eAAO,MAAM,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAgL,MAAM,0BAA0B,CAAC;AAqC5O;yEACyE;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAiBnD,eAAO,MAAM,SAAS,EAAE,aAk9BvB,CAAC"}
|