Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
8c735cb
fix(e2e): restore shared CLI boundaries
cv Aug 5, 2026
86dab3e
ci(e2e): pin repaired CLI restore action
cv Aug 5, 2026
d7d3af2
test(e2e): reject incomplete shared CLI artifacts
cv Aug 5, 2026
186323b
fix(e2e): reject symlinked artifact parents
cv Aug 5, 2026
ef6b7a7
ci(e2e): pin symlink-safe restore action
cv Aug 5, 2026
f6209b1
docs(e2e): document shared CLI artifact
cv Aug 5, 2026
7c9e32e
merge(main): refresh PR #8333
cv Aug 5, 2026
d2c2b65
fix(e2e): require regular CLI artifact files
cv Aug 5, 2026
64ed03b
ci(e2e): pin validated CLI artifact restore
cv Aug 5, 2026
0ed01ed
merge: refresh PR #8333 from main
cv Aug 5, 2026
c8a26b5
merge(main): refresh PR #8333 after SSRF hardening
cv Aug 5, 2026
76b0344
chore(e2e): format artifact boundary check
cv Aug 5, 2026
54c3e8d
test(e2e): verify failed restore leaves destinations absent
cv Aug 5, 2026
48eb22c
merge(e2e): preserve concurrent boundary formatting
cv Aug 5, 2026
f02b668
merge(main): refresh PR #8333 after Hermes dashboard repair
cv Aug 5, 2026
948f94b
merge: refresh PR #8333 from main
cv Aug 5, 2026
9d6beaa
merge: refresh PR #8333 from main
cv Aug 5, 2026
976e7c4
merge: refresh PR #8333 from main
cv Aug 5, 2026
e49fd68
merge: refresh PR #8333 from main
cv Aug 5, 2026
cd6fa34
merge: refresh PR #8333 from main
cv Aug 5, 2026
bfd5f5f
merge: refresh PR #8333 from main
cv Aug 5, 2026
7c2eb30
merge(main): refresh E2E CLI artifact fix
cv Aug 5, 2026
c1dd13b
merge(main): refresh E2E CLI artifact fix
cv Aug 5, 2026
b44a648
merge(main): refresh pull request base
cv Aug 5, 2026
1b58a47
Merge branch 'main' into fix/e2e-cli-artifact-plugin-dist
cv Aug 5, 2026
d34b11e
fix(e2e): name artifact restore paths
cv Aug 5, 2026
39d5713
ci(e2e): repin artifact restore action
cv Aug 5, 2026
456b7dd
merge(main): refresh PR #8333
cv Aug 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 15 additions & 5 deletions .github/actions/restore-e2e-cli-artifact/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ runs:
{ echo "::error::exact-commit CLI artifact payload digest mismatch"; exit 1; }
while IFS= read -r member; do
case "$member" in
dist | dist/* | nemoclaw | nemoclaw/dist | nemoclaw/dist/*) ;;
dist | dist/* | nemoclaw/dist/shared | nemoclaw/dist/shared/*) ;;
*) echo "::error::CLI artifact contains an unsafe member: $member"; exit 1 ;;
esac
case "/$member/" in
Expand All @@ -158,15 +158,25 @@ runs:
{ echo "::error::CLI artifact contains a link or special file"; exit 1; }
[[ ! -e "$GITHUB_WORKSPACE/dist" && ! -L "$GITHUB_WORKSPACE/dist" ]] ||
{ echo "::error::consumer unexpectedly built dist before artifact restore"; exit 1; }
[[ -d "$GITHUB_WORKSPACE/nemoclaw" && ! -L "$GITHUB_WORKSPACE/nemoclaw" ]] ||
{ echo "::error::consumer nemoclaw directory must be a non-symlink directory"; exit 1; }

[[ ! -e "$GITHUB_WORKSPACE/nemoclaw/dist" && ! -L "$GITHUB_WORKSPACE/nemoclaw/dist" ]] ||
{ echo "::error::consumer unexpectedly built nemoclaw/dist before artifact restore"; exit 1; }
restore_dir="$(mktemp -d "${RUNNER_TEMP}/nemoclaw-cli-restore.XXXXXX")"
trap 'rm -rf -- "$restore_dir"' EXIT
tar --no-same-owner --no-same-permissions -xf "$payload" -C "$restore_dir"
test -s "$restore_dir/dist/nemoclaw.js" ||
{ echo "::error::restored CLI artifact is missing dist/nemoclaw.js"; exit 1; }
test -s "$restore_dir/nemoclaw/dist/shared/sandbox-name.cjs" ||
{ echo "::error::restored CLI artifact is missing nemoclaw/dist/shared/sandbox-name.cjs"; exit 1; }
cli_entrypoint="$restore_dir/dist/nemoclaw.js"
[[ -f "$cli_entrypoint" && ! -L "$cli_entrypoint" && -s "$cli_entrypoint" ]] ||
{ echo "::error::restored CLI artifact entry point is missing or is not a nonempty regular file"; exit 1; }
for boundary in \
openshell-policy-boundary.cjs \
sandbox-name.cjs \
snapshot-sanitizer-boundary.cjs; do
boundary_path="$restore_dir/nemoclaw/dist/shared/$boundary"
[[ -f "$boundary_path" && ! -L "$boundary_path" && -s "$boundary_path" ]] ||
{ echo "::error::restored CLI artifact shared module is missing or is not a nonempty regular file: $boundary"; exit 1; }
done
jq -e --arg candidateSha "$CANDIDATE_SHA" '
type == "object" and
(keys | sort) == ["nemoclawVersion", "sourceRevision"] and
Expand Down
Loading
Loading