#!/usr/bin/env bash set -e # @describe Execute the shell command. DO NOT use this to write files — use fs_write (new files) or fs_patch (edits) instead. Shell-based file writes (cat >, echo >, printf >, tee, heredocs, python -c "open(...)") break on multi-line content, special characters, quoted strings, and nested language blocks. # @option --command! The command to execute. # @env LLM_OUTPUT=/dev/stdout The output path # shellcheck disable=SC1090 source "$LLM_PROMPT_UTILS_FILE" main() { # shellcheck disable=SC2154 argc_command="$(jq -r '.command' <<< "$LLM_TOOL_RAW_JSON")" guard_operation local script script="$(mktemp)" # shellcheck disable=SC2064 trap "rm -f '$script'" EXIT # shellcheck disable=SC2154 printf '%s\n' "$argc_command" > "$script" # No -e: the command gets standard interactive-shell semantics — the last # statement decides the exit code, so trailing guards like `; exit 0` work # and an intermediate non-zero status (grep with no matches, a failing # test run being inspected) cannot abort the script mid-way. pipefail is # kept so a failing pipeline stage still surfaces in the exit code. 2>&1: # the harness only returns $LLM_OUTPUT on success, so without it stderr # (git push, cargo progress, curl -v) vanishes from successful calls. bash -o pipefail "$script" >> "$LLM_OUTPUT" 2>&1 }