@stll/oxlint-config 1.0.2 → 1.2.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/README.md +97 -4
- package/dist/cloud-setup-cli.cjs +62 -21
- package/dist/cloud-setup-cli.cjs.map +1 -1
- package/dist/cloud-setup-cli.mjs +63 -22
- package/dist/cloud-setup-cli.mjs.map +1 -1
- package/dist/consumer-compat-cli.cjs +7 -6
- package/dist/consumer-compat-cli.cjs.map +1 -1
- package/dist/consumer-compat-cli.mjs +7 -6
- package/dist/consumer-compat-cli.mjs.map +1 -1
- package/dist/git-tracked-output.cjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/publish-build-target-vite-dts-helper.mjs +1 -2
- package/dist/publish-build-target-vite-dts-helper2.cjs +5 -5
- package/dist/publish-build-target-vite-dts-helper2.cjs.map +1 -1
- package/dist/publish-contract-cli.cjs +17 -16
- package/dist/publish-contract-cli.cjs.map +1 -1
- package/dist/publish-contract-cli.mjs +6 -5
- package/dist/publish-contract-cli.mjs.map +1 -1
- package/dist/publish-contract.cjs +1 -1
- package/dist/publish-contract.cjs.map +1 -1
- package/dist/publish-contract.mjs +1 -1
- package/dist/rolldown-runtime.cjs +1 -1
- package/dist/toolchain-changed.cjs +25 -15
- package/dist/toolchain-changed.cjs.map +1 -1
- package/dist/toolchain-changed.mjs +27 -17
- package/dist/toolchain-changed.mjs.map +1 -1
- package/dist/toolchain-check-cli.cjs.map +1 -1
- package/dist/toolchain-check-cli.mjs.map +1 -1
- package/dist/toolchain-guard.cjs +72 -48
- package/dist/toolchain-guard.cjs.map +1 -1
- package/dist/toolchain-guard.mjs +79 -55
- package/dist/toolchain-guard.mjs.map +1 -1
- package/dist/toolchain-inputs.cjs +803 -40
- package/dist/toolchain-inputs.cjs.map +1 -1
- package/dist/toolchain-inputs.mjs +768 -41
- package/dist/toolchain-inputs.mjs.map +1 -1
- package/dist/toolchain-schema.cjs +1 -1
- package/dist/toolchain-schema.cjs.map +1 -1
- package/dist/toolchain-schema.mjs +2 -2
- package/dist/typecheck-parity-cli.cjs.map +1 -1
- package/dist/typecheck-parity-cli.mjs.map +1 -1
- package/dist/typecheck-parity.cjs +8 -7
- package/dist/typecheck-parity.cjs.map +1 -1
- package/dist/typecheck-parity.mjs +6 -5
- package/dist/typecheck-parity.mjs.map +1 -1
- package/dist/typecheck-probe-cli.cjs +1 -1
- package/dist/typecheck-probe-cli.cjs.map +1 -1
- package/dist/typecheck-probe-cli.mjs +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolchain-check-cli.cjs","names":["parseToolchainPolicy","checkToolchain"],"sources":["../src/toolchain-check-cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { readFileSync } from \"node:fs\";\n\nimport { checkToolchain } from \"./toolchain-guard\";\nimport { parseToolchainPolicy } from \"./toolchain-schema\";\n\ntry {\n const args = process.argv.slice(2);\n if (args.length === 1 && args[0] === \"--help\") {\n process.stdout.write(\n \"Usage: stll-toolchain-check (opt-outs: tracked stll-toolchain.json)\\n\",\n );\n process.exit(0);\n }\n if (args.length !== 0) throw new Error(`unexpected argument: ${args.at(0)}`);\n const policy = parseToolchainPolicy(\n JSON.parse(\n readFileSync(new URL(\"../toolchain.json\", import.meta.url), \"utf8\"),\n ),\n );\n const diagnostics = checkToolchain({\n root: process.cwd(),\n policy,\n onDelegated: ({ path, line, tool, selector, ref }) =>\n process.stdout.write(\n `${path}:${line}: [runtime-delegated] setup-${tool} ${selector} delegates its version to checkout ref ${ref}\\n`,\n ),\n });\n for (const diagnostic of diagnostics)\n process.stderr.write(\n `${diagnostic.path}:${diagnostic.line}: [${diagnostic.rule}] ${diagnostic.message}\\n`,\n );\n if (diagnostics.length > 0) process.exitCode = 1;\n} catch (error) {\n process.stderr.write(\n `toolchain-check:1: ${error instanceof Error ? error.message : String(error)}\\n`,\n );\n process.exitCode = 1;\n}\n"],"mappings":";;;;;;AAMA,IAAI;CACF,MAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;CACjC,IAAI,KAAK,WAAW,KAAK,KAAK,OAAO,UAAU;EAC7C,QAAQ,OAAO,MACb,uEACF;EACA,QAAQ,KAAK,CAAC;CAChB;CACA,IAAI,KAAK,WAAW,GAAG,MAAM,IAAI,MAAM,wBAAwB,KAAK,GAAG,CAAC,GAAG;CAC3E,MAAM,SAASA,yBAAAA,qBACb,KAAK,OAAA,
|
|
1
|
+
{"version":3,"file":"toolchain-check-cli.cjs","names":["parseToolchainPolicy","readFileSync","checkToolchain"],"sources":["../src/toolchain-check-cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { readFileSync } from \"node:fs\";\n\nimport { checkToolchain } from \"./toolchain-guard\";\nimport { parseToolchainPolicy } from \"./toolchain-schema\";\n\ntry {\n const args = process.argv.slice(2);\n if (args.length === 1 && args[0] === \"--help\") {\n process.stdout.write(\n \"Usage: stll-toolchain-check (opt-outs: tracked stll-toolchain.json)\\n\",\n );\n process.exit(0);\n }\n if (args.length !== 0) throw new Error(`unexpected argument: ${args.at(0)}`);\n const policy = parseToolchainPolicy(\n JSON.parse(\n readFileSync(new URL(\"../toolchain.json\", import.meta.url), \"utf8\"),\n ),\n );\n const diagnostics = checkToolchain({\n root: process.cwd(),\n policy,\n onDelegated: ({ path, line, tool, selector, ref }) =>\n process.stdout.write(\n `${path}:${line}: [runtime-delegated] setup-${tool} ${selector} delegates its version to checkout ref ${ref}\\n`,\n ),\n });\n for (const diagnostic of diagnostics)\n process.stderr.write(\n `${diagnostic.path}:${diagnostic.line}: [${diagnostic.rule}] ${diagnostic.message}\\n`,\n );\n if (diagnostics.length > 0) process.exitCode = 1;\n} catch (error) {\n process.stderr.write(\n `toolchain-check:1: ${error instanceof Error ? error.message : String(error)}\\n`,\n );\n process.exitCode = 1;\n}\n"],"mappings":";;;;;;AAMA,IAAI;CACF,MAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;CACjC,IAAI,KAAK,WAAW,KAAK,KAAK,OAAO,UAAU;EAC7C,QAAQ,OAAO,MACb,uEACF;EACA,QAAQ,KAAK,CAAC;CAChB;CACA,IAAI,KAAK,WAAW,GAAG,MAAM,IAAI,MAAM,wBAAwB,KAAK,GAAG,CAAC,GAAG;CAC3E,MAAM,SAASA,yBAAAA,qBACb,KAAK,OAAA,GACHC,QAAAA,aAAAA,CAAa,IAAI,IAAI,qBAAA,QAAA,KAAA,CAAA,CAAA,cAAA,UAAA,CAAA,CAAA,IAAoC,GAAG,MAAM,CACpE,CACF;CACA,MAAM,cAAcC,wBAAAA,eAAe;EACjC,MAAM,QAAQ,IAAI;EAClB;EACA,cAAc,EAAE,MAAM,MAAM,MAAM,UAAU,UAC1C,QAAQ,OAAO,MACb,GAAG,KAAK,GAAG,KAAK,8BAA8B,KAAK,GAAG,SAAS,yCAAyC,IAAI,GAC9G;CACJ,CAAC;CACD,KAAK,MAAM,cAAc,aACvB,QAAQ,OAAO,MACb,GAAG,WAAW,KAAK,GAAG,WAAW,KAAK,KAAK,WAAW,KAAK,IAAI,WAAW,QAAQ,GACpF;CACF,IAAI,YAAY,SAAS,GAAG,QAAQ,WAAW;AACjD,SAAS,OAAO;CACd,QAAQ,OAAO,MACb,sBAAsB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,GAC/E;CACA,QAAQ,WAAW;AACrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolchain-check-cli.mjs","names":[],"sources":["../src/toolchain-check-cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { readFileSync } from \"node:fs\";\n\nimport { checkToolchain } from \"./toolchain-guard\";\nimport { parseToolchainPolicy } from \"./toolchain-schema\";\n\ntry {\n const args = process.argv.slice(2);\n if (args.length === 1 && args[0] === \"--help\") {\n process.stdout.write(\n \"Usage: stll-toolchain-check (opt-outs: tracked stll-toolchain.json)\\n\",\n );\n process.exit(0);\n }\n if (args.length !== 0) throw new Error(`unexpected argument: ${args.at(0)}`);\n const policy = parseToolchainPolicy(\n JSON.parse(\n readFileSync(new URL(\"../toolchain.json\", import.meta.url), \"utf8\"),\n ),\n );\n const diagnostics = checkToolchain({\n root: process.cwd(),\n policy,\n onDelegated: ({ path, line, tool, selector, ref }) =>\n process.stdout.write(\n `${path}:${line}: [runtime-delegated] setup-${tool} ${selector} delegates its version to checkout ref ${ref}\\n`,\n ),\n });\n for (const diagnostic of diagnostics)\n process.stderr.write(\n `${diagnostic.path}:${diagnostic.line}: [${diagnostic.rule}] ${diagnostic.message}\\n`,\n );\n if (diagnostics.length > 0) process.exitCode = 1;\n} catch (error) {\n process.stderr.write(\n `toolchain-check:1: ${error instanceof Error ? error.message : String(error)}\\n`,\n );\n process.exitCode = 1;\n}\n"],"mappings":";;;;;AAMA,IAAI;CACF,MAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;CACjC,IAAI,KAAK,WAAW,KAAK,KAAK,OAAO,UAAU;EAC7C,QAAQ,OAAO,MACb,uEACF;EACA,QAAQ,KAAK,CAAC;CAChB;CACA,IAAI,KAAK,WAAW,GAAG,MAAM,IAAI,MAAM,wBAAwB,KAAK,GAAG,CAAC,GAAG;CAC3E,MAAM,SAAS,qBACb,KAAK,MACH,aAAa,IAAI,IAAI,qBAAqB,
|
|
1
|
+
{"version":3,"file":"toolchain-check-cli.mjs","names":[],"sources":["../src/toolchain-check-cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { readFileSync } from \"node:fs\";\n\nimport { checkToolchain } from \"./toolchain-guard\";\nimport { parseToolchainPolicy } from \"./toolchain-schema\";\n\ntry {\n const args = process.argv.slice(2);\n if (args.length === 1 && args[0] === \"--help\") {\n process.stdout.write(\n \"Usage: stll-toolchain-check (opt-outs: tracked stll-toolchain.json)\\n\",\n );\n process.exit(0);\n }\n if (args.length !== 0) throw new Error(`unexpected argument: ${args.at(0)}`);\n const policy = parseToolchainPolicy(\n JSON.parse(\n readFileSync(new URL(\"../toolchain.json\", import.meta.url), \"utf8\"),\n ),\n );\n const diagnostics = checkToolchain({\n root: process.cwd(),\n policy,\n onDelegated: ({ path, line, tool, selector, ref }) =>\n process.stdout.write(\n `${path}:${line}: [runtime-delegated] setup-${tool} ${selector} delegates its version to checkout ref ${ref}\\n`,\n ),\n });\n for (const diagnostic of diagnostics)\n process.stderr.write(\n `${diagnostic.path}:${diagnostic.line}: [${diagnostic.rule}] ${diagnostic.message}\\n`,\n );\n if (diagnostics.length > 0) process.exitCode = 1;\n} catch (error) {\n process.stderr.write(\n `toolchain-check:1: ${error instanceof Error ? error.message : String(error)}\\n`,\n );\n process.exitCode = 1;\n}\n"],"mappings":";;;;;AAMA,IAAI;CACF,MAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;CACjC,IAAI,KAAK,WAAW,KAAK,KAAK,OAAO,UAAU;EAC7C,QAAQ,OAAO,MACb,uEACF;EACA,QAAQ,KAAK,CAAC;CAChB;CACA,IAAI,KAAK,WAAW,GAAG,MAAM,IAAI,MAAM,wBAAwB,KAAK,GAAG,CAAC,GAAG;CAC3E,MAAM,SAAS,qBACb,KAAK,MACH,aAAa,IAAI,IAAI,qBAAqB,YAAY,GAAG,GAAG,MAAM,CACpE,CACF;CACA,MAAM,cAAc,eAAe;EACjC,MAAM,QAAQ,IAAI;EAClB;EACA,cAAc,EAAE,MAAM,MAAM,MAAM,UAAU,UAC1C,QAAQ,OAAO,MACb,GAAG,KAAK,GAAG,KAAK,8BAA8B,KAAK,GAAG,SAAS,yCAAyC,IAAI,GAC9G;CACJ,CAAC;CACD,KAAK,MAAM,cAAc,aACvB,QAAQ,OAAO,MACb,GAAG,WAAW,KAAK,GAAG,WAAW,KAAK,KAAK,WAAW,KAAK,IAAI,WAAW,QAAQ,GACpF;CACF,IAAI,YAAY,SAAS,GAAG,QAAQ,WAAW;AACjD,SAAS,OAAO;CACd,QAAQ,OAAO,MACb,sBAAsB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,GAC/E;CACA,QAAQ,WAAW;AACrB"}
|
package/dist/toolchain-guard.cjs
CHANGED
|
@@ -7,13 +7,13 @@ let node_child_process = require("node:child_process");
|
|
|
7
7
|
let node_path = require("node:path");
|
|
8
8
|
node_path = require_rolldown_runtime.__toESM(node_path, 1);
|
|
9
9
|
let semver = require("semver");
|
|
10
|
+
let smol_toml = require("smol-toml");
|
|
10
11
|
let yaml = require("yaml");
|
|
11
12
|
let picomatch = require("picomatch");
|
|
12
13
|
picomatch = require_rolldown_runtime.__toESM(picomatch, 1);
|
|
13
|
-
let smol_toml = require("smol-toml");
|
|
14
14
|
//#endregion
|
|
15
15
|
//#region src/toolchain-consumer-checks.ts
|
|
16
|
-
const consumerRunnerVersion = "1.0
|
|
16
|
+
const consumerRunnerVersion = "1.2.0";
|
|
17
17
|
const consumerCheckWorkflow = "stella/.github/.github/workflows/package-consumer-compat.yml";
|
|
18
18
|
const record$7 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
19
19
|
const repositoryDirectory = (value) => typeof value === "string" && value !== "" && !value.includes("\\") && !value.includes("${{") && !value.split("").some((character) => {
|
|
@@ -195,7 +195,8 @@ const checkConsumerChecks = ({ declarations, files, policy }) => {
|
|
|
195
195
|
const fixtureManifest = node_path.default.posix.join(declaration.fixturePath, "consumer-compat.json");
|
|
196
196
|
const fixtureSource = files[fixtureManifest];
|
|
197
197
|
if (fixtureSource === void 0) throw new Error(`consumerChecks fixture configuration must be tracked: ${fixtureManifest}`);
|
|
198
|
-
const
|
|
198
|
+
const fixtureConfiguration = JSON.parse(fixtureSource);
|
|
199
|
+
const fixtures = require_toolchain_schema.parseConsumerFixtures(fixtureConfiguration);
|
|
199
200
|
require_toolchain_schema.assertConsumerFixtureSelection({
|
|
200
201
|
selected: declaration.packages,
|
|
201
202
|
fixtures
|
|
@@ -1108,14 +1109,15 @@ const shellCommandSegments = (command, grouping = "boundaries") => {
|
|
|
1108
1109
|
for (const source of sources) {
|
|
1109
1110
|
const firstSegment = segments.length;
|
|
1110
1111
|
segments.push([]);
|
|
1111
|
-
for (const { kind, value: word } of shellArgumentTokens(shellTokens(source))) if (kind === "boundary")
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1112
|
+
for (const { kind, value: word } of shellArgumentTokens(shellTokens(source))) if (kind === "boundary") {
|
|
1113
|
+
if ([
|
|
1114
|
+
"(",
|
|
1115
|
+
")",
|
|
1116
|
+
"{",
|
|
1117
|
+
"}"
|
|
1118
|
+
].includes(word) && grouping === "tokens") segments.at(-1)?.push(word);
|
|
1119
|
+
else segments.push([]);
|
|
1120
|
+
} else segments.at(-1)?.push(word);
|
|
1119
1121
|
for (const words of segments.slice(firstSegment)) {
|
|
1120
1122
|
const body = shellCommandBody(words);
|
|
1121
1123
|
if (body === void 0) continue;
|
|
@@ -1609,7 +1611,8 @@ const checkPackageFiles = ({ files, policy }) => {
|
|
|
1609
1611
|
if (resolved === specifier) return false;
|
|
1610
1612
|
if (qualifier === void 0 || (0, semver.validRange)(qualifier) === null) return true;
|
|
1611
1613
|
if (typeof specifier !== "string") return false;
|
|
1612
|
-
const
|
|
1614
|
+
const versionSpecifier = specifier.startsWith("npm:") ? specifier.slice(specifier.lastIndexOf("@") + 1) : specifier;
|
|
1615
|
+
const release = (0, semver.valid)(versionSpecifier);
|
|
1613
1616
|
return release !== null && (0, semver.satisfies)(release, qualifier);
|
|
1614
1617
|
}) && typeof resolved === "string" && tsSpecifiers.get(name)?.has(resolved)) add({
|
|
1615
1618
|
file,
|
|
@@ -1873,7 +1876,9 @@ const checkRustReferences = (options) => {
|
|
|
1873
1876
|
const version = tag === void 0 ? void 0 : rustImageVersion(tag);
|
|
1874
1877
|
select(version, "Rust service image", lineOf(value));
|
|
1875
1878
|
} else if (Array.isArray(value)) value.forEach(images);
|
|
1876
|
-
else if (record$2(value))
|
|
1879
|
+
else if (record$2(value)) {
|
|
1880
|
+
for (const [key, entry] of Object.entries(value)) if (key !== "name") images(entry);
|
|
1881
|
+
}
|
|
1877
1882
|
};
|
|
1878
1883
|
try {
|
|
1879
1884
|
images(JSON.parse(text));
|
|
@@ -2204,28 +2209,30 @@ const checkRuntimeFile = ({ file, text, policy, trackedFiles, readFile, reposito
|
|
|
2204
2209
|
if (record$1(defaults) && defaults["rust-version"] !== void 0) rustFloor(defaults["rust-version"]);
|
|
2205
2210
|
const pkg = parsed["package"];
|
|
2206
2211
|
const version = record$1(pkg) ? pkg["rust-version"] : void 0;
|
|
2207
|
-
if (version !== void 0)
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
if (explicitPath !== void 0
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2212
|
+
if (version !== void 0) {
|
|
2213
|
+
if (!record$1(version)) rustFloor(version);
|
|
2214
|
+
else {
|
|
2215
|
+
let inherited;
|
|
2216
|
+
if (version["workspace"] === true && record$1(pkg)) {
|
|
2217
|
+
const explicit = pkg["workspace"];
|
|
2218
|
+
let directory = node_path.default.posix.dirname(file);
|
|
2219
|
+
const explicitPath = typeof explicit === "string" && !explicit.includes("\\") && !explicit.includes(":") && !explicit.includes("${{") && !node_path.default.posix.isAbsolute(explicit) ? node_path.default.posix.normalize(node_path.default.posix.join(directory, explicit)) : void 0;
|
|
2220
|
+
if (explicit === void 0 || explicitPath !== void 0 && explicitPath !== ".." && !explicitPath.startsWith("../")) {
|
|
2221
|
+
if (explicitPath !== void 0) directory = explicitPath;
|
|
2222
|
+
while (true) {
|
|
2223
|
+
const table = readManifest(node_path.default.posix.join(directory, "Cargo.toml"))?.["workspace"];
|
|
2224
|
+
if (record$1(table)) {
|
|
2225
|
+
const fields = table["package"];
|
|
2226
|
+
inherited = record$1(fields) ? fields["rust-version"] : void 0;
|
|
2227
|
+
break;
|
|
2228
|
+
}
|
|
2229
|
+
if (explicit !== void 0 || directory === ".") break;
|
|
2230
|
+
directory = node_path.default.posix.dirname(directory);
|
|
2222
2231
|
}
|
|
2223
|
-
if (explicit !== void 0 || directory === ".") break;
|
|
2224
|
-
directory = node_path.default.posix.dirname(directory);
|
|
2225
2232
|
}
|
|
2226
2233
|
}
|
|
2234
|
+
rustFloor(inherited);
|
|
2227
2235
|
}
|
|
2228
|
-
rustFloor(inherited);
|
|
2229
2236
|
}
|
|
2230
2237
|
}
|
|
2231
2238
|
}
|
|
@@ -2846,9 +2853,10 @@ const checkRuntimeFile = ({ file, text, policy, trackedFiles, readFile, reposito
|
|
|
2846
2853
|
for (let index = start + 3; index < value.length; index++) {
|
|
2847
2854
|
const character = value.at(index);
|
|
2848
2855
|
if (quote !== void 0) {
|
|
2849
|
-
if (character === quote)
|
|
2850
|
-
|
|
2851
|
-
|
|
2856
|
+
if (character === quote) {
|
|
2857
|
+
if (quote === "'" && value.at(index + 1) === "'") index++;
|
|
2858
|
+
else quote = void 0;
|
|
2859
|
+
} else if (quote === "\"" && character === "\\") index++;
|
|
2852
2860
|
continue;
|
|
2853
2861
|
}
|
|
2854
2862
|
if (character === "'" || character === "\"") quote = character;
|
|
@@ -3342,26 +3350,42 @@ const checkToolchain = ({ root, policy, onDelegated }) => {
|
|
|
3342
3350
|
line: 1,
|
|
3343
3351
|
message: "cloud setup script requires an explicit cloud declaration in stll-toolchain.json"
|
|
3344
3352
|
});
|
|
3345
|
-
if (cloud !== void 0)
|
|
3346
|
-
|
|
3347
|
-
if (nodeVersion === void 0) throw new Error("cloud setup requires a tracked root .node-version with an exact stable release");
|
|
3348
|
-
if (script !== require_toolchain_inputs.generateCloudSetup({
|
|
3349
|
-
policy,
|
|
3350
|
-
cloud,
|
|
3351
|
-
nodeVersion: nodeVersion.trim()
|
|
3352
|
-
})) diagnostics.push({
|
|
3353
|
+
if (cloud !== void 0) {
|
|
3354
|
+
if (!require_toolchain_inputs.hasCloudSessionStartHook(files[".claude/settings.json"])) diagnostics.push({
|
|
3353
3355
|
rule: "cloud-setup-drift",
|
|
3354
|
-
path: require_toolchain_inputs.
|
|
3356
|
+
path: require_toolchain_inputs.cloudClaudeSettingsPath,
|
|
3355
3357
|
line: 1,
|
|
3356
|
-
message:
|
|
3358
|
+
message: `tracked Claude cloud SessionStart hook is missing, disabled or differs from shared policy; run stll-cloud-setup; if automatic merge is unsafe, ${require_toolchain_inputs.cloudSessionStartFix}`
|
|
3357
3359
|
});
|
|
3358
|
-
|
|
3359
|
-
diagnostics.push({
|
|
3360
|
+
if (!require_toolchain_inputs.hasCloudAttribution(files[".claude/settings.json"])) diagnostics.push({
|
|
3360
3361
|
rule: "cloud-setup-drift",
|
|
3361
|
-
path: require_toolchain_inputs.
|
|
3362
|
+
path: require_toolchain_inputs.cloudClaudeSettingsPath,
|
|
3362
3363
|
line: 1,
|
|
3363
|
-
message:
|
|
3364
|
+
message: `tracked Claude attribution is missing or differs from shared policy; run stll-cloud-setup; if automatic merge is unsafe, ${require_toolchain_inputs.cloudAttributionFix}`
|
|
3364
3365
|
});
|
|
3366
|
+
try {
|
|
3367
|
+
const nodeVersion = files[".node-version"];
|
|
3368
|
+
if (nodeVersion === void 0) throw new Error("cloud setup requires a tracked root .node-version with an exact stable release");
|
|
3369
|
+
if (script !== require_toolchain_inputs.generateCloudSetup({
|
|
3370
|
+
policy,
|
|
3371
|
+
cloud,
|
|
3372
|
+
nodeVersion: nodeVersion.trim(),
|
|
3373
|
+
files,
|
|
3374
|
+
rustExceptions: configuration.rustExceptions
|
|
3375
|
+
})) diagnostics.push({
|
|
3376
|
+
rule: "cloud-setup-drift",
|
|
3377
|
+
path: require_toolchain_inputs.cloudSetupPath,
|
|
3378
|
+
line: 1,
|
|
3379
|
+
message: "cloud setup script is missing or differs from shared policy; run stll-cloud-setup"
|
|
3380
|
+
});
|
|
3381
|
+
} catch (error) {
|
|
3382
|
+
diagnostics.push({
|
|
3383
|
+
rule: "cloud-setup-drift",
|
|
3384
|
+
path: require_toolchain_inputs.cloudSetupPath,
|
|
3385
|
+
line: 1,
|
|
3386
|
+
message: error instanceof Error ? error.message : String(error)
|
|
3387
|
+
});
|
|
3388
|
+
}
|
|
3365
3389
|
}
|
|
3366
3390
|
const exercisedFloors = /* @__PURE__ */ new Set();
|
|
3367
3391
|
const mismatchedFloors = /* @__PURE__ */ new Set();
|