@intentius/chant-lexicon-aws 0.28.0 → 0.30.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.
@@ -0,0 +1,101 @@
1
+ /**
2
+ * AWS deep observation (#1015) — the reference implementation of the epic's
3
+ * deep-observe contract (#1014).
4
+ *
5
+ * `describeResources` reads `cloudformation describe-stack-resources`, which
6
+ * returns a status, a physical id and a timestamp per resource. That is
7
+ * CloudFormation's view of the world, and CloudFormation only compares
8
+ * properties it was told about. A property somebody edited in the console — an
9
+ * inline policy, a bucket setting, a security-group rule — is invisible to it.
10
+ * That gap is why go-to-k/cdk-real-drift exists, and it is what this reader
11
+ * closes: the live resource model comes from the **Cloud Control API**, which
12
+ * bypasses CloudFormation entirely and returns the resource as the service
13
+ * actually holds it.
14
+ *
15
+ * Correlation is unchanged: Cloud Control is addressed by the physical id that
16
+ * `describe-stack-resources` already reports per logical id, so the results
17
+ * line up with the same IR node ids `live-attrs.ts` relies on.
18
+ *
19
+ * ## Scope of the first cut
20
+ *
21
+ * Four high-signal types (S3 buckets, IAM roles and managed policies, EC2
22
+ * security groups) rather than all 30+. The point of the first row is to prove
23
+ * the contract and the noise rules; widening the type table is additive and
24
+ * needs no contract change. A declared resource of any other type reports
25
+ * NOT-OBSERVED with `unsupported-kind` — it may well exist, and saying nothing
26
+ * about it is the only honest answer.
27
+ *
28
+ * ## Nothing here talks to real AWS on its own terms
29
+ *
30
+ * Every call goes through the runtime adapter's `spawn` and
31
+ * `applyAwsEndpointArgv`, so `AWS_ENDPOINT_URL` redirects the whole reader at a
32
+ * local emulator exactly as the existing describe path does.
33
+ */
34
+ import type { DeepNormalizationHooks, DeepObservationResult } from "@intentius/chant/lexicon";
35
+ /**
36
+ * CloudFormation types this reader can read live. Each is addressable in Cloud
37
+ * Control by the physical id CloudFormation already reports.
38
+ */
39
+ export declare const DEEP_READABLE_TYPES: ReadonlySet<string>;
40
+ /**
41
+ * Property names that are server-populated wherever they appear — identifiers
42
+ * the service mints, timestamps it stamps, counters it maintains. Matched on
43
+ * the final path segment, because AWS repeats these names at every nesting
44
+ * depth and a per-type list of full paths would be a maintenance trap.
45
+ *
46
+ * Deliberately excludes ambiguous names like `Id` and `Name`: `VpcId` and
47
+ * `BucketName` are declared inputs, and pruning a declared input is how a
48
+ * normalization pass starts hiding real drift.
49
+ */
50
+ export declare const AWS_READ_ONLY_NAMES: ReadonlySet<string>;
51
+ /**
52
+ * Service defaults, per type, as index-erased property paths. A live value
53
+ * equal to its default is subtracted **only when source never declared that
54
+ * property** — cdk-real-drift's default subtraction, and the reason
55
+ * {@link DeepNode.counterpart} exists. Declaring the default explicitly keeps
56
+ * the property in the diff, so a later change to it still reports.
57
+ */
58
+ export declare const AWS_SERVICE_DEFAULTS: Record<string, Record<string, unknown>>;
59
+ /**
60
+ * The aws lexicon's noise rules. The three classes the epic names for AWS —
61
+ * server-populated fields, unstable ordering (tags, policy statements), and
62
+ * provider defaults — plus nothing else: a rule that is not one of those is a
63
+ * rule that hides drift.
64
+ */
65
+ export declare const awsDeepNormalizationHooks: DeepNormalizationHooks;
66
+ /** One live resource as `cloudcontrol get-resource` returns it. Exported for tests. */
67
+ export interface CloudControlResource {
68
+ identifier: string;
69
+ properties: Record<string, unknown>;
70
+ }
71
+ /**
72
+ * Parse a `cloudcontrol get-resource` payload. Cloud Control returns the model
73
+ * as a JSON *string* inside the envelope, so this unwraps twice. Returns null
74
+ * for anything that does not parse to an object — an unparseable body is a
75
+ * failed read, not an empty resource.
76
+ */
77
+ export declare function parseCloudControlResource(stdout: string): CloudControlResource | null;
78
+ /** True when the live property tree carries chant's ownership marker tag. */
79
+ export declare function hasOwnershipMarker(properties: Record<string, unknown>): boolean;
80
+ export interface AwsDeepObserveOptions {
81
+ environment: string;
82
+ entityNames: string[];
83
+ entities?: Map<string, {
84
+ entityType: string;
85
+ props: Record<string, unknown>;
86
+ }>;
87
+ stack?: string;
88
+ owned?: boolean;
89
+ }
90
+ /**
91
+ * Read the live property tree for each declared entity via Cloud Control.
92
+ *
93
+ * Two reads per run plus one per readable resource: `describe-stack-resources`
94
+ * resolves logical id → (type, physical id), then `cloudcontrol get-resource`
95
+ * fetches each model. The first read's failure modes are the thin path's,
96
+ * verbatim — a stack that does not exist yet is a real absence (nothing is
97
+ * deployed, so there are no properties to drift), anything else is a hole for
98
+ * every declared entity.
99
+ */
100
+ export declare function observeResourcesDeepAws(options: AwsDeepObserveOptions): Promise<DeepObservationResult>;
101
+ //# sourceMappingURL=deep-observe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-observe.d.ts","sourceRoot":"","sources":["../src/deep-observe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAGV,sBAAsB,EACtB,qBAAqB,EAItB,MAAM,0BAA0B,CAAC;AAKlC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAKlD,CAAC;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAkBlD,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgBxE,CAAC;AAkBF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,sBAmDvC,CAAC;AAMF,uFAAuF;AACvF,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAuBrF;AASD,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAI/E;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAwHhC"}
package/dist/index.d.ts CHANGED
@@ -13,6 +13,7 @@ export type { StackOutput } from "@intentius/chant/stack-output";
13
13
  export { output, isLexiconOutput } from "@intentius/chant/lexicon-output";
14
14
  export type { LexiconOutput } from "@intentius/chant/lexicon-output";
15
15
  export { awsPlugin } from "./plugin.js";
16
+ export { observeResourcesDeepAws, awsDeepNormalizationHooks, parseCloudControlResource, hasOwnershipMarker, DEEP_READABLE_TYPES, AWS_READ_ONLY_NAMES, AWS_SERVICE_DEFAULTS, } from "./deep-observe.js";
16
17
  export { Sub, Ref, GetAtt, If, Join, Select, Split, Base64, GetAZs, SubIntrinsic, RefIntrinsic, GetAttIntrinsic, IfIntrinsic, JoinIntrinsic, SelectIntrinsic, SplitIntrinsic, Base64Intrinsic, GetAZsIntrinsic, } from "./intrinsics.js";
17
18
  export { AWS, StackName, Region, AccountId, StackId, URLSuffix, NoValue, NotificationARNs, Partition, } from "./pseudo.js";
18
19
  export * from "./generated/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "algorithm": "sha256",
3
3
  "artifacts": {
4
- "manifest.json": "32758168db27150b8085c2f4f7a0c5c5d4926107c82da54b50050aa8addaf002",
5
- "meta.json": "8d6445b7ea5f7803c83cf49daab639b1df66388c1512f466b888b0ad57f60a9a",
4
+ "manifest.json": "c100e03a7354cdfef71390678d706d91424b5fee40744e513816064a1dfe62bd",
5
+ "meta.json": "0f5a9d9dc16e57fc2fcc56b7c6e9a50d2f75a3d9c76c5934a4024df0be86f3dc",
6
6
  "types/index.d.ts": "da899ff303a18a7fdb270570bce784703283d4081f806e69ac8c9dfd4bac7c50",
7
7
  "rules/hardcoded-region.ts": "5a0eaf7ab391231fe6cd51426ece29539cb4b36f31c8dd060956638fed55722a",
8
8
  "rules/iam-wildcard.ts": "135d7217d278fef50939e605c5da32603ba35674b8c4b5c4d66a06c77903e945",
@@ -59,5 +59,5 @@
59
59
  "skills/chant-aws-eks.md": "8789255709ff004ad0a875fd5999edcdc66fc6e33d710db058d9f42703bcfdfe",
60
60
  "skills/chant-aws-carve-terraform.md": "f4c6fe1c702250665f90d82b3bdaba5ea50ae75e380a8ae321dad6eb1c39683e"
61
61
  },
62
- "composite": "0f0089bc6c3816dc668a4e12e03450e54a7ddf9aee278dc693f79075c900d9ff"
62
+ "composite": "e10cd6a7a6d3bcc063d0df6aec5c161ec8c508a09a730af70118cc0a602b19bf"
63
63
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aws",
3
- "version": "0.28.0",
3
+ "version": "0.30.0",
4
4
  "chantVersion": ">=0.1.0",
5
5
  "namespace": "AWS",
6
6
  "intrinsics": [
package/dist/meta.json CHANGED
@@ -63656,6 +63656,12 @@
63656
63656
  "pattern": "[0-9]*.[0-9]*.[0-9]*",
63657
63657
  "minLength": 0,
63658
63658
  "maxLength": 16
63659
+ },
63660
+ "CreationTime": {
63661
+ "format": "date-time"
63662
+ },
63663
+ "LastModifiedTime": {
63664
+ "format": "date-time"
63659
63665
  }
63660
63666
  },
63661
63667
  "createOnly": [
package/dist/plugin.d.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  import type { LexiconPlugin } from "@intentius/chant/lexicon";
2
- /** True when a CloudFormation CLI error means the stack simply isn't there yet
3
- * (`ValidationError does not exist`) the pre-first-apply state, which live
4
- * queries should treat as "nothing deployed", not a failure. Exported for testing. */
5
- export declare function stackDoesNotExist(stderr: string): boolean;
2
+ /** Re-exported from ./stack-errors so the long-standing import path (and its
3
+ * tests) keep working now that the deep reader shares the classifier. */
4
+ export { stackDoesNotExist } from "./stack-errors.js";
6
5
  /**
7
6
  * AWS CloudFormation lexicon plugin.
8
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAA+G,MAAM,0BAA0B,CAAC;AAwB3K;;sFAEsF;AACtF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,aAkxBvB,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAyJ,MAAM,0BAA0B,CAAC;AA0BrN;yEACyE;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,aAk0BvB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * CloudFormation CLI error classification, shared by every live read path.
3
+ *
4
+ * Lives in its own module (rather than in ./plugin.ts, where it started) so the
5
+ * deep reader (#1015) can classify the same failure the same way without
6
+ * importing the plugin that imports it. ./plugin.ts re-exports it, so the
7
+ * original import path is unchanged.
8
+ */
9
+ /** True when a CloudFormation CLI error means the stack simply isn't there yet
10
+ * (`ValidationError … does not exist`) — the pre-first-apply state, which live
11
+ * queries should treat as "nothing deployed", not a failure. */
12
+ export declare function stackDoesNotExist(stderr: string): boolean;
13
+ //# sourceMappingURL=stack-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-errors.d.ts","sourceRoot":"","sources":["../src/stack-errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;gEAEgE;AAChE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentius/chant-lexicon-aws",
3
- "version": "0.28.0",
3
+ "version": "0.30.0",
4
4
  "description": "AWS CloudFormation lexicon for chant — declarative IaC in TypeScript",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://intentius.io/chant",
@@ -80,7 +80,7 @@
80
80
  "typescript": "^5.9.3"
81
81
  },
82
82
  "peerDependencies": {
83
- "@intentius/chant": "^0.28.0",
83
+ "@intentius/chant": "^0.30.0",
84
84
  "typescript": "^5.9.3"
85
85
  }
86
86
  }