import{Xa as Y}from"./cli-0.5.4-jzxnfzrh.mjs";import{eQ as N,fQ as C}from"./cli-0.5.4-wbqf44ym.mjs";import{t6 as L,v6 as j}from"./cli-0.5.4-cbq01zg3.mjs";import{Nea as A,Pea as w}from"./cli-0.5.4-09dvrzcr.mjs";import{Pfa as W,Sfa as E,tfa as G,xfa as K}from"./cli-0.5.4-end8wj9r.mjs";import{Gga as B,Nga as k}from"./cli-0.5.4-sgcaw17t.mjs";w();C();import{randomUUID as O}from"crypto";E();j();k();K();function T(f){return f!==null&&typeof f==="object"&&"type"in f&&typeof f.type==="string"}function P(f){return f!==null&&typeof f==="object"&&"type"in f&&f.type==="control_response"&&"response"in f}function S(f){return f!==null&&typeof f==="object"&&"type"in f&&f.type==="control_request"&&"request_id"in f&&"request"in f}function v(f){if((f.type==="user"||f.type==="assistant")&&f.isVirtual)return!1;return f.type==="user"||f.type==="assistant"||f.type==="system"&&f.subtype==="local_command"}function q(f){if(f.type!=="user"||f.isMeta||f.toolUseResult||f.isCompactSummary)return;if(f.origin&&f.origin.kind!=="human")return;let X=f.message.content,Q;if(typeof X==="string")Q=X;else for(let Z of X)if(Z.type==="text"){Q=Z.text;break}if(!Q)return;return L(Q)||void 0}function p(f,X,Q,$,Z,z){try{let H=Y(G(f));if(P(H)){W("[bridge:repl] Ingress message type=control_response"),Z?.(H);return}if(S(H)){W(`[bridge:repl] Inbound control_request subtype=${H.request.subtype}`),z?.(H);return}if(!T(H))return;let J="uuid"in H&&typeof H.uuid==="string"?H.uuid:void 0;if(J&&X.has(J)){W(`[bridge:repl] Ignoring echo: type=${H.type} uuid=${J}`);return}if(J&&Q.has(J)){W(`[bridge:repl] Ignoring re-delivered inbound: type=${H.type} uuid=${J}`);return}if(W(`[bridge:repl] Ingress message type=${H.type}${J?` uuid=${J}`:""}`),H.type==="user"){if(J)Q.add(J);A("tengu_bridge_message_received",{is_repl:!0}),$?.(H)}else W(`[bridge:repl] Ignoring non-user inbound message: type=${H.type}`)}catch(H){W(`[bridge:repl] Failed to parse ingress message: ${B(H)}`)}}var y="This session is outbound-only. Enable Remote Control locally to allow inbound control.";function g(f,X){let{transport:Q,sessionId:$,outboundOnly:Z,onInterrupt:z,onSetModel:H,onSetMaxThinkingTokens:J,onSetPermissionMode:h}=X;if(!Q){W("[bridge:repl] Cannot respond to control_request: transport not configured");return}let V;if(Z&&f.request.subtype!=="initialize"){V={type:"control_response",response:{subtype:"error",request_id:f.request_id,error:y}};let x={...V,session_id:$};Q.write(x),W(`[bridge:repl] Rejected ${f.request.subtype} (outbound-only) request_id=${f.request_id}`);return}switch(f.request.subtype){case"initialize":V={type:"control_response",response:{subtype:"success",request_id:f.request_id,response:{commands:[],output_style:"normal",available_output_styles:["normal"],models:[],account:{},pid:process.pid}}};break;case"set_model":H?.(f.request.model),V={type:"control_response",response:{subtype:"success",request_id:f.request_id}};break;case"set_max_thinking_tokens":J?.(f.request.max_thinking_tokens),V={type:"control_response",response:{subtype:"success",request_id:f.request_id}};break;case"set_permission_mode":{let x=h?.(f.request.mode)??{ok:!1,error:"set_permission_mode is not supported in this context (onSetPermissionMode callback not registered)"};if(x.ok)V={type:"control_response",response:{subtype:"success",request_id:f.request_id}};else V={type:"control_response",response:{subtype:"error",request_id:f.request_id,error:x.error}};break}case"interrupt":z?.(),V={type:"control_response",response:{subtype:"success",request_id:f.request_id}};break;default:V={type:"control_response",response:{subtype:"error",request_id:f.request_id,error:`REPL bridge does not handle control_request subtype: ${f.request.subtype}`}}}let _={...V,session_id:$};Q.write(_),W(`[bridge:repl] Sent control_response for ${f.request.subtype} request_id=${f.request_id} result=${V.response.subtype}`)}function d(f){return{type:"result",subtype:"success",duration_ms:0,duration_api_ms:0,is_error:!1,num_turns:0,result:"",stop_reason:null,total_cost_usd:0,usage:{...N},modelUsage:{},permission_denials:[],session_id:f,uuid:O()}}class R{capacity;ring;set=new Set;writeIdx=0;constructor(f){this.capacity=f,this.ring=Array(f)}add(f){if(this.set.has(f))return;let X=this.ring[this.writeIdx];if(X!==void 0)this.set.delete(X);this.ring[this.writeIdx]=f,this.set.add(f),this.writeIdx=(this.writeIdx+1)%this.capacity}has(f){return this.set.has(f)}clear(){this.set.clear(),this.ring.fill(void 0),this.writeIdx=0}}
export{v as Ra,q as Sa,p as Ta,g as Ua,d as Va,R as Wa};
