Spaces:
Sleeping
Sleeping
File size: 2,049 Bytes
2414d31 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | """Smoke test for ClarifyEnvironment: reset -> oracle ask -> perfect plan."""
import json
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(ROOT))
from server.clarify_environment import ClarifyEnvironment
from server.user_simulator import FIELD_KEYWORDS
from openenv.core.env_server.mcp_types import CallToolAction, ListToolsAction
def main() -> None:
env = ClarifyEnvironment()
print("=== reset(seed=7, task_id=medium) ===")
obs = env.reset(seed=7, task_id="medium")
print("reset.result:")
print(json.dumps(obs.result, indent=2, default=str))
print("state:", env.state.model_dump())
print("\n=== list tools ===")
tools_obs = env.step(ListToolsAction())
print("tools:", [t.name for t in tools_obs.tools])
print("\n=== call get_task_info ===")
obs = env.step(CallToolAction(tool_name="get_task_info", arguments={}))
print(f"reward={obs.reward} done={obs.done}")
print("result:", obs.result)
print("\n=== ask each critical question (oracle) ===")
crit = env._scenario["critical_fields"]
print("critical fields:", crit)
for fkey in crit:
kw = FIELD_KEYWORDS[fkey][0]
question = f"what is the {kw}?"
obs = env.step(
CallToolAction(
tool_name="ask_question",
arguments={"question": question},
)
)
print(f" Q='{question}' reward={obs.reward} done={obs.done}")
print(f" result={obs.result}")
print("\nstate after asking:", env.state.model_dump())
print("\n=== submit perfect plan ===")
plan = json.dumps(env._scenario["hidden_profile"])
obs = env.step(
CallToolAction(
tool_name="propose_plan",
arguments={"plan": plan},
)
)
print(f"reward={obs.reward:.3f} done={obs.done}")
print("result:")
print(json.dumps(obs.result, indent=2, default=str))
print("\nfinal state:", env.state.model_dump())
if __name__ == "__main__":
main()
|