@cline/core 0.0.73-nightly.1786590402 → 0.0.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -238,7 +238,7 @@ Searched ${D} files.`;let z=[`Found ${U.length} result${U.length===1?"":"s"} for
238
238
  ${J}`;return Q||J}function Wf($,Z){let Q=Z?.["*"]??{},J=Z?.[$]??{};return{...Q,...J}.enabled!==!1}function Xf($,Z){return $.filter((Q)=>Wf(Q.name,Z))}function Yf($,Z){return L$(Xf($,Z))}function jf($){let Z=$.filter((Q)=>Q!==void 0);if(Z.length===0)return{};return{beforeRun:async(Q)=>{for(let J of Z){let W=await J.beforeRun?.(Q);if(W?.stop)return W}return},afterRun:async(Q)=>{for(let J of Z)await J.afterRun?.(Q)},beforeModel:async(Q)=>{let J=Q.request,W;for(let X of Z){let Y=await X.beforeModel?.({...Q,request:J});if(!Y)continue;if(Y.stop)return Y;W={...W,...Y,options:lG(W?.options,Y.options)},J={...J,...Y.messages?{messages:Y.messages}:{},...Y.tools?{tools:Y.tools}:{},...Y.options?{options:lG(J.options,Y.options)}:{}}}return W},afterModel:async(Q)=>{for(let J of Z){let W=await J.afterModel?.(Q);if(W?.stop)return W}return},beforeTool:async(Q)=>{let J=Q.input,W;for(let X of Z){let Y=await X.beforeTool?.({...Q,input:J});if(!Y)continue;if(Y.stop||Y.skip)return Y;if(W={...W,...Y},Object.hasOwn(Y,"input"))J=Y.input}return W},afterTool:async(Q)=>{let J=Q.result,W;for(let X of Z){let Y=await X.afterTool?.({...Q,result:J});if(!Y)continue;if(Y.stop)return Y;if(W={...W,...Y},Y.result)J=Y.result}return W},onEvent:async(Q)=>{for(let J of Z)await J.onEvent?.(Q)}}}class n${config;agentId;parentAgentId;logger;telemetry;conversation;mistakeTracker;loopTracker;loopDetectionDisabled;messageBuilder;contributionRegistry;extensionsInitialized=!1;listeners=new Set;createAgentRuntimeImpl;activeRunId=null;running=!1;abortRequested=!1;abortReason;activeRuntime=null;activeRunPromise=null;eventAdapter=new oW;shutdownCalled=!1;currentRunToolCalls=[];currentRunUsage={inputTokens:0,outputTokens:0};toolStartedAt=new Map;toolInputs=new Map;currentTurnSuccessfulTools=0;currentTurnFailedTools=0;currentTurnFailureDetails=[];activeTrackerWork=Promise.resolve();trackerAbortInFlight=!1;constructor($,Z={}){this.config=$,this.agentId=`agent_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,this.parentAgentId=$.parentAgentId,this.logger=Z.logger??$.logger,this.telemetry=Z.telemetry??$.telemetry,this.createAgentRuntimeImpl=Z.createAgentRuntimeImpl??sR,this.conversation=new lW($.initialMessages),this.messageBuilder=new uW(gG()),this.contributionRegistry=tR({extensions:$.extensions?[...$.extensions]:[],setupContext:{session:$.extensionContext?.session,client:$.extensionContext?.client,user:$.extensionContext?.user,workspaceInfo:$.extensionContext?.workspace,automation:$.extensionContext?.automation,logger:$.extensionContext?.logger??this.logger,telemetry:$.extensionContext?.telemetry??this.telemetry}}),this.contributionRegistry.resolve(),this.contributionRegistry.validate();let Q=$.execution?.maxConsecutiveMistakes??6;this.mistakeTracker=new nW({maxConsecutiveMistakes:Q,onLimitReached:$.onConsecutiveMistakeLimitReached,onLimitTelemetry:(X)=>{X7(this.telemetry,{ulid:this.config.sessionId??this.conversation.getConversationId(),model:this.config.modelId,provider:this.config.providerId,reason:X.reason,consecutiveMistakes:X.consecutiveMistakes,maxConsecutiveMistakes:X.maxConsecutiveMistakes,agentId:this.agentId,conversationId:this.conversation.getConversationId(),parentAgentId:this.parentAgentId,isSubagent:Boolean(this.parentAgentId)})},emit:(X)=>this.emitLegacyEvent(X),log:(X,Y,j)=>Vf(this.logger,X,Y,j),agentId:this.agentId,getConversationId:()=>this.conversation.getConversationId(),getActiveRunId:()=>this.activeRunId??"",appendRecoveryNotice:(X,Y)=>{this.conversation.appendMessage({role:"user",content:[{type:"text",text:X}]})}});let J=$.execution?.loopDetection;this.loopDetectionDisabled=J===!1;let W=J===!1||J===void 0?void 0:J;this.loopTracker=new aW(W)}getAgentId(){return this.agentId}getConversationId(){return this.conversation.getConversationId()}getMessages(){return this.conversation.getMessages()}canStartRun(){return!this.running&&!this.shutdownCalled}getExtensionRegistry(){return this.contributionRegistry.getRegistrySnapshot()}addTools($){if($.length===0)return;let Z=new Set(this.config.tools.map((J)=>J.name)),Q=[...this.config.tools];for(let J of $)if(!Z.has(J.name))Q.push(J),Z.add(J.name);this.config={...this.config,tools:Q}}updateConnection($){let Z=l2($),Q={...this.config};if(Z.providerId!==void 0)Q.providerId=Z.providerId;if(Z.modelId!==void 0)Q.modelId=Z.modelId;if(Z.apiKey!==void 0)Q.apiKey=Z.apiKey;if(Z.baseUrl!==void 0)Q.baseUrl=Z.baseUrl;if(Z.headers!==void 0)Q.headers=Z.headers;if(Z.providerConfig!==void 0)Q.providerConfig=Z.providerConfig;if(Object.hasOwn(Z,"reasoningEffort"))Q.reasoningEffort=Z.reasoningEffort??void 0;if(Object.hasOwn(Z,"thinkingBudgetTokens"))Q.thinkingBudgetTokens=Z.thinkingBudgetTokens??void 0;if(Object.hasOwn(Z,"thinking")){if(Q.thinking=Z.thinking??void 0,Z.thinking===!1||Z.thinking===null)Q.reasoningEffort=void 0,Q.thinkingBudgetTokens=void 0}this.config=Q}clearHistory(){this.conversation.clearHistory(),this.resetConversationBoundaryTrackers()}restore($){this.conversation.restore($),this.resetConversationBoundaryTrackers()}resetConversationBoundaryTrackers(){this.messageBuilder.resetConversationState(),this.mistakeTracker.reset(),this.loopTracker.reset()}subscribeEvents($){return this.listeners.add($),()=>{this.listeners.delete($)}}abort($){let Z=typeof $==="string"?$:$ instanceof Error?$.message:$===void 0?void 0:String($);if(this.abortRequested=!0,this.abortReason=Z,this.activeRunPromise)this.activeRunPromise.catch(()=>{});this.activeRuntime?.abort(Z)}async shutdown($,Z){if(this.running){if(!this.abortRequested||!this.activeRunPromise)throw new rG(this.agentId);await this.activeRunPromise}if(this.shutdownCalled)return;this.shutdownCalled=!0}run($,Z,Q){return this.conversation.resetForRun(),this.resetConversationBoundaryTrackers(),this.executeRun({userMessage:$,userImages:Z,userFiles:Q,isContinue:!1})}continue($,Z,Q){return this.executeRun({userMessage:$,userImages:Z,userFiles:Q,isContinue:!0})}async composeSystemPrompt(){let $=[];for(let Z of this.contributionRegistry.getRegisteredRules()){let Q=await Qf(Z);if(Q)$.push(Q)}return Jf(this.config.systemPrompt,$)}executeRun($){let Z;return Z=this.executeRunWithAuthRetry($).finally(()=>{if(this.activeRunPromise===Z)this.activeRunPromise=null}),this.activeRunPromise=Z,Z}async executeRunWithAuthRetry($){let Z=await this.executeRunInternal($);if(Z.finishReason!=="error"||!this.config.onAuthError||!eR(Z.text))return Z;if(!await this.config.onAuthError().catch(()=>!1))return Z;let J=await this.executeRunInternal({isContinue:!0});return nB(this.telemetry,this.config.providerId,{recovered:J.finishReason!=="error"}),J}async executeRunInternal($){if(this.shutdownCalled)throw Error(`SessionRuntime.run called after shutdown (agentId=${this.agentId})`);if(this.running)throw Error(`SessionRuntime state is "running"; call canStartRun() first (agentId=${this.agentId})`);this.running=!0,this.abortRequested=!1,this.abortReason=void 0,this.activeRunId=`run_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,await this.ensureExtensionsInitialized(),this.eventAdapter.reset(),this.currentRunToolCalls=[],this.currentRunUsage={inputTokens:0,outputTokens:0},this.toolStartedAt.clear(),this.toolInputs.clear(),this.currentTurnSuccessfulTools=0,this.currentTurnFailedTools=0,this.currentTurnFailureDetails=[],this.activeTrackerWork=Promise.resolve(),this.trackerAbortInFlight=!1;let Z=new Date,Q=$.userMessage;if(Q!==void 0){let L=await Hf(Q,$.userImages,$.userFiles,this.config.userFileContentLoader);this.conversation.appendMessage({role:"user",content:L})}let J=await this.composeSystemPrompt(),W=wG(this.config,this.logger,this.telemetry),X=new Map;for(let L of this.contributionRegistry.getRegisteredTools())X.set(L.name,L);let Y=Yf([...X.values()],this.config.toolPolicies),j=new Map;for(let L of Y)j.set(L.name,L);for(let L of this.config.tools)j.set(L.name,L);let V=this.conversation.getConversationId(),B=iG(this.config),H=Array.from(j.values()),K=o7(this.conversation.getMessages()),G=cG({agentConfig:this.config,sessionId:this.config.sessionId,agentId:this.agentId,conversationId:V,parentAgentId:this.parentAgentId,model:W,logger:this.logger,telemetry:this.telemetry,tools:H,toolContextMetadata:{modelSupportsImages:B?.capabilities?.includes("images")??!0,...this.config.toolContextMetadata},hooks:this.createRuntimeHooks(),prepareTurn:this.createRuntimePrepareTurn(B,H),initialMessages:K,systemPrompt:J}),F=this.createAgentRuntimeImpl(G);if(this.activeRuntime=F,this.abortRequested)F.abort(this.abortReason);let U=F.subscribe((L)=>{this.handleRuntimeEvent(L)}),D,_;try{if($.isContinue)D=await F.continue(void 0);else D=await F.run("")}catch(L){_=L instanceof Error?L:Error(String(L))}finally{U();try{await this.activeTrackerWork}catch(L){this.logger?.error?.("SessionRuntime tracker work failed during drain",{agentId:this.agentId,error:L})}this.activeRuntime=null,this.running=!1,this.abortRequested=!1,this.abortReason=void 0}if(D&&D.messages.length>0){let L=U6(D.messages);this.conversation.replaceMessages(L)}let z=new Date;try{return this.buildLegacyResult({runResult:D,thrownError:_,startedAt:Z,endedAt:z})}finally{this.activeRunId=null}}async ensureExtensionsInitialized(){if(this.extensionsInitialized)return;try{await this.contributionRegistry.initialize({tolerateSetupErrors:this.config.hookErrorMode!=="throw"})}catch($){if(this.config.hookErrorMode==="throw")throw $;this.emitLegacyEvent({type:"error",error:$ instanceof Error?$:Error(String($)),recoverable:!0,iteration:0})}this.extensionsInitialized=!0}createRuntimeHooks(){let $=jf([this.config.hooks,...this.contributionRegistry.getValidatedExtensions().map((Z)=>Z.hooks)]);return{...$,beforeModel:async(Z)=>{let Q=await $.beforeModel?.(Z);if(Q?.stop)return Q;let J=Q?.messages??Z.request.messages,W=await this.prepareMessagesForModelRequest(J);return{...Q,messages:W}}}}createRuntimePrepareTurn($,Z){let Q=this.config.prepareTurn;if(!Q)return;return async(J)=>{let W=U6(J.messages),X=await this.prepareProviderMessagesForApi(W),Y=await Q({agentId:J.agentId,conversationId:J.conversationId??this.conversation.getConversationId(),parentAgentId:J.parentAgentId??null,iteration:J.iteration,messages:W,apiMessages:X,abortSignal:J.signal??new AbortController().signal,systemPrompt:J.systemPrompt??"",tools:Z,model:{id:this.config.modelId,provider:this.config.providerId,info:$},overflowRecovery:J.overflowRecovery,emitStatusNotice:J.emitStatusNotice});if(!Y)return;return{...Y.messages?{messages:o7(Y.messages)}:{},...Y.systemPrompt!==void 0?{systemPrompt:Y.systemPrompt}:{}}}}async prepareMessagesForModelRequest($){let Z=await this.prepareProviderMessagesForApi(s7($));return o7(Z)}async prepareProviderMessagesForApi($){let Z=$,Q=this.contributionRegistry.getRegistrySnapshot().messageBuilder;for(let J of Q)Z=await J.build(Z);return this.messageBuilder.buildForApi(Z)}handleRuntimeEvent($){switch($.type){case"message-added":case"assistant-message":{this.syncConversationFromRuntimeMessage($.snapshot.messages,[$.message]);break}case"turn-started":{this.currentTurnSuccessfulTools=0,this.currentTurnFailedTools=0,this.currentTurnFailureDetails=[];break}case"tool-started":{this.toolStartedAt.set($.toolCall.toolCallId,new Date),this.toolInputs.set($.toolCall.toolCallId,$.toolCall.input),this.inspectLoopForToolCall($.toolCall.toolName,$.toolCall.input,$.iteration);break}case"tool-finished":{let Z=this.toolStartedAt.get($.toolCall.toolCallId),Q=new Date,J=this.toolInputs.get($.toolCall.toolCallId);this.toolStartedAt.delete($.toolCall.toolCallId),this.toolInputs.delete($.toolCall.toolCallId);let W=$.message.content.find((V)=>V.type==="tool-result"),X=W?.type==="tool-result"&&W.isError===!0,Y=X?Zf(W?.type==="tool-result"?W.output:void 0):void 0,j={id:$.toolCall.toolCallId,name:$.toolCall.toolName,input:J,output:W?.type==="tool-result"?W.output:void 0,error:Y,durationMs:Z===void 0?0:Q.getTime()-Z.getTime(),startedAt:Z??Q,endedAt:Q};if(this.currentRunToolCalls.push(j),X){if(this.currentTurnFailedTools+=1,Y)this.currentTurnFailureDetails.push(`[${$.toolCall.toolName}] ${Y}`)}else this.currentTurnSuccessfulTools+=1;break}case"turn-finished":{let Z=this.currentTurnFailedTools,Q=this.currentTurnSuccessfulTools;if(Z>0&&Q===0){let J=this.currentTurnFailureDetails.join("; ");this.enqueueMistakeRecord({iteration:$.iteration,reason:"tool_execution_failed",details:`${Z} tool call(s) failed${J?`: ${J}`:""}`})}else if(Q>0)this.mistakeTracker.reset();break}case"usage-updated":{this.currentRunUsage={inputTokens:$.usage.inputTokens,outputTokens:$.usage.outputTokens,cacheReadTokens:$.usage.cacheReadTokens>0?$.usage.cacheReadTokens:void 0,cacheWriteTokens:$.usage.cacheWriteTokens>0?$.usage.cacheWriteTokens:void 0,totalCost:$.usage.totalCost};break}default:break}for(let Z of this.eventAdapter.translate($))this.emitLegacyEvent(Z)}syncConversationFromRuntimeMessage($,Z){if($.length>0){this.conversation.replaceMessages(U6($));return}if(Z.length===0)return;let Q=new Set(this.conversation.getMessages().map((W)=>W.id).filter((W)=>typeof W==="string")),J=U6(Z).filter((W)=>!W.id||!Q.has(W.id));if(J.length===0)return;this.conversation.replaceMessages([...this.conversation.getMessages(),...J])}emitLegacyEvent($){for(let Z of this.listeners)try{Z($)}catch(Q){this.logger?.error?.("SessionRuntime event listener threw",{agentId:this.agentId,error:Q})}}inspectLoopForToolCall($,Z,Q){if(this.trackerAbortInFlight||this.loopDetectionDisabled)return;let J=this.loopTracker.inspect({name:$,input:Z});if(J.kind==="ok")return;if(J.kind==="soft"){if(J.message)this.conversation.appendMessage({role:"user",content:[{type:"text",text:J.message}]});return}this.enqueueMistakeRecord({iteration:Q,reason:"tool_execution_failed",forceAtLimit:!0,details:J.message??`Detected repeated tool calls to \`${$}\`; stopping to avoid a loop.`})}enqueueMistakeRecord($){if(this.trackerAbortInFlight)return;this.activeTrackerWork=this.activeTrackerWork.then(async()=>{if(this.trackerAbortInFlight)return;let Z=await this.mistakeTracker.record($);if(Z.action==="stop")this.trackerAbortInFlight=!0,this.conversation.appendMessage({role:"user",content:[{type:"text",text:Z.message}]}),this.activeRuntime?.abort(Z.reason??Z.message)})}buildLegacyResult($){let{runResult:Z,thrownError:Q,startedAt:J,endedAt:W}=$,X=W.getTime()-J.getTime(),Y=Q?"error":Bf(Z),j=(Z?.status==="failed"?Z.error?.message:void 0)||Z?.outputText||"",V=Z?{inputTokens:Z.usage.inputTokens,outputTokens:Z.usage.outputTokens,cacheReadTokens:Z.usage.cacheReadTokens>0?Z.usage.cacheReadTokens:void 0,cacheWriteTokens:Z.usage.cacheWriteTokens>0?Z.usage.cacheWriteTokens:void 0,totalCost:Z.usage.totalCost}:this.currentRunUsage,B=Z?U6(Z.messages):this.conversation.getMessages(),H=iG(this.config);if(Q)throw Q;return{text:j,usage:V,messages:B,toolCalls:this.currentRunToolCalls,iterations:Z?.iterations??0,finishReason:Y,model:{id:this.config.modelId,provider:this.config.providerId,info:H},startedAt:J,endedAt:W,durationMs:X}}}function Vf($,Z,Q,J){if(!$)return;if(Z==="debug"){$.debug(Q,J);return}if(Z==="error"&&$.error){$.error(Q,J);return}let W=Z==="warn"?"warn":Z==="error"?"error":"info";$.log(Q,{...J,severity:W})}function Bf($){if(!$)return"error";switch($.status){case"completed":return"completed";case"aborted":return"aborted";case"failed":return"error"}}async function Hf($,Z,Q,J){let{buildInitialUserContent:W}=await Promise.resolve().then(() => dG);return W($,Z,Q,J)}function iG($){if($.knownModels?.[$.modelId])return $.knownModels[$.modelId];let Z=gW($);if(Z?.[$.modelId])return Z[$.modelId];return}import{buildClineSystemPrompt as aG}from"@cline/shared";function nG($,Z){let Q=$.trim();if(Z.providerId.toLowerCase()!=="cline")return Q;return aG({ide:Z.clineIdeName?.trim()||"Terminal",workspaceRoot:Z.cwd?.trim()||"/",providerId:Z.providerId,rules:`# Team Teammate Role
239
239
  ${Q}`,platform:Z.clinePlatform,metadata:Z.workspaceMetadata})}function oG($,Z){let Q=$.trim();if(Z.providerId.toLowerCase()!=="cline")return Q;return aG({ide:Z.clineIdeName||"Terminal",workspaceRoot:Z.cwd?.trim()||"/",providerId:Z.providerId,overridePrompt:Q,metadata:Z.workspaceMetadata,platform:Z.clinePlatform})}function o$($){let Z={...$};return{getRuntimeConfig:()=>Z,getConnectionConfig:()=>({providerId:Z.providerId,modelId:Z.modelId,apiKey:Z.apiKey,baseUrl:Z.baseUrl,headers:Z.headers,onAuthError:Z.onAuthError,providerConfig:Z.providerConfig,knownModels:Z.knownModels,thinking:Z.thinking,reasoningEffort:Z.reasoningEffort,thinkingBudgetTokens:Z.thinkingBudgetTokens,maxTokensPerTurn:Z.maxTokensPerTurn,temperature:Z.temperature}),updateConnectionDefaults:(Q)=>{Z={...Z,...Q}}}}function r2($){let Z=$.configProvider.getRuntimeConfig(),Q=$.kind==="teammate"?nG($.prompt,Z):oG($.prompt,Z);return{...$.configProvider.getConnectionConfig(),systemPrompt:Q,tools:$.tools,maxIterations:$.maxIterations??Z.maxIterations,parentAgentId:$.parentAgentId,abortSignal:$.abortSignal,onEvent:$.onEvent,hooks:Z.hooks,extensions:Z.extensions,hookErrorMode:$.hookErrorMode,toolPolicies:$.toolPolicies,requestToolApproval:$.requestToolApproval,logger:Z.logger,role:$.role}}function s$($){let Z=r2($),Q=new n$(Z);if(Z.onEvent)Q.subscribeEvents(Z.onEvent);return Q}var Ff=sW.object({systemPrompt:sW.string().describe("System prompt defining the sub-agent's behavior"),task:sW.string().describe("Task for the sub-agent to complete")});function t$($){return Kf({name:"spawn_agent",description:"Spawn a sub-agent with a custom system prompt for specialized tasks. Use when delegating work that benefits from focused expertise.",inputSchema:Gf(Ff),execute:async(Z,Q)=>{let J=$.createSubAgentTools?await $.createSubAgentTools(Z,Q):$.subAgentTools??[],W=s$({kind:"subagent",prompt:Z.systemPrompt,configProvider:$.configProvider,tools:J,maxIterations:$.defaultMaxIterations,parentAgentId:Q.agentId,abortSignal:Q.signal,onEvent:$.onSubAgentEvent,hookErrorMode:$.hookErrorMode,toolPolicies:$.toolPolicies,requestToolApproval:$.requestToolApproval}),X=W.getAgentId(),Y=W.getConversationId(),j=Q.agentId;if($.onSubAgentStart)try{await $.onSubAgentStart({subAgentId:X,conversationId:Y,parentAgentId:j,input:Z})}catch{}try{let V=await W.run(Z.task),B={text:V.text,iterations:V.iterations,finishReason:V.finishReason,usage:{inputTokens:V.usage.inputTokens,outputTokens:V.usage.outputTokens}};if($.onSubAgentEnd)try{await $.onSubAgentEnd({subAgentId:X,conversationId:Y,parentAgentId:j,input:Z,result:B,agentResult:V})}catch{}return B}catch(V){if($.onSubAgentEnd)try{await $.onSubAgentEnd({subAgentId:X,conversationId:Y,parentAgentId:j,input:Z,error:V instanceof Error?V:Error(String(V))})}catch{}throw V}},timeoutMs:300000,retryable:!1})}import{createTool as M0,TEAM_AWAIT_TIMEOUT_MS as Uf,TEAM_RUN_MESSAGE_PREVIEW_LIMIT as Df,TEAM_RUN_TEXT_PREVIEW_LIMIT as Lf,TEAM_TASK_IGNORED_FIELDS_BY_ACTION as _f,TeamAttachOutcomeFragmentInputSchema as sG,TeamAwaitRunsInputSchema as tG,TeamBroadcastInputSchema as eG,TeamBroadcastToolResultSchema as zf,TeamCancelRunInputSchema as $F,TeamCancelRunToolResultSchema as Of,TeamCleanupInputSchema as ZF,TeamCleanupToolResultSchema as Af,TeamCreateOutcomeInputSchema as QF,TeamCreateOutcomeToolResultSchema as qf,TeamFinalizeOutcomeInputSchema as JF,TeamFinalizeOutcomeToolResultSchema as Nf,TeamListOutcomesInputSchema as WF,TeamListRunsInputSchema as XF,TeamMailboxMessageToolResultSchema as Tf,TeamMissionLogInputSchema as YF,TeamMissionLogToolResultSchema as Mf,TeamOutcomeFragmentToolResultSchema as jF,TeamOutcomeToolResultSchema as Ef,TeamReadMailboxInputSchema as VF,TeamReviewOutcomeFragmentInputSchema as BF,TeamRunTaskInputSchema as HF,TeamRunTaskToolResultSchema as tW,TeamRunToolSummarySchema as eW,TeamSendMessageInputSchema as KF,TeamSendMessageToolResultSchema as Rf,TeamShutdownTeammateInputSchema as GF,TeamSimpleAgentStatusToolResultSchema as FF,TeamSpawnTeammateInputSchema as UF,TeamStatusInputSchema as DF,TeamStatusToolResultSchema as ff,TeamTaskInputSchema as LF,TeamTaskToolResultSchema as S5,validateWithZod as m,zodToJsonSchema as E0}from"@cline/shared";function _F($,Z){let Q=$.replace(/\s+/g," ").trim();if(Q.length<=Z)return Q;return`${Q.slice(0,Math.max(0,Z-3)).trimEnd()}...`}function a2($,Z){if($===void 0)throw Error(`Missing required field: ${Z}`);return $}function Cf($){let Z=$.result;if(!Z)return;return{textPreview:_F(Z.text,Lf),iterations:Z.iterations,finishReason:Z.finishReason,durationMs:Z.durationMs,usage:{inputTokens:Z.usage.inputTokens,outputTokens:Z.usage.outputTokens,cacheReadTokens:Z.usage.cacheReadTokens,cacheWriteTokens:Z.usage.cacheWriteTokens,totalCost:Z.usage.totalCost}}}function Z3($){return $?.toISOString()}function $X($){return{id:$.id,agentId:$.agentId,taskId:$.taskId,status:$.status,messagePreview:_F($.message,Df),priority:$.priority,retryCount:$.retryCount,maxRetries:$.maxRetries,nextAttemptAt:Z3($.nextAttemptAt),continueConversation:$.continueConversation,startedAt:$.startedAt.toISOString(),endedAt:Z3($.endedAt),leaseOwner:$.leaseOwner,heartbeatAt:Z3($.heartbeatAt),lastProgressAt:Z3($.lastProgressAt),lastProgressMessage:$.lastProgressMessage,currentActivity:$.currentActivity,error:$.error,resultSummary:Cf($)}}function Pf($){if($.status==="failed")throw Error(`Run "${$.id}" failed${$.error?`: ${$.error}`:""}`);if($.status==="cancelled")throw Error(`Run "${$.id}" was cancelled${$.error?`: ${$.error}`:""}`);if($.status==="interrupted")throw Error(`Run "${$.id}" was interrupted${$.error?`: ${$.error}`:""}`)}var L6=["team_spawn_teammate","team_shutdown_teammate","team_status","team_task","team_run_task","team_cancel_run","team_list_runs","team_await_runs","team_send_message","team_broadcast","team_read_mailbox","team_mission_log","team_cleanup","team_create_outcome","team_attach_outcome_fragment","team_review_outcome_fragment","team_finalize_outcome","team_list_outcomes"];function zF($){let Z=[];if($.createBaseTools)Z.push(...$.createBaseTools());Z.push(...n2({runtime:$.runtime,requesterId:$.spec.agentId,teammateConfigProvider:$.teammateConfigProvider,createBaseTools:$.createBaseTools,allowSpawn:!1,includeSpawnTool:!1})),$.runtime.spawnTeammate({agentId:$.spec.agentId,config:r2({kind:"teammate",prompt:$.spec.rolePrompt,role:$.spec.rolePrompt,configProvider:$.teammateConfigProvider,tools:Z,maxIterations:$.spec.maxIterations,cwd:$.teammateConfigProvider.getRuntimeConfig().cwd})})}function _6($){let Z=$.leadAgentId??"lead",Q=$.restoredFromPersistence===!0,J=n2({runtime:$.runtime,requesterId:Z,teammateConfigProvider:$.teammateConfigProvider,createBaseTools:$.createBaseTools,allowSpawn:!0,includeSpawnTool:$.includeLeadSpawnTool,includeManagementTools:$.includeLeadManagementTools,onLeadToolsUnlocked:$.onLeadToolsUnlocked}),W=[];for(let X of $.restoredTeammates??[]){if($.runtime.isTeammateActive(X.agentId))continue;zF({runtime:$.runtime,requesterId:Z,teammateConfigProvider:$.teammateConfigProvider,createBaseTools:$.createBaseTools,spec:X}),W.push(X.agentId)}return{tools:J,restoredFromPersistence:Q,restoredTeammates:W}}function n2($){let Z=$.allowSpawn??!0,Q=$.includeSpawnTool??!0,J=$.includeManagementTools??!0,W=[];if(Q)W.push(M0({name:"team_spawn_teammate",description:"Spawn a teammate with a required agentId and rolePrompt.",inputSchema:E0(UF),execute:async(Y)=>{let j=m(UF,Y);if($.runtime.getMemberRole($.requesterId)!=="lead")throw Error("Only the lead agent can manage teammates.");if(!Z)throw Error("Spawning teammates is disabled in this context.");let V={agentId:j.agentId,rolePrompt:j.rolePrompt};if(zF({runtime:$.runtime,requesterId:$.requesterId,teammateConfigProvider:$.teammateConfigProvider,createBaseTools:$.createBaseTools,spec:V}),!J)$.onLeadToolsUnlocked?.(n2({...$,includeSpawnTool:!1,includeManagementTools:!0,onLeadToolsUnlocked:void 0}));return m(FF,{agentId:j.agentId,status:"spawned"})}}));if(!J)return W;W.push(M0({name:"team_shutdown_teammate",description:"Shutdown a teammate by agentId.",inputSchema:E0(GF),execute:async(Y)=>{let j=m(GF,Y);if($.runtime.getMemberRole($.requesterId)!=="lead")throw Error("Only the lead agent can manage teammates.");return $.runtime.shutdownTeammate(j.agentId,j.reason),m(FF,{agentId:j.agentId,status:"stopped"})}})),W.push(M0({name:"team_status",description:"Return a snapshot of team members, task counts, mailbox, and mission log stats.",inputSchema:E0(DF),execute:async(Y)=>{return m(DF,Y),m(ff,$.runtime.getSnapshot())}})),W.push(M0({name:"team_task",description:"Manage shared team tasks with action-specific payloads. create requires title and description, with optional dependsOn and assignee. list accepts optional status, assignee. claim requires taskId. complete requires taskId and summary. block requires taskId and reason. Do not include fields from other actions.",inputSchema:E0(LF),execute:async(Y)=>{let j=m(LF,Y);switch(j.action){case"create":{let V=new Set(_f.create??[]),B=Object.entries(Y).filter(([K,G])=>V.has(K)&&G!=null).map(([K])=>K),H=$.runtime.createTask({title:a2(j.title,"title"),description:a2(j.description,"description"),dependsOn:j.dependsOn,assignee:j.assignee,createdBy:$.requesterId});return m(S5,{action:"create",taskId:H.id,status:H.status,...B.length>0?{ignoredFields:B,note:`Ignored fields for action=create: ${B.join(", ")}`}:{}})}case"list":return m(S5,{action:"list",tasks:$.runtime.listTaskItems({status:j.status,assignee:j.assignee})});case"claim":{let V=$.runtime.claimTask(a2(j.taskId,"taskId"),$.requesterId);return m(S5,{action:"claim",taskId:V.id,status:V.status,nextStep:"Task is now in_progress. Execute the work using team_run_task or your own tools, then call team_task with action=complete when done."})}case"complete":{let V=$.runtime.completeTask(a2(j.taskId,"taskId"),$.requesterId,a2(j.summary,"summary"));return m(S5,{action:"complete",taskId:V.id,status:V.status})}case"block":{let V=$.runtime.blockTask(a2(j.taskId,"taskId"),$.requesterId,a2(j.reason,"reason"));return m(S5,{action:"block",taskId:V.id,status:V.status})}}}}));let X=new Map;return W.push(M0({name:"team_run_task",description:"Route a delegated task to a teammate. Choose sync (wait) or async (run in background).",inputSchema:E0(HF),execute:async(Y)=>{let j=m(HF,Y);if(j.runMode==="async"){let H=$.runtime.startTeammateRun(j.agentId,j.task,{taskId:j.taskId||void 0,fromAgentId:$.requesterId,continueConversation:j.continueConversation||void 0});return m(tW,{agentId:j.agentId,mode:"async",status:"queued",dispatched:!0,message:`Task dispatched to ${j.agentId} and queued as ${H.id}.`,runId:H.id})}let V=X.get(j.agentId);if(V){let H=await V;return m(tW,{...H,status:"joined",deduped:!0,message:`Task for ${j.agentId} was already dispatched in this tool batch; joined the existing in-flight run.`})}let B=$.runtime.routeToTeammate(j.agentId,j.task,{taskId:j.taskId||void 0,fromAgentId:$.requesterId,continueConversation:j.continueConversation||void 0}).then((H)=>m(tW,{agentId:j.agentId,mode:"sync",status:"running",dispatched:!0,message:`Task dispatched to ${j.agentId} and completed in sync mode.`,text:H.text,iterations:H.iterations})).finally(()=>{X.delete(j.agentId)});return X.set(j.agentId,B),await B}})),W.push(M0({name:"team_cancel_run",description:"Cancel one async teammate run.",inputSchema:E0($F),execute:async(Y)=>{let j=m($F,Y),V=$.runtime.cancelRun(j.runId,j.reason);return m(Of,{runId:V.id,status:V.status})}})),W.push(M0({name:"team_list_runs",description:"List teammate runs started with team_run_task in async mode, including live activity/progress fields when available.",inputSchema:E0(XF),execute:async(Y)=>m(eW.array(),$.runtime.listRuns(m(XF,Y)).map($X))})),W.push(M0({name:"team_await_runs",description:"Wait for async teammate runs. Provide runId to wait for one run, or omit it to wait for all active async runs. Uses a long timeout for legitimate teammate work.",inputSchema:E0(tG),timeoutMs:Uf,execute:async(Y)=>{let j=m(tG,Y);if(j.runId){let H=await $.runtime.awaitRun(j.runId);return Pf(H),m(eW,$X(H))}let V=await $.runtime.awaitAllRuns(),B=V.filter((H)=>["failed","cancelled","interrupted"].includes(H.status));if(B.length>0){let H=B.map((K)=>`${K.id}:${K.status}${K.error?`(${K.error})`:""}`).join(", ");throw Error(`One or more runs did not complete successfully: ${H}`)}return m(eW.array(),V.map($X))}})),W.push(M0({name:"team_send_message",description:"Send a mailbox message to a specific teammate.",inputSchema:E0(KF),execute:async(Y)=>{let j=m(KF,Y),V=$.runtime.sendMessage($.requesterId,j.toAgentId,j.subject,j.body,j.taskId??void 0);return m(Rf,{id:V.id,toAgentId:V.toAgentId})}})),W.push(M0({name:"team_broadcast",description:"Broadcast a message to all teammates.",inputSchema:E0(eG),execute:async(Y)=>{let j=m(eG,Y),V=$.runtime.broadcast($.requesterId,j.subject,j.body,{taskId:j.taskId??void 0});return m(zf,{delivered:V.length})}})),W.push(M0({name:"team_read_mailbox",description:"Read the current agent mailbox.",inputSchema:E0(VF),execute:async(Y)=>{let j=m(VF,Y);return m(Tf.array(),$.runtime.listMailbox($.requesterId,{unreadOnly:j.unreadOnly,markRead:!0}))}})),W.push(M0({name:"team_mission_log",description:"Append a mission log update for your team.",inputSchema:E0(YF),execute:async(Y)=>{let j=m(YF,Y),V=$.runtime.appendMissionLog({agentId:$.requesterId,taskId:j.taskId||void 0,kind:j.kind,summary:j.summary,evidence:j.evidence?.length?j.evidence:void 0,nextAction:j.nextAction||void 0});return m(Mf,{id:V.id})}})),W.push(M0({name:"team_cleanup",description:"Clean up the team runtime. Fails if teammates are still running.",inputSchema:E0(ZF),execute:async(Y)=>{if(m(ZF,Y),$.runtime.getMemberRole($.requesterId)!=="lead")throw Error("Only the lead agent can run cleanup.");return $.runtime.cleanup(),m(Af,{status:"cleaned"})}})),W.push(M0({name:"team_create_outcome",description:"Create a converged team outcome.",inputSchema:E0(QF),execute:async(Y)=>{let j=m(QF,Y),V=$.runtime.createOutcome({title:j.title,requiredSections:j.requiredSections,createdBy:$.requesterId});return m(qf,{outcomeId:V.id,status:V.status,requiredSections:V.requiredSections})}})),W.push(M0({name:"team_attach_outcome_fragment",description:"Attach a fragment to an outcome section.",inputSchema:E0(sG),execute:async(Y)=>{let j=m(sG,Y),V=$.runtime.attachOutcomeFragment({outcomeId:j.outcomeId,section:j.section,sourceAgentId:$.requesterId,sourceRunId:j.sourceRunId||void 0,content:j.content});return m(jF,{fragmentId:V.id,status:V.status})}})),W.push(M0({name:"team_review_outcome_fragment",description:"Review one outcome fragment.",inputSchema:E0(BF),execute:async(Y)=>{let j=m(BF,Y),V=$.runtime.reviewOutcomeFragment({fragmentId:j.fragmentId,reviewedBy:$.requesterId,approved:j.approved});return m(jF,{fragmentId:V.id,status:V.status})}})),W.push(M0({name:"team_finalize_outcome",description:"Finalize one outcome.",inputSchema:E0(JF),execute:async(Y)=>{let j=m(JF,Y),V=$.runtime.finalizeOutcome(j.outcomeId);return m(Nf,{outcomeId:V.id,status:V.status})}})),W.push(M0({name:"team_list_outcomes",description:"List team outcomes.",inputSchema:E0(WF),execute:async(Y)=>{return m(WF,Y),m(Ef.array(),$.runtime.listOutcomes())}})),W}function Q3($){return{...$,tasks:$.tasks.map((Z)=>({...Z,createdAt:new Date(Z.createdAt),updatedAt:new Date(Z.updatedAt)})),mailbox:$.mailbox.map((Z)=>({...Z,sentAt:new Date(Z.sentAt),readAt:Z.readAt?new Date(Z.readAt):void 0})),missionLog:$.missionLog.map((Z)=>({...Z,ts:new Date(Z.ts)})),runs:($.runs??[]).map((Z)=>({...Z,startedAt:new Date(Z.startedAt),endedAt:Z.endedAt?new Date(Z.endedAt):void 0,nextAttemptAt:Z.nextAttemptAt?new Date(Z.nextAttemptAt):void 0,heartbeatAt:Z.heartbeatAt?new Date(Z.heartbeatAt):void 0})),outcomes:($.outcomes??[]).map((Z)=>({...Z,createdAt:new Date(Z.createdAt),finalizedAt:Z.finalizedAt?new Date(Z.finalizedAt):void 0})),outcomeFragments:($.outcomeFragments??[]).map((Z)=>({...Z,createdAt:new Date(Z.createdAt),reviewedAt:Z.reviewedAt?new Date(Z.reviewedAt):void 0}))}}function OF($){return $.toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")}var wf=[{id:"read_files",description:"Read the content of text or image files at the provided absolute paths, or return only an inclusive one-based line range when start_line/end_line are provided. Long files are windowed; page with start_line/end_line.",headlessToolNames:["read_files"]},{id:"search_codebase",description:"Perform regex pattern searches across the codebase for code patterns, definitions, imports, and other text matches.",headlessToolNames:["search_codebase"]},{id:"run_commands",description:"Run shell commands from the root of the workspace for listing files, checking git status, builds, tests, and similar tasks.",headlessToolNames:["run_commands"]},{id:"editor",description:"Make controlled filesystem edits on text files with create, replace, and insert operations.",headlessToolNames:["editor"]},{id:"fetch_web_content",description:"Fetch URL content and analyze it with a prompt describing what to extract.",headlessToolNames:["fetch_web_content"]},{id:"skills",description:"Execute a configured skill within the main conversation when a matching skill exists for the task.",headlessToolNames:["skills"]},{id:"ask_question",description:"Ask the user a single clarifying question with 2-5 selectable options.",headlessToolNames:["ask_question"]},{id:"spawn_agent",description:t$({configProvider:{}}).description,headlessToolNames:["spawn_agent"]},{id:"teams",description:"Enable team collaboration tools for teammate management, task coordination, mailbox messaging, mission logs, and outcomes.",headlessToolNames:[...L6]}],Sf={read_files:"enableReadFiles",search_codebase:"enableSearch",run_commands:"enableBash",fetch_web_content:"enableWebFetch",apply_patch:"enableApplyPatch",editor:"enableEditor",skills:"enableSkills",ask_question:"enableAskQuestion"};function bf($){return $==="plan"||$==="yolo"?$:"act"}function qF($){let Z=bf($.mode),Q=V1[D$({mode:Z})],J=F6($.providerId??"",$.modelId??"",Z,G6);return{mode:Z,flags:{...Q,...J,...typeof $.enableSpawnAgent==="boolean"?{enableSpawnAgent:$.enableSpawnAgent}:{},...typeof $.enableAgentTeams==="boolean"?{enableAgentTeams:$.enableAgentTeams}:{}}}}function AF($,Z){if(Z.disabledToolIds?.has($))return!1;let{flags:Q}=qF(Z);if($==="spawn_agent")return Q.enableSpawnAgent===!0;if($==="teams")return Q.enableAgentTeams===!0;if($==="editor")return Q.enableEditor===!0||Q.enableApplyPatch===!0;let J=Sf[$];return J?Q[J]===!0:!1}function kf($,Z){if($.id==="editor"){let{flags:Q}=qF(Z),J=Q.enableApplyPatch===!0&&Q.enableEditor!==!0;return{...$,defaultEnabled:AF($.id,Z),headlessToolNames:[J?"apply_patch":"editor"]}}return{...$,defaultEnabled:AF($.id,Z)}}function o2($={}){return wf.map((Z)=>kf(Z,$))}function J3($={}){return o2($).filter((Z)=>Z.defaultEnabled).map((Z)=>Z.id)}function W3($){if(!$.enabled)return new Set;let Z=o2($.availabilityContext),Q=new Set(Z.map((J)=>J.id));if(!$.allowlist||$.allowlist.length===0)return new Set(Z.filter((J)=>J.defaultEnabled).map((J)=>J.id));for(let J of $.allowlist)if(!Q.has(J))throw Error(`Unknown tool "${J}". Available tools: ${Z.map((W)=>W.id).join(", ")}`);return new Set($.allowlist)}function b5($,Z={}){return o2(Z).filter((Q)=>$.has(Q.id)).flatMap((Q)=>Q.headlessToolNames)}function X3($,Z={}){return b5($,Z)}import{getDefaultShell as yf}from"@cline/shared";function s2($={}){let{executorOptions:Z={},executors:Q,...J}=$,W=J.shell??Z.bash?.shell??yf(process.platform),X={...Z,bash:{...Z.bash,shell:W}},Y={...K6(X),...Q??{}};return i$({...J,shell:W,executors:Y})}import{mkdirSync as mf,writeFileSync as cf}from"node:fs";import{dirname as uf}from"node:path";import{normalizeUserInput as pf,stripModeNotices as df}from"@cline/shared";import{nanoid as lf}from"nanoid";var EF={};f(EF,{isTerminalSessionStatus:()=>MF,isNonTerminalSessionStatus:()=>q0,SessionSource:()=>$0,SESSION_STATUSES:()=>k5,NON_TERMINAL_SESSION_STATUSES:()=>TF});import{SESSION_STATUS_VALUES as hf}from"@cline/shared";var k5=hf,TF=["idle","running","pending"];function MF($){return!TF.includes($)}function q0($){return!MF($)}var $0={CORE:"core",CLI:"cli",SUBAGENT:"subagent",DESKTOP:"desktop",KANBAN:"kanban",API:"api",WEB:"web",VSCODE:"vscode",ENTERPRISE:"enterprise",IDE:"ide",JETBRAINS:"jetbrains",NEOVIM:"neovim",UNKNOWN:"unknown"};var RF="sessionHistoryOrigin";function z6($){return typeof $==="string"&&$.trim()?$.trim():void 0}function Y3($){let Z=[$?.name,$?.platform].filter((Q)=>typeof Q==="string").join(" ").toLowerCase();if(!Z)return;if(Z.includes("vscode")||Z.includes("visual studio code"))return $0.VSCODE;if(Z.includes("jetbrains")||Z.includes("webstorm")||Z.includes("intellij")||Z.includes("pycharm")||Z.includes("goland")||Z.includes("clion")||Z.includes("rider")||Z.includes("android studio"))return $0.JETBRAINS;if(Z.includes("neovim"))return $0.NEOVIM;if(Z.includes("kanban"))return $0.KANBAN;if(Z.includes("desktop"))return $0.DESKTOP;if(Z.includes("cline-platform"))return $0.WEB;if(Z.includes("cline-cli")||Z.includes("cline-acp"))return $0.CLI;if(Z.includes("cline-sdk")||Z.includes("cline-core"))return $0.CORE;return}function O6($){let Z=$?.[RF];if(!Z||typeof Z!=="object"||Array.isArray(Z))return;let Q=Z,J=z6(Q.mode);if(!J)return;let W=z6(Q.version),X=z6(Q.trigger);return{mode:J,...W?{version:W}:{},...X?{trigger:X}:{}}}function g0($,Z){let Q=O6($),J=z6(Z.mode)??Q?.mode??"user",W=z6(Z.version)??Q?.version,X=z6(Z.trigger)??Q?.trigger;return{...$??{},[RF]:{mode:J,...W?{version:W}:{},...X?{trigger:X}:{}}}}var fF={};f(fF,{sanitizeSessionToken:()=>t2,parseTeamTaskSubSessionId:()=>q6,parseSubSessionId:()=>I5,makeTeamTaskSubSessionId:()=>y5,makeSubSessionId:()=>A6,deriveSubsessionStatus:()=>x5});import{nanoid as vf}from"nanoid";function t2($){return $.replace(/[^a-zA-Z0-9._-]+/g,"_")}function A6($,Z){let Q=t2($),J=t2(Z),W=`${Q}__${J}`;return W.length>180?W.slice(0,180):W}function y5($,Z){let Q=t2($),J=t2(Z);return`${Q}__teamtask__${J}__${vf(6)}`}function q6($){let Q=$.indexOf("__teamtask__");if(Q<=0)return null;let J=$.slice(0,Q),W=$.slice(Q+12),X=W.lastIndexOf("__");if(X<=0)return null;let Y=W.slice(0,X),j=W.slice(X+2);if(!J||!Y||!j)return null;return{rootSessionId:J,agentId:Y,teamTaskId:j}}function I5($){if(q6($))return null;let Z="__",Q=$.indexOf(Z);if(Q<=0)return null;let J=$.slice(0,Q),W=$.slice(Q+Z.length);if(!J||!W)return null;return{rootSessionId:J,agentId:W}}function x5($){switch($.hookName){case"agent_end":return"completed";case"agent_error":return"failed";case"session_shutdown":{let Z=String($.reason??"").toLowerCase();if(Z.includes("cancel")||Z.includes("abort")||Z.includes("interrupt"))return"cancelled";if(Z.includes("fail")||Z.includes("error"))return"failed";return"completed"}default:return"running"}}import{z as V0}from"zod";var gf=V0.enum(k5),e0=V0.object({version:V0.literal(1),session_id:V0.string().min(1),source:V0.string().min(1),pid:V0.number().int(),started_at:V0.string().min(1),ended_at:V0.string().min(1).optional(),exit_code:V0.number().int().nullable().optional(),status:gf,interactive:V0.boolean(),provider:V0.string().min(1),model:V0.string().min(1),cwd:V0.string().min(1),workspace_root:V0.string().min(1),team_name:V0.string().min(1).optional(),enable_tools:V0.boolean(),enable_spawn:V0.boolean(),enable_teams:V0.boolean(),prompt:V0.string().optional(),metadata:V0.record(V0.string(),V0.unknown()).optional(),messages_path:V0.string().min(1).optional(),compaction_path:V0.string().min(1).optional()});function CF($){if(!$)return!1;return Object.values($).some((Z)=>typeof Z==="function")}function QX($,Z){let Q=[...$??[],...Z??[]];if(Q.length===0)return;let J=[],W=new Set;for(let X of Q){if(W.has(X.name))continue;W.add(X.name),J.push(X)}return J}function PF($){return JSON.stringify($,(Z,Q)=>{if(Q instanceof Error)return{name:Q.name,message:Q.message,stack:Q.stack};return Q})}function _$($){return typeof $==="string"&&$.trim()?$.trim():void 0}function ZX($,Z){let Q={...$};Q.id=_$(Q.id)??lf();let J=Q.modelInfo&&typeof Q.modelInfo==="object"?{...Q.modelInfo}:void 0,W={id:_$(J?.id)??_$(Q.modelId)??_$(Z?.id),provider:_$(J?.provider)??_$(Q.providerId)??_$(Z?.provider),family:_$(J?.family)??_$(Z?.family)};if(delete Q.providerId,delete Q.modelId,W.id&&W.provider)Q.modelInfo={id:W.id,provider:W.provider,...W.family?{family:W.family}:{}};else delete Q.modelInfo;return Q}function j3($){return $.map((Z)=>ZX(Z))}function V3($,Z,Q=[]){let J=$.map((V,B)=>{let H=Q[B],G=H?.role===V.role&&JSON.stringify(H.content)===JSON.stringify(V.content)?{...H,...V}:{...V};return ZX(G)}),W=Q.length,X=[];for(let V=W;V<J.length;V+=1)if(J[V]?.role==="assistant")X.push(V);if(X.length===0){let V=[...J].reverse().findIndex((B)=>B.role==="assistant");if(V===-1)return J;X.push(J.length-1-V)}let Y=X[X.length-1],j=X.some((V)=>J[V]?.metrics);for(let V of X){let B=J[V],H=B.metrics;if(!H&&V===Y&&!j){let K=Z.usage;H={inputTokens:K.inputTokens,outputTokens:K.outputTokens,cacheReadTokens:K.cacheReadTokens??0,cacheWriteTokens:K.cacheWriteTokens??0,cost:K.totalCost}}J[V]={...ZX(B,{id:Z.model.id,provider:Z.model.provider,family:Z.model.info?.family}),...H?{metrics:H}:{},ts:B.ts??Z.endedAt.getTime()}}return J}function h5($){return{sessionId:$.sessionId,source:$.source,pid:$.pid,startedAt:$.startedAt,endedAt:$.endedAt??null,exitCode:$.exitCode??null,status:$.status,interactive:$.interactive,provider:$.provider,model:$.model,cwd:$.cwd,workspaceRoot:$.workspaceRoot,teamName:$.teamName??void 0,enableTools:$.enableTools,enableSpawn:$.enableSpawn,enableTeams:$.enableTeams,parentSessionId:$.parentSessionId??void 0,parentAgentId:$.parentAgentId??void 0,agentId:$.agentId??void 0,conversationId:$.conversationId??void 0,isSubagent:$.isSubagent,prompt:$.prompt??void 0,metadata:$.metadata??void 0,messagesPath:$.messagesPath??void 0,updatedAt:$.updatedAt}}var rf=120;function e2($){let Z=$?.trim();return Z?Z.slice(0,rf):void 0}function JX($){let Z=df(pf($??"")).trim();if(!Z)return;return e2(Z.split(`
240
240
  `)[0]?.trim())}function e$($){if(!$)return;let Z={...$},Q=e2(typeof Z.title==="string"?Z.title:void 0);if(Q)Z.title=Q;else delete Z.title;return Object.keys(Z).length>0?Z:void 0}function v5($){let Z=e$($.metadata)??{},Q=$.title!==void 0?e2($.title):JX($.prompt);if(Q)Z.title=Q;return Object.keys(Z).length>0?Z:void 0}function WX($){let Z=O6($.metadata),Q={source:$.source,mode:Z?.mode??"user",sessionId:$.sessionId,...$.parentSessionId?{parentThreadId:$.parentSessionId}:{},...$.agentId?{subagent:$.agentId}:{},...Z?.version?{version:Z.version}:{},...Z?.trigger?{trigger:Z.trigger}:{}};if(q6($.sessionId))return{agent:"teammate",sessionId:$.sessionId,taskType:"team",origin:Q};if(I5($.sessionId))return{agent:"subagent",sessionId:$.sessionId,taskType:"subagent_task",origin:Q};return{agent:"lead",sessionId:$.sessionId,origin:Q}}function XX($){return{version:1,updated_at:$.updatedAt,agent:$.context.agent,sessionId:$.context.sessionId,...$.context.taskType?{taskType:$.context.taskType}:{},origin:$.context.origin,messages:j3($.messages),...$.systemPrompt?{system_prompt:$.systemPrompt}:{}}}function wF($,Z,Q){mf(uf($),{recursive:!0}),cf($,`${JSON.stringify(XX({updatedAt:Z,context:Q,messages:[]}),null,2)}
241
- `,"utf8")}function SF($,Z){return e0.parse({version:1,session_id:$.sessionId,source:$.source,pid:$.pid,started_at:$.startedAt,ended_at:Z?.endedAt??$.endedAt??void 0,exit_code:Z?.exitCode??$.exitCode??void 0,status:Z?.status??$.status,interactive:$.interactive,provider:$.provider,model:$.model,cwd:$.cwd,workspace_root:$.workspaceRoot,team_name:$.teamName??void 0,enable_tools:$.enableTools,enable_spawn:$.enableSpawn,enable_teams:$.enableTeams,prompt:$.prompt??void 0,metadata:Z?.metadata??$.metadata??void 0,messages_path:$.messagesPath??void 0})}async function bF($,Z,Q){let J=0;while(!0){let W=await $();if(W===void 0)return{updated:!1};let X=await Z(W);if(typeof X==="object"&&X!==null&&"updated"in X&&X.updated===!1){if(J+=1,J>=Q)return X;continue}return X}}z0();var kF={};f(kF,{summarizeUsageFromMessages:()=>T6,sumUsageTotals:()=>g5,getCurrentContextSize:()=>YX,createInitialAccumulatedUsage:()=>P0,accumulateUsageTotals:()=>R0});function P0(){return{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,totalCost:0}}function R0($,Z){return{inputTokens:$.inputTokens+Math.max(0,Z.inputTokens??0),outputTokens:$.outputTokens+Math.max(0,Z.outputTokens??0),cacheReadTokens:$.cacheReadTokens+Math.max(0,Z.cacheReadTokens??0),cacheWriteTokens:$.cacheWriteTokens+Math.max(0,Z.cacheWriteTokens??0),totalCost:$.totalCost+Math.max(0,Z.totalCost??0)}}function g5($){let Z=P0();for(let Q of $)Z=R0(Z,Q);return Z}function N6($){return typeof $==="number"&&Number.isFinite($)?$:0}function T6($){let Z=P0();for(let Q of $){let J=Q.metrics;if(!J)continue;Z=R0(Z,{inputTokens:N6(J.inputTokens),outputTokens:N6(J.outputTokens),cacheReadTokens:N6(J.cacheReadTokens),cacheWriteTokens:N6(J.cacheWriteTokens),totalCost:N6(J.cost)})}return Z}function YX($){for(let Z=$.length-1;Z>=0;Z-=1){let Q=$[Z];if(Q?.role!=="assistant")continue;let J=N6(Q.metrics?.inputTokens);return J>0?J:void 0}return}function af($){if(!$||typeof $!=="object")return;let Z=$,Q=Z.skill??Z.skill_name??Z.skillName;if(typeof Q!=="string")return;let J=Q.trim();return J.length>0?J:void 0}function jX($){if(!$||typeof $!=="object")return{};let Z=$;return{agentId:typeof Z.agentId==="string"?Z.agentId:void 0,conversationId:typeof Z.conversationId==="string"?Z.conversationId:void 0,parentAgentId:typeof Z.parentAgentId==="string"?Z.parentAgentId:void 0}}function z$($){let Z=$.agentId?.trim();if(!Z)return;let Q=$.parentAgentId?.trim()||void 0,J=$.teamRole,W="root";if(J==="teammate")W="team_teammate";else if(J==="lead")W="team_lead";else if(Q)W="subagent";return{agentId:Z,agentKind:W,conversationId:$.conversationId?.trim()||void 0,parentAgentId:Q,createdByAgentId:$.createdByAgentId?.trim()||Q||void 0,isSubagent:Boolean(Q),teamId:$.teamId?.trim()||void 0,teamName:$.teamName?.trim()||void 0,teamRole:J,teamAgentId:$.teamAgentId?.trim()||void 0}}function nf($){return{inputTokens:$.inputTokens,outputTokens:$.outputTokens,cacheWriteTokens:$.cacheWriteTokens,cacheReadTokens:$.cacheReadTokens,totalCost:$.cost}}function of($){let Z=$.cacheWriteTokens??0,Q=$.cacheReadTokens??0;return{tokensIn:Math.max(0,$.inputTokens-Q-Z),tokensOut:$.outputTokens,cacheWriteTokens:Z,cacheReadTokens:Q,totalCost:$.cost}}function sf($){let Z=$.isPrimaryAgentEvent?[$.overrides?.agentId,$.eventMetadata.agentId,$.overrides?.teamAgentId]:[$.overrides?.teamAgentId,$.overrides?.agentId,$.eventMetadata.agentId,$.eventMetadata.conversationId];for(let Q of Z){let J=Q?.trim();if(J)return J}return $.isPrimaryAgentEvent?"root":"unknown"}function B3($,Z,Q){let{sessionId:J,config:W,liveSession:X,emit:Y}=$,j=W.telemetry,V=X?.runtime.teamRuntime,B=Q?.isPrimaryAgentEvent??!0,H=jX(Z),K=z$({agentId:Q?.agentId??H.agentId,conversationId:Q?.conversationId??H.conversationId,parentAgentId:Q?.parentAgentId??H.parentAgentId,createdByAgentId:Q?.createdByAgentId,teamId:Q?.teamId??V?.getTeamId(),teamName:Q?.teamName??V?.getTeamName(),teamRole:Q?.teamRole,teamAgentId:Q?.teamAgentId});if(Z.type==="content_start"&&Z.contentType==="tool"&&Z.toolName==="skills"){let G=af(Z.input);if(G)J7(j,{ulid:J,skillName:G,skillSource:"project",skillsAvailableGlobal:0,skillsAvailableProject:0,provider:W.providerId,modelId:W.modelId,...K})}if(Z.type==="content_end"&&Z.contentType==="tool"){let G=Z.toolName??"unknown",F=!Z.error;if(n8(j,{ulid:J,tool:G,autoApproved:void 0,success:F,modelId:W.modelId,provider:W.providerId,...K}),!F&&(G==="editor"||G==="apply_patch"))W7(j,{ulid:J,modelId:W.modelId,provider:W.providerId,errorType:Z.error,...K})}if(Z.type==="usage"&&X?.turnUsageBaseline){let G=nf(Z);if(B){X.turnPrimaryUsage=R0(X.turnPrimaryUsage??P0(),G);let U=R0(X.turnUsageBaseline,X.turnPrimaryUsage);$.usageBySession.set(J,U),a8(j,{ulid:J,provider:W.providerId,model:W.modelId,source:"assistant",mode:W.mode,...K}),Z7(j,{ulid:J,...of(Z),provider:W.providerId,model:W.modelId,...K})}else{let U=sf({isPrimaryAgentEvent:B,overrides:Q,eventMetadata:H}),D=X.turnUsageByAgent??new Map;X.turnUsageByAgent=D,D.set(U,R0(D.get(U)??P0(),G))}let F=R0(X.turnPrimaryUsage??P0(),g5(X.turnUsageByAgent?.values()??[]));$.aggregateUsageBySession.set(J,R0(X.turnAggregateUsageBaseline??X.turnUsageBaseline,F))}if(Z.type==="iteration_end"&&B)$.persistMessages(J,X?.agent.getMessages()??[],X?.config.systemPrompt);Y({type:"agent_event",payload:{sessionId:J,event:Z,teamAgentId:Q?.teamAgentId,teamRole:Q!==void 0?Q.teamRole??(B?"lead":void 0):void 0}}),Y({type:"chunk",payload:{sessionId:J,stream:"agent",chunk:PF(Z),ts:Date.now()}})}function O$($){return $.workspaceRoot??$.cwd}import{resolveProviderRequestHeaders as _w}from"@cline/llms";import{hasRuntimeConfigExtension as zw}from"@cline/shared";var M6="0.0.73-nightly.1786590402";var E6={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:M6,repository:{type:"git",url:"https://github.com/cline/cline",directory:"sdk/packages/core"},type:"module",types:"./dist/index.d.ts",main:"./dist/index.js",private:!1,publishConfig:{access:"public"},exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js"},"./hub":{types:"./dist/hub/index.d.ts",import:"./dist/hub/index.js"},"./hub/daemon-entry":{types:"./dist/hub/daemon/entry.d.ts",import:"./dist/hub/daemon/entry.js"},"./telemetry":{types:"./dist/services/telemetry/index.d.ts",import:"./dist/services/telemetry/index.js"},"./services/feature-flags/posthog":{types:"./dist/services/feature-flags/posthog.d.ts",import:"./dist/services/feature-flags/posthog.js"}},scripts:{build:"bun run ./bun.mts && bun tsc -p tsconfig.build.json && bun run ./scripts/verify-runtime-build-id.ts",typecheck:"bun tsc -p tsconfig.dev.json --noEmit && bun run typecheck:smoke","typecheck:smoke":"bun tsc -p tsconfig.smoke.json --noEmit",test:"bun run test:unit && bun run test:e2e","test:live":"vitest run --config vitest.config.ts src/extensions/context/compaction.live.test.ts","test:compaction":"bun --conditions=development run scripts/compact-session.ts","test:unit":"vitest run --config vitest.config.ts","test:e2e":"vitest run --config vitest.e2e.config.ts","verify:routines":"zsh -lc 'bunx vitest run src/cron/schedule-service.test.ts --config vitest.config.ts'","test:watch":"vitest --config vitest.config.ts"},dependencies:{"@cline/agents":"workspace:*","@cline/shared":"workspace:*","@cline/llms":"workspace:*","@modelcontextprotocol/sdk":"^1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.214.0","@opentelemetry/exporter-logs-otlp-http":"^0.214.0","@opentelemetry/exporter-metrics-otlp-http":"^0.214.0","@opentelemetry/exporter-trace-otlp-http":"^0.214.0","@opentelemetry/resources":"^2.6.1","@opentelemetry/sdk-logs":"^0.214.0","@opentelemetry/sdk-metrics":"^2.6.1","@opentelemetry/sdk-trace-base":"^2.6.1","@opentelemetry/sdk-trace-node":"^2.6.1","@opentelemetry/semantic-conventions":"^1.40.0",jiti:"^2.7.0","node-machine-id":"^1.1.12",nanoid:"^5.1.7","simple-git":"3.36.0",ws:"^8.20.0",yaml:"^2.8.2",zod:"^4.3.6"},peerDependencies:{"posthog-node":"^5.8.0"},peerDependenciesMeta:{"posthog-node":{optional:!0}},devDependencies:{"@types/ws":"^8.18.1","posthog-node":"^5.8.0"},engines:{node:">=22"},files:["dist","!dist/**/*.d.ts.map"]};P1();import{existsSync as D3,readFileSync as mC,statSync as cC}from"node:fs";import{basename as uC,dirname as F3,join as L3,resolve as U3}from"node:path";import{discoverPluginModulePaths as pC,resolveConfiguredPluginModulePaths as JU,resolvePluginConfigSearchPaths as dC,SKILLS_CONFIG_DIRECTORY_NAME as lC}from"@cline/shared/storage";import{resolve as _C}from"node:path";import{normalizePluginManifest as zC}from"@cline/shared";import{existsSync as b0,readFileSync as f6}from"node:fs";import{builtinModules as tf,createRequire as KX}from"node:module";import{dirname as $2,extname as c5,isAbsolute as ef,resolve as t}from"node:path";import{fileURLToPath as xF}from"node:url";import{PLUGIN_FILE_EXTENSIONS as $C}from"@cline/shared";var hF=$2(xF(import.meta.url)),ZC=KX(import.meta.url),QC=t(hF,"..","..","..","..",".."),VX=XC(QC),JC=["@cline/sdk","@cline/agents","@cline/core","@cline/core/hub","@cline/core/hub/daemon-entry","@cline/core/telemetry","@cline/llms","@cline/llms/browser","@cline/shared","@cline/shared/automation","@cline/shared/browser","@cline/shared/storage","@cline/shared/db","@cline/shared/types"],GX=new Set(tf.flatMap(($)=>[$,$.replace(/^node:/,"")])),m5=new Set($C),WC=["development","node","import","require","default"];function XC($){let Z={},Q={"@cline/sdk":t($,"packages/sdk/src/index.ts"),"@cline/agents":t($,"packages/agents/src/index.ts"),"@cline/core":t($,"packages/core/src/index.ts"),"@cline/llms":t($,"packages/llms/src/index.ts"),"@cline/shared":t($,"packages/shared/src/index.ts"),"@cline/shared/storage":t($,"packages/shared/src/storage/index.ts"),"@cline/shared/db":t($,"packages/shared/src/db/index.ts")};for(let[J,W]of Object.entries(Q))if(b0(W))Z[J]=W;for(let J of["agents","core","llms","shared"]){let W=t($,"packages",J),X=t(W,"package.json");if(!b0(X))continue;try{let Y=JSON.parse(f6(X,"utf8"));if(typeof Y.name!=="string"||!Y.exports)continue;if(typeof Y.exports==="string"){let j=t(W,Y.exports);if(b0(j))Z[Y.name]=j;continue}if(typeof Y.exports!=="object")continue;for(let[j,V]of Object.entries(Y.exports)){let B=YC(W,V);if(!B)continue;let H=j==="."?Y.name:`${Y.name}/${j.replace(/^\.\//,"")}`;Z[H]=B}}catch{}}return Z}function YC($,Z){let Q=FX(Z);if(!Q)return null;let J=vF($,Q);for(let W of J)if(b0(W))return W;return null}function FX($,Z=new Set){if(typeof $==="string")return $;if(!$||typeof $!=="object")return null;if(Z.has($))return null;Z.add($);let Q=$;for(let J of WC){let W=FX(Q[J],Z);if(W)return W}return null}function vF($,Z){let Q=Z.replace(/^\.\//,""),J=[t($,Z)];if(Q.startsWith("dist/")){let W=Q.replace(/^dist\//,"src/").replace(/\.(mjs|cjs|js)$/,"");return[t($,`${W}.ts`),t($,`${W}.tsx`),t($,`${W}.mts`),t($,`${W}.cts`),...J]}return J}function jC($){return Object.fromEntries(Object.entries($).sort(([Z],[Q])=>Q.length-Z.length))}function H3($){return!($.startsWith(".")||$.startsWith("/")||$.startsWith("file:")||$.startsWith("data:")||$.startsWith("http:")||$.startsWith("https:"))}function R6($){if($.startsWith("@")){let[Z,Q]=$.split("/",3);return Q?`${Z}/${Q}`:$}return $.split("/",1)[0]??$}function VC($){let Z=R6($);if($===Z)return".";return`.${$.slice(Z.length)}`}function gF($){return R6($).startsWith("@cline/")}function BX($,Z){let Q=R6(Z),J=$2($);while(!0){let W=t(J,"node_modules",Q);if(b0(W)||b0(t(W,"package.json")))return!0;let X=t(J,"..");if(X===J)return!1;J=X}}function IF($){return HX($)!==null}function HX($){try{return ZC.resolve($)}catch{}return BC($)}function BC($){let Z=R6($),Q=mF(Z);if(!Q)return null;let J=t(Q,"package.json");try{let W=JSON.parse(f6(J,"utf8")),X=VC($),Y=X==="."&&typeof W.exports==="string"?W.exports:W.exports&&typeof W.exports==="object"&&Object.hasOwn(W.exports,X)?W.exports[X]:void 0,j=FX(Y)??(X==="."&&typeof W.main==="string"?W.main:null);if(!j)return null;let V=t(Q,j),B=[V,...vF(Q,j).filter((H)=>H!==V)];for(let H of B)if(b0(H))return H;return null}catch{return null}}function HC(){let $=[hF],Z=process.env.CLINE_WRAPPER_PATH?.trim();if(Z)$.push($2($2(Z)));let Q=process.execPath?.trim();if(Q)$.push($2(Q));return[...new Set($.map((J)=>t(J)))]}function KC($,Z){let Q=$;while(!0){let J=t(Q,"package.json");if(b0(J))try{if(JSON.parse(f6(J,"utf8")).name===Z)return Q}catch{}let W=t(Q,"node_modules",Z,"package.json");if(b0(W))return $2(W);let X=t(Q,"..");if(X===Q)return null;Q=X}}function mF($){for(let Z of HC()){let Q=KC(Z,$);if(Q)return Q}return null}function GC($){let Q=$2($);for(let J=0;J<4;J++){let W=t(Q,"package.json");if(b0(W))try{let Y=JSON.parse(f6(W,"utf8"));return Y!=null&&typeof Y==="object"&&"cline"in Y}catch{return!1}let X=t(Q,"..");if(X===Q)return!1;Q=X}return!1}function cF($,Z){let Q=Z.startsWith("file:")?xF(Z):ef(Z)?Z:t($2($),Z);if(b0(Q)&&m5.has(c5(Q)))return Q;for(let J of m5){let W=`${Q}${J}`;if(b0(W))return W}for(let J of m5){let W=t(Q,`index${J}`);if(b0(W))return W}return null}function uF($){let Z=new Set,Q=[/\bimport\s+(?:type\s+)?[^"'`]*?\bfrom\s*["'`]([^"'`]+)["'`]/g,/\bexport\s+[^"'`]*?\bfrom\s*["'`]([^"'`]+)["'`]/g,/\bimport\s*\(\s*["'`]([^"'`]+)["'`]\s*\)/g,/\brequire\s*\(\s*["'`]([^"'`]+)["'`]\s*\)/g];for(let J of Q)for(let W of $.matchAll(J)){let X=W[1];if(X)Z.add(X)}return[...Z]}function FC($){return c5($)!==".ts"}function pF($,Z,Q=new Set){if(Q.has($)||!b0($))return;if(Q.add($),!m5.has(c5($)))return;let J=f6($,"utf8"),W=FC($);for(let X of uF(J)){if(X.startsWith("node:")||GX.has(X))continue;if(H3(X)){if(!W)continue;if(Object.hasOwn(VX,X)||Object.hasOwn(VX,R6(X))||BX($,X)||gF(X)&&IF(X)||Z&&IF(X))continue;throw Error(`Cannot find module '${R6(X)}'`)}let Y=cF($,X);if(Y)pF(Y,Z,Q)}}function dF($,Z=new Set,Q=new Set){if(Z.has($)||!b0($))return Q;if(Z.add($),!m5.has(c5($)))return Q;let J=f6($,"utf8");for(let W of uF(J)){if(Q.add(W),H3(W))continue;let X=cF($,W);if(X)dF(X,Z,Q)}return Q}function UC($,Z){let Q=KX($),J={},W=dF($),X=new Set(JC);for(let[Y,j]of Object.entries(VX)){try{Q.resolve(Y);continue}catch{}J[Y]=j}for(let Y of W)if(H3(Y)&&(gF(Y)||Z))X.add(Y);for(let Y of X){if(Object.hasOwn(J,Y)||BX($,Y))continue;let j=HX(Y);if(j)J[Y]=j}if(!Z)return J;for(let Y of W){if(!H3(Y)||Object.hasOwn(J,Y)||BX($,Y)||Y.startsWith("node:")||GX.has(Y))continue;let j=HX(Y);if(j)J[Y]=j}return J}function DC($){let Z=c5($);return Z===".ts"||Z===".tsx"||Z===".mts"||Z===".cts"}var $8;function LC(){if($8!==void 0)return $8;let $=mF("jiti");if(!$)return $8=null,null;let Z=t($,"dist","babel.cjs");if(!b0(Z))return $8=null,null;try{let J=KX(Z)(Z);$8=typeof J==="function"?J:null}catch{$8=null}return $8}async function lF($,Z={}){let Q=!GC($);pF($,Q);let J=UC($,Q),W=jC(J),X=await import("jiti"),Y=typeof X==="function"?X:typeof X.default==="function"?X.default:void 0;if(!Y)throw Error("Unable to load jiti");let j=Object.entries(W).filter(([,K])=>DC(K)).map(([K])=>K),V=LC(),B=V?(K)=>V({...K,interopDefault:!0}):void 0;return await Y($,{alias:W,cache:Z.useCache,requireCache:Z.useCache,esmResolve:!0,interopDefault:!1,nativeModules:[...GX],transformModules:j,tryNative:!1,...B?{transform:B}:{}}).import($,{})}function iF($,Z){if(!$)return!0;if($.providerIds?.length){if(!Z?.providerId||!$.providerIds.includes(Z.providerId))return!1}if($.modelIds?.length){if(!Z?.modelId||!$.modelIds.includes(Z.modelId))return!1}return!0}function rF($){return typeof $==="object"&&$!==null}function UX($){return Array.isArray($)&&$.every((Z)=>typeof Z==="string")}function OC($,Z){if(!rF($.manifest))throw Error(`Invalid plugin module at ${Z}: missing required "manifest"`);if(!UX($.manifest.capabilities))throw Error(`Invalid plugin module at ${Z}: manifest.capabilities must be a string array`);if($.manifest.capabilities.length===0)throw Error(`Invalid plugin module at ${Z}: manifest.capabilities cannot be empty`);if(Object.hasOwn($.manifest,"providerIds")&&!UX($.manifest.providerIds))throw Error(`Invalid plugin module at ${Z}: manifest.providerIds must be a string array when provided`);if(Object.hasOwn($.manifest,"modelIds")&&!UX($.manifest.modelIds))throw Error(`Invalid plugin module at ${Z}: manifest.modelIds must be a string array when provided`)}function AC($,Z){if(!rF($))throw Error(`Invalid plugin module at ${Z}: expected object export`);if(typeof $.name!=="string"||$.name.length===0)throw Error(`Invalid plugin module at ${Z}: expected non-empty "name"`);if(!Object.hasOwn($,"manifest"))throw Error(`Invalid plugin module at ${Z}: missing required "manifest"`);OC($,Z)}async function u5($,Z={}){let Q=_C(Z.cwd??process.cwd(),$),J=await lF(Q,{useCache:Z.useCache}),W=Z.exportName??"plugin",X=J.default??J[W];AC(X,Q);let Y=X,j=Y.setup,V=j?(B,H)=>{let K={...Z.session,...H.session},G={...H,session:Object.keys(K).length>0?K:void 0,client:Z.client??H.client,user:Z.user??H.user,workspaceInfo:Z.workspaceInfo??H.workspaceInfo,automation:Z.automation??H.automation,logger:Z.logger??H.logger,telemetry:Z.telemetry??H.telemetry};return j(B,G)}:void 0;return{...Y,manifest:zC(Y.manifest),setup:V}}async function K3($,Z={}){return(await Z8($,Z)).plugins}async function Z8($,Z={}){let Q=[],J=[],W=new Map,X=0;for(let j of $)try{let V=await u5(j,Z);if(!iF(V.manifest,Z))continue;let B=W.get(V.name);if(B)J.push({type:"duplicate_plugin_override",pluginName:V.name,pluginPath:j,overriddenPluginPath:B.pluginPath,message:`Plugin "${V.name}" from ${j} overrides ${B.pluginPath}`});W.set(V.name,{plugin:V,pluginPath:j,order:X++})}catch(V){let B=V instanceof Error?V.message:String(V);Q.push({pluginPath:j,phase:"load",message:B,stack:V instanceof Error?V.stack:void 0})}let Y=[...W.values()].sort((j,V)=>j.order-V.order);return{plugins:Y.map((j)=>j.plugin),pluginPaths:Y.map((j)=>j.pluginPath),failures:Q,warnings:J}}import{existsSync as AX}from"node:fs";import{createRequire as $U}from"node:module";import{dirname as G3,join as P6}from"node:path";import{fileURLToPath as EC}from"node:url";var sF={};f(sF,{resolveSubprocessRuntimeExecutable:()=>LX,buildSubprocessSandboxCommand:()=>oF,SubprocessSandbox:()=>C6,CLINE_JS_RUNTIME_PATH_ENV:()=>nF});import{spawn as qC}from"node:child_process";import{basename as NC}from"node:path";import{augmentNodeCommandForDebug as TC,withResolvedClineBuildEnv as MC}from"@cline/shared";function DX($){if($ instanceof Error)return $;return Error(String($))}var nF="CLINE_JS_RUNTIME_PATH";function aF($){let Z=$?.trim();if(!Z)return!1;let Q=NC(Z).toLowerCase();return Q==="node"||Q==="node.exe"||Q==="bun"||Q==="bun.exe"}function LX($={}){let Z=$.env??process.env,Q=$.runtimeExecutable?.trim()||Z[nF]?.trim();if(Q)return Q;let J=$.execPath?.trim()||process.execPath;if(aF(J))return J;for(let W of[Z.BUN_EXEC_PATH,Z.npm_node_execpath,Z.NODE]){let X=W?.trim();if(X&&aF(X))return X}return"node"}function oF($,Z={}){let Q=LX({env:Z.env,execPath:Z.execPath,runtimeExecutable:Z.runtimeExecutable});return TC([Q,...$],{env:Z.env,execArgv:Z.execArgv,debugRole:Z.name==="plugin-sandbox"?"plugin-sandbox":"sandbox"})}class C6{options;process=null;requestCounter=0;pending=new Map;constructor($){this.options=$}get processLabel(){return this.options.name??"sandbox"}clearPendingRequest($){let Z=this.pending.get($);if(!Z)return;if(this.pending.delete($),Z.timeout)clearTimeout(Z.timeout);return Z}start(){if(this.process&&this.process.exitCode===null)return;let $=this.options.bootstrapFile?[this.options.bootstrapFile]:["-e",this.options.bootstrapScript??""],Z=oF($,{name:this.options.name,runtimeExecutable:this.options.runtimeExecutable}),Q=qC(Z[0]??LX(this.options),Z.slice(1),{stdio:["ignore","ignore","pipe","ipc"],env:MC(process.env),windowsHide:!0});this.process=Q;let J="",W=(X)=>{let Y=J+X;J=Y.length>4000?Y.slice(-4000):Y};Q.stderr?.setEncoding("utf8"),Q.stderr?.on("data",(X)=>{W(X)}),Q.on("message",(X)=>{this.onMessage(X)}),Q.on("error",(X)=>{this.failPending(Error(`${this.processLabel} process error: ${DX(X).message}`))}),Q.on("exit",(X,Y)=>{this.process=null;let j=J.trim();this.failPending(Error(`${this.options.name??"sandbox"} process exited (code=${String(X)}, signal=${String(Y)})${j?`: ${j}`:""}`))})}async call($,Z,Q={}){this.start();let J=this.process;if(!J||J.exitCode!==null)throw Error(`${this.processLabel} process is not available`);let W=`req_${++this.requestCounter}`,X={type:"call",id:W,method:$,args:Z};return await new Promise((Y,j)=>{let V={resolve:(B)=>Y(B),reject:j};if((Q.timeoutMs??0)>0)V.timeout=setTimeout(()=>{this.clearPendingRequest(W),this.shutdown().catch(()=>{}),j(Error(`${this.processLabel} call timed out after ${Q.timeoutMs}ms: ${$}`))},Q.timeoutMs);this.pending.set(W,V);try{J.send(X,(B)=>{if(!B)return;let H=this.clearPendingRequest(W);if(!H)return;H.reject(Error(`${this.processLabel} failed to send call "${$}": ${DX(B).message}`))})}catch(B){this.clearPendingRequest(W),j(DX(B))}})}async shutdown(){let $=this.process;if(this.process=null,!$||$.exitCode!==null){this.failPending(Error(`${this.processLabel} shutdown`));return}await new Promise((Z)=>{let Q=setTimeout(()=>{try{$.kill("SIGKILL")}catch{}Z()},300);$.once("exit",()=>{clearTimeout(Q),Z()});try{$.kill("SIGTERM")}catch{clearTimeout(Q),Z()}}),this.failPending(Error(`${this.processLabel} shutdown`))}onMessage($){if(!$)return;if($.type==="event"){if(typeof $.name==="string"&&$.name.length>0)this.options.onEvent?.({name:$.name,payload:$.payload});return}if($.type!=="response"||!$.id)return;let Z=this.clearPendingRequest($.id);if(!Z)return;if($.ok){Z.resolve($.result);return}Z.reject(Error($.error?.message||`${this.processLabel} call failed`))}failPending($){for(let[Z,Q]of this.pending.entries()){if(this.pending.delete(Z),Q.timeout)clearTimeout(Q.timeout);Q.reject($)}}}function RC($){return{...$,contributions:{tools:$.contributions?.tools??[],commands:$.contributions?.commands??[],rules:$.contributions?.rules??[],messageBuilders:$.contributions?.messageBuilders??[],providers:$.contributions?.providers??[],automationEventTypes:$.contributions?.automationEventTypes??[],mcpServers:$.contributions?.mcpServers??[],shortcuts:$.contributions?.shortcuts??[],flags:$.contributions?.flags??[]}}}function p5($){return($ instanceof Error?$.message:String($)).includes("Unknown sandbox plugin id:")}function fC(){return`@cline/cli-${process.platform==="win32"?"windows":process.platform}-${process.arch}`}function CC(){let $=process.env.CLINE_WRAPPER_PATH?.trim();if(!$)return;try{let Q=$U($).resolve(`${fC()}/package.json`),J=P6(G3(Q),"extensions","plugin-sandbox-bootstrap.js");return AX(J)?J:void 0}catch{return}}function PC(){let $=process.execPath?.trim();if(!$)return;let Z=P6(G3(G3($)),"extensions","plugin-sandbox-bootstrap.js");return AX(Z)?Z:void 0}function wC($){let Z=$.exists??AX;for(let Q of $.siblingCandidates)if(Z(Q))return{file:Q};if(Z($.sourceBootstrapPath))return{sourcePath:$.sourceBootstrapPath};for(let Q of $.installedCandidates)if(Q&&Z(Q))return{file:Q};return{sourcePath:$.sourceBootstrapPath}}function SC(){let $=G3(EC(import.meta.url)),Z=$U(import.meta.url),Q=wC({siblingCandidates:[P6($,"plugin-sandbox-bootstrap.js"),P6($,"extensions","plugin-sandbox-bootstrap.js"),P6($,"agents","plugin-sandbox-bootstrap.js")],sourceBootstrapPath:P6($,"plugin-sandbox-bootstrap.ts"),installedCandidates:[CC(),PC()]});if("file"in Q)return Q;let J=Q.sourcePath,W="jiti";try{W=Z.resolve("jiti")}catch{}return{script:[`const createJiti = require(${JSON.stringify(W)});`,`const jiti = createJiti(${JSON.stringify(J)}, { cache: false, requireCache: false, esmResolve: true, interopDefault: false });`,`Promise.resolve(jiti.import(${JSON.stringify(J)}, {})).catch((error) => {`," console.error(error);"," process.exitCode = 1;","});"].join(`
241
+ `,"utf8")}function SF($,Z){return e0.parse({version:1,session_id:$.sessionId,source:$.source,pid:$.pid,started_at:$.startedAt,ended_at:Z?.endedAt??$.endedAt??void 0,exit_code:Z?.exitCode??$.exitCode??void 0,status:Z?.status??$.status,interactive:$.interactive,provider:$.provider,model:$.model,cwd:$.cwd,workspace_root:$.workspaceRoot,team_name:$.teamName??void 0,enable_tools:$.enableTools,enable_spawn:$.enableSpawn,enable_teams:$.enableTeams,prompt:$.prompt??void 0,metadata:Z?.metadata??$.metadata??void 0,messages_path:$.messagesPath??void 0})}async function bF($,Z,Q){let J=0;while(!0){let W=await $();if(W===void 0)return{updated:!1};let X=await Z(W);if(typeof X==="object"&&X!==null&&"updated"in X&&X.updated===!1){if(J+=1,J>=Q)return X;continue}return X}}z0();var kF={};f(kF,{summarizeUsageFromMessages:()=>T6,sumUsageTotals:()=>g5,getCurrentContextSize:()=>YX,createInitialAccumulatedUsage:()=>P0,accumulateUsageTotals:()=>R0});function P0(){return{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,totalCost:0}}function R0($,Z){return{inputTokens:$.inputTokens+Math.max(0,Z.inputTokens??0),outputTokens:$.outputTokens+Math.max(0,Z.outputTokens??0),cacheReadTokens:$.cacheReadTokens+Math.max(0,Z.cacheReadTokens??0),cacheWriteTokens:$.cacheWriteTokens+Math.max(0,Z.cacheWriteTokens??0),totalCost:$.totalCost+Math.max(0,Z.totalCost??0)}}function g5($){let Z=P0();for(let Q of $)Z=R0(Z,Q);return Z}function N6($){return typeof $==="number"&&Number.isFinite($)?$:0}function T6($){let Z=P0();for(let Q of $){let J=Q.metrics;if(!J)continue;Z=R0(Z,{inputTokens:N6(J.inputTokens),outputTokens:N6(J.outputTokens),cacheReadTokens:N6(J.cacheReadTokens),cacheWriteTokens:N6(J.cacheWriteTokens),totalCost:N6(J.cost)})}return Z}function YX($){for(let Z=$.length-1;Z>=0;Z-=1){let Q=$[Z];if(Q?.role!=="assistant")continue;let J=N6(Q.metrics?.inputTokens);return J>0?J:void 0}return}function af($){if(!$||typeof $!=="object")return;let Z=$,Q=Z.skill??Z.skill_name??Z.skillName;if(typeof Q!=="string")return;let J=Q.trim();return J.length>0?J:void 0}function jX($){if(!$||typeof $!=="object")return{};let Z=$;return{agentId:typeof Z.agentId==="string"?Z.agentId:void 0,conversationId:typeof Z.conversationId==="string"?Z.conversationId:void 0,parentAgentId:typeof Z.parentAgentId==="string"?Z.parentAgentId:void 0}}function z$($){let Z=$.agentId?.trim();if(!Z)return;let Q=$.parentAgentId?.trim()||void 0,J=$.teamRole,W="root";if(J==="teammate")W="team_teammate";else if(J==="lead")W="team_lead";else if(Q)W="subagent";return{agentId:Z,agentKind:W,conversationId:$.conversationId?.trim()||void 0,parentAgentId:Q,createdByAgentId:$.createdByAgentId?.trim()||Q||void 0,isSubagent:Boolean(Q),teamId:$.teamId?.trim()||void 0,teamName:$.teamName?.trim()||void 0,teamRole:J,teamAgentId:$.teamAgentId?.trim()||void 0}}function nf($){return{inputTokens:$.inputTokens,outputTokens:$.outputTokens,cacheWriteTokens:$.cacheWriteTokens,cacheReadTokens:$.cacheReadTokens,totalCost:$.cost}}function of($){let Z=$.cacheWriteTokens??0,Q=$.cacheReadTokens??0;return{tokensIn:Math.max(0,$.inputTokens-Q-Z),tokensOut:$.outputTokens,cacheWriteTokens:Z,cacheReadTokens:Q,totalCost:$.cost}}function sf($){let Z=$.isPrimaryAgentEvent?[$.overrides?.agentId,$.eventMetadata.agentId,$.overrides?.teamAgentId]:[$.overrides?.teamAgentId,$.overrides?.agentId,$.eventMetadata.agentId,$.eventMetadata.conversationId];for(let Q of Z){let J=Q?.trim();if(J)return J}return $.isPrimaryAgentEvent?"root":"unknown"}function B3($,Z,Q){let{sessionId:J,config:W,liveSession:X,emit:Y}=$,j=W.telemetry,V=X?.runtime.teamRuntime,B=Q?.isPrimaryAgentEvent??!0,H=jX(Z),K=z$({agentId:Q?.agentId??H.agentId,conversationId:Q?.conversationId??H.conversationId,parentAgentId:Q?.parentAgentId??H.parentAgentId,createdByAgentId:Q?.createdByAgentId,teamId:Q?.teamId??V?.getTeamId(),teamName:Q?.teamName??V?.getTeamName(),teamRole:Q?.teamRole,teamAgentId:Q?.teamAgentId});if(Z.type==="content_start"&&Z.contentType==="tool"&&Z.toolName==="skills"){let G=af(Z.input);if(G)J7(j,{ulid:J,skillName:G,skillSource:"project",skillsAvailableGlobal:0,skillsAvailableProject:0,provider:W.providerId,modelId:W.modelId,...K})}if(Z.type==="content_end"&&Z.contentType==="tool"){let G=Z.toolName??"unknown",F=!Z.error;if(n8(j,{ulid:J,tool:G,autoApproved:void 0,success:F,modelId:W.modelId,provider:W.providerId,...K}),!F&&(G==="editor"||G==="apply_patch"))W7(j,{ulid:J,modelId:W.modelId,provider:W.providerId,errorType:Z.error,...K})}if(Z.type==="usage"&&X?.turnUsageBaseline){let G=nf(Z);if(B){X.turnPrimaryUsage=R0(X.turnPrimaryUsage??P0(),G);let U=R0(X.turnUsageBaseline,X.turnPrimaryUsage);$.usageBySession.set(J,U),a8(j,{ulid:J,provider:W.providerId,model:W.modelId,source:"assistant",mode:W.mode,...K}),Z7(j,{ulid:J,...of(Z),provider:W.providerId,model:W.modelId,...K})}else{let U=sf({isPrimaryAgentEvent:B,overrides:Q,eventMetadata:H}),D=X.turnUsageByAgent??new Map;X.turnUsageByAgent=D,D.set(U,R0(D.get(U)??P0(),G))}let F=R0(X.turnPrimaryUsage??P0(),g5(X.turnUsageByAgent?.values()??[]));$.aggregateUsageBySession.set(J,R0(X.turnAggregateUsageBaseline??X.turnUsageBaseline,F))}if(Z.type==="iteration_end"&&B)$.persistMessages(J,X?.agent.getMessages()??[],X?.config.systemPrompt);Y({type:"agent_event",payload:{sessionId:J,event:Z,teamAgentId:Q?.teamAgentId,teamRole:Q!==void 0?Q.teamRole??(B?"lead":void 0):void 0}}),Y({type:"chunk",payload:{sessionId:J,stream:"agent",chunk:PF(Z),ts:Date.now()}})}function O$($){return $.workspaceRoot??$.cwd}import{resolveProviderRequestHeaders as _w}from"@cline/llms";import{hasRuntimeConfigExtension as zw}from"@cline/shared";var M6="0.0.74";var E6={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:M6,repository:{type:"git",url:"https://github.com/cline/cline",directory:"sdk/packages/core"},type:"module",types:"./dist/index.d.ts",main:"./dist/index.js",private:!1,publishConfig:{access:"public"},exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js"},"./hub":{types:"./dist/hub/index.d.ts",import:"./dist/hub/index.js"},"./hub/daemon-entry":{types:"./dist/hub/daemon/entry.d.ts",import:"./dist/hub/daemon/entry.js"},"./telemetry":{types:"./dist/services/telemetry/index.d.ts",import:"./dist/services/telemetry/index.js"},"./services/feature-flags/posthog":{types:"./dist/services/feature-flags/posthog.d.ts",import:"./dist/services/feature-flags/posthog.js"}},scripts:{build:"bun run ./bun.mts && bun tsc -p tsconfig.build.json && bun run ./scripts/verify-runtime-build-id.ts",typecheck:"bun tsc -p tsconfig.dev.json --noEmit && bun run typecheck:smoke","typecheck:smoke":"bun tsc -p tsconfig.smoke.json --noEmit",test:"bun run test:unit && bun run test:e2e","test:live":"vitest run --config vitest.config.ts src/extensions/context/compaction.live.test.ts","test:compaction":"bun --conditions=development run scripts/compact-session.ts","test:unit":"vitest run --config vitest.config.ts","test:e2e":"vitest run --config vitest.e2e.config.ts","verify:routines":"zsh -lc 'bunx vitest run src/cron/schedule-service.test.ts --config vitest.config.ts'","test:watch":"vitest --config vitest.config.ts"},dependencies:{"@cline/agents":"workspace:*","@cline/shared":"workspace:*","@cline/llms":"workspace:*","@modelcontextprotocol/sdk":"^1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.214.0","@opentelemetry/exporter-logs-otlp-http":"^0.214.0","@opentelemetry/exporter-metrics-otlp-http":"^0.214.0","@opentelemetry/exporter-trace-otlp-http":"^0.214.0","@opentelemetry/resources":"^2.6.1","@opentelemetry/sdk-logs":"^0.214.0","@opentelemetry/sdk-metrics":"^2.6.1","@opentelemetry/sdk-trace-base":"^2.6.1","@opentelemetry/sdk-trace-node":"^2.6.1","@opentelemetry/semantic-conventions":"^1.40.0",jiti:"^2.7.0","node-machine-id":"^1.1.12",nanoid:"^5.1.7","simple-git":"3.36.0",ws:"^8.20.0",yaml:"^2.8.2",zod:"^4.3.6"},peerDependencies:{"posthog-node":"^5.8.0"},peerDependenciesMeta:{"posthog-node":{optional:!0}},devDependencies:{"@types/ws":"^8.18.1","posthog-node":"^5.8.0"},engines:{node:">=22"},files:["dist","!dist/**/*.d.ts.map"]};P1();import{existsSync as D3,readFileSync as mC,statSync as cC}from"node:fs";import{basename as uC,dirname as F3,join as L3,resolve as U3}from"node:path";import{discoverPluginModulePaths as pC,resolveConfiguredPluginModulePaths as JU,resolvePluginConfigSearchPaths as dC,SKILLS_CONFIG_DIRECTORY_NAME as lC}from"@cline/shared/storage";import{resolve as _C}from"node:path";import{normalizePluginManifest as zC}from"@cline/shared";import{existsSync as b0,readFileSync as f6}from"node:fs";import{builtinModules as tf,createRequire as KX}from"node:module";import{dirname as $2,extname as c5,isAbsolute as ef,resolve as t}from"node:path";import{fileURLToPath as xF}from"node:url";import{PLUGIN_FILE_EXTENSIONS as $C}from"@cline/shared";var hF=$2(xF(import.meta.url)),ZC=KX(import.meta.url),QC=t(hF,"..","..","..","..",".."),VX=XC(QC),JC=["@cline/sdk","@cline/agents","@cline/core","@cline/core/hub","@cline/core/hub/daemon-entry","@cline/core/telemetry","@cline/llms","@cline/llms/browser","@cline/shared","@cline/shared/automation","@cline/shared/browser","@cline/shared/storage","@cline/shared/db","@cline/shared/types"],GX=new Set(tf.flatMap(($)=>[$,$.replace(/^node:/,"")])),m5=new Set($C),WC=["development","node","import","require","default"];function XC($){let Z={},Q={"@cline/sdk":t($,"packages/sdk/src/index.ts"),"@cline/agents":t($,"packages/agents/src/index.ts"),"@cline/core":t($,"packages/core/src/index.ts"),"@cline/llms":t($,"packages/llms/src/index.ts"),"@cline/shared":t($,"packages/shared/src/index.ts"),"@cline/shared/storage":t($,"packages/shared/src/storage/index.ts"),"@cline/shared/db":t($,"packages/shared/src/db/index.ts")};for(let[J,W]of Object.entries(Q))if(b0(W))Z[J]=W;for(let J of["agents","core","llms","shared"]){let W=t($,"packages",J),X=t(W,"package.json");if(!b0(X))continue;try{let Y=JSON.parse(f6(X,"utf8"));if(typeof Y.name!=="string"||!Y.exports)continue;if(typeof Y.exports==="string"){let j=t(W,Y.exports);if(b0(j))Z[Y.name]=j;continue}if(typeof Y.exports!=="object")continue;for(let[j,V]of Object.entries(Y.exports)){let B=YC(W,V);if(!B)continue;let H=j==="."?Y.name:`${Y.name}/${j.replace(/^\.\//,"")}`;Z[H]=B}}catch{}}return Z}function YC($,Z){let Q=FX(Z);if(!Q)return null;let J=vF($,Q);for(let W of J)if(b0(W))return W;return null}function FX($,Z=new Set){if(typeof $==="string")return $;if(!$||typeof $!=="object")return null;if(Z.has($))return null;Z.add($);let Q=$;for(let J of WC){let W=FX(Q[J],Z);if(W)return W}return null}function vF($,Z){let Q=Z.replace(/^\.\//,""),J=[t($,Z)];if(Q.startsWith("dist/")){let W=Q.replace(/^dist\//,"src/").replace(/\.(mjs|cjs|js)$/,"");return[t($,`${W}.ts`),t($,`${W}.tsx`),t($,`${W}.mts`),t($,`${W}.cts`),...J]}return J}function jC($){return Object.fromEntries(Object.entries($).sort(([Z],[Q])=>Q.length-Z.length))}function H3($){return!($.startsWith(".")||$.startsWith("/")||$.startsWith("file:")||$.startsWith("data:")||$.startsWith("http:")||$.startsWith("https:"))}function R6($){if($.startsWith("@")){let[Z,Q]=$.split("/",3);return Q?`${Z}/${Q}`:$}return $.split("/",1)[0]??$}function VC($){let Z=R6($);if($===Z)return".";return`.${$.slice(Z.length)}`}function gF($){return R6($).startsWith("@cline/")}function BX($,Z){let Q=R6(Z),J=$2($);while(!0){let W=t(J,"node_modules",Q);if(b0(W)||b0(t(W,"package.json")))return!0;let X=t(J,"..");if(X===J)return!1;J=X}}function IF($){return HX($)!==null}function HX($){try{return ZC.resolve($)}catch{}return BC($)}function BC($){let Z=R6($),Q=mF(Z);if(!Q)return null;let J=t(Q,"package.json");try{let W=JSON.parse(f6(J,"utf8")),X=VC($),Y=X==="."&&typeof W.exports==="string"?W.exports:W.exports&&typeof W.exports==="object"&&Object.hasOwn(W.exports,X)?W.exports[X]:void 0,j=FX(Y)??(X==="."&&typeof W.main==="string"?W.main:null);if(!j)return null;let V=t(Q,j),B=[V,...vF(Q,j).filter((H)=>H!==V)];for(let H of B)if(b0(H))return H;return null}catch{return null}}function HC(){let $=[hF],Z=process.env.CLINE_WRAPPER_PATH?.trim();if(Z)$.push($2($2(Z)));let Q=process.execPath?.trim();if(Q)$.push($2(Q));return[...new Set($.map((J)=>t(J)))]}function KC($,Z){let Q=$;while(!0){let J=t(Q,"package.json");if(b0(J))try{if(JSON.parse(f6(J,"utf8")).name===Z)return Q}catch{}let W=t(Q,"node_modules",Z,"package.json");if(b0(W))return $2(W);let X=t(Q,"..");if(X===Q)return null;Q=X}}function mF($){for(let Z of HC()){let Q=KC(Z,$);if(Q)return Q}return null}function GC($){let Q=$2($);for(let J=0;J<4;J++){let W=t(Q,"package.json");if(b0(W))try{let Y=JSON.parse(f6(W,"utf8"));return Y!=null&&typeof Y==="object"&&"cline"in Y}catch{return!1}let X=t(Q,"..");if(X===Q)return!1;Q=X}return!1}function cF($,Z){let Q=Z.startsWith("file:")?xF(Z):ef(Z)?Z:t($2($),Z);if(b0(Q)&&m5.has(c5(Q)))return Q;for(let J of m5){let W=`${Q}${J}`;if(b0(W))return W}for(let J of m5){let W=t(Q,`index${J}`);if(b0(W))return W}return null}function uF($){let Z=new Set,Q=[/\bimport\s+(?:type\s+)?[^"'`]*?\bfrom\s*["'`]([^"'`]+)["'`]/g,/\bexport\s+[^"'`]*?\bfrom\s*["'`]([^"'`]+)["'`]/g,/\bimport\s*\(\s*["'`]([^"'`]+)["'`]\s*\)/g,/\brequire\s*\(\s*["'`]([^"'`]+)["'`]\s*\)/g];for(let J of Q)for(let W of $.matchAll(J)){let X=W[1];if(X)Z.add(X)}return[...Z]}function FC($){return c5($)!==".ts"}function pF($,Z,Q=new Set){if(Q.has($)||!b0($))return;if(Q.add($),!m5.has(c5($)))return;let J=f6($,"utf8"),W=FC($);for(let X of uF(J)){if(X.startsWith("node:")||GX.has(X))continue;if(H3(X)){if(!W)continue;if(Object.hasOwn(VX,X)||Object.hasOwn(VX,R6(X))||BX($,X)||gF(X)&&IF(X)||Z&&IF(X))continue;throw Error(`Cannot find module '${R6(X)}'`)}let Y=cF($,X);if(Y)pF(Y,Z,Q)}}function dF($,Z=new Set,Q=new Set){if(Z.has($)||!b0($))return Q;if(Z.add($),!m5.has(c5($)))return Q;let J=f6($,"utf8");for(let W of uF(J)){if(Q.add(W),H3(W))continue;let X=cF($,W);if(X)dF(X,Z,Q)}return Q}function UC($,Z){let Q=KX($),J={},W=dF($),X=new Set(JC);for(let[Y,j]of Object.entries(VX)){try{Q.resolve(Y);continue}catch{}J[Y]=j}for(let Y of W)if(H3(Y)&&(gF(Y)||Z))X.add(Y);for(let Y of X){if(Object.hasOwn(J,Y)||BX($,Y))continue;let j=HX(Y);if(j)J[Y]=j}if(!Z)return J;for(let Y of W){if(!H3(Y)||Object.hasOwn(J,Y)||BX($,Y)||Y.startsWith("node:")||GX.has(Y))continue;let j=HX(Y);if(j)J[Y]=j}return J}function DC($){let Z=c5($);return Z===".ts"||Z===".tsx"||Z===".mts"||Z===".cts"}var $8;function LC(){if($8!==void 0)return $8;let $=mF("jiti");if(!$)return $8=null,null;let Z=t($,"dist","babel.cjs");if(!b0(Z))return $8=null,null;try{let J=KX(Z)(Z);$8=typeof J==="function"?J:null}catch{$8=null}return $8}async function lF($,Z={}){let Q=!GC($);pF($,Q);let J=UC($,Q),W=jC(J),X=await import("jiti"),Y=typeof X==="function"?X:typeof X.default==="function"?X.default:void 0;if(!Y)throw Error("Unable to load jiti");let j=Object.entries(W).filter(([,K])=>DC(K)).map(([K])=>K),V=LC(),B=V?(K)=>V({...K,interopDefault:!0}):void 0;return await Y($,{alias:W,cache:Z.useCache,requireCache:Z.useCache,esmResolve:!0,interopDefault:!1,nativeModules:[...GX],transformModules:j,tryNative:!1,...B?{transform:B}:{}}).import($,{})}function iF($,Z){if(!$)return!0;if($.providerIds?.length){if(!Z?.providerId||!$.providerIds.includes(Z.providerId))return!1}if($.modelIds?.length){if(!Z?.modelId||!$.modelIds.includes(Z.modelId))return!1}return!0}function rF($){return typeof $==="object"&&$!==null}function UX($){return Array.isArray($)&&$.every((Z)=>typeof Z==="string")}function OC($,Z){if(!rF($.manifest))throw Error(`Invalid plugin module at ${Z}: missing required "manifest"`);if(!UX($.manifest.capabilities))throw Error(`Invalid plugin module at ${Z}: manifest.capabilities must be a string array`);if($.manifest.capabilities.length===0)throw Error(`Invalid plugin module at ${Z}: manifest.capabilities cannot be empty`);if(Object.hasOwn($.manifest,"providerIds")&&!UX($.manifest.providerIds))throw Error(`Invalid plugin module at ${Z}: manifest.providerIds must be a string array when provided`);if(Object.hasOwn($.manifest,"modelIds")&&!UX($.manifest.modelIds))throw Error(`Invalid plugin module at ${Z}: manifest.modelIds must be a string array when provided`)}function AC($,Z){if(!rF($))throw Error(`Invalid plugin module at ${Z}: expected object export`);if(typeof $.name!=="string"||$.name.length===0)throw Error(`Invalid plugin module at ${Z}: expected non-empty "name"`);if(!Object.hasOwn($,"manifest"))throw Error(`Invalid plugin module at ${Z}: missing required "manifest"`);OC($,Z)}async function u5($,Z={}){let Q=_C(Z.cwd??process.cwd(),$),J=await lF(Q,{useCache:Z.useCache}),W=Z.exportName??"plugin",X=J.default??J[W];AC(X,Q);let Y=X,j=Y.setup,V=j?(B,H)=>{let K={...Z.session,...H.session},G={...H,session:Object.keys(K).length>0?K:void 0,client:Z.client??H.client,user:Z.user??H.user,workspaceInfo:Z.workspaceInfo??H.workspaceInfo,automation:Z.automation??H.automation,logger:Z.logger??H.logger,telemetry:Z.telemetry??H.telemetry};return j(B,G)}:void 0;return{...Y,manifest:zC(Y.manifest),setup:V}}async function K3($,Z={}){return(await Z8($,Z)).plugins}async function Z8($,Z={}){let Q=[],J=[],W=new Map,X=0;for(let j of $)try{let V=await u5(j,Z);if(!iF(V.manifest,Z))continue;let B=W.get(V.name);if(B)J.push({type:"duplicate_plugin_override",pluginName:V.name,pluginPath:j,overriddenPluginPath:B.pluginPath,message:`Plugin "${V.name}" from ${j} overrides ${B.pluginPath}`});W.set(V.name,{plugin:V,pluginPath:j,order:X++})}catch(V){let B=V instanceof Error?V.message:String(V);Q.push({pluginPath:j,phase:"load",message:B,stack:V instanceof Error?V.stack:void 0})}let Y=[...W.values()].sort((j,V)=>j.order-V.order);return{plugins:Y.map((j)=>j.plugin),pluginPaths:Y.map((j)=>j.pluginPath),failures:Q,warnings:J}}import{existsSync as AX}from"node:fs";import{createRequire as $U}from"node:module";import{dirname as G3,join as P6}from"node:path";import{fileURLToPath as EC}from"node:url";var sF={};f(sF,{resolveSubprocessRuntimeExecutable:()=>LX,buildSubprocessSandboxCommand:()=>oF,SubprocessSandbox:()=>C6,CLINE_JS_RUNTIME_PATH_ENV:()=>nF});import{spawn as qC}from"node:child_process";import{basename as NC}from"node:path";import{augmentNodeCommandForDebug as TC,withResolvedClineBuildEnv as MC}from"@cline/shared";function DX($){if($ instanceof Error)return $;return Error(String($))}var nF="CLINE_JS_RUNTIME_PATH";function aF($){let Z=$?.trim();if(!Z)return!1;let Q=NC(Z).toLowerCase();return Q==="node"||Q==="node.exe"||Q==="bun"||Q==="bun.exe"}function LX($={}){let Z=$.env??process.env,Q=$.runtimeExecutable?.trim()||Z[nF]?.trim();if(Q)return Q;let J=$.execPath?.trim()||process.execPath;if(aF(J))return J;for(let W of[Z.BUN_EXEC_PATH,Z.npm_node_execpath,Z.NODE]){let X=W?.trim();if(X&&aF(X))return X}return"node"}function oF($,Z={}){let Q=LX({env:Z.env,execPath:Z.execPath,runtimeExecutable:Z.runtimeExecutable});return TC([Q,...$],{env:Z.env,execArgv:Z.execArgv,debugRole:Z.name==="plugin-sandbox"?"plugin-sandbox":"sandbox"})}class C6{options;process=null;requestCounter=0;pending=new Map;constructor($){this.options=$}get processLabel(){return this.options.name??"sandbox"}clearPendingRequest($){let Z=this.pending.get($);if(!Z)return;if(this.pending.delete($),Z.timeout)clearTimeout(Z.timeout);return Z}start(){if(this.process&&this.process.exitCode===null)return;let $=this.options.bootstrapFile?[this.options.bootstrapFile]:["-e",this.options.bootstrapScript??""],Z=oF($,{name:this.options.name,runtimeExecutable:this.options.runtimeExecutable}),Q=qC(Z[0]??LX(this.options),Z.slice(1),{stdio:["ignore","ignore","pipe","ipc"],env:MC(process.env),windowsHide:!0});this.process=Q;let J="",W=(X)=>{let Y=J+X;J=Y.length>4000?Y.slice(-4000):Y};Q.stderr?.setEncoding("utf8"),Q.stderr?.on("data",(X)=>{W(X)}),Q.on("message",(X)=>{this.onMessage(X)}),Q.on("error",(X)=>{this.failPending(Error(`${this.processLabel} process error: ${DX(X).message}`))}),Q.on("exit",(X,Y)=>{this.process=null;let j=J.trim();this.failPending(Error(`${this.options.name??"sandbox"} process exited (code=${String(X)}, signal=${String(Y)})${j?`: ${j}`:""}`))})}async call($,Z,Q={}){this.start();let J=this.process;if(!J||J.exitCode!==null)throw Error(`${this.processLabel} process is not available`);let W=`req_${++this.requestCounter}`,X={type:"call",id:W,method:$,args:Z};return await new Promise((Y,j)=>{let V={resolve:(B)=>Y(B),reject:j};if((Q.timeoutMs??0)>0)V.timeout=setTimeout(()=>{this.clearPendingRequest(W),this.shutdown().catch(()=>{}),j(Error(`${this.processLabel} call timed out after ${Q.timeoutMs}ms: ${$}`))},Q.timeoutMs);this.pending.set(W,V);try{J.send(X,(B)=>{if(!B)return;let H=this.clearPendingRequest(W);if(!H)return;H.reject(Error(`${this.processLabel} failed to send call "${$}": ${DX(B).message}`))})}catch(B){this.clearPendingRequest(W),j(DX(B))}})}async shutdown(){let $=this.process;if(this.process=null,!$||$.exitCode!==null){this.failPending(Error(`${this.processLabel} shutdown`));return}await new Promise((Z)=>{let Q=setTimeout(()=>{try{$.kill("SIGKILL")}catch{}Z()},300);$.once("exit",()=>{clearTimeout(Q),Z()});try{$.kill("SIGTERM")}catch{clearTimeout(Q),Z()}}),this.failPending(Error(`${this.processLabel} shutdown`))}onMessage($){if(!$)return;if($.type==="event"){if(typeof $.name==="string"&&$.name.length>0)this.options.onEvent?.({name:$.name,payload:$.payload});return}if($.type!=="response"||!$.id)return;let Z=this.clearPendingRequest($.id);if(!Z)return;if($.ok){Z.resolve($.result);return}Z.reject(Error($.error?.message||`${this.processLabel} call failed`))}failPending($){for(let[Z,Q]of this.pending.entries()){if(this.pending.delete(Z),Q.timeout)clearTimeout(Q.timeout);Q.reject($)}}}function RC($){return{...$,contributions:{tools:$.contributions?.tools??[],commands:$.contributions?.commands??[],rules:$.contributions?.rules??[],messageBuilders:$.contributions?.messageBuilders??[],providers:$.contributions?.providers??[],automationEventTypes:$.contributions?.automationEventTypes??[],mcpServers:$.contributions?.mcpServers??[],shortcuts:$.contributions?.shortcuts??[],flags:$.contributions?.flags??[]}}}function p5($){return($ instanceof Error?$.message:String($)).includes("Unknown sandbox plugin id:")}function fC(){return`@cline/cli-${process.platform==="win32"?"windows":process.platform}-${process.arch}`}function CC(){let $=process.env.CLINE_WRAPPER_PATH?.trim();if(!$)return;try{let Q=$U($).resolve(`${fC()}/package.json`),J=P6(G3(Q),"extensions","plugin-sandbox-bootstrap.js");return AX(J)?J:void 0}catch{return}}function PC(){let $=process.execPath?.trim();if(!$)return;let Z=P6(G3(G3($)),"extensions","plugin-sandbox-bootstrap.js");return AX(Z)?Z:void 0}function wC($){let Z=$.exists??AX;for(let Q of $.siblingCandidates)if(Z(Q))return{file:Q};if(Z($.sourceBootstrapPath))return{sourcePath:$.sourceBootstrapPath};for(let Q of $.installedCandidates)if(Q&&Z(Q))return{file:Q};return{sourcePath:$.sourceBootstrapPath}}function SC(){let $=G3(EC(import.meta.url)),Z=$U(import.meta.url),Q=wC({siblingCandidates:[P6($,"plugin-sandbox-bootstrap.js"),P6($,"extensions","plugin-sandbox-bootstrap.js"),P6($,"agents","plugin-sandbox-bootstrap.js")],sourceBootstrapPath:P6($,"plugin-sandbox-bootstrap.ts"),installedCandidates:[CC(),PC()]});if("file"in Q)return Q;let J=Q.sourcePath,W="jiti";try{W=Z.resolve("jiti")}catch{}return{script:[`const createJiti = require(${JSON.stringify(W)});`,`const jiti = createJiti(${JSON.stringify(J)}, { cache: false, requireCache: false, esmResolve: true, interopDefault: false });`,`Promise.resolve(jiti.import(${JSON.stringify(J)}, {})).catch((error) => {`," console.error(error);"," process.exitCode = 1;","});"].join(`
242
242
  `)}}var _X=SC();function zX($,Z,Q){if(typeof $==="number"&&$>0)return $;if(Q){let J=process.env[Q];if(J){let W=Number(J);if(Number.isInteger(W)&&W>0)return W}}return Z}async function w6($){let Z=new C6({name:"plugin-sandbox",..."file"in _X?{bootstrapFile:_X.file}:{bootstrapScript:_X.script},onEvent:$.onEvent}),Q=zX($.importTimeoutMs,4000,"CLINE_PLUGIN_IMPORT_TIMEOUT_MS"),J=zX($.hookTimeoutMs,3000),W=zX($.contributionTimeoutMs,60000),X={pluginPaths:$.pluginPaths,exportName:$.exportName,providerId:$.providerId,modelId:$.modelId,cwd:$.cwd,session:$.session,client:$.client,user:$.user,workspaceInfo:$.workspaceInfo,loggerEnabled:Boolean($.logger),telemetryEnabled:$.telemetryAvailable===!0},Y,j=()=>{return Y??=Z.call("initialize",X,{timeoutMs:Q}).finally(()=>{Y=void 0}),Y},V;try{V=await Z.call("initialize",X,{timeoutMs:Q})}catch(K){throw await Z.shutdown().catch(()=>{}),K}let B=V.plugins.map(RC);return{extensions:B.map((K)=>{let G={name:K.name,__clinePluginPath:K.pluginPath,manifest:K.manifest,setup:(F)=>{kC(F,Z,K,W,j),yC(F,Z,K,W,j),IC(F,Z,K,W,j),hC(F,Z,K,W,j),xC(F,K)}};return G.hooks=gC(Z,K,J,j),G}),failures:V.failures,pluginPaths:B.map((K)=>K.pluginPath),shutdown:async()=>{await Z.shutdown()},warnings:V.warnings}}function bC($){let Z=$ instanceof Error?$.message:String($);return/cyclic|circular|bigint/i.test(Z)}function OX($,Z=new WeakSet){if($===null||typeof $!=="object")return typeof $==="function"||typeof $==="symbol"||typeof $==="bigint"?void 0:$;if(Z.has($))return;let Q=$;if(typeof Q.toJSON==="function")try{return Q.toJSON()}catch{return}Z.add($);try{if(Array.isArray($))return $.map((W)=>OX(W,Z)??null);let J={};for(let[W,X]of Object.entries($)){let Y=OX(X,Z);if(Y!==void 0)J[W]=Y}return J}finally{Z.delete($)}}var tF=new Set;function ZU($,Z,Q){let J=`${$}:${Z}`;if(tF.has(J))return;tF.add(J);let W=Q instanceof Error?Q.message:String(Q);console.warn(`[plugin-sandbox] ${$} "${Z}" received a payload that is not JSON-serializable (${W}); retrying with non-serializable values dropped. Host-only objects must not be placed on tool contexts or hook payloads.`)}async function QU($,Z,Q){try{return await $(Z)}catch(J){if(!bC(J))throw J;return Q(J),await $(OX(Z))}}function kC($,Z,Q,J,W){for(let X of Q.contributions?.tools??[]){let Y={name:X.name,description:X.description??"",inputSchema:X.inputSchema??{type:"object",properties:{}},timeoutMs:X.timeoutMs,retryable:X.retryable,execute:async(j,V)=>{return await QU(async(H)=>{let{input:K,context:G}=H;try{return await Z.call("executeTool",{pluginId:Q.pluginId,contributionId:X.id,input:K,context:G},{timeoutMs:J})}catch(F){if(!p5(F))throw F;return await W(),await Z.call("executeTool",{pluginId:Q.pluginId,contributionId:X.id,input:K,context:G},{timeoutMs:J})}},{input:j,context:V},(H)=>ZU("tool",X.name,H))}};$.registerTool(Y)}}function yC($,Z,Q,J,W){for(let X of Q.contributions?.commands??[])$.registerCommand({name:X.name,description:X.description,handler:async(Y)=>{try{return await Z.call("executeCommand",{pluginId:Q.pluginId,contributionId:X.id,input:Y},{timeoutMs:J})}catch(j){if(!p5(j))throw j;return await W(),await Z.call("executeCommand",{pluginId:Q.pluginId,contributionId:X.id,input:Y},{timeoutMs:J})}}})}function IC($,Z,Q,J,W){for(let X of Q.contributions?.rules??[])$.registerRule({id:X.ruleId,source:X.source,content:X.hasContentHandler===!0?async()=>{try{return await Z.call("resolveRuleContent",{pluginId:Q.pluginId,contributionId:X.id},{timeoutMs:J})}catch(Y){if(!p5(Y))throw Y;return await W(),await Z.call("resolveRuleContent",{pluginId:Q.pluginId,contributionId:X.id},{timeoutMs:J})}}:X.content??""})}function xC($,Z){for(let Q of Z.contributions?.providers??[])$.registerProvider({name:Q.name,description:Q.description,metadata:Q.metadata});for(let Q of Z.contributions?.automationEventTypes??[])$.registerAutomationEventType({eventType:Q.eventType,source:Q.source,description:Q.description,attributesSchema:Q.attributesSchema,payloadSchema:Q.payloadSchema,examples:Q.examples,metadata:Q.metadata});for(let Q of Z.contributions?.mcpServers??[])$.registerMcpServer(Q)}function hC($,Z,Q,J,W){for(let X of Q.contributions?.messageBuilders??[])$.registerMessageBuilder({name:X.name,async build(Y){try{let j=await Z.call("buildMessages",{pluginId:Q.pluginId,contributionId:X.id,messages:Y},{timeoutMs:J});return eF(j)?j:Y}catch(j){if(!p5(j))throw j;await W();let V=await Z.call("buildMessages",{pluginId:Q.pluginId,contributionId:X.id,messages:Y},{timeoutMs:J});return eF(V)?V:Y}}})}function eF($){return Array.isArray($)&&$.every((Z)=>typeof Z==="object"&&Z!==null&&("role"in Z)&&("content"in Z))}function vC($,Z,Q,J,W){return async(X)=>{return await QU(async(j)=>{try{return await $.call("invokeHook",{pluginId:Z,hookName:Q,payload:j},{timeoutMs:J})}catch(V){if(!p5(V))throw V;return await W(),await $.call("invokeHook",{pluginId:Z,hookName:Q,payload:j},{timeoutMs:J})}},X,(j)=>ZU("hook",Q,j))}}function gC($,Z,Q,J){let W={};for(let X of Z.hooks??[])W[X]=vC($,Z.pluginId,X,Q,J);return Object.keys(W).length>0?W:void 0}import{getPluginDisplayName as z3}from"@cline/shared/storage";var NX="package.json",iC="package";function Q8($){return dC($)}function J8($){return pC($)}function rC($){try{return D3($)&&cC($).isDirectory()}catch{return!1}}function _3($){let Z=[],Q=new Set;for(let J of $){let W=U3(J);if(Q.has(W))continue;Q.add(W),Z.push(W)}return Z}function WU($){let Z=_3($);return a7(Z)}function XU($){return Q8($).flatMap((Z)=>J8(Z)).filter((Z)=>D3(Z))}function aC($,Z){let Q=[];for(let J of $)try{Q.push(...JU([J],Z))}catch{}return Q}function qX($){return typeof $==="object"&&$!==null}function nC($){try{let Z=JSON.parse(mC(L3($,NX),"utf8"));if(!qX(Z)||!qX(Z.cline))return[];let Q=Z.cline.plugins;if(!Array.isArray(Q))return[];let J=[];for(let W of Q){if(typeof W==="string"){J.push(W);continue}if(!qX(W)||!Array.isArray(W.paths))continue;for(let X of W.paths)if(typeof X==="string")J.push(X)}return J}catch{return[]}}function YU($,Z){let Q=U3(Z);return nC($).some((J)=>U3($,J)===Q)}function oC($,Z){return uC($)===iC&&D3(L3(F3($),NX))&&YU(F3($),Z)}function sC($){let Z=U3($),Q=[],J=F3(Z);while(!0){if(oC(J,Z)){Q.push(J);break}if(D3(L3(J,NX))){if(YU(J,Z))Q.push(J);break}let W=F3(J);if(W===J)break;J=W}return _3(Q)}function A$($={}){let Z=$.cwd??process.cwd(),Q=XU($.workspacePath),W=[...JU($.pluginPaths??[],Z),...Q];return $.includeDisabled?_3(W):WU(W)}function tC($={}){let Z=$.cwd??process.cwd(),Q=XU($.workspacePath),J=aC($.pluginPaths??[],Z);return WU([...J,...Q])}function u1($){let Z=[];for(let Q of $)for(let J of sC(Q)){let W=L3(J,lC);if(rC(W))Z.push(W)}return _3(Z)}function jU($={}){return u1(tC($))}async function S6($={}){let Z=A$($);if(Z.length===0)return{extensions:[],failures:[],warnings:[],pluginPaths:[]};if($.mode==="in_process"){let J=await Z8(Z,{cwd:$.cwd,exportName:$.exportName,providerId:$.providerId,modelId:$.modelId,session:$.session,client:$.client,user:$.user,workspaceInfo:$.workspaceInfo,automation:$.automation,logger:$.logger,telemetry:$.telemetry});return{extensions:J.plugins,failures:J.failures,pluginPaths:J.pluginPaths,warnings:J.warnings}}let Q=await w6({pluginPaths:Z,exportName:$.exportName,importTimeoutMs:$.importTimeoutMs,hookTimeoutMs:$.hookTimeoutMs,contributionTimeoutMs:$.contributionTimeoutMs,onEvent:$.onEvent,telemetryAvailable:Boolean($.telemetry),providerId:$.providerId,modelId:$.modelId,cwd:$.cwd,session:$.session,client:$.client,user:$.user,workspaceInfo:$.workspaceInfo,logger:$.logger});return{extensions:Q.extensions??[],shutdown:Q.shutdown,failures:Q.failures,pluginPaths:Q.pluginPaths,warnings:Q.warnings}}import{execFile as eC}from"node:child_process";import{mkdtemp as $P,rm as ZP,writeFile as QP}from"node:fs/promises";import{tmpdir as JP}from"node:os";import{join as TX}from"node:path";import{promisify as WP}from"node:util";var RX=WP(eC),VU="cline checkpoint session=";function BU($){return $.includes(VU)}function MX($,Z){$?.log(Z,{severity:"warn"})}function XP($){let Z=$?.checkpoint;if(!Z||typeof Z!=="object"||Array.isArray(Z))return;let Q=Z;if(!Q.latest||!Array.isArray(Q.history))return;let J=Q.latest,W=Q.history.filter((X)=>!!X&&typeof X==="object"&&typeof X.ref==="string"&&typeof X.createdAt==="number"&&typeof X.runCount==="number");if(typeof J.ref!=="string"||typeof J.createdAt!=="number"||typeof J.runCount!=="number")return;return{latest:J,history:W}}async function m0($,Z){let Q=await RX("git",["-C",$,...Z],{windowsHide:!0});return{stdout:Q.stdout.trim(),stderr:Q.stderr.trim()}}async function EX($,Z,Q){return(await RX("git",["-C",$,...Q],{windowsHide:!0,env:{...process.env,GIT_INDEX_FILE:Z}})).stdout.trim()}async function YP($){let Q=(await RX("git",["-C",$,"ls-files","--others","--exclude-standard","-z"],{windowsHide:!0,maxBuffer:67108864})).stdout.split("\x00").filter(Boolean);if(Q.length===0)return;let J=await $P(TX(JP(),"cline-checkpoint-")),W=TX(J,"index"),X=TX(J,"pathspec");try{await QP(X,`${Q.join("\x00")}\x00`),await EX($,W,["add","--force","--pathspec-from-file",X,"--pathspec-file-nul"]);let Y=await EX($,W,["write-tree"]);if(!Y)return;return await EX($,W,["commit-tree",Y,"-m","untracked files on cline checkpoint"])||void 0}finally{await ZP(J,{recursive:!0,force:!0})}}async function jP($,Z){let Q=(await m0($,["stash","create",Z])).stdout,J=await YP($);if(Q){if(!J)return Q;let j=(await m0($,["rev-parse",`${Q}^{tree}`])).stdout,V=(await m0($,["rev-parse",`${Q}^1`])).stdout,B=(await m0($,["rev-parse",`${Q}^2`])).stdout;if(!j||!V||!B)return Q;return(await m0($,["commit-tree",j,"-p",V,"-p",B,"-p",J,"-m",Z])).stdout||Q}if(!J)return;let W=(await m0($,["rev-parse","HEAD"])).stdout,X=(await m0($,["rev-parse","HEAD^{tree}"])).stdout;if(!W||!X)return;let Y=(await m0($,["commit-tree",X,"-p",W,"-m","index on cline checkpoint"])).stdout;if(!Y)return;return(await m0($,["commit-tree",X,"-p",W,"-p",Y,"-p",J,"-m",Z])).stdout||void 0}async function fX($,Z){if(!$)return;let Q=`refs/cline/checkpoints/${Z}/`;try{let{stdout:J}=await m0($,["for-each-ref","--format=%(refname)",Q]),W=J.trim().split(`
243
243
  `).filter(Boolean);await Promise.allSettled(W.map((X)=>m0($,["update-ref","-d",X])))}catch{}}async function HU($,Z,Q){if(!$||Q.length===0)return;await Promise.allSettled(Q.map((J)=>m0($,["update-ref",`refs/cline/checkpoints/${Z}/${J.runCount}`,J.ref])))}function VP($,Z){let Q=$.findIndex((J)=>J.runCount===Z.runCount);if(Q<0)return[...$,Z];return $.map((J,W)=>W===Q?Z:J)}function KU($){let Z,Q,J=async()=>{if(Z===!0)return!0;try{Z=(await m0($.cwd,["rev-parse","--is-inside-work-tree"])).stdout==="true"}catch{Z=!1}return Z},W=async(X)=>{if($.createCheckpoint)return await $.createCheckpoint({cwd:$.cwd,sessionId:$.sessionId,runCount:X});if(!await J())return;let Y=async(H)=>{try{let G=(await m0($.cwd,["rev-parse","HEAD"])).stdout.trim();if(!G)return;return{ref:G,createdAt:Date.now(),runCount:X,kind:"commit"}}catch(K){MX($.logger,`${H}: ${K instanceof Error?K.message:String(K)}`);return}},j=`${VU}${$.sessionId} run=${X}`,V="";try{V=await jP($.cwd,j)??""}catch(H){return MX($.logger,`Checkpoint snapshot failed: ${H instanceof Error?H.message:String(H)}`),Y("Checkpoint HEAD fallback failed")}if(!V)return Y("Checkpoint HEAD fallback failed");let B=`refs/cline/checkpoints/${$.sessionId}/${X}`;try{await m0($.cwd,["update-ref",B,V])}catch(H){MX($.logger,`Checkpoint store failed: ${H instanceof Error?H.message:String(H)}`);return}return{ref:V,createdAt:Date.now(),runCount:X,kind:"stash"}};return{beforeRun:async({snapshot:X})=>{if(X.parentAgentId==null)Q=X.messages.length;return},beforeModel:async({snapshot:X})=>{if(X.parentAgentId!=null||X.iteration!==1)return;let Y=X.messages.slice(Q??Math.max(0,X.messages.length-1));Q=void 0;let j=c$(X.messages);if(j<1)return;let V=await $.readSessionMetadata(),B=XP(V),H=c$(Y)>=1,K=B?.history.some((U)=>U.runCount===j)??!1;if(!H&&K)return;let G=await W(j);if(!G)return;if(B?.latest.ref===G.ref)return;let F=VP(B?.history??[],G);await $.writeSessionMetadata({...V??{},checkpoint:{latest:G,history:F}});return}}}import{appendFileSync as NP,readFileSync as TP}from"node:fs";import{join as MP}from"node:path";import{augmentNodeCommandForDebug as EP}from"@cline/shared";import{ensureHookLogDir as FU}from"@cline/shared/storage";function b6($,Z){if(!Z)return;return{name:$,manifest:{capabilities:["hooks"]},hooks:Z}}import{existsSync as BP,readdirSync as HP}from"node:fs";import{basename as KP,extname as GP,join as FP}from"node:path";import{HOOKS_CONFIG_DIRECTORY_NAME as O3,resolveHooksConfigSearchPaths as UP}from"@cline/shared/storage";function d5($){return UP($)}var k6;((H)=>{H.TaskStart="TaskStart";H.TaskResume="TaskResume";H.TaskCancel="TaskCancel";H.TaskComplete="TaskComplete";H.TaskError="TaskError";H.PreToolUse="PreToolUse";H.PostToolUse="PostToolUse";H.UserPromptSubmit="UserPromptSubmit";H.PreCompact="PreCompact";H.SessionShutdown="SessionShutdown"})(k6||={});var l5={["TaskStart"]:"agent_start",["TaskResume"]:"agent_resume",["TaskCancel"]:"agent_abort",["TaskComplete"]:"agent_end",["TaskError"]:"agent_error",["PreToolUse"]:"tool_call",["PostToolUse"]:"tool_result",["UserPromptSubmit"]:"prompt_submit",["PreCompact"]:void 0,["SessionShutdown"]:"session_shutdown"},DP=new Map(Object.values(k6).map(($)=>[$.toLowerCase(),$])),LP=new Set(["",".sh",".bash",".zsh",".js",".mjs",".cjs",".ts",".mts",".cts",".py",".ps1"]);function i5($){let Z=GP($).toLowerCase();if(!LP.has(Z))return;let Q=KP($,Z).trim().toLowerCase();return DP.get(Q)}function Z2($){let Z=[],Q=new Set,J=d5($).filter((W)=>BP(W));for(let W of J)try{for(let X of HP(W,{withFileTypes:!0})){if(!X.isFile())continue;let Y=i5(X.name);if(!Y)continue;let j=FP(W,X.name);if(Q.has(j))continue;Q.add(j),Z.push({fileName:Y,hookEventName:l5[Y],path:j})}}catch{}return Z.sort((W,X)=>W.path.localeCompare(X.path))}import{spawn as _P}from"node:child_process";import{augmentNodeCommandForDebug as zP,withResolvedClineBuildEnv as OP}from"@cline/shared";function AP($){let Z=$.trim();if(!Z)return{};let J=Z.split(`
244
244
  `).map((X)=>X.trim()).filter(Boolean).filter((X)=>X.startsWith("HOOK_CONTROL\t")).map((X)=>X.slice(13)),W=J.length>0?J[J.length-1]:Z;try{return{parsedJson:JSON.parse(W)}}catch(X){return{parseError:X instanceof Error?X.message:"Failed to parse subprocess stdout JSON"}}}function GU($,Z){let Q=$ instanceof Error?$:Error(String($)),J=Q,W=Z.join(" ");if(J.code==="EACCES"){let Y=Error(`Failed to execute hook command "${W}" (EACCES). Configure hooks with an explicit interpreter/command array (for example: ["bash", "/path/to/script"]) or make the script executable with a valid shebang.`);return Y.code=J.code,Y}let X=Error(`Failed to execute hook command "${W}": ${Q.message}`);return X.code=J.code,X}async function qP($,Z){let Q=$.stdin;if(!Q)throw Error("runSubprocessEvent failed to create stdin pipe");await new Promise((J,W)=>{let X=!1,Y=(B)=>{if(X)return;X=!0,B()},j=(B)=>{let H=B.code;return H==="EPIPE"||H==="EOF"||H==="ERR_STREAM_DESTROYED"},V=(B)=>{if(j(B)){Y(J);return}Y(()=>W(B))};Q.on("error",V),Q.once("close",()=>Q.off("error",V)),Q.end(Z,(B)=>{if(B){if(j(B)){Y(J);return}Y(()=>W(B));return}Y(J)})})}async function q$($,Z){let Q=zP(Z.command,{env:Z.env,debugRole:"hook"});if(!Array.isArray(Q)||Q.length===0)throw Error("runSubprocessEvent requires a non-empty command");let J=!!Z.detached,W=_P(Q[0],Q.slice(1),{cwd:Z.cwd,env:OP(Z.env),stdio:J?["pipe","ignore","ignore"]:["pipe","pipe","pipe"],detached:J,windowsHide:!0}),X="",Y="",j=!1,V;if(!J&&(!W.stdout||!W.stderr))throw W.kill("SIGKILL"),Error("runSubprocessEvent failed to create stdout/stderr pipes");W.stdout?.on("data",(K)=>{X+=K.toString()}),W.stderr?.on("data",(K)=>{Y+=K.toString()});let B=new Promise((K,G)=>{W.once("spawn",()=>{try{Z.onSpawn?.({command:Q,pid:W.pid??void 0,detached:J})}catch{}K()}),W.once("error",(F)=>G(GU(F,Q)))}),H=new Promise((K,G)=>{W.once("error",(F)=>{if(V)clearTimeout(V);G(GU(F,Q))}),W.once("close",(F)=>{if(V)clearTimeout(V);let{parsedJson:U,parseError:D}=AP(X);K({exitCode:F,stdout:X,stderr:Y,parsedJson:U,parseError:D,timedOut:j})})});if(J)H.catch(()=>{return});if(!J&&(Z.timeoutMs??0)>0)V=setTimeout(()=>{j=!0,W.kill("SIGKILL")},Z.timeoutMs);if(await Promise.race([Promise.all([B,qP(W,JSON.stringify($))]),H]),J){W.unref();return}return await H}function A3($){if(!$||typeof $!=="object")return{};let Z={};for(let[Q,J]of Object.entries($))Z[Q]=typeof J==="string"?J:JSON.stringify(J);return Z}function r5($,Z,Q){let J=Q instanceof Error?`: ${Q.message}`:"",W=`${Z}${J}`;if($){try{$.log(W,{severity:"warn",...Q!==void 0?{error:Q}:{}})}catch{}return}console.warn(W)}function RP($,Z){if(!Z)return $;if(!$)return{...Z};let Q=[$.context,Z.context].filter((W)=>typeof W==="string"&&W.length>0).join(`
@@ -558,7 +558,7 @@ ${JSON.stringify(J,null,2)}`}startClaimLeaseHeartbeat($){let Z=Math.max(1000,Mat
558
558
  updated_at = ?
559
559
  WHERE run_id = ? AND claim_token = ?`).run($.error??null,$.scheduledFor??null,Z,$.runId,$.claimToken).changes??0)>0}attachSessionIdToRun($,Z){this.db.prepare("UPDATE cron_runs SET session_id = ?, updated_at = ? WHERE run_id = ?").run(Z,f0(),$)}attachReportPathToRun($,Z){this.db.prepare("UPDATE cron_runs SET report_path = ?, updated_at = ? WHERE run_id = ?").run(Z,f0(),$)}}class m9{store;reconciler;watcher;eventIngress;materializer;runner;started=!1;disposed=!1;constructor($){this.store=new g9({dbPath:$.dbPath});let Z=$.specs;this.reconciler=new bY({store:this.store,specs:Z}),this.materializer=new k9({store:this.store}),this.eventIngress=new qY({store:this.store,logger:$.logger}),this.runner=new y9({store:this.store,materializer:this.materializer,runtimeHandlers:$.runtimeHandlers,workspaceRoot:$.workspaceRoot,specs:Z,logger:$.logger,pollIntervalMs:$.pollIntervalMs,claimLeaseSeconds:$.claimLeaseSeconds,globalMaxConcurrency:$.globalMaxConcurrency}),this.watcher=new kY({reconciler:this.reconciler,debounceMs:$.watcherDebounceMs,onReconciled:()=>{this.materializer.materializeAll()},onError:(Q)=>{let J=$.logger;if(J)if(J.error)J.error("cron.watcher.failed",{error:Q});else J.log("cron.watcher.failed",{error:Q})}})}async start(){if(this.disposed)throw Error("CronService disposed");if(this.started)return;this.started=!0,await this.reconciler.reconcileAll(),this.materializer.materializeAll(),this.watcher.start(),await this.runner.start()}async stop(){this.watcher.stop(),await this.runner.stop(),this.started=!1}async dispose(){if(this.disposed)return;this.disposed=!0,this.watcher.dispose(),await this.runner.dispose(),this.store.close()}listSpecs($){return this.store.listSpecs($)}getSpec($){return this.store.getSpec($)}listRuns($){return this.store.listRuns($)}getRun($){return this.store.getRun($)}listActiveRuns(){return this.store.listRuns({status:"running",limit:200})}listUpcomingRuns($=20){return this.store.listRuns({status:"queued",limit:$})}async reconcileNow(){await this.reconciler.reconcileAll(),this.materializer.materializeAll()}ingestEvent($){return this.eventIngress.ingestEvent($)}listEventLogs($){return this.store.listEventLogs($)}getEventLog($){return this.store.getEventLog($)}}var gL={};f(gL,{manifestToSessionRecord:()=>qQ,listSessionHistoryFromBackend:()=>gY,listSessionHistory:()=>NQ,hydrateSessionHistory:()=>vL});import{readdir as Qy,readFile as IL}from"node:fs/promises";import{join as xL}from"node:path";import{formatDisplayUserInput as Jy,normalizeUserInput as Wy}from"@cline/shared";import{resolveSessionDataDir as hL}from"@cline/shared/storage";import{existsSync as $y}from"node:fs";import{readFile as Zy}from"node:fs/promises";class c9{listeners=new Set;subscribe($,Z){let Q={listener:$,sessionId:Z?.sessionId?.trim()||void 0};return this.listeners.add(Q),()=>{this.listeners.delete(Q)}}emit($){let Z=$.payload.sessionId?.trim();for(let Q of this.listeners){if(Q.sessionId&&Q.sessionId!==Z)continue;Q.listener($)}}get size(){return this.listeners.size}}async function F2($){let Z=$?.trim();if(!Z||!$y(Z))return[];try{let Q=(await Zy(Z,"utf8")).trim();if(!Q)return[];let J=JSON.parse(Q);if(Array.isArray(J))return J;if(J&&typeof J==="object"&&!Array.isArray(J)){let W=J.messages;if(Array.isArray(W))return W}return[]}catch{return[]}}function xY($){return $?{...$}:void 0}async function kL($,Z){if(!($.hookName==="tool_call"||!!$.parent_agent_id))return;await Z.queueSpawnRequest($);let J=await Z.upsertSubagentSessionFromHook($);if(!J)return;await Z.appendSubagentHookAudit(J,$),await Z.applySubagentStatus(J,$)}function u9($){if(typeof $!=="string")return;let Z=$.trim();return Z.length>0?Z:void 0}function D1($){let Z=u9($);if(!Z)return;return Z.toLowerCase()==="unknown"?void 0:Z}function AQ($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function Xy($){if(!$||typeof $!=="object"||Array.isArray($))return;return{...$}}function vY($){let Z=$??200;return Number.isFinite(Z)?Math.max(0,Math.floor(Z)):200}function Yy($){if($===0)return 0;return Math.min(Math.max($*2,20),2000)}function jy($){return $.isSubagent!==!0&&!u9($.parentSessionId)}function Vy($){let Z=$.match(/\d{13,}/g);if(!Z||Z.length===0)return 0;let Q=0;for(let J of Z){let W=Number.parseInt(J,10);if(Number.isFinite(W)&&W>Q)Q=W}return Q}function qQ($){return{sessionId:$.session_id,source:$.source,pid:$.pid,startedAt:$.started_at,endedAt:$.ended_at??null,exitCode:$.exit_code??null,status:$.status,interactive:$.interactive,provider:$.provider,model:$.model,cwd:$.cwd,workspaceRoot:$.workspace_root,teamName:$.team_name,enableTools:$.enable_tools,enableSpawn:$.enable_spawn,enableTeams:$.enable_teams,isSubagent:!1,prompt:$.prompt,metadata:$.metadata,messagesPath:$.messages_path,updatedAt:$.ended_at??$.started_at}}async function By($){let Z=vY($);if(Z===0)return[];let Q=hL(),W=(await Qy(Q,{withFileTypes:!0}).catch(()=>[])).filter((Y)=>Y.isDirectory()).map((Y)=>({entry:Y,recency:Vy(Y.name.trim())})).sort((Y,j)=>j.recency-Y.recency||j.entry.name.localeCompare(Y.entry.name));return(await Promise.all(W.map(async({entry:Y})=>{let j=Y.name.trim();if(!j)return;let V=xL(Q,j,`${j}.json`),B=await IL(V,"utf8").catch(()=>{return});if(!B)return;let H;try{H=JSON.parse(B)}catch{return}let K=e0.safeParse(H);if(!K.success)return;return qQ(K.data)}))).filter((Y)=>Boolean(Y)).sort((Y,j)=>j.startedAt.localeCompare(Y.startedAt)).slice(0,Z)}async function Hy($,Z,Q){let J=vY(Z);if(J===0)return await $.listSessions(0),[];let W=Q.includeSubagents?J:Yy(J),X=await $.listSessions(W);return(Q.includeSubagents?X:X.filter(jy)).slice(0,J)}function Ky($){if(typeof $==="string")return $.trim();let Z=[];for(let Q of $){if(!Q||typeof Q!=="object")continue;let J=Q;if(J.type!=="text")continue;let W=J.text?.trim();if(W)Z.push(W)}return Z.join(`
560
560
  `).trim()}function yL($){return $.replace(/\s+/g," ").trim()}function Gy($,Z){if($.length<=Z)return $;return`${$.slice(0,Math.max(0,Z-3)).trimEnd()}...`}function Fy($){for(let Z of["user","assistant"])for(let Q of $){if(Q.role!==Z)continue;let J=yL(Ky(Q.content));if(!J)continue;let W=Z==="user"?yL(Jy(J)):J,X=Wy(W.split(`
561
- `)[0]??W);return Gy(X,50)}return}function Uy($){let Z=0;for(let Q of $)Z+=AQ(Q.metrics?.cost)??0;return Z}function Dy($){let Z,Q;for(let J=$.length-1;J>=0;J-=1){let W=$[J];if(!Z)Z=D1(W.modelInfo?.provider);if(!Q)Q=D1(W.modelInfo?.id);if(Z&&Q)break}return{provider:Z,model:Q}}function Ly($){return D1($?.provider)??D1($?.provider&&typeof $.provider==="object"&&!Array.isArray($.provider)?$.provider.id:void 0)}function _y($){return D1($?.model)??D1($?.model&&typeof $.model==="object"&&!Array.isArray($.model)?$.model.id:void 0)}function hY($,Z){let Q=Xy($.metadata),J=u9(Z?.title)??u9(Q?.title),W=AQ(Z?.totalCost)??AQ(Q?.totalCost),X=Q||J!==void 0||W!==void 0?{...Q??{},...J!==void 0?{title:J}:{},...W!==void 0?{totalCost:W}:{}}:void 0;return{...$,provider:D1(Z?.provider)??D1($.provider)??Ly(Q)??"",model:D1(Z?.model)??D1($.model)??_y(Q)??"",metadata:X}}function zy($){let Z=$.content;if(!Array.isArray(Z))return!1;return Z.some((Q)=>!!Q&&typeof Q==="object"&&Q.type==="tool-call")}function Oy($,Z){if($.status!=="running"||$.interactive!==!0)return!1;let Q=Z.at(-1);return Q?.role==="assistant"&&!zy(Q)}async function Ay($,Z){return await Promise.all(Z.map(async(Q)=>{if(Q.status!=="running"||Q.interactive!==!0)return Q;let J=await $.readSessionMessages(Q.sessionId);return Oy(Q,J)?{...Q,status:"idle"}:Q}))}async function vL($,Z){return await Promise.all(Z.map(async(Q)=>{let J=hY(Q),W=Boolean(u9(J.metadata?.title)),X=Boolean(D1(J.provider)),Y=Boolean(D1(J.model)),j=AQ(J.metadata?.totalCost),V=j!==void 0&&j>0;if(W&&X&&Y&&V)return J;let B=await $.readSessionMessages(Q.sessionId);if(B.length===0)return J;let H=Dy(B),K=Uy(B);return hY(Q,{title:W?void 0:Fy(B),provider:X?void 0:H.provider,model:Y?void 0:H.model,totalCost:V||K<=0?void 0:K})}))}async function NQ($,Z={}){let Q=vY(Z.limit),J=Z.includeSubagents===!0,W=await Hy($,Q,{includeSubagents:J}),X=Z.includeManifestFallback===!0&&W.length<Q?await By(Math.min(Math.max(Q*2,100),500)):[],Y=new Map;for(let B of[...W,...X]){if(Y.has(B.sessionId))continue;Y.set(B.sessionId,B)}let j=X.length===0?W:Array.from(Y.values()).sort((B,H)=>H.startedAt.localeCompare(B.startedAt)).slice(0,Q),V=await Ay($,j);if(Z.hydrate===!1)return V.map((B)=>hY(B));return await vL($,V)}async function qy($){let Z=$.trim();if(!Z)return;let Q=xL(hL(),Z,`${Z}.json`),J=await IL(Q,"utf8").catch(()=>{return});if(!J)return;try{let W=e0.safeParse(JSON.parse(J));return W.success?W.data.messages_path:void 0}catch{return}}async function gY($,Z={}){let Q=new Map;return await NQ({listSessions:async(W)=>{let X=await $.listSessions(W);Q.clear();for(let Y of X)Q.set(Y.sessionId,Y);return X.map(h5)},readSessionMessages:async(W)=>{let X=Q.get(W)?.messagesPath??await qy(W);return await F2(X)}},Z)}var Yz={};f(Yz,{resolveSessionBackend:()=>Ej,createRuntimeHost:()=>_4});import{captureSdkError as Wz}from"@cline/shared";import{createSessionId as zI,isHubProtocolCompatible as OI,resolveClineBuildEnv as AI,resolveHubCommandTimeoutMs as qI}from"@cline/shared";import{spawn as ry}from"node:child_process";import{closeSync as ay,mkdirSync as ny,openSync as oy}from"node:fs";import{basename as sy,dirname as ty,join as ey}from"node:path";import{fileURLToPath as $I}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as ZI,isHubDaemonProcess as eL,resolveClineBuildEnv as $_,withResolvedClineBuildEnv as QI}from"@cline/shared";import{createHash as Ny,randomBytes as pL}from"node:crypto";import{existsSync as Ty}from"node:fs";import{mkdir as cY,open as mL,readFile as dL,rename as My,rm as TQ,writeFile as Ey}from"node:fs/promises";import{dirname as lL,join as uY}from"node:path";import{isHubProtocolCompatible as Ry}from"@cline/shared";import{resolveClineDataDir as N8,resolveClineDir as iL}from"@cline/shared/storage";var fy="CLINE_HUB_DISCOVERY_PATH",Cy="CLINE_HUB_BUILD_ID",Py="CLINE_HUB_BUILD_EPOCH_MS",wy=30000,Sy=15000,cL=100;function by($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function ky($){return Ny("sha256").update($).digest("hex").slice(0,12)}function yy($){if(!Number.isInteger($)||!$||$<=0)return!1;try{return process.kill($,0),!0}catch(Z){return Z instanceof Error&&"code"in Z?String(Z.code)==="EPERM":!1}}function MQ(){return pL(32).toString("hex")}function uL($){return new Promise((Z)=>setTimeout(Z,$))}function Iy($){return`${$}.lock`}async function xy($){try{let Z=JSON.parse(await dL(uY($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function mY($){await TQ($,{recursive:!0,force:!0}).catch(()=>{return})}function L1(){let $=process.env[Cy]?.trim();if($)return $;return"sdk-v1-48203ca9c603a0f260eb4ac760bad41604a627cd852df1a10751236b133db5d0".trim()||`source-${String(E6.version)}`}function p9(){let $=Number(process.env[Py]);if(Number.isFinite($)&&$>0)return $;return Number.isFinite(1786590424338)?1786590424338:void 0}function T8($,Z=L1()){let Q=Ry($);if(!Q.compatible)return Q;let J=$.buildId?.trim();if(!J)return{compatible:!1,reason:"missing_build"};if(J!==Z)return{compatible:!1,reason:"build_mismatch"};return{compatible:!0}}function r1($,Z){let Q=T8($,Z?.expectedBuildId??L1());if(Q.compatible)return!0;if(Q.reason!=="build_mismatch")return!1;let J=$.buildEpochMs,W=Z?.expectedBuildEpochMs??p9();return typeof J==="number"&&Number.isFinite(J)&&typeof W==="number"&&Number.isFinite(W)&&J>W}function R$($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${ky($)}`,Q=process.env[fy]?.trim()||uY(N8(),"locks","hub","owners",`${by(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function rL($=`hub-${Date.now().toString(36)}`){return R$($)}async function C0($){try{let Z=JSON.parse(await dL($,"utf8"));if(typeof Z.hubId!=="string"||typeof Z.protocolVersion!=="string"||typeof Z.authToken!=="string"||typeof Z.host!=="string"||typeof Z.port!=="number"||typeof Z.url!=="string"||typeof Z.startedAt!=="string"||typeof Z.updatedAt!=="string")return;return{hubId:Z.hubId,protocolVersion:Z.protocolVersion,minClientProtocolVersion:typeof Z.minClientProtocolVersion==="string"?Z.minClientProtocolVersion:void 0,maxClientProtocolVersion:typeof Z.maxClientProtocolVersion==="string"?Z.maxClientProtocolVersion:void 0,capabilities:Array.isArray(Z.capabilities)?Z.capabilities.filter((Q)=>typeof Q==="string"):void 0,coreVersion:typeof Z.coreVersion==="string"?Z.coreVersion:void 0,buildId:typeof Z.buildId==="string"?Z.buildId:void 0,buildEpochMs:typeof Z.buildEpochMs==="number"?Z.buildEpochMs:void 0,authToken:Z.authToken,host:Z.host,port:Z.port,url:Z.url,pid:typeof Z.pid==="number"?Z.pid:void 0,startedAt:Z.startedAt,updatedAt:Z.updatedAt}}catch{return}}async function W4($,Z){await pY($,async()=>{let Q=lL($);await cY(Q,{recursive:!0});let J=`${$}.${process.pid}.${pL(6).toString("hex")}.tmp`,W;try{W=await mL(J,"wx",384),await W.writeFile(`${JSON.stringify(Z,null,2)}
561
+ `)[0]??W);return Gy(X,50)}return}function Uy($){let Z=0;for(let Q of $)Z+=AQ(Q.metrics?.cost)??0;return Z}function Dy($){let Z,Q;for(let J=$.length-1;J>=0;J-=1){let W=$[J];if(!Z)Z=D1(W.modelInfo?.provider);if(!Q)Q=D1(W.modelInfo?.id);if(Z&&Q)break}return{provider:Z,model:Q}}function Ly($){return D1($?.provider)??D1($?.provider&&typeof $.provider==="object"&&!Array.isArray($.provider)?$.provider.id:void 0)}function _y($){return D1($?.model)??D1($?.model&&typeof $.model==="object"&&!Array.isArray($.model)?$.model.id:void 0)}function hY($,Z){let Q=Xy($.metadata),J=u9(Z?.title)??u9(Q?.title),W=AQ(Z?.totalCost)??AQ(Q?.totalCost),X=Q||J!==void 0||W!==void 0?{...Q??{},...J!==void 0?{title:J}:{},...W!==void 0?{totalCost:W}:{}}:void 0;return{...$,provider:D1(Z?.provider)??D1($.provider)??Ly(Q)??"",model:D1(Z?.model)??D1($.model)??_y(Q)??"",metadata:X}}function zy($){let Z=$.content;if(!Array.isArray(Z))return!1;return Z.some((Q)=>!!Q&&typeof Q==="object"&&Q.type==="tool-call")}function Oy($,Z){if($.status!=="running"||$.interactive!==!0)return!1;let Q=Z.at(-1);return Q?.role==="assistant"&&!zy(Q)}async function Ay($,Z){return await Promise.all(Z.map(async(Q)=>{if(Q.status!=="running"||Q.interactive!==!0)return Q;let J=await $.readSessionMessages(Q.sessionId);return Oy(Q,J)?{...Q,status:"idle"}:Q}))}async function vL($,Z){return await Promise.all(Z.map(async(Q)=>{let J=hY(Q),W=Boolean(u9(J.metadata?.title)),X=Boolean(D1(J.provider)),Y=Boolean(D1(J.model)),j=AQ(J.metadata?.totalCost),V=j!==void 0&&j>0;if(W&&X&&Y&&V)return J;let B=await $.readSessionMessages(Q.sessionId);if(B.length===0)return J;let H=Dy(B),K=Uy(B);return hY(Q,{title:W?void 0:Fy(B),provider:X?void 0:H.provider,model:Y?void 0:H.model,totalCost:V||K<=0?void 0:K})}))}async function NQ($,Z={}){let Q=vY(Z.limit),J=Z.includeSubagents===!0,W=await Hy($,Q,{includeSubagents:J}),X=Z.includeManifestFallback===!0&&W.length<Q?await By(Math.min(Math.max(Q*2,100),500)):[],Y=new Map;for(let B of[...W,...X]){if(Y.has(B.sessionId))continue;Y.set(B.sessionId,B)}let j=X.length===0?W:Array.from(Y.values()).sort((B,H)=>H.startedAt.localeCompare(B.startedAt)).slice(0,Q),V=await Ay($,j);if(Z.hydrate===!1)return V.map((B)=>hY(B));return await vL($,V)}async function qy($){let Z=$.trim();if(!Z)return;let Q=xL(hL(),Z,`${Z}.json`),J=await IL(Q,"utf8").catch(()=>{return});if(!J)return;try{let W=e0.safeParse(JSON.parse(J));return W.success?W.data.messages_path:void 0}catch{return}}async function gY($,Z={}){let Q=new Map;return await NQ({listSessions:async(W)=>{let X=await $.listSessions(W);Q.clear();for(let Y of X)Q.set(Y.sessionId,Y);return X.map(h5)},readSessionMessages:async(W)=>{let X=Q.get(W)?.messagesPath??await qy(W);return await F2(X)}},Z)}var Yz={};f(Yz,{resolveSessionBackend:()=>Ej,createRuntimeHost:()=>_4});import{captureSdkError as Wz}from"@cline/shared";import{createSessionId as zI,isHubProtocolCompatible as OI,resolveClineBuildEnv as AI,resolveHubCommandTimeoutMs as qI}from"@cline/shared";import{spawn as ry}from"node:child_process";import{closeSync as ay,mkdirSync as ny,openSync as oy}from"node:fs";import{basename as sy,dirname as ty,join as ey}from"node:path";import{fileURLToPath as $I}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as ZI,isHubDaemonProcess as eL,resolveClineBuildEnv as $_,withResolvedClineBuildEnv as QI}from"@cline/shared";import{createHash as Ny,randomBytes as pL}from"node:crypto";import{existsSync as Ty}from"node:fs";import{mkdir as cY,open as mL,readFile as dL,rename as My,rm as TQ,writeFile as Ey}from"node:fs/promises";import{dirname as lL,join as uY}from"node:path";import{isHubProtocolCompatible as Ry}from"@cline/shared";import{resolveClineDataDir as N8,resolveClineDir as iL}from"@cline/shared/storage";var fy="CLINE_HUB_DISCOVERY_PATH",Cy="CLINE_HUB_BUILD_ID",Py="CLINE_HUB_BUILD_EPOCH_MS",wy=30000,Sy=15000,cL=100;function by($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function ky($){return Ny("sha256").update($).digest("hex").slice(0,12)}function yy($){if(!Number.isInteger($)||!$||$<=0)return!1;try{return process.kill($,0),!0}catch(Z){return Z instanceof Error&&"code"in Z?String(Z.code)==="EPERM":!1}}function MQ(){return pL(32).toString("hex")}function uL($){return new Promise((Z)=>setTimeout(Z,$))}function Iy($){return`${$}.lock`}async function xy($){try{let Z=JSON.parse(await dL(uY($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function mY($){await TQ($,{recursive:!0,force:!0}).catch(()=>{return})}function L1(){let $=process.env[Cy]?.trim();if($)return $;return"sdk-v1-23146023d96980eb35fe4a79923fdff36e4a81a32af32f6baedec3d0bcf5a7ab".trim()||`source-${String(E6.version)}`}function p9(){let $=Number(process.env[Py]);if(Number.isFinite($)&&$>0)return $;return Number.isFinite(1786600650387)?1786600650387:void 0}function T8($,Z=L1()){let Q=Ry($);if(!Q.compatible)return Q;let J=$.buildId?.trim();if(!J)return{compatible:!1,reason:"missing_build"};if(J!==Z)return{compatible:!1,reason:"build_mismatch"};return{compatible:!0}}function r1($,Z){let Q=T8($,Z?.expectedBuildId??L1());if(Q.compatible)return!0;if(Q.reason!=="build_mismatch")return!1;let J=$.buildEpochMs,W=Z?.expectedBuildEpochMs??p9();return typeof J==="number"&&Number.isFinite(J)&&typeof W==="number"&&Number.isFinite(W)&&J>W}function R$($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${ky($)}`,Q=process.env[fy]?.trim()||uY(N8(),"locks","hub","owners",`${by(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function rL($=`hub-${Date.now().toString(36)}`){return R$($)}async function C0($){try{let Z=JSON.parse(await dL($,"utf8"));if(typeof Z.hubId!=="string"||typeof Z.protocolVersion!=="string"||typeof Z.authToken!=="string"||typeof Z.host!=="string"||typeof Z.port!=="number"||typeof Z.url!=="string"||typeof Z.startedAt!=="string"||typeof Z.updatedAt!=="string")return;return{hubId:Z.hubId,protocolVersion:Z.protocolVersion,minClientProtocolVersion:typeof Z.minClientProtocolVersion==="string"?Z.minClientProtocolVersion:void 0,maxClientProtocolVersion:typeof Z.maxClientProtocolVersion==="string"?Z.maxClientProtocolVersion:void 0,capabilities:Array.isArray(Z.capabilities)?Z.capabilities.filter((Q)=>typeof Q==="string"):void 0,coreVersion:typeof Z.coreVersion==="string"?Z.coreVersion:void 0,buildId:typeof Z.buildId==="string"?Z.buildId:void 0,buildEpochMs:typeof Z.buildEpochMs==="number"?Z.buildEpochMs:void 0,authToken:Z.authToken,host:Z.host,port:Z.port,url:Z.url,pid:typeof Z.pid==="number"?Z.pid:void 0,startedAt:Z.startedAt,updatedAt:Z.updatedAt}}catch{return}}async function W4($,Z){await pY($,async()=>{let Q=lL($);await cY(Q,{recursive:!0});let J=`${$}.${process.pid}.${pL(6).toString("hex")}.tmp`,W;try{W=await mL(J,"wx",384),await W.writeFile(`${JSON.stringify(Z,null,2)}
562
562
  `,{encoding:"utf8"}),await W.sync(),await W.close(),W=void 0,await My(J,$);let X;try{X=await mL(Q,"r"),await X.sync()}catch{}finally{await X?.close().catch(()=>{return})}}catch(X){throw await W?.close().catch(()=>{return}),await TQ(J,{force:!0}).catch(()=>{return}),X}})}async function w1($){await pY($,async()=>{await TQ($,{force:!0}).catch(()=>{return})})}async function EQ($,Z){return await pY($,async()=>{if((await C0($))?.hubId!==Z)return!1;return await TQ($,{force:!0}),!0})}async function aL($,Z,Q){let J=Iy($);await cY(lL(J),{recursive:!0});let W=Date.now()+Sy;while(!0){try{await cY(J,{recursive:!1})}catch(X){if((X instanceof Error&&"code"in X?String(X.code):"")!=="EEXIST")throw X;let j=await xy(J);if(!j){if(Date.now()>=W){await mY(J);continue}await uL(cL);continue}let V=Date.now()-Date.parse(j.acquiredAt);if(!yy(j.pid)||V>wy){await mY(J);continue}if(Date.now()>=W)throw Error(`Timed out waiting for hub ${Z} lock ${J}`);await uL(cL);continue}try{return await Ey(uY(J,"owner.json"),`${JSON.stringify({pid:process.pid,acquiredAt:new Date().toISOString()},null,2)}
563
563
  `,"utf8"),await Q()}finally{await mY(J)}}}function pY($,Z){return aL(`${$}.mutation`,"discovery mutation",Z)}function X4($,Z){return aL($,"startup",Z)}async function S1($,Z){try{let Q=await fetch(Z?.authToken?dY($):RQ($),{headers:Z?.authToken?{authorization:`Bearer ${Z.authToken}`}:void 0});if(!Q.ok)return;let J=await Q.json();if(typeof J.protocolVersion!=="string"||typeof J.host!=="string"||typeof J.port!=="number"||typeof J.url!=="string")return;return{protocolVersion:J.protocolVersion,minClientProtocolVersion:typeof J.minClientProtocolVersion==="string"?J.minClientProtocolVersion:void 0,maxClientProtocolVersion:typeof J.maxClientProtocolVersion==="string"?J.maxClientProtocolVersion:void 0,capabilities:Array.isArray(J.capabilities)?J.capabilities.filter((W)=>typeof W==="string"):void 0,coreVersion:typeof J.coreVersion==="string"?J.coreVersion:void 0,buildId:typeof J.buildId==="string"?J.buildId:void 0,buildEpochMs:typeof J.buildEpochMs==="number"?J.buildEpochMs:void 0,host:J.host,port:J.port,url:J.url,hubId:typeof J.hubId==="string"?J.hubId:void 0,authToken:typeof J.authToken==="string"?J.authToken:void 0,pid:typeof J.pid==="number"?J.pid:void 0,startedAt:typeof J.startedAt==="string"?J.startedAt:void 0,updatedAt:typeof J.updatedAt==="string"?J.updatedAt:void 0}}catch{return}}function b1($,Z,Q="/hub"){return new URL(`ws://${$}:${Z}${Q}`).toString()}function RQ($){let Z=new URL($);return Z.protocol=Z.protocol==="wss:"?"https:":"http:",Z.pathname="/health",Z.search="",Z.toString()}function dY($){let Z=new URL(RQ($));return Z.pathname="/status",Z.toString()}function nL($){return Ty($)}import{CLINE_HUB_DEV_PORT as hy,CLINE_HUB_PORT as vy,resolveClineBuildEnv as gy}from"@cline/shared";var my="CLINE_HUB_HOST",cy="CLINE_HUB_PORT",uy="CLINE_HUB_PATHNAME",lY="127.0.0.1",iY=vy,rY="/hub";function oL($){return gy($)==="development"?hy:iY}function aY($={}){return($.env??process.env)[my]?.trim()||lY}function Y4($={}){let Q=($.env??process.env)[cy]?.trim();if(!Q)return oL($);let J=Number.parseInt(Q,10);if(!Number.isInteger(J)||J<1||J>65535)return oL($);return J}function nY($={}){return($.env??process.env)[uy]?.trim()||rY}function k1($={},Z={}){return{host:$.host??aY(Z),port:$.port??Y4(Z),pathname:$.pathname??nY(Z)}}import{join as py}from"node:path";var dy="shared:cline",ly="CLINE_HUB_DISCOVERY_PATH",iy="hub-production";function sL($){let Z=p1($.trim());return R$(`workspace:${Z||$.trim()}`)}function c0($=dy){return R$($)}function i0(){return{ownerId:iy,discoveryPath:process.env[ly]?.trim()||py(N8(),"locks","hub","production.json")}}var JI=8000,WI=200,XI=3000,YI=100,jI=[100,250,500,1000,2000],VI="--cline-hub-daemon";function BI($){return[...$.host?["--host",$.host]:[],...typeof $.port==="number"?["--port",String($.port)]:[],...$.pathname?["--pathname",$.pathname]:[]]}function HI(){try{let $=ey(N8(),"logs","hub-daemon.log");return ny(ty($),{recursive:!0}),{fd:oy($,"a"),logPath:$}}catch{return}}function KI(){return $_()==="production"?i0():c0()}function d9($){return r1($,{expectedBuildId:L1()})}function tL($,Z,Q){if(!Z||Z.url!==Q)return $;return{...$,authToken:$.authToken??Z.authToken,pid:$.pid??Z.pid}}async function l9($,Z){try{return await S1($,{authToken:Z})}catch{return}}async function GI($,Z){let Q=Date.now()+Z;while(Date.now()<Q){if(!(await l9($))?.url)return!0;await new Promise((W)=>setTimeout(W,YI))}return!1}async function sY($,Z){if(await r9($.url,$.authToken).catch(()=>!1),$.pid)try{process.kill($.pid,"SIGTERM")}catch{}let Q=await GI($.url,XI);return await w1(Z).catch(()=>{return}),Q}async function oY($,Z){if(d9($))return!0;return sY($,Z)}async function FI($){if($_()!=="production")return;let Z=c0();if(Z.discoveryPath===$.discoveryPath)return;let Q=await C0(Z.discoveryPath);if(Q?.url)await sY(Q,Z.discoveryPath);else await w1(Z.discoveryPath).catch(()=>{return})}function UI(){let $=import.meta.url.endsWith(".ts")?"ts":"js";return $I(new URL(`./entry.${$}`,import.meta.url))}function DI($,Z){let Q=UI(),J=process.execPath?.trim();if(!J)throw Error("unable to resolve runtime executable for hub daemon");let W=sy(J).toLowerCase().includes("bun"),X=Q.startsWith("/$bunfs/"),Y=W&&Q.toLowerCase().endsWith(".ts"),j=X?[VI]:[...Y?["--conditions=development"]:[],Q];return{launcher:J,args:[...j,"--cwd",$,...BI(Z)],cwd:$,env:{...QI(process.env),CLINE_NO_INTERACTIVE:"1",[ZI]:"1"}}}function LI($){if(!$||typeof $!=="object")return!1;if(("code"in $?$.code:void 0)==="ETXTBSY")return!0;let Q="message"in $?$.message:void 0;return typeof Q==="string"&&Q.includes("ETXTBSY")}function tY($,Z={}){if(eL())return;let Q=DI($,Z),J=HI();try{ry(Q.launcher,Q.args,{detached:!0,stdio:J?["ignore",J.fd,J.fd]:"ignore",env:Q.env,cwd:Q.cwd,windowsHide:!0}).unref()}finally{if(J)ay(J.fd)}}async function eY($,Z={}){for(let Q=0;;Q++)try{tY($,Z);return}catch(J){let W=jI[Q];if(!LI(J)||W===void 0)throw J;await new Promise((X)=>setTimeout(X,W))}}function fQ($,Z={}){if(eL())return;i9($,Z).catch(()=>{})}async function _I($,Z,Q={}){let J=Q.host!==void 0||Q.port!==void 0||Q.pathname!==void 0||!!process.env.CLINE_HUB_PORT?.trim(),W=k1(Q),X=b1(W.host,W.port,W.pathname),Y=(F)=>{if(!J)M8(F.url,F.authToken);return F};await FI($).catch(()=>{return});let j=await C0($.discoveryPath),V=!1;if(j?.url){let F=j.authToken;if(!F)V=!0,await sY(j,$.discoveryPath);else{let U=await l9(j.url,F);if(U?.url&&d9(U)&&await a1(U.url,{authToken:F}))return Y({url:U.url,authToken:F});if(U?.url)await oY({...U,authToken:F},$.discoveryPath);else await w1($.discoveryPath).catch(()=>{return})}}let B=await l9(X);if(B?.url){let F=tL(B,j,X);if(d9(B)){let D=[B.authToken,j?.authToken].filter((z)=>typeof z==="string"&&z.trim().length>0);for(let z of D){if(!await a1(B.url,{authToken:z}))continue;let L={hubId:B.hubId??`repaired-${B.port}`,protocolVersion:B.protocolVersion,minClientProtocolVersion:B.minClientProtocolVersion,maxClientProtocolVersion:B.maxClientProtocolVersion,capabilities:B.capabilities,coreVersion:B.coreVersion,buildId:B.buildId,authToken:z,host:B.host,port:B.port,url:B.url,pid:B.pid??j?.pid,startedAt:B.startedAt??new Date().toISOString(),updatedAt:new Date().toISOString()};try{await W4($.discoveryPath,L)}catch{}return Y({url:B.url,authToken:z})}throw Error(`A compatible Cline Hub is already running at ${X}, but its discovery record is missing or unreadable and no usable auth token is available. Run 'cline doctor fix' to repair local hub discovery.${V?" This can happen immediately after upgrading from a build that wrote an empty hub auth token; run 'cline doctor fix' to stop the old daemon and repair local hub discovery.":""}`)}if(!await oY(F,$.discoveryPath)&&Q.allowPortFallback!==!0&&W.port!==0)throw Error(`An incompatible Cline Hub is already running at ${X} and could not be retired automatically. Run 'cline doctor fix' to stop stale hub daemons before starting a new hub.`)}let K=Q.allowPortFallback===!0&&W.port!==0?{...W,port:0}:W;await eY(Z,K);let G=Date.now()+JI;while(Date.now()<G){let F=await C0($.discoveryPath);if(F?.url&&F.authToken){let D=await l9(F.url,F.authToken);if(D?.url&&d9(D)&&await a1(D.url,{authToken:F.authToken}))return Y({url:D.url,authToken:F.authToken})}let U=await l9(X);if(U?.url&&!d9(U)){let D=tL(U,F,X);if(!await oY(D,$.discoveryPath)&&Q.allowPortFallback!==!0&&W.port!==0)throw Error(`An incompatible Cline Hub is still running at ${X} and could not be retired automatically. Run 'cline doctor fix' to stop stale hub daemons before starting a new hub.`)}await new Promise((D)=>setTimeout(D,WI))}throw Error("Timed out waiting for detached hub startup.")}async function i9($,Z={}){let Q=KI();return await X4(Q.discoveryPath,async()=>_I(Q,$,Z))}function Qj(){return AI()==="production"?i0():c0()}function NI(){let $=globalThis.WebSocket;if(!$)throw Error("Global WebSocket is not available in this runtime. Node 22+ is required for hub mode.");return $}function Y_($){if(typeof $==="string")return $;if($ instanceof Uint8Array)return Buffer.from($).toString();if($ instanceof ArrayBuffer)return Buffer.from($).toString();if(Array.isArray($))return Buffer.concat($.map((Z)=>Buffer.from(Z))).toString();if($&&typeof $==="object"&&"data"in $&&typeof $.data<"u")return Y_($.data);return String($)}function TI($){if(typeof $==="string")return $;if($ instanceof Uint8Array)return Buffer.from($).toString("utf8");if($ instanceof ArrayBuffer)return Buffer.from($).toString("utf8");return""}function Z_($){let Z=$,Q=TI(Z.reason);return new r0("hub_connection_closed",Z.code||Q?`Hub connection closed (code=${Z.code??0}${Q?`, reason=${Q}`:""})`:$j,{closeCode:Z.code,closeReason:Q||void 0})}function MI($,Z){if($ instanceof r0)return $;if($ instanceof Error)return new r0("hub_connect_failed",$.message);if($&&typeof $==="object"&&"error"in $&&$.error instanceof Error)return new r0("hub_connect_failed",$.error.message);let Q=$&&typeof $==="object"&&"message"in $&&typeof $.message==="string"?$.message.trim():"";if(Q)return new r0("hub_connect_failed",Q);let J=$&&typeof $==="object"&&"type"in $&&typeof $.type==="string"?$.type.trim():"";return new r0("hub_connect_failed",J?`Failed to connect to hub at ${Z.toString()} (${J} event before socket open).`:`Failed to connect to hub at ${Z.toString()}.`)}var Q_="*",J_=8000,EI="cline-hub-auth.",j_=new Map,V_=new Set,RI=3000,fI=3000,CI=100,$j="Hub connection closed",PI=250,wI=5000,W_=0.5;class r0 extends Error{code;details;constructor($,Z,Q){super(Z);this.code=$;this.details=Q;this.name="HubTransportError"}}function Jj($){return $ instanceof r0}class j4 extends Error{command;code;constructor($,Z,Q){super(Q);this.command=$;this.code=Z;this.name="HubCommandError"}}function CQ($,Z){return $ instanceof j4&&$.code==="hub_command_timeout"&&(Z===void 0||$.command===Z)}function B_($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=Wj($.toString());return Q?j_.get(Q):void 0}function SI($){try{let Q=new URL($).hostname.toLowerCase().replace(/^\[|\]$/g,"");return Q==="localhost"||Q==="127.0.0.1"||Q==="::1"}catch{return!1}}function Wj($){if(!SI($))return;let Z=new URL(U2($));return Z.search="",Z.hash="",Z.toString()}function Zj($){let Z=Wj($);return!!Z&&V_.has(Z)}function M8($,Z){let Q=Wj($);if(Q){if(V_.add(Q),Z?.trim())j_.set(Q,Z)}return $}class y1{options;socket;connectPromise;clientId;currentUrl;recoveryPromise;pendingReplies=new Map;listeners=new Set;subscriptionCounts=new Map;reconnectTimer;reconnectAttempt=0;closedByClient=!1;lastCloseError=new r0("hub_connection_closed",$j);sawSocketClose=!1;registered=!1;constructor($){this.options=$;this.clientId=$.clientId??`core-${Math.random().toString(36).slice(2,10)}-${Date.now().toString(36)}`,this.currentUrl=$.url}getClientId(){return this.clientId}getUrl(){return this.currentUrl}isConnected(){return this.socket?.readyState===1&&this.registered}getConnectionError(){return this.isConnected()?null:this.lastCloseError}async connect(){if(this.socket&&(this.socket.readyState===1||this.socket.readyState===0))return this.connectPromise??Promise.resolve();this.closedByClient=!1,this.clearReconnectTimer();let $=new URL(this.currentUrl),Z=this.options.authToken?.trim()||B_($);$.hash="";let J=new(NI())($.toString(),Z?[`${EI}${Z}`]:void 0);this.socket=J;let W=!1;this.connectPromise=new Promise((X,Y)=>{let j=!1,V=setTimeout(()=>{if(j)return;j=!0,W=!0,this.lastCloseError=new r0("hub_connect_timeout",`Timed out connecting to hub after ${J_}ms`),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0;try{J.close()}catch{}Y(this.lastCloseError)},J_);J.addEventListener("open",()=>{if(j)return;j=!0,clearTimeout(V),X()}),J.addEventListener("error",(B)=>{if(j)return;j=!0,clearTimeout(V),this.lastCloseError=MI(B,$),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)}),J.addEventListener("close",(B)=>{if(j)return;if(j=!0,clearTimeout(V),!W)this.lastCloseError=Z_(B),this.sawSocketClose=!0;this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)})}),J.addEventListener("message",(X)=>{this.handleFrame(JSON.parse(Y_(X)))}),J.addEventListener("close",(X)=>{if(this.socket!==J)return;if(!W)this.lastCloseError=Z_(X),this.sawSocketClose=!0;this.registered=!1;for(let Y of this.pendingReplies.values())Y.reject(this.lastCloseError);if(this.pendingReplies.clear(),this.connectPromise=void 0,this.socket=void 0,!this.closedByClient&&this.hasActiveSubscriptions())this.scheduleReconnect()}),await this.connectPromise,await this.command("client.register",{clientId:this.clientId,clientType:this.options.clientType??"core",displayName:this.options.displayName??"core",transport:"native",actorKind:"client",workspaceContext:{workspaceRoot:this.options.workspaceRoot,cwd:this.options.cwd}}),this.registered=!0;for(let X of this.subscriptionCounts.keys())this.sendSubscriptionFrame("stream.subscribe",this.subscriptionSessionIdFromKey(X));this.reconnectAttempt=0}subscribe($,Z){let Q=Z?.sessionId?.trim()||void 0,J={listener:$,sessionId:Q};return this.listeners.add(J),this.adjustSubscriptionCount(Q,1),()=>{if(!this.listeners.delete(J))return;this.adjustSubscriptionCount(Q,-1)}}async command($,Z,Q,J){let W=0,X=$!=="client.register"&&$!=="client.unregister";while(!0)try{return await this.commandOnce($,Z,Q,J)}catch(Y){if(!X||W>=1||!await this.recoverLocalHubTransport(Y))throw Y;W+=1}}async commandOnce($,Z,Q,J){await this.connect();let W=zI("hubreq_"),X=qI($,J?.timeoutMs),Y=new Promise((V,B)=>{let H=X===null?void 0:setTimeout(()=>{if(!this.pendingReplies.delete(W))return;B(new j4($,"hub_command_timeout",`Hub command ${$} timed out after ${X}ms (hub=${this.currentUrl}, requestId=${W}, clientId=${this.clientId}). Check hub-daemon.log for matching command.start/command.slow entries, or run 'cline doctor fix' to restart the hub.`))},X);this.pendingReplies.set(W,{resolve:(K)=>{if(H)clearTimeout(H);V(K)},reject:(K)=>{if(H)clearTimeout(H);B(K)}})});try{this.sendFrame({kind:"command",envelope:{version:"v1",command:$,requestId:W,clientId:this.clientId,sessionId:Q,timeoutMs:X,payload:Z}})}catch(V){throw this.pendingReplies.delete(W),V}let j=await Y;if(!j.ok){if(j.error?.code===O8){let V=Q??(typeof Z?.sessionId==="string"?Z.sessionId:void 0);throw new E$(V,j.error.message)}throw new j4($,j.error?.code,j.error?.message??`Hub command ${$} failed`)}return j}async recoverLocalHubTransport($){if(!Zj(this.currentUrl)||!Jj($))return!1;if(this.recoveryPromise)return await this.recoveryPromise;return this.recoveryPromise=(async()=>{let Z=await E8({workspaceRoot:this.options.workspaceRoot,cwd:this.options.cwd}).catch(()=>{return});if(!Z)return!1;return this.currentUrl=Z,this.close(),!0})().finally(()=>{this.recoveryPromise=void 0}),await this.recoveryPromise}hasActiveSubscriptions(){return this.subscriptionCounts.size>0}clearReconnectTimer(){if(!this.reconnectTimer)return;clearTimeout(this.reconnectTimer),this.reconnectTimer=void 0}scheduleReconnect(){if(this.reconnectTimer||this.closedByClient||!this.hasActiveSubscriptions())return;let $=Math.min(PI*2**this.reconnectAttempt,wI),Z=Math.round($*(1-W_)+Math.random()*$*W_);this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=void 0,this.reconnectSubscribedTransport()},Z)}async reconnectSubscribedTransport(){if(this.closedByClient||!this.hasActiveSubscriptions())return;try{await this.connect(),this.reconnectAttempt=0}catch{if(!Zj(this.currentUrl)){this.reconnectAttempt+=1,this.scheduleReconnect();return}try{let $=await E8({workspaceRoot:this.options.workspaceRoot,cwd:this.options.cwd});if($){this.currentUrl=$,await this.connect(),this.reconnectAttempt=0;return}}catch{}this.reconnectAttempt+=1,this.scheduleReconnect()}}close(){let $=this.socket;if(this.closedByClient=!0,this.clearReconnectTimer(),this.registered=!1,!$)return;this.lastCloseError=new r0("hub_connection_closed",$j),this.sawSocketClose=!1;for(let Z of this.pendingReplies.values())Z.reject(this.lastCloseError);this.pendingReplies.clear(),this.connectPromise=void 0,this.socket=void 0;try{$.close()}catch{}}async dispose(){if(this.socket?.readyState===1&&this.registered)try{await this.command("client.unregister",void 0,void 0,{timeoutMs:2000})}catch{}this.close()}sendFrame($){if(!this.socket||this.socket.readyState!==1){if(this.lastCloseError.code==="hub_connection_closed"&&!this.sawSocketClose)throw new r0("hub_connection_not_open","Hub connection is not open.");throw this.lastCloseError}this.socket.send(JSON.stringify($))}sendSubscriptionFrame($,Z){this.sendFrame({kind:$,clientId:this.clientId,...Z?{sessionId:Z}:{}})}adjustSubscriptionCount($,Z){let Q=this.subscriptionKeyForSessionId($),J=(this.subscriptionCounts.get(Q)??0)+Z;if(J<=0){if(this.subscriptionCounts.delete(Q),!this.hasActiveSubscriptions())this.clearReconnectTimer();if(Z<0&&this.socket?.readyState===1)this.sendSubscriptionFrame("stream.unsubscribe",$);return}if(this.subscriptionCounts.set(Q,J),Z>0&&J===1&&this.socket?.readyState===1)this.sendSubscriptionFrame("stream.subscribe",$)}subscriptionKeyForSessionId($){return $??Q_}subscriptionSessionIdFromKey($){return $===Q_?void 0:$}handleFrame($){switch($.kind){case"reply":{let Z=$.envelope.requestId;if(!Z)return;let Q=this.pendingReplies.get(Z);if(!Q)return;this.pendingReplies.delete(Z),Q.resolve($.envelope);return}case"event":for(let Z of this.listeners){if(Z.sessionId&&Z.sessionId!==$.envelope.sessionId?.trim())continue;Z.listener($.envelope)}return;case"command":case"stream.subscribe":case"stream.unsubscribe":return}}}function U2($){let Z=new URL($);if(Z.protocol==="http:")Z.protocol="ws:";else if(Z.protocol==="https:")Z.protocol="wss:";return Z.toString()}async function a1($,Z){let Q=new y1({url:$,authToken:Z?.authToken,clientType:"hub-healthcheck",displayName:"hub healthcheck",workspaceRoot:Z?.workspaceRoot,cwd:Z?.cwd});try{return await Q.connect(),!0}catch{return!1}finally{Q.close()}}async function X_($,Z){let Q=U2($),J=await S1(Q,{authToken:Z?.authToken});if(!J)return{status:"unreachable",url:Q};if(Z?.requireCurrentBuild){let W=L1(),X=T8(J,W);if(!X.compatible&&!r1(J,{expectedBuildId:W}))return{status:X.reason==="unsupported_protocol"?"protocol_mismatch":"build_mismatch",url:Q}}else if(!OI(J).compatible)return{status:"protocol_mismatch",url:Q};if(Z?.verifyConnection===!0&&!await a1(Q,{workspaceRoot:Z.workspaceRoot,cwd:Z.cwd,authToken:Z.authToken}))return{status:"unreachable",url:Q};return{status:"compatible",url:Q}}async function bI($){let Z=Date.now()+fI;while(Date.now()<Z){if(!(await S1($).catch(()=>{return}))?.url)return!0;await new Promise((J)=>setTimeout(J,CI))}return!1}function kI($,Z){try{return U2($)===U2(Z)}catch{return!1}}function yI($){return($&&typeof $==="object"&&Array.isArray($.sessions)?$.sessions:[]).some((Q)=>{if(!Q||typeof Q!=="object")return!1;let J=Q;if(J.status==="running"||J.status==="idle"||J.status==="pending")return!0;return Array.isArray(J.participants)&&J.participants.length>0})}async function II($,Z,Q){let J=new y1({url:$,authToken:Z,clientType:"hub-recovery-check",displayName:"hub recovery check",workspaceRoot:Q?.workspaceRoot,cwd:Q?.cwd});try{let W=await J.command("session.list",{limit:500},void 0,{timeoutMs:RI});return!yI(W.payload)}catch{return!1}finally{await J.dispose().catch(()=>{return})}}async function a9($={}){if($.endpoint?.trim()){let W=await X_($.endpoint);return W.status==="compatible"?W.url:void 0}let Z=Qj(),Q=await C0(Z.discoveryPath);if(!Q?.url)return;let J=await X_(Q.url,{authToken:Q.authToken,requireCurrentBuild:!0});if(J.status==="compatible")return M8(J.url,Q.authToken);if(J.status==="protocol_mismatch")await w1(Z.discoveryPath).catch(()=>{return});return}async function E8($={}){let Z=await a9($);if(Z&&await a1(Z,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return Z;if($.endpoint?.trim())return;try{return(await i9($.workspaceRoot??process.cwd())).url}catch{return}}async function r9($,Z){let Q=new URL($),J=Z?.trim()||B_(Q);if(Q.protocol==="ws:")Q.protocol="http:";else if(Q.protocol==="wss:")Q.protocol="https:";return Q.pathname="/shutdown",Q.hash="",(await fetch(Q,{method:"POST",headers:J?{authorization:`Bearer ${J}`}:void 0})).ok}async function Xj($=Qj()){let Z=await C0($.discoveryPath);if(!Z?.url)return!1;try{if(await r9(Z.url,Z.authToken))return!0}catch{}return!1}async function PQ($){if(!Zj($.url))return;let Z=Qj(),Q=await C0(Z.discoveryPath);if(!Q?.url||!kI(Q.url,$.url))return;if(!await II(Q.url,Q.authToken,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return;if(!await Xj())return;if(!await bI(Q.url))return;return await w1(Z.discoveryPath).catch(()=>{return}),await E8({workspaceRoot:$.workspaceRoot,cwd:$.cwd})}var M_={};f(M_,{HubRuntimeHost:()=>f$});import{resolveProviderRequestHeaders as gI}from"@cline/llms";import{captureSdkError as Yj,createSessionId as K_,HUB_CHECKPOINT_CAPABILITY as mI,HUB_COMPACTION_CAPABILITY as cI,HUB_CUSTOM_TOOL_CAPABILITY_PREFIX as uI,HUB_HOOK_CAPABILITY_PREFIX as pI,HUB_MISTAKE_LIMIT_CAPABILITY as dI,HUB_TOOL_EXECUTOR_CAPABILITY_PREFIX as lI,HUB_USER_INSTRUCTIONS_SNAPSHOT_CAPABILITY as iI,isHubToolExecutorName as rI}from"@cline/shared";var H_={};f(H_,{createCoreSessionSnapshot:()=>n1,coreSessionSnapshotToRecord:()=>wQ});function xI($){return $?JSON.parse(JSON.stringify($)):void 0}function hI($){return $?JSON.parse(JSON.stringify($)):void 0}function vI($){let Z=$?.checkpoint&&typeof $.checkpoint==="object"&&!Array.isArray($.checkpoint)?$.checkpoint:void 0,J=(Array.isArray(Z?.history)?Z.history:[]).filter((Y)=>!!Y&&typeof Y==="object"&&!Array.isArray(Y)).flatMap((Y)=>{let j=typeof Y.ref==="string"?Y.ref.trim():"",V=Number(Y.createdAt),B=Number(Y.runCount);if(!j||!Number.isFinite(V)||!Number.isInteger(B))return[];return[{ref:j,createdAt:V,runCount:B,...Y.kind==="stash"||Y.kind==="commit"?{kind:Y.kind}:{}}]}),W=J.at(-1),X=$?.checkpointEnabled===!0?!0:void 0;if(!X&&J.length===0)return;return{...X?{enabled:X}:{},...W?{latest:W}:{},history:J}}function n1($){let{session:Z}=$,Q=xI(Z.metadata);return{version:1,sessionId:Z.sessionId,source:Z.source,status:Z.status,createdAt:Z.startedAt,updatedAt:Z.updatedAt,endedAt:Z.endedAt??null,exitCode:Z.exitCode??null,interactive:Z.interactive,workspace:{cwd:Z.cwd,root:Z.workspaceRoot},model:{providerId:Z.provider,modelId:Z.model},capabilities:{enableTools:Z.enableTools,enableSpawn:Z.enableSpawn,enableTeams:Z.enableTeams},lineage:{...Z.parentSessionId?{parentSessionId:Z.parentSessionId}:{},...Z.parentAgentId?{parentAgentId:Z.parentAgentId}:{},...Z.agentId?{agentId:Z.agentId}:{},...Z.conversationId?{conversationId:Z.conversationId}:{},isSubagent:Z.isSubagent},...Z.teamName?{team:{name:Z.teamName}}:{},...Z.prompt?{prompt:Z.prompt}:{},...Q?{metadata:Q}:{},...Z.messagesPath?{artifacts:{messagesPath:Z.messagesPath}}:{},...$.messages?{messages:hI($.messages)}:{},...$.usage?{usage:{...$.usage}}:{},...$.aggregateUsage?{aggregateUsage:{...$.aggregateUsage}}:{},...(()=>{let J=vI(Q);return J?{checkpoint:J}:{}})()}}function wQ($){return{sessionId:$.sessionId,parentSessionId:$.lineage.parentSessionId,agentId:$.lineage.agentId,parentAgentId:$.lineage.parentAgentId,conversationId:$.lineage.conversationId,isSubagent:$.lineage.isSubagent,source:$.source,startedAt:$.createdAt,endedAt:$.endedAt??void 0,exitCode:$.exitCode??void 0,status:$.status,interactive:$.interactive,provider:$.model.providerId,model:$.model.modelId,cwd:$.workspace.cwd,workspaceRoot:$.workspace.root,teamName:$.team?.name,enableTools:$.capabilities.enableTools,enableSpawn:$.capabilities.enableSpawn,enableTeams:$.capabilities.enableTeams,prompt:$.prompt,metadata:$.metadata,updatedAt:$.updatedAt,messagesPath:$.artifacts?.messagesPath}}function V4($){if(!$)return;return JSON.parse(JSON.stringify($))}var aI=["beforeRun","afterRun","beforeModel","afterModel","beforeTool","afterTool","onEvent"];function G_($){if(!$||typeof $!=="object"||Array.isArray($))return;return JSON.parse(JSON.stringify($))}function F_($){if(!$)return;let{userInstructionService:Z,...Q}=$;return JSON.parse(JSON.stringify(Q))}function U_($,Z){let Q={...$.config,sessionId:Z},J=gI({providerId:$.config.providerId,sessionId:Z,source:$.source,defaultSource:$0.CORE,client:{name:$.localRuntime?.extensionContext?.client?.name,version:$.localRuntime?.extensionContext?.client?.version,versionHeaderFallback:$.config.headers?.["X-CLIENT-VERSION"],platform:$.localRuntime?.extensionContext?.client?.platform,platformVersion:$.localRuntime?.extensionContext?.client?.platformVersion,isMultiRoot:$.localRuntime?.extensionContext?.client?.isMultiRoot},coreVersion:M6,openAiCodex:{accessToken:$.config.apiKey,userAgentVersion:process.env.npm_package_version},headers:{config:$.config.headers}});if(J)Q.headers=J;return Q}function q_($){return g0($.sessionMetadata,{mode:$.mode,version:$.localRuntime?.extensionContext?.client?.version})}function D_($){return{...q_($),source:$.source??$0.CORE,provider:$.config.providerId,model:$.config.modelId,enableTools:$.config.enableTools,enableSpawn:$.config.enableSpawnAgent,enableTeams:$.config.enableAgentTeams,teamName:$.config.teamName,prompt:$.prompt,interactive:$.interactive===!0}}function L_($){let Z=$&&typeof $==="object"&&!Array.isArray($)?$:{};return{agentId:typeof Z.agentId==="string"?Z.agentId:"",conversationId:typeof Z.conversationId==="string"?Z.conversationId:"",iteration:typeof Z.iteration==="number"?Z.iteration:0,metadata:Z.metadata&&typeof Z.metadata==="object"&&!Array.isArray(Z.metadata)?Z.metadata:void 0}}function R8($,Z,Q){$.manifest.push(Z),$.handlers.set(Z.capabilityName,Q)}function __($,Z){let Q={manifest:[],handlers:new Map};for(let W of Object.keys(Z.toolExecutors??{}).filter(rI)){let X=Z.toolExecutors?.[W];if(typeof X!=="function")continue;R8(Q,{kind:"toolExecutor",executor:W,capabilityName:`${lI}${W}`},async({payload:Y,abortSignal:j})=>{let V=Array.isArray(Y.args)?[...Y.args]:[],B={...L_(Y.context),signal:j};return{result:await X(...V,B)}})}for(let W of $?.extraTools??[])R8(Q,{kind:"tool",name:W.name,description:W.description,inputSchema:V4(W.inputSchema)??{},...W.lifecycle?{lifecycle:V4(W.lifecycle)}:{},capabilityName:`${uI}${W.name}`},async({payload:X,abortSignal:Y,progress:j})=>{let V={...L_(X.context),signal:Y};return{result:await W.execute(X.input,{...V,emitUpdate:(H)=>{j({update:H})}})}});let J=$?.hooks;if(J)for(let W of aI){let X=J[W];if(typeof X!=="function")continue;R8(Q,{kind:"hook",name:W,capabilityName:`${pI}${W}`},async({payload:Y})=>({control:await X(Y.context)}))}if($?.compaction?.compact){let W=$.compaction.compact;R8(Q,{kind:"compaction",capabilityName:cI,config:G_($.compaction)},async({payload:X})=>({result:await W(X.context)}))}if($?.checkpoint?.createCheckpoint){let W=$.checkpoint.createCheckpoint;R8(Q,{kind:"checkpoint",capabilityName:mI,config:G_($.checkpoint)},async({payload:X})=>({result:await W(X.context)}))}if($?.onConsecutiveMistakeLimitReached){let W=$.onConsecutiveMistakeLimitReached;R8(Q,{kind:"mistakeLimit",capabilityName:dI},async({payload:X})=>({result:await W(X.context)}))}if($?.userInstructionService){let W=$.userInstructionService;R8(Q,{kind:"userInstructionService",capabilityName:iI},async()=>{return await W.start().catch(()=>{}),{snapshot:{records:{skill:W.listRecords("skill"),rule:W.listRecords("rule"),workflow:W.listRecords("workflow")},runtimeCommands:W.listRuntimeCommands()}}})}return Q}function N_($){if(typeof $==="string"&&$.trim())return $.trim();if($ instanceof Error)return $.message.trim()||void 0;if($&&typeof $==="object"&&"message"in $){let Z=$.message;if(typeof Z==="string"&&Z.trim())return Z.trim()}return}function nI($){return N_($)??"Capability request was cancelled."}function oI($){if(typeof $!=="string")return $;try{return JSON.parse($)}catch{return $}}function sI($){return $==="completed"||$==="max_iterations"||$==="aborted"||$==="mistake_limit"||$==="error"}function tI($){if(!$||typeof $!=="object"||Array.isArray($))return;let Z=$,Q=typeof Z.inputTokens==="number"?Z.inputTokens:void 0,J=typeof Z.outputTokens==="number"?Z.outputTokens:void 0;if(Q===void 0||J===void 0)return;return{inputTokens:Q,outputTokens:J,cacheReadTokens:typeof Z.cacheReadTokens==="number"?Z.cacheReadTokens:0,cacheWriteTokens:typeof Z.cacheWriteTokens==="number"?Z.cacheWriteTokens:0,totalCost:typeof Z.totalCost==="number"?Z.totalCost:0}}function z_($){if(!$)return;return{inputTokens:typeof $.inputTokens==="number"?$.inputTokens:0,outputTokens:typeof $.outputTokens==="number"?$.outputTokens:0,cacheReadTokens:typeof $.cacheReadTokens==="number"?$.cacheReadTokens:0,cacheWriteTokens:typeof $.cacheWriteTokens==="number"?$.cacheWriteTokens:0,totalCost:typeof $.totalCost==="number"?$.totalCost:0}}function jj($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function D2($,Z){return jj($?.[Z])??0}function eI($){let Z=$?.delta&&typeof $.delta==="object"?$.delta:void 0,Q=$?.totals&&typeof $.totals==="object"?$.totals:void 0,J=$?.agent&&typeof $.agent==="object"?$.agent:void 0,W=J?.teamRole==="teammate"||J?.teamRole==="lead"?J.teamRole:void 0;return{event:{type:"usage",agentId:typeof J?.agentId==="string"?J.agentId:void 0,conversationId:typeof J?.conversationId==="string"?J.conversationId:void 0,parentAgentId:typeof J?.parentAgentId==="string"?J.parentAgentId:void 0,inputTokens:D2(Z,"inputTokens"),outputTokens:D2(Z,"outputTokens"),cacheReadTokens:D2(Z,"cacheReadTokens"),cacheWriteTokens:D2(Z,"cacheWriteTokens"),cost:jj(Z?.totalCost),totalInputTokens:D2(Q,"inputTokens"),totalOutputTokens:D2(Q,"outputTokens"),totalCacheReadTokens:D2(Q,"cacheReadTokens"),totalCacheWriteTokens:D2(Q,"cacheWriteTokens"),totalCost:jj(Q?.totalCost)},teamAgentId:typeof J?.teamAgentId==="string"?J.teamAgentId:void 0,teamRole:W}}function $x($){let Z=$?.result&&typeof $.result==="object"&&!Array.isArray($.result)?$.result:void 0,Q=$?.reason??Z?.finishReason,J=sI(Q)?Q:Q==="failed"?"error":"completed",W=tI($?.usage??Z?.usage);return{type:"done",reason:J,text:typeof $?.text==="string"?$.text:typeof Z?.text==="string"?Z.text:"",iterations:typeof $?.iterations==="number"?$.iterations:typeof Z?.iterations==="number"?Z.iterations:0,usage:W}}function f8($,Z){return $.error?.message??`hub command failed: ${Z}`}function n9($){switch($){case"idle":case"completed":return"completed";case"failed":return"failed";case"aborted":return"cancelled";default:return"running"}}function T_($){let Z=$.metadata&&typeof $.metadata==="object"?JSON.parse(JSON.stringify($.metadata)):void 0;return{sessionId:$.sessionId,parentSessionId:typeof Z?.parentSessionId==="string"?Z.parentSessionId:void 0,agentId:$.runtimeSession?.agentId||(typeof Z?.agentId==="string"?Z.agentId:void 0),parentAgentId:typeof Z?.parentAgentId==="string"?Z.parentAgentId:void 0,conversationId:typeof Z?.conversationId==="string"?Z.conversationId:void 0,isSubagent:typeof Z?.isSubagent==="boolean"?Z.isSubagent:!1,source:typeof Z?.source==="string"?Z.source:$0.CORE,pid:typeof Z?.pid==="number"?Z.pid:void 0,startedAt:new Date($.createdAt).toISOString(),endedAt:n9($.status)==="running"?void 0:new Date($.updatedAt).toISOString(),exitCode:n9($.status)==="completed"?0:n9($.status)==="failed"?1:void 0,status:n9($.status),interactive:Z?.interactive===!0,provider:typeof Z?.provider==="string"?Z.provider:"hub",model:typeof Z?.model==="string"?Z.model:"hub",cwd:$.cwd?.trim()||$.workspaceRoot,workspaceRoot:$.workspaceRoot,teamName:typeof Z?.teamName==="string"?Z.teamName:void 0,enableTools:$.runtimeOptions?.enableTools??Z?.enableTools===!0,enableSpawn:$.runtimeOptions?.enableSpawn??Z?.enableSpawn===!0,enableTeams:$.runtimeOptions?.enableTeams??Z?.enableTeams===!0,prompt:typeof Z?.prompt==="string"?Z.prompt:void 0,metadata:Z,updatedAt:new Date($.updatedAt).toISOString(),messagesPath:typeof Z?.messagesPath==="string"?Z.messagesPath:void 0,hookPath:typeof Z?.hookPath==="string"?Z.hookPath:void 0}}function L2($){if(!$||typeof $!=="object"||Array.isArray($))return;let Z=$;return Z.version===1&&typeof Z.sessionId==="string"?JSON.parse(JSON.stringify(Z)):void 0}function Zx($){let Z=L2($?.snapshot);if(Z)return wQ(Z);let Q=$?.session;return Q?T_(Q):void 0}function O_($,Z,Q){let J=Q?.workspaceRoot?.trim()||Z.config.workspaceRoot?.trim()||Z.config.cwd?.trim();if(!J)throw Error("Hub runtime did not return a resolved workspace path.");let W=Q?.cwd?.trim()||Z.config.cwd?.trim()||J;return e0.parse({version:1,session_id:$,source:Z.source??$0.CORE,pid:process.pid,started_at:new Date(Q?.createdAt??Date.now()).toISOString(),status:n9(Q?.status),interactive:Z.interactive===!0,provider:Z.config.providerId,model:Z.config.modelId,cwd:W,workspace_root:J,team_name:Z.config.teamName,enable_tools:Z.config.enableTools,enable_spawn:Z.config.enableSpawnAgent,enable_teams:Z.config.enableAgentTeams,prompt:Z.prompt?.trim()||void 0,metadata:q_(Z)})}function A_($,Z){return e0.parse({version:1,session_id:$.sessionId,source:$.source,pid:process.pid,started_at:$.createdAt,status:$.status,interactive:$.interactive,provider:$.model.providerId,model:$.model.modelId,cwd:$.workspace.cwd,workspace_root:$.workspace.root,team_name:$.team?.name,enable_tools:$.capabilities.enableTools,enable_spawn:$.capabilities.enableSpawn,enable_teams:$.capabilities.enableTeams,prompt:($.prompt??Z.prompt?.trim())||void 0,metadata:$.metadata,messages_path:$.artifacts?.messagesPath})}class f${runtimeAddress;pendingPrompts;client;clientOptions;clientContext;events=new c9;sessionCapabilities=new Map;sessionClientContributionHandlers=new Map;sessionSubscriptions=new Map;pendingApprovalToolCallIds=new Set;agentDoneEmittedForCurrentRunBySession=new Set;activeCapabilityAbortControllers=new Map;defaultCapabilities;telemetry;constructor($,Z){this.clientContext=Z,this.clientOptions={authToken:$.authToken,clientType:$.clientType??"core-hub-runtime",displayName:$.displayName??"core hub runtime",workspaceRoot:Z?.workspaceRoot,cwd:Z?.cwd},this.defaultCapabilities=y0($.capabilities)??{},this.telemetry=$.telemetry,this.runtimeAddress=$.url,this.pendingPrompts={list:(Q)=>this.requestPendingPromptsList(Q),update:(Q)=>this.requestPendingPromptUpdate(Q),delete:(Q)=>this.requestPendingPromptDelete(Q)},this.client=this.createClient($.url)}createClient($){return new y1({...this.clientOptions,url:$})}async replaceClient($){let Z=this.client;this.client=this.createClient($),this.runtimeAddress=$,await Promise.resolve(Z.dispose()).catch(()=>{return})}async recoverLocalHubStartupDeadlock($){if(!CQ($,"session.create"))return!1;let Z=await PQ({url:this.client.getUrl(),workspaceRoot:this.clientContext?.workspaceRoot,cwd:this.clientContext?.cwd}).catch(()=>{return});if(!Z)return!1;return await this.replaceClient(Z),!0}registerPlannedSession($,Z,Q){if(this.sessionCapabilities.set($,Z),Q.size>0)this.sessionClientContributionHandlers.set($,Q);this.ensureSessionSubscription($)}cleanupPlannedSession($){this.sessionCapabilities.delete($),this.sessionClientContributionHandlers.delete($),this.disposeSessionSubscription($)}async connect(){await this.client.connect()}async startSession($){let Z=this.resolveCapabilities($),Q=__($.localRuntime,Z),J=$.config.sessionId?.trim()||K_(),W=()=>this.client.command("session.create",{workspaceRoot:$.config.workspaceRoot?.trim()||$.config.cwd,cwd:$.config.cwd,sessionConfig:V4(U_($,J)),metadata:D_($),runtimeOptions:{...Q.manifest.length>0?{clientContributions:Q.manifest}:{},...$.localRuntime?.configExtensions?{configExtensions:$.localRuntime.configExtensions}:{}},toolPolicies:V4($.toolPolicies),initialMessages:$.initialMessages,...$.initialCompactionState?{initialCompactionState:$.initialCompactionState}:{}});this.registerPlannedSession(J,Z,Q.handlers);let X;try{X=await W()}catch(H){if(this.cleanupPlannedSession(J),await this.recoverLocalHubStartupDeadlock(H)){this.registerPlannedSession(J,Z,Q.handlers);try{X=await W()}catch(K){throw this.cleanupPlannedSession(J),K}}else throw H}let Y=L2(X.payload?.snapshot),j=X.payload?.session,V=(Y?.sessionId??j?.sessionId)?.trim();if(!V)throw this.cleanupPlannedSession(J),Error("Hub runtime did not return a session id.");let B;try{B=Y?A_(Y,$):O_(V,$,j)}catch(H){throw this.cleanupPlannedSession(J),H}if(V!==J)this.cleanupPlannedSession(J),this.registerPlannedSession(V,Z,Q.handlers);return{sessionId:V,manifest:B,manifestPath:"",messagesPath:"",result:void 0}}async restoreSession($){let Z=$.sessionId.trim();if(!Z)throw Error("sessionId is required");let Q=$.restore?.messages!==!1;if(Q&&!$.start)throw Error("start is required when restore.messages is true");let J=$.start,W=J?this.resolveCapabilities(J):void 0,X=J?__(J.localRuntime,W??{}):{manifest:[],handlers:new Map},Y,j;if(J)Y=J.config.sessionId?.trim()||K_(),j=U_(J,Y);if(Y&&W)this.sessionCapabilities.set(Y,W);if(Y&&X.handlers.size>0)this.sessionClientContributionHandlers.set(Y,X.handlers),this.ensureSessionSubscription(Y);let V;try{V=await this.client.command("session.restore",{sessionId:Z,checkpointRunCount:$.checkpointRunCount,restore:$.restore,...J?{workspaceRoot:J.config.workspaceRoot?.trim()||J.config.cwd,cwd:J.config.cwd??$.cwd,sessionConfig:V4(j),metadata:D_(J),runtimeOptions:{...X.manifest.length>0?{clientContributions:X.manifest}:{},...J.localRuntime?.configExtensions?{configExtensions:J.localRuntime.configExtensions}:{}},toolPolicies:V4(J.toolPolicies),...J.initialCompactionState?{initialCompactionState:J.initialCompactionState}:{}}:{}},Z)}catch(U){if(Y)this.sessionCapabilities.delete(Y),this.sessionClientContributionHandlers.delete(Y),this.disposeSessionSubscription(Y);throw U}if(!V.ok){let U=typeof V.payload?.error==="string"?V.payload.error:"session.restore failed";if(Y)this.sessionCapabilities.delete(Y),this.sessionClientContributionHandlers.delete(Y),this.disposeSessionSubscription(Y);throw Error(U)}let B=L2(V.payload?.snapshot),H=V.payload?.session,K=(B?.sessionId??H?.sessionId)?.trim();if(Q&&!K){if(Y)this.sessionCapabilities.delete(Y),this.sessionClientContributionHandlers.delete(Y),this.disposeSessionSubscription(Y);throw Error("Hub checkpoint restore returned no session id")}if(K&&Y&&K!==Y)this.sessionCapabilities.delete(Y),this.sessionClientContributionHandlers.delete(Y),this.disposeSessionSubscription(Y);if(K&&W)this.sessionCapabilities.set(K,W);if(K&&X.handlers.size>0)this.sessionClientContributionHandlers.set(K,X.handlers);if(K)this.ensureSessionSubscription(K);let G=Array.isArray(V.payload?.messages)?V.payload.messages:void 0,F=V.payload?.checkpoint;if(!F){if(K)this.cleanupPlannedSession(K);else if(Y)this.cleanupPlannedSession(Y);throw Error("Hub checkpoint restore returned no checkpoint")}try{return{sessionId:K,startResult:K?{sessionId:K,manifest:B?A_(B,J??{}):O_(K,J??{},H),manifestPath:"",messagesPath:"",result:void 0}:void 0,messages:G,checkpoint:F}}catch(U){if(K)this.cleanupPlannedSession(K);else if(Y)this.cleanupPlannedSession(Y);throw U}}async runTurn($){return this.ensureSessionSubscription($.sessionId),(await this.client.command("run.start",{sessionId:$.sessionId,input:$.prompt,mode:$.mode,attachments:($.userImages?.length??0)>0||($.userFiles?.length??0)>0?{...$.userImages?.length?{userImages:$.userImages}:{},...$.userFiles?.length?{userFiles:$.userFiles}:{}}:void 0,delivery:$.delivery,timeoutMs:$.timeoutMs},$.sessionId,{timeoutMs:null})).payload?.result}async requestPendingPromptsList($){this.ensureSessionSubscription($.sessionId);let Z=await this.client.command("session.pending_prompts",{sessionId:$.sessionId},$.sessionId);return Array.isArray(Z.payload?.prompts)?Z.payload.prompts:[]}async requestPendingPromptUpdate($){this.ensureSessionSubscription($.sessionId);let Z=await this.client.command("session.update_pending_prompt",{...$},$.sessionId);return{sessionId:$.sessionId,prompts:Array.isArray(Z.payload?.prompts)?Z.payload.prompts:[],prompt:Z.payload?.prompt,updated:Z.payload?.updated===!0}}async requestPendingPromptDelete($){this.ensureSessionSubscription($.sessionId);let Z=await this.client.command("session.remove_pending_prompt",{...$},$.sessionId);return{sessionId:$.sessionId,prompts:Array.isArray(Z.payload?.prompts)?Z.payload.prompts:[],prompt:Z.payload?.prompt,removed:Z.payload?.removed===!0}}async getAccumulatedUsage($){let Z=await this.client.command("session.get",{includeSnapshot:!0},$),Q=L2(Z.payload?.snapshot);if(Q){let Y=Q.usage?{...Q.usage}:void 0,j=Q.aggregateUsage?{...Q.aggregateUsage}:void 0;return Y||j?{usage:Y,aggregateUsage:j}:void 0}let J=Z.payload?.session,W=z_(J?.usage),X=z_(J?.aggregateUsage);return W||X?{usage:W,aggregateUsage:X}:void 0}async abort($,Z){await this.client.command("run.abort",{sessionId:$,reason:N_(Z)},$)}async stopSession($){this.sessionCapabilities.delete($),this.disposeSessionSubscription($),await this.client.command("session.detach",{sessionId:$},$)}async dispose(){for(let[$,Z]of this.sessionSubscriptions){Z();try{await this.client.command("session.detach",{sessionId:$},$)}catch{}}this.sessionSubscriptions.clear(),this.sessionCapabilities.clear(),this.agentDoneEmittedForCurrentRunBySession.clear();for(let $ of this.activeCapabilityAbortControllers.values())$.abort("Hub runtime host disposed.");this.activeCapabilityAbortControllers.clear(),await this.client.dispose()}async getSession($){let Z;try{Z=await this.client.command("session.get",void 0,$)}catch(Q){if(l1(Q))return;throw Q}return Zx(Z.payload)}async listSessions($=100){let Z=await this.client.command("session.list",{limit:$}),Q=Array.isArray(Z.payload?.snapshots)?Z.payload.snapshots.flatMap((W)=>{let X=L2(W);return X?[wQ(X)]:[]}):[];if(Q.length>0)return Q;return(Z.payload?.sessions??[]).map(T_)}async listSettings($){let Z=await this.client.command("settings.list",F_($));if(!Z.ok)throw Error(f8(Z,"settings.list"));return Z.payload?.snapshot}async toggleSetting($){let Z=await this.client.command("settings.toggle",F_($));if(!Z.ok)throw Error(f8(Z,"settings.toggle"));return{snapshot:Z.payload?.snapshot,changedTypes:Array.isArray(Z.payload?.changedTypes)?Z.payload.changedTypes:[]}}async deleteSession($){return this.sessionCapabilities.delete($),this.disposeSessionSubscription($),(await this.client.command("session.delete",{sessionId:$})).payload?.deleted===!0}async updateSession($,Z){let Q={...Z.metadata??{}};if(typeof Z.prompt==="string")Q.prompt=Z.prompt;if(typeof Z.title==="string")Q.title=Z.title;return{updated:(await this.client.command("session.update",{sessionId:$,metadata:Q})).ok}}async updateSessionConnection($,Z){let Q=$.trim();if(!Q)return;let J=await this.client.command("session.update_connection",{sessionId:Q,updates:Z},Q);if(!J.ok)throw Error(f8(J,"session.update_connection"))}async updateSessionCompactionState($,Z){let Q=$.trim();if(!Q)return{updated:!1};let J=await this.client.command("session.compaction.update",{sessionId:Q,state:Z},Q);if(!J.ok)Yj(this.telemetry,{component:"core",operation:"hub.runtime_host.update_session_compaction_state",error:Error(f8(J,"session.compaction.update")),severity:"warn",handled:!0,context:{command:"session.compaction.update",sessionId:Q,errorCode:J.error?.code}});return{updated:J.ok&&J.payload?.updated===!0}}async readSessionCompactionState($){let Z=$.trim();if(!Z)return;let Q=await this.client.command("session.compaction.get",{sessionId:Z},Z);if(!Q.ok)throw Error(f8(Q,"session.compaction.get"));return E1(Q.payload?.state)}async readSessionMessages($){let Z=$.trim();if(!Z)return[];let Q=await this.client.command("session.messages",{sessionId:Z},Z);if(!Q.ok)throw Yj(this.telemetry,{component:"core",operation:"hub.runtime_host.read_session_messages",error:Error(f8(Q,"session.messages")),severity:Q.error?.code==="session_not_found"?"warn":"error",handled:!0,context:{command:"session.messages",sessionId:Z,errorCode:Q.error?.code,runtimeAddress:this.runtimeAddress}}),Error(f8(Q,"session.messages"));let J=Q.payload?.messages;return Array.isArray(J)?J:[]}async dispatchHookEvent($){await this.client.command("session.hook",{payload:$})}subscribe($,Z){return this.events.subscribe($,Z)}ensureSessionSubscription($){let Z=$.trim();if(!Z||this.sessionSubscriptions.has(Z))return;let Q=this.client.subscribe((J)=>{this.handleHubEvent(J)},{sessionId:Z});this.sessionSubscriptions.set(Z,typeof Q==="function"?Q:()=>{})}disposeSessionSubscription($){let Z=$.trim();if(!Z)return;this.sessionSubscriptions.get(Z)?.(),this.sessionSubscriptions.delete(Z),this.agentDoneEmittedForCurrentRunBySession.delete(Z)}resolveCapabilities($){return y0(this.defaultCapabilities,$.capabilities)??{}}emitToolCallContentStart($){this.events.emit({type:"agent_event",payload:{sessionId:$.sessionId,event:{type:"content_start",contentType:"tool",toolCallId:$.toolCallId,toolName:$.toolName,input:$.toolInput}}})}emitAgentDoneIfNeeded($){if(this.agentDoneEmittedForCurrentRunBySession.has($.sessionId))return;this.agentDoneEmittedForCurrentRunBySession.add($.sessionId),this.events.emit({type:"agent_event",payload:{sessionId:$.sessionId,event:$x($.payload)}})}handleHubEvent($){let Z=$.sessionId?.trim();if($.event==="capability.requested"){this.handleCapabilityRequest($).catch((Q)=>{this.captureDetachedHubEventError("hub.runtime_host.capability_request",Q,$)});return}if($.event==="capability.resolved"){this.handleCapabilityResolved($);return}if($.event==="approval.requested"){this.handleApprovalRequested($).catch((Q)=>{this.captureDetachedHubEventError("hub.runtime_host.approval_request",Q,$)});return}if(!Z)return;switch($.event){case"run.started":{this.agentDoneEmittedForCurrentRunBySession.delete(Z);let Q=L2($.payload?.snapshot),J=$.payload?.session;if(Q)this.events.emit({type:"session_snapshot",payload:{sessionId:Z,snapshot:Q}});this.events.emit({type:"status",payload:{sessionId:Z,status:J?.status??"running"}});return}case"iteration.started":{this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"iteration_start",iteration:typeof $.payload?.iteration==="number"?$.payload.iteration:0}}});return}case"iteration.finished":{this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"iteration_end",iteration:typeof $.payload?.iteration==="number"?$.payload.iteration:0,hadToolCalls:$.payload?.hadToolCalls===!0,toolCallCount:typeof $.payload?.toolCallCount==="number"?$.payload.toolCallCount:0}}});return}case"session.notice":{let Q=$.payload?.noticeType,J=$.payload?.displayRole,W=$.payload?.reason,X=$.payload?.agent&&typeof $.payload.agent==="object"?$.payload.agent:void 0,Y=X?.teamRole==="lead"||X?.teamRole==="teammate"?X.teamRole:void 0;this.events.emit({type:"agent_event",payload:{sessionId:Z,...Y?{teamRole:Y}:{},...typeof X?.teamAgentId==="string"?{teamAgentId:X.teamAgentId}:{},event:{type:"notice",...typeof X?.agentId==="string"?{agentId:X.agentId}:{},...typeof X?.conversationId==="string"?{conversationId:X.conversationId}:{},...typeof X?.parentAgentId==="string"?{parentAgentId:X.parentAgentId}:{},noticeType:Q==="recovery"||Q==="stop"?Q:"status",message:typeof $.payload?.message==="string"?$.payload.message:"",...J==="system"||J==="status"?{displayRole:J}:{},...typeof W==="string"?{reason:W}:{},...$.payload?.metadata&&typeof $.payload.metadata==="object"?{metadata:$.payload.metadata}:{}}}});return}case"assistant.delta":{let Q=typeof $.payload?.text==="string"?$.payload.text:"";if(!Q)return;this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"content_start",contentType:"text",text:Q}}});return}case"assistant.finished":{this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"content_end",contentType:"text",text:typeof $.payload?.text==="string"?$.payload.text:void 0}}});return}case"reasoning.delta":{let Q=typeof $.payload?.text==="string"?$.payload.text:"",J=$.payload?.redacted===!0;if(!Q&&!J)return;this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"content_start",contentType:"reasoning",reasoning:Q,redacted:J}}});return}case"reasoning.finished":{this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"content_end",contentType:"reasoning",reasoning:typeof $.payload?.reasoning==="string"?$.payload.reasoning:void 0}}});return}case"agent.done":{this.emitAgentDoneIfNeeded({sessionId:Z,payload:$.payload});return}case"usage.updated":{let Q=eI($.payload);this.events.emit({type:"agent_event",payload:{sessionId:Z,event:Q.event,teamAgentId:Q.teamAgentId,teamRole:Q.teamRole}});return}case"tool.started":{let Q=typeof $.payload?.toolCallId==="string"?$.payload.toolCallId:void 0;if(Q&&this.pendingApprovalToolCallIds.delete(Q))return;this.emitToolCallContentStart({sessionId:Z,toolCallId:Q,toolName:typeof $.payload?.toolName==="string"?$.payload.toolName:void 0,toolInput:$.payload?.input});return}case"tool.finished":{let Q=typeof $.payload?.toolCallId==="string"?$.payload.toolCallId:void 0;if(Q)this.pendingApprovalToolCallIds.delete(Q);this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"content_end",contentType:"tool",toolCallId:Q,toolName:typeof $.payload?.toolName==="string"?$.payload.toolName:void 0,output:$.payload?.output,error:typeof $.payload?.error==="string"?$.payload.error:void 0}}});return}case"session.created":case"session.updated":case"session.attached":case"session.detached":{let Q=L2($.payload?.snapshot),J=$.payload?.session;if(Q)this.events.emit({type:"session_snapshot",payload:{sessionId:Z,snapshot:Q}});this.events.emit({type:"status",payload:{sessionId:Z,status:J?.status??"running"}});return}case"session.pending_prompts":{this.events.emit({type:"pending_prompts",payload:{sessionId:Z,prompts:Array.isArray($.payload?.prompts)?$.payload.prompts:[]}});return}case"session.pending_prompt_submitted":{let Q=$.payload?.prompt;if(!Q)return;this.events.emit({type:"pending_prompt_submitted",payload:{sessionId:Z,id:Q.id,prompt:Q.prompt,delivery:Q.delivery,attachmentCount:Q.attachmentCount,userImages:Q.userImages,userFiles:Q.userFiles}});return}case"run.completed":case"run.failed":case"run.aborted":{let Q=L2($.payload?.snapshot),J=typeof $.payload?.reason==="string"?$.payload.reason:$.event==="run.aborted"?"aborted":$.event==="run.failed"?"error":"completed";if(this.emitAgentDoneIfNeeded({sessionId:Z,payload:{...$.payload,reason:J}}),Q?.interactive===!0&&q0(Q.status))return;this.events.emit({type:"ended",payload:{sessionId:Z,reason:J,ts:$.timestamp??Date.now()}});return}default:return}}captureDetachedHubEventError($,Z,Q){try{Yj(this.telemetry,{component:"core",operation:$,error:Z,severity:"warn",handled:!0,context:{event:Q.event,sessionId:Q.sessionId,runtimeAddress:this.runtimeAddress}})}catch{}}async handleCapabilityRequest($){let Z=$.sessionId?.trim();if(!Z)return;let Q=typeof $.payload?.targetClientId==="string"?$.payload.targetClientId:void 0;if(Q&&Q!==this.client.getClientId())return;let J=typeof $.payload?.requestId==="string"?$.payload.requestId:"",W=typeof $.payload?.capabilityName==="string"?$.payload.capabilityName:"";if(!J)return;let X=this.sessionClientContributionHandlers.get(Z)?.get(W);if(!X){await this.client.command("capability.respond",{requestId:J,ok:!1,error:`No client contribution handler registered for capability ${W} in session ${Z}.`},Z).catch(()=>{});return}let Y=$.payload?.payload&&typeof $.payload.payload==="object"&&!Array.isArray($.payload.payload)?$.payload.payload:{},j=new AbortController;this.activeCapabilityAbortControllers.set(J,j);let V=(B)=>{this.client.command("capability.progress",{requestId:J,payload:B},Z).catch((H)=>{this.captureDetachedHubEventError("hub.runtime_host.capability_progress",H,$)})};try{let B=await X({payload:Y,abortSignal:j.signal,progress:V});if(j.signal.aborted)return;await this.client.command("capability.respond",{requestId:J,ok:!0,payload:B},Z)}catch(B){if(j.signal.aborted)return;await this.client.command("capability.respond",{requestId:J,ok:!1,error:B instanceof Error?B.message:String(B)},Z)}finally{this.activeCapabilityAbortControllers.delete(J)}}handleCapabilityResolved($){if($.payload?.cancelled!==!0)return;let Z=typeof $.payload.requestId==="string"?$.payload.requestId.trim():"";if(!Z)return;let Q=this.activeCapabilityAbortControllers.get(Z);if(!Q)return;Q.abort(nI($.payload.error))}async handleApprovalRequested($){let Z=$.sessionId?.trim();if(!Z)return;let Q=this.sessionCapabilities.get(Z)?.requestToolApproval??this.defaultCapabilities.requestToolApproval;if(!Q)return;let J=typeof $.payload?.approvalId==="string"?$.payload.approvalId.trim():"",W=typeof $.payload?.toolCallId==="string"?$.payload.toolCallId:"",X=typeof $.payload?.toolName==="string"?$.payload.toolName:"";if(!J||!W||!X)return;let Y=$.payload?.policy&&typeof $.payload.policy==="object"&&!Array.isArray($.payload.policy)?$.payload.policy:{autoApprove:!1},j=oI($.payload?.inputJson);this.pendingApprovalToolCallIds.add(W),this.emitToolCallContentStart({sessionId:Z,toolCallId:W,toolName:X,toolInput:j});let V=await Promise.resolve(Q({sessionId:Z,agentId:typeof $.payload?.agentId==="string"?$.payload.agentId:"",conversationId:typeof $.payload?.conversationId==="string"?$.payload.conversationId:Z,iteration:typeof $.payload?.iteration==="number"?$.payload.iteration:0,toolCallId:W,toolName:X,input:j,policy:Y})).catch((B)=>({approved:!1,reason:B instanceof Error?B.message:`Tool approval request failed: ${String(B)}`}));await this.client.command("approval.respond",{approvalId:J,approved:V.approved,reason:V.reason},Z).catch(()=>{})}}var E_={};f(E_,{RemoteRuntimeHost:()=>B4});class B4 extends f${constructor($){super({url:U2($.endpoint),authToken:$.authToken,clientType:$.clientType??"core-remote-runtime",displayName:$.displayName??"core remote runtime",capabilities:$.capabilities},{workspaceRoot:$.workspaceRoot,cwd:$.cwd})}}var R_={};f(R_,{SqliteSessionStore:()=>t1});import{existsSync as Qx,mkdirSync as Jx}from"node:fs";import{join as Wx}from"node:path";import{asBool as o9,asOptionalString as o1,asString as s1,ensureSessionSchema as Xx,loadSqliteDb as Yx,nowIso as SQ,toBoolInt as s9}from"@cline/shared/db";import{resolveDbDataDir as jx}from"@cline/shared/storage";class t1{sessionsDirPath;db;constructor($={}){this.sessionsDirPath=$.sessionsDir??jx()}init(){this.getRawDb()}ensureSessionsDir(){if(!Qx(this.sessionsDirPath))Jx(this.sessionsDirPath,{recursive:!0});return this.sessionsDirPath}sessionDbPath(){return Wx(this.ensureSessionsDir(),"sessions.db")}getRawDb(){if(this.db)return this.db;let $=Yx(this.sessionDbPath());return Xx($,{includeLegacyMigrations:!0}),this.db=$,$}close(){this.db?.close?.(),this.db=void 0}run($,Z=[]){return this.getRawDb().prepare($).run(...Z)}queryOne($,Z=[]){return this.getRawDb().prepare($).get(...Z)??void 0}queryAll($,Z=[]){return this.getRawDb().prepare($).all(...Z)}create($){let Z=SQ();this.run(`INSERT OR REPLACE INTO sessions (
564
564
  session_id, source, pid, started_at, ended_at, exit_code, status, status_lock, interactive,
package/dist/hub/index.js CHANGED
@@ -292,7 +292,7 @@ ${JSON.stringify(J,null,2)}`}startClaimLeaseHeartbeat($){let Z=Math.max(1000,Mat
292
292
  error = ?,
293
293
  scheduled_for = COALESCE(?, scheduled_for),
294
294
  updated_at = ?
295
- WHERE run_id = ? AND claim_token = ?`).run($.error??null,$.scheduledFor??null,Z,$.runId,$.claimToken).changes??0)>0}attachSessionIdToRun($,Z){this.db.prepare("UPDATE cron_runs SET session_id = ?, updated_at = ? WHERE run_id = ?").run(Z,T0(),$)}attachReportPathToRun($,Z){this.db.prepare("UPDATE cron_runs SET report_path = ?, updated_at = ? WHERE run_id = ?").run(Z,T0(),$)}}function dZ($){return $?new Date($).getTime():void 0}function WN($){let Z=$.metadata?{...$.metadata}:void 0;if(Z)delete Z.__hubScheduleCreatedBy,delete Z.__hubScheduleCwd,delete Z.__hubRuntimeOptions;return Z}function p4($){let Z=$.metadata;return{scheduleId:$.externalId,name:$.title,cronPattern:$.triggerKind==="one_off"?QH:$.scheduleExpr??"",prompt:$.prompt??"",workspaceRoot:$.workspaceRoot??"",cwd:typeof Z?.__hubScheduleCwd==="string"?Z.__hubScheduleCwd:void 0,modelSelection:$.providerId||$.modelId?{providerId:$.providerId??"",modelId:$.modelId??""}:void 0,enabled:$.enabled&&!$.removed&&$.parseStatus==="valid",mode:$.mode==="plan"?"plan":$.mode==="act"?"act":"yolo",systemPrompt:$.systemPrompt,maxIterations:$.maxIterations,timeoutSeconds:$.timeoutSeconds,maxParallel:$.maxParallel??1,createdAt:new Date($.createdAt).getTime(),updatedAt:new Date($.updatedAt).getTime(),nextRunAt:dZ($.nextRunAt),lastRunAt:dZ($.lastRunAt),createdBy:typeof Z?.__hubScheduleCreatedBy==="string"?Z.__hubScheduleCreatedBy:void 0,tags:$.tags,runtimeOptions:Z?.__hubRuntimeOptions&&typeof Z.__hubRuntimeOptions==="object"&&!Array.isArray(Z.__hubRuntimeOptions)?Z.__hubRuntimeOptions:void 0,metadata:WN($)}}function XN($){switch($){case"done":return"success";case"cancelled":return"aborted";case"running":return"running";case"queued":return"pending";default:return"failed"}}function sJ($,Z){return{executionId:$.runId,scheduleId:Z,sessionId:$.sessionId,triggeredAt:new Date($.scheduledFor??$.createdAt).getTime(),startedAt:dZ($.startedAt),endedAt:dZ($.completedAt),status:XN($.status),errorMessage:$.error}}class r8{store;materializer;runner;started=!1;disposed=!1;constructor($){this.store=new u4({dbPath:$.dbPath}),this.materializer=new y4({store:this.store}),this.runner=new h4({store:this.store,materializer:this.materializer,runtimeHandlers:$.runtimeHandlers,eventPublisher:$.eventPublisher,workspaceRoot:"",specs:$.specs,logger:$.logger,pollIntervalMs:$.pollIntervalMs,claimLeaseSeconds:$.claimLeaseSeconds,globalMaxConcurrency:$.globalMaxConcurrency})}async start(){if(this.disposed)throw Error("HubScheduleService has been disposed");if(this.started)return;this.started=!0,await this.runner.start()}async stop(){await this.runner.stop(),this.started=!1}async dispose(){if(this.disposed)return;this.disposed=!0,await this.runner.dispose(),this.store.close()}createSchedule($){if(this.validateScheduleTiming($.cronPattern,$.metadata,!0),!$.workspaceRoot?.trim())throw Error("workspaceRoot is required for schedules");return p4(this.store.createHubSchedule($))}getSchedule($){let Z=this.store.getHubSchedule($);return Z?p4(Z):void 0}listSchedules($={}){return this.store.listHubSchedules($).map((Z)=>p4(Z))}updateSchedule($,Z){let Q=this.store.getHubSchedule($);if(!Q)return;let J=Z.workspaceRoot!==void 0?Z.workspaceRoot.trim():Q.workspaceRoot,W=Z.enabled??Q.enabled,X=p4(Q);if(this.validateScheduleTiming(Z.cronPattern??X.cronPattern,Z.metadata??X.metadata,W),W&&!J)throw Error("workspaceRoot is required for enabled schedules");let Y=this.store.updateHubSchedule($,{...Z,scheduleId:$});return Y?p4(Y):void 0}validateScheduleTiming($,Z,Q){if($.trim()!==QH){aB($);return}let J=Z?.[JN];if(typeof J!=="number"||!Number.isFinite(J)||Q&&J<=Date.now())throw Error("runAt must be a future timestamp")}deleteSchedule($){return this.store.deleteHubSchedule($)}pauseSchedule($){return this.updateSchedule($,{scheduleId:$,enabled:!1})}resumeSchedule($){return this.updateSchedule($,{scheduleId:$,enabled:!0})}async triggerScheduleNow($){let Z=this.store.enqueueHubScheduleRun($,"manual");if(!Z)return;await this.runner.tick();let Q=this.store.getRun(Z.runId)??Z;return sJ(Q,$)}triggerScheduleNowDetached($){let Z=this.store.enqueueHubScheduleRun($,"manual");if(!Z)return;return this.runner.tick().catch(()=>{return}),sJ(Z,$)}listScheduleExecutions($){let Z=$.scheduleId?this.store.getHubSchedule($.scheduleId):void 0,Q={specId:Z?.specId,limit:$.limit};return this.store.listRuns(Q).map((W)=>{let X=Z??this.store.getSpec(W.specId);if(!X||X.source!=="hub-schedule")return;return sJ(W,X.externalId)}).filter((W)=>{if(!W)return!1;return!$.status||W.status===$.status})}getScheduleStats($){let Z=this.listScheduleExecutions({scheduleId:$,limit:1e4});if(Z.length===0)return{totalRuns:0,successRate:0,avgDurationSeconds:0};let Q=0,J=0,W=0,X;for(let Y of Z){if(Y.status==="success"||Y.status==="completed")Q+=1;if(!X&&Y.status!=="success"&&Y.status!=="completed")X=Y;if(Y.startedAt&&Y.endedAt)W+=Y.endedAt-Y.startedAt,J+=1}return{totalRuns:Z.length,successRate:Q/Z.length,avgDurationSeconds:J>0?W/J/1000:0,lastFailure:X}}getActiveExecutions(){return this.runner.getActiveRuns().flatMap(($)=>{let Z=this.store.getSpec($.specId);if(!Z||Z.source!=="hub-schedule"||!$.sessionId)return[];return[{executionId:$.runId,scheduleId:Z.externalId,sessionId:$.sessionId,startedAt:$.startedAt??new Date().toISOString(),timeoutAt:Z.timeoutSeconds&&$.startedAt?new Date(new Date($.startedAt).getTime()+Z.timeoutSeconds*1000).toISOString():void 0}]})}getUpcomingRuns($=20){let Z={triggerKind:"schedule",enabled:!0,limit:$};return this.store.listSpecs(Z).flatMap((Q)=>Q.source==="hub-schedule"&&Q.nextRunAt?[{spec:Q,nextRunAt:Q.nextRunAt}]:[]).sort((Q,J)=>String(Q.nextRunAt).localeCompare(String(J.nextRunAt))).slice(0,$).map(({spec:Q,nextRunAt:J})=>({scheduleId:Q.externalId,name:Q.title,nextRunAt:J}))}}D7();import{createSessionId as QM,isHubProtocolCompatible as JM,resolveClineBuildEnv as WM,resolveHubCommandTimeoutMs as XM}from"@cline/shared";var gH={};C(gH,{splitCoreSessionConfig:()=>t4,isUnusableSessionError:()=>QW,isSessionNotFoundError:()=>h1,SessionNotFoundError:()=>H$,SESSION_NOT_FOUND_ERROR_CODE:()=>C2});var C2="session_not_found";class H$ extends Error{sessionId;code="session_not_found";constructor($,Z){super(Z??($?`session not found: ${$}`:"session not found"));this.sessionId=$;this.name="SessionNotFoundError"}}function h1($){return $ instanceof H$||typeof $==="object"&&$!==null&&"code"in $&&$.code==="session_not_found"}function XT($){if($ instanceof Error)return $.message;if(typeof $==="object"&&$!==null&&"message"in $){let Z=$.message;return typeof Z==="string"?Z:""}return typeof $==="string"?$:""}function QW($){if(h1($))return!0;if(typeof $==="object"&&$!==null&&"code"in $&&$.code==="session_run_in_progress")return!0;return XT($).includes("shutdown called while a run is in progress")}function t4($){let{hooks:Z,logger:Q,telemetry:J,extensionContext:W,extraTools:X,extensions:Y,onTeamEvent:j,onConsecutiveMistakeLimitReached:V,checkpoint:B,compaction:H,...K}=$,G={};if(Z)G.hooks=Z;if(Q)G.logger=Q;if(J)G.telemetry=J;if(W)G.extensionContext=W;if(X)G.extraTools=X;if(Y)G.extensions=Y;if(j)G.onTeamEvent=j;if(V)G.onConsecutiveMistakeLimitReached=V;if(B?.createCheckpoint)G.checkpoint=B;if(H?.compact)G.compaction=H;let F=Object.keys(G).length>0?G:void 0;return{config:{...K,...B?{checkpoint:{enabled:B.enabled}}:{},...H?{compaction:{enabled:H.enabled,strategy:H.strategy,preserveRecentTokens:H.preserveRecentTokens,summarizer:H.summarizer}}:{}},...F?{localRuntime:F}:{}}}import{spawn as ST}from"node:child_process";import{closeSync as bT,mkdirSync as kT,openSync as yT}from"node:fs";import{basename as IT,dirname as xT,join as hT}from"node:path";import{fileURLToPath as vT}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as gT,isHubDaemonProcess as $K,resolveClineBuildEnv as ZK,withResolvedClineBuildEnv as mT}from"@cline/shared";import{createHash as YT,randomBytes as dH}from"node:crypto";import{existsSync as jT}from"node:fs";import{mkdir as WW,open as cH,readFile as lH,rename as VT,rm as L7,writeFile as BT}from"node:fs/promises";import{dirname as iH,join as XW}from"node:path";import{isHubProtocolCompatible as HT}from"@cline/shared";import{resolveClineDataDir as f2,resolveClineDir as rH}from"@cline/shared/storage";var $6="0.0.73-nightly.1786590402";var Z6={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:$6,repository:{type:"git",url:"https://github.com/cline/cline",directory:"sdk/packages/core"},type:"module",types:"./dist/index.d.ts",main:"./dist/index.js",private:!1,publishConfig:{access:"public"},exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js"},"./hub":{types:"./dist/hub/index.d.ts",import:"./dist/hub/index.js"},"./hub/daemon-entry":{types:"./dist/hub/daemon/entry.d.ts",import:"./dist/hub/daemon/entry.js"},"./telemetry":{types:"./dist/services/telemetry/index.d.ts",import:"./dist/services/telemetry/index.js"},"./services/feature-flags/posthog":{types:"./dist/services/feature-flags/posthog.d.ts",import:"./dist/services/feature-flags/posthog.js"}},scripts:{build:"bun run ./bun.mts && bun tsc -p tsconfig.build.json && bun run ./scripts/verify-runtime-build-id.ts",typecheck:"bun tsc -p tsconfig.dev.json --noEmit && bun run typecheck:smoke","typecheck:smoke":"bun tsc -p tsconfig.smoke.json --noEmit",test:"bun run test:unit && bun run test:e2e","test:live":"vitest run --config vitest.config.ts src/extensions/context/compaction.live.test.ts","test:compaction":"bun --conditions=development run scripts/compact-session.ts","test:unit":"vitest run --config vitest.config.ts","test:e2e":"vitest run --config vitest.e2e.config.ts","verify:routines":"zsh -lc 'bunx vitest run src/cron/schedule-service.test.ts --config vitest.config.ts'","test:watch":"vitest --config vitest.config.ts"},dependencies:{"@cline/agents":"workspace:*","@cline/shared":"workspace:*","@cline/llms":"workspace:*","@modelcontextprotocol/sdk":"^1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.214.0","@opentelemetry/exporter-logs-otlp-http":"^0.214.0","@opentelemetry/exporter-metrics-otlp-http":"^0.214.0","@opentelemetry/exporter-trace-otlp-http":"^0.214.0","@opentelemetry/resources":"^2.6.1","@opentelemetry/sdk-logs":"^0.214.0","@opentelemetry/sdk-metrics":"^2.6.1","@opentelemetry/sdk-trace-base":"^2.6.1","@opentelemetry/sdk-trace-node":"^2.6.1","@opentelemetry/semantic-conventions":"^1.40.0",jiti:"^2.7.0","node-machine-id":"^1.1.12",nanoid:"^5.1.7","simple-git":"3.36.0",ws:"^8.20.0",yaml:"^2.8.2",zod:"^4.3.6"},peerDependencies:{"posthog-node":"^5.8.0"},peerDependenciesMeta:{"posthog-node":{optional:!0}},devDependencies:{"@types/ws":"^8.18.1","posthog-node":"^5.8.0"},engines:{node:">=22"},files:["dist","!dist/**/*.d.ts.map"]};var KT="CLINE_HUB_DISCOVERY_PATH",GT="CLINE_HUB_BUILD_ID",FT="CLINE_HUB_BUILD_EPOCH_MS",UT=30000,DT=15000,uH=100;function LT($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function _T($){return YT("sha256").update($).digest("hex").slice(0,12)}function zT($){if(!Number.isInteger($)||!$||$<=0)return!1;try{return process.kill($,0),!0}catch(Z){return Z instanceof Error&&"code"in Z?String(Z.code)==="EPERM":!1}}function _7(){return dH(32).toString("hex")}function pH($){return new Promise((Z)=>setTimeout(Z,$))}function OT($){return`${$}.lock`}async function AT($){try{let Z=JSON.parse(await lH(XW($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function JW($){await L7($,{recursive:!0,force:!0}).catch(()=>{return})}function Y1(){let $=process.env[GT]?.trim();if($)return $;return"sdk-v1-48203ca9c603a0f260eb4ac760bad41604a627cd852df1a10751236b133db5d0".trim()||`source-${String(Z6.version)}`}function e4(){let $=Number(process.env[FT]);if(Number.isFinite($)&&$>0)return $;return Number.isFinite(1786590424338)?1786590424338:void 0}function w2($,Z=Y1()){let Q=HT($);if(!Q.compatible)return Q;let J=$.buildId?.trim();if(!J)return{compatible:!1,reason:"missing_build"};if(J!==Z)return{compatible:!1,reason:"build_mismatch"};return{compatible:!0}}function v1($,Z){let Q=w2($,Z?.expectedBuildId??Y1());if(Q.compatible)return!0;if(Q.reason!=="build_mismatch")return!1;let J=$.buildEpochMs,W=Z?.expectedBuildEpochMs??e4();return typeof J==="number"&&Number.isFinite(J)&&typeof W==="number"&&Number.isFinite(W)&&J>W}function K$($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${_T($)}`,Q=process.env[KT]?.trim()||XW(f2(),"locks","hub","owners",`${LT(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function aH($=`hub-${Date.now().toString(36)}`){return K$($)}async function E0($){try{let Z=JSON.parse(await lH($,"utf8"));if(typeof Z.hubId!=="string"||typeof Z.protocolVersion!=="string"||typeof Z.authToken!=="string"||typeof Z.host!=="string"||typeof Z.port!=="number"||typeof Z.url!=="string"||typeof Z.startedAt!=="string"||typeof Z.updatedAt!=="string")return;return{hubId:Z.hubId,protocolVersion:Z.protocolVersion,minClientProtocolVersion:typeof Z.minClientProtocolVersion==="string"?Z.minClientProtocolVersion:void 0,maxClientProtocolVersion:typeof Z.maxClientProtocolVersion==="string"?Z.maxClientProtocolVersion:void 0,capabilities:Array.isArray(Z.capabilities)?Z.capabilities.filter((Q)=>typeof Q==="string"):void 0,coreVersion:typeof Z.coreVersion==="string"?Z.coreVersion:void 0,buildId:typeof Z.buildId==="string"?Z.buildId:void 0,buildEpochMs:typeof Z.buildEpochMs==="number"?Z.buildEpochMs:void 0,authToken:Z.authToken,host:Z.host,port:Z.port,url:Z.url,pid:typeof Z.pid==="number"?Z.pid:void 0,startedAt:Z.startedAt,updatedAt:Z.updatedAt}}catch{return}}async function Q6($,Z){await YW($,async()=>{let Q=iH($);await WW(Q,{recursive:!0});let J=`${$}.${process.pid}.${dH(6).toString("hex")}.tmp`,W;try{W=await cH(J,"wx",384),await W.writeFile(`${JSON.stringify(Z,null,2)}
295
+ WHERE run_id = ? AND claim_token = ?`).run($.error??null,$.scheduledFor??null,Z,$.runId,$.claimToken).changes??0)>0}attachSessionIdToRun($,Z){this.db.prepare("UPDATE cron_runs SET session_id = ?, updated_at = ? WHERE run_id = ?").run(Z,T0(),$)}attachReportPathToRun($,Z){this.db.prepare("UPDATE cron_runs SET report_path = ?, updated_at = ? WHERE run_id = ?").run(Z,T0(),$)}}function dZ($){return $?new Date($).getTime():void 0}function WN($){let Z=$.metadata?{...$.metadata}:void 0;if(Z)delete Z.__hubScheduleCreatedBy,delete Z.__hubScheduleCwd,delete Z.__hubRuntimeOptions;return Z}function p4($){let Z=$.metadata;return{scheduleId:$.externalId,name:$.title,cronPattern:$.triggerKind==="one_off"?QH:$.scheduleExpr??"",prompt:$.prompt??"",workspaceRoot:$.workspaceRoot??"",cwd:typeof Z?.__hubScheduleCwd==="string"?Z.__hubScheduleCwd:void 0,modelSelection:$.providerId||$.modelId?{providerId:$.providerId??"",modelId:$.modelId??""}:void 0,enabled:$.enabled&&!$.removed&&$.parseStatus==="valid",mode:$.mode==="plan"?"plan":$.mode==="act"?"act":"yolo",systemPrompt:$.systemPrompt,maxIterations:$.maxIterations,timeoutSeconds:$.timeoutSeconds,maxParallel:$.maxParallel??1,createdAt:new Date($.createdAt).getTime(),updatedAt:new Date($.updatedAt).getTime(),nextRunAt:dZ($.nextRunAt),lastRunAt:dZ($.lastRunAt),createdBy:typeof Z?.__hubScheduleCreatedBy==="string"?Z.__hubScheduleCreatedBy:void 0,tags:$.tags,runtimeOptions:Z?.__hubRuntimeOptions&&typeof Z.__hubRuntimeOptions==="object"&&!Array.isArray(Z.__hubRuntimeOptions)?Z.__hubRuntimeOptions:void 0,metadata:WN($)}}function XN($){switch($){case"done":return"success";case"cancelled":return"aborted";case"running":return"running";case"queued":return"pending";default:return"failed"}}function sJ($,Z){return{executionId:$.runId,scheduleId:Z,sessionId:$.sessionId,triggeredAt:new Date($.scheduledFor??$.createdAt).getTime(),startedAt:dZ($.startedAt),endedAt:dZ($.completedAt),status:XN($.status),errorMessage:$.error}}class r8{store;materializer;runner;started=!1;disposed=!1;constructor($){this.store=new u4({dbPath:$.dbPath}),this.materializer=new y4({store:this.store}),this.runner=new h4({store:this.store,materializer:this.materializer,runtimeHandlers:$.runtimeHandlers,eventPublisher:$.eventPublisher,workspaceRoot:"",specs:$.specs,logger:$.logger,pollIntervalMs:$.pollIntervalMs,claimLeaseSeconds:$.claimLeaseSeconds,globalMaxConcurrency:$.globalMaxConcurrency})}async start(){if(this.disposed)throw Error("HubScheduleService has been disposed");if(this.started)return;this.started=!0,await this.runner.start()}async stop(){await this.runner.stop(),this.started=!1}async dispose(){if(this.disposed)return;this.disposed=!0,await this.runner.dispose(),this.store.close()}createSchedule($){if(this.validateScheduleTiming($.cronPattern,$.metadata,!0),!$.workspaceRoot?.trim())throw Error("workspaceRoot is required for schedules");return p4(this.store.createHubSchedule($))}getSchedule($){let Z=this.store.getHubSchedule($);return Z?p4(Z):void 0}listSchedules($={}){return this.store.listHubSchedules($).map((Z)=>p4(Z))}updateSchedule($,Z){let Q=this.store.getHubSchedule($);if(!Q)return;let J=Z.workspaceRoot!==void 0?Z.workspaceRoot.trim():Q.workspaceRoot,W=Z.enabled??Q.enabled,X=p4(Q);if(this.validateScheduleTiming(Z.cronPattern??X.cronPattern,Z.metadata??X.metadata,W),W&&!J)throw Error("workspaceRoot is required for enabled schedules");let Y=this.store.updateHubSchedule($,{...Z,scheduleId:$});return Y?p4(Y):void 0}validateScheduleTiming($,Z,Q){if($.trim()!==QH){aB($);return}let J=Z?.[JN];if(typeof J!=="number"||!Number.isFinite(J)||Q&&J<=Date.now())throw Error("runAt must be a future timestamp")}deleteSchedule($){return this.store.deleteHubSchedule($)}pauseSchedule($){return this.updateSchedule($,{scheduleId:$,enabled:!1})}resumeSchedule($){return this.updateSchedule($,{scheduleId:$,enabled:!0})}async triggerScheduleNow($){let Z=this.store.enqueueHubScheduleRun($,"manual");if(!Z)return;await this.runner.tick();let Q=this.store.getRun(Z.runId)??Z;return sJ(Q,$)}triggerScheduleNowDetached($){let Z=this.store.enqueueHubScheduleRun($,"manual");if(!Z)return;return this.runner.tick().catch(()=>{return}),sJ(Z,$)}listScheduleExecutions($){let Z=$.scheduleId?this.store.getHubSchedule($.scheduleId):void 0,Q={specId:Z?.specId,limit:$.limit};return this.store.listRuns(Q).map((W)=>{let X=Z??this.store.getSpec(W.specId);if(!X||X.source!=="hub-schedule")return;return sJ(W,X.externalId)}).filter((W)=>{if(!W)return!1;return!$.status||W.status===$.status})}getScheduleStats($){let Z=this.listScheduleExecutions({scheduleId:$,limit:1e4});if(Z.length===0)return{totalRuns:0,successRate:0,avgDurationSeconds:0};let Q=0,J=0,W=0,X;for(let Y of Z){if(Y.status==="success"||Y.status==="completed")Q+=1;if(!X&&Y.status!=="success"&&Y.status!=="completed")X=Y;if(Y.startedAt&&Y.endedAt)W+=Y.endedAt-Y.startedAt,J+=1}return{totalRuns:Z.length,successRate:Q/Z.length,avgDurationSeconds:J>0?W/J/1000:0,lastFailure:X}}getActiveExecutions(){return this.runner.getActiveRuns().flatMap(($)=>{let Z=this.store.getSpec($.specId);if(!Z||Z.source!=="hub-schedule"||!$.sessionId)return[];return[{executionId:$.runId,scheduleId:Z.externalId,sessionId:$.sessionId,startedAt:$.startedAt??new Date().toISOString(),timeoutAt:Z.timeoutSeconds&&$.startedAt?new Date(new Date($.startedAt).getTime()+Z.timeoutSeconds*1000).toISOString():void 0}]})}getUpcomingRuns($=20){let Z={triggerKind:"schedule",enabled:!0,limit:$};return this.store.listSpecs(Z).flatMap((Q)=>Q.source==="hub-schedule"&&Q.nextRunAt?[{spec:Q,nextRunAt:Q.nextRunAt}]:[]).sort((Q,J)=>String(Q.nextRunAt).localeCompare(String(J.nextRunAt))).slice(0,$).map(({spec:Q,nextRunAt:J})=>({scheduleId:Q.externalId,name:Q.title,nextRunAt:J}))}}D7();import{createSessionId as QM,isHubProtocolCompatible as JM,resolveClineBuildEnv as WM,resolveHubCommandTimeoutMs as XM}from"@cline/shared";var gH={};C(gH,{splitCoreSessionConfig:()=>t4,isUnusableSessionError:()=>QW,isSessionNotFoundError:()=>h1,SessionNotFoundError:()=>H$,SESSION_NOT_FOUND_ERROR_CODE:()=>C2});var C2="session_not_found";class H$ extends Error{sessionId;code="session_not_found";constructor($,Z){super(Z??($?`session not found: ${$}`:"session not found"));this.sessionId=$;this.name="SessionNotFoundError"}}function h1($){return $ instanceof H$||typeof $==="object"&&$!==null&&"code"in $&&$.code==="session_not_found"}function XT($){if($ instanceof Error)return $.message;if(typeof $==="object"&&$!==null&&"message"in $){let Z=$.message;return typeof Z==="string"?Z:""}return typeof $==="string"?$:""}function QW($){if(h1($))return!0;if(typeof $==="object"&&$!==null&&"code"in $&&$.code==="session_run_in_progress")return!0;return XT($).includes("shutdown called while a run is in progress")}function t4($){let{hooks:Z,logger:Q,telemetry:J,extensionContext:W,extraTools:X,extensions:Y,onTeamEvent:j,onConsecutiveMistakeLimitReached:V,checkpoint:B,compaction:H,...K}=$,G={};if(Z)G.hooks=Z;if(Q)G.logger=Q;if(J)G.telemetry=J;if(W)G.extensionContext=W;if(X)G.extraTools=X;if(Y)G.extensions=Y;if(j)G.onTeamEvent=j;if(V)G.onConsecutiveMistakeLimitReached=V;if(B?.createCheckpoint)G.checkpoint=B;if(H?.compact)G.compaction=H;let F=Object.keys(G).length>0?G:void 0;return{config:{...K,...B?{checkpoint:{enabled:B.enabled}}:{},...H?{compaction:{enabled:H.enabled,strategy:H.strategy,preserveRecentTokens:H.preserveRecentTokens,summarizer:H.summarizer}}:{}},...F?{localRuntime:F}:{}}}import{spawn as ST}from"node:child_process";import{closeSync as bT,mkdirSync as kT,openSync as yT}from"node:fs";import{basename as IT,dirname as xT,join as hT}from"node:path";import{fileURLToPath as vT}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as gT,isHubDaemonProcess as $K,resolveClineBuildEnv as ZK,withResolvedClineBuildEnv as mT}from"@cline/shared";import{createHash as YT,randomBytes as dH}from"node:crypto";import{existsSync as jT}from"node:fs";import{mkdir as WW,open as cH,readFile as lH,rename as VT,rm as L7,writeFile as BT}from"node:fs/promises";import{dirname as iH,join as XW}from"node:path";import{isHubProtocolCompatible as HT}from"@cline/shared";import{resolveClineDataDir as f2,resolveClineDir as rH}from"@cline/shared/storage";var $6="0.0.74";var Z6={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:$6,repository:{type:"git",url:"https://github.com/cline/cline",directory:"sdk/packages/core"},type:"module",types:"./dist/index.d.ts",main:"./dist/index.js",private:!1,publishConfig:{access:"public"},exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js"},"./hub":{types:"./dist/hub/index.d.ts",import:"./dist/hub/index.js"},"./hub/daemon-entry":{types:"./dist/hub/daemon/entry.d.ts",import:"./dist/hub/daemon/entry.js"},"./telemetry":{types:"./dist/services/telemetry/index.d.ts",import:"./dist/services/telemetry/index.js"},"./services/feature-flags/posthog":{types:"./dist/services/feature-flags/posthog.d.ts",import:"./dist/services/feature-flags/posthog.js"}},scripts:{build:"bun run ./bun.mts && bun tsc -p tsconfig.build.json && bun run ./scripts/verify-runtime-build-id.ts",typecheck:"bun tsc -p tsconfig.dev.json --noEmit && bun run typecheck:smoke","typecheck:smoke":"bun tsc -p tsconfig.smoke.json --noEmit",test:"bun run test:unit && bun run test:e2e","test:live":"vitest run --config vitest.config.ts src/extensions/context/compaction.live.test.ts","test:compaction":"bun --conditions=development run scripts/compact-session.ts","test:unit":"vitest run --config vitest.config.ts","test:e2e":"vitest run --config vitest.e2e.config.ts","verify:routines":"zsh -lc 'bunx vitest run src/cron/schedule-service.test.ts --config vitest.config.ts'","test:watch":"vitest --config vitest.config.ts"},dependencies:{"@cline/agents":"workspace:*","@cline/shared":"workspace:*","@cline/llms":"workspace:*","@modelcontextprotocol/sdk":"^1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.214.0","@opentelemetry/exporter-logs-otlp-http":"^0.214.0","@opentelemetry/exporter-metrics-otlp-http":"^0.214.0","@opentelemetry/exporter-trace-otlp-http":"^0.214.0","@opentelemetry/resources":"^2.6.1","@opentelemetry/sdk-logs":"^0.214.0","@opentelemetry/sdk-metrics":"^2.6.1","@opentelemetry/sdk-trace-base":"^2.6.1","@opentelemetry/sdk-trace-node":"^2.6.1","@opentelemetry/semantic-conventions":"^1.40.0",jiti:"^2.7.0","node-machine-id":"^1.1.12",nanoid:"^5.1.7","simple-git":"3.36.0",ws:"^8.20.0",yaml:"^2.8.2",zod:"^4.3.6"},peerDependencies:{"posthog-node":"^5.8.0"},peerDependenciesMeta:{"posthog-node":{optional:!0}},devDependencies:{"@types/ws":"^8.18.1","posthog-node":"^5.8.0"},engines:{node:">=22"},files:["dist","!dist/**/*.d.ts.map"]};var KT="CLINE_HUB_DISCOVERY_PATH",GT="CLINE_HUB_BUILD_ID",FT="CLINE_HUB_BUILD_EPOCH_MS",UT=30000,DT=15000,uH=100;function LT($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function _T($){return YT("sha256").update($).digest("hex").slice(0,12)}function zT($){if(!Number.isInteger($)||!$||$<=0)return!1;try{return process.kill($,0),!0}catch(Z){return Z instanceof Error&&"code"in Z?String(Z.code)==="EPERM":!1}}function _7(){return dH(32).toString("hex")}function pH($){return new Promise((Z)=>setTimeout(Z,$))}function OT($){return`${$}.lock`}async function AT($){try{let Z=JSON.parse(await lH(XW($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function JW($){await L7($,{recursive:!0,force:!0}).catch(()=>{return})}function Y1(){let $=process.env[GT]?.trim();if($)return $;return"sdk-v1-23146023d96980eb35fe4a79923fdff36e4a81a32af32f6baedec3d0bcf5a7ab".trim()||`source-${String(Z6.version)}`}function e4(){let $=Number(process.env[FT]);if(Number.isFinite($)&&$>0)return $;return Number.isFinite(1786600650387)?1786600650387:void 0}function w2($,Z=Y1()){let Q=HT($);if(!Q.compatible)return Q;let J=$.buildId?.trim();if(!J)return{compatible:!1,reason:"missing_build"};if(J!==Z)return{compatible:!1,reason:"build_mismatch"};return{compatible:!0}}function v1($,Z){let Q=w2($,Z?.expectedBuildId??Y1());if(Q.compatible)return!0;if(Q.reason!=="build_mismatch")return!1;let J=$.buildEpochMs,W=Z?.expectedBuildEpochMs??e4();return typeof J==="number"&&Number.isFinite(J)&&typeof W==="number"&&Number.isFinite(W)&&J>W}function K$($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${_T($)}`,Q=process.env[KT]?.trim()||XW(f2(),"locks","hub","owners",`${LT(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function aH($=`hub-${Date.now().toString(36)}`){return K$($)}async function E0($){try{let Z=JSON.parse(await lH($,"utf8"));if(typeof Z.hubId!=="string"||typeof Z.protocolVersion!=="string"||typeof Z.authToken!=="string"||typeof Z.host!=="string"||typeof Z.port!=="number"||typeof Z.url!=="string"||typeof Z.startedAt!=="string"||typeof Z.updatedAt!=="string")return;return{hubId:Z.hubId,protocolVersion:Z.protocolVersion,minClientProtocolVersion:typeof Z.minClientProtocolVersion==="string"?Z.minClientProtocolVersion:void 0,maxClientProtocolVersion:typeof Z.maxClientProtocolVersion==="string"?Z.maxClientProtocolVersion:void 0,capabilities:Array.isArray(Z.capabilities)?Z.capabilities.filter((Q)=>typeof Q==="string"):void 0,coreVersion:typeof Z.coreVersion==="string"?Z.coreVersion:void 0,buildId:typeof Z.buildId==="string"?Z.buildId:void 0,buildEpochMs:typeof Z.buildEpochMs==="number"?Z.buildEpochMs:void 0,authToken:Z.authToken,host:Z.host,port:Z.port,url:Z.url,pid:typeof Z.pid==="number"?Z.pid:void 0,startedAt:Z.startedAt,updatedAt:Z.updatedAt}}catch{return}}async function Q6($,Z){await YW($,async()=>{let Q=iH($);await WW(Q,{recursive:!0});let J=`${$}.${process.pid}.${dH(6).toString("hex")}.tmp`,W;try{W=await cH(J,"wx",384),await W.writeFile(`${JSON.stringify(Z,null,2)}
296
296
  `,{encoding:"utf8"}),await W.sync(),await W.close(),W=void 0,await VT(J,$);let X;try{X=await cH(Q,"r"),await X.sync()}catch{}finally{await X?.close().catch(()=>{return})}}catch(X){throw await W?.close().catch(()=>{return}),await L7(J,{force:!0}).catch(()=>{return}),X}})}async function M1($){await YW($,async()=>{await L7($,{force:!0}).catch(()=>{return})})}async function z7($,Z){return await YW($,async()=>{if((await E0($))?.hubId!==Z)return!1;return await L7($,{force:!0}),!0})}async function nH($,Z,Q){let J=OT($);await WW(iH(J),{recursive:!0});let W=Date.now()+DT;while(!0){try{await WW(J,{recursive:!1})}catch(X){if((X instanceof Error&&"code"in X?String(X.code):"")!=="EEXIST")throw X;let j=await AT(J);if(!j){if(Date.now()>=W){await JW(J);continue}await pH(uH);continue}let V=Date.now()-Date.parse(j.acquiredAt);if(!zT(j.pid)||V>UT){await JW(J);continue}if(Date.now()>=W)throw Error(`Timed out waiting for hub ${Z} lock ${J}`);await pH(uH);continue}try{return await BT(XW(J,"owner.json"),`${JSON.stringify({pid:process.pid,acquiredAt:new Date().toISOString()},null,2)}
297
297
  `,"utf8"),await Q()}finally{await JW(J)}}}function YW($,Z){return nH(`${$}.mutation`,"discovery mutation",Z)}function J6($,Z){return nH($,"startup",Z)}async function E1($,Z){try{let Q=await fetch(Z?.authToken?jW($):O7($),{headers:Z?.authToken?{authorization:`Bearer ${Z.authToken}`}:void 0});if(!Q.ok)return;let J=await Q.json();if(typeof J.protocolVersion!=="string"||typeof J.host!=="string"||typeof J.port!=="number"||typeof J.url!=="string")return;return{protocolVersion:J.protocolVersion,minClientProtocolVersion:typeof J.minClientProtocolVersion==="string"?J.minClientProtocolVersion:void 0,maxClientProtocolVersion:typeof J.maxClientProtocolVersion==="string"?J.maxClientProtocolVersion:void 0,capabilities:Array.isArray(J.capabilities)?J.capabilities.filter((W)=>typeof W==="string"):void 0,coreVersion:typeof J.coreVersion==="string"?J.coreVersion:void 0,buildId:typeof J.buildId==="string"?J.buildId:void 0,buildEpochMs:typeof J.buildEpochMs==="number"?J.buildEpochMs:void 0,host:J.host,port:J.port,url:J.url,hubId:typeof J.hubId==="string"?J.hubId:void 0,authToken:typeof J.authToken==="string"?J.authToken:void 0,pid:typeof J.pid==="number"?J.pid:void 0,startedAt:typeof J.startedAt==="string"?J.startedAt:void 0,updatedAt:typeof J.updatedAt==="string"?J.updatedAt:void 0}}catch{return}}function R1($,Z,Q="/hub"){return new URL(`ws://${$}:${Z}${Q}`).toString()}function O7($){let Z=new URL($);return Z.protocol=Z.protocol==="wss:"?"https:":"http:",Z.pathname="/health",Z.search="",Z.toString()}function jW($){let Z=new URL(O7($));return Z.pathname="/status",Z.toString()}function oH($){return jT($)}import{CLINE_HUB_DEV_PORT as qT,CLINE_HUB_PORT as NT,resolveClineBuildEnv as TT}from"@cline/shared";var MT="CLINE_HUB_HOST",ET="CLINE_HUB_PORT",RT="CLINE_HUB_PATHNAME",VW="127.0.0.1",BW=NT,HW="/hub";function sH($){return TT($)==="development"?qT:BW}function KW($={}){return($.env??process.env)[MT]?.trim()||VW}function W6($={}){let Q=($.env??process.env)[ET]?.trim();if(!Q)return sH($);let J=Number.parseInt(Q,10);if(!Number.isInteger(J)||J<1||J>65535)return sH($);return J}function GW($={}){return($.env??process.env)[RT]?.trim()||HW}function G$($={},Z={}){return{host:$.host??KW(Z),port:$.port??W6(Z),pathname:$.pathname??GW(Z)}}import{join as CT}from"node:path";var fT="shared:cline",wT="CLINE_HUB_DISCOVERY_PATH",PT="hub-production";function tH($){let Z=I1($.trim());return K$(`workspace:${Z||$.trim()}`)}function s0($=fT){return K$($)}function j1(){return{ownerId:PT,discoveryPath:process.env[wT]?.trim()||CT(f2(),"locks","hub","production.json")}}var cT=8000,uT=200,pT=3000,dT=100,lT=[100,250,500,1000,2000],iT="--cline-hub-daemon";function rT($){return[...$.host?["--host",$.host]:[],...typeof $.port==="number"?["--port",String($.port)]:[],...$.pathname?["--pathname",$.pathname]:[]]}function aT(){try{let $=hT(f2(),"logs","hub-daemon.log");return kT(xT($),{recursive:!0}),{fd:yT($,"a"),logPath:$}}catch{return}}function nT(){return ZK()==="production"?j1():s0()}function $5($){return v1($,{expectedBuildId:Y1()})}function eH($,Z,Q){if(!Z||Z.url!==Q)return $;return{...$,authToken:$.authToken??Z.authToken,pid:$.pid??Z.pid}}async function Z5($,Z){try{return await E1($,{authToken:Z})}catch{return}}async function oT($,Z){let Q=Date.now()+Z;while(Date.now()<Q){if(!(await Z5($))?.url)return!0;await new Promise((W)=>setTimeout(W,dT))}return!1}async function UW($,Z){if(await J5($.url,$.authToken).catch(()=>!1),$.pid)try{process.kill($.pid,"SIGTERM")}catch{}let Q=await oT($.url,pT);return await M1(Z).catch(()=>{return}),Q}async function FW($,Z){if($5($))return!0;return UW($,Z)}async function sT($){if(ZK()!=="production")return;let Z=s0();if(Z.discoveryPath===$.discoveryPath)return;let Q=await E0(Z.discoveryPath);if(Q?.url)await UW(Q,Z.discoveryPath);else await M1(Z.discoveryPath).catch(()=>{return})}function tT(){let $=import.meta.url.endsWith(".ts")?"ts":"js";return vT(new URL(`./entry.${$}`,import.meta.url))}function eT($,Z){let Q=tT(),J=process.execPath?.trim();if(!J)throw Error("unable to resolve runtime executable for hub daemon");let W=IT(J).toLowerCase().includes("bun"),X=Q.startsWith("/$bunfs/"),Y=W&&Q.toLowerCase().endsWith(".ts"),j=X?[iT]:[...Y?["--conditions=development"]:[],Q];return{launcher:J,args:[...j,"--cwd",$,...rT(Z)],cwd:$,env:{...mT(process.env),CLINE_NO_INTERACTIVE:"1",[gT]:"1"}}}function $M($){if(!$||typeof $!=="object")return!1;if(("code"in $?$.code:void 0)==="ETXTBSY")return!0;let Q="message"in $?$.message:void 0;return typeof Q==="string"&&Q.includes("ETXTBSY")}function DW($,Z={}){if($K())return;let Q=eT($,Z),J=aT();try{ST(Q.launcher,Q.args,{detached:!0,stdio:J?["ignore",J.fd,J.fd]:"ignore",env:Q.env,cwd:Q.cwd,windowsHide:!0}).unref()}finally{if(J)bT(J.fd)}}async function LW($,Z={}){for(let Q=0;;Q++)try{DW($,Z);return}catch(J){let W=lT[Q];if(!$M(J)||W===void 0)throw J;await new Promise((X)=>setTimeout(X,W))}}function A7($,Z={}){if($K())return;Q5($,Z).catch(()=>{})}async function ZM($,Z,Q={}){let J=Q.host!==void 0||Q.port!==void 0||Q.pathname!==void 0||!!process.env.CLINE_HUB_PORT?.trim(),W=G$(Q),X=R1(W.host,W.port,W.pathname),Y=(F)=>{if(!J)P2(F.url,F.authToken);return F};await sT($).catch(()=>{return});let j=await E0($.discoveryPath),V=!1;if(j?.url){let F=j.authToken;if(!F)V=!0,await UW(j,$.discoveryPath);else{let U=await Z5(j.url,F);if(U?.url&&$5(U)&&await g1(U.url,{authToken:F}))return Y({url:U.url,authToken:F});if(U?.url)await FW({...U,authToken:F},$.discoveryPath);else await M1($.discoveryPath).catch(()=>{return})}}let B=await Z5(X);if(B?.url){let F=eH(B,j,X);if($5(B)){let D=[B.authToken,j?.authToken].filter((z)=>typeof z==="string"&&z.trim().length>0);for(let z of D){if(!await g1(B.url,{authToken:z}))continue;let L={hubId:B.hubId??`repaired-${B.port}`,protocolVersion:B.protocolVersion,minClientProtocolVersion:B.minClientProtocolVersion,maxClientProtocolVersion:B.maxClientProtocolVersion,capabilities:B.capabilities,coreVersion:B.coreVersion,buildId:B.buildId,authToken:z,host:B.host,port:B.port,url:B.url,pid:B.pid??j?.pid,startedAt:B.startedAt??new Date().toISOString(),updatedAt:new Date().toISOString()};try{await Q6($.discoveryPath,L)}catch{}return Y({url:B.url,authToken:z})}throw Error(`A compatible Cline Hub is already running at ${X}, but its discovery record is missing or unreadable and no usable auth token is available. Run 'cline doctor fix' to repair local hub discovery.${V?" This can happen immediately after upgrading from a build that wrote an empty hub auth token; run 'cline doctor fix' to stop the old daemon and repair local hub discovery.":""}`)}if(!await FW(F,$.discoveryPath)&&Q.allowPortFallback!==!0&&W.port!==0)throw Error(`An incompatible Cline Hub is already running at ${X} and could not be retired automatically. Run 'cline doctor fix' to stop stale hub daemons before starting a new hub.`)}let K=Q.allowPortFallback===!0&&W.port!==0?{...W,port:0}:W;await LW(Z,K);let G=Date.now()+cT;while(Date.now()<G){let F=await E0($.discoveryPath);if(F?.url&&F.authToken){let D=await Z5(F.url,F.authToken);if(D?.url&&$5(D)&&await g1(D.url,{authToken:F.authToken}))return Y({url:D.url,authToken:F.authToken})}let U=await Z5(X);if(U?.url&&!$5(U)){let D=eH(U,F,X);if(!await FW(D,$.discoveryPath)&&Q.allowPortFallback!==!0&&W.port!==0)throw Error(`An incompatible Cline Hub is still running at ${X} and could not be retired automatically. Run 'cline doctor fix' to stop stale hub daemons before starting a new hub.`)}await new Promise((D)=>setTimeout(D,uT))}throw Error("Timed out waiting for detached hub startup.")}async function Q5($,Z={}){let Q=nT();return await J6(Q.discoveryPath,async()=>ZM(Q,$,Z))}function OW(){return WM()==="production"?j1():s0()}function YM(){let $=globalThis.WebSocket;if(!$)throw Error("Global WebSocket is not available in this runtime. Node 22+ is required for hub mode.");return $}function jK($){if(typeof $==="string")return $;if($ instanceof Uint8Array)return Buffer.from($).toString();if($ instanceof ArrayBuffer)return Buffer.from($).toString();if(Array.isArray($))return Buffer.concat($.map((Z)=>Buffer.from(Z))).toString();if($&&typeof $==="object"&&"data"in $&&typeof $.data<"u")return jK($.data);return String($)}function jM($){if(typeof $==="string")return $;if($ instanceof Uint8Array)return Buffer.from($).toString("utf8");if($ instanceof ArrayBuffer)return Buffer.from($).toString("utf8");return""}function QK($){let Z=$,Q=jM(Z.reason);return new d0("hub_connection_closed",Z.code||Q?`Hub connection closed (code=${Z.code??0}${Q?`, reason=${Q}`:""})`:_W,{closeCode:Z.code,closeReason:Q||void 0})}function VM($,Z){if($ instanceof d0)return $;if($ instanceof Error)return new d0("hub_connect_failed",$.message);if($&&typeof $==="object"&&"error"in $&&$.error instanceof Error)return new d0("hub_connect_failed",$.error.message);let Q=$&&typeof $==="object"&&"message"in $&&typeof $.message==="string"?$.message.trim():"";if(Q)return new d0("hub_connect_failed",Q);let J=$&&typeof $==="object"&&"type"in $&&typeof $.type==="string"?$.type.trim():"";return new d0("hub_connect_failed",J?`Failed to connect to hub at ${Z.toString()} (${J} event before socket open).`:`Failed to connect to hub at ${Z.toString()}.`)}var JK="*",WK=8000,BM="cline-hub-auth.",VK=new Map,BK=new Set,HM=3000,KM=3000,GM=100,_W="Hub connection closed",FM=250,UM=5000,XK=0.5;class d0 extends Error{code;details;constructor($,Z,Q){super(Z);this.code=$;this.details=Q;this.name="HubTransportError"}}function AW($){return $ instanceof d0}class X6 extends Error{command;code;constructor($,Z,Q){super(Q);this.command=$;this.code=Z;this.name="HubCommandError"}}function q7($,Z){return $ instanceof X6&&$.code==="hub_command_timeout"&&(Z===void 0||$.command===Z)}function HK($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=qW($.toString());return Q?VK.get(Q):void 0}function DM($){try{let Q=new URL($).hostname.toLowerCase().replace(/^\[|\]$/g,"");return Q==="localhost"||Q==="127.0.0.1"||Q==="::1"}catch{return!1}}function qW($){if(!DM($))return;let Z=new URL(c$($));return Z.search="",Z.hash="",Z.toString()}function zW($){let Z=qW($);return!!Z&&BK.has(Z)}function P2($,Z){let Q=qW($);if(Q){if(BK.add(Q),Z?.trim())VK.set(Q,Z)}return $}class C1{options;socket;connectPromise;clientId;currentUrl;recoveryPromise;pendingReplies=new Map;listeners=new Set;subscriptionCounts=new Map;reconnectTimer;reconnectAttempt=0;closedByClient=!1;lastCloseError=new d0("hub_connection_closed",_W);sawSocketClose=!1;registered=!1;constructor($){this.options=$;this.clientId=$.clientId??`core-${Math.random().toString(36).slice(2,10)}-${Date.now().toString(36)}`,this.currentUrl=$.url}getClientId(){return this.clientId}getUrl(){return this.currentUrl}isConnected(){return this.socket?.readyState===1&&this.registered}getConnectionError(){return this.isConnected()?null:this.lastCloseError}async connect(){if(this.socket&&(this.socket.readyState===1||this.socket.readyState===0))return this.connectPromise??Promise.resolve();this.closedByClient=!1,this.clearReconnectTimer();let $=new URL(this.currentUrl),Z=this.options.authToken?.trim()||HK($);$.hash="";let J=new(YM())($.toString(),Z?[`${BM}${Z}`]:void 0);this.socket=J;let W=!1;this.connectPromise=new Promise((X,Y)=>{let j=!1,V=setTimeout(()=>{if(j)return;j=!0,W=!0,this.lastCloseError=new d0("hub_connect_timeout",`Timed out connecting to hub after ${WK}ms`),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0;try{J.close()}catch{}Y(this.lastCloseError)},WK);J.addEventListener("open",()=>{if(j)return;j=!0,clearTimeout(V),X()}),J.addEventListener("error",(B)=>{if(j)return;j=!0,clearTimeout(V),this.lastCloseError=VM(B,$),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)}),J.addEventListener("close",(B)=>{if(j)return;if(j=!0,clearTimeout(V),!W)this.lastCloseError=QK(B),this.sawSocketClose=!0;this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)})}),J.addEventListener("message",(X)=>{this.handleFrame(JSON.parse(jK(X)))}),J.addEventListener("close",(X)=>{if(this.socket!==J)return;if(!W)this.lastCloseError=QK(X),this.sawSocketClose=!0;this.registered=!1;for(let Y of this.pendingReplies.values())Y.reject(this.lastCloseError);if(this.pendingReplies.clear(),this.connectPromise=void 0,this.socket=void 0,!this.closedByClient&&this.hasActiveSubscriptions())this.scheduleReconnect()}),await this.connectPromise,await this.command("client.register",{clientId:this.clientId,clientType:this.options.clientType??"core",displayName:this.options.displayName??"core",transport:"native",actorKind:"client",workspaceContext:{workspaceRoot:this.options.workspaceRoot,cwd:this.options.cwd}}),this.registered=!0;for(let X of this.subscriptionCounts.keys())this.sendSubscriptionFrame("stream.subscribe",this.subscriptionSessionIdFromKey(X));this.reconnectAttempt=0}subscribe($,Z){let Q=Z?.sessionId?.trim()||void 0,J={listener:$,sessionId:Q};return this.listeners.add(J),this.adjustSubscriptionCount(Q,1),()=>{if(!this.listeners.delete(J))return;this.adjustSubscriptionCount(Q,-1)}}async command($,Z,Q,J){let W=0,X=$!=="client.register"&&$!=="client.unregister";while(!0)try{return await this.commandOnce($,Z,Q,J)}catch(Y){if(!X||W>=1||!await this.recoverLocalHubTransport(Y))throw Y;W+=1}}async commandOnce($,Z,Q,J){await this.connect();let W=QM("hubreq_"),X=XM($,J?.timeoutMs),Y=new Promise((V,B)=>{let H=X===null?void 0:setTimeout(()=>{if(!this.pendingReplies.delete(W))return;B(new X6($,"hub_command_timeout",`Hub command ${$} timed out after ${X}ms (hub=${this.currentUrl}, requestId=${W}, clientId=${this.clientId}). Check hub-daemon.log for matching command.start/command.slow entries, or run 'cline doctor fix' to restart the hub.`))},X);this.pendingReplies.set(W,{resolve:(K)=>{if(H)clearTimeout(H);V(K)},reject:(K)=>{if(H)clearTimeout(H);B(K)}})});try{this.sendFrame({kind:"command",envelope:{version:"v1",command:$,requestId:W,clientId:this.clientId,sessionId:Q,timeoutMs:X,payload:Z}})}catch(V){throw this.pendingReplies.delete(W),V}let j=await Y;if(!j.ok){if(j.error?.code===C2){let V=Q??(typeof Z?.sessionId==="string"?Z.sessionId:void 0);throw new H$(V,j.error.message)}throw new X6($,j.error?.code,j.error?.message??`Hub command ${$} failed`)}return j}async recoverLocalHubTransport($){if(!zW(this.currentUrl)||!AW($))return!1;if(this.recoveryPromise)return await this.recoveryPromise;return this.recoveryPromise=(async()=>{let Z=await S2({workspaceRoot:this.options.workspaceRoot,cwd:this.options.cwd}).catch(()=>{return});if(!Z)return!1;return this.currentUrl=Z,this.close(),!0})().finally(()=>{this.recoveryPromise=void 0}),await this.recoveryPromise}hasActiveSubscriptions(){return this.subscriptionCounts.size>0}clearReconnectTimer(){if(!this.reconnectTimer)return;clearTimeout(this.reconnectTimer),this.reconnectTimer=void 0}scheduleReconnect(){if(this.reconnectTimer||this.closedByClient||!this.hasActiveSubscriptions())return;let $=Math.min(FM*2**this.reconnectAttempt,UM),Z=Math.round($*(1-XK)+Math.random()*$*XK);this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=void 0,this.reconnectSubscribedTransport()},Z)}async reconnectSubscribedTransport(){if(this.closedByClient||!this.hasActiveSubscriptions())return;try{await this.connect(),this.reconnectAttempt=0}catch{if(!zW(this.currentUrl)){this.reconnectAttempt+=1,this.scheduleReconnect();return}try{let $=await S2({workspaceRoot:this.options.workspaceRoot,cwd:this.options.cwd});if($){this.currentUrl=$,await this.connect(),this.reconnectAttempt=0;return}}catch{}this.reconnectAttempt+=1,this.scheduleReconnect()}}close(){let $=this.socket;if(this.closedByClient=!0,this.clearReconnectTimer(),this.registered=!1,!$)return;this.lastCloseError=new d0("hub_connection_closed",_W),this.sawSocketClose=!1;for(let Z of this.pendingReplies.values())Z.reject(this.lastCloseError);this.pendingReplies.clear(),this.connectPromise=void 0,this.socket=void 0;try{$.close()}catch{}}async dispose(){if(this.socket?.readyState===1&&this.registered)try{await this.command("client.unregister",void 0,void 0,{timeoutMs:2000})}catch{}this.close()}sendFrame($){if(!this.socket||this.socket.readyState!==1){if(this.lastCloseError.code==="hub_connection_closed"&&!this.sawSocketClose)throw new d0("hub_connection_not_open","Hub connection is not open.");throw this.lastCloseError}this.socket.send(JSON.stringify($))}sendSubscriptionFrame($,Z){this.sendFrame({kind:$,clientId:this.clientId,...Z?{sessionId:Z}:{}})}adjustSubscriptionCount($,Z){let Q=this.subscriptionKeyForSessionId($),J=(this.subscriptionCounts.get(Q)??0)+Z;if(J<=0){if(this.subscriptionCounts.delete(Q),!this.hasActiveSubscriptions())this.clearReconnectTimer();if(Z<0&&this.socket?.readyState===1)this.sendSubscriptionFrame("stream.unsubscribe",$);return}if(this.subscriptionCounts.set(Q,J),Z>0&&J===1&&this.socket?.readyState===1)this.sendSubscriptionFrame("stream.subscribe",$)}subscriptionKeyForSessionId($){return $??JK}subscriptionSessionIdFromKey($){return $===JK?void 0:$}handleFrame($){switch($.kind){case"reply":{let Z=$.envelope.requestId;if(!Z)return;let Q=this.pendingReplies.get(Z);if(!Q)return;this.pendingReplies.delete(Z),Q.resolve($.envelope);return}case"event":for(let Z of this.listeners){if(Z.sessionId&&Z.sessionId!==$.envelope.sessionId?.trim())continue;Z.listener($.envelope)}return;case"command":case"stream.subscribe":case"stream.unsubscribe":return}}}function c$($){let Z=new URL($);if(Z.protocol==="http:")Z.protocol="ws:";else if(Z.protocol==="https:")Z.protocol="wss:";return Z.toString()}async function g1($,Z){let Q=new C1({url:$,authToken:Z?.authToken,clientType:"hub-healthcheck",displayName:"hub healthcheck",workspaceRoot:Z?.workspaceRoot,cwd:Z?.cwd});try{return await Q.connect(),!0}catch{return!1}finally{Q.close()}}async function YK($,Z){let Q=c$($),J=await E1(Q,{authToken:Z?.authToken});if(!J)return{status:"unreachable",url:Q};if(Z?.requireCurrentBuild){let W=Y1(),X=w2(J,W);if(!X.compatible&&!v1(J,{expectedBuildId:W}))return{status:X.reason==="unsupported_protocol"?"protocol_mismatch":"build_mismatch",url:Q}}else if(!JM(J).compatible)return{status:"protocol_mismatch",url:Q};if(Z?.verifyConnection===!0&&!await g1(Q,{workspaceRoot:Z.workspaceRoot,cwd:Z.cwd,authToken:Z.authToken}))return{status:"unreachable",url:Q};return{status:"compatible",url:Q}}async function LM($){let Z=Date.now()+KM;while(Date.now()<Z){if(!(await E1($).catch(()=>{return}))?.url)return!0;await new Promise((J)=>setTimeout(J,GM))}return!1}function _M($,Z){try{return c$($)===c$(Z)}catch{return!1}}function zM($){return($&&typeof $==="object"&&Array.isArray($.sessions)?$.sessions:[]).some((Q)=>{if(!Q||typeof Q!=="object")return!1;let J=Q;if(J.status==="running"||J.status==="idle"||J.status==="pending")return!0;return Array.isArray(J.participants)&&J.participants.length>0})}async function OM($,Z,Q){let J=new C1({url:$,authToken:Z,clientType:"hub-recovery-check",displayName:"hub recovery check",workspaceRoot:Q?.workspaceRoot,cwd:Q?.cwd});try{let W=await J.command("session.list",{limit:500},void 0,{timeoutMs:HM});return!zM(W.payload)}catch{return!1}finally{await J.dispose().catch(()=>{return})}}async function W5($={}){if($.endpoint?.trim()){let W=await YK($.endpoint);return W.status==="compatible"?W.url:void 0}let Z=OW(),Q=await E0(Z.discoveryPath);if(!Q?.url)return;let J=await YK(Q.url,{authToken:Q.authToken,requireCurrentBuild:!0});if(J.status==="compatible")return P2(J.url,Q.authToken);if(J.status==="protocol_mismatch")await M1(Z.discoveryPath).catch(()=>{return});return}async function S2($={}){let Z=await W5($);if(Z&&await g1(Z,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return Z;if($.endpoint?.trim())return;try{return(await Q5($.workspaceRoot??process.cwd())).url}catch{return}}async function J5($,Z){let Q=new URL($),J=Z?.trim()||HK(Q);if(Q.protocol==="ws:")Q.protocol="http:";else if(Q.protocol==="wss:")Q.protocol="https:";return Q.pathname="/shutdown",Q.hash="",(await fetch(Q,{method:"POST",headers:J?{authorization:`Bearer ${J}`}:void 0})).ok}async function NW($=OW()){let Z=await E0($.discoveryPath);if(!Z?.url)return!1;try{if(await J5(Z.url,Z.authToken))return!0}catch{}return!1}async function N7($){if(!zW($.url))return;let Z=OW(),Q=await E0(Z.discoveryPath);if(!Q?.url||!_M(Q.url,$.url))return;if(!await OM(Q.url,Q.authToken,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return;if(!await NW())return;if(!await LM(Q.url))return;return await M1(Z.discoveryPath).catch(()=>{return}),await S2({workspaceRoot:$.workspaceRoot,cwd:$.cwd})}import{resolveClineBuildEnv as AM}from"@cline/shared";function qM($,Z){if($ instanceof Error)return $;if($&&typeof $==="object"&&"message"in $&&typeof $.message==="string"&&$.message.trim())return Error($.message.trim());let Q=$&&typeof $==="object"&&"type"in $&&typeof $.type==="string"?$.type.trim():"";return Error(Q?`Failed to connect to hub at ${Z} (${Q} event before socket open).`:`Failed to connect to hub at ${Z}.`)}var NM="cline-hub-auth.";function TM($){return $.host!==void 0||$.port!==void 0||$.pathname!==void 0}function MM($,Z){let Q=new URL($),J=new URL(Z);return Q.search="",Q.hash="",J.search="",J.hash="",Q.toString()===J.toString()}function KK(){return AM()==="production"?j1():s0()}async function EM($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=KK(),J=await E0(Q.discoveryPath);if(J?.url&&MM($.toString(),J.url))return J.authToken;return}async function TW($={}){let Z=G$($);if(!TM($)){let Q=KK(),J=await E0(Q.discoveryPath);if(J?.url)return J.url}return R1(Z.host,Z.port,Z.pathname)}async function T7($){return await new Promise((Z,Q)=>{(async()=>{let J=new URL($),W=await EM(J);J.hash="";let X=new WebSocket(J.toString(),W?[`${NM}${W}`]:void 0),Y=new Map,j=0;X.addEventListener("open",()=>{Z({send(V){let B=V.requestId??`hub-client-${++j}`;return new Promise((H,K)=>{Y.set(B,{resolve:H,reject:K});let G={kind:"command",envelope:{...V,requestId:B}};X.send(JSON.stringify(G))})},close(){X.close()}})}),X.addEventListener("message",(V)=>{let B=JSON.parse(String(V.data));if(B.kind==="reply"&&B.envelope.requestId){let H=Y.get(B.envelope.requestId);if(H)Y.delete(B.envelope.requestId),H.resolve(B.envelope)}}),X.addEventListener("close",()=>{for(let V of Y.values())V.reject(Error("Hub connection closed"));Y.clear()}),X.addEventListener("error",(V)=>{Q(qM(V,$))})})().catch(Q)})}async function GK($){try{return(await T7($)).close(),!0}catch{return!1}}async function FK($,Z){let Q=await TW($),J=await T7(Q);try{return await J.send({version:Z.version??"v1",clientId:Z.clientId??"hub-client",...Z})}finally{J.close()}}import{existsSync as RM}from"node:fs";import{isHubDaemonProcess as CM,resolveClineBuildEnv as fM}from"@cline/shared";var wM=1e4,PM="CLINE_HUB_BUILD_WATCH_INTERVAL_MS";function SM(){let $=Number(process.env[PM]);return Number.isFinite($)&&$>0?$:wM}function bM(){return fM()==="production"?j1():s0()}function kM($){try{return RM(`${$}.lock`)}catch{return!1}}async function MW(){let $=bM();if(kM($.discoveryPath))return;let Z=await E0($.discoveryPath).catch(()=>{return});if(!Z?.url)return;let Q=await E1(Z.url).catch(()=>{return});if(!Q?.url)return;let J=Y1(),W=w2(Q,J);if(W.compatible)return;let X=(Y)=>({url:Q.url,reason:Y,hubBuildId:Q.buildId,hubCoreVersion:Q.coreVersion,expectedBuildId:J});if(W.reason==="unsupported_protocol")return X("unsupported_protocol");if(W.reason==="build_mismatch"&&v1(Q,{expectedBuildId:J}))return X("build_mismatch");return}function UK($){if(CM()||process.env.CLINE_HUB_PORT?.trim())return()=>{};let Z=$.intervalMs??SM(),Q,J=!1,W=setInterval(()=>{if(J)return;J=!0,MW().then((X)=>{if(!X){Q=void 0;return}let Y=`${X.reason}:${X.hubBuildId??""}`;if(Y===Q)return;Q=Y,$.onMismatch(X)}).catch(()=>{return}).finally(()=>{J=!1})},Z);return W.unref?.(),()=>{clearInterval(W)}}function EW($){return $?JSON.parse(JSON.stringify($)):{}}function M7($){let Z=$?.session&&typeof $.session==="object"?$.session:void 0;if(!Z)return;let Q=Z.metadata&&typeof Z.metadata==="object"?EW(Z.metadata):void 0;return{sessionId:typeof Z.sessionId==="string"?Z.sessionId:"",parentSessionId:typeof Q?.parentSessionId==="string"?Q.parentSessionId:void 0,status:typeof Z.status==="string"?Z.status:void 0,messagesPath:typeof Q?.messagesPath==="string"?Q.messagesPath:void 0,metadata:Q}}function DK($,Z){return $.error?.message??`hub command failed: ${Z}`}function yM($){let Z=EW($);if(typeof Z.error==="string"&&Z.error.trim())return{...Z,error:Z.error.trim()};let Q=Z.result&&typeof Z.result==="object"?Z.result:void 0;if(typeof Q?.text==="string"&&Q.text.trim())return{...Z,error:Q.text.trim()};let J=Q?.error&&typeof Q.error==="object"?Q.error:void 0;if(typeof J?.message==="string"&&J.message.trim())return{...Z,error:J.message.trim()};return Z}function LK($){let Z=$?.sessionId;return typeof Z==="string"&&Z.trim()?Z.trim():void 0}function IM($){let Z=$?.checkpoint;if(!Z||typeof Z!=="object"||Array.isArray(Z))throw Error("hub checkpoint restore returned no checkpoint");let Q=Z;if(typeof Q.ref!=="string"||typeof Q.createdAt!=="number"||typeof Q.runCount!=="number")throw Error("hub checkpoint restore returned an invalid checkpoint");return Q}function xM($){let Z=EW($.payload);if($.event==="schedule.execution_completed")return{sessionId:$.sessionId?.trim()||LK(Z)||"",eventType:"schedule.execution.completed",payload:Z};if($.event==="schedule.execution_failed")return{sessionId:$.sessionId?.trim()||LK(Z)||"",eventType:"schedule.execution.failed",payload:Z};let Q=$.sessionId?.trim();if(!Q)return;switch($.event){case"iteration.started":return{sessionId:Q,eventType:"runtime.chat.iteration_start",payload:Z};case"iteration.finished":return{sessionId:Q,eventType:"runtime.chat.iteration_end",payload:Z};case"assistant.delta":return{sessionId:Q,eventType:"runtime.chat.text_delta",payload:Z};case"usage.updated":return{sessionId:Q,eventType:"runtime.chat.usage",payload:Z};case"session.notice":return{sessionId:Q,eventType:"runtime.chat.notice",payload:Z};case"tool.started":return{sessionId:Q,eventType:"runtime.chat.tool_call_start",payload:Z};case"tool.finished":return{sessionId:Q,eventType:"runtime.chat.tool_call_end",payload:Z};case"approval.requested":return{sessionId:Q,eventType:"approval.requested",payload:Z};case"run.aborted":return{sessionId:Q,eventType:"runtime.chat.aborted",payload:Z};case"run.failed":return{sessionId:Q,eventType:"runtime.chat.failed",payload:yM($.payload)};case"run.completed":return{sessionId:Q,eventType:"runtime.chat.completed",payload:Z};default:return}}class RW{options;client;metadataApplied=!1;constructor($){this.options=$;this.client=new C1({url:$.address,authToken:$.authToken,clientId:$.clientId,clientType:$.clientType??"hub-session-client",displayName:$.displayName??"hub session client",workspaceRoot:$.workspaceRoot,cwd:$.cwd})}async ensureMetadataApplied(){if(this.metadataApplied||!this.options.metadata){if(!this.options.metadata)await this.client.connect();return}await this.client.connect(),await this.client.command("client.update",{metadata:this.options.metadata}),this.metadataApplied=!0}async connect(){await this.ensureMetadataApplied()}close(){this.client.close()}async dispose(){await this.client.dispose()}async startRuntimeSession($){await this.ensureMetadataApplied();let Z=await this.client.command("session.create",{workspaceRoot:$.workspaceRoot,cwd:$.cwd,sessionConfig:{providerId:$.provider,modelId:$.model,apiKey:$.apiKey,cwd:$.cwd??$.workspaceRoot,workspaceRoot:$.workspaceRoot,systemPrompt:$.systemPrompt??"",mode:$.mode??"act",rules:$.rules,maxIterations:$.maxIterations,timeoutSeconds:$.timeoutSeconds,enableTools:$.enableTools,enableSpawnAgent:$.enableSpawn!==!1,enableAgentTeams:$.enableTeams!==!1,disableMcpSettingsTools:$.disableMcpSettingsTools,missionLogIntervalSteps:$.missionStepInterval,missionLogIntervalMs:$.missionTimeIntervalMs},metadata:{source:$.source??"cli",provider:$.provider,model:$.model,enableTools:$.enableTools,enableSpawn:$.enableSpawn,enableTeams:$.enableTeams,prompt:void 0,interactive:$.interactive!==!1},runtimeOptions:{mode:$.mode,systemPrompt:$.systemPrompt,maxIterations:$.maxIterations,timeoutSeconds:$.timeoutSeconds,enableTools:$.enableTools,enableSpawn:$.enableSpawn,enableTeams:$.enableTeams,autoApproveTools:$.autoApproveTools,toolExecutors:$.toolExecutors,configExtensions:$.configExtensions},modelSelection:{provider:$.provider,model:$.model,apiKey:$.apiKey},toolPolicies:$.toolPolicies}),Q=M7(Z.payload);if(!Q?.sessionId)throw Error("hub session create returned no session id");return{sessionId:Q.sessionId,startResult:{sessionId:Q.sessionId,manifestPath:"",messagesPath:Q.messagesPath??""}}}async sendRuntimeSession($,Z,Q){return await this.ensureMetadataApplied(),{result:(await this.client.command("session.send_input",{prompt:Z.prompt,mode:Z.config.mode,attachments:Z.attachments,delivery:Z.delivery,timeoutSeconds:Z.config.timeoutSeconds},$,Q)).payload?.result}}async stopRuntimeSession($){return await this.ensureMetadataApplied(),await this.client.command("session.detach",{sessionId:$},$),{applied:!0}}async abortRuntimeSession($){return await this.ensureMetadataApplied(),await this.client.command("run.abort",{sessionId:$},$),{applied:!0}}async updateSession($){return await this.ensureMetadataApplied(),await this.client.command("session.update",{sessionId:$.sessionId,metadata:$.metadata},$.sessionId),{updated:!0}}async getSession($){await this.ensureMetadataApplied();let Z;try{Z=await this.client.command("session.get",void 0,$)}catch(Q){if(h1(Q))return;throw Q}return M7(Z.payload)}async readMessages($){let Z=$.trim();if(!Z)return[];await this.ensureMetadataApplied();let Q=await this.client.command("session.messages",{sessionId:Z},Z);if(!Q.ok)throw Error(DK(Q,"session.messages"));let J=Q.payload?.messages;return Array.isArray(J)?J:[]}async restore($){let Z=$.sessionId.trim();if(!Z)throw Error("sessionId is required");let Q=$.restore?.messages!==!1;if(Q&&!$.config)throw Error("config is required when restore.messages is true");await this.ensureMetadataApplied();let J=$.config,W=await this.client.command("session.restore",{sessionId:Z,checkpointRunCount:$.checkpointRunCount,restore:$.restore,...J?{workspaceRoot:J.workspaceRoot,cwd:J.cwd,sessionConfig:{providerId:J.provider,modelId:J.model,apiKey:J.apiKey,cwd:J.cwd??J.workspaceRoot,workspaceRoot:J.workspaceRoot,systemPrompt:J.systemPrompt??"",mode:J.mode??"act",rules:J.rules,maxIterations:J.maxIterations,enableTools:J.enableTools,enableSpawnAgent:J.enableSpawn!==!1,enableAgentTeams:J.enableTeams!==!1,disableMcpSettingsTools:J.disableMcpSettingsTools,missionLogIntervalSteps:J.missionStepInterval,missionLogIntervalMs:J.missionTimeIntervalMs},metadata:{source:J.source??"cli",provider:J.provider,model:J.model,enableTools:J.enableTools,enableSpawn:J.enableSpawn,enableTeams:J.enableTeams,prompt:void 0,interactive:J.interactive!==!1},runtimeOptions:{mode:J.mode,systemPrompt:J.systemPrompt,maxIterations:J.maxIterations,enableTools:J.enableTools,enableSpawn:J.enableSpawn,enableTeams:J.enableTeams,autoApproveTools:J.autoApproveTools,configExtensions:J.configExtensions},modelSelection:{provider:J.provider,model:J.model,apiKey:J.apiKey},toolPolicies:J.toolPolicies}:{}},Z);if(!W.ok)throw Error(DK(W,"session.restore"));let X=M7(W.payload);if(Q&&!X?.sessionId)throw Error("hub checkpoint restore returned no session id");let Y=Array.isArray(W.payload?.messages)?W.payload.messages:void 0,j=IM(W.payload);return{sessionId:X?.sessionId,startResult:X?.sessionId?{sessionId:X.sessionId,manifestPath:"",messagesPath:X.messagesPath??""}:void 0,...Y?{messages:Y}:{},checkpoint:j}}async listSessions($){await this.ensureMetadataApplied();let Z=await this.client.command("session.list",{limit:$?.limit??200});return(Array.isArray(Z.payload?.sessions)?Z.payload?.sessions:[]).map((J)=>M7({session:J})).filter((J)=>Boolean(J?.sessionId))}async deleteSession($,Z=!0){return await this.ensureMetadataApplied(),(await this.client.command("session.delete",{sessionId:$,deleteCheckpointRefs:Z})).payload?.deleted===!0}async respondToolApproval($){await this.ensureMetadataApplied(),await this.client.command("approval.respond",{approvalId:$.approvalId,approved:$.approved,payload:$.reason?{reason:$.reason}:void 0,responderClientId:$.responderClientId})}streamEvents($,Z){let Q=new Set(($.sessionIds??[]).map((W)=>W.trim()).filter(Boolean)),J=this.client.subscribe((W)=>{let X=xM(W);if(!X)return;if(Q.size>0&&!Q.has(X.sessionId))return;Z.onEvent?.(X)});return this.ensureMetadataApplied().catch((W)=>{Z.onError?.(W instanceof Error?W:Error(String(W)))}),J}streamTeamProgress($,Z){let Q=this.client.subscribe((J)=>{if(J.event!=="team.progress"||!J.payload)return;Z.onProjection?.(J.payload)});return this.ensureMetadataApplied().catch((J)=>{Z.onError?.(J instanceof Error?J:Error(String(J)))}),Q}async createSchedule($){return await this.ensureMetadataApplied(),(await this.client.command("schedule.create",$)).payload?.schedule}async listSchedules($){await this.ensureMetadataApplied();let Z=await this.client.command("schedule.list");return Array.isArray(Z.payload?.schedules)?Z.payload?.schedules:[]}async getSchedule($){return await this.ensureMetadataApplied(),(await this.client.command("schedule.get",{scheduleId:$})).payload?.schedule}async updateSchedule($,Z){return await this.ensureMetadataApplied(),(await this.client.command("schedule.update",{scheduleId:$,...Z})).payload?.schedule}async pauseSchedule($){return await this.ensureMetadataApplied(),(await this.client.command("schedule.disable",{scheduleId:$})).payload?.schedule}async resumeSchedule($){return await this.ensureMetadataApplied(),(await this.client.command("schedule.enable",{scheduleId:$})).payload?.schedule}async deleteSchedule($){return await this.ensureMetadataApplied(),(await this.client.command("schedule.delete",{scheduleId:$})).payload?.deleted===!0}async triggerScheduleNow($){return await this.ensureMetadataApplied(),(await this.client.command("schedule.trigger",{scheduleId:$})).payload?.execution}async listScheduleExecutions($,Z){await this.ensureMetadataApplied();let Q=await this.client.command("schedule.list_executions",{scheduleId:$,limit:Z});return Array.isArray(Q.payload?.executions)?Q.payload?.executions:[]}async getScheduleStats(){return await this.ensureMetadataApplied(),(await this.client.command("schedule.stats")).payload?.stats}async getActiveScheduledExecutions(){await this.ensureMetadataApplied();let $=await this.client.command("schedule.active");return Array.isArray($.payload?.executions)?$.payload?.executions:[]}async getUpcomingScheduledRuns($){await this.ensureMetadataApplied();let Z=await this.client.command("schedule.upcoming",{limit:$});return Array.isArray(Z.payload?.upcoming)?Z.payload?.upcoming:[]}}class CW{client;constructor($){this.client=new C1({url:$.address,authToken:$.authToken,clientId:$.clientId,clientType:$.clientType??"hub-ui-client",displayName:$.displayName??"hub ui client"})}async connect(){await this.client.connect()}close(){this.client.close()}async dispose(){await this.client.dispose()}getClientId(){return this.client.getClientId()}async sendNotify($){await this.client.command("ui.notify",$)}async sendShowWindow($){await this.client.command("ui.show_window",$??{})}async listClients(){let $=await this.client.command("client.list");return Array.isArray($.payload?.clients)?$.payload.clients:[]}async listSessions($=200){let Z=await this.client.command("session.list",{limit:$});return Array.isArray(Z.payload?.sessions)?Z.payload.sessions:[]}async toggleSetting($){let Z=await this.client.command("settings.toggle",$);if(!Z.ok)throw Error(Z.error?.message??"settings.toggle failed");return Z.payload}subscribeUI($){return this.client.subscribe((Z)=>{switch(Z.event){case"ui.notify":$.onNotify?.(Z.payload);break;case"ui.show_window":$.onShowWindow?.(Z.payload);break;case"hub.client.registered":$.onClientRegistered?.(Z.payload??{});break;case"hub.client.disconnected":$.onClientDisconnected?.(Z.payload??{});break;case"session.created":$.onSessionCreated?.(Z.payload??{});break;case"session.updated":$.onSessionUpdated?.(Z.payload??{});break;case"session.detached":$.onSessionDetached?.(Z.payload??{});break}})}}import{normalizeProviderId as np}from"@cline/llms";var oO={};C(oO,{LocalRuntimeHost:()=>t1});import{readdirSync as mp}from"node:fs";import{homedir as cp}from"node:os";import{isAbsolute as up,join as jB,resolve as VB}from"node:path";import{captureSdkError as k1,createSessionId as pp,isLikelyAuthError as dp,normalizeUserInput as lp}from"@cline/shared";import{setHomeDirIfUnset as ip}from"@cline/shared/storage";var iK={};C(iK,{saveProviderOAuthCredentials:()=>k2,resolveProviderApiKeyFromSettings:()=>pW,loginAndSaveProviderOAuthCredentials:()=>F5,isOAuthProvider:()=>p$,getProviderOAuthCredentialsFromSettings:()=>U5,getProviderAuthStorageId:()=>uW,getProviderAuthHandler:()=>z0,getPersistedProviderApiKey:()=>K6,formatProviderOAuthApiKey:()=>dW});import{decodeJwtPayload as OE,getClineEnvironmentConfig as dK}from"@cline/shared";var CK={};C(CK,{startClineDeviceAuth:()=>xW,refreshClineToken:()=>f7,loginClineOAuth:()=>X5,getValidClineCredentials:()=>Y5,completeClineDeviceAuth:()=>hW});import{decodeJwtPayload as pM,getClineEnvironmentConfig as PW}from"@cline/shared";var _K={};C(_K,{setSdkLogger:()=>wW,sdkDebug:()=>Q0,hashSecret:()=>S0,getSdkLogger:()=>vM});import{createHash as hM}from"node:crypto";var fW;function wW($){fW=$}function vM(){return fW}function S0($){if(typeof $!=="string"||$.length===0)return"unset";return hM("sha256").update($).digest("hex").slice(0,8)}function Q0($){try{fW?.debug($)}catch{}}M0();var zK={};C(zK,{startLocalOAuthServer:()=>f1});function gM(){let $;return{promise:new Promise((Q)=>{$=Q}),resolve:$}}async function f1($){let Z=await import("node:http"),Q=$.host??"127.0.0.1",J=$.timeoutMs??300000,W=$.successHtml??mM,X=gM(),Y=!1,j=null,V=null,B=null,H=(F)=>{if(Y)return;Y=!0,X.resolve(F)},K=()=>{if(j)clearTimeout(j),j=null;let F=B;if(B=null,V)V.close(),V.closeAllConnections?.(),V=null;if(F!==null&&$.onClose)Promise.resolve($.onClose({host:Q,port:F})).catch(()=>{})},G=async()=>{return j=setTimeout(()=>{K(),H(null)},J),X.promise};for(let F of $.ports){let U=Z.createServer((_,z)=>{try{let L=new URL(_.url||"",`http://${Q}:${F}`);if(L.pathname!==$.callbackPath){z.statusCode=404,z.end("Not found");return}let q={url:L,code:L.searchParams.get("code")??void 0,state:L.searchParams.get("state")??void 0,provider:L.searchParams.get("provider")??void 0,error:L.searchParams.get("error")??void 0};if(q.error){z.statusCode=400,z.end(`Authentication failed: ${q.error}`),K(),H(q);return}if(!q.code){z.statusCode=400,z.end("Missing authorization code");return}if($.expectedState&&q.state!==$.expectedState){z.statusCode=400,z.end("State mismatch");return}z.statusCode=200,z.setHeader("Content-Type","text/html; charset=utf-8"),z.end(W),K(),H(q)}catch{z.statusCode=500,z.end("Internal error")}}),D=await new Promise((_)=>{let z=(L)=>{U.off("error",z),_({bound:!1,error:L})};U.once("error",z),U.listen(F,Q,()=>{U.off("error",z),V=U,_({bound:!0})})});if(D.error){if(D.error.code==="EADDRINUSE")continue;throw K(),D.error}if(D.bound){B=F;let _=`http://${Q}:${F}${$.callbackPath}`;if($.onListening)await Promise.resolve($.onListening({host:Q,port:F,callbackUrl:_})).catch(()=>{});return{callbackUrl:_,waitForCallback:G,cancelWait:()=>{K(),H(null)},close:()=>{K(),H(null)}}}}return{callbackUrl:"",waitForCallback:async()=>null,cancelWait:()=>{},close:()=>{}}}var mM=`<!DOCTYPE html>
298
298
  <html lang="en">
package/dist/index.js CHANGED
@@ -490,7 +490,7 @@ ${JSON.stringify(J,null,2)}`}startClaimLeaseHeartbeat($){let Z=Math.max(1000,Mat
490
490
  `)[0]?.trim())}function N$($){if(!$)return;let Z={...$},Q=G2(typeof Z.title==="string"?Z.title:void 0);if(Q)Z.title=Q;else delete Z.title;return Object.keys(Z).length>0?Z:void 0}function a6($){let Z=N$($.metadata)??{},Q=$.title!==void 0?G2($.title):jJ($.prompt);if(Q)Z.title=Q;return Object.keys(Z).length>0?Z:void 0}function VJ($){let Z=u2($.metadata),Q={source:$.source,mode:Z?.mode??"user",sessionId:$.sessionId,...$.parentSessionId?{parentThreadId:$.parentSessionId}:{},...$.agentId?{subagent:$.agentId}:{},...Z?.version?{version:Z.version}:{},...Z?.trigger?{trigger:Z.trigger}:{}};if(i6($.sessionId))return{agent:"teammate",sessionId:$.sessionId,taskType:"team",origin:Q};if(S9($.sessionId))return{agent:"subagent",sessionId:$.sessionId,taskType:"subagent_task",origin:Q};return{agent:"lead",sessionId:$.sessionId,origin:Q}}function BJ($){return{version:1,updated_at:$.updatedAt,agent:$.context.agent,sessionId:$.context.sessionId,...$.context.taskType?{taskType:$.context.taskType}:{},origin:$.context.origin,messages:b9($.messages),...$.systemPrompt?{system_prompt:$.systemPrompt}:{}}}function bK($,Z,Q){_f(Of($),{recursive:!0}),zf($,`${JSON.stringify(BJ({updatedAt:Z,context:Q,messages:[]}),null,2)}
491
491
  `,"utf8")}function kK($,Z){return r0.parse({version:1,session_id:$.sessionId,source:$.source,pid:$.pid,started_at:$.startedAt,ended_at:Z?.endedAt??$.endedAt??void 0,exit_code:Z?.exitCode??$.exitCode??void 0,status:Z?.status??$.status,interactive:$.interactive,provider:$.provider,model:$.model,cwd:$.cwd,workspace_root:$.workspaceRoot,team_name:$.teamName??void 0,enable_tools:$.enableTools,enable_spawn:$.enableSpawn,enable_teams:$.enableTeams,prompt:$.prompt??void 0,metadata:Z?.metadata??$.metadata??void 0,messages_path:$.messagesPath??void 0})}async function yK($,Z,Q){let J=0;while(!0){let W=await $();if(W===void 0)return{updated:!1};let X=await Z(W);if(typeof X==="object"&&X!==null&&"updated"in X&&X.updated===!1){if(J+=1,J>=Q)return X;continue}return X}}import{existsSync as Mf}from"node:fs";import{readFile as Ef}from"node:fs/promises";class n6{listeners=new Set;subscribe($,Z){let Q={listener:$,sessionId:Z?.sessionId?.trim()||void 0};return this.listeners.add(Q),()=>{this.listeners.delete(Q)}}emit($){let Z=$.payload.sessionId?.trim();for(let Q of this.listeners){if(Q.sessionId&&Q.sessionId!==Z)continue;Q.listener($)}}get size(){return this.listeners.size}}async function T$($){let Z=$?.trim();if(!Z||!Mf(Z))return[];try{let Q=(await Ef(Z,"utf8")).trim();if(!Q)return[];let J=JSON.parse(Q);if(Array.isArray(J))return J;if(J&&typeof J==="object"&&!Array.isArray(J)){let W=J.messages;if(Array.isArray(W))return W}return[]}catch{return[]}}function HJ($){return $?{...$}:void 0}async function IK($,Z){if(!($.hookName==="tool_call"||!!$.parent_agent_id))return;await Z.queueSpawnRequest($);let J=await Z.upsertSubagentSessionFromHook($);if(!J)return;await Z.appendSubagentHookAudit(J,$),await Z.applySubagentStatus(J,$)}function o6($){if(typeof $!=="string")return;let Z=$.trim();return Z.length>0?Z:void 0}function J1($){let Z=o6($);if(!Z)return;return Z.toLowerCase()==="unknown"?void 0:Z}function y9($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function wf($){if(!$||typeof $!=="object"||Array.isArray($))return;return{...$}}function GJ($){let Z=$??200;return Number.isFinite(Z)?Math.max(0,Math.floor(Z)):200}function Pf($){if($===0)return 0;return Math.min(Math.max($*2,20),2000)}function Sf($){return $.isSubagent!==!0&&!o6($.parentSessionId)}function bf($){let Z=$.match(/\d{13,}/g);if(!Z||Z.length===0)return 0;let Q=0;for(let J of Z){let W=Number.parseInt(J,10);if(Number.isFinite(W)&&W>Q)Q=W}return Q}function FJ($){return{sessionId:$.session_id,source:$.source,pid:$.pid,startedAt:$.started_at,endedAt:$.ended_at??null,exitCode:$.exit_code??null,status:$.status,interactive:$.interactive,provider:$.provider,model:$.model,cwd:$.cwd,workspaceRoot:$.workspace_root,teamName:$.team_name,enableTools:$.enable_tools,enableSpawn:$.enable_spawn,enableTeams:$.enable_teams,isSubagent:!1,prompt:$.prompt,metadata:$.metadata,messagesPath:$.messages_path,updatedAt:$.ended_at??$.started_at}}async function kf($){let Z=GJ($);if(Z===0)return[];let Q=gK(),W=(await Rf(Q,{withFileTypes:!0}).catch(()=>[])).filter((Y)=>Y.isDirectory()).map((Y)=>({entry:Y,recency:bf(Y.name.trim())})).sort((Y,j)=>j.recency-Y.recency||j.entry.name.localeCompare(Y.entry.name));return(await Promise.all(W.map(async({entry:Y})=>{let j=Y.name.trim();if(!j)return;let V=vK(Q,j,`${j}.json`),B=await hK(V,"utf8").catch(()=>{return});if(!B)return;let H;try{H=JSON.parse(B)}catch{return}let K=r0.safeParse(H);if(!K.success)return;return FJ(K.data)}))).filter((Y)=>Boolean(Y)).sort((Y,j)=>j.startedAt.localeCompare(Y.startedAt)).slice(0,Z)}async function yf($,Z,Q){let J=GJ(Z);if(J===0)return await $.listSessions(0),[];let W=Q.includeSubagents?J:Pf(J),X=await $.listSessions(W);return(Q.includeSubagents?X:X.filter(Sf)).slice(0,J)}function If($){if(typeof $==="string")return $.trim();let Z=[];for(let Q of $){if(!Q||typeof Q!=="object")continue;let J=Q;if(J.type!=="text")continue;let W=J.text?.trim();if(W)Z.push(W)}return Z.join(`
492
492
  `).trim()}function xK($){return $.replace(/\s+/g," ").trim()}function xf($,Z){if($.length<=Z)return $;return`${$.slice(0,Math.max(0,Z-3)).trimEnd()}...`}function hf($){for(let Z of["user","assistant"])for(let Q of $){if(Q.role!==Z)continue;let J=xK(If(Q.content));if(!J)continue;let W=Z==="user"?xK(Cf(J)):J,X=ff(W.split(`
493
- `)[0]??W);return xf(X,50)}return}function vf($){let Z=0;for(let Q of $)Z+=y9(Q.metrics?.cost)??0;return Z}function gf($){let Z,Q;for(let J=$.length-1;J>=0;J-=1){let W=$[J];if(!Z)Z=J1(W.modelInfo?.provider);if(!Q)Q=J1(W.modelInfo?.id);if(Z&&Q)break}return{provider:Z,model:Q}}function mf($){return J1($?.provider)??J1($?.provider&&typeof $.provider==="object"&&!Array.isArray($.provider)?$.provider.id:void 0)}function cf($){return J1($?.model)??J1($?.model&&typeof $.model==="object"&&!Array.isArray($.model)?$.model.id:void 0)}function KJ($,Z){let Q=wf($.metadata),J=o6(Z?.title)??o6(Q?.title),W=y9(Z?.totalCost)??y9(Q?.totalCost),X=Q||J!==void 0||W!==void 0?{...Q??{},...J!==void 0?{title:J}:{},...W!==void 0?{totalCost:W}:{}}:void 0;return{...$,provider:J1(Z?.provider)??J1($.provider)??mf(Q)??"",model:J1(Z?.model)??J1($.model)??cf(Q)??"",metadata:X}}function uf($){let Z=$.content;if(!Array.isArray(Z))return!1;return Z.some((Q)=>!!Q&&typeof Q==="object"&&Q.type==="tool-call")}function pf($,Z){if($.status!=="running"||$.interactive!==!0)return!1;let Q=Z.at(-1);return Q?.role==="assistant"&&!uf(Q)}async function df($,Z){return await Promise.all(Z.map(async(Q)=>{if(Q.status!=="running"||Q.interactive!==!0)return Q;let J=await $.readSessionMessages(Q.sessionId);return pf(Q,J)?{...Q,status:"idle"}:Q}))}async function lf($,Z){return await Promise.all(Z.map(async(Q)=>{let J=KJ(Q),W=Boolean(o6(J.metadata?.title)),X=Boolean(J1(J.provider)),Y=Boolean(J1(J.model)),j=y9(J.metadata?.totalCost),V=j!==void 0&&j>0;if(W&&X&&Y&&V)return J;let B=await $.readSessionMessages(Q.sessionId);if(B.length===0)return J;let H=gf(B),K=vf(B);return KJ(Q,{title:W?void 0:hf(B),provider:X?void 0:H.provider,model:Y?void 0:H.model,totalCost:V||K<=0?void 0:K})}))}async function UJ($,Z={}){let Q=GJ(Z.limit),J=Z.includeSubagents===!0,W=await yf($,Q,{includeSubagents:J}),X=Z.includeManifestFallback===!0&&W.length<Q?await kf(Math.min(Math.max(Q*2,100),500)):[],Y=new Map;for(let B of[...W,...X]){if(Y.has(B.sessionId))continue;Y.set(B.sessionId,B)}let j=X.length===0?W:Array.from(Y.values()).sort((B,H)=>H.startedAt.localeCompare(B.startedAt)).slice(0,Q),V=await df($,j);if(Z.hydrate===!1)return V.map((B)=>KJ(B));return await lf($,V)}async function rf($){let Z=$.trim();if(!Z)return;let Q=vK(gK(),Z,`${Z}.json`),J=await hK(Q,"utf8").catch(()=>{return});if(!J)return;try{let W=r0.safeParse(JSON.parse(J));return W.success?W.data.messages_path:void 0}catch{return}}async function af($,Z={}){let Q=new Map;return await UJ({listSessions:async(W)=>{let X=await $.listSessions(W);Q.clear();for(let Y of X)Q.set(Y.sessionId,Y);return X.map(r6)},readSessionMessages:async(W)=>{let X=Q.get(W)?.messagesPath??await rf(W);return await T$(X)}},Z)}import{captureSdkError as cU}from"@cline/shared";import{createSessionId as ew,isHubProtocolCompatible as $P,resolveClineBuildEnv as ZP,resolveHubCommandTimeoutMs as QP}from"@cline/shared";import{spawn as Rw}from"node:child_process";import{closeSync as Cw,mkdirSync as fw,openSync as ww}from"node:fs";import{basename as Pw,dirname as Sw,join as bw}from"node:path";import{fileURLToPath as kw}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as yw,isHubDaemonProcess as eK,resolveClineBuildEnv as $G,withResolvedClineBuildEnv as Iw}from"@cline/shared";import{createHash as nf,randomBytes as dK}from"node:crypto";import{existsSync as of}from"node:fs";import{mkdir as LJ,open as cK,readFile as lK,rename as sf,rm as I9,writeFile as tf}from"node:fs/promises";import{dirname as iK,join as _J}from"node:path";import{isHubProtocolCompatible as ef}from"@cline/shared";import{resolveClineDataDir as s6,resolveClineDir as bo}from"@cline/shared/storage";var O8="0.0.73-nightly.1786590402";var A8={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:O8,repository:{type:"git",url:"https://github.com/cline/cline",directory:"sdk/packages/core"},type:"module",types:"./dist/index.d.ts",main:"./dist/index.js",private:!1,publishConfig:{access:"public"},exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js"},"./hub":{types:"./dist/hub/index.d.ts",import:"./dist/hub/index.js"},"./hub/daemon-entry":{types:"./dist/hub/daemon/entry.d.ts",import:"./dist/hub/daemon/entry.js"},"./telemetry":{types:"./dist/services/telemetry/index.d.ts",import:"./dist/services/telemetry/index.js"},"./services/feature-flags/posthog":{types:"./dist/services/feature-flags/posthog.d.ts",import:"./dist/services/feature-flags/posthog.js"}},scripts:{build:"bun run ./bun.mts && bun tsc -p tsconfig.build.json && bun run ./scripts/verify-runtime-build-id.ts",typecheck:"bun tsc -p tsconfig.dev.json --noEmit && bun run typecheck:smoke","typecheck:smoke":"bun tsc -p tsconfig.smoke.json --noEmit",test:"bun run test:unit && bun run test:e2e","test:live":"vitest run --config vitest.config.ts src/extensions/context/compaction.live.test.ts","test:compaction":"bun --conditions=development run scripts/compact-session.ts","test:unit":"vitest run --config vitest.config.ts","test:e2e":"vitest run --config vitest.e2e.config.ts","verify:routines":"zsh -lc 'bunx vitest run src/cron/schedule-service.test.ts --config vitest.config.ts'","test:watch":"vitest --config vitest.config.ts"},dependencies:{"@cline/agents":"workspace:*","@cline/shared":"workspace:*","@cline/llms":"workspace:*","@modelcontextprotocol/sdk":"^1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.214.0","@opentelemetry/exporter-logs-otlp-http":"^0.214.0","@opentelemetry/exporter-metrics-otlp-http":"^0.214.0","@opentelemetry/exporter-trace-otlp-http":"^0.214.0","@opentelemetry/resources":"^2.6.1","@opentelemetry/sdk-logs":"^0.214.0","@opentelemetry/sdk-metrics":"^2.6.1","@opentelemetry/sdk-trace-base":"^2.6.1","@opentelemetry/sdk-trace-node":"^2.6.1","@opentelemetry/semantic-conventions":"^1.40.0",jiti:"^2.7.0","node-machine-id":"^1.1.12",nanoid:"^5.1.7","simple-git":"3.36.0",ws:"^8.20.0",yaml:"^2.8.2",zod:"^4.3.6"},peerDependencies:{"posthog-node":"^5.8.0"},peerDependenciesMeta:{"posthog-node":{optional:!0}},devDependencies:{"@types/ws":"^8.18.1","posthog-node":"^5.8.0"},engines:{node:">=22"},files:["dist","!dist/**/*.d.ts.map"]};var $w="CLINE_HUB_DISCOVERY_PATH",Zw="CLINE_HUB_BUILD_ID",Qw="CLINE_HUB_BUILD_EPOCH_MS",Jw=30000,Ww=15000,uK=100;function Xw($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function Yw($){return nf("sha256").update($).digest("hex").slice(0,12)}function jw($){if(!Number.isInteger($)||!$||$<=0)return!1;try{return process.kill($,0),!0}catch(Z){return Z instanceof Error&&"code"in Z?String(Z.code)==="EPERM":!1}}function rK(){return dK(32).toString("hex")}function pK($){return new Promise((Z)=>setTimeout(Z,$))}function Vw($){return`${$}.lock`}async function Bw($){try{let Z=JSON.parse(await lK(_J($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function DJ($){await I9($,{recursive:!0,force:!0}).catch(()=>{return})}function M1(){let $=process.env[Zw]?.trim();if($)return $;return"sdk-v1-48203ca9c603a0f260eb4ac760bad41604a627cd852df1a10751236b133db5d0".trim()||`source-${String(A8.version)}`}function zJ(){let $=Number(process.env[Qw]);if(Number.isFinite($)&&$>0)return $;return Number.isFinite(1786590424338)?1786590424338:void 0}function t6($,Z=M1()){let Q=ef($);if(!Q.compatible)return Q;let J=$.buildId?.trim();if(!J)return{compatible:!1,reason:"missing_build"};if(J!==Z)return{compatible:!1,reason:"build_mismatch"};return{compatible:!0}}function M$($,Z){let Q=t6($,Z?.expectedBuildId??M1());if(Q.compatible)return!0;if(Q.reason!=="build_mismatch")return!1;let J=$.buildEpochMs,W=Z?.expectedBuildEpochMs??zJ();return typeof J==="number"&&Number.isFinite(J)&&typeof W==="number"&&Number.isFinite(W)&&J>W}function F2($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${Yw($)}`,Q=process.env[$w]?.trim()||_J(s6(),"locks","hub","owners",`${Xw(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function yo($=`hub-${Date.now().toString(36)}`){return F2($)}async function R0($){try{let Z=JSON.parse(await lK($,"utf8"));if(typeof Z.hubId!=="string"||typeof Z.protocolVersion!=="string"||typeof Z.authToken!=="string"||typeof Z.host!=="string"||typeof Z.port!=="number"||typeof Z.url!=="string"||typeof Z.startedAt!=="string"||typeof Z.updatedAt!=="string")return;return{hubId:Z.hubId,protocolVersion:Z.protocolVersion,minClientProtocolVersion:typeof Z.minClientProtocolVersion==="string"?Z.minClientProtocolVersion:void 0,maxClientProtocolVersion:typeof Z.maxClientProtocolVersion==="string"?Z.maxClientProtocolVersion:void 0,capabilities:Array.isArray(Z.capabilities)?Z.capabilities.filter((Q)=>typeof Q==="string"):void 0,coreVersion:typeof Z.coreVersion==="string"?Z.coreVersion:void 0,buildId:typeof Z.buildId==="string"?Z.buildId:void 0,buildEpochMs:typeof Z.buildEpochMs==="number"?Z.buildEpochMs:void 0,authToken:Z.authToken,host:Z.host,port:Z.port,url:Z.url,pid:typeof Z.pid==="number"?Z.pid:void 0,startedAt:Z.startedAt,updatedAt:Z.updatedAt}}catch{return}}async function x9($,Z){await OJ($,async()=>{let Q=iK($);await LJ(Q,{recursive:!0});let J=`${$}.${process.pid}.${dK(6).toString("hex")}.tmp`,W;try{W=await cK(J,"wx",384),await W.writeFile(`${JSON.stringify(Z,null,2)}
493
+ `)[0]??W);return xf(X,50)}return}function vf($){let Z=0;for(let Q of $)Z+=y9(Q.metrics?.cost)??0;return Z}function gf($){let Z,Q;for(let J=$.length-1;J>=0;J-=1){let W=$[J];if(!Z)Z=J1(W.modelInfo?.provider);if(!Q)Q=J1(W.modelInfo?.id);if(Z&&Q)break}return{provider:Z,model:Q}}function mf($){return J1($?.provider)??J1($?.provider&&typeof $.provider==="object"&&!Array.isArray($.provider)?$.provider.id:void 0)}function cf($){return J1($?.model)??J1($?.model&&typeof $.model==="object"&&!Array.isArray($.model)?$.model.id:void 0)}function KJ($,Z){let Q=wf($.metadata),J=o6(Z?.title)??o6(Q?.title),W=y9(Z?.totalCost)??y9(Q?.totalCost),X=Q||J!==void 0||W!==void 0?{...Q??{},...J!==void 0?{title:J}:{},...W!==void 0?{totalCost:W}:{}}:void 0;return{...$,provider:J1(Z?.provider)??J1($.provider)??mf(Q)??"",model:J1(Z?.model)??J1($.model)??cf(Q)??"",metadata:X}}function uf($){let Z=$.content;if(!Array.isArray(Z))return!1;return Z.some((Q)=>!!Q&&typeof Q==="object"&&Q.type==="tool-call")}function pf($,Z){if($.status!=="running"||$.interactive!==!0)return!1;let Q=Z.at(-1);return Q?.role==="assistant"&&!uf(Q)}async function df($,Z){return await Promise.all(Z.map(async(Q)=>{if(Q.status!=="running"||Q.interactive!==!0)return Q;let J=await $.readSessionMessages(Q.sessionId);return pf(Q,J)?{...Q,status:"idle"}:Q}))}async function lf($,Z){return await Promise.all(Z.map(async(Q)=>{let J=KJ(Q),W=Boolean(o6(J.metadata?.title)),X=Boolean(J1(J.provider)),Y=Boolean(J1(J.model)),j=y9(J.metadata?.totalCost),V=j!==void 0&&j>0;if(W&&X&&Y&&V)return J;let B=await $.readSessionMessages(Q.sessionId);if(B.length===0)return J;let H=gf(B),K=vf(B);return KJ(Q,{title:W?void 0:hf(B),provider:X?void 0:H.provider,model:Y?void 0:H.model,totalCost:V||K<=0?void 0:K})}))}async function UJ($,Z={}){let Q=GJ(Z.limit),J=Z.includeSubagents===!0,W=await yf($,Q,{includeSubagents:J}),X=Z.includeManifestFallback===!0&&W.length<Q?await kf(Math.min(Math.max(Q*2,100),500)):[],Y=new Map;for(let B of[...W,...X]){if(Y.has(B.sessionId))continue;Y.set(B.sessionId,B)}let j=X.length===0?W:Array.from(Y.values()).sort((B,H)=>H.startedAt.localeCompare(B.startedAt)).slice(0,Q),V=await df($,j);if(Z.hydrate===!1)return V.map((B)=>KJ(B));return await lf($,V)}async function rf($){let Z=$.trim();if(!Z)return;let Q=vK(gK(),Z,`${Z}.json`),J=await hK(Q,"utf8").catch(()=>{return});if(!J)return;try{let W=r0.safeParse(JSON.parse(J));return W.success?W.data.messages_path:void 0}catch{return}}async function af($,Z={}){let Q=new Map;return await UJ({listSessions:async(W)=>{let X=await $.listSessions(W);Q.clear();for(let Y of X)Q.set(Y.sessionId,Y);return X.map(r6)},readSessionMessages:async(W)=>{let X=Q.get(W)?.messagesPath??await rf(W);return await T$(X)}},Z)}import{captureSdkError as cU}from"@cline/shared";import{createSessionId as ew,isHubProtocolCompatible as $P,resolveClineBuildEnv as ZP,resolveHubCommandTimeoutMs as QP}from"@cline/shared";import{spawn as Rw}from"node:child_process";import{closeSync as Cw,mkdirSync as fw,openSync as ww}from"node:fs";import{basename as Pw,dirname as Sw,join as bw}from"node:path";import{fileURLToPath as kw}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as yw,isHubDaemonProcess as eK,resolveClineBuildEnv as $G,withResolvedClineBuildEnv as Iw}from"@cline/shared";import{createHash as nf,randomBytes as dK}from"node:crypto";import{existsSync as of}from"node:fs";import{mkdir as LJ,open as cK,readFile as lK,rename as sf,rm as I9,writeFile as tf}from"node:fs/promises";import{dirname as iK,join as _J}from"node:path";import{isHubProtocolCompatible as ef}from"@cline/shared";import{resolveClineDataDir as s6,resolveClineDir as bo}from"@cline/shared/storage";var O8="0.0.74";var A8={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:O8,repository:{type:"git",url:"https://github.com/cline/cline",directory:"sdk/packages/core"},type:"module",types:"./dist/index.d.ts",main:"./dist/index.js",private:!1,publishConfig:{access:"public"},exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js"},"./hub":{types:"./dist/hub/index.d.ts",import:"./dist/hub/index.js"},"./hub/daemon-entry":{types:"./dist/hub/daemon/entry.d.ts",import:"./dist/hub/daemon/entry.js"},"./telemetry":{types:"./dist/services/telemetry/index.d.ts",import:"./dist/services/telemetry/index.js"},"./services/feature-flags/posthog":{types:"./dist/services/feature-flags/posthog.d.ts",import:"./dist/services/feature-flags/posthog.js"}},scripts:{build:"bun run ./bun.mts && bun tsc -p tsconfig.build.json && bun run ./scripts/verify-runtime-build-id.ts",typecheck:"bun tsc -p tsconfig.dev.json --noEmit && bun run typecheck:smoke","typecheck:smoke":"bun tsc -p tsconfig.smoke.json --noEmit",test:"bun run test:unit && bun run test:e2e","test:live":"vitest run --config vitest.config.ts src/extensions/context/compaction.live.test.ts","test:compaction":"bun --conditions=development run scripts/compact-session.ts","test:unit":"vitest run --config vitest.config.ts","test:e2e":"vitest run --config vitest.e2e.config.ts","verify:routines":"zsh -lc 'bunx vitest run src/cron/schedule-service.test.ts --config vitest.config.ts'","test:watch":"vitest --config vitest.config.ts"},dependencies:{"@cline/agents":"workspace:*","@cline/shared":"workspace:*","@cline/llms":"workspace:*","@modelcontextprotocol/sdk":"^1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.214.0","@opentelemetry/exporter-logs-otlp-http":"^0.214.0","@opentelemetry/exporter-metrics-otlp-http":"^0.214.0","@opentelemetry/exporter-trace-otlp-http":"^0.214.0","@opentelemetry/resources":"^2.6.1","@opentelemetry/sdk-logs":"^0.214.0","@opentelemetry/sdk-metrics":"^2.6.1","@opentelemetry/sdk-trace-base":"^2.6.1","@opentelemetry/sdk-trace-node":"^2.6.1","@opentelemetry/semantic-conventions":"^1.40.0",jiti:"^2.7.0","node-machine-id":"^1.1.12",nanoid:"^5.1.7","simple-git":"3.36.0",ws:"^8.20.0",yaml:"^2.8.2",zod:"^4.3.6"},peerDependencies:{"posthog-node":"^5.8.0"},peerDependenciesMeta:{"posthog-node":{optional:!0}},devDependencies:{"@types/ws":"^8.18.1","posthog-node":"^5.8.0"},engines:{node:">=22"},files:["dist","!dist/**/*.d.ts.map"]};var $w="CLINE_HUB_DISCOVERY_PATH",Zw="CLINE_HUB_BUILD_ID",Qw="CLINE_HUB_BUILD_EPOCH_MS",Jw=30000,Ww=15000,uK=100;function Xw($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function Yw($){return nf("sha256").update($).digest("hex").slice(0,12)}function jw($){if(!Number.isInteger($)||!$||$<=0)return!1;try{return process.kill($,0),!0}catch(Z){return Z instanceof Error&&"code"in Z?String(Z.code)==="EPERM":!1}}function rK(){return dK(32).toString("hex")}function pK($){return new Promise((Z)=>setTimeout(Z,$))}function Vw($){return`${$}.lock`}async function Bw($){try{let Z=JSON.parse(await lK(_J($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function DJ($){await I9($,{recursive:!0,force:!0}).catch(()=>{return})}function M1(){let $=process.env[Zw]?.trim();if($)return $;return"sdk-v1-23146023d96980eb35fe4a79923fdff36e4a81a32af32f6baedec3d0bcf5a7ab".trim()||`source-${String(A8.version)}`}function zJ(){let $=Number(process.env[Qw]);if(Number.isFinite($)&&$>0)return $;return Number.isFinite(1786600650387)?1786600650387:void 0}function t6($,Z=M1()){let Q=ef($);if(!Q.compatible)return Q;let J=$.buildId?.trim();if(!J)return{compatible:!1,reason:"missing_build"};if(J!==Z)return{compatible:!1,reason:"build_mismatch"};return{compatible:!0}}function M$($,Z){let Q=t6($,Z?.expectedBuildId??M1());if(Q.compatible)return!0;if(Q.reason!=="build_mismatch")return!1;let J=$.buildEpochMs,W=Z?.expectedBuildEpochMs??zJ();return typeof J==="number"&&Number.isFinite(J)&&typeof W==="number"&&Number.isFinite(W)&&J>W}function F2($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${Yw($)}`,Q=process.env[$w]?.trim()||_J(s6(),"locks","hub","owners",`${Xw(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function yo($=`hub-${Date.now().toString(36)}`){return F2($)}async function R0($){try{let Z=JSON.parse(await lK($,"utf8"));if(typeof Z.hubId!=="string"||typeof Z.protocolVersion!=="string"||typeof Z.authToken!=="string"||typeof Z.host!=="string"||typeof Z.port!=="number"||typeof Z.url!=="string"||typeof Z.startedAt!=="string"||typeof Z.updatedAt!=="string")return;return{hubId:Z.hubId,protocolVersion:Z.protocolVersion,minClientProtocolVersion:typeof Z.minClientProtocolVersion==="string"?Z.minClientProtocolVersion:void 0,maxClientProtocolVersion:typeof Z.maxClientProtocolVersion==="string"?Z.maxClientProtocolVersion:void 0,capabilities:Array.isArray(Z.capabilities)?Z.capabilities.filter((Q)=>typeof Q==="string"):void 0,coreVersion:typeof Z.coreVersion==="string"?Z.coreVersion:void 0,buildId:typeof Z.buildId==="string"?Z.buildId:void 0,buildEpochMs:typeof Z.buildEpochMs==="number"?Z.buildEpochMs:void 0,authToken:Z.authToken,host:Z.host,port:Z.port,url:Z.url,pid:typeof Z.pid==="number"?Z.pid:void 0,startedAt:Z.startedAt,updatedAt:Z.updatedAt}}catch{return}}async function x9($,Z){await OJ($,async()=>{let Q=iK($);await LJ(Q,{recursive:!0});let J=`${$}.${process.pid}.${dK(6).toString("hex")}.tmp`,W;try{W=await cK(J,"wx",384),await W.writeFile(`${JSON.stringify(Z,null,2)}
494
494
  `,{encoding:"utf8"}),await W.sync(),await W.close(),W=void 0,await sf(J,$);let X;try{X=await cK(Q,"r"),await X.sync()}catch{}finally{await X?.close().catch(()=>{return})}}catch(X){throw await W?.close().catch(()=>{return}),await I9(J,{force:!0}).catch(()=>{return}),X}})}async function c1($){await OJ($,async()=>{await I9($,{force:!0}).catch(()=>{return})})}async function aK($,Z){return await OJ($,async()=>{if((await R0($))?.hubId!==Z)return!1;return await I9($,{force:!0}),!0})}async function nK($,Z,Q){let J=Vw($);await LJ(iK(J),{recursive:!0});let W=Date.now()+Ww;while(!0){try{await LJ(J,{recursive:!1})}catch(X){if((X instanceof Error&&"code"in X?String(X.code):"")!=="EEXIST")throw X;let j=await Bw(J);if(!j){if(Date.now()>=W){await DJ(J);continue}await pK(uK);continue}let V=Date.now()-Date.parse(j.acquiredAt);if(!jw(j.pid)||V>Jw){await DJ(J);continue}if(Date.now()>=W)throw Error(`Timed out waiting for hub ${Z} lock ${J}`);await pK(uK);continue}try{return await tf(_J(J,"owner.json"),`${JSON.stringify({pid:process.pid,acquiredAt:new Date().toISOString()},null,2)}
495
495
  `,"utf8"),await Q()}finally{await DJ(J)}}}function OJ($,Z){return nK(`${$}.mutation`,"discovery mutation",Z)}function h9($,Z){return nK($,"startup",Z)}async function u1($,Z){try{let Q=await fetch(Z?.authToken?Hw($):oK($),{headers:Z?.authToken?{authorization:`Bearer ${Z.authToken}`}:void 0});if(!Q.ok)return;let J=await Q.json();if(typeof J.protocolVersion!=="string"||typeof J.host!=="string"||typeof J.port!=="number"||typeof J.url!=="string")return;return{protocolVersion:J.protocolVersion,minClientProtocolVersion:typeof J.minClientProtocolVersion==="string"?J.minClientProtocolVersion:void 0,maxClientProtocolVersion:typeof J.maxClientProtocolVersion==="string"?J.maxClientProtocolVersion:void 0,capabilities:Array.isArray(J.capabilities)?J.capabilities.filter((W)=>typeof W==="string"):void 0,coreVersion:typeof J.coreVersion==="string"?J.coreVersion:void 0,buildId:typeof J.buildId==="string"?J.buildId:void 0,buildEpochMs:typeof J.buildEpochMs==="number"?J.buildEpochMs:void 0,host:J.host,port:J.port,url:J.url,hubId:typeof J.hubId==="string"?J.hubId:void 0,authToken:typeof J.authToken==="string"?J.authToken:void 0,pid:typeof J.pid==="number"?J.pid:void 0,startedAt:typeof J.startedAt==="string"?J.startedAt:void 0,updatedAt:typeof J.updatedAt==="string"?J.updatedAt:void 0}}catch{return}}function p1($,Z,Q="/hub"){return new URL(`ws://${$}:${Z}${Q}`).toString()}function oK($){let Z=new URL($);return Z.protocol=Z.protocol==="wss:"?"https:":"http:",Z.pathname="/health",Z.search="",Z.toString()}function Hw($){let Z=new URL(oK($));return Z.pathname="/status",Z.toString()}function Io($){return of($)}import{CLINE_HUB_DEV_PORT as Kw,CLINE_HUB_PORT as Gw,resolveClineBuildEnv as Fw}from"@cline/shared";var Uw="CLINE_HUB_HOST",Dw="CLINE_HUB_PORT",Lw="CLINE_HUB_PATHNAME",_w="127.0.0.1",zw=Gw,Ow="/hub";function sK($){return Fw($)==="development"?Kw:zw}function Aw($={}){return($.env??process.env)[Uw]?.trim()||_w}function v9($={}){let Q=($.env??process.env)[Dw]?.trim();if(!Q)return sK($);let J=Number.parseInt(Q,10);if(!Number.isInteger(J)||J<1||J>65535)return sK($);return J}function qw($={}){return($.env??process.env)[Lw]?.trim()||Ow}function U2($={},Z={}){return{host:$.host??Aw(Z),port:$.port??v9(Z),pathname:$.pathname??qw(Z)}}import{join as Nw}from"node:path";var Tw="shared:cline",Mw="CLINE_HUB_DISCOVERY_PATH",Ew="hub-production";function uo($){let Z=O$($.trim());return F2(`workspace:${Z||$.trim()}`)}function L1($=Tw){return F2($)}function E1(){return{ownerId:Ew,discoveryPath:process.env[Mw]?.trim()||Nw(s6(),"locks","hub","production.json")}}var xw=8000,hw=200,vw=3000,gw=100,mw=[100,250,500,1000,2000],cw="--cline-hub-daemon";function uw($){return[...$.host?["--host",$.host]:[],...typeof $.port==="number"?["--port",String($.port)]:[],...$.pathname?["--pathname",$.pathname]:[]]}function pw(){try{let $=bw(s6(),"logs","hub-daemon.log");return fw(Sw($),{recursive:!0}),{fd:ww($,"a"),logPath:$}}catch{return}}function dw(){return $G()==="production"?E1():L1()}function e6($){return M$($,{expectedBuildId:M1()})}function tK($,Z,Q){if(!Z||Z.url!==Q)return $;return{...$,authToken:$.authToken??Z.authToken,pid:$.pid??Z.pid}}async function $4($,Z){try{return await u1($,{authToken:Z})}catch{return}}async function lw($,Z){let Q=Date.now()+Z;while(Date.now()<Q){if(!(await $4($))?.url)return!0;await new Promise((W)=>setTimeout(W,gw))}return!1}async function qJ($,Z){if(await TJ($.url,$.authToken).catch(()=>!1),$.pid)try{process.kill($.pid,"SIGTERM")}catch{}let Q=await lw($.url,vw);return await c1(Z).catch(()=>{return}),Q}async function AJ($,Z){if(e6($))return!0;return qJ($,Z)}async function iw($){if($G()!=="production")return;let Z=L1();if(Z.discoveryPath===$.discoveryPath)return;let Q=await R0(Z.discoveryPath);if(Q?.url)await qJ(Q,Z.discoveryPath);else await c1(Z.discoveryPath).catch(()=>{return})}function rw(){let $=import.meta.url.endsWith(".ts")?"ts":"js";return kw(new URL(`./entry.${$}`,import.meta.url))}function aw($,Z){let Q=rw(),J=process.execPath?.trim();if(!J)throw Error("unable to resolve runtime executable for hub daemon");let W=Pw(J).toLowerCase().includes("bun"),X=Q.startsWith("/$bunfs/"),Y=W&&Q.toLowerCase().endsWith(".ts"),j=X?[cw]:[...Y?["--conditions=development"]:[],Q];return{launcher:J,args:[...j,"--cwd",$,...uw(Z)],cwd:$,env:{...Iw(process.env),CLINE_NO_INTERACTIVE:"1",[yw]:"1"}}}function nw($){if(!$||typeof $!=="object")return!1;if(("code"in $?$.code:void 0)==="ETXTBSY")return!0;let Q="message"in $?$.message:void 0;return typeof Q==="string"&&Q.includes("ETXTBSY")}function ow($,Z={}){if(eK())return;let Q=aw($,Z),J=pw();try{Rw(Q.launcher,Q.args,{detached:!0,stdio:J?["ignore",J.fd,J.fd]:"ignore",env:Q.env,cwd:Q.cwd,windowsHide:!0}).unref()}finally{if(J)Cw(J.fd)}}async function sw($,Z={}){for(let Q=0;;Q++)try{ow($,Z);return}catch(J){let W=mw[Q];if(!nw(J)||W===void 0)throw J;await new Promise((X)=>setTimeout(X,W))}}function ZG($,Z={}){if(eK())return;NJ($,Z).catch(()=>{})}async function tw($,Z,Q={}){let J=Q.host!==void 0||Q.port!==void 0||Q.pathname!==void 0||!!process.env.CLINE_HUB_PORT?.trim(),W=U2(Q),X=p1(W.host,W.port,W.pathname),Y=(F)=>{if(!J)Z4(F.url,F.authToken);return F};await iw($).catch(()=>{return});let j=await R0($.discoveryPath),V=!1;if(j?.url){let F=j.authToken;if(!F)V=!0,await qJ(j,$.discoveryPath);else{let U=await $4(j.url,F);if(U?.url&&e6(U)&&await E$(U.url,{authToken:F}))return Y({url:U.url,authToken:F});if(U?.url)await AJ({...U,authToken:F},$.discoveryPath);else await c1($.discoveryPath).catch(()=>{return})}}let B=await $4(X);if(B?.url){let F=tK(B,j,X);if(e6(B)){let D=[B.authToken,j?.authToken].filter((z)=>typeof z==="string"&&z.trim().length>0);for(let z of D){if(!await E$(B.url,{authToken:z}))continue;let L={hubId:B.hubId??`repaired-${B.port}`,protocolVersion:B.protocolVersion,minClientProtocolVersion:B.minClientProtocolVersion,maxClientProtocolVersion:B.maxClientProtocolVersion,capabilities:B.capabilities,coreVersion:B.coreVersion,buildId:B.buildId,authToken:z,host:B.host,port:B.port,url:B.url,pid:B.pid??j?.pid,startedAt:B.startedAt??new Date().toISOString(),updatedAt:new Date().toISOString()};try{await x9($.discoveryPath,L)}catch{}return Y({url:B.url,authToken:z})}throw Error(`A compatible Cline Hub is already running at ${X}, but its discovery record is missing or unreadable and no usable auth token is available. Run 'cline doctor fix' to repair local hub discovery.${V?" This can happen immediately after upgrading from a build that wrote an empty hub auth token; run 'cline doctor fix' to stop the old daemon and repair local hub discovery.":""}`)}if(!await AJ(F,$.discoveryPath)&&Q.allowPortFallback!==!0&&W.port!==0)throw Error(`An incompatible Cline Hub is already running at ${X} and could not be retired automatically. Run 'cline doctor fix' to stop stale hub daemons before starting a new hub.`)}let K=Q.allowPortFallback===!0&&W.port!==0?{...W,port:0}:W;await sw(Z,K);let G=Date.now()+xw;while(Date.now()<G){let F=await R0($.discoveryPath);if(F?.url&&F.authToken){let D=await $4(F.url,F.authToken);if(D?.url&&e6(D)&&await E$(D.url,{authToken:F.authToken}))return Y({url:D.url,authToken:F.authToken})}let U=await $4(X);if(U?.url&&!e6(U)){let D=tK(U,F,X);if(!await AJ(D,$.discoveryPath)&&Q.allowPortFallback!==!0&&W.port!==0)throw Error(`An incompatible Cline Hub is still running at ${X} and could not be retired automatically. Run 'cline doctor fix' to stop stale hub daemons before starting a new hub.`)}await new Promise((D)=>setTimeout(D,hw))}throw Error("Timed out waiting for detached hub startup.")}async function NJ($,Z={}){let Q=dw();return await h9(Q.discoveryPath,async()=>tw(Q,$,Z))}function RJ(){return ZP()==="production"?E1():L1()}function JP(){let $=globalThis.WebSocket;if(!$)throw Error("Global WebSocket is not available in this runtime. Node 22+ is required for hub mode.");return $}function jG($){if(typeof $==="string")return $;if($ instanceof Uint8Array)return Buffer.from($).toString();if($ instanceof ArrayBuffer)return Buffer.from($).toString();if(Array.isArray($))return Buffer.concat($.map((Z)=>Buffer.from(Z))).toString();if($&&typeof $==="object"&&"data"in $&&typeof $.data<"u")return jG($.data);return String($)}function WP($){if(typeof $==="string")return $;if($ instanceof Uint8Array)return Buffer.from($).toString("utf8");if($ instanceof ArrayBuffer)return Buffer.from($).toString("utf8");return""}function QG($){let Z=$,Q=WP(Z.reason);return new W1("hub_connection_closed",Z.code||Q?`Hub connection closed (code=${Z.code??0}${Q?`, reason=${Q}`:""})`:MJ,{closeCode:Z.code,closeReason:Q||void 0})}function XP($,Z){if($ instanceof W1)return $;if($ instanceof Error)return new W1("hub_connect_failed",$.message);if($&&typeof $==="object"&&"error"in $&&$.error instanceof Error)return new W1("hub_connect_failed",$.error.message);let Q=$&&typeof $==="object"&&"message"in $&&typeof $.message==="string"?$.message.trim():"";if(Q)return new W1("hub_connect_failed",Q);let J=$&&typeof $==="object"&&"type"in $&&typeof $.type==="string"?$.type.trim():"";return new W1("hub_connect_failed",J?`Failed to connect to hub at ${Z.toString()} (${J} event before socket open).`:`Failed to connect to hub at ${Z.toString()}.`)}var JG="*",WG=8000,YP="cline-hub-auth.",VG=new Map,BG=new Set,jP=3000,VP=3000,BP=100,MJ="Hub connection closed",HP=250,KP=5000,XG=0.5;class W1 extends Error{code;details;constructor($,Z,Q){super(Z);this.code=$;this.details=Q;this.name="HubTransportError"}}function GP($){return $ instanceof W1}class g9 extends Error{command;code;constructor($,Z,Q){super(Q);this.command=$;this.code=Z;this.name="HubCommandError"}}function HG($,Z){return $ instanceof g9&&$.code==="hub_command_timeout"&&(Z===void 0||$.command===Z)}function KG($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=CJ($.toString());return Q?VG.get(Q):void 0}function FP($){try{let Q=new URL($).hostname.toLowerCase().replace(/^\[|\]$/g,"");return Q==="localhost"||Q==="127.0.0.1"||Q==="::1"}catch{return!1}}function CJ($){if(!FP($))return;let Z=new URL(q8($));return Z.search="",Z.hash="",Z.toString()}function EJ($){let Z=CJ($);return!!Z&&BG.has(Z)}function Z4($,Z){let Q=CJ($);if(Q){if(BG.add(Q),Z?.trim())VG.set(Q,Z)}return $}class d1{options;socket;connectPromise;clientId;currentUrl;recoveryPromise;pendingReplies=new Map;listeners=new Set;subscriptionCounts=new Map;reconnectTimer;reconnectAttempt=0;closedByClient=!1;lastCloseError=new W1("hub_connection_closed",MJ);sawSocketClose=!1;registered=!1;constructor($){this.options=$;this.clientId=$.clientId??`core-${Math.random().toString(36).slice(2,10)}-${Date.now().toString(36)}`,this.currentUrl=$.url}getClientId(){return this.clientId}getUrl(){return this.currentUrl}isConnected(){return this.socket?.readyState===1&&this.registered}getConnectionError(){return this.isConnected()?null:this.lastCloseError}async connect(){if(this.socket&&(this.socket.readyState===1||this.socket.readyState===0))return this.connectPromise??Promise.resolve();this.closedByClient=!1,this.clearReconnectTimer();let $=new URL(this.currentUrl),Z=this.options.authToken?.trim()||KG($);$.hash="";let J=new(JP())($.toString(),Z?[`${YP}${Z}`]:void 0);this.socket=J;let W=!1;this.connectPromise=new Promise((X,Y)=>{let j=!1,V=setTimeout(()=>{if(j)return;j=!0,W=!0,this.lastCloseError=new W1("hub_connect_timeout",`Timed out connecting to hub after ${WG}ms`),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0;try{J.close()}catch{}Y(this.lastCloseError)},WG);J.addEventListener("open",()=>{if(j)return;j=!0,clearTimeout(V),X()}),J.addEventListener("error",(B)=>{if(j)return;j=!0,clearTimeout(V),this.lastCloseError=XP(B,$),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)}),J.addEventListener("close",(B)=>{if(j)return;if(j=!0,clearTimeout(V),!W)this.lastCloseError=QG(B),this.sawSocketClose=!0;this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)})}),J.addEventListener("message",(X)=>{this.handleFrame(JSON.parse(jG(X)))}),J.addEventListener("close",(X)=>{if(this.socket!==J)return;if(!W)this.lastCloseError=QG(X),this.sawSocketClose=!0;this.registered=!1;for(let Y of this.pendingReplies.values())Y.reject(this.lastCloseError);if(this.pendingReplies.clear(),this.connectPromise=void 0,this.socket=void 0,!this.closedByClient&&this.hasActiveSubscriptions())this.scheduleReconnect()}),await this.connectPromise,await this.command("client.register",{clientId:this.clientId,clientType:this.options.clientType??"core",displayName:this.options.displayName??"core",transport:"native",actorKind:"client",workspaceContext:{workspaceRoot:this.options.workspaceRoot,cwd:this.options.cwd}}),this.registered=!0;for(let X of this.subscriptionCounts.keys())this.sendSubscriptionFrame("stream.subscribe",this.subscriptionSessionIdFromKey(X));this.reconnectAttempt=0}subscribe($,Z){let Q=Z?.sessionId?.trim()||void 0,J={listener:$,sessionId:Q};return this.listeners.add(J),this.adjustSubscriptionCount(Q,1),()=>{if(!this.listeners.delete(J))return;this.adjustSubscriptionCount(Q,-1)}}async command($,Z,Q,J){let W=0,X=$!=="client.register"&&$!=="client.unregister";while(!0)try{return await this.commandOnce($,Z,Q,J)}catch(Y){if(!X||W>=1||!await this.recoverLocalHubTransport(Y))throw Y;W+=1}}async commandOnce($,Z,Q,J){await this.connect();let W=ew("hubreq_"),X=QP($,J?.timeoutMs),Y=new Promise((V,B)=>{let H=X===null?void 0:setTimeout(()=>{if(!this.pendingReplies.delete(W))return;B(new g9($,"hub_command_timeout",`Hub command ${$} timed out after ${X}ms (hub=${this.currentUrl}, requestId=${W}, clientId=${this.clientId}). Check hub-daemon.log for matching command.start/command.slow entries, or run 'cline doctor fix' to restart the hub.`))},X);this.pendingReplies.set(W,{resolve:(K)=>{if(H)clearTimeout(H);V(K)},reject:(K)=>{if(H)clearTimeout(H);B(K)}})});try{this.sendFrame({kind:"command",envelope:{version:"v1",command:$,requestId:W,clientId:this.clientId,sessionId:Q,timeoutMs:X,payload:Z}})}catch(V){throw this.pendingReplies.delete(W),V}let j=await Y;if(!j.ok){if(j.error?.code===I6){let V=Q??(typeof Z?.sessionId==="string"?Z.sessionId:void 0);throw new B2(V,j.error.message)}throw new g9($,j.error?.code,j.error?.message??`Hub command ${$} failed`)}return j}async recoverLocalHubTransport($){if(!EJ(this.currentUrl)||!GP($))return!1;if(this.recoveryPromise)return await this.recoveryPromise;return this.recoveryPromise=(async()=>{let Z=await Q4({workspaceRoot:this.options.workspaceRoot,cwd:this.options.cwd}).catch(()=>{return});if(!Z)return!1;return this.currentUrl=Z,this.close(),!0})().finally(()=>{this.recoveryPromise=void 0}),await this.recoveryPromise}hasActiveSubscriptions(){return this.subscriptionCounts.size>0}clearReconnectTimer(){if(!this.reconnectTimer)return;clearTimeout(this.reconnectTimer),this.reconnectTimer=void 0}scheduleReconnect(){if(this.reconnectTimer||this.closedByClient||!this.hasActiveSubscriptions())return;let $=Math.min(HP*2**this.reconnectAttempt,KP),Z=Math.round($*(1-XG)+Math.random()*$*XG);this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=void 0,this.reconnectSubscribedTransport()},Z)}async reconnectSubscribedTransport(){if(this.closedByClient||!this.hasActiveSubscriptions())return;try{await this.connect(),this.reconnectAttempt=0}catch{if(!EJ(this.currentUrl)){this.reconnectAttempt+=1,this.scheduleReconnect();return}try{let $=await Q4({workspaceRoot:this.options.workspaceRoot,cwd:this.options.cwd});if($){this.currentUrl=$,await this.connect(),this.reconnectAttempt=0;return}}catch{}this.reconnectAttempt+=1,this.scheduleReconnect()}}close(){let $=this.socket;if(this.closedByClient=!0,this.clearReconnectTimer(),this.registered=!1,!$)return;this.lastCloseError=new W1("hub_connection_closed",MJ),this.sawSocketClose=!1;for(let Z of this.pendingReplies.values())Z.reject(this.lastCloseError);this.pendingReplies.clear(),this.connectPromise=void 0,this.socket=void 0;try{$.close()}catch{}}async dispose(){if(this.socket?.readyState===1&&this.registered)try{await this.command("client.unregister",void 0,void 0,{timeoutMs:2000})}catch{}this.close()}sendFrame($){if(!this.socket||this.socket.readyState!==1){if(this.lastCloseError.code==="hub_connection_closed"&&!this.sawSocketClose)throw new W1("hub_connection_not_open","Hub connection is not open.");throw this.lastCloseError}this.socket.send(JSON.stringify($))}sendSubscriptionFrame($,Z){this.sendFrame({kind:$,clientId:this.clientId,...Z?{sessionId:Z}:{}})}adjustSubscriptionCount($,Z){let Q=this.subscriptionKeyForSessionId($),J=(this.subscriptionCounts.get(Q)??0)+Z;if(J<=0){if(this.subscriptionCounts.delete(Q),!this.hasActiveSubscriptions())this.clearReconnectTimer();if(Z<0&&this.socket?.readyState===1)this.sendSubscriptionFrame("stream.unsubscribe",$);return}if(this.subscriptionCounts.set(Q,J),Z>0&&J===1&&this.socket?.readyState===1)this.sendSubscriptionFrame("stream.subscribe",$)}subscriptionKeyForSessionId($){return $??JG}subscriptionSessionIdFromKey($){return $===JG?void 0:$}handleFrame($){switch($.kind){case"reply":{let Z=$.envelope.requestId;if(!Z)return;let Q=this.pendingReplies.get(Z);if(!Q)return;this.pendingReplies.delete(Z),Q.resolve($.envelope);return}case"event":for(let Z of this.listeners){if(Z.sessionId&&Z.sessionId!==$.envelope.sessionId?.trim())continue;Z.listener($.envelope)}return;case"command":case"stream.subscribe":case"stream.unsubscribe":return}}}function q8($){let Z=new URL($);if(Z.protocol==="http:")Z.protocol="ws:";else if(Z.protocol==="https:")Z.protocol="wss:";return Z.toString()}async function E$($,Z){let Q=new d1({url:$,authToken:Z?.authToken,clientType:"hub-healthcheck",displayName:"hub healthcheck",workspaceRoot:Z?.workspaceRoot,cwd:Z?.cwd});try{return await Q.connect(),!0}catch{return!1}finally{Q.close()}}async function YG($,Z){let Q=q8($),J=await u1(Q,{authToken:Z?.authToken});if(!J)return{status:"unreachable",url:Q};if(Z?.requireCurrentBuild){let W=M1(),X=t6(J,W);if(!X.compatible&&!M$(J,{expectedBuildId:W}))return{status:X.reason==="unsupported_protocol"?"protocol_mismatch":"build_mismatch",url:Q}}else if(!$P(J).compatible)return{status:"protocol_mismatch",url:Q};if(Z?.verifyConnection===!0&&!await E$(Q,{workspaceRoot:Z.workspaceRoot,cwd:Z.cwd,authToken:Z.authToken}))return{status:"unreachable",url:Q};return{status:"compatible",url:Q}}async function UP($){let Z=Date.now()+VP;while(Date.now()<Z){if(!(await u1($).catch(()=>{return}))?.url)return!0;await new Promise((J)=>setTimeout(J,BP))}return!1}function DP($,Z){try{return q8($)===q8(Z)}catch{return!1}}function LP($){return($&&typeof $==="object"&&Array.isArray($.sessions)?$.sessions:[]).some((Q)=>{if(!Q||typeof Q!=="object")return!1;let J=Q;if(J.status==="running"||J.status==="idle"||J.status==="pending")return!0;return Array.isArray(J.participants)&&J.participants.length>0})}async function _P($,Z,Q){let J=new d1({url:$,authToken:Z,clientType:"hub-recovery-check",displayName:"hub recovery check",workspaceRoot:Q?.workspaceRoot,cwd:Q?.cwd});try{let W=await J.command("session.list",{limit:500},void 0,{timeoutMs:jP});return!LP(W.payload)}catch{return!1}finally{await J.dispose().catch(()=>{return})}}async function fJ($={}){if($.endpoint?.trim()){let W=await YG($.endpoint);return W.status==="compatible"?W.url:void 0}let Z=RJ(),Q=await R0(Z.discoveryPath);if(!Q?.url)return;let J=await YG(Q.url,{authToken:Q.authToken,requireCurrentBuild:!0});if(J.status==="compatible")return Z4(J.url,Q.authToken);if(J.status==="protocol_mismatch")await c1(Z.discoveryPath).catch(()=>{return});return}async function Q4($={}){let Z=await fJ($);if(Z&&await E$(Z,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return Z;if($.endpoint?.trim())return;try{return(await NJ($.workspaceRoot??process.cwd())).url}catch{return}}async function TJ($,Z){let Q=new URL($),J=Z?.trim()||KG(Q);if(Q.protocol==="ws:")Q.protocol="http:";else if(Q.protocol==="wss:")Q.protocol="https:";return Q.pathname="/shutdown",Q.hash="",(await fetch(Q,{method:"POST",headers:J?{authorization:`Bearer ${J}`}:void 0})).ok}async function zP($=RJ()){let Z=await R0($.discoveryPath);if(!Z?.url)return!1;try{if(await TJ(Z.url,Z.authToken))return!0}catch{}return!1}async function GG($){if(!EJ($.url))return;let Z=RJ(),Q=await R0(Z.discoveryPath);if(!Q?.url||!DP(Q.url,$.url))return;if(!await _P(Q.url,Q.authToken,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return;if(!await zP())return;if(!await UP(Q.url))return;return await c1(Z.discoveryPath).catch(()=>{return}),await Q4({workspaceRoot:$.workspaceRoot,cwd:$.cwd})}import{resolveProviderRequestHeaders as RP}from"@cline/llms";import{captureSdkError as SJ,createSessionId as zG,HUB_CHECKPOINT_CAPABILITY as CP,HUB_COMPACTION_CAPABILITY as fP,HUB_CUSTOM_TOOL_CAPABILITY_PREFIX as wP,HUB_HOOK_CAPABILITY_PREFIX as PP,HUB_MISTAKE_LIMIT_CAPABILITY as SP,HUB_TOOL_EXECUTOR_CAPABILITY_PREFIX as bP,HUB_USER_INSTRUCTIONS_SNAPSHOT_CAPABILITY as kP,isHubToolExecutorName as yP}from"@cline/shared";import{createHash as OP}from"node:crypto";import{formatDisplayUserInput as FG}from"@cline/shared";import{z as R1}from"zod";function AP($){if(!$||typeof $!=="object"||Array.isArray($))return!1;let Z=$;if(Z.role!=="user"&&Z.role!=="assistant")return!1;return typeof Z.content==="string"||Array.isArray(Z.content)}var qP=R1.custom(AP),m9=R1.object({version:R1.literal(1),updated_at:R1.string().datetime(),conversation_id:R1.string().min(1).optional(),source_message_count:R1.number().int().nonnegative(),source_prefix_hash:R1.string().min(1).optional(),source_last_message_key:R1.string().min(1).optional(),messages:R1.array(qP),system_prompt:R1.string().optional()});function wJ($){return JSON.parse(JSON.stringify($))}function UG($){if($.role!=="user")return $;if(typeof $.content==="string")return{...$,content:FG($.content)};return{...$,content:$.content.map((Z)=>Z.type==="text"?{...Z,text:FG(Z.text)}:Z)}}function DG($){if($.includes(":"))throw TypeError("Message role cannot contain ':' in compaction boundary keys")}function NP($){let Z=UG($);return DG(Z.role),[["role",Z.role],["content",Z.content],["agent",Z.agent??null],["sessionId",Z.sessionId??null],["metadata",Z.metadata??null],["modelInfo",Z.modelInfo??null],["metrics",Z.metrics??null]]}function LG($){if(!$)return"";let Z=UG($);if(typeof Z.id==="string"&&Z.id.trim())return`id:${Z.id.trim()}`;if(DG(Z.role),typeof Z.ts==="number"&&Number.isFinite(Z.ts))return`ts:${Z.role}:${Z.ts}`;return`content:${Z.role}:${JSON.stringify(Z.content)}`}function _G($,Z=$.length){let Q=OP("sha256");Q.update(`cline-session-compaction-source-v2
496
496
  `),Q.update(`${Z}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cline/core",
3
3
  "description": "Cline Core SDK for Node Runtime",
4
- "version": "0.0.73-nightly.1786590402",
4
+ "version": "0.0.74",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/cline/cline",
@@ -49,9 +49,9 @@
49
49
  "test:watch": "vitest --config vitest.config.ts"
50
50
  },
51
51
  "dependencies": {
52
- "@cline/agents": "0.0.73-nightly.1786590402",
53
- "@cline/shared": "0.0.73-nightly.1786590402",
54
- "@cline/llms": "0.0.73-nightly.1786590402",
52
+ "@cline/agents": "0.0.74",
53
+ "@cline/shared": "0.0.74",
54
+ "@cline/llms": "0.0.74",
55
55
  "@modelcontextprotocol/sdk": "^1.29.0",
56
56
  "@opentelemetry/api": "^1.9.0",
57
57
  "@opentelemetry/api-logs": "^0.214.0",