File size: 1,473 Bytes
5655a42 | 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 | #!/usr/bin/env python3
"""Offline Codex JSON-RPC peer; no provider or authentication calls."""
import json
import os
import sys
def send(value):
print(json.dumps(value), flush=True)
for line in sys.stdin:
request = json.loads(line)
if "id" not in request:
continue
method = request["method"]
result = {}
if method == "thread/start":
result = {"thread": {"id": "fixture-thread"}}
elif method == "turn/start":
result = {"turn": {"id": "fixture-turn"}}
send({"jsonrpc": "2.0", "id": request["id"], "result": result})
if method != "turn/start":
continue
text = request["params"]["input"][0]["text"]
mode = os.environ.get("ECHO_FIXTURE_MODE", "echo")
items = []
if mode != "assistant_only":
items.append({"type": "userMessage", "id": "input", "content": [
{"type": "text", "text": "different" if mode == "different" else text}]})
items.append({"type": "agentMessage", "id": "reply", "text": "fixture reply"})
if mode == "later_equal":
items.append({"type": "userMessage", "id": "steer", "content": [{"type": "text", "text": text}]})
for item in items:
send({"method": "item/completed", "params": {
"threadId": "fixture-thread", "turnId": "fixture-turn", "item": item}})
send({"method": "turn/completed", "params": {
"threadId": "fixture-thread", "turn": {"id": "fixture-turn", "status": "completed", "error": None}}})
|