@aws/nx-plugin 1.0.9 → 1.0.11
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/LICENSE-THIRD-PARTY +100 -562
- package/migrations.json +64 -26
- package/package.json +11 -11
- package/src/agentcore-gateway/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/infra/app/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/migrations/latest/pin-strands-mcp-client-peer/metadata.json +3 -0
- package/src/migrations/latest/pin-strands-mcp-client-peer/migration.d.ts +20 -0
- package/src/migrations/latest/pin-strands-mcp-client-peer/migration.js +51 -0
- package/src/migrations/latest/pin-strands-mcp-client-peer/migration.js.map +1 -0
- package/src/migrations/v1.0.7/0001-pin-strands-express-peer/migration.js.map +1 -0
- package/src/migrations/v1.0.7/0002-rdb-drop-lambda-rie/migration.js.map +1 -0
- package/src/migrations/v1.0.8/0001-infra-test-loop/migration.js.map +1 -0
- package/src/migrations/v1.0.8/0002-py-dynamodb-type-base-model-meta/migration.js.map +1 -0
- package/src/migrations/v1.0.8/0003-cache-inputs-outputs/migration.js.map +1 -0
- package/src/open-api/py-client/generator.d.ts +1 -1
- package/src/preset/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +5 -5
- package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +9 -9
- package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +4 -4
- package/src/py/agent/a2a-connection/generator.d.ts +1 -1
- package/src/py/agent/gateway-connection/generator.d.ts +1 -1
- package/src/py/agent/mcp-connection/generator.d.ts +1 -1
- package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +12 -12
- package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/py/rdb/__snapshots__/generator.spec.ts.snap +4 -4
- package/src/smithy/project/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +8 -8
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +12 -12
- package/src/ts/agent/__snapshots__/generator.spec.ts.snap +4 -4
- package/src/ts/agent/a2a-connection/generator.d.ts +2 -2
- package/src/ts/agent/gateway-connection/generator.d.ts +3 -1
- package/src/ts/agent/gateway-connection/generator.js +4 -0
- package/src/ts/agent/gateway-connection/generator.js.map +1 -1
- package/src/ts/agent/generator.d.ts +3 -1
- package/src/ts/agent/generator.js +5 -0
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/generator.d.ts +3 -1
- package/src/ts/agent/mcp-connection/generator.js +4 -0
- package/src/ts/agent/mcp-connection/generator.js.map +1 -1
- package/src/ts/astro-docs/generator.d.ts +1 -1
- package/src/ts/dcr-proxy/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +41 -39
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +2 -2
- package/src/utils/agent-connection/agent-connection.d.ts +9 -3
- package/src/utils/agent-connection/agent-connection.js +9 -2
- package/src/utils/agent-connection/agent-connection.js.map +1 -1
- package/src/utils/git.d.ts +5 -0
- package/src/utils/git.js +29 -4
- package/src/utils/git.js.map +1 -1
- package/src/utils/shared-constructs.d.ts +5 -0
- package/src/utils/shared-constructs.js +10 -9
- package/src/utils/shared-constructs.js.map +1 -1
- package/src/utils/version-lockstep/exact-dependency.d.ts +37 -0
- package/src/utils/version-lockstep/exact-dependency.js +136 -0
- package/src/utils/version-lockstep/exact-dependency.js.map +1 -0
- package/src/utils/version-lockstep/hold.d.ts +5 -2
- package/src/utils/version-lockstep/hold.js +7 -0
- package/src/utils/version-lockstep/hold.js.map +1 -1
- package/src/utils/version-lockstep/lockstep.d.ts +2 -2
- package/src/utils/version-lockstep/lockstep.js.map +1 -1
- package/src/utils/versions.d.ts +100 -84
- package/src/utils/versions.js +105 -82
- package/src/utils/versions.js.map +1 -1
- package/src/migrations/latest/cache-inputs-outputs/migration.js.map +0 -1
- package/src/migrations/latest/infra-test-loop/migration.js.map +0 -1
- package/src/migrations/latest/pin-strands-express-peer/migration.js.map +0 -1
- package/src/migrations/latest/py-dynamodb-type-base-model-meta/migration.js.map +0 -1
- package/src/migrations/latest/rdb-drop-lambda-rie/migration.js.map +0 -1
- /package/src/migrations/{latest/pin-strands-express-peer → v1.0.7/0001-pin-strands-express-peer}/metadata.json +0 -0
- /package/src/migrations/{latest/pin-strands-express-peer → v1.0.7/0001-pin-strands-express-peer}/migration.d.ts +0 -0
- /package/src/migrations/{latest/pin-strands-express-peer → v1.0.7/0001-pin-strands-express-peer}/migration.js +0 -0
- /package/src/migrations/{latest/rdb-drop-lambda-rie → v1.0.7/0002-rdb-drop-lambda-rie}/metadata.json +0 -0
- /package/src/migrations/{latest/cache-inputs-outputs → v1.0.7/0002-rdb-drop-lambda-rie}/migration.d.ts +0 -0
- /package/src/migrations/{latest/rdb-drop-lambda-rie → v1.0.7/0002-rdb-drop-lambda-rie}/migration.js +0 -0
- /package/src/migrations/{latest/infra-test-loop → v1.0.8/0001-infra-test-loop}/metadata.json +0 -0
- /package/src/migrations/{latest/infra-test-loop → v1.0.8/0001-infra-test-loop}/migration.d.ts +0 -0
- /package/src/migrations/{latest/infra-test-loop → v1.0.8/0001-infra-test-loop}/migration.js +0 -0
- /package/src/migrations/{latest/py-dynamodb-type-base-model-meta → v1.0.8/0002-py-dynamodb-type-base-model-meta}/metadata.json +0 -0
- /package/src/migrations/{latest/py-dynamodb-type-base-model-meta → v1.0.8/0002-py-dynamodb-type-base-model-meta}/migration.d.ts +0 -0
- /package/src/migrations/{latest/py-dynamodb-type-base-model-meta → v1.0.8/0002-py-dynamodb-type-base-model-meta}/migration.js +0 -0
- /package/src/migrations/{latest/cache-inputs-outputs → v1.0.8/0003-cache-inputs-outputs}/metadata.json +0 -0
- /package/src/migrations/{latest/rdb-drop-lambda-rie → v1.0.8/0003-cache-inputs-outputs}/migration.d.ts +0 -0
- /package/src/migrations/{latest/cache-inputs-outputs → v1.0.8/0003-cache-inputs-outputs}/migration.js +0 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/ import { coerce, satisfies, valid } from "semver";
|
|
5
|
+
/** The bare version in a pin, whatever range syntax it was written with. */ const bare = (version)=>coerce(version, {
|
|
6
|
+
includePrerelease: true
|
|
7
|
+
})?.version;
|
|
8
|
+
const message = (error)=>error instanceof Error ? error.message : String(error);
|
|
9
|
+
/**
|
|
10
|
+
* The versions the source's `dependencies` give its followers, and the version
|
|
11
|
+
* of the follower each group mate is grouped with, so the group stays in step.
|
|
12
|
+
*/ const targetsFrom = ({ source, followers }, sourceVersion, dependencies, groups, current)=>{
|
|
13
|
+
const missing = followers.filter((name)=>!dependencies[name]);
|
|
14
|
+
if (missing.length > 0) {
|
|
15
|
+
return {
|
|
16
|
+
held: `${source} ${sourceVersion} does not depend on ${missing.join(', ')}`
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
// Releases so far declare exact versions. If one declares a range, take its
|
|
20
|
+
// bare version: our pins are exact, and a single copy needs that version.
|
|
21
|
+
const targets = new Map(followers.map((name)=>{
|
|
22
|
+
const declared = dependencies[name];
|
|
23
|
+
return [
|
|
24
|
+
name,
|
|
25
|
+
valid(declared) ?? bare(declared) ?? declared
|
|
26
|
+
];
|
|
27
|
+
}));
|
|
28
|
+
for (const group of groups){
|
|
29
|
+
const inGroup = followers.filter((name)=>group.includes(name));
|
|
30
|
+
if (inGroup.length === 0) continue;
|
|
31
|
+
const version = targets.get(inGroup[0]);
|
|
32
|
+
const disagreeing = inGroup.find((name)=>targets.get(name) !== version);
|
|
33
|
+
if (disagreeing) {
|
|
34
|
+
return {
|
|
35
|
+
held: `${source} ${sourceVersion} depends on ${inGroup[0]} ${version} but ${disagreeing} ${targets.get(disagreeing)}, which must move in step`
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
for (const name of group){
|
|
39
|
+
if (!targets.has(name) && current[name] !== undefined) {
|
|
40
|
+
targets.set(name, version);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return targets;
|
|
45
|
+
};
|
|
46
|
+
/** Why the peers being written would reject the targets, if they would. */ const unmetPeers = async ({ source, peers }, sourceVersion, targets, written, lookup)=>{
|
|
47
|
+
const unmet = [];
|
|
48
|
+
for (const peer of peers){
|
|
49
|
+
const peerVersion = written(peer);
|
|
50
|
+
if (peerVersion === undefined) continue;
|
|
51
|
+
let ranges;
|
|
52
|
+
try {
|
|
53
|
+
ranges = await lookup(peer, peerVersion, 'peerDependencies');
|
|
54
|
+
} catch (error) {
|
|
55
|
+
return `could not read the peerDependencies of ${peer} ${peerVersion} (${message(error)})`;
|
|
56
|
+
}
|
|
57
|
+
for (const [name, version] of targets){
|
|
58
|
+
const range = ranges[name];
|
|
59
|
+
if (range && !satisfies(version, range, {
|
|
60
|
+
includePrerelease: true
|
|
61
|
+
})) {
|
|
62
|
+
unmet.push(`${peer} ${peerVersion} requires ${name} ${range}, but ${source} ${sourceVersion} needs ${version}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return unmet.length > 0 ? unmet.join('; ') : undefined;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Set each rule's followers, and their lockstep group mates, to the exact
|
|
70
|
+
* versions the source being written depends on. Runs after the lockstep, which
|
|
71
|
+
* can only hold a group back and so can't move one up to what the source needs.
|
|
72
|
+
*
|
|
73
|
+
* Mutates `proposed`, which holds versions not yet written anywhere. When a peer
|
|
74
|
+
* would reject the result, or a manifest can't be read, every pin the rule covers
|
|
75
|
+
* is put back to `current` for this run instead. Returns a note for each pin set
|
|
76
|
+
* and each rule held, so the reason reaches the update's PR.
|
|
77
|
+
*/ export const pinToExactDependencies = async (rules, groups, current, proposed, lookup)=>{
|
|
78
|
+
const notes = [];
|
|
79
|
+
const written = (name)=>{
|
|
80
|
+
const version = proposed[name] ?? current[name];
|
|
81
|
+
return version === undefined ? undefined : bare(version);
|
|
82
|
+
};
|
|
83
|
+
for (const rule of rules){
|
|
84
|
+
const { source, followers, peers, reason } = rule;
|
|
85
|
+
const mates = groups.filter((group)=>followers.some((name)=>group.includes(name))).flat();
|
|
86
|
+
const covered = [
|
|
87
|
+
...new Set([
|
|
88
|
+
source,
|
|
89
|
+
...followers,
|
|
90
|
+
...mates,
|
|
91
|
+
...peers
|
|
92
|
+
])
|
|
93
|
+
].filter((name)=>current[name] !== undefined);
|
|
94
|
+
// Every pin the rule covers goes back to its current version, so nothing
|
|
95
|
+
// the rule could not check is written.
|
|
96
|
+
const hold = (why)=>{
|
|
97
|
+
const notTaken = covered.filter((name)=>proposed[name] !== undefined && proposed[name] !== current[name]);
|
|
98
|
+
notes.push({
|
|
99
|
+
name: source,
|
|
100
|
+
note: `${source} held at ${current[source]}, with ${covered.filter((name)=>name !== source).join(', ')} at their current versions` + (notTaken.length > 0 ? ` (not taken: ${notTaken.map((name)=>`${name} ${proposed[name]}`).join(', ')})` : '') + `: ${why}`
|
|
101
|
+
});
|
|
102
|
+
for (const name of covered)proposed[name] = current[name];
|
|
103
|
+
};
|
|
104
|
+
const sourceVersion = written(source);
|
|
105
|
+
if (sourceVersion === undefined) continue;
|
|
106
|
+
let dependencies;
|
|
107
|
+
try {
|
|
108
|
+
dependencies = await lookup(source, sourceVersion, 'dependencies');
|
|
109
|
+
} catch (error) {
|
|
110
|
+
hold(`could not read the dependencies of ${source} ${sourceVersion} (${message(error)})`);
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const targets = targetsFrom(rule, sourceVersion, dependencies, groups, current);
|
|
114
|
+
if (!(targets instanceof Map)) {
|
|
115
|
+
hold(targets.held);
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
const unmet = await unmetPeers(rule, sourceVersion, targets, written, lookup);
|
|
119
|
+
if (unmet) {
|
|
120
|
+
hold(unmet);
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
for (const [name, version] of targets){
|
|
124
|
+
const before = proposed[name] ?? current[name];
|
|
125
|
+
if (before === version) continue;
|
|
126
|
+
proposed[name] = version;
|
|
127
|
+
notes.push({
|
|
128
|
+
name,
|
|
129
|
+
note: `${name} set to ${version} (${before} proposed) to match the exact dependencies of ${source} ${sourceVersion}: ${reason}`
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return notes;
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
//# sourceMappingURL=exact-dependency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/version-lockstep/exact-dependency.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { coerce, satisfies, valid } from 'semver';\nimport type {\n IVersionedDep,\n LockstepNote,\n ProposedVersions,\n} from './lockstep.js';\n\n/**\n * Pins that must equal the exact `dependencies` a published release of another\n * pin declares, for packages that don't share a version line.\n */\nexport interface ExactDependencyPin {\n /** The pin whose published `dependencies` the followers take. */\n source: IVersionedDep;\n /** Pins set to exactly the version `source` depends on. */\n followers: readonly [IVersionedDep, ...IVersionedDep[]];\n /** Pins whose published `peerDependencies` must accept the followers. */\n peers: readonly IVersionedDep[];\n /** Why the followers must match, for the update's PR. */\n reason: string;\n}\n\n/** The manifest fields the rule reads. */\nexport type ManifestField = 'dependencies' | 'peerDependencies';\n\n/**\n * Reads one field of a published release's manifest, for example from\n * `https://registry.npmjs.org/<name>/<version>`. Resolves to `{}` when the\n * release has no such field, and rejects when the release can't be read.\n */\nexport type DependencyLookup = (\n name: string,\n version: string,\n field: ManifestField,\n) => Promise<Record<string, string>>;\n\n/** Groups of pins held at one version, as in `LOCKSTEP_GROUPS`. */\ntype Groups = readonly (readonly string[])[];\n\n/** The version each pin must take, or why there isn't one. */\ntype Targets = Map<IVersionedDep, string> | { held: string };\n\n/** The bare version in a pin, whatever range syntax it was written with. */\nconst bare = (version: string): string | undefined =>\n coerce(version, { includePrerelease: true })?.version;\n\nconst message = (error: unknown): string =>\n error instanceof Error ? error.message : String(error);\n\n/**\n * The versions the source's `dependencies` give its followers, and the version\n * of the follower each group mate is grouped with, so the group stays in step.\n */\nconst targetsFrom = (\n { source, followers }: ExactDependencyPin,\n sourceVersion: string,\n dependencies: Record<string, string>,\n groups: Groups,\n current: Readonly<ProposedVersions>,\n): Targets => {\n const missing = followers.filter((name) => !dependencies[name]);\n if (missing.length > 0) {\n return {\n held: `${source} ${sourceVersion} does not depend on ${missing.join(', ')}`,\n };\n }\n\n // Releases so far declare exact versions. If one declares a range, take its\n // bare version: our pins are exact, and a single copy needs that version.\n const targets = new Map<IVersionedDep, string>(\n followers.map((name) => {\n const declared = dependencies[name];\n return [name, valid(declared) ?? bare(declared) ?? declared];\n }),\n );\n\n for (const group of groups) {\n const inGroup = followers.filter((name) => group.includes(name));\n if (inGroup.length === 0) continue;\n const version = targets.get(inGroup[0]) as string;\n const disagreeing = inGroup.find((name) => targets.get(name) !== version);\n if (disagreeing) {\n return {\n held: `${source} ${sourceVersion} depends on ${inGroup[0]} ${version} but ${disagreeing} ${targets.get(disagreeing)}, which must move in step`,\n };\n }\n for (const name of group as readonly IVersionedDep[]) {\n if (!targets.has(name) && current[name] !== undefined) {\n targets.set(name, version);\n }\n }\n }\n\n return targets;\n};\n\n/** Why the peers being written would reject the targets, if they would. */\nconst unmetPeers = async (\n { source, peers }: ExactDependencyPin,\n sourceVersion: string,\n targets: Map<IVersionedDep, string>,\n written: (name: IVersionedDep) => string | undefined,\n lookup: DependencyLookup,\n): Promise<string | undefined> => {\n const unmet: string[] = [];\n for (const peer of peers) {\n const peerVersion = written(peer);\n if (peerVersion === undefined) continue;\n let ranges: Record<string, string>;\n try {\n ranges = await lookup(peer, peerVersion, 'peerDependencies');\n } catch (error) {\n return `could not read the peerDependencies of ${peer} ${peerVersion} (${message(error)})`;\n }\n for (const [name, version] of targets) {\n const range = ranges[name];\n if (range && !satisfies(version, range, { includePrerelease: true })) {\n unmet.push(\n `${peer} ${peerVersion} requires ${name} ${range}, but ${source} ${sourceVersion} needs ${version}`,\n );\n }\n }\n }\n return unmet.length > 0 ? unmet.join('; ') : undefined;\n};\n\n/**\n * Set each rule's followers, and their lockstep group mates, to the exact\n * versions the source being written depends on. Runs after the lockstep, which\n * can only hold a group back and so can't move one up to what the source needs.\n *\n * Mutates `proposed`, which holds versions not yet written anywhere. When a peer\n * would reject the result, or a manifest can't be read, every pin the rule covers\n * is put back to `current` for this run instead. Returns a note for each pin set\n * and each rule held, so the reason reaches the update's PR.\n */\nexport const pinToExactDependencies = async (\n rules: readonly ExactDependencyPin[],\n groups: Groups,\n current: Readonly<ProposedVersions>,\n proposed: ProposedVersions,\n lookup: DependencyLookup,\n): Promise<LockstepNote[]> => {\n const notes: LockstepNote[] = [];\n const written = (name: IVersionedDep): string | undefined => {\n const version = proposed[name] ?? current[name];\n return version === undefined ? undefined : bare(version);\n };\n\n for (const rule of rules) {\n const { source, followers, peers, reason } = rule;\n const mates = groups\n .filter((group) => followers.some((name) => group.includes(name)))\n .flat() as IVersionedDep[];\n const covered = [\n ...new Set([source, ...followers, ...mates, ...peers]),\n ].filter((name) => current[name] !== undefined);\n\n // Every pin the rule covers goes back to its current version, so nothing\n // the rule could not check is written.\n const hold = (why: string) => {\n const notTaken = covered.filter(\n (name) =>\n proposed[name] !== undefined && proposed[name] !== current[name],\n );\n notes.push({\n name: source,\n note:\n `${source} held at ${current[source]}, with ${covered\n .filter((name) => name !== source)\n .join(', ')} at their current versions` +\n (notTaken.length > 0\n ? ` (not taken: ${notTaken\n .map((name) => `${name} ${proposed[name]}`)\n .join(', ')})`\n : '') +\n `: ${why}`,\n });\n for (const name of covered) proposed[name] = current[name];\n };\n\n const sourceVersion = written(source);\n if (sourceVersion === undefined) continue;\n\n let dependencies: Record<string, string>;\n try {\n dependencies = await lookup(source, sourceVersion, 'dependencies');\n } catch (error) {\n hold(\n `could not read the dependencies of ${source} ${sourceVersion} (${message(error)})`,\n );\n continue;\n }\n\n const targets = targetsFrom(\n rule,\n sourceVersion,\n dependencies,\n groups,\n current,\n );\n if (!(targets instanceof Map)) {\n hold(targets.held);\n continue;\n }\n\n const unmet = await unmetPeers(\n rule,\n sourceVersion,\n targets,\n written,\n lookup,\n );\n if (unmet) {\n hold(unmet);\n continue;\n }\n\n for (const [name, version] of targets) {\n const before = proposed[name] ?? current[name];\n if (before === version) continue;\n proposed[name] = version;\n notes.push({\n name,\n note: `${name} set to ${version} (${before} proposed) to match the exact dependencies of ${source} ${sourceVersion}: ${reason}`,\n });\n }\n }\n\n return notes;\n};\n"],"names":["coerce","satisfies","valid","bare","version","includePrerelease","message","error","Error","String","targetsFrom","source","followers","sourceVersion","dependencies","groups","current","missing","filter","name","length","held","join","targets","Map","map","declared","group","inGroup","includes","get","disagreeing","find","has","undefined","set","unmetPeers","peers","written","lookup","unmet","peer","peerVersion","ranges","range","push","pinToExactDependencies","rules","proposed","notes","rule","reason","mates","some","flat","covered","Set","hold","why","notTaken","note","before"],"mappings":"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"}
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
|
-
import type { IPyDepVersion } from '../versions.js';
|
|
5
|
+
import type { IPyDepVersion, ITerraformProviderVersion } from '../versions.js';
|
|
6
6
|
import type { IVersionedDep, LockstepNote } from './lockstep.js';
|
|
7
7
|
/**
|
|
8
8
|
* A pin the version update must not move, why, and what lets it move again.
|
|
9
9
|
*
|
|
10
10
|
* The npm equivalent is a `reject` entry in `.ncurc.cjs`. pip-check-updates
|
|
11
|
-
* has no exclude option
|
|
11
|
+
* has no exclude option and Terraform providers are resolved from the
|
|
12
|
+
* registry, so Python and Terraform pins are held here instead.
|
|
12
13
|
*/
|
|
13
14
|
export interface VersionHold<Name extends IVersionedDep = IVersionedDep> {
|
|
14
15
|
name: Name;
|
|
@@ -17,6 +18,8 @@ export interface VersionHold<Name extends IVersionedDep = IVersionedDep> {
|
|
|
17
18
|
}
|
|
18
19
|
/** Python pins the version update keeps at their current version. */
|
|
19
20
|
export declare const PY_VERSION_HOLDS: readonly VersionHold<IPyDepVersion>[];
|
|
21
|
+
/** Terraform providers the version update keeps at their current version. */
|
|
22
|
+
export declare const TERRAFORM_VERSION_HOLDS: readonly VersionHold<ITerraformProviderVersion>[];
|
|
20
23
|
/**
|
|
21
24
|
* Put each held pin the run proposed moving back to its current version.
|
|
22
25
|
*
|
|
@@ -8,6 +8,13 @@
|
|
|
8
8
|
liftWhen: 'a newer ty has been checked against all vended Python templates (run the py-client, py#dynamodb and other Python-typecheck specs with it)'
|
|
9
9
|
}
|
|
10
10
|
];
|
|
11
|
+
/** Terraform providers the version update keeps at their current version. */ export const TERRAFORM_VERSION_HOLDS = [
|
|
12
|
+
{
|
|
13
|
+
name: 'aws',
|
|
14
|
+
reason: 'hashicorp/aws 6.69.0 moved to aws-sdk-go-base/v2 v2.0.0-beta.75, whose bufio.Scanner response logger fails reading aws_cognito_managed_login_branding with "token too long", so the vended Cognito user identity fails apply (terraform-provider-aws#50481)',
|
|
15
|
+
liftWhen: "a hashicorp/aws release includes aws-sdk-go-base#1539 (fixes terraform-provider-aws#50481); check the provider's go.mod for aws-sdk-go-base/v2 > beta.75 or the changelog"
|
|
16
|
+
}
|
|
17
|
+
];
|
|
11
18
|
/**
|
|
12
19
|
* Put each held pin the run proposed moving back to its current version.
|
|
13
20
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/version-lockstep/hold.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { IPyDepVersion } from '../versions.js';\nimport type { IVersionedDep, LockstepNote } from './lockstep.js';\n\n/**\n * A pin the version update must not move, why, and what lets it move again.\n *\n * The npm equivalent is a `reject` entry in `.ncurc.cjs`. pip-check-updates\n * has no exclude option, so Python pins are held here instead.\n */\nexport interface VersionHold<Name extends IVersionedDep = IVersionedDep> {\n name: Name;\n reason: string;\n liftWhen: string;\n}\n\n/** Python pins the version update keeps at their current version. */\nexport const PY_VERSION_HOLDS: readonly VersionHold<IPyDepVersion>[] = [\n {\n name: 'ty',\n reason:\n 'ty is 0.x and its releases add diagnostics that fail the vended Python templates',\n liftWhen:\n 'a newer ty has been checked against all vended Python templates (run the py-client, py#dynamodb and other Python-typecheck specs with it)',\n },\n];\n\n/**\n * Put each held pin the run proposed moving back to its current version.\n *\n * Mutates `proposed`, which holds versions not yet written anywhere, and\n * returns a note for each pin it held so the reason reaches the update's PR.\n */\nexport const holdPinnedVersions = <Name extends IVersionedDep>(\n holds: readonly VersionHold<Name>[],\n current: Readonly<Partial<Record<Name, string>>>,\n proposed: Partial<Record<Name, string>>,\n): LockstepNote[] => {\n const notes: LockstepNote[] = [];\n\n for (const { name, reason, liftWhen } of holds) {\n const held = current[name];\n const available = proposed[name];\n if (held === undefined || available === undefined || available === held) {\n continue;\n }\n proposed[name] = held;\n notes.push({\n name,\n note: `${name} held at ${held} (${available} available): ${reason}. Lift when ${liftWhen}`,\n });\n }\n\n return notes;\n};\n"],"names":["PY_VERSION_HOLDS","name","reason","liftWhen","holdPinnedVersions","holds","current","proposed","notes","held","available","undefined","push","note"],"mappings":"AAAA;;;CAGC,
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/version-lockstep/hold.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { IPyDepVersion, ITerraformProviderVersion } from '../versions.js';\nimport type { IVersionedDep, LockstepNote } from './lockstep.js';\n\n/**\n * A pin the version update must not move, why, and what lets it move again.\n *\n * The npm equivalent is a `reject` entry in `.ncurc.cjs`. pip-check-updates\n * has no exclude option and Terraform providers are resolved from the\n * registry, so Python and Terraform pins are held here instead.\n */\nexport interface VersionHold<Name extends IVersionedDep = IVersionedDep> {\n name: Name;\n reason: string;\n liftWhen: string;\n}\n\n/** Python pins the version update keeps at their current version. */\nexport const PY_VERSION_HOLDS: readonly VersionHold<IPyDepVersion>[] = [\n {\n name: 'ty',\n reason:\n 'ty is 0.x and its releases add diagnostics that fail the vended Python templates',\n liftWhen:\n 'a newer ty has been checked against all vended Python templates (run the py-client, py#dynamodb and other Python-typecheck specs with it)',\n },\n];\n\n/** Terraform providers the version update keeps at their current version. */\nexport const TERRAFORM_VERSION_HOLDS: readonly VersionHold<ITerraformProviderVersion>[] =\n [\n {\n name: 'aws',\n reason:\n 'hashicorp/aws 6.69.0 moved to aws-sdk-go-base/v2 v2.0.0-beta.75, whose bufio.Scanner response logger fails reading aws_cognito_managed_login_branding with \"token too long\", so the vended Cognito user identity fails apply (terraform-provider-aws#50481)',\n liftWhen:\n \"a hashicorp/aws release includes aws-sdk-go-base#1539 (fixes terraform-provider-aws#50481); check the provider's go.mod for aws-sdk-go-base/v2 > beta.75 or the changelog\",\n },\n ];\n\n/**\n * Put each held pin the run proposed moving back to its current version.\n *\n * Mutates `proposed`, which holds versions not yet written anywhere, and\n * returns a note for each pin it held so the reason reaches the update's PR.\n */\nexport const holdPinnedVersions = <Name extends IVersionedDep>(\n holds: readonly VersionHold<Name>[],\n current: Readonly<Partial<Record<Name, string>>>,\n proposed: Partial<Record<Name, string>>,\n): LockstepNote[] => {\n const notes: LockstepNote[] = [];\n\n for (const { name, reason, liftWhen } of holds) {\n const held = current[name];\n const available = proposed[name];\n if (held === undefined || available === undefined || available === held) {\n continue;\n }\n proposed[name] = held;\n notes.push({\n name,\n note: `${name} held at ${held} (${available} available): ${reason}. Lift when ${liftWhen}`,\n });\n }\n\n return notes;\n};\n"],"names":["PY_VERSION_HOLDS","name","reason","liftWhen","TERRAFORM_VERSION_HOLDS","holdPinnedVersions","holds","current","proposed","notes","held","available","undefined","push","note"],"mappings":"AAAA;;;CAGC,GAiBD,mEAAmE,GACnE,OAAO,MAAMA,mBAA0D;IACrE;QACEC,MAAM;QACNC,QACE;QACFC,UACE;IACJ;CACD,CAAC;AAEF,2EAA2E,GAC3E,OAAO,MAAMC,0BACX;IACE;QACEH,MAAM;QACNC,QACE;QACFC,UACE;IACJ;CACD,CAAC;AAEJ;;;;;CAKC,GACD,OAAO,MAAME,qBAAqB,CAChCC,OACAC,SACAC;IAEA,MAAMC,QAAwB,EAAE;IAEhC,KAAK,MAAM,EAAER,IAAI,EAAEC,MAAM,EAAEC,QAAQ,EAAE,IAAIG,MAAO;QAC9C,MAAMI,OAAOH,OAAO,CAACN,KAAK;QAC1B,MAAMU,YAAYH,QAAQ,CAACP,KAAK;QAChC,IAAIS,SAASE,aAAaD,cAAcC,aAAaD,cAAcD,MAAM;YACvE;QACF;QACAF,QAAQ,CAACP,KAAK,GAAGS;QACjBD,MAAMI,IAAI,CAAC;YACTZ;YACAa,MAAM,GAAGb,KAAK,SAAS,EAAES,KAAK,EAAE,EAAEC,UAAU,aAAa,EAAET,OAAO,YAAY,EAAEC,UAAU;QAC5F;IACF;IAEA,OAAOM;AACT,EAAE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { IJavaVersion, IMiseVersion, IPyDepVersion, ITsDepVersion } from '../versions.js';
|
|
1
|
+
import type { IJavaVersion, IMiseVersion, IPyDepVersion, ITerraformProviderVersion, ITsDepVersion } from '../versions.js';
|
|
2
2
|
/** Any dependency a version table pins. */
|
|
3
|
-
export type IVersionedDep = ITsDepVersion | IPyDepVersion | IJavaVersion | IMiseVersion;
|
|
3
|
+
export type IVersionedDep = ITsDepVersion | IPyDepVersion | IJavaVersion | IMiseVersion | ITerraformProviderVersion;
|
|
4
4
|
/** A pin the run deliberately did not take, and why. */
|
|
5
5
|
export interface LockstepNote {
|
|
6
6
|
name: IVersionedDep;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/version-lockstep/lockstep.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { coerce, compare } from 'semver';\nimport type {\n IJavaVersion,\n IMiseVersion,\n IPyDepVersion,\n ITsDepVersion,\n} from '../versions.js';\n\n/** Any dependency a version table pins. */\nexport type IVersionedDep =\n | ITsDepVersion\n | IPyDepVersion\n | IJavaVersion\n | IMiseVersion;\n\n/** A pin the run deliberately did not take, and why. */\nexport interface LockstepNote {\n name: IVersionedDep;\n note: string;\n}\n\n/** Proposed versions from a run, keyed by dependency name. */\nexport type ProposedVersions = Partial<Record<IVersionedDep, string>>;\n\n/**\n * Dependencies that must move as a unit. At least two, since one pin has nothing\n * to stay in step with.\n */\nexport type LockstepGroup = readonly [\n IVersionedDep,\n IVersionedDep,\n ...IVersionedDep[],\n];\n\n/** The bare version in a pin, whatever range syntax it was written with. */\nconst bare = (version: string): string | undefined =>\n coerce(version, { includePrerelease: true })?.version;\n\n/** The range prefix a pin was written with, so it is preserved. */\nconst prefixOf = (version: string, bareVersion: string): string =>\n version.slice(0, version.indexOf(bareVersion));\n\n/**\n * Hold every member of each group at the lowest version proposed across it, so a\n * group only moves once all of its members can.\n *\n * Mutates the tables, which hold proposed versions not yet written anywhere.\n * Groups the run proposed fewer than two comparable versions for are left alone.\n */\nexport const holdGroupsInLockstep = (\n groups: readonly LockstepGroup[],\n ...tables: readonly ProposedVersions[]\n): LockstepNote[] => {\n const notes: LockstepNote[] = [];\n\n for (const group of groups) {\n const members = group.flatMap((name) => {\n const table = tables.find((candidate) => candidate[name] !== undefined);\n const proposed = table?.[name];\n const version = proposed && bare(proposed);\n return table && proposed && version\n ? [{ name, table, proposed, version }]\n : [];\n });\n if (members.length < 2) continue;\n\n const lowest = members\n .map(({ version }) => version)\n .reduce((min, version) => (compare(version, min) < 0 ? version : min));\n\n for (const { name, table, proposed, version } of members) {\n if (version === lowest) continue;\n const held = `${prefixOf(proposed, version)}${lowest}`;\n table[name] = held;\n notes.push({\n name,\n note: `${name} held at ${held} (${proposed} available): must move in step with ${group\n .filter((other) => other !== name)\n .join(', ')}`,\n });\n }\n }\n\n return notes;\n};\n"],"names":["coerce","compare","bare","version","includePrerelease","prefixOf","bareVersion","slice","indexOf","holdGroupsInLockstep","groups","tables","notes","group","members","flatMap","name","table","find","candidate","undefined","proposed","length","lowest","map","reduce","min","held","push","note","filter","other","join"],"mappings":"AAAA;;;CAGC,GACD,SAASA,MAAM,EAAEC,OAAO,QAAQ,SAAS;
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/version-lockstep/lockstep.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { coerce, compare } from 'semver';\nimport type {\n IJavaVersion,\n IMiseVersion,\n IPyDepVersion,\n ITerraformProviderVersion,\n ITsDepVersion,\n} from '../versions.js';\n\n/** Any dependency a version table pins. */\nexport type IVersionedDep =\n | ITsDepVersion\n | IPyDepVersion\n | IJavaVersion\n | IMiseVersion\n | ITerraformProviderVersion;\n\n/** A pin the run deliberately did not take, and why. */\nexport interface LockstepNote {\n name: IVersionedDep;\n note: string;\n}\n\n/** Proposed versions from a run, keyed by dependency name. */\nexport type ProposedVersions = Partial<Record<IVersionedDep, string>>;\n\n/**\n * Dependencies that must move as a unit. At least two, since one pin has nothing\n * to stay in step with.\n */\nexport type LockstepGroup = readonly [\n IVersionedDep,\n IVersionedDep,\n ...IVersionedDep[],\n];\n\n/** The bare version in a pin, whatever range syntax it was written with. */\nconst bare = (version: string): string | undefined =>\n coerce(version, { includePrerelease: true })?.version;\n\n/** The range prefix a pin was written with, so it is preserved. */\nconst prefixOf = (version: string, bareVersion: string): string =>\n version.slice(0, version.indexOf(bareVersion));\n\n/**\n * Hold every member of each group at the lowest version proposed across it, so a\n * group only moves once all of its members can.\n *\n * Mutates the tables, which hold proposed versions not yet written anywhere.\n * Groups the run proposed fewer than two comparable versions for are left alone.\n */\nexport const holdGroupsInLockstep = (\n groups: readonly LockstepGroup[],\n ...tables: readonly ProposedVersions[]\n): LockstepNote[] => {\n const notes: LockstepNote[] = [];\n\n for (const group of groups) {\n const members = group.flatMap((name) => {\n const table = tables.find((candidate) => candidate[name] !== undefined);\n const proposed = table?.[name];\n const version = proposed && bare(proposed);\n return table && proposed && version\n ? [{ name, table, proposed, version }]\n : [];\n });\n if (members.length < 2) continue;\n\n const lowest = members\n .map(({ version }) => version)\n .reduce((min, version) => (compare(version, min) < 0 ? version : min));\n\n for (const { name, table, proposed, version } of members) {\n if (version === lowest) continue;\n const held = `${prefixOf(proposed, version)}${lowest}`;\n table[name] = held;\n notes.push({\n name,\n note: `${name} held at ${held} (${proposed} available): must move in step with ${group\n .filter((other) => other !== name)\n .join(', ')}`,\n });\n }\n }\n\n return notes;\n};\n"],"names":["coerce","compare","bare","version","includePrerelease","prefixOf","bareVersion","slice","indexOf","holdGroupsInLockstep","groups","tables","notes","group","members","flatMap","name","table","find","candidate","undefined","proposed","length","lowest","map","reduce","min","held","push","note","filter","other","join"],"mappings":"AAAA;;;CAGC,GACD,SAASA,MAAM,EAAEC,OAAO,QAAQ,SAAS;AAoCzC,0EAA0E,GAC1E,MAAMC,OAAO,CAACC,UACZH,OAAOG,SAAS;QAAEC,mBAAmB;IAAK,IAAID;AAEhD,iEAAiE,GACjE,MAAME,WAAW,CAACF,SAAiBG,cACjCH,QAAQI,KAAK,CAAC,GAAGJ,QAAQK,OAAO,CAACF;AAEnC;;;;;;CAMC,GACD,OAAO,MAAMG,uBAAuB,CAClCC,QACA,GAAGC;IAEH,MAAMC,QAAwB,EAAE;IAEhC,KAAK,MAAMC,SAASH,OAAQ;QAC1B,MAAMI,UAAUD,MAAME,OAAO,CAAC,CAACC;YAC7B,MAAMC,QAAQN,OAAOO,IAAI,CAAC,CAACC,YAAcA,SAAS,CAACH,KAAK,KAAKI;YAC7D,MAAMC,WAAWJ,OAAO,CAACD,KAAK;YAC9B,MAAMb,UAAUkB,YAAYnB,KAAKmB;YACjC,OAAOJ,SAASI,YAAYlB,UACxB;gBAAC;oBAAEa;oBAAMC;oBAAOI;oBAAUlB;gBAAQ;aAAE,GACpC,EAAE;QACR;QACA,IAAIW,QAAQQ,MAAM,GAAG,GAAG;QAExB,MAAMC,SAAST,QACZU,GAAG,CAAC,CAAC,EAAErB,OAAO,EAAE,GAAKA,SACrBsB,MAAM,CAAC,CAACC,KAAKvB,UAAaF,QAAQE,SAASuB,OAAO,IAAIvB,UAAUuB;QAEnE,KAAK,MAAM,EAAEV,IAAI,EAAEC,KAAK,EAAEI,QAAQ,EAAElB,OAAO,EAAE,IAAIW,QAAS;YACxD,IAAIX,YAAYoB,QAAQ;YACxB,MAAMI,OAAO,GAAGtB,SAASgB,UAAUlB,WAAWoB,QAAQ;YACtDN,KAAK,CAACD,KAAK,GAAGW;YACdf,MAAMgB,IAAI,CAAC;gBACTZ;gBACAa,MAAM,GAAGb,KAAK,SAAS,EAAEW,KAAK,EAAE,EAAEN,SAAS,oCAAoC,EAAER,MAC9EiB,MAAM,CAAC,CAACC,QAAUA,UAAUf,MAC5BgB,IAAI,CAAC,OAAO;YACjB;QACF;IACF;IAEA,OAAOpB;AACT,EAAE"}
|
package/src/utils/versions.d.ts
CHANGED
|
@@ -9,69 +9,70 @@ import { type DeclaredPy, type DeclaredTs, type DependencyDeclaration } from './
|
|
|
9
9
|
export declare const TS_VERSIONS: {
|
|
10
10
|
readonly '@a2a-js/sdk': "0.3.14";
|
|
11
11
|
readonly '@aws/aws-distro-opentelemetry-node-autoinstrumentation': "0.13.0";
|
|
12
|
-
readonly '@opentelemetry/propagator-jaeger': "2.
|
|
12
|
+
readonly '@opentelemetry/propagator-jaeger': "2.12.0";
|
|
13
13
|
readonly minimatch: "10.2.6";
|
|
14
14
|
readonly 'deepmerge-ts': "8.0.2";
|
|
15
|
-
readonly mysql2: "3.24.
|
|
16
|
-
readonly '@aws-sdk/client-dynamodb': "3.
|
|
17
|
-
readonly '@aws-sdk/client-api-gateway': "3.
|
|
18
|
-
readonly '@aws-sdk/client-iam': "3.
|
|
19
|
-
readonly '@aws-sdk/client-bedrock-agentcore': "3.
|
|
20
|
-
readonly '@aws-sdk/client-bedrock-runtime': "3.
|
|
21
|
-
readonly '@aws-sdk/client-s3': "3.
|
|
22
|
-
readonly '@aws-sdk/client-sts': "3.
|
|
23
|
-
readonly '@aws-sdk/client-cognito-identity-provider': "3.
|
|
24
|
-
readonly '@aws-sdk/credential-providers': "3.
|
|
25
|
-
readonly '@aws-sdk/credential-provider-cognito-identity': "3.972.
|
|
26
|
-
readonly '@aws-sdk/client-secrets-manager': "3.
|
|
27
|
-
readonly '@aws-sdk/rds-signer': "3.
|
|
28
|
-
readonly '@smithy/server-apigateway': "0.3.
|
|
29
|
-
readonly '@smithy/server-node': "0.3.
|
|
30
|
-
readonly '@aws-lambda-powertools/logger': "2.
|
|
31
|
-
readonly '@aws-lambda-powertools/metrics': "2.
|
|
32
|
-
readonly '@aws-lambda-powertools/parameters': "2.
|
|
33
|
-
readonly '@aws-lambda-powertools/tracer': "2.
|
|
34
|
-
readonly '@aws-lambda-powertools/parser': "2.
|
|
35
|
-
readonly '@aws-sdk/client-appconfigdata': "3.
|
|
15
|
+
readonly mysql2: "3.24.6";
|
|
16
|
+
readonly '@aws-sdk/client-dynamodb': "3.1151.0";
|
|
17
|
+
readonly '@aws-sdk/client-api-gateway': "3.1151.0";
|
|
18
|
+
readonly '@aws-sdk/client-iam': "3.1151.0";
|
|
19
|
+
readonly '@aws-sdk/client-bedrock-agentcore': "3.1151.0";
|
|
20
|
+
readonly '@aws-sdk/client-bedrock-runtime': "3.1151.0";
|
|
21
|
+
readonly '@aws-sdk/client-s3': "3.1151.0";
|
|
22
|
+
readonly '@aws-sdk/client-sts': "3.1151.0";
|
|
23
|
+
readonly '@aws-sdk/client-cognito-identity-provider': "3.1151.0";
|
|
24
|
+
readonly '@aws-sdk/credential-providers': "3.1151.0";
|
|
25
|
+
readonly '@aws-sdk/credential-provider-cognito-identity': "3.972.73";
|
|
26
|
+
readonly '@aws-sdk/client-secrets-manager': "3.1151.0";
|
|
27
|
+
readonly '@aws-sdk/rds-signer': "3.1151.0";
|
|
28
|
+
readonly '@smithy/server-apigateway': "0.3.4";
|
|
29
|
+
readonly '@smithy/server-node': "0.3.4";
|
|
30
|
+
readonly '@aws-lambda-powertools/logger': "2.36.0";
|
|
31
|
+
readonly '@aws-lambda-powertools/metrics': "2.36.0";
|
|
32
|
+
readonly '@aws-lambda-powertools/parameters': "2.36.0";
|
|
33
|
+
readonly '@aws-lambda-powertools/tracer': "2.36.0";
|
|
34
|
+
readonly '@aws-lambda-powertools/parser': "2.36.0";
|
|
35
|
+
readonly '@aws-sdk/client-appconfigdata': "3.1151.0";
|
|
36
36
|
readonly '@middy/core': "7.9.2";
|
|
37
37
|
readonly '@nxlv/python': "23.2.1";
|
|
38
38
|
readonly '@nx-extend/terraform': "10.4.1";
|
|
39
|
-
readonly nx: "23.
|
|
40
|
-
readonly '@nx/devkit': "23.
|
|
41
|
-
readonly '@nx/js': "23.
|
|
42
|
-
readonly '@nx/react': "23.
|
|
43
|
-
readonly '@nx/vite': "23.
|
|
44
|
-
readonly '@nx/vitest': "23.
|
|
45
|
-
readonly '@nx/workspace': "23.
|
|
46
|
-
readonly 'create-nx-workspace': "23.
|
|
39
|
+
readonly nx: "23.3.0";
|
|
40
|
+
readonly '@nx/devkit': "23.3.0";
|
|
41
|
+
readonly '@nx/js': "23.3.0";
|
|
42
|
+
readonly '@nx/react': "23.3.0";
|
|
43
|
+
readonly '@nx/vite': "23.3.0";
|
|
44
|
+
readonly '@nx/vitest': "23.3.0";
|
|
45
|
+
readonly '@nx/workspace': "23.3.0";
|
|
46
|
+
readonly 'create-nx-workspace': "23.3.0";
|
|
47
47
|
readonly '@swc-node/register': "1.12.1";
|
|
48
|
-
readonly '@swc/core': "1.16.
|
|
49
|
-
readonly '@modelcontextprotocol/sdk': "1.32.
|
|
50
|
-
readonly '@modelcontextprotocol/
|
|
51
|
-
readonly '@
|
|
52
|
-
readonly '@ag-ui/
|
|
53
|
-
readonly '@ag-ui/
|
|
54
|
-
readonly '@ag-ui/
|
|
55
|
-
readonly '@ag-ui/
|
|
48
|
+
readonly '@swc/core': "1.16.18";
|
|
49
|
+
readonly '@modelcontextprotocol/sdk': "1.32.1";
|
|
50
|
+
readonly '@modelcontextprotocol/client': "2.3.1";
|
|
51
|
+
readonly '@modelcontextprotocol/inspector': "2.10.1";
|
|
52
|
+
readonly '@ag-ui/a2ui-toolkit': "0.0.5";
|
|
53
|
+
readonly '@ag-ui/aws-strands': "1.0.0";
|
|
54
|
+
readonly '@ag-ui/client': "1.0.2";
|
|
55
|
+
readonly '@ag-ui/core': "1.0.2";
|
|
56
|
+
readonly '@ag-ui/encoder': "1.0.2";
|
|
56
57
|
readonly 'agent-chat-cli': "0.3.0";
|
|
57
|
-
readonly '@copilotkit/react-core': "1.
|
|
58
|
+
readonly '@copilotkit/react-core': "1.79.0";
|
|
58
59
|
readonly rxjs: "7.8.2";
|
|
59
|
-
readonly '@strands-agents/sdk': "1.
|
|
60
|
-
readonly '@tanstack/react-router': "1.170.
|
|
61
|
-
readonly '@tanstack/router-plugin': "1.168.
|
|
62
|
-
readonly '@tanstack/router-generator': "1.167.
|
|
60
|
+
readonly '@strands-agents/sdk': "1.20.0";
|
|
61
|
+
readonly '@tanstack/react-router': "1.170.44";
|
|
62
|
+
readonly '@tanstack/router-plugin': "1.168.45";
|
|
63
|
+
readonly '@tanstack/router-generator': "1.167.43";
|
|
63
64
|
readonly '@tanstack/virtual-file-routes': "1.162.0";
|
|
64
65
|
readonly '@tanstack/router-utils': "1.162.3";
|
|
65
|
-
readonly '@cloudscape-design/board-components': "3.0.
|
|
66
|
-
readonly '@cloudscape-design/chat-components': "1.0.
|
|
67
|
-
readonly '@cloudscape-design/components': "3.0.
|
|
66
|
+
readonly '@cloudscape-design/board-components': "3.0.238";
|
|
67
|
+
readonly '@cloudscape-design/chat-components': "1.0.179";
|
|
68
|
+
readonly '@cloudscape-design/components': "3.0.1400";
|
|
68
69
|
readonly '@cloudscape-design/global-styles': "1.0.71";
|
|
69
|
-
readonly '@tanstack/react-query': "5.104.
|
|
70
|
-
readonly '@tanstack/react-query-devtools': "5.104.
|
|
70
|
+
readonly '@tanstack/react-query': "5.104.2";
|
|
71
|
+
readonly '@tanstack/react-query-devtools': "5.104.2";
|
|
71
72
|
readonly '@trpc/tanstack-react-query': "11.19.0";
|
|
72
73
|
readonly '@trpc/client': "11.19.0";
|
|
73
74
|
readonly '@trpc/server': "11.19.0";
|
|
74
|
-
readonly '@types/node': "26.6.
|
|
75
|
+
readonly '@types/node': "26.6.5";
|
|
75
76
|
readonly '@types/aws-lambda': "8.10.164";
|
|
76
77
|
readonly '@types/cors': "2.8.19";
|
|
77
78
|
readonly '@types/pg': "8.23.1";
|
|
@@ -84,12 +85,12 @@ export declare const TS_VERSIONS: {
|
|
|
84
85
|
readonly '@vitest/coverage-v8': "4.1.11";
|
|
85
86
|
readonly '@vitest/ui': "4.1.11";
|
|
86
87
|
readonly '@astrojs/react': "6.0.6";
|
|
87
|
-
readonly '@astrojs/starlight': "0.42.
|
|
88
|
-
readonly astro: "7.3.
|
|
88
|
+
readonly '@astrojs/starlight': "0.42.6";
|
|
89
|
+
readonly astro: "7.3.8";
|
|
89
90
|
readonly cookie: "2.0.1";
|
|
90
91
|
readonly aws4fetch: "1.0.20";
|
|
91
|
-
readonly 'aws-cdk': "2.
|
|
92
|
-
readonly 'aws-cdk-lib': "2.
|
|
92
|
+
readonly 'aws-cdk': "2.1145.0";
|
|
93
|
+
readonly 'aws-cdk-lib': "2.273.0";
|
|
93
94
|
readonly 'aws-xray-sdk-core': "3.12.0";
|
|
94
95
|
readonly constructs: "10.8.1";
|
|
95
96
|
readonly cors: "2.8.6";
|
|
@@ -107,39 +108,39 @@ export declare const TS_VERSIONS: {
|
|
|
107
108
|
readonly '@prisma/client': "7.10.0";
|
|
108
109
|
readonly ejs: "6.0.1";
|
|
109
110
|
readonly '@types/ejs': "3.1.5";
|
|
110
|
-
readonly express: "5.
|
|
111
|
+
readonly express: "5.3.0";
|
|
111
112
|
readonly 'fast-glob': "3.3.3";
|
|
112
113
|
readonly husky: "9.1.7";
|
|
113
114
|
readonly 'fs-extra': "11.4.1";
|
|
114
115
|
readonly '@types/fs-extra': "11.0.4";
|
|
115
116
|
readonly mariadb: "3.5.4";
|
|
116
|
-
readonly mise: "2026.10.
|
|
117
|
+
readonly mise: "2026.10.9";
|
|
117
118
|
readonly npm: "12.2.0";
|
|
118
|
-
readonly 'npm-check-updates': "23.1.
|
|
119
|
+
readonly 'npm-check-updates': "23.1.1";
|
|
119
120
|
readonly 'oidc-client-ts': "3.5.0";
|
|
120
121
|
readonly pg: "8.23.1";
|
|
121
122
|
readonly prisma: "7.10.0";
|
|
122
123
|
readonly 'react-oidc-context': "3.3.1";
|
|
123
124
|
readonly react: "19.3.0";
|
|
124
125
|
readonly 'react-dom': "19.3.0";
|
|
125
|
-
readonly rolldown: "1.2.
|
|
126
|
-
readonly 'rolldown-plugin-dts': "0.28.
|
|
126
|
+
readonly rolldown: "1.2.13";
|
|
127
|
+
readonly 'rolldown-plugin-dts': "0.28.8";
|
|
127
128
|
readonly shx: "0.4.0";
|
|
128
129
|
readonly 'simple-git': "4.0.2";
|
|
129
130
|
readonly 'source-map-support': "0.5.21";
|
|
130
|
-
readonly 'starlight-blog': "0.30.
|
|
131
|
+
readonly 'starlight-blog': "0.30.1";
|
|
131
132
|
readonly tailwindcss: "4.3.3";
|
|
132
133
|
readonly '@tailwindcss/vite': "4.3.3";
|
|
133
134
|
readonly tsx: "4.23.15";
|
|
134
|
-
readonly 'lucide-react': "1.
|
|
135
|
-
readonly 'radix-ui': "1.
|
|
136
|
-
readonly shadcn: "4.21.
|
|
135
|
+
readonly 'lucide-react': "1.56.0";
|
|
136
|
+
readonly 'radix-ui': "1.8.1";
|
|
137
|
+
readonly shadcn: "4.21.4";
|
|
137
138
|
readonly 'tw-animate-css': "1.4.0";
|
|
138
|
-
readonly vite: "8.3.
|
|
139
|
+
readonly vite: "8.3.4";
|
|
139
140
|
readonly typescript: "6.0.3";
|
|
140
141
|
readonly vitest: "4.1.11";
|
|
141
142
|
readonly jsdom: "29.1.1";
|
|
142
|
-
readonly zod: "4.6.
|
|
143
|
+
readonly zod: "4.6.7";
|
|
143
144
|
readonly ws: "8.22.0";
|
|
144
145
|
};
|
|
145
146
|
export type ITsDepVersion = keyof typeof TS_VERSIONS;
|
|
@@ -151,6 +152,21 @@ export type ITsDepVersion = keyof typeof TS_VERSIONS;
|
|
|
151
152
|
* pins, so they are named here but versioned in the manifests.
|
|
152
153
|
*/
|
|
153
154
|
export declare const LOCKSTEP_GROUPS: readonly [readonly ["@ag-ui/client", "@ag-ui/core", "@ag-ui/encoder"], readonly ["@biomejs/wasm-nodejs", "@biomejs/biome"], readonly ["@astral-sh/ruff-wasm-nodejs", "ruff"]];
|
|
155
|
+
/**
|
|
156
|
+
* Pins the version update sets to the exact `dependencies` of another vended
|
|
157
|
+
* package, as published for the version of it being written. Followers' lockstep
|
|
158
|
+
* group mates move with them. If a peer's published `peerDependencies` reject the
|
|
159
|
+
* result, or a manifest can't be read, all of these pins stay where they are.
|
|
160
|
+
*
|
|
161
|
+
* Use this rather than a lockstep group when the packages don't share a version
|
|
162
|
+
* line.
|
|
163
|
+
*/
|
|
164
|
+
export declare const EXACT_DEPENDENCY_PINS: readonly [{
|
|
165
|
+
readonly source: "@copilotkit/react-core";
|
|
166
|
+
readonly followers: readonly ["@ag-ui/client", "@ag-ui/core"];
|
|
167
|
+
readonly peers: readonly ["@ag-ui/aws-strands", "@ag-ui/a2ui-toolkit"];
|
|
168
|
+
readonly reason: "a second @ag-ui/client copy fails every generated website with TS2322";
|
|
169
|
+
}];
|
|
154
170
|
/**
|
|
155
171
|
* Add versions to the given dependencies, which the declaration must own.
|
|
156
172
|
*
|
|
@@ -170,13 +186,13 @@ export declare const NX_PACKAGES: readonly ["nx", "@nx/devkit", "@nx/js", "@nx/r
|
|
|
170
186
|
* The nx version the plugin is built against, and the single source of truth
|
|
171
187
|
* for every place a workspace's nx is pinned.
|
|
172
188
|
*/
|
|
173
|
-
export declare const NX_VERSION: "23.
|
|
189
|
+
export declare const NX_VERSION: "23.3.0";
|
|
174
190
|
/**
|
|
175
191
|
* Versions for Python dependencies added by generators
|
|
176
192
|
*/
|
|
177
193
|
export declare const PY_VERSIONS: {
|
|
178
194
|
readonly 'a2a-sdk': "==0.3.26";
|
|
179
|
-
readonly 'ag-ui-langgraph': "==0.0.
|
|
195
|
+
readonly 'ag-ui-langgraph': "==0.0.47";
|
|
180
196
|
readonly 'ag-ui-protocol': "==0.1.22";
|
|
181
197
|
readonly 'ag-ui-strands': "==0.4.1";
|
|
182
198
|
readonly aiosqlite: "==0.22.1";
|
|
@@ -184,33 +200,33 @@ export declare const PY_VERSIONS: {
|
|
|
184
200
|
readonly 'aws-lambda-powertools[tracer]': "==3.35.0";
|
|
185
201
|
readonly 'aws-lambda-powertools[parser]': "==3.35.0";
|
|
186
202
|
readonly 'aws-opentelemetry-distro': "==0.21.0";
|
|
187
|
-
readonly 'bedrock-agentcore': "==1.24.
|
|
188
|
-
readonly boto3: "==1.43.
|
|
189
|
-
readonly checkov: "==3.3.
|
|
190
|
-
readonly fastapi: "==0.
|
|
191
|
-
readonly 'fastapi[standard]': "==0.
|
|
203
|
+
readonly 'bedrock-agentcore': "==1.24.1";
|
|
204
|
+
readonly boto3: "==1.43.113";
|
|
205
|
+
readonly checkov: "==3.3.29";
|
|
206
|
+
readonly fastapi: "==0.143.1";
|
|
207
|
+
readonly 'fastapi[standard]': "==0.143.1";
|
|
192
208
|
readonly httpx: "==0.28.1";
|
|
193
|
-
readonly langchain: "==1.4.
|
|
194
|
-
readonly 'langchain-aws': "==1.8.
|
|
209
|
+
readonly langchain: "==1.4.6";
|
|
210
|
+
readonly 'langchain-aws': "==1.8.2";
|
|
195
211
|
readonly 'langchain-mcp-adapters': "==0.3.2";
|
|
196
|
-
readonly langgraph: "==1.2.
|
|
197
|
-
readonly 'langgraph-checkpoint-aws': "==1.2.
|
|
198
|
-
readonly 'langgraph-checkpoint-sqlite': "==3.1.
|
|
212
|
+
readonly langgraph: "==1.2.15";
|
|
213
|
+
readonly 'langgraph-checkpoint-aws': "==1.2.5";
|
|
214
|
+
readonly 'langgraph-checkpoint-sqlite': "==3.1.2";
|
|
199
215
|
readonly mcp: "==1.28.1";
|
|
200
216
|
readonly 'pip-check-updates': "==0.29.0";
|
|
201
217
|
readonly 'pip-licenses': "==5.5.5";
|
|
202
|
-
readonly pydantic: "==2.
|
|
203
|
-
readonly ruff: "==0.
|
|
204
|
-
readonly 'strands-agents': "==1.
|
|
205
|
-
readonly 'strands-agents[a2a]': "==1.
|
|
218
|
+
readonly pydantic: "==2.14.1";
|
|
219
|
+
readonly ruff: "==0.17.0";
|
|
220
|
+
readonly 'strands-agents': "==1.60.0";
|
|
221
|
+
readonly 'strands-agents[a2a]': "==1.60.0";
|
|
206
222
|
readonly 'strands-agents-tools': "==0.8.9";
|
|
207
223
|
readonly ty: "==0.0.87";
|
|
208
224
|
readonly pynamodb: "==6.1.0";
|
|
209
225
|
readonly uvicorn: "==0.54.0";
|
|
210
|
-
readonly sqlmodel: "==0.0.
|
|
226
|
+
readonly sqlmodel: "==0.0.48";
|
|
211
227
|
readonly alembic: "==1.20.0";
|
|
212
228
|
readonly aiomysql: "==0.3.2";
|
|
213
|
-
readonly asyncpg: "==0.
|
|
229
|
+
readonly asyncpg: "==0.32.0";
|
|
214
230
|
readonly greenlet: "==3.5.6";
|
|
215
231
|
};
|
|
216
232
|
export type IPyDepVersion = keyof typeof PY_VERSIONS;
|
|
@@ -363,7 +379,7 @@ export declare const terraformLambdaRuntimeVars: () => {
|
|
|
363
379
|
* Pinned exactly (no range operator) so generated infrastructure is reproducible.
|
|
364
380
|
*/
|
|
365
381
|
export declare const TERRAFORM_VERSIONS: {
|
|
366
|
-
readonly aws: "6.
|
|
382
|
+
readonly aws: "6.68.0";
|
|
367
383
|
readonly random: "3.9.1";
|
|
368
384
|
readonly null: "3.3.2";
|
|
369
385
|
readonly archive: "2.8.1";
|
|
@@ -377,7 +393,7 @@ export type ITerraformProviderVersion = keyof typeof TERRAFORM_VERSIONS;
|
|
|
377
393
|
* generated `.tf` templates (e.g. `version = "<%- awsProviderVersion %>"`)
|
|
378
394
|
*/
|
|
379
395
|
export declare const terraformProviderVersions: () => {
|
|
380
|
-
awsProviderVersion: "6.
|
|
396
|
+
awsProviderVersion: "6.68.0";
|
|
381
397
|
randomProviderVersion: "3.9.1";
|
|
382
398
|
nullProviderVersion: "3.3.2";
|
|
383
399
|
archiveProviderVersion: "2.8.1";
|