"""Small operational CLI for the Agent Pull Runner contract.""" from __future__ import annotations import argparse import json from agent_pull_runner import AgentPullRunner, RunnerConfig class _NoopTransport: def register_worker(self, worker_id, capabilities): return {"status": "registered", "worker_id": worker_id, "capabilities": list(capabilities)} def heartbeat(self, worker_id): return {"status": "alive", "worker_id": worker_id} def long_poll(self, worker_id, timeout_seconds): return None def poll(self, worker_id): return None def claim(self, worker_id, task): return task def renew(self, worker_id, task_id): return {"status": "renewed", "task_id": task_id} def report_progress(self, worker_id, task_id, payload): return {"status": "progress_recorded", "task_id": task_id} def report_result(self, worker_id, task_id, payload): return {"status": "result_recorded", "task_id": task_id} def report_evidence(self, worker_id, task_id, payload): return {"status": "evidence_recorded", "task_id": task_id} def main() -> int: parser = argparse.ArgumentParser(description="AIOS Agent Pull Runner") parser.add_argument("--worker-id", default="self-test-worker") parser.add_argument("--self-test", action="store_true") args = parser.parse_args() runner = AgentPullRunner(RunnerConfig(worker_id=args.worker_id, fallback_seconds=60), _NoopTransport()) if args.self_test: print(json.dumps({"status": "PASS", "registration": runner.register(), "fallback_seconds": runner.config.fallback_seconds}, sort_keys=True)) return 0 print(json.dumps({"status": "READY", "worker_id": args.worker_id}, sort_keys=True)) return 0 if __name__ == "__main__": raise SystemExit(main())