@stll/oxlint-config 1.3.0 → 1.4.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 +254 -17
- package/dist/cloud-setup-cli.cjs +18 -38
- package/dist/cloud-setup-cli.cjs.map +1 -1
- package/dist/cloud-setup-cli.mjs +21 -41
- package/dist/cloud-setup-cli.mjs.map +1 -1
- package/dist/consumer-compat-cli.cjs +50 -249
- package/dist/consumer-compat-cli.cjs.map +1 -1
- package/dist/consumer-compat-cli.mjs +6 -205
- package/dist/consumer-compat-cli.mjs.map +1 -1
- package/dist/consumer-node-support.cjs +497 -0
- package/dist/consumer-node-support.cjs.map +1 -0
- package/dist/consumer-node-support.mjs +381 -0
- package/dist/consumer-node-support.mjs.map +1 -0
- package/dist/dependabot-cli.cjs +67 -0
- package/dist/dependabot-cli.cjs.map +1 -0
- package/dist/dependabot-cli.d.cts +1 -0
- package/dist/dependabot-cli.d.mts +1 -0
- package/dist/dependabot-cli.mjs +67 -0
- package/dist/dependabot-cli.mjs.map +1 -0
- package/dist/dependabot.cjs +5 -0
- package/dist/dependabot.d.cts +108 -0
- package/dist/dependabot.d.mts +108 -0
- package/dist/dependabot.mjs +3 -0
- package/dist/generated-file.cjs +61 -0
- package/dist/generated-file.cjs.map +1 -0
- package/dist/generated-file.mjs +44 -0
- package/dist/generated-file.mjs.map +1 -0
- package/dist/publish-artifact-syntax.cjs +1309 -0
- package/dist/publish-artifact-syntax.cjs.map +1 -0
- package/dist/publish-artifact-syntax.mjs +1265 -0
- package/dist/publish-artifact-syntax.mjs.map +1 -0
- package/dist/publish-contract-cli.cjs +53 -12
- package/dist/publish-contract-cli.cjs.map +1 -1
- package/dist/publish-contract-cli.mjs +49 -8
- package/dist/publish-contract-cli.mjs.map +1 -1
- package/dist/toolchain-changed.cjs +5 -1
- package/dist/toolchain-changed.cjs.map +1 -1
- package/dist/toolchain-changed.mjs +6 -2
- package/dist/toolchain-changed.mjs.map +1 -1
- package/dist/toolchain-dependabot.cjs +455 -0
- package/dist/toolchain-dependabot.cjs.map +1 -0
- package/dist/toolchain-dependabot.mjs +423 -0
- package/dist/toolchain-dependabot.mjs.map +1 -0
- package/dist/toolchain-guard.cjs +1096 -424
- package/dist/toolchain-guard.cjs.map +1 -1
- package/dist/toolchain-guard.mjs +1085 -413
- package/dist/toolchain-guard.mjs.map +1 -1
- package/dist/toolchain-inputs.cjs +122 -22
- package/dist/toolchain-inputs.cjs.map +1 -1
- package/dist/toolchain-inputs.mjs +117 -23
- package/dist/toolchain-inputs.mjs.map +1 -1
- package/dist/toolchain-schema.cjs +0 -493
- package/dist/toolchain-schema.cjs.map +1 -1
- package/dist/toolchain-schema.mjs +3 -379
- package/dist/toolchain-schema.mjs.map +1 -1
- package/dist/typecheck-parity.cjs +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/dist/typecheck-probe-cli.mjs.map +1 -1
- package/package.json +13 -1
- package/dist/publish-contract.cjs +0 -431
- package/dist/publish-contract.cjs.map +0 -1
- package/dist/publish-contract.mjs +0 -396
- package/dist/publish-contract.mjs.map +0 -1
|
@@ -375,6 +375,21 @@ const cloudSetupArtifacts = {
|
|
|
375
375
|
binaries: { "rustup-init": "rustup-init" }
|
|
376
376
|
}
|
|
377
377
|
},
|
|
378
|
+
gitleaks: {
|
|
379
|
+
version: "8.30.1",
|
|
380
|
+
amd64: {
|
|
381
|
+
url: "https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_x64.tar.gz",
|
|
382
|
+
sha256: "551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb",
|
|
383
|
+
archive: "tar.gz",
|
|
384
|
+
binaries: { gitleaks: "gitleaks" }
|
|
385
|
+
},
|
|
386
|
+
arm64: {
|
|
387
|
+
url: "https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_arm64.tar.gz",
|
|
388
|
+
sha256: "e4a487ee7ccd7d3a7f7ec08657610aa3606637dab924210b3aee62570fb4b080",
|
|
389
|
+
archive: "tar.gz",
|
|
390
|
+
binaries: { gitleaks: "gitleaks" }
|
|
391
|
+
}
|
|
392
|
+
},
|
|
378
393
|
"cargo-nextest": {
|
|
379
394
|
version: "0.9.148",
|
|
380
395
|
amd64: {
|
|
@@ -442,7 +457,8 @@ const cloudSetupArtifactVersions = {
|
|
|
442
457
|
"rustup-init": [cloudSetupArtifacts["rustup-init"]],
|
|
443
458
|
"cargo-nextest": [cloudSetupArtifacts["cargo-nextest"]],
|
|
444
459
|
"wasm-bindgen-cli": wasmBindgenArtifactReleases,
|
|
445
|
-
uv: [cloudSetupArtifacts.uv]
|
|
460
|
+
uv: [cloudSetupArtifacts.uv],
|
|
461
|
+
gitleaks: [cloudSetupArtifacts.gitleaks]
|
|
446
462
|
};
|
|
447
463
|
/** A new version requires an explicit, verified catalog entry; never build from source. */
|
|
448
464
|
const getCloudSetupArtifact = (tool, version) => {
|
|
@@ -497,11 +513,20 @@ const parseRust = (input) => {
|
|
|
497
513
|
if (!object(input) || Object.keys(input).some((key) => ![
|
|
498
514
|
"toolchain",
|
|
499
515
|
"components",
|
|
500
|
-
"targets"
|
|
501
|
-
|
|
516
|
+
"targets",
|
|
517
|
+
"additionalToolchains"
|
|
518
|
+
].includes(key))) throw new Error("cloud.rust accepts only toolchain, components, targets and additionalToolchains");
|
|
502
519
|
const toolchain = input["toolchain"];
|
|
503
520
|
if (toolchain !== void 0 && !exactPin(toolchain)) throw new Error("cloud.rust.toolchain must be an exact stable release");
|
|
521
|
+
const additional = input["additionalToolchains"];
|
|
522
|
+
if (additional !== void 0 && !Array.isArray(additional)) throw new Error("cloud.rust.additionalToolchains requires exact stable releases");
|
|
523
|
+
const additionalToolchains = additional === void 0 ? [] : Array.from(additional, (pin) => {
|
|
524
|
+
if (!exactPin(pin)) throw new Error("cloud.rust.additionalToolchains requires exact stable releases");
|
|
525
|
+
return pin;
|
|
526
|
+
});
|
|
527
|
+
if (new Set(additionalToolchains).size !== additionalToolchains.length) throw new Error("cloud.rust.additionalToolchains contains duplicates");
|
|
504
528
|
return {
|
|
529
|
+
additionalToolchains,
|
|
505
530
|
...toolchain === void 0 ? {} : { toolchain },
|
|
506
531
|
components: parseCloudRustNames(input["components"], "components"),
|
|
507
532
|
targets: parseCloudRustNames(input["targets"], "targets")
|
|
@@ -835,6 +860,11 @@ const resolveCloudToolchains = ({ cloud, files, rust, rustExceptions }) => {
|
|
|
835
860
|
if (channel !== rust && !rustExceptions.some(({ pin }) => pin === channel)) throw new Error(`cloud Rust must use shared Rust ${rust} or a recorded rustExceptions pin`);
|
|
836
861
|
if (cloud.rust?.toolchain !== void 0 && cloud.rust.toolchain !== channel) throw new Error("cloud.rust.toolchain conflicts with root Rust toolchain");
|
|
837
862
|
}
|
|
863
|
+
const additionalToolchains = cloud.rust?.additionalToolchains ?? [];
|
|
864
|
+
for (const pin of additionalToolchains) {
|
|
865
|
+
if (pin === channel) throw new Error("cloud.rust.additionalToolchains must not repeat the primary toolchain");
|
|
866
|
+
if (pin !== rust && !rustExceptions.some(({ pin: authorized }) => authorized === pin)) throw new Error(`cloud.rust.additionalToolchains ${pin} requires an authorized rustExceptions pin`);
|
|
867
|
+
}
|
|
838
868
|
const components = [.../* @__PURE__ */ new Set([...parseCloudRustNames(declared?.["components"], "components"), ...cloud.rust?.components ?? []])].sort();
|
|
839
869
|
const targets = [.../* @__PURE__ */ new Set([...parseCloudRustNames(declared?.["targets"], "targets"), ...cloud.rust?.targets ?? []])].sort();
|
|
840
870
|
const resolveTool = (tool, version) => {
|
|
@@ -865,6 +895,7 @@ const resolveCloudToolchains = ({ cloud, files, rust, rustExceptions }) => {
|
|
|
865
895
|
return {
|
|
866
896
|
rust: rustEnabled && typeof channel === "string" ? {
|
|
867
897
|
channel,
|
|
898
|
+
additionalToolchains: [...additionalToolchains].sort(),
|
|
868
899
|
components,
|
|
869
900
|
targets,
|
|
870
901
|
installer: cloudSetupArtifacts["rustup-init"]
|
|
@@ -901,7 +932,7 @@ rust_run() {
|
|
|
901
932
|
*) fail 'Invalid Rust execution mode' ;;
|
|
902
933
|
esac
|
|
903
934
|
}
|
|
904
|
-
|
|
935
|
+
primary_rust_ready() {
|
|
905
936
|
local directory
|
|
906
937
|
for directory in "$RUSTUP_HOME" "$CARGO_HOME"; do
|
|
907
938
|
[[ -d "$directory" && ! -L "$directory" && "$(stat -c '%u' "$directory")" == "$OUTPUT_UID" ]] || return 1
|
|
@@ -915,13 +946,19 @@ rust_ready() {
|
|
|
915
946
|
@VERIFY_TARGETS@
|
|
916
947
|
return 0
|
|
917
948
|
}
|
|
949
|
+
rust_ready() {
|
|
950
|
+
local additional_version
|
|
951
|
+
primary_rust_ready || return 1
|
|
952
|
+
@VERIFY_ADDITIONAL_TOOLCHAINS@
|
|
953
|
+
return 0
|
|
954
|
+
}
|
|
918
955
|
verify_rust() { rust_ready || fail 'Pinned Rust, components or targets are unavailable; run install'; }
|
|
919
956
|
install_rust() (
|
|
920
957
|
if ! command -v cc >/dev/null || ! command -v ld >/dev/null || [[ ! -f /usr/include/stdlib.h ]]; then
|
|
921
958
|
apt_refresh_for build-essential
|
|
922
959
|
apt_install build-essential
|
|
923
960
|
fi
|
|
924
|
-
local artifact_url artifact_sha
|
|
961
|
+
local artifact_url artifact_sha additional_version
|
|
925
962
|
# Subshell scope retains scratch for EXIT cleanup after a failed command.
|
|
926
963
|
scratch="$(mktemp -d)"
|
|
927
964
|
trap 'rm -rf -- "$scratch"' EXIT
|
|
@@ -940,9 +977,10 @@ install_rust() (
|
|
|
940
977
|
rust_run network "$scratch/rustup-init" -y --no-modify-path --default-toolchain none --profile minimal
|
|
941
978
|
fi
|
|
942
979
|
rust_run local "$CARGO_HOME/bin/rustup" set auto-self-update disable
|
|
943
|
-
if !
|
|
980
|
+
if ! primary_rust_ready; then
|
|
944
981
|
rust_run network "$CARGO_HOME/bin/rustup" toolchain install @RUST@ --profile minimal --no-self-update @RUST_ARGS@
|
|
945
982
|
fi
|
|
983
|
+
@INSTALL_ADDITIONAL_TOOLCHAINS@
|
|
946
984
|
rust_run local "$CARGO_HOME/bin/rustup" default @RUST@
|
|
947
985
|
verify_rust
|
|
948
986
|
for tool in rustup cargo rustc rustdoc @RUST_PROXIES@; do
|
|
@@ -953,7 +991,7 @@ install_rust() (
|
|
|
953
991
|
fi
|
|
954
992
|
done
|
|
955
993
|
)
|
|
956
|
-
`.replaceAll("@RUSTUP@", rust.installer.version).replaceAll("@RUST@", rust.channel).replace("@RUSTUP_ARTIFACT@", artifactSelection(rust.installer)).replace("@RUST_ARGS@", args).replace("@RUST_PROXIES@", Object.entries(cloudRustComponentBinaries).flatMap(([component, binaries]) => rust.components.includes(component) ? Array.from(binaries) : []).join(" ")).replace("@VERIFY_COMPONENTS@", rust.components.map((name) => `rust_run local "$CARGO_HOME/bin/rustup" component list --toolchain ${quote(rust.channel)} --installed | awk -v name=${quote(name)} -v host="$host" '$1 == name || $1 == name "-" host { found=1 } END { exit !found }' || return 1`).join("\n ")).replace("@VERIFY_TARGETS@", rust.targets.map((name) => `rust_run local "$CARGO_HOME/bin/rustup" target list --toolchain ${quote(rust.channel)} --installed | awk -v name=${quote(name)} '$1 == name { found=1 } END { exit !found }' || return 1`).join("\n "));
|
|
994
|
+
`.replace("@VERIFY_ADDITIONAL_TOOLCHAINS@", rust.additionalToolchains.map((pin) => `additional_version="$(rust_run local "$CARGO_HOME/bin/rustc" +${pin} --version)" || return 1\n [[ "$additional_version" == 'rustc ${pin} '* ]] || return 1`).join("\n ")).replace("@INSTALL_ADDITIONAL_TOOLCHAINS@", rust.additionalToolchains.map((pin) => `if ! additional_version="$(rust_run local "$CARGO_HOME/bin/rustc" +${pin} --version)" || [[ "$additional_version" != 'rustc ${pin} '* ]]; then\n rust_run network "$CARGO_HOME/bin/rustup" toolchain install ${pin} --profile minimal --no-self-update\n fi`).join("\n ")).replaceAll("@RUSTUP@", rust.installer.version).replaceAll("@RUST@", rust.channel).replace("@RUSTUP_ARTIFACT@", artifactSelection(rust.installer)).replace("@RUST_ARGS@", args).replace("@RUST_PROXIES@", Object.entries(cloudRustComponentBinaries).flatMap(([component, binaries]) => rust.components.includes(component) ? Array.from(binaries) : []).join(" ")).replace("@VERIFY_COMPONENTS@", rust.components.map((name) => `rust_run local "$CARGO_HOME/bin/rustup" component list --toolchain ${quote(rust.channel)} --installed | awk -v name=${quote(name)} -v host="$host" '$1 == name || $1 == name "-" host { found=1 } END { exit !found }' || return 1`).join("\n ")).replace("@VERIFY_TARGETS@", rust.targets.map((name) => `rust_run local "$CARGO_HOME/bin/rustup" target list --toolchain ${quote(rust.channel)} --installed | awk -v name=${quote(name)} '$1 == name { found=1 } END { exit !found }' || return 1`).join("\n "));
|
|
957
995
|
};
|
|
958
996
|
const packageToolInstall = ({ tool, release }) => {
|
|
959
997
|
const name = tool.replaceAll("-", "_");
|
|
@@ -976,7 +1014,7 @@ install_${name}() {
|
|
|
976
1014
|
const artifactToolInstall = ({ tool, release }) => {
|
|
977
1015
|
const directory = `/opt/stll-cloud/tools/${tool}/${release.version}`;
|
|
978
1016
|
const command = tool === "wasm-bindgen-cli" ? "wasm-bindgen" : tool;
|
|
979
|
-
const marker = `${tool === "
|
|
1017
|
+
const marker = `${tool === "gitleaks" ? "gitleaks version" : command} ${release.version}`;
|
|
980
1018
|
return {
|
|
981
1019
|
name: tool.replaceAll("-", "_"),
|
|
982
1020
|
text: `verify_${tool.replaceAll("-", "_")}() {
|
|
@@ -1086,7 +1124,15 @@ OUTPUT_USER="$(getent passwd "$OUTPUT_UID" | cut -d: -f1)"
|
|
|
1086
1124
|
OUTPUT_HOME="$(getent passwd "$OUTPUT_UID" | cut -d: -f6)"
|
|
1087
1125
|
[[ -n "$OUTPUT_USER" && "$OUTPUT_HOME" == /* && -d "$OUTPUT_HOME" ]] || fail 'Invoking user requires an existing home directory'
|
|
1088
1126
|
root() { "$@"; }
|
|
1089
|
-
|
|
1127
|
+
# Service daemons outlive setup, so they inherit no descriptor beyond stdio: a cloud
|
|
1128
|
+
# runner can pass its terminal as extra descriptors and wait until every copy closes.
|
|
1129
|
+
service_run() (
|
|
1130
|
+
for descriptor in "/proc/$BASHPID/fd/"*; do
|
|
1131
|
+
descriptor="$(basename -- "$descriptor")"
|
|
1132
|
+
if [[ "$descriptor" =~ ^[0-9]+$ ]] && (( descriptor > 2 )); then eval "exec $descriptor>&-"; fi
|
|
1133
|
+
done
|
|
1134
|
+
exec runuser -u stll-cloud -- "$@"
|
|
1135
|
+
)
|
|
1090
1136
|
BUN_VERSION='@BUN@'
|
|
1091
1137
|
NODE_VERSION='@NODE@'
|
|
1092
1138
|
NODE_DIR="/opt/stll-cloud/node/$NODE_VERSION"
|
|
@@ -1105,19 +1151,35 @@ esac
|
|
|
1105
1151
|
|
|
1106
1152
|
@NETWORK@
|
|
1107
1153
|
|
|
1154
|
+
node_ready() {
|
|
1155
|
+
local node_version npm_version npx_version
|
|
1156
|
+
[[ -x "$NODE_DIR/bin/node" && -x "$NODE_DIR/bin/npm" && -x "$NODE_DIR/bin/npx" ]] || return 1
|
|
1157
|
+
node_version="$("$NODE_DIR/bin/node" --version)" || return 1
|
|
1158
|
+
[[ "$node_version" == "v$NODE_VERSION" ]] || return 1
|
|
1159
|
+
npm_version="$("$NODE_DIR/bin/npm" --version)" || return 1
|
|
1160
|
+
[[ "$npm_version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || return 1
|
|
1161
|
+
npx_version="$("$NODE_DIR/bin/npx" --version)" || return 1
|
|
1162
|
+
[[ "$npx_version" == "$npm_version" ]] || return 1
|
|
1163
|
+
}
|
|
1108
1164
|
runtime_ready() {
|
|
1109
|
-
|
|
1165
|
+
node_ready || fail 'Pinned Node, npm or npx is unavailable; run install'
|
|
1110
1166
|
[[ -x "$BUN_DIR/bun" && "$($BUN_DIR/bun --version)" == "$BUN_VERSION" ]] || fail 'Pinned Bun is unavailable; run install'
|
|
1111
1167
|
}
|
|
1112
|
-
install_runtimes()
|
|
1168
|
+
install_runtimes() (
|
|
1169
|
+
if [[ ! -s /etc/ssl/certs/ca-certificates.crt ]]; then
|
|
1170
|
+
command -v update-ca-certificates >/dev/null || fail 'System CA certificate bundle is missing; restore ca-certificates in the base image offline before install'
|
|
1171
|
+
update-ca-certificates || fail 'System CA certificate bundle could not be repaired offline; restore ca-certificates in the base image before install'
|
|
1172
|
+
fi
|
|
1173
|
+
[[ -s /etc/ssl/certs/ca-certificates.crt ]] || fail 'System CA certificate bundle is unavailable after offline repair; restore ca-certificates in the base image before install'
|
|
1113
1174
|
if ! command -v curl >/dev/null || ! command -v unzip >/dev/null || ! command -v xz >/dev/null || ! command -v openssl >/dev/null || ! command -v gpg >/dev/null || ! ldconfig -p | awk '$1 == "libatomic.so.1" { found=1 } END { exit !found }'; then
|
|
1114
1175
|
apt_refresh_for ca-certificates curl unzip xz-utils openssl gnupg util-linux libatomic1
|
|
1115
1176
|
DEBIAN_FRONTEND=noninteractive apt_install ca-certificates curl unzip xz-utils openssl gnupg util-linux libatomic1
|
|
1116
1177
|
fi
|
|
1117
|
-
local
|
|
1178
|
+
local node_archive bun_archive bun_folder
|
|
1179
|
+
# Subshell scope retains scratch for EXIT cleanup after a failed command.
|
|
1118
1180
|
scratch="$(mktemp -d)"
|
|
1119
|
-
trap 'rm -rf -- "$scratch"'
|
|
1120
|
-
if
|
|
1181
|
+
trap 'rm -rf -- "$scratch"' EXIT
|
|
1182
|
+
if ! node_ready; then
|
|
1121
1183
|
node_archive="node-v$NODE_VERSION-linux-$NODE_ARCH.tar.xz"
|
|
1122
1184
|
download_file "https://nodejs.org/dist/v$NODE_VERSION/$node_archive" "$scratch/$node_archive" 120
|
|
1123
1185
|
download_file "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt" "$scratch/node-sums" 45
|
|
@@ -1140,9 +1202,7 @@ install_runtimes() {
|
|
|
1140
1202
|
ln -sfnT -- "$NODE_DIR/bin/npm" /usr/local/bin/npm
|
|
1141
1203
|
ln -sfnT -- "$NODE_DIR/bin/npx" /usr/local/bin/npx
|
|
1142
1204
|
ln -sfnT -- "$BUN_DIR/bun" /usr/local/bin/bun
|
|
1143
|
-
|
|
1144
|
-
trap - RETURN
|
|
1145
|
-
}
|
|
1205
|
+
)
|
|
1146
1206
|
|
|
1147
1207
|
dependency_install() {
|
|
1148
1208
|
local directory download_hosts
|
|
@@ -1306,16 +1366,16 @@ const generateCloudSetup = ({ policy, cloud, nodeVersion, files = {}, rustExcept
|
|
|
1306
1366
|
valkey: policy.valkey
|
|
1307
1367
|
})]
|
|
1308
1368
|
]);
|
|
1309
|
-
return script.replace(/@[A-Z0-9_]+@/g, (token) => {
|
|
1369
|
+
return `${script.replace(/@[A-Z0-9_]+@/g, (token) => {
|
|
1310
1370
|
const value = replacements.get(token);
|
|
1311
1371
|
if (value === void 0) throw new Error(`Missing cloud setup field: ${token}`);
|
|
1312
1372
|
return value;
|
|
1313
|
-
})
|
|
1373
|
+
}).replace(/[ \t]+$/gm, "").trimEnd()}\n`;
|
|
1314
1374
|
};
|
|
1315
1375
|
//#endregion
|
|
1316
1376
|
//#region src/cloud-setup-claude.ts
|
|
1317
1377
|
const cloudClaudeSettingsPath = ".claude/settings.json";
|
|
1318
|
-
const
|
|
1378
|
+
const releasedSessionStartHook = (script) => ({
|
|
1319
1379
|
matcher: "",
|
|
1320
1380
|
hooks: [{
|
|
1321
1381
|
type: "command",
|
|
@@ -1332,8 +1392,30 @@ const sessionStartHook = (script) => ({
|
|
|
1332
1392
|
fi`
|
|
1333
1393
|
}]
|
|
1334
1394
|
});
|
|
1395
|
+
const sessionStartHook = (script) => ({
|
|
1396
|
+
matcher: "",
|
|
1397
|
+
hooks: [{
|
|
1398
|
+
type: "command",
|
|
1399
|
+
command: `if [ "\${CLAUDE_CODE_REMOTE:-}" = "true" ]; then
|
|
1400
|
+
cloud_setup_incomplete() {
|
|
1401
|
+
printf '%s\\n' 'Cloud setup could not establish a verified session environment. From the repository root, run bash .agents/cloud-setup.sh install and then bash .agents/cloud-setup.sh start. Do not assume pinned tools or services are ready until start succeeds.'
|
|
1402
|
+
printf '%s\\n' "cloud-setup: $1" >&2
|
|
1403
|
+
exit 0
|
|
1404
|
+
}
|
|
1405
|
+
${script} start >&2 || cloud_setup_incomplete 'startup failed; run install'
|
|
1406
|
+
if [ -n "\${CLAUDE_ENV_FILE:-}" ]; then
|
|
1407
|
+
if [ ! -s ${cloudShellProfilePath} ]; then
|
|
1408
|
+
cloud_setup_incomplete 'cloud shell profile is unavailable; run install'
|
|
1409
|
+
fi
|
|
1410
|
+
cloud_shell_exports="$(cat ${cloudShellProfilePath})" || cloud_setup_incomplete 'cloud shell profile could not be read; run install'
|
|
1411
|
+
[ -n "$cloud_shell_exports" ] || cloud_setup_incomplete 'cloud shell profile is unavailable; run install'
|
|
1412
|
+
printf '\\n%s\\n' "$cloud_shell_exports" >> "$CLAUDE_ENV_FILE" || cloud_setup_incomplete 'session environment could not be persisted; check its write access and rerun start'
|
|
1413
|
+
fi
|
|
1414
|
+
fi`
|
|
1415
|
+
}]
|
|
1416
|
+
});
|
|
1335
1417
|
const cloudSessionStartHook = sessionStartHook(`bash "$CLAUDE_PROJECT_DIR/${cloudSetupPath}"`);
|
|
1336
|
-
const previousCloudSessionStartHooks = [
|
|
1418
|
+
const previousCloudSessionStartHooks = [releasedSessionStartHook(`bash ${cloudSetupPath}`), releasedSessionStartHook(`bash "$CLAUDE_PROJECT_DIR/${cloudSetupPath}"`)];
|
|
1337
1419
|
const cloudAttribution = {
|
|
1338
1420
|
commit: "",
|
|
1339
1421
|
pr: ""
|
|
@@ -1567,6 +1649,18 @@ const javascriptDependencyLockfiles = [
|
|
|
1567
1649
|
"yarn.lock",
|
|
1568
1650
|
"pnpm-lock.yaml"
|
|
1569
1651
|
];
|
|
1652
|
+
const dependabotManifestEcosystems = {
|
|
1653
|
+
Gemfile: "bundler",
|
|
1654
|
+
"Gemfile.lock": "bundler",
|
|
1655
|
+
"composer.json": "composer",
|
|
1656
|
+
"composer.lock": "composer"
|
|
1657
|
+
};
|
|
1658
|
+
/** Share ecosystem inventory with snapshot selection; no dependency graph reads are needed. */
|
|
1659
|
+
const dependabotManifestEcosystem = (file) => {
|
|
1660
|
+
if (excludedInputPath(file)) return void 0;
|
|
1661
|
+
const basename = file.split("/").at(-1);
|
|
1662
|
+
for (const [name, ecosystem] of Object.entries(dependabotManifestEcosystems)) if (basename === name) return ecosystem;
|
|
1663
|
+
};
|
|
1570
1664
|
/** Match project, environment, local, and fragment filenames recognized by mise. */
|
|
1571
1665
|
const isMiseConfigPath = (file) => !excludedInputPath(file) && (/(?:^|\/)\.?mise(?:\.[^./][^/]*)?\.toml$/.test(file) || /(?:^|\/)(?:\.?mise|\.config\/mise)\/config(?:\.[^./][^/]*)?\.toml$/.test(file) || /(?:^|\/)(?:\.?mise|\.config\/mise)\/conf\.d\/[^./][^/]*\.toml$/.test(file));
|
|
1572
1666
|
/** GitHub action metadata may live at the repository root or in any directory. */
|
|
@@ -1605,10 +1699,10 @@ const toolchainInputKind = (file, text = "") => {
|
|
|
1605
1699
|
if (file === ".agents/cloud-setup.sh" || file === ".claude/settings.json" || file === "Cargo.lock") return "config";
|
|
1606
1700
|
if (githubAutomationFileKind(file) !== void 0) return "config";
|
|
1607
1701
|
if (excludedInputPath(file)) return void 0;
|
|
1608
|
-
if (pythonDependencyManifestKind(file) === "pipfile-lock" || javascriptDependencyLockfiles.some((name) => file.split("/").at(-1) === name) || /(?:^|\/)uv\.lock$/.test(file)) return "presence";
|
|
1702
|
+
if (dependabotManifestEcosystem(file) !== void 0 || pythonDependencyManifestKind(file) === "pipfile-lock" || javascriptDependencyLockfiles.some((name) => file.split("/").at(-1) === name) || /(?:^|\/)uv\.lock$/.test(file)) return "presence";
|
|
1609
1703
|
if (githubAutomationFileKind(file) !== void 0 || isShellScript(file, text) || /(?:^|\/)ci-service-images\.json$/.test(file) || isMiseConfigPath(file) || isPythonDependencyManifest(file) || isDockerDefinitionPath(file) || isComposeDefinitionPath(file) || isKubernetesDefinitionPath(file) || /(?:^|\/)(?:package\.json|consumer-compat\.json|pnpm-workspace\.yaml|stll-toolchain\.json|\.bun-version|\.node-version|\.nvmrc|\.python-version|rust-toolchain(?:\.toml)?|\.tool-versions|\.?mise\.toml|uv\.toml|\.uv\.toml|\.github\/dependabot\.ya?ml|Cargo\.toml)$/.test(file)) return "config";
|
|
1610
1704
|
};
|
|
1611
1705
|
//#endregion
|
|
1612
|
-
export {
|
|
1706
|
+
export { nodePolicyValid as C, parseCloudSetup as E, generateCloudSetup as S, nodeSupportRangeMatches as T, cloudSessionStartFix as _, isMiseConfigPath as a, mergeCloudClaudeSettings as b, javascriptDependencyLockfiles as c, containerDocumentImages as d, isComposeDefinitionPath as f, cloudClaudeSettingsPath as g, cloudAttributionFix as h, isDockerDefinitionPath as i, pythonDependencyManifestKind as l, workspaceContains as m, githubAutomationFileKind as n, isPythonDependencyManifest as o, isKubernetesDefinitionPath as p, isDependabotGithubActionsPath as r, isShellScript as s, dependabotManifestEcosystem as t, toolchainInputKind as u, hasCloudAttribution as v, nodeSelectorMatches as w, cloudSetupPath as x, hasCloudSessionStartHook as y };
|
|
1613
1707
|
|
|
1614
1708
|
//# sourceMappingURL=toolchain-inputs.mjs.map
|