mirror of
https://github.com/HKUDS/OpenSpace.git
synced 2026-08-28 05:15:00 +00:00
62 lines
1.7 KiB
Python
62 lines
1.7 KiB
Python
"""Default subprocess entrypoint for skill behavior eval.
|
|
|
|
The worker reads ``OPENSPACE_REPLAY_CONTEXT`` and emits one JSON replay result
|
|
to stdout. It intentionally does not approve static-only checks.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
from typing import Any
|
|
|
|
from .behavior_eval import evaluate_replay_context
|
|
|
|
|
|
def main(argv: list[str] | None = None) -> int:
|
|
del argv
|
|
context_path = os.environ.get("OPENSPACE_REPLAY_CONTEXT", "").strip()
|
|
if not context_path:
|
|
return _emit(
|
|
{
|
|
"passed": False,
|
|
"failures": ["missing_replay_context"],
|
|
"runner": "default_eval_worker",
|
|
},
|
|
status=2,
|
|
)
|
|
try:
|
|
context = json.loads(Path(context_path).read_text(encoding="utf-8"))
|
|
except Exception as exc:
|
|
return _emit(
|
|
{
|
|
"passed": False,
|
|
"failures": [f"invalid_replay_context:{str(exc)[:300]}"],
|
|
"runner": "default_eval_worker",
|
|
},
|
|
status=2,
|
|
)
|
|
if not isinstance(context, dict):
|
|
return _emit(
|
|
{
|
|
"passed": False,
|
|
"failures": ["replay_context_not_object"],
|
|
"runner": "default_eval_worker",
|
|
},
|
|
status=2,
|
|
)
|
|
result = evaluate_replay_context(context)
|
|
result.setdefault("runner", "default_eval_worker")
|
|
return _emit(result, status=0)
|
|
|
|
|
|
def _emit(payload: dict[str, Any], *, status: int) -> int:
|
|
sys.stdout.write(json.dumps(payload, ensure_ascii=False, default=str))
|
|
sys.stdout.write("\n")
|
|
return status
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main(sys.argv[1:]))
|