@stll/oxlint-config 1.0.2 → 1.1.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 +85 -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 +19 -14
- package/dist/toolchain-changed.cjs.map +1 -1
- package/dist/toolchain-changed.mjs +21 -16
- 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 +66 -50
- package/dist/toolchain-guard.cjs.map +1 -1
- package/dist/toolchain-guard.mjs +73 -57
- package/dist/toolchain-guard.mjs.map +1 -1
- package/dist/toolchain-inputs.cjs +670 -32
- package/dist/toolchain-inputs.cjs.map +1 -1
- package/dist/toolchain-inputs.mjs +647 -33
- 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.1.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,
|
|
@@ -2204,28 +2207,30 @@ const checkRuntimeFile = ({ file, text, policy, trackedFiles, readFile, reposito
|
|
|
2204
2207
|
if (record$1(defaults) && defaults["rust-version"] !== void 0) rustFloor(defaults["rust-version"]);
|
|
2205
2208
|
const pkg = parsed["package"];
|
|
2206
2209
|
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
|
-
|
|
2210
|
+
if (version !== void 0) {
|
|
2211
|
+
if (!record$1(version)) rustFloor(version);
|
|
2212
|
+
else {
|
|
2213
|
+
let inherited;
|
|
2214
|
+
if (version["workspace"] === true && record$1(pkg)) {
|
|
2215
|
+
const explicit = pkg["workspace"];
|
|
2216
|
+
let directory = node_path.default.posix.dirname(file);
|
|
2217
|
+
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;
|
|
2218
|
+
if (explicit === void 0 || explicitPath !== void 0 && explicitPath !== ".." && !explicitPath.startsWith("../")) {
|
|
2219
|
+
if (explicitPath !== void 0) directory = explicitPath;
|
|
2220
|
+
while (true) {
|
|
2221
|
+
const table = readManifest(node_path.default.posix.join(directory, "Cargo.toml"))?.["workspace"];
|
|
2222
|
+
if (record$1(table)) {
|
|
2223
|
+
const fields = table["package"];
|
|
2224
|
+
inherited = record$1(fields) ? fields["rust-version"] : void 0;
|
|
2225
|
+
break;
|
|
2226
|
+
}
|
|
2227
|
+
if (explicit !== void 0 || directory === ".") break;
|
|
2228
|
+
directory = node_path.default.posix.dirname(directory);
|
|
2222
2229
|
}
|
|
2223
|
-
if (explicit !== void 0 || directory === ".") break;
|
|
2224
|
-
directory = node_path.default.posix.dirname(directory);
|
|
2225
2230
|
}
|
|
2226
2231
|
}
|
|
2232
|
+
rustFloor(inherited);
|
|
2227
2233
|
}
|
|
2228
|
-
rustFloor(inherited);
|
|
2229
2234
|
}
|
|
2230
2235
|
}
|
|
2231
2236
|
}
|
|
@@ -2846,9 +2851,10 @@ const checkRuntimeFile = ({ file, text, policy, trackedFiles, readFile, reposito
|
|
|
2846
2851
|
for (let index = start + 3; index < value.length; index++) {
|
|
2847
2852
|
const character = value.at(index);
|
|
2848
2853
|
if (quote !== void 0) {
|
|
2849
|
-
if (character === quote)
|
|
2850
|
-
|
|
2851
|
-
|
|
2854
|
+
if (character === quote) {
|
|
2855
|
+
if (quote === "'" && value.at(index + 1) === "'") index++;
|
|
2856
|
+
else quote = void 0;
|
|
2857
|
+
} else if (quote === "\"" && character === "\\") index++;
|
|
2852
2858
|
continue;
|
|
2853
2859
|
}
|
|
2854
2860
|
if (character === "'" || character === "\"") quote = character;
|
|
@@ -3342,26 +3348,36 @@ const checkToolchain = ({ root, policy, onDelegated }) => {
|
|
|
3342
3348
|
line: 1,
|
|
3343
3349
|
message: "cloud setup script requires an explicit cloud declaration in stll-toolchain.json"
|
|
3344
3350
|
});
|
|
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({
|
|
3351
|
+
if (cloud !== void 0) {
|
|
3352
|
+
if (!require_toolchain_inputs.hasCloudSessionStartHook(files[".claude/settings.json"])) diagnostics.push({
|
|
3353
3353
|
rule: "cloud-setup-drift",
|
|
3354
|
-
path: require_toolchain_inputs.
|
|
3354
|
+
path: require_toolchain_inputs.cloudClaudeSettingsPath,
|
|
3355
3355
|
line: 1,
|
|
3356
|
-
message:
|
|
3357
|
-
});
|
|
3358
|
-
} catch (error) {
|
|
3359
|
-
diagnostics.push({
|
|
3360
|
-
rule: "cloud-setup-drift",
|
|
3361
|
-
path: require_toolchain_inputs.cloudSetupPath,
|
|
3362
|
-
line: 1,
|
|
3363
|
-
message: error instanceof Error ? error.message : String(error)
|
|
3356
|
+
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}`
|
|
3364
3357
|
});
|
|
3358
|
+
try {
|
|
3359
|
+
const nodeVersion = files[".node-version"];
|
|
3360
|
+
if (nodeVersion === void 0) throw new Error("cloud setup requires a tracked root .node-version with an exact stable release");
|
|
3361
|
+
if (script !== require_toolchain_inputs.generateCloudSetup({
|
|
3362
|
+
policy,
|
|
3363
|
+
cloud,
|
|
3364
|
+
nodeVersion: nodeVersion.trim(),
|
|
3365
|
+
files,
|
|
3366
|
+
rustExceptions: configuration.rustExceptions
|
|
3367
|
+
})) diagnostics.push({
|
|
3368
|
+
rule: "cloud-setup-drift",
|
|
3369
|
+
path: require_toolchain_inputs.cloudSetupPath,
|
|
3370
|
+
line: 1,
|
|
3371
|
+
message: "cloud setup script is missing or differs from shared policy; run stll-cloud-setup"
|
|
3372
|
+
});
|
|
3373
|
+
} catch (error) {
|
|
3374
|
+
diagnostics.push({
|
|
3375
|
+
rule: "cloud-setup-drift",
|
|
3376
|
+
path: require_toolchain_inputs.cloudSetupPath,
|
|
3377
|
+
line: 1,
|
|
3378
|
+
message: error instanceof Error ? error.message : String(error)
|
|
3379
|
+
});
|
|
3380
|
+
}
|
|
3365
3381
|
}
|
|
3366
3382
|
const exercisedFloors = /* @__PURE__ */ new Set();
|
|
3367
3383
|
const mismatchedFloors = /* @__PURE__ */ new Set();
|