import subprocess,json,selectors,os,signal
p=subprocess.Popen(['/tmp/t3-issue-25382-runtime/tools/opencode-v2/2.1.4/linux-x86_64/opencode','acp'],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.DEVNULL,text=True,start_new_session=True)
s=selectors.DefaultSelector();s.register(p.stdout,selectors.EVENT_READ)
def rpc(i,method,params):
 p.stdin.write(json.dumps({'jsonrpc':'2.0','id':i,'method':method,'params':params})+'\n');p.stdin.flush()
 while s.select(20):
  line=p.stdout.readline()
  if not line: raise RuntimeError('process exited')
  msg=json.loads(line)
  if msg.get('id')==i:
   print(method,json.dumps(msg));return msg
 raise RuntimeError('no response')
try:
 rpc(1,'initialize',{'protocolVersion':1,'clientCapabilities':{},'clientInfo':{'name':'t3-code-provider-test','version':'0'}})
 result=rpc(2,'session/new',{'cwd':'/home/ubuntu/t3code/apps/server','mcpServers':[]})
 session=result['result']['sessionId']
 rpc(3,'session/delete',{'sessionId':session})
finally:
 os.killpg(p.pid,signal.SIGTERM);p.wait()
