import * as NodeServices from '@effect/platform-node/NodeServices';
import * as NodeCrypto from '@effect/platform-node/NodeCrypto';
import * as Net from '@t3tools/shared/Net';
import * as Effect from 'effect/Effect';
import * as Layer from 'effect/Layer';
import * as Option from 'effect/Option';
import * as References from 'effect/References';
import * as EnvironmentAuth from './src/auth/EnvironmentAuth.ts';
import * as ServerConfig from './src/config.ts';
import {resolveCliAuthConfig} from './src/cli/config.ts';
import {readFileSync,writeFileSync} from 'node:fs';
const [home,port,out,sha]=process.argv.slice(2);
const config=await Effect.runPromise(resolveCliAuthConfig({baseDir:Option.some(home)},Option.none(),{quietLogs:true}).pipe(Effect.provide(NodeServices.layer),Effect.provide(Net.layer))); 
const token=await Effect.runPromise(Effect.gen(function*(){return (yield* (yield* EnvironmentAuth.EnvironmentAuth).issueMcpClientSession({label:'Documentation proof',access:'full-access',peerLink:false,client:{deviceType:'bot'}})).token}).pipe(Effect.provide(EnvironmentAuth.layerRuntime.pipe(Layer.provide(ServerConfig.layer(config)),Layer.provide(Layer.succeed(References.MinimumLogLevel,'Error')),Layer.provide(NodeServices.layer),Layer.provide(NodeCrypto.layer)))));
let session='';let id=0;
async function rpc(method,params){const r=await fetch(`http://127.0.0.1:${port}/mcp`,{method:'POST',headers:{Authorization:`Bearer ${token}`,'Content-Type':'application/json',Accept:'application/json, text/event-stream',...(session?{'Mcp-Session-Id':session,'MCP-Protocol-Version':'2025-06-18'}:{})},body:JSON.stringify({jsonrpc:'2.0',id:++id,method,params})});session=r.headers.get('mcp-session-id')??session;const text=await r.text();let data;try{data=JSON.parse(text)}catch{data=JSON.parse(text.split('\n').find(x=>x.startsWith('data:')).slice(5))}return data;}
const init=await rpc('initialize',{protocolVersion:'2025-06-18',capabilities:{},clientInfo:{name:'documentation-proof',version:'1'}});
const list=await rpc('tools/list',{});
if(!list.result?.tools)throw Error(JSON.stringify(list));
const tool=list.result.tools.find(t=>t.name==='t3_thread_update');
const calls=[];
for(const args of [{action:'link_pull_request'},{action:'unlink_pull_request'},{action:'rename'},{action:'regenerate_title',title:'Example'}]) calls.push({arguments:args,response:await rpc('tools/call',{name:'t3_thread_update',arguments:args})});
const doc=readFileSync('docs/orchestration-v2/orchestrator-mcp-server.md','utf8').split('### `t3_thread_update`')[1].split('\n### ')[0];
const evidence={sha,environment:'Real T3 Code HTTP MCP server; Linux; fresh isolated data; synthetic requests; no provider turn',document:doc.trim(),registeredTool:tool,separateTools:list.result.tools.filter(t=>['link_pull_request','unlink_pull_request'].includes(t.name)).map(t=>({name:t.name,description:t.description})),calls};
writeFileSync(out,JSON.stringify(evidence,null,2));
console.log('Captured registered schema and four live validation responses.');
await fetch(`http://127.0.0.1:${port}/mcp`,{method:'DELETE',headers:{Authorization:`Bearer ${token}`,'Mcp-Session-Id':session,'MCP-Protocol-Version':'2025-06-18'}});
