#!/usr/bin/env bash
set -euo pipefail

# @describe Execute a shell command inside a sandbox container.
# @option --container! Container name/id to execute in.
# @option --command! Shell command to run (executed via sh -lc inside container).
# @option --timeout_sec Timeout in seconds. Default: 60

main() {
  local c="${argc_container}"
  local cmd="${argc_command}"
  local t="${argc_timeout_sec:-60}"

  if ! docker ps --format '{{.Names}}' | grep -qx "$c"; then
    echo "ERROR: container not running: $c" >> "$LLM_OUTPUT"
    exit 2
  fi

  local out
  local rc=0
  out="$(timeout "${t}" docker exec "$c" sh -lc "$cmd" 2>&1)" || rc=$?

  printf '{"exit_code":%d,"output":%s}\n' "$rc" "$(python -c 'import json,sys; print(json.dumps(sys.stdin.read()))' <<<"$out")" >> "$LLM_OUTPUT"
}

eval "$(argc --argc-eval "$0" "$@")"

