from minisweagent.environments.local import LocalEnvironment
from minisweagent.exceptions import Submitted


env = LocalEnvironment(env={"LESSON_NAME": "environment"}, timeout=2)

normal = env.execute({"command": "printf 'hello %s\\n' \"$LESSON_NAME\""})
print(normal["returncode"], normal["output"].strip())

failure = env.execute({"command": "printf 'problem\\n' >&2; exit 7"})
print(failure["returncode"], failure["output"].strip(), failure["exception_info"] == "")

try:
    env.execute({"command": "printf 'COMPLETE_TASK_AND_SUBMIT_FINAL_OUTPUT\\nlearned locally\\n'"})
except Submitted as signal:
    message = signal.messages[0]
    print(message["role"], message["extra"]["exit_status"], repr(message["extra"]["submission"]))
