| 16437 | `);break}C4(g6(S)+` |
| 16438 | `);break;case"stream-json":break;default:if(!S||S.type!=="result")throw Error("No messages returned");switch(S.subtype){case"success":C4(S.result.endsWith(` |
| 16439 | `)?S.result:S.result+` |
| 16440 | `);break;case"error_during_execution":C4("Execution error");break;case"error_max_turns":C4(`Error: Reached max turns (${O.maxTurns})`);break;case"error_max_budget_usd":C4(`Error: Exceeded USD budget (${O.maxBudgetUsd})`);break;case"error_max_structured_output_retries":C4("Error: Failed to provide valid structured output after maximum retries")}}if(Ku1(),Zf8())await eoY.drainPendingExtraction();eK(S?.type==="result"&&S?.is_error?1:0)}function zaY(q,K,_,z,Y,$,A,O,w,j,H,J){let M=!1,X,P=!1,W=!1,D=null,f,G=q.outbound,Z=()=>{if(c8("info","shutdown_signal",{signal:"SIGINT"}),f&&!f.signal.aborted)f.abort();xK(0)};process.on("SIGINT",Z),pq(async()=>{let l6={};for(let S6 of gN8(O()))if(uH(S6))l6[S6.type]=(l6[S6.type]??0)+1;c8("info","run_state_at_shutdown",{run_active:M,run_phase:X,worker_status:mUK(),internal_events_pending:q.internalEventsPending,bg_tasks:l6})}),IUK((l6)=>{if(l6==="default"||l6==="acceptEdits"||l6==="bypassPermissions"||l6==="plan"||l6==="auto"||l6==="dontAsk")G.enqueue({type:"system",subtype:"status",status:null,permissionMode:l6,uuid:wW(),session_id:N8()})});let T={abortController:null,inflightPromise:null,lastEmitted:null,pendingSuggestion:null,pendingLastEmittedEntry:null},v;if(H.enableAuthStatus)v=FW.getInstance().subscribe((S6)=>{G.enqueue({type:"auth_status",isAuthenticating:S6.isAuthenticating,output:S6.output,error:S6.error,uuid:wW(),session_id:N8()})});let V=(l6)=>{let S6=fCK(l6);if(S6)G.enqueue({type:"rate_limit_event",rate_limit_info:S6,uuid:wW(),session_id:N8()})};Xq6.add(V);let E=Y,S=hV6(Y,GK8(),tF),R=Bu(tF),x=process.env.CLAUDE_CODE_RESUME_INTERRUPTED_TURN;if(J&&J.kind!=="none"&&x)N(`[print.ts] Auto-resuming interrupted turn (kind: ${J.kind})`),t75(E,J.message),jM({mode:"prompt",value:J.message.message.content,uuid:wW()});let B=BK6().map((l6)=>{let S6=l6.value===null?"default":l6.value,E6=S6==="default"?If():A5(S6),R6=fL(E6),h6=fT8(E6),x6=jJ(l6.value),b6=DG6(E6);return{value:S6,displayName:l6.label,description:l6.description,...R6&&{supportsEffort:!0,supportedEffortLevels:Bn6(E6)?[...DL]:DL.filter((Q6)=>Q6!=="max")},...h6&&{supportsAdaptiveThinking:!0},...x6&&{supportsFastMode:!0},...b6&&{supportsAutoMode:!0}}}),p=H.userSpecifiedModel;function C(l6,S6){let E6=g0K(l6,yV(S6));E.push(...E6);for(let R6 of E6)if(typeof R6.message.content==="string"&&R6.message.content.includes(`<${bZ}>`))G.enqueue({type:"user",message:R6.message,session_id:N8(),parent_tool_use_id:null,uuid:R6.uuid,timestamp:R6.timestamp,isReplay:!0})}let g=[],F=[],U=new Set;function c(l6){for(let S6 of l6){if(S6.type!=="connected"||U.has(S6.name))continue;if(S6.config.type==="sdk")continue;let E6=S6.name;try{S6.client.setRequestHandler(sc,async(R6,h6)=>{C8(E6,`Elicitation request received in print mode: ${g6(R6)}`);let x6=R6.params.mode==="url"?"url":"form";d("tengu_mcp_elicitation_shown",{mode:x6});let b6=await ka6(E6,R6.params,h6.signal);if(b6)return C8(E6,`Elicitation resolved by hook: ${g6(b6)}`),d("tengu_mcp_elicitation_response",{mode:x6,action:b6.action}),b6;let Q6="url"in R6.params?R6.params.url:void 0,Y6="requestedSchema"in R6.params?R6.params.requestedSchema:void 0,_6="elicitationId"in R6.params?R6.params.elicitationId:void 0,F6=await q.handleElicitation(E6,R6.params.message,Y6,h6.signal,x6,Q6,_6),W6=await Va6(E6,F6,h6.signal,x6,_6);return d("tengu_mcp_elicitation_response",{mode:x6,action:W6.action}),W6}),S6.client.setNotificationHandler(Su6,(R6)=>{let{elicitationId:h6}=R6.params;C8(E6,`Elicitation completion notification: ${h6}`),bU({message:`MCP server "${E6}" confirmed elicitation ${h6} complete`,notificationType:"elicitation_complete"}),G.enqueue({type:"system",subtype:"elicitation_complete",mcp_server_name:E6,elicitation_id:h6,uuid:wW(),session_id:N8()})}),U.add(E6)}catch{}}}async function K6(){let l6=new Set(Object.keys(A)),S6=new Set(g.map((Q6)=>Q6.name)),E6=Array.from(l6).some((Q6)=>!S6.has(Q6)),R6=Array.from(S6).some((Q6)=>!l6.has(Q6)),h6=g.some((Q6)=>Q6.type==="pending"),x6=g.some((Q6)=>Q6.type==="failed");if(E6||R6||h6||x6){for(let _6 of g)if(!l6.has(_6.name)){if(_6.type==="connected")await _6.cleanup()}let Q6=await Hb4(A,(_6,F6)=>q.sendMcpMessage(_6,F6));g=Q6.clients,F=Q6.tools;let Y6=cJ([...S6,...l6]);w((_6)=>({..._6,mcp:{..._6.mcp,tools:[..._6.mcp.tools.filter((F6)=>!Y6.some((W6)=>F6.name.startsWith(kE(W6)))),...F]}})),fN4(g)}}K6();let t={clients:[],tools:[],configs:{}},q6=(l6)=>{let S6=nQ(l6.toolPermissionContext,l6.mcp.tools),E6=u2(LS6([...z,...F,...t.tools],S6,l6.toolPermissionContext.mode),"name");if(H.permissionPromptToolName)E6=E6.filter((h6)=>!g_(h6,H.permissionPromptToolName));let R6=j38();if(R6&&!H.jsonSchema){let h6=FN8(R6);if("tool"in h6)E6=[...E6,h6.tool]}return E6},e=null,i=0;function $6(){if(!e)return;let l6=Math.min(i,E.length),S6=E.slice(l6).filter((E6)=>E6.type==="user"||E6.type==="assistant");if(i=E.length,S6.length>0)e.writeMessages(S6)}let M6=Promise.resolve({response:{added:[],removed:[],errors:{}},sdkServersChanged:!1});function j6(l6){let S6=async()=>{let E6=new Set(g.map((h6)=>h6.name)),R6=await qq5(l6,{configs:A,clients:g,tools:F},t,w);for(let h6 of Object.keys(A))delete A[h6];if(Object.assign(A,R6.newSdkState.configs),g=R6.newSdkState.clients,F=R6.newSdkState.tools,t=R6.newDynamicState,R6.sdkServersChanged){let h6=new Set(g.map((b6)=>b6.name)),x6=cJ([...E6,...h6]);w((b6)=>({...b6,mcp:{...b6.mcp,tools:[...b6.mcp.tools.filter((Q6)=>!x6.some((Y6)=>Q6.name.startsWith(kE(Y6)))),...F]}}))}return{response:R6.response,sdkServersChanged:R6.sdkServersChanged}};return M6=M6.then(S6,S6),M6}function G6(){let l6=O(),S6=l6.mcp.clients,E6=u2([...l6.mcp.tools,...t.tools],"name"),R6=new Set([...S6.map((h6)=>h6.name),...g.map((h6)=>h6.name)]);return[...S6,...g,...t.clients.filter((h6)=>!R6.has(h6.name))].map((h6)=>{let x6;if(h6.config.type==="sse"||h6.config.type==="http")x6={type:h6.config.type,url:h6.config.url,headers:h6.config.headers,oauth:h6.config.oauth};else if(h6.config.type==="claudeai-proxy")x6={type:"claudeai-proxy",url:h6.config.url,id:h6.config.id};else if(h6.config.type==="stdio"||h6.config.type===void 0)x6={type:"stdio",command:h6.config.command,args:h6.config.args};let b6=h6.type==="connected"?EU(E6,h6.name).map((Y6)=>({name:Y6.mcpInfo?.toolName??Y6.name,annotations:{readOnly:Y6.isReadOnly({})||void 0,destructive:Y6.isDestructive?.({})||void 0,openWorld:Y6.isOpenWorld?.({})||void 0}})):void 0,Q6;if(h6.type==="connected"&&h6.capabilities.experimental){let Y6={...h6.capabilities.experimental};if(Y6["claude/channel"]&&(!QH6()||!E47(h6.config.pluginSource)))delete Y6["claude/channel"];if(Object.keys(Y6).length>0)Q6={experimental:Y6}}return{name:h6.name,status:h6.type,serverInfo:h6.type==="connected"?h6.serverInfo:void 0,error:h6.type==="failed"?h6.error:void 0,config:x6,scope:h6.config.scope,tools:b6,capabilities:Q6}})}async function w6(){try{if(await Promise.all([Promise.resolve(),mW6("headless_managed_settings_wait",()=>rL8())]),await F75())await A6()}catch(l6){H6(l6)}}let o=null;if(!f9())if(i6(process.env.CLAUDE_CODE_SYNC_PLUGIN_INSTALL))o=w6();else w6();let s=b75(()=>!M),a=_,n=j;async function l(){let{agentDefinitions:l6}=await XJ6(w);a=await u0(GK8());let S6=n.filter((E6)=>E6.source==="flagSettings");n=[...l6.allAgents,...S6]}async function A6(){let{servers:l6}=await Iq6(),S6={};for(let[h6,x6]of Object.entries(l6)){let b6=x6.type;if(b6===void 0||b6==="stdio"||b6==="sse"||b6==="http"||b6==="sdk")S6[h6]=x6}for(let[h6,x6]of Object.entries(A))if(x6.type==="sdk"&&!(h6 in S6))S6[h6]=x6;let{response:E6,sdkServersChanged:R6}=await j6(S6);if(R6)K6();N(`Headless MCP refresh: added=${E6.added.length}, removed=${E6.removed.length}`)}let J6=RC6.subscribe(()=>{tQ(),u0(GK8()).then((l6)=>{a=l6})}),X6=void 0;zV6(()=>{if(f&&WV8("now").length>0)f.abort("interrupt")});let f6=async()=>{if(M)return;if(M=!0,X=void 0,sS6("running"),s.stop(),HM("run_entry"),await K6(),HM("after_updateSdkMcp"),o){let S6=parseInt(process.env.CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS||"",10);if(S6>0){let R6=R7(S6).then(()=>"timeout");if(await Promise.race([o,R6])==="timeout")H6(Error(`CLAUDE_CODE_SYNC_PLUGIN_INSTALL: plugin installation timed out after ${S6}ms`)),d("tengu_sync_plugin_install_timeout",{timeout_ms:S6})}else await o;o=null,await l();let{setupPluginHookHotReload:E6}=await Promise.resolve().then(() => (Nj6(),jo1));E6()}let l6=(S6)=>S6.agentId===void 0;try{let S6,E6=!1,R6=async()=>{while(S6=xr6(l6)){if(S6.mode!=="prompt"&&S6.mode!=="orphaned-permission"&&S6.mode!=="task-notification")throw Error("only prompt commands are supported in streaming mode");let h6=[S6];if(S6.mode==="prompt"){while(r75(S6,YV6(l6)))h6.push(xr6(l6));if(h6.length>1)S6={...S6,value:i75(h6.map((v6)=>v6.value)),uuid:h6.findLast((v6)=>v6.uuid)?.uuid??S6.uuid}}let x6=h6.map((v6)=>v6.uuid).filter((v6)=>v6!==void 0);if(H.replayUserMessages&&h6.length>1){for(let v6 of h6)if(v6.uuid&&v6.uuid!==S6.uuid)G.enqueue({type:"user",message:{role:"user",content:v6.value},session_id:N8(),parent_tool_use_id:null,uuid:v6.uuid,isReplay:!0})}let b6=O(),Q6=[...b6.mcp.clients,...g,...t.clients];c(Q6);for(let v6 of Q6)iA7(v6);let Y6=q6(b6);for(let v6 of x6)jU(v6,"started");if(S6.mode==="task-notification"){let v6=typeof S6.value==="string"?S6.value:"",m6=v6.match(/<task-id>([^<]+)<\/task-id>/),K8=v6.match(/<tool-use-id>([^<]+)<\/tool-use-id>/),H8=v6.match(/<output-file>([^<]+)<\/output-file>/),M8=v6.match(/<status>([^<]+)<\/status>/),X1=v6.match(/<summary>([^<]+)<\/summary>/),j1=(B7)=>B7==="completed"||B7==="failed"||B7==="stopped"||B7==="killed",h1=M8?.[1],T7=j1(h1)?h1==="killed"?"stopped":h1:"completed",Y1=v6.match(/<usage>([\s\S]*?)<\/usage>/)?.[1]??"",Y7=Y1.match(/<total_tokens>(\d+)<\/total_tokens>/),P7=Y1.match(/<tool_uses>(\d+)<\/tool_uses>/),L1=Y1.match(/<duration_ms>(\d+)<\/duration_ms>/);if(M8)G.enqueue({type:"system",subtype:"task_notification",task_id:m6?.[1]??"",tool_use_id:K8?.[1],status:T7,output_file:H8?.[1]??"",summary:X1?.[1]??"",usage:Y7&&P7?{total_tokens:parseInt(Y7[1],10),tool_uses:parseInt(P7[1],10),duration_ms:L1?parseInt(L1[1],10):0}:void 0,session_id:N8(),uuid:wW()})}let _6=S6.value;if(q instanceof Tl8&&S6.mode==="prompt")d("tengu_bridge_message_received",{is_repl:!1});if(T.abortController?.abort(),T.abortController=null,T.pendingSuggestion=null,T.pendingLastEmittedEntry=null,T.lastEmitted){if(S6.mode==="prompt"){let v6=typeof _6==="string"?_6:_6.find((m6)=>m6.type==="text")?.text;if(typeof v6==="string")RN4(T.lastEmitted.text,v6,T.lastEmitted.emittedAt,T.lastEmitted.promptId,T.lastEmitted.generationRequestId);T.lastEmitted=null}}f=P3();let F6=void 0;HM("before_ask"),O18();let W6=S6;await hD8(W6.workload??H.workload,async()=>{for await(let v6 of h75({commands:u2([...a,...b6.mcp.commands],"name"),prompt:_6,promptUuid:W6.uuid,isMeta:W6.isMeta,cwd:GK8(),tools:Y6,verbose:H.verbose,mcpClients:Q6,thinkingConfig:H.thinkingConfig,maxTurns:H.maxTurns,maxBudgetUsd:H.maxBudgetUsd,taskBudget:H.taskBudget,canUseTool:$,userSpecifiedModel:p,fallbackModel:H.fallbackModel,jsonSchema:j38()??H.jsonSchema,mutableMessages:E,getReadFileCache:()=>R.size===0?S:mk6(S,R),setReadFileCache:(m6)=>{S=m6;for(let[K8,H8]of R.entries()){let M8=S.get(K8);if(!M8||H8.timestamp>M8.timestamp)S.set(K8,H8)}R.clear()},customSystemPrompt:H.systemPrompt,appendSystemPrompt:H.appendSystemPrompt,getAppState:O,setAppState:w,abortController:f,replayUserMessages:H.replayUserMessages,includePartialMessages:H.includePartialMessages,handleElicitation:(m6,K8,H8)=>q.handleElicitation(m6,K8.message,void 0,H8,K8.mode,K8.url,"elicitationId"in K8?K8.elicitationId:void 0),agents:n,orphanedPermission:W6.orphanedPermission,setSDKStatus:(m6)=>{G.enqueue({type:"system",subtype:"status",status:m6,session_id:N8(),uuid:wW()})}}))if($6(),v6.type==="result"){for(let K8 of No6())G.enqueue(K8);let m6=O();if(gN8(m6).some((K8)=>(K8.type==="local_agent"||K8.type==="local_workflow")&&uH(K8)))D=v6;else D=null,G.enqueue(v6)}else{for(let m6 of No6())G.enqueue(m6);G.enqueue(v6)}});for(let v6 of x6)jU(v6,"completed");if($6(),e?.sendResult(),H.promptSuggestions&&!k_(process.env.CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION)){T.abortController?.abort();let m6=new AbortController;T.abortController=m6;let K8=X18();if(!K8)w0("sdk_no_params",void 0,void 0,"sdk");else{let H8={promise:null};H8.promise=(async()=>{try{let M8=await pm1(m6,E,O,K8,"sdk");if(!M8||m6.signal.aborted)return;let X1={type:"prompt_suggestion",suggestion:M8.suggestion,uuid:wW(),session_id:N8()},j1={text:M8.suggestion,emittedAt:Date.now(),promptId:M8.promptId,generationRequestId:M8.generationRequestId};if(D)T.pendingSuggestion=X1,T.pendingLastEmittedEntry={text:j1.text,promptId:j1.promptId,generationRequestId:j1.generationRequestId};else T.lastEmitted=j1,G.enqueue(X1)}catch(M8){if(M8 instanceof Error&&(M8.name==="AbortError"||M8.name==="APIUserAbortError")){w0("aborted",void 0,void 0,"sdk");return}H6(x1(M8))}finally{if(T.inflightPromise===H8.promise)T.inflightPromise=null}})(),T.inflightPromise=H8.promise}}Ku1(),wp8(),qu1()}};do{for(let h6 of No6())G.enqueue(h6);X="draining_commands",await R6(),E6=!1;{let h6=O(),x6=gN8(h6).some((Q6)=>uH(Q6)&&Q6.type!=="in_process_teammate"),b6=YV6(l6)!==void 0;if(x6||b6){if(E6=!0,!b6)X="waiting_for_agents",await R7(100)}}}while(E6);if(D){if(G.enqueue(D),D=null,T.pendingSuggestion){if(G.enqueue(T.pendingSuggestion),T.pendingLastEmittedEntry)T.lastEmitted={...T.pendingLastEmittedEntry,emittedAt:Date.now()},T.pendingLastEmittedEntry=null;T.pendingSuggestion=null}}}catch(S6){try{await q.write({type:"result",subtype:"error_during_execution",duration_ms:0,duration_api_ms:0,is_error:!0,num_turns:0,stop_reason:null,session_id:N8(),total_cost_usd:0,usage:n0,modelUsage:{},permission_denials:[],uuid:wW(),errors:[d6(S6),...A_6().map((E6)=>E6.error)]})}catch{}T.abortController?.abort(),eK(1);return}finally{if(X="finally_flush",await q.flushInternalEvents(),X="finally_post_flush",!gL8()){sS6("idle");for(let S6 of No6())G.enqueue(S6)}M=!1,s.start()}if(YV6(l6)!==void 0){f6();return}{let E6=O().teamContext;if(E6&&MG(E6))while(!0){let x6=O();if(!(Of8(x6)||x6.teamContext&&Object.keys(x6.teamContext.teammates).length>0)){N("[print.ts] No more active teammates, stopping poll");break}let Q6=await n26("team-lead",x6.teamContext?.teamName);if(Q6.length>0){N(`[print.ts] Team-lead found ${Q6.length} unread messages`),await We6("team-lead",x6.teamContext?.teamName);let Y6=x6.teamContext?.teamName;for(let F6 of Q6){let W6=qk(F6.text);if(W6&&Y6){let v6=W6.from;N(`[print.ts] Processing shutdown_approved from ${v6}`);let m6=x6.teamContext?.teammates?Object.entries(x6.teamContext.teammates).find(([,K8])=>K8.name===v6)?.[0]:void 0;if(m6)qj6(Y6,{agentId:m6,name:v6}),N(`[print.ts] Removed ${v6} from team file`),await c46(Y6,m6,v6,"shutdown"),w((K8)=>{if(!K8.teamContext?.teammates)return K8;if(!(m6 in K8.teamContext.teammates))return K8;let{[m6]:H8,...M8}=K8.teamContext.teammates;return{...K8,teamContext:{...K8.teamContext,teammates:M8}}})}}let _6=Q6.map((F6)=>`<${dJ} teammate_id="${F6.from}"${F6.color?` color="${F6.color}"`:""}> |
| 16441 | ${F6.text} |
| 16442 | </${dJ}>`).join(` |
| 16443 | |
| 16444 | `);jM({mode:"prompt",value:_6,uuid:wW()}),f6();return}if(P&&!W){W=!0,N("[print.ts] Input closed with active teammates, injecting shutdown prompt"),jM({mode:"prompt",value:l75,uuid:wW()}),f6();return}await R7(500)}}if(P)if(await(async()=>{let E6=O();if(RV1(E6))await hV1(w,E6);let R6=O(),h6=R6.teamContext;return h6&&Object.keys(h6.teammates).length>0||Of8(R6)})())jM({mode:"prompt",value:l75,uuid:wW()}),f6();else{if(T.inflightPromise)await Promise.race([T.inflightPromise,R7(5000)]);T.abortController?.abort(),T.abortController=null,await P17(),J6(),v?.(),Xq6.delete(V),G.done()}},N6=null;if(d75&&c75?.isKairosCronEnabled())N6=d75.createCronScheduler({onFire:(l6)=>{if(P)return;jM({mode:"prompt",value:l6,uuid:wW(),priority:"later",isMeta:!0,workload:LD8}),f6()},isLoading:()=>M||P,getJitterConfig:toY?.getCronJitterConfig,isKilled:()=>!c75?.isKairosCronEnabled()}),N6.start();let Z6=function(l6,S6){G.enqueue({type:"control_response",response:{subtype:"success",request_id:l6.request_id,response:S6}})},V6=function(l6,S6){G.enqueue({type:"control_response",response:{subtype:"error",request_id:l6.request_id,error:S6}})},y6=new Set;q.setUnexpectedResponseCallback(async(l6)=>{await e75({message:l6,setAppState:w,handledToolUseIds:y6,onEnqueued:()=>{f6()}})});let T6=new Map,n6=new Map,o6=new Set,I6=new Map,C6=null;return(async()=>{let l6=!1;c8("info","cli_message_loop_started");for await(let S6 of q.structuredInput){let E6="uuid"in S6?S6.uuid:void 0;if(E6&&S6.type!=="user"&&S6.type!=="control_response")jU(E6,"completed");if(S6.type==="control_request"){if(S6.request.subtype==="interrupt"){if(f)f.abort();T.abortController?.abort(),T.abortController=null,T.lastEmitted=null,T.pendingSuggestion=null,Z6(S6)}else if(S6.request.subtype==="end_session"){if(N(`[print.ts] end_session received, reason=${S6.request.reason??"unspecified"}`),f)f.abort();T.abortController?.abort(),T.abortController=null,T.lastEmitted=null,T.pendingSuggestion=null,Z6(S6);break}else if(S6.request.subtype==="initialize"){if(S6.request.sdkMcpServers&&S6.request.sdkMcpServers.length>0)for(let R6 of S6.request.sdkMcpServers)A[R6]={type:"sdk",name:R6};if(await YaY(S6.request,S6.request_id,l6,G,_,B,q,!!H.enableAuthStatus,H,j,O),S6.request.promptSuggestions)w((R6)=>{if(R6.promptSuggestionEnabled)return R6;return{...R6,promptSuggestionEnabled:!0}});if(S6.request.agentProgressSummaries&&g8("tengu_slate_prism",!0))Di8(!0);if(l6=!0,br6())f6()}else if(S6.request.subtype==="set_permission_mode"){let R6=S6.request;w((h6)=>({...h6,toolPermissionContext:$aY(R6,S6.request_id,h6.toolPermissionContext,G),isUltraplanMode:R6.ultraplan??h6.isUltraplanMode}))}else if(S6.request.subtype==="set_model"){let R6=S6.request.model??"default",h6=R6==="default"?If():R6;p=h6,YP(h6),_48({model:h6}),C(R6,h6),Z6(S6)}else if(S6.request.subtype==="set_max_thinking_tokens"){if(S6.request.max_thinking_tokens===null)H.thinkingConfig=void 0;else if(S6.request.max_thinking_tokens===0)H.thinkingConfig={type:"disabled"};else H.thinkingConfig={type:"enabled",budgetTokens:S6.request.max_thinking_tokens};Z6(S6)}else if(S6.request.subtype==="mcp_status")Z6(S6,{mcpServers:G6()});else if(S6.request.subtype==="get_context_usage")try{let R6=O(),h6=await pg8({messages:E,getAppState:O,options:{mainLoopModel:D5(),tools:q6(R6),agentDefinitions:R6.agentDefinitions,customSystemPrompt:H.systemPrompt,appendSystemPrompt:H.appendSystemPrompt}});Z6(S6,{...h6})}catch(R6){V6(S6,d6(R6))}else if(S6.request.subtype==="mcp_message"){let R6=S6.request,h6=g.find((x6)=>x6.name===R6.server_name);if(h6&&h6.type==="connected"&&h6.client?.transport?.onmessage)h6.client.transport.onmessage(R6.message);Z6(S6)}else if(S6.request.subtype==="rewind_files"){let R6=O(),h6=await s75(S6.request.user_message_id,R6,w,S6.request.dry_run??!1);if(h6.canRewind||S6.request.dry_run)Z6(S6,h6);else V6(S6,h6.error??"Unexpected error")}else if(S6.request.subtype==="cancel_async_message"){let R6=S6.request.message_uuid,h6=$V6((x6)=>x6.uuid===R6);Z6(S6,{cancelled:h6.length>0})}else if(S6.request.subtype==="seed_read_state"){try{let R6=lq(S6.request.path),h6=Math.floor((await soY(R6)).mtimeMs);if(h6<=S6.request.mtime){let x6=await aoY(R6,"utf-8"),b6=(x6.charCodeAt(0)===65279?x6.slice(1):x6).replaceAll(`\r |
| 16445 | `,` |
| 16446 | `);R.set(R6,{content:b6,timestamp:h6,offset:void 0,limit:void 0})}}catch{}Z6(S6)}else if(S6.request.subtype==="mcp_set_servers"){let{response:R6,sdkServersChanged:h6}=await j6(S6.request.servers);if(Z6(S6,R6),h6)K6()}else if(S6.request.subtype==="reload_plugins")try{let R6=await XJ6(w),h6=n.filter((_6)=>_6.source==="flagSettings");n=[...R6.agentDefinitions.allAgents,...h6];let x6=[],[b6,Q6,Y6]=await Promise.allSettled([u0(GK8()),A6(),ZJ()]);if(b6.status==="fulfilled")a=b6.value;else H6(b6.reason);if(Q6.status==="rejected")H6(Q6.reason);if(Y6.status==="fulfilled")x6=Y6.value.enabled.map((_6)=>({name:_6.name,path:_6.path,source:_6.source}));else H6(Y6.reason);Z6(S6,{commands:a.filter((_6)=>_6.userInvocable!==!1).map((_6)=>({name:W_(_6),description:UH6(_6),argumentHint:_6.argumentHint||""})),agents:n.map((_6)=>({name:_6.agentType,description:_6.whenToUse,model:_6.model==="inherit"?void 0:_6.model})),plugins:x6,mcpServers:G6(),error_count:R6.error_count})}catch(R6){V6(S6,d6(R6))}else if(S6.request.subtype==="mcp_reconnect"){let R6=O(),{serverName:h6}=S6.request;U.delete(h6);let x6=EN(h6)??K.find((b6)=>b6.name===h6)?.config??g.find((b6)=>b6.name===h6)?.config??t.clients.find((b6)=>b6.name===h6)?.config??R6.mcp.clients.find((b6)=>b6.name===h6)?.config??null;if(!x6)V6(S6,`Server not found: ${h6}`);else{let b6=await qm(h6,x6),Q6=kE(h6);if(w((Y6)=>({...Y6,mcp:{...Y6.mcp,clients:Y6.mcp.clients.map((_6)=>_6.name===h6?b6.client:_6),tools:[...D0(Y6.mcp.tools,(_6)=>_6.name?.startsWith(Q6)),...b6.tools],commands:[...D0(Y6.mcp.commands,(_6)=>LU(_6,h6)),...b6.commands],resources:b6.resources&&b6.resources.length>0?{...Y6.mcp.resources,[h6]:b6.resources}:W56(Y6.mcp.resources,h6)}})),t={...t,clients:[...t.clients.filter((Y6)=>Y6.name!==h6),b6.client],tools:[...t.tools.filter((Y6)=>!Y6.name?.startsWith(Q6)),...b6.tools]},b6.client.type==="connected")c([b6.client]),iA7(b6.client),Z6(S6);else{let Y6=b6.client.type==="failed"?b6.client.error??"Connection failed":`Server status: ${b6.client.type}`;V6(S6,Y6)}}}else if(S6.request.subtype==="mcp_toggle"){let R6=O(),{serverName:h6,enabled:x6}=S6.request;U.delete(h6);let b6=EN(h6)??K.find((Q6)=>Q6.name===h6)?.config??g.find((Q6)=>Q6.name===h6)?.config??t.clients.find((Q6)=>Q6.name===h6)?.config??R6.mcp.clients.find((Q6)=>Q6.name===h6)?.config??null;if(!b6)V6(S6,`Server not found: ${h6}`);else if(!x6){HN6(h6,!1);let Q6=[...K,...g,...t.clients,...R6.mcp.clients].find((_6)=>_6.name===h6);if(Q6&&Q6.type==="connected")await pG(h6,b6);let Y6=kE(h6);w((_6)=>({..._6,mcp:{..._6.mcp,clients:_6.mcp.clients.map((F6)=>F6.name===h6?{name:h6,type:"disabled",config:b6}:F6),tools:D0(_6.mcp.tools,(F6)=>F6.name?.startsWith(Y6)),commands:D0(_6.mcp.commands,(F6)=>LU(F6,h6)),resources:W56(_6.mcp.resources,h6)}})),Z6(S6)}else{HN6(h6,!0);let Q6=await qm(h6,b6),Y6=kE(h6);if(w((_6)=>({..._6,mcp:{..._6.mcp,clients:_6.mcp.clients.map((F6)=>F6.name===h6?Q6.client:F6),tools:[...D0(_6.mcp.tools,(F6)=>F6.name?.startsWith(Y6)),...Q6.tools],commands:[...D0(_6.mcp.commands,(F6)=>LU(F6,h6)),...Q6.commands],resources:Q6.resources&&Q6.resources.length>0?{..._6.mcp.resources,[h6]:Q6.resources}:W56(_6.mcp.resources,h6)}})),Q6.client.type==="connected")c([Q6.client]),iA7(Q6.client),Z6(S6);else{let _6=Q6.client.type==="failed"?Q6.client.error??"Connection failed":`Server status: ${Q6.client.type}`;V6(S6,_6)}}}else if(S6.request.subtype==="channel_enable"){let R6=O();AaY(S6.request_id,S6.request.serverName,[...R6.mcp.clients,...g,...t.clients],G)}else if(S6.request.subtype==="mcp_authenticate"){let{serverName:R6}=S6.request,h6=O(),x6=EN(R6)??K.find((b6)=>b6.name===R6)?.config??h6.mcp.clients.find((b6)=>b6.name===R6)?.config??null;if(!x6)V6(S6,`Server not found: ${R6}`);else if(x6.type!=="sse"&&x6.type!=="http")V6(S6,`Server type "${x6.type}" does not support OAuth authentication`);else try{T6.get(R6)?.abort();let b6=new AbortController;T6.set(R6,b6);let Q6,Y6=new Promise((v6)=>{Q6=v6}),_6=pq6(R6,x6,(v6)=>Q6(v6),b6.signal,{skipBrowserOpen:!0,onWaitingForCallback:(v6)=>{n6.set(R6,v6)}}),F6=await Promise.race([Y6,_6.then(()=>null)]);if(F6)Z6(S6,{authUrl:F6,requiresUserAction:!0});else Z6(S6,{requiresUserAction:!1});I6.set(R6,_6);let W6=_6.then(async()=>{if(bG(R6))return;if(o6.has(R6))return;let v6=await qm(R6,x6),m6=kE(R6);w((K8)=>({...K8,mcp:{...K8.mcp,clients:K8.mcp.clients.map((H8)=>H8.name===R6?v6.client:H8),tools:[...D0(K8.mcp.tools,(H8)=>H8.name?.startsWith(m6)),...v6.tools],commands:[...D0(K8.mcp.commands,(H8)=>LU(H8,R6)),...v6.commands],resources:v6.resources&&v6.resources.length>0?{...K8.mcp.resources,[R6]:v6.resources}:W56(K8.mcp.resources,R6)}})),t={...t,clients:[...t.clients.filter((K8)=>K8.name!==R6),v6.client],tools:[...t.tools.filter((K8)=>!K8.name?.startsWith(m6)),...v6.tools]}}).catch((v6)=>{N(`MCP OAuth failed for ${R6}: ${v6}`,{level:"error"})}).finally(()=>{if(T6.get(R6)===b6)T6.delete(R6),n6.delete(R6),o6.delete(R6),I6.delete(R6)})}catch(b6){V6(S6,d6(b6))}}else if(S6.request.subtype==="mcp_oauth_callback_url"){let{serverName:R6,callbackUrl:h6}=S6.request,x6=n6.get(R6);if(x6){let b6=!1;try{let Q6=new URL(h6);b6=Q6.searchParams.has("code")||Q6.searchParams.has("error")}catch{}if(!b6)V6(S6,"Invalid callback URL: missing authorization code. Please paste the full redirect URL including the code parameter.");else{o6.add(R6),x6(h6);let Q6=I6.get(R6);if(Q6)try{await Q6,Z6(S6)}catch(Y6){V6(S6,Y6 instanceof Error?Y6.message:"OAuth authentication failed")}else Z6(S6)}}else V6(S6,`No active OAuth flow for server: ${R6}`)}else if(S6.request.subtype==="claude_authenticate"){let{loginWithClaudeAi:R6}=S6.request;C6?.service.cleanup(),d("tengu_oauth_flow_start",{loginWithClaudeAi:R6??!0});let h6=new Eo,x6,b6=new Promise((Y6)=>{x6=Y6}),Q6=h6.startOAuthFlow(async(Y6,_6)=>{x6({manualUrl:Y6,automaticUrl:_6})},{loginWithClaudeAi:R6??!0,skipBrowserOpen:!0}).then(async(Y6)=>{await u26(Y6),d("tengu_oauth_success",{loginWithClaudeAi:R6??!0})}).finally(()=>{if(h6.cleanup(),C6?.service===h6)C6=null});C6={service:h6,flow:Q6},Q6.catch((Y6)=>N(`claude_authenticate flow ended: ${Y6}`,{level:"info"}));try{let{manualUrl:Y6,automaticUrl:_6}=await Promise.race([b6,Q6.then(()=>{throw Error("OAuth flow completed without producing auth URLs")})]);Z6(S6,{manualUrl:Y6,automaticUrl:_6})}catch(Y6){V6(S6,d6(Y6))}}else if(S6.request.subtype==="claude_oauth_callback"||S6.request.subtype==="claude_oauth_wait_for_completion")if(!C6)V6(S6,"No active claude_authenticate flow");else{if(S6.request.subtype==="claude_oauth_callback")C6.service.handleManualAuthCodeInput({authorizationCode:S6.request.authorizationCode,state:S6.request.state});let{flow:R6}=C6;R6.then(()=>{let h6=RG6();Z6(S6,{account:{email:h6?.email,organization:h6?.organization,subscriptionType:h6?.subscription,tokenSource:h6?.tokenSource,apiKeySource:h6?.apiKeySource,apiProvider:E7()}})},(h6)=>V6(S6,d6(h6)))}else if(S6.request.subtype==="mcp_clear_auth"){let{serverName:R6}=S6.request,h6=O(),x6=EN(R6)??K.find((b6)=>b6.name===R6)?.config??h6.mcp.clients.find((b6)=>b6.name===R6)?.config??null;if(!x6)V6(S6,`Server not found: ${R6}`);else if(x6.type!=="sse"&&x6.type!=="http")V6(S6,`Cannot clear auth for server type "${x6.type}"`);else{await wa6(R6,x6);let b6=await qm(R6,x6),Q6=kE(R6);w((Y6)=>({...Y6,mcp:{...Y6.mcp,clients:Y6.mcp.clients.map((_6)=>_6.name===R6?b6.client:_6),tools:[...D0(Y6.mcp.tools,(_6)=>_6.name?.startsWith(Q6)),...b6.tools],commands:[...D0(Y6.mcp.commands,(_6)=>LU(_6,R6)),...b6.commands],resources:b6.resources&&b6.resources.length>0?{...Y6.mcp.resources,[R6]:b6.resources}:W56(Y6.mcp.resources,R6)}})),Z6(S6,{})}}else if(S6.request.subtype==="apply_flag_settings"){let R6=D5(),h6=IX6()??{},x6=S6.request.settings,b6={...h6,...x6};for(let Y6 of Object.keys(b6))if(b6[Y6]===null)delete b6[Y6];if(Ti8(b6),WX.notifyChange("flagSettings"),"model"in x6)if(x6.model!=null)YP(String(x6.model));else YP(void 0);let Q6=D5();if(Q6!==R6){p=Q6;let Y6=x6.model?String(x6.model):"default";_48({model:Q6}),C(Y6,Q6)}Z6(S6)}else if(S6.request.subtype==="get_settings"){let R6=O(),h6=D5(),x6=fL(h6)?yv6(h6,R6.effortValue):void 0;Z6(S6,{...gS7(),applied:{model:h6,effort:typeof x6==="string"?x6:null}})}else if(S6.request.subtype==="stop_task"){let{task_id:R6}=S6.request;try{await Pm8(R6,{getAppState:O,setAppState:w}),Z6(S6,{})}catch(h6){V6(S6,d6(h6))}}else if(S6.request.subtype==="generate_session_title"){let{description:R6,persist:h6}=S6.request,x6=(f&&!f.signal.aborted?f:P3()).signal;(async()=>{try{let b6=await h56(R6,x6);if(b6&&h6)try{Q97(N8(),b6)}catch(Q6){H6(Q6)}Z6(S6,{title:b6})}catch(b6){V6(S6,d6(b6))}})()}else if(S6.request.subtype==="side_question"){let{question:R6}=S6.request;(async()=>{try{let h6=X18(),x6=h6?{...h6,toolUseContext:{...h6.toolUseContext,abortController:P3()}}:await E75({tools:q6(O()),commands:a,mcpClients:[...O().mcp.clients,...g,...t.clients],messages:E,readFileState:S,getAppState:O,setAppState:w,customSystemPrompt:H.systemPrompt,appendSystemPrompt:H.appendSystemPrompt,thinkingConfig:H.thinkingConfig,agents:n}),b6=await Og8({question:R6,cacheSafeParams:x6});Z6(S6,{response:b6.response})}catch(h6){V6(S6,d6(h6))}})()}else if(S6.request.subtype==="remote_control")if(S6.request.enabled)if(e)Z6(S6,{session_url:MM(e.bridgeSessionId,e.sessionIngressUrl),connect_url:U46(e.environmentId,e.sessionIngressUrl),environment_id:e.environmentId});else{let R6;try{let{initReplBridge:h6}=await Promise.resolve().then(() => (Vz7(),kz7)),x6=await h6({onInboundMessage(b6){let Q6=tQ8(b6);if(!Q6)return;let{content:Y6,uuid:_6}=Q6;jM({value:Y6,mode:"prompt",uuid:_6,skipSlashCommands:!0}),f6()},onPermissionResponse(b6){q.injectControlResponse(b6)},onInterrupt(){f?.abort()},onSetModel(b6){let Q6=b6==="default"?If():b6;p=Q6,YP(Q6)},onSetMaxThinkingTokens(b6){if(b6===null)H.thinkingConfig=void 0;else if(b6===0)H.thinkingConfig={type:"disabled"};else H.thinkingConfig={type:"enabled",budgetTokens:b6}},onStateChange(b6,Q6){if(b6==="failed")R6=Q6;N(`[bridge:sdk] State change: ${b6}${Q6?` — ${Q6}`:""}`),G.enqueue({type:"system",subtype:"bridge_state",state:b6,detail:Q6,uuid:wW(),session_id:N8()})},initialMessages:E.length>0?E:void 0});if(!x6)V6(S6,R6??"Remote Control initialization failed");else e=x6,i=E.length,q.setOnControlRequestSent((b6)=>{x6.sendControlRequest(b6)}),q.setOnControlRequestResolved((b6)=>{x6.sendControlCancelRequest(b6)}),Z6(S6,{session_url:MM(x6.bridgeSessionId,x6.sessionIngressUrl),connect_url:U46(x6.environmentId,x6.sessionIngressUrl),environment_id:x6.environmentId})}catch(h6){V6(S6,d6(h6))}}else{if(e)q.setOnControlRequestSent(void 0),q.setOnControlRequestResolved(void 0),await e.teardown(),e=null;Z6(S6)}else V6(S6,`Unsupported control request subtype: ${S6.request.subtype}`);continue}else if(S6.type==="control_response"){if(H.replayUserMessages)G.enqueue(S6);continue}else if(S6.type==="keep_alive")continue;else if(S6.type==="update_environment_variables")continue;else if(S6.type==="assistant"||S6.type==="system"){let R6=JU8([S6]);if(E.push(...R6),S6.type==="assistant"&&H.replayUserMessages)G.enqueue(S6);continue}if(S6.type!=="user")continue;if(l6=!0,S6.uuid){let R6=N8(),h6=await l97(R6,S6.uuid);if(h6||Vl8.has(S6.uuid)){if(N(`Skipping duplicate user message: ${S6.uuid}`),H.replayUserMessages)N(`Sending acknowledgment for duplicate user message: ${S6.uuid}`),G.enqueue({type:"user",message:S6.message,session_id:R6,parent_tool_use_id:null,uuid:S6.uuid,timestamp:S6.timestamp,isReplay:!0});if(h6)jU(S6.uuid,"completed");continue}qaY(S6.uuid)}jM({mode:"prompt",value:await Nz7(S6,S6.message.content),uuid:S6.uuid,priority:S6.priority}),f6()}if(P=!0,N6?.stop(),!M){if(T.inflightPromise)await Promise.race([T.inflightPromise,R7(5000)]);T.abortController?.abort(),T.abortController=null,await P17(),J6(),v?.(),Xq6.delete(V),G.done()}})(),G}function o75(q){let K=async(_,z,Y,$,A,O)=>{let w=O??await uX(_,z,Y,$,A);if(w.behavior==="allow"||w.behavior==="deny")return w;let{signal:j,cleanup:H}=Ty(Y.abortController.signal);if(j.aborted)return H(),{behavior:"deny",message:"Permission prompt was aborted.",decisionReason:{type:"permissionPromptTool",permissionPromptToolName:_.name,toolResult:void 0}};let J=new Promise((D)=>{j.addEventListener("abort",()=>D("aborted"),{once:!0})}),M=q.call({tool_name:_.name,input:z,tool_use_id:A},Y,K,$),X=await Promise.race([M,J]);if(H(),X==="aborted"||j.aborted)return{behavior:"deny",message:"Permission prompt was aborted.",decisionReason:{type:"permissionPromptTool",permissionPromptToolName:_.name,toolResult:void 0}};let P=X,W=q.mapToolResultToToolResultBlockParam(P.data,"1");if(!W.content||!Array.isArray(W.content)||!W.content[0]||W.content[0].type!=="text"||typeof W.content[0].text!=="string")throw Error('Permission prompt tool returned an invalid result. Expected a single text block param with type="text" and a string text value.');return xC6(_K8().parse(m5(W.content[0].text)),q,z,Y)};return K}function a75(q,K,_,z){if(q==="stdio")return K.createCanUseTool(z);if(!q)return async($,A,O,w,j,H)=>H??await uX($,A,O,w,j);let Y=null;return async($,A,O,w,j,H)=>{if(!Y){let J=_(),M=J.find((X)=>g_(X,q));if(!M){let X=`Error: MCP tool ${q} (passed via --permission-prompt-tool) not found. Available MCP tools: ${J.map((P)=>P.name).join(", ")||"none"}`;throw process.stderr.write(`${X} |
| 16447 | `),eK(1),Error(X)}if(!M.inputJSONSchema){let X=`Error: tool ${q} (passed via --permission-prompt-tool) must be an MCP tool`;throw process.stderr.write(`${X} |
| 16448 | `),eK(1),Error(X)}Y=o75(M)}return Y($,A,O,w,j,H)}}async function YaY(q,K,_,z,Y,$,A,O,w,j,H){if(_){z.enqueue({type:"control_response",response:{subtype:"error",error:"Already initialized",request_id:K,pending_permission_requests:A.getPendingPermissionRequests()}});return}if(q.systemPrompt!==void 0)w.systemPrompt=q.systemPrompt;if(q.appendSystemPrompt!==void 0)w.appendSystemPrompt=q.appendSystemPrompt;if(q.promptSuggestions!==void 0)w.promptSuggestions=q.promptSuggestions;if(q.agents){let D=oi6(q.agents,"flagSettings");j.push(...D)}if(w.agent){let D=qB()===w.agent,f=j.find((G)=>G.agentType===w.agent);if(f&&!D){if(vc(f.agentType),!w.systemPrompt&&!I2(f)){let G=f.getSystemPrompt();if(G)w.systemPrompt=G}if(!w.userSpecifiedModel&&f.model&&f.model!=="inherit"){let G=A5(f.model);YP(G)}if(f.initialPrompt)A.prependUserMessage(f.initialPrompt)}else if(f?.initialPrompt)A.prependUserMessage(f.initialPrompt)}let M=Z7()?.outputStyle||iv,X=await Dh6(Z8()),P=RG6();if(q.hooks){let D={};for(let[f,G]of Object.entries(q.hooks))D[f]=G.map((Z)=>{let T=Z.hookCallbackIds.map((v)=>{return A.createHookCallback(v,Z.timeout)});return{matcher:Z.matcher,hooks:T}});It(D)}if(q.jsonSchema)di8(q.jsonSchema);let W={commands:Y.filter((D)=>D.userInvocable!==!1).map((D)=>({name:W_(D),description:UH6(D),argumentHint:D.argumentHint||""})),agents:j.map((D)=>({name:D.agentType,description:D.whenToUse,model:D.model==="inherit"?void 0:D.model})),output_style:M,available_output_styles:Object.keys(X),models:$,account:{email:P?.email,organization:P?.organization,subscriptionType:P?.subscription,tokenSource:P?.tokenSource,apiKeySource:P?.apiKeySource,apiProvider:E7()},pid:process.pid};if(BK()&&oJ()){let D=H();W.fast_mode_state=II(w.userSpecifiedModel??null,D.fastMode)}if(z.enqueue({type:"control_response",response:{subtype:"success",request_id:K,response:W}}),O){let f=FW.getInstance().getStatus();if(f)z.enqueue({type:"auth_status",isAuthenticating:f.isAuthenticating,output:f.output,error:f.error,uuid:wW(),session_id:N8()})}}async function s75(q,K,_,z){if(!e$())return{canRewind:!1,error:"File rewinding is not enabled."};if(!Hx8(K.fileHistory,q))return{canRewind:!1,error:"No file checkpoint found for this message."};if(z){let Y=await $68(K.fileHistory,q);return{canRewind:!0,filesChanged:Y?.filesChanged,insertions:Y?.insertions,deletions:Y?.deletions}}try{await jx8((Y)=>_(($)=>({...$,fileHistory:Y($.fileHistory)})),q)}catch(Y){return{canRewind:!1,error:`Failed to rewind: ${d6(Y)}`}}return{canRewind:!0}}function $aY(q,K,_,z){if(q.mode==="bypassPermissions"){if(na())return z.enqueue({type:"control_response",response:{subtype:"error",request_id:K,error:"Cannot set permission mode to bypassPermissions because it is disabled by settings or configuration"}}),_;if(!_.isBypassPermissionsModeAvailable)return z.enqueue({type:"control_response",response:{subtype:"error",request_id:K,error:"Cannot set permission mode to bypassPermissions because the session was not launched with --dangerously-skip-permissions"}}),_}if(q.mode==="auto"&&!Xy()){let Y=la();return z.enqueue({type:"control_response",response:{subtype:"error",request_id:K,error:Y?`Cannot set permission mode to auto: ${A56(Y)}`:"Cannot set permission mode to auto"}}),_}return z.enqueue({type:"control_response",response:{subtype:"success",request_id:K,response:{mode:q.mode}}}),{...ca(_.mode,q.mode,_),mode:q.mode}}function AaY(q,K,_,z){let Y=(X)=>z.enqueue({type:"control_response",response:{subtype:"error",request_id:q,error:X}}),$=_.find((X)=>X.name===K&&X.type==="connected");if(!$||$.type!=="connected")return Y(`server ${K} is not connected`);let A=$.config.pluginSource,O=A?Z4(A):void 0;if(!O?.marketplace)return Y(`server ${K} is not plugin-sourced; channel_enable requires a marketplace plugin`);let w={kind:"plugin",name:O.name,marketplace:O.marketplace},j=eH(),H=j.some((X)=>X.kind==="plugin"&&X.name===w.name&&X.marketplace===w.marketplace);if(!H)kc([...j,w]);let J=R78(K,$.capabilities,A);if(J.action==="skip"){if(!H)kc(j);return Y(J.reason)}let M=`${w.name}@${w.marketplace}`;C8(K,"Channel notifications registered"),d("tengu_mcp_channel_enable",{plugin:M}),$.client.setNotificationHandler(E78(),async(X)=>{let{content:P,meta:W}=X.params;C8(K,`notifications/claude/channel: ${P.slice(0,80)}`),d("tengu_mcp_channel_message",{content_length:P.length,meta_key_count:Object.keys(W??{}).length,entry_kind:"plugin",is_dev:!1,plugin:M}),jM({mode:"prompt",value:L78(K,P,W),priority:"next",isMeta:!0,origin:{kind:"channel",server:K},skipSlashCommands:!0})}),z.enqueue({type:"control_response",response:{subtype:"success",request_id:q,response:void 0}})}function iA7(q){if(q.type!=="connected")return;if(R78(q.name,q.capabilities,q.config.pluginSource).action!=="register")return;let _=dH6(q.name,eH()),z=_?.kind==="plugin"?`${_.name}@${_.marketplace}`:void 0;C8(q.name,"Channel notifications re-registered after reconnect"),q.client.setNotificationHandler(E78(),async(Y)=>{let{content:$,meta:A}=Y.params;C8(q.name,`notifications/claude/channel: ${$.slice(0,80)}`),d("tengu_mcp_channel_message",{content_length:$.length,meta_key_count:Object.keys(A??{}).length,entry_kind:_?.kind,is_dev:_?.dev??!1,plugin:z}),jM({mode:"prompt",value:L78(q.name,$,A),priority:"next",isMeta:!0,origin:{kind:"channel",server:q.name},skipSlashCommands:!0})})}function kl8(q,K){if(K==="stream-json"){let _={type:"result",subtype:"error_during_execution",duration_ms:0,duration_api_ms:0,is_error:!0,num_turns:0,stop_reason:null,session_id:N8(),total_cost_usd:0,usage:n0,modelUsage:{},permission_denials:[],uuid:wW(),errors:[q]};process.stdout.write(g6(_)+` |