@cline/core 0.0.70 → 0.0.71

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.
@@ -220,7 +220,7 @@ Searched ${D} files.`;let A=[`Found ${U.length} result${U.length===1?"":"s"} for
220
220
  ${J}`;return Q||J}function BR($,Z){let Q=Z?.["*"]??{},J=Z?.[$]??{};return{...Q,...J}.enabled!==!1}function HR($,Z){return $.filter((Q)=>BR(Q.name,Z))}function KR($,Z){return B$(HR($,Z))}function GR($){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:FG(W?.options,Y.options)},J={...J,...Y.messages?{messages:Y.messages}:{},...Y.tools?{tools:Y.tools}:{},...Y.options?{options:FG(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 d${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 SW;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??QR,this.conversation=new RW($.initialMessages),this.messageBuilder=new TW(jG()),this.contributionRegistry=JR({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 wW({maxConsecutiveMistakes:Q,onLimitReached:$.onConsecutiveMistakeLimitReached,onLimitTelemetry:(X)=>{uZ(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)=>FR(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 CW(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=c2($),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 DG(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 jR(Z);if(Q)$.push(Q)}return VR(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||!WR(Z.text))return Z;if(!await this.config.onAuthError().catch(()=>!1))return Z;let J=await this.executeRunInternal({isContinue:!0});return LB(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 DR(Q,$.userImages,$.userFiles,this.config.userFileContentLoader);this.conversation.appendMessage({role:"user",content:L})}let J=await this.composeSystemPrompt(),W=tK(this.config,this.logger,this.telemetry),X=new Map;for(let L of this.contributionRegistry.getRegisteredTools())X.set(L.name,L);let Y=KR([...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=UG(this.config),H=Array.from(j.values()),K=SQ(this.conversation.getMessages()),G=BG({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=X6(D.messages);this.conversation.replaceMessages(L)}let A=new Date;try{return this.buildLegacyResult({runResult:D,thrownError:_,startedAt:Z,endedAt:A})}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 $=GR([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=X6(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:SQ(Y.messages)}:{},...Y.systemPrompt!==void 0?{systemPrompt:Y.systemPrompt}:{}}}}async prepareMessagesForModelRequest($){let Z=await this.prepareProviderMessagesForApi(bQ($));return SQ(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?YR(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(X6($));return}if(Z.length===0)return;let Q=new Set(this.conversation.getMessages().map((W)=>W.id).filter((W)=>typeof W==="string")),J=X6(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":UR(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?X6(Z.messages):this.conversation.getMessages(),H=UG(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 FR($,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 UR($){if(!$)return"error";switch($.status){case"completed":return"completed";case"aborted":return"aborted";case"failed":return"error"}}async function DR($,Z,Q,J){let{buildInitialUserContent:W}=await Promise.resolve().then(() => GG);return W($,Z,Q,J)}function UG($){if($.knownModels?.[$.modelId])return $.knownModels[$.modelId];let Z=OW($);if(Z?.[$.modelId])return Z[$.modelId];return}import{buildClineSystemPrompt as LG}from"@cline/shared";function _G($,Z){let Q=$.trim();if(Z.providerId.toLowerCase()!=="cline")return Q;return LG({ide:Z.clineIdeName?.trim()||"Terminal",workspaceRoot:Z.cwd?.trim()||"/",providerId:Z.providerId,rules:`# Team Teammate Role
221
221
  ${Q}`,platform:Z.clinePlatform,metadata:Z.workspaceMetadata})}function zG($,Z){let Q=$.trim();if(Z.providerId.toLowerCase()!=="cline")return Q;return LG({ide:Z.clineIdeName||"Terminal",workspaceRoot:Z.cwd?.trim()||"/",providerId:Z.providerId,overridePrompt:Q,metadata:Z.workspaceMetadata,platform:Z.clinePlatform})}function l$($){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 u2($){let Z=$.configProvider.getRuntimeConfig(),Q=$.kind==="teammate"?_G($.prompt,Z):zG($.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 i$($){let Z=u2($),Q=new d$(Z);if(Z.onEvent)Q.subscribeEvents(Z.onEvent);return Q}var zR=bW.object({systemPrompt:bW.string().describe("System prompt defining the sub-agent's behavior"),task:bW.string().describe("Task for the sub-agent to complete")});function r$($){return LR({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:_R(zR),execute:async(Z,Q)=>{let J=$.createSubAgentTools?await $.createSubAgentTools(Z,Q):$.subAgentTools??[],W=i$({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 N0,TEAM_AWAIT_TIMEOUT_MS as AR,TEAM_RUN_MESSAGE_PREVIEW_LIMIT as OR,TEAM_RUN_TEXT_PREVIEW_LIMIT as qR,TEAM_TASK_IGNORED_FIELDS_BY_ACTION as NR,TeamAttachOutcomeFragmentInputSchema as AG,TeamAwaitRunsInputSchema as OG,TeamBroadcastInputSchema as qG,TeamBroadcastToolResultSchema as TR,TeamCancelRunInputSchema as NG,TeamCancelRunToolResultSchema as MR,TeamCleanupInputSchema as TG,TeamCleanupToolResultSchema as ER,TeamCreateOutcomeInputSchema as MG,TeamCreateOutcomeToolResultSchema as RR,TeamFinalizeOutcomeInputSchema as EG,TeamFinalizeOutcomeToolResultSchema as fR,TeamListOutcomesInputSchema as RG,TeamListRunsInputSchema as fG,TeamMailboxMessageToolResultSchema as PR,TeamMissionLogInputSchema as PG,TeamMissionLogToolResultSchema as CR,TeamOutcomeFragmentToolResultSchema as CG,TeamOutcomeToolResultSchema as wR,TeamReadMailboxInputSchema as wG,TeamReviewOutcomeFragmentInputSchema as SG,TeamRunTaskInputSchema as bG,TeamRunTaskToolResultSchema as kW,TeamRunToolSummarySchema as yW,TeamSendMessageInputSchema as kG,TeamSendMessageToolResultSchema as SR,TeamShutdownTeammateInputSchema as yG,TeamSimpleAgentStatusToolResultSchema as IG,TeamSpawnTeammateInputSchema as hG,TeamStatusInputSchema as xG,TeamStatusToolResultSchema as bR,TeamTaskInputSchema as vG,TeamTaskToolResultSchema as _5,validateWithZod as v,zodToJsonSchema as T0}from"@cline/shared";function gG($,Z){let Q=$.replace(/\s+/g," ").trim();if(Q.length<=Z)return Q;return`${Q.slice(0,Math.max(0,Z-3)).trimEnd()}...`}function p2($,Z){if($===void 0)throw Error(`Missing required field: ${Z}`);return $}function kR($){let Z=$.result;if(!Z)return;return{textPreview:gG(Z.text,qR),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 hQ($){return $?.toISOString()}function IW($){return{id:$.id,agentId:$.agentId,taskId:$.taskId,status:$.status,messagePreview:gG($.message,OR),priority:$.priority,retryCount:$.retryCount,maxRetries:$.maxRetries,nextAttemptAt:hQ($.nextAttemptAt),continueConversation:$.continueConversation,startedAt:$.startedAt.toISOString(),endedAt:hQ($.endedAt),leaseOwner:$.leaseOwner,heartbeatAt:hQ($.heartbeatAt),lastProgressAt:hQ($.lastProgressAt),lastProgressMessage:$.lastProgressMessage,currentActivity:$.currentActivity,error:$.error,resultSummary:kR($)}}function yR($){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 j6=["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 mG($){let Z=[];if($.createBaseTools)Z.push(...$.createBaseTools());Z.push(...d2({runtime:$.runtime,requesterId:$.spec.agentId,teammateConfigProvider:$.teammateConfigProvider,createBaseTools:$.createBaseTools,allowSpawn:!1,includeSpawnTool:!1})),$.runtime.spawnTeammate({agentId:$.spec.agentId,config:u2({kind:"teammate",prompt:$.spec.rolePrompt,role:$.spec.rolePrompt,configProvider:$.teammateConfigProvider,tools:Z,maxIterations:$.spec.maxIterations,cwd:$.teammateConfigProvider.getRuntimeConfig().cwd})})}function V6($){let Z=$.leadAgentId??"lead",Q=$.restoredFromPersistence===!0,J=d2({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;mG({runtime:$.runtime,requesterId:Z,teammateConfigProvider:$.teammateConfigProvider,createBaseTools:$.createBaseTools,spec:X}),W.push(X.agentId)}return{tools:J,restoredFromPersistence:Q,restoredTeammates:W}}function d2($){let Z=$.allowSpawn??!0,Q=$.includeSpawnTool??!0,J=$.includeManagementTools??!0,W=[];if(Q)W.push(N0({name:"team_spawn_teammate",description:"Spawn a teammate with a required agentId and rolePrompt.",inputSchema:T0(hG),execute:async(Y)=>{let j=v(hG,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(mG({runtime:$.runtime,requesterId:$.requesterId,teammateConfigProvider:$.teammateConfigProvider,createBaseTools:$.createBaseTools,spec:V}),!J)$.onLeadToolsUnlocked?.(d2({...$,includeSpawnTool:!1,includeManagementTools:!0,onLeadToolsUnlocked:void 0}));return v(IG,{agentId:j.agentId,status:"spawned"})}}));if(!J)return W;W.push(N0({name:"team_shutdown_teammate",description:"Shutdown a teammate by agentId.",inputSchema:T0(yG),execute:async(Y)=>{let j=v(yG,Y);if($.runtime.getMemberRole($.requesterId)!=="lead")throw Error("Only the lead agent can manage teammates.");return $.runtime.shutdownTeammate(j.agentId,j.reason),v(IG,{agentId:j.agentId,status:"stopped"})}})),W.push(N0({name:"team_status",description:"Return a snapshot of team members, task counts, mailbox, and mission log stats.",inputSchema:T0(xG),execute:async(Y)=>{return v(xG,Y),v(bR,$.runtime.getSnapshot())}})),W.push(N0({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:T0(vG),execute:async(Y)=>{let j=v(vG,Y);switch(j.action){case"create":{let V=new Set(NR.create??[]),B=Object.entries(Y).filter(([K,G])=>V.has(K)&&G!=null).map(([K])=>K),H=$.runtime.createTask({title:p2(j.title,"title"),description:p2(j.description,"description"),dependsOn:j.dependsOn,assignee:j.assignee,createdBy:$.requesterId});return v(_5,{action:"create",taskId:H.id,status:H.status,...B.length>0?{ignoredFields:B,note:`Ignored fields for action=create: ${B.join(", ")}`}:{}})}case"list":return v(_5,{action:"list",tasks:$.runtime.listTaskItems({status:j.status,assignee:j.assignee})});case"claim":{let V=$.runtime.claimTask(p2(j.taskId,"taskId"),$.requesterId);return v(_5,{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(p2(j.taskId,"taskId"),$.requesterId,p2(j.summary,"summary"));return v(_5,{action:"complete",taskId:V.id,status:V.status})}case"block":{let V=$.runtime.blockTask(p2(j.taskId,"taskId"),$.requesterId,p2(j.reason,"reason"));return v(_5,{action:"block",taskId:V.id,status:V.status})}}}}));let X=new Map;return W.push(N0({name:"team_run_task",description:"Route a delegated task to a teammate. Choose sync (wait) or async (run in background).",inputSchema:T0(bG),execute:async(Y)=>{let j=v(bG,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 v(kW,{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 v(kW,{...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)=>v(kW,{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(N0({name:"team_cancel_run",description:"Cancel one async teammate run.",inputSchema:T0(NG),execute:async(Y)=>{let j=v(NG,Y),V=$.runtime.cancelRun(j.runId,j.reason);return v(MR,{runId:V.id,status:V.status})}})),W.push(N0({name:"team_list_runs",description:"List teammate runs started with team_run_task in async mode, including live activity/progress fields when available.",inputSchema:T0(fG),execute:async(Y)=>v(yW.array(),$.runtime.listRuns(v(fG,Y)).map(IW))})),W.push(N0({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:T0(OG),timeoutMs:AR,execute:async(Y)=>{let j=v(OG,Y);if(j.runId){let H=await $.runtime.awaitRun(j.runId);return yR(H),v(yW,IW(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 v(yW.array(),V.map(IW))}})),W.push(N0({name:"team_send_message",description:"Send a mailbox message to a specific teammate.",inputSchema:T0(kG),execute:async(Y)=>{let j=v(kG,Y),V=$.runtime.sendMessage($.requesterId,j.toAgentId,j.subject,j.body,j.taskId??void 0);return v(SR,{id:V.id,toAgentId:V.toAgentId})}})),W.push(N0({name:"team_broadcast",description:"Broadcast a message to all teammates.",inputSchema:T0(qG),execute:async(Y)=>{let j=v(qG,Y),V=$.runtime.broadcast($.requesterId,j.subject,j.body,{taskId:j.taskId??void 0});return v(TR,{delivered:V.length})}})),W.push(N0({name:"team_read_mailbox",description:"Read the current agent mailbox.",inputSchema:T0(wG),execute:async(Y)=>{let j=v(wG,Y);return v(PR.array(),$.runtime.listMailbox($.requesterId,{unreadOnly:j.unreadOnly,markRead:!0}))}})),W.push(N0({name:"team_mission_log",description:"Append a mission log update for your team.",inputSchema:T0(PG),execute:async(Y)=>{let j=v(PG,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 v(CR,{id:V.id})}})),W.push(N0({name:"team_cleanup",description:"Clean up the team runtime. Fails if teammates are still running.",inputSchema:T0(TG),execute:async(Y)=>{if(v(TG,Y),$.runtime.getMemberRole($.requesterId)!=="lead")throw Error("Only the lead agent can run cleanup.");return $.runtime.cleanup(),v(ER,{status:"cleaned"})}})),W.push(N0({name:"team_create_outcome",description:"Create a converged team outcome.",inputSchema:T0(MG),execute:async(Y)=>{let j=v(MG,Y),V=$.runtime.createOutcome({title:j.title,requiredSections:j.requiredSections,createdBy:$.requesterId});return v(RR,{outcomeId:V.id,status:V.status,requiredSections:V.requiredSections})}})),W.push(N0({name:"team_attach_outcome_fragment",description:"Attach a fragment to an outcome section.",inputSchema:T0(AG),execute:async(Y)=>{let j=v(AG,Y),V=$.runtime.attachOutcomeFragment({outcomeId:j.outcomeId,section:j.section,sourceAgentId:$.requesterId,sourceRunId:j.sourceRunId||void 0,content:j.content});return v(CG,{fragmentId:V.id,status:V.status})}})),W.push(N0({name:"team_review_outcome_fragment",description:"Review one outcome fragment.",inputSchema:T0(SG),execute:async(Y)=>{let j=v(SG,Y),V=$.runtime.reviewOutcomeFragment({fragmentId:j.fragmentId,reviewedBy:$.requesterId,approved:j.approved});return v(CG,{fragmentId:V.id,status:V.status})}})),W.push(N0({name:"team_finalize_outcome",description:"Finalize one outcome.",inputSchema:T0(EG),execute:async(Y)=>{let j=v(EG,Y),V=$.runtime.finalizeOutcome(j.outcomeId);return v(fR,{outcomeId:V.id,status:V.status})}})),W.push(N0({name:"team_list_outcomes",description:"List team outcomes.",inputSchema:T0(RG),execute:async(Y)=>{return v(RG,Y),v(wR.array(),$.runtime.listOutcomes())}})),W}function xQ($){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 cG($){return $.toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")}var IR=[{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:r$({configProvider:{}}).description,headlessToolNames:["spawn_agent"]},{id:"teams",description:"Enable team collaboration tools for teammate management, task coordination, mailbox messaging, mission logs, and outcomes.",headlessToolNames:[...j6]}],hR={read_files:"enableReadFiles",search_codebase:"enableSearch",run_commands:"enableBash",fetch_web_content:"enableWebFetch",apply_patch:"enableApplyPatch",editor:"enableEditor",skills:"enableSkills",ask_question:"enableAskQuestion"};function xR($){return $==="plan"||$==="yolo"?$:"act"}function pG($){let Z=xR($.mode),Q=j1[V$({mode:Z})],J=W6($.providerId??"",$.modelId??"",Z,J6);return{mode:Z,flags:{...Q,...J,...typeof $.enableSpawnAgent==="boolean"?{enableSpawnAgent:$.enableSpawnAgent}:{},...typeof $.enableAgentTeams==="boolean"?{enableAgentTeams:$.enableAgentTeams}:{}}}}function uG($,Z){if(Z.disabledToolIds?.has($))return!1;let{flags:Q}=pG(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=hR[$];return J?Q[J]===!0:!1}function vR($,Z){if($.id==="editor"){let{flags:Q}=pG(Z),J=Q.enableApplyPatch===!0&&Q.enableEditor!==!0;return{...$,defaultEnabled:uG($.id,Z),headlessToolNames:[J?"apply_patch":"editor"]}}return{...$,defaultEnabled:uG($.id,Z)}}function l2($={}){return IR.map((Z)=>vR(Z,$))}function vQ($={}){return l2($).filter((Z)=>Z.defaultEnabled).map((Z)=>Z.id)}function gQ($){if(!$.enabled)return new Set;let Z=l2($.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 z5($,Z={}){return l2(Z).filter((Q)=>$.has(Q.id)).flatMap((Q)=>Q.headlessToolNames)}function mQ($,Z={}){return z5($,Z)}import{getDefaultShell as gR}from"@cline/shared";function i2($={}){let{executorOptions:Z={},executors:Q,...J}=$,W=J.shell??Z.bash?.shell??gR(process.platform),X={...Z,bash:{...Z.bash,shell:W}},Y={...Q6(X),...Q??{}};return c$({...J,shell:W,executors:Y})}import{mkdirSync as lR,writeFileSync as iR}from"node:fs";import{dirname as rR}from"node:path";import{normalizeUserInput as nR,stripModeNotices as aR}from"@cline/shared";import{nanoid as oR}from"nanoid";var rG={};P(rG,{isTerminalSessionStatus:()=>iG,isNonTerminalSessionStatus:()=>A0,SessionSource:()=>s,SESSION_STATUSES:()=>A5,NON_TERMINAL_SESSION_STATUSES:()=>lG});import{SESSION_STATUS_VALUES as uR}from"@cline/shared";var A5=uR,lG=["idle","running","pending"];function iG($){return!lG.includes($)}function A0($){return!iG($)}var s={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 nG="sessionHistoryOrigin";function B6($){return typeof $==="string"&&$.trim()?$.trim():void 0}function cQ($){let Z=[$?.name,$?.platform].filter((Q)=>typeof Q==="string").join(" ").toLowerCase();if(!Z)return;if(Z.includes("vscode")||Z.includes("visual studio code"))return s.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 s.JETBRAINS;if(Z.includes("neovim"))return s.NEOVIM;if(Z.includes("kanban"))return s.KANBAN;if(Z.includes("desktop"))return s.DESKTOP;if(Z.includes("cline-platform"))return s.WEB;if(Z.includes("cline-cli")||Z.includes("cline-acp"))return s.CLI;if(Z.includes("cline-sdk")||Z.includes("cline-core"))return s.CORE;return}function H6($){let Z=$?.[nG];if(!Z||typeof Z!=="object"||Array.isArray(Z))return;let Q=Z,J=B6(Q.mode);if(!J)return;let W=B6(Q.version),X=B6(Q.trigger);return{mode:J,...W?{version:W}:{},...X?{trigger:X}:{}}}function v0($,Z){let Q=H6($),J=B6(Z.mode)??Q?.mode??"user",W=B6(Z.version)??Q?.version,X=B6(Z.trigger)??Q?.trigger;return{...$??{},[nG]:{mode:J,...W?{version:W}:{},...X?{trigger:X}:{}}}}var aG={};P(aG,{sanitizeSessionToken:()=>r2,parseTeamTaskSubSessionId:()=>G6,parseSubSessionId:()=>q5,makeTeamTaskSubSessionId:()=>O5,makeSubSessionId:()=>K6,deriveSubsessionStatus:()=>N5});import{nanoid as pR}from"nanoid";function r2($){return $.replace(/[^a-zA-Z0-9._-]+/g,"_")}function K6($,Z){let Q=r2($),J=r2(Z),W=`${Q}__${J}`;return W.length>180?W.slice(0,180):W}function O5($,Z){let Q=r2($),J=r2(Z);return`${Q}__teamtask__${J}__${pR(6)}`}function G6($){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 q5($){if(G6($))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 N5($){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 X0}from"zod";var dR=X0.enum(A5),a0=X0.object({version:X0.literal(1),session_id:X0.string().min(1),source:X0.string().min(1),pid:X0.number().int(),started_at:X0.string().min(1),ended_at:X0.string().min(1).optional(),exit_code:X0.number().int().nullable().optional(),status:dR,interactive:X0.boolean(),provider:X0.string().min(1),model:X0.string().min(1),cwd:X0.string().min(1),workspace_root:X0.string().min(1),team_name:X0.string().min(1).optional(),enable_tools:X0.boolean(),enable_spawn:X0.boolean(),enable_teams:X0.boolean(),prompt:X0.string().optional(),metadata:X0.record(X0.string(),X0.unknown()).optional(),messages_path:X0.string().min(1).optional(),compaction_path:X0.string().min(1).optional()});function oG($){if(!$)return!1;return Object.values($).some((Z)=>typeof Z==="function")}function xW($,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 sG($){return JSON.stringify($,(Z,Q)=>{if(Q instanceof Error)return{name:Q.name,message:Q.message,stack:Q.stack};return Q})}function H$($){return typeof $==="string"&&$.trim()?$.trim():void 0}function hW($,Z){let Q={...$};Q.id=H$(Q.id)??oR();let J=Q.modelInfo&&typeof Q.modelInfo==="object"?{...Q.modelInfo}:void 0,W={id:H$(J?.id)??H$(Q.modelId)??H$(Z?.id),provider:H$(J?.provider)??H$(Q.providerId)??H$(Z?.provider),family:H$(J?.family)??H$(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 uQ($){return $.map((Z)=>hW(Z))}function pQ($,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 hW(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]={...hW(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 T5($){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 sR=120;function n2($){let Z=$?.trim();return Z?Z.slice(0,sR):void 0}function vW($){let Z=aR(nR($??"")).trim();if(!Z)return;return n2(Z.split(`
222
222
  `)[0]?.trim())}function n$($){if(!$)return;let Z={...$},Q=n2(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 M5($){let Z=n$($.metadata)??{},Q=$.title!==void 0?n2($.title):vW($.prompt);if(Q)Z.title=Q;return Object.keys(Z).length>0?Z:void 0}function gW($){let Z=H6($.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(G6($.sessionId))return{agent:"teammate",sessionId:$.sessionId,taskType:"team",origin:Q};if(q5($.sessionId))return{agent:"subagent",sessionId:$.sessionId,taskType:"subagent_task",origin:Q};return{agent:"lead",sessionId:$.sessionId,origin:Q}}function mW($){return{version:1,updated_at:$.updatedAt,agent:$.context.agent,sessionId:$.context.sessionId,...$.context.taskType?{taskType:$.context.taskType}:{},origin:$.context.origin,messages:uQ($.messages),...$.systemPrompt?{system_prompt:$.systemPrompt}:{}}}function tG($,Z,Q){lR(rR($),{recursive:!0}),iR($,`${JSON.stringify(mW({updatedAt:Z,context:Q,messages:[]}),null,2)}
223
- `,"utf8")}function eG($,Z){return a0.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 $F($,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}}L0();var ZF={};P(ZF,{summarizeUsageFromMessages:()=>U6,sumUsageTotals:()=>E5,getCurrentContextSize:()=>cW,createInitialAccumulatedUsage:()=>P0,accumulateUsageTotals:()=>M0});function P0(){return{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,totalCost:0}}function M0($,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 E5($){let Z=P0();for(let Q of $)Z=M0(Z,Q);return Z}function F6($){return typeof $==="number"&&Number.isFinite($)?$:0}function U6($){let Z=P0();for(let Q of $){let J=Q.metrics;if(!J)continue;Z=M0(Z,{inputTokens:F6(J.inputTokens),outputTokens:F6(J.outputTokens),cacheReadTokens:F6(J.cacheReadTokens),cacheWriteTokens:F6(J.cacheWriteTokens),totalCost:F6(J.cost)})}return Z}function cW($){for(let Z=$.length-1;Z>=0;Z-=1){let Q=$[Z];if(Q?.role!=="assistant")continue;let J=F6(Q.metrics?.inputTokens);return J>0?J:void 0}return}function tR($){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 uW($){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 K$($){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 eR($){return{inputTokens:$.inputTokens,outputTokens:$.outputTokens,cacheWriteTokens:$.cacheWriteTokens,cacheReadTokens:$.cacheReadTokens,totalCost:$.cost}}function $f($){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 dQ($,Z,Q){let{sessionId:J,config:W,liveSession:X,emit:Y}=$,j=W.telemetry,V=X?.runtime.teamRuntime,B=Q?.isPrimaryAgentEvent??!0,H=uW(Z),K=K$({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=tR(Z.input);if(G)mZ(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(m8(j,{ulid:J,tool:G,autoApproved:void 0,success:F,modelId:W.modelId,provider:W.providerId,...K}),!F&&(G==="editor"||G==="apply_patch"))cZ(j,{ulid:J,modelId:W.modelId,provider:W.providerId,errorType:Z.error,...K})}if(Z.type==="usage"&&X?.turnUsageBaseline){let G=eR(Z);if(B){X.turnPrimaryUsage=M0(X.turnPrimaryUsage??P0(),G);let U=M0(X.turnUsageBaseline,X.turnPrimaryUsage);$.usageBySession.set(J,U),g8(j,{ulid:J,provider:W.providerId,model:W.modelId,source:"assistant",mode:W.mode,...K}),vZ(j,{ulid:J,tokensIn:Z.inputTokens,tokensOut:Z.outputTokens,cacheWriteTokens:Z.cacheWriteTokens,cacheReadTokens:Z.cacheReadTokens,totalCost:Z.cost,model:W.modelId,...K})}else{let U=$f({isPrimaryAgentEvent:B,overrides:Q,eventMetadata:H}),D=X.turnUsageByAgent??new Map;X.turnUsageByAgent=D,D.set(U,M0(D.get(U)??P0(),G))}let F=M0(X.turnPrimaryUsage??P0(),E5(X.turnUsageByAgent?.values()??[]));$.aggregateUsageBySession.set(J,M0(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:sG(Z),ts:Date.now()}})}function G$($){return $.workspaceRoot??$.cwd}import{resolveProviderRequestHeaders as OC}from"@cline/llms";import{hasRuntimeConfigExtension as qC}from"@cline/shared";var D6="0.0.70";var R5={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:D6,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",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 oQ,readFileSync as uf,statSync as pf}from"node:fs";import{basename as df,dirname as nQ,join as sQ,resolve as aQ}from"node:path";import{discoverPluginModulePaths as lf,resolveConfiguredPluginModulePaths as EF,resolvePluginConfigSearchPaths as rf,SKILLS_CONFIG_DIRECTORY_NAME as nf}from"@cline/shared/storage";import{resolve as Of}from"node:path";import{normalizePluginManifest as qf}from"@cline/shared";import{existsSync as S0,readFileSync as _6}from"node:fs";import{builtinModules as Zf,createRequire as iW}from"node:module";import{dirname as a$,extname as P5,isAbsolute as Qf,resolve as o}from"node:path";import{fileURLToPath as WF}from"node:url";import{PLUGIN_FILE_EXTENSIONS as Jf}from"@cline/shared";var XF=a$(WF(import.meta.url)),Wf=iW(import.meta.url),Xf=o(XF,"..","..","..","..",".."),pW=Vf(Xf),Yf=["@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"],rW=new Set(Zf.flatMap(($)=>[$,$.replace(/^node:/,"")])),f5=new Set(Jf),jf=["development","node","import","require","default"];function Vf($){let Z={},Q={"@cline/sdk":o($,"packages/sdk/src/index.ts"),"@cline/agents":o($,"packages/agents/src/index.ts"),"@cline/core":o($,"packages/core/src/index.ts"),"@cline/llms":o($,"packages/llms/src/index.ts"),"@cline/shared":o($,"packages/shared/src/index.ts"),"@cline/shared/storage":o($,"packages/shared/src/storage/index.ts"),"@cline/shared/db":o($,"packages/shared/src/db/index.ts")};for(let[J,W]of Object.entries(Q))if(S0(W))Z[J]=W;for(let J of["agents","core","llms","shared"]){let W=o($,"packages",J),X=o(W,"package.json");if(!S0(X))continue;try{let Y=JSON.parse(_6(X,"utf8"));if(typeof Y.name!=="string"||!Y.exports)continue;if(typeof Y.exports==="string"){let j=o(W,Y.exports);if(S0(j))Z[Y.name]=j;continue}if(typeof Y.exports!=="object")continue;for(let[j,V]of Object.entries(Y.exports)){let B=Bf(W,V);if(!B)continue;let H=j==="."?Y.name:`${Y.name}/${j.replace(/^\.\//,"")}`;Z[H]=B}}catch{}}return Z}function Bf($,Z){let Q=nW(Z);if(!Q)return null;let J=YF($,Q);for(let W of J)if(S0(W))return W;return null}function nW($,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 jf){let W=nW(Q[J],Z);if(W)return W}return null}function YF($,Z){let Q=Z.replace(/^\.\//,""),J=[o($,Z)];if(Q.startsWith("dist/")){let W=Q.replace(/^dist\//,"src/").replace(/\.(mjs|cjs|js)$/,"");return[o($,`${W}.ts`),o($,`${W}.tsx`),o($,`${W}.mts`),o($,`${W}.cts`),...J]}return J}function Hf($){return Object.fromEntries(Object.entries($).sort(([Z],[Q])=>Q.length-Z.length))}function lQ($){return!($.startsWith(".")||$.startsWith("/")||$.startsWith("file:")||$.startsWith("data:")||$.startsWith("http:")||$.startsWith("https:"))}function L6($){if($.startsWith("@")){let[Z,Q]=$.split("/",3);return Q?`${Z}/${Q}`:$}return $.split("/",1)[0]??$}function Kf($){let Z=L6($);if($===Z)return".";return`.${$.slice(Z.length)}`}function jF($){return L6($).startsWith("@cline/")}function dW($,Z){let Q=L6(Z),J=a$($);while(!0){let W=o(J,"node_modules",Q);if(S0(W)||S0(o(W,"package.json")))return!0;let X=o(J,"..");if(X===J)return!1;J=X}}function JF($){return lW($)!==null}function lW($){try{return Wf.resolve($)}catch{}return Gf($)}function Gf($){let Z=L6($),Q=VF(Z);if(!Q)return null;let J=o(Q,"package.json");try{let W=JSON.parse(_6(J,"utf8")),X=Kf($),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=nW(Y)??(X==="."&&typeof W.main==="string"?W.main:null);if(!j)return null;let V=o(Q,j),B=[V,...YF(Q,j).filter((H)=>H!==V)];for(let H of B)if(S0(H))return H;return null}catch{return null}}function Ff(){let $=[XF],Z=process.env.CLINE_WRAPPER_PATH?.trim();if(Z)$.push(a$(a$(Z)));let Q=process.execPath?.trim();if(Q)$.push(a$(Q));return[...new Set($.map((J)=>o(J)))]}function Uf($,Z){let Q=$;while(!0){let J=o(Q,"package.json");if(S0(J))try{if(JSON.parse(_6(J,"utf8")).name===Z)return Q}catch{}let W=o(Q,"node_modules",Z,"package.json");if(S0(W))return a$(W);let X=o(Q,"..");if(X===Q)return null;Q=X}}function VF($){for(let Z of Ff()){let Q=Uf(Z,$);if(Q)return Q}return null}function Df($){let Q=a$($);for(let J=0;J<4;J++){let W=o(Q,"package.json");if(S0(W))try{let Y=JSON.parse(_6(W,"utf8"));return Y!=null&&typeof Y==="object"&&"cline"in Y}catch{return!1}let X=o(Q,"..");if(X===Q)return!1;Q=X}return!1}function BF($,Z){let Q=Z.startsWith("file:")?WF(Z):Qf(Z)?Z:o(a$($),Z);if(S0(Q)&&f5.has(P5(Q)))return Q;for(let J of f5){let W=`${Q}${J}`;if(S0(W))return W}for(let J of f5){let W=o(Q,`index${J}`);if(S0(W))return W}return null}function HF($){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 Lf($){return P5($)!==".ts"}function KF($,Z,Q=new Set){if(Q.has($)||!S0($))return;if(Q.add($),!f5.has(P5($)))return;let J=_6($,"utf8"),W=Lf($);for(let X of HF(J)){if(X.startsWith("node:")||rW.has(X))continue;if(lQ(X)){if(!W)continue;if(Object.hasOwn(pW,X)||Object.hasOwn(pW,L6(X))||dW($,X)||jF(X)&&JF(X)||Z&&JF(X))continue;throw Error(`Cannot find module '${L6(X)}'`)}let Y=BF($,X);if(Y)KF(Y,Z,Q)}}function GF($,Z=new Set,Q=new Set){if(Z.has($)||!S0($))return Q;if(Z.add($),!f5.has(P5($)))return Q;let J=_6($,"utf8");for(let W of HF(J)){if(Q.add(W),lQ(W))continue;let X=BF($,W);if(X)GF(X,Z,Q)}return Q}function _f($,Z){let Q=iW($),J={},W=GF($),X=new Set(Yf);for(let[Y,j]of Object.entries(pW)){try{Q.resolve(Y);continue}catch{}J[Y]=j}for(let Y of W)if(lQ(Y)&&(jF(Y)||Z))X.add(Y);for(let Y of X){if(Object.hasOwn(J,Y)||dW($,Y))continue;let j=lW(Y);if(j)J[Y]=j}if(!Z)return J;for(let Y of W){if(!lQ(Y)||Object.hasOwn(J,Y)||dW($,Y)||Y.startsWith("node:")||rW.has(Y))continue;let j=lW(Y);if(j)J[Y]=j}return J}function zf($){let Z=P5($);return Z===".ts"||Z===".tsx"||Z===".mts"||Z===".cts"}var a2;function Af(){if(a2!==void 0)return a2;let $=VF("jiti");if(!$)return a2=null,null;let Z=o($,"dist","babel.cjs");if(!S0(Z))return a2=null,null;try{let J=iW(Z)(Z);a2=typeof J==="function"?J:null}catch{a2=null}return a2}async function FF($,Z={}){let Q=!Df($);KF($,Q);let J=_f($,Q),W=Hf(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])=>zf(K)).map(([K])=>K),V=Af(),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:[...rW],transformModules:j,tryNative:!1,...B?{transform:B}:{}}).import($,{})}function UF($,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 DF($){return typeof $==="object"&&$!==null}function aW($){return Array.isArray($)&&$.every((Z)=>typeof Z==="string")}function Nf($,Z){if(!DF($.manifest))throw Error(`Invalid plugin module at ${Z}: missing required "manifest"`);if(!aW($.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")&&!aW($.manifest.providerIds))throw Error(`Invalid plugin module at ${Z}: manifest.providerIds must be a string array when provided`);if(Object.hasOwn($.manifest,"modelIds")&&!aW($.manifest.modelIds))throw Error(`Invalid plugin module at ${Z}: manifest.modelIds must be a string array when provided`)}function Tf($,Z){if(!DF($))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"`);Nf($,Z)}async function C5($,Z={}){let Q=Of(Z.cwd??process.cwd(),$),J=await FF(Q,{useCache:Z.useCache}),W=Z.exportName??"plugin",X=J.default??J[W];Tf(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:qf(Y.manifest),setup:V}}async function iQ($,Z={}){return(await o2($,Z)).plugins}async function o2($,Z={}){let Q=[],J=[],W=new Map,X=0;for(let j of $)try{let V=await C5(j,Z);if(!UF(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 ZX}from"node:fs";import{createRequire as NF}from"node:module";import{dirname as rQ,join as A6}from"node:path";import{fileURLToPath as Pf}from"node:url";var AF={};P(AF,{resolveSubprocessRuntimeExecutable:()=>sW,buildSubprocessSandboxCommand:()=>zF,SubprocessSandbox:()=>z6,CLINE_JS_RUNTIME_PATH_ENV:()=>_F});import{spawn as Mf}from"node:child_process";import{basename as Ef}from"node:path";import{augmentNodeCommandForDebug as Rf,withResolvedClineBuildEnv as ff}from"@cline/shared";function oW($){if($ instanceof Error)return $;return Error(String($))}var _F="CLINE_JS_RUNTIME_PATH";function LF($){let Z=$?.trim();if(!Z)return!1;let Q=Ef(Z).toLowerCase();return Q==="node"||Q==="node.exe"||Q==="bun"||Q==="bun.exe"}function sW($={}){let Z=$.env??process.env,Q=$.runtimeExecutable?.trim()||Z[_F]?.trim();if(Q)return Q;let J=$.execPath?.trim()||process.execPath;if(LF(J))return J;for(let W of[Z.BUN_EXEC_PATH,Z.npm_node_execpath,Z.NODE]){let X=W?.trim();if(X&&LF(X))return X}return"node"}function zF($,Z={}){let Q=sW({env:Z.env,execPath:Z.execPath,runtimeExecutable:Z.runtimeExecutable});return Rf([Q,...$],{env:Z.env,execArgv:Z.execArgv,debugRole:Z.name==="plugin-sandbox"?"plugin-sandbox":"sandbox"})}class z6{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=zF($,{name:this.options.name,runtimeExecutable:this.options.runtimeExecutable}),Q=Mf(Z[0]??sW(this.options),Z.slice(1),{stdio:["ignore","ignore","pipe","ipc"],env:ff(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: ${oW(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 "${$}": ${oW(B).message}`))})}catch(B){this.clearPendingRequest(W),j(oW(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 Cf($){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 w5($){return($ instanceof Error?$.message:String($)).includes("Unknown sandbox plugin id:")}function wf(){return`@cline/cli-${process.platform==="win32"?"windows":process.platform}-${process.arch}`}function Sf(){let $=process.env.CLINE_WRAPPER_PATH?.trim();if(!$)return;try{let Q=NF($).resolve(`${wf()}/package.json`),J=A6(rQ(Q),"extensions","plugin-sandbox-bootstrap.js");return ZX(J)?J:void 0}catch{return}}function bf(){let $=process.execPath?.trim();if(!$)return;let Z=A6(rQ(rQ($)),"extensions","plugin-sandbox-bootstrap.js");return ZX(Z)?Z:void 0}function kf(){let $=rQ(Pf(import.meta.url)),Z=NF(import.meta.url),Q=[A6($,"plugin-sandbox-bootstrap.js"),A6($,"extensions","plugin-sandbox-bootstrap.js"),A6($,"agents","plugin-sandbox-bootstrap.js"),Sf(),bf()];for(let X of Q.filter((Y)=>typeof Y==="string"))if(ZX(X))return{file:X};let J=A6($,"plugin-sandbox-bootstrap.ts"),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(`
223
+ `,"utf8")}function eG($,Z){return a0.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 $F($,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}}L0();var ZF={};P(ZF,{summarizeUsageFromMessages:()=>U6,sumUsageTotals:()=>E5,getCurrentContextSize:()=>cW,createInitialAccumulatedUsage:()=>P0,accumulateUsageTotals:()=>M0});function P0(){return{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,totalCost:0}}function M0($,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 E5($){let Z=P0();for(let Q of $)Z=M0(Z,Q);return Z}function F6($){return typeof $==="number"&&Number.isFinite($)?$:0}function U6($){let Z=P0();for(let Q of $){let J=Q.metrics;if(!J)continue;Z=M0(Z,{inputTokens:F6(J.inputTokens),outputTokens:F6(J.outputTokens),cacheReadTokens:F6(J.cacheReadTokens),cacheWriteTokens:F6(J.cacheWriteTokens),totalCost:F6(J.cost)})}return Z}function cW($){for(let Z=$.length-1;Z>=0;Z-=1){let Q=$[Z];if(Q?.role!=="assistant")continue;let J=F6(Q.metrics?.inputTokens);return J>0?J:void 0}return}function tR($){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 uW($){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 K$($){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 eR($){return{inputTokens:$.inputTokens,outputTokens:$.outputTokens,cacheWriteTokens:$.cacheWriteTokens,cacheReadTokens:$.cacheReadTokens,totalCost:$.cost}}function $f($){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 dQ($,Z,Q){let{sessionId:J,config:W,liveSession:X,emit:Y}=$,j=W.telemetry,V=X?.runtime.teamRuntime,B=Q?.isPrimaryAgentEvent??!0,H=uW(Z),K=K$({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=tR(Z.input);if(G)mZ(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(m8(j,{ulid:J,tool:G,autoApproved:void 0,success:F,modelId:W.modelId,provider:W.providerId,...K}),!F&&(G==="editor"||G==="apply_patch"))cZ(j,{ulid:J,modelId:W.modelId,provider:W.providerId,errorType:Z.error,...K})}if(Z.type==="usage"&&X?.turnUsageBaseline){let G=eR(Z);if(B){X.turnPrimaryUsage=M0(X.turnPrimaryUsage??P0(),G);let U=M0(X.turnUsageBaseline,X.turnPrimaryUsage);$.usageBySession.set(J,U),g8(j,{ulid:J,provider:W.providerId,model:W.modelId,source:"assistant",mode:W.mode,...K}),vZ(j,{ulid:J,tokensIn:Z.inputTokens,tokensOut:Z.outputTokens,cacheWriteTokens:Z.cacheWriteTokens,cacheReadTokens:Z.cacheReadTokens,totalCost:Z.cost,model:W.modelId,...K})}else{let U=$f({isPrimaryAgentEvent:B,overrides:Q,eventMetadata:H}),D=X.turnUsageByAgent??new Map;X.turnUsageByAgent=D,D.set(U,M0(D.get(U)??P0(),G))}let F=M0(X.turnPrimaryUsage??P0(),E5(X.turnUsageByAgent?.values()??[]));$.aggregateUsageBySession.set(J,M0(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:sG(Z),ts:Date.now()}})}function G$($){return $.workspaceRoot??$.cwd}import{resolveProviderRequestHeaders as OC}from"@cline/llms";import{hasRuntimeConfigExtension as qC}from"@cline/shared";var D6="0.0.71";var R5={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:D6,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",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 oQ,readFileSync as uf,statSync as pf}from"node:fs";import{basename as df,dirname as nQ,join as sQ,resolve as aQ}from"node:path";import{discoverPluginModulePaths as lf,resolveConfiguredPluginModulePaths as EF,resolvePluginConfigSearchPaths as rf,SKILLS_CONFIG_DIRECTORY_NAME as nf}from"@cline/shared/storage";import{resolve as Of}from"node:path";import{normalizePluginManifest as qf}from"@cline/shared";import{existsSync as S0,readFileSync as _6}from"node:fs";import{builtinModules as Zf,createRequire as iW}from"node:module";import{dirname as a$,extname as P5,isAbsolute as Qf,resolve as o}from"node:path";import{fileURLToPath as WF}from"node:url";import{PLUGIN_FILE_EXTENSIONS as Jf}from"@cline/shared";var XF=a$(WF(import.meta.url)),Wf=iW(import.meta.url),Xf=o(XF,"..","..","..","..",".."),pW=Vf(Xf),Yf=["@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"],rW=new Set(Zf.flatMap(($)=>[$,$.replace(/^node:/,"")])),f5=new Set(Jf),jf=["development","node","import","require","default"];function Vf($){let Z={},Q={"@cline/sdk":o($,"packages/sdk/src/index.ts"),"@cline/agents":o($,"packages/agents/src/index.ts"),"@cline/core":o($,"packages/core/src/index.ts"),"@cline/llms":o($,"packages/llms/src/index.ts"),"@cline/shared":o($,"packages/shared/src/index.ts"),"@cline/shared/storage":o($,"packages/shared/src/storage/index.ts"),"@cline/shared/db":o($,"packages/shared/src/db/index.ts")};for(let[J,W]of Object.entries(Q))if(S0(W))Z[J]=W;for(let J of["agents","core","llms","shared"]){let W=o($,"packages",J),X=o(W,"package.json");if(!S0(X))continue;try{let Y=JSON.parse(_6(X,"utf8"));if(typeof Y.name!=="string"||!Y.exports)continue;if(typeof Y.exports==="string"){let j=o(W,Y.exports);if(S0(j))Z[Y.name]=j;continue}if(typeof Y.exports!=="object")continue;for(let[j,V]of Object.entries(Y.exports)){let B=Bf(W,V);if(!B)continue;let H=j==="."?Y.name:`${Y.name}/${j.replace(/^\.\//,"")}`;Z[H]=B}}catch{}}return Z}function Bf($,Z){let Q=nW(Z);if(!Q)return null;let J=YF($,Q);for(let W of J)if(S0(W))return W;return null}function nW($,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 jf){let W=nW(Q[J],Z);if(W)return W}return null}function YF($,Z){let Q=Z.replace(/^\.\//,""),J=[o($,Z)];if(Q.startsWith("dist/")){let W=Q.replace(/^dist\//,"src/").replace(/\.(mjs|cjs|js)$/,"");return[o($,`${W}.ts`),o($,`${W}.tsx`),o($,`${W}.mts`),o($,`${W}.cts`),...J]}return J}function Hf($){return Object.fromEntries(Object.entries($).sort(([Z],[Q])=>Q.length-Z.length))}function lQ($){return!($.startsWith(".")||$.startsWith("/")||$.startsWith("file:")||$.startsWith("data:")||$.startsWith("http:")||$.startsWith("https:"))}function L6($){if($.startsWith("@")){let[Z,Q]=$.split("/",3);return Q?`${Z}/${Q}`:$}return $.split("/",1)[0]??$}function Kf($){let Z=L6($);if($===Z)return".";return`.${$.slice(Z.length)}`}function jF($){return L6($).startsWith("@cline/")}function dW($,Z){let Q=L6(Z),J=a$($);while(!0){let W=o(J,"node_modules",Q);if(S0(W)||S0(o(W,"package.json")))return!0;let X=o(J,"..");if(X===J)return!1;J=X}}function JF($){return lW($)!==null}function lW($){try{return Wf.resolve($)}catch{}return Gf($)}function Gf($){let Z=L6($),Q=VF(Z);if(!Q)return null;let J=o(Q,"package.json");try{let W=JSON.parse(_6(J,"utf8")),X=Kf($),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=nW(Y)??(X==="."&&typeof W.main==="string"?W.main:null);if(!j)return null;let V=o(Q,j),B=[V,...YF(Q,j).filter((H)=>H!==V)];for(let H of B)if(S0(H))return H;return null}catch{return null}}function Ff(){let $=[XF],Z=process.env.CLINE_WRAPPER_PATH?.trim();if(Z)$.push(a$(a$(Z)));let Q=process.execPath?.trim();if(Q)$.push(a$(Q));return[...new Set($.map((J)=>o(J)))]}function Uf($,Z){let Q=$;while(!0){let J=o(Q,"package.json");if(S0(J))try{if(JSON.parse(_6(J,"utf8")).name===Z)return Q}catch{}let W=o(Q,"node_modules",Z,"package.json");if(S0(W))return a$(W);let X=o(Q,"..");if(X===Q)return null;Q=X}}function VF($){for(let Z of Ff()){let Q=Uf(Z,$);if(Q)return Q}return null}function Df($){let Q=a$($);for(let J=0;J<4;J++){let W=o(Q,"package.json");if(S0(W))try{let Y=JSON.parse(_6(W,"utf8"));return Y!=null&&typeof Y==="object"&&"cline"in Y}catch{return!1}let X=o(Q,"..");if(X===Q)return!1;Q=X}return!1}function BF($,Z){let Q=Z.startsWith("file:")?WF(Z):Qf(Z)?Z:o(a$($),Z);if(S0(Q)&&f5.has(P5(Q)))return Q;for(let J of f5){let W=`${Q}${J}`;if(S0(W))return W}for(let J of f5){let W=o(Q,`index${J}`);if(S0(W))return W}return null}function HF($){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 Lf($){return P5($)!==".ts"}function KF($,Z,Q=new Set){if(Q.has($)||!S0($))return;if(Q.add($),!f5.has(P5($)))return;let J=_6($,"utf8"),W=Lf($);for(let X of HF(J)){if(X.startsWith("node:")||rW.has(X))continue;if(lQ(X)){if(!W)continue;if(Object.hasOwn(pW,X)||Object.hasOwn(pW,L6(X))||dW($,X)||jF(X)&&JF(X)||Z&&JF(X))continue;throw Error(`Cannot find module '${L6(X)}'`)}let Y=BF($,X);if(Y)KF(Y,Z,Q)}}function GF($,Z=new Set,Q=new Set){if(Z.has($)||!S0($))return Q;if(Z.add($),!f5.has(P5($)))return Q;let J=_6($,"utf8");for(let W of HF(J)){if(Q.add(W),lQ(W))continue;let X=BF($,W);if(X)GF(X,Z,Q)}return Q}function _f($,Z){let Q=iW($),J={},W=GF($),X=new Set(Yf);for(let[Y,j]of Object.entries(pW)){try{Q.resolve(Y);continue}catch{}J[Y]=j}for(let Y of W)if(lQ(Y)&&(jF(Y)||Z))X.add(Y);for(let Y of X){if(Object.hasOwn(J,Y)||dW($,Y))continue;let j=lW(Y);if(j)J[Y]=j}if(!Z)return J;for(let Y of W){if(!lQ(Y)||Object.hasOwn(J,Y)||dW($,Y)||Y.startsWith("node:")||rW.has(Y))continue;let j=lW(Y);if(j)J[Y]=j}return J}function zf($){let Z=P5($);return Z===".ts"||Z===".tsx"||Z===".mts"||Z===".cts"}var a2;function Af(){if(a2!==void 0)return a2;let $=VF("jiti");if(!$)return a2=null,null;let Z=o($,"dist","babel.cjs");if(!S0(Z))return a2=null,null;try{let J=iW(Z)(Z);a2=typeof J==="function"?J:null}catch{a2=null}return a2}async function FF($,Z={}){let Q=!Df($);KF($,Q);let J=_f($,Q),W=Hf(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])=>zf(K)).map(([K])=>K),V=Af(),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:[...rW],transformModules:j,tryNative:!1,...B?{transform:B}:{}}).import($,{})}function UF($,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 DF($){return typeof $==="object"&&$!==null}function aW($){return Array.isArray($)&&$.every((Z)=>typeof Z==="string")}function Nf($,Z){if(!DF($.manifest))throw Error(`Invalid plugin module at ${Z}: missing required "manifest"`);if(!aW($.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")&&!aW($.manifest.providerIds))throw Error(`Invalid plugin module at ${Z}: manifest.providerIds must be a string array when provided`);if(Object.hasOwn($.manifest,"modelIds")&&!aW($.manifest.modelIds))throw Error(`Invalid plugin module at ${Z}: manifest.modelIds must be a string array when provided`)}function Tf($,Z){if(!DF($))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"`);Nf($,Z)}async function C5($,Z={}){let Q=Of(Z.cwd??process.cwd(),$),J=await FF(Q,{useCache:Z.useCache}),W=Z.exportName??"plugin",X=J.default??J[W];Tf(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:qf(Y.manifest),setup:V}}async function iQ($,Z={}){return(await o2($,Z)).plugins}async function o2($,Z={}){let Q=[],J=[],W=new Map,X=0;for(let j of $)try{let V=await C5(j,Z);if(!UF(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 ZX}from"node:fs";import{createRequire as NF}from"node:module";import{dirname as rQ,join as A6}from"node:path";import{fileURLToPath as Pf}from"node:url";var AF={};P(AF,{resolveSubprocessRuntimeExecutable:()=>sW,buildSubprocessSandboxCommand:()=>zF,SubprocessSandbox:()=>z6,CLINE_JS_RUNTIME_PATH_ENV:()=>_F});import{spawn as Mf}from"node:child_process";import{basename as Ef}from"node:path";import{augmentNodeCommandForDebug as Rf,withResolvedClineBuildEnv as ff}from"@cline/shared";function oW($){if($ instanceof Error)return $;return Error(String($))}var _F="CLINE_JS_RUNTIME_PATH";function LF($){let Z=$?.trim();if(!Z)return!1;let Q=Ef(Z).toLowerCase();return Q==="node"||Q==="node.exe"||Q==="bun"||Q==="bun.exe"}function sW($={}){let Z=$.env??process.env,Q=$.runtimeExecutable?.trim()||Z[_F]?.trim();if(Q)return Q;let J=$.execPath?.trim()||process.execPath;if(LF(J))return J;for(let W of[Z.BUN_EXEC_PATH,Z.npm_node_execpath,Z.NODE]){let X=W?.trim();if(X&&LF(X))return X}return"node"}function zF($,Z={}){let Q=sW({env:Z.env,execPath:Z.execPath,runtimeExecutable:Z.runtimeExecutable});return Rf([Q,...$],{env:Z.env,execArgv:Z.execArgv,debugRole:Z.name==="plugin-sandbox"?"plugin-sandbox":"sandbox"})}class z6{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=zF($,{name:this.options.name,runtimeExecutable:this.options.runtimeExecutable}),Q=Mf(Z[0]??sW(this.options),Z.slice(1),{stdio:["ignore","ignore","pipe","ipc"],env:ff(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: ${oW(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 "${$}": ${oW(B).message}`))})}catch(B){this.clearPendingRequest(W),j(oW(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 Cf($){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 w5($){return($ instanceof Error?$.message:String($)).includes("Unknown sandbox plugin id:")}function wf(){return`@cline/cli-${process.platform==="win32"?"windows":process.platform}-${process.arch}`}function Sf(){let $=process.env.CLINE_WRAPPER_PATH?.trim();if(!$)return;try{let Q=NF($).resolve(`${wf()}/package.json`),J=A6(rQ(Q),"extensions","plugin-sandbox-bootstrap.js");return ZX(J)?J:void 0}catch{return}}function bf(){let $=process.execPath?.trim();if(!$)return;let Z=A6(rQ(rQ($)),"extensions","plugin-sandbox-bootstrap.js");return ZX(Z)?Z:void 0}function kf(){let $=rQ(Pf(import.meta.url)),Z=NF(import.meta.url),Q=[A6($,"plugin-sandbox-bootstrap.js"),A6($,"extensions","plugin-sandbox-bootstrap.js"),A6($,"agents","plugin-sandbox-bootstrap.js"),Sf(),bf()];for(let X of Q.filter((Y)=>typeof Y==="string"))if(ZX(X))return{file:X};let J=A6($,"plugin-sandbox-bootstrap.ts"),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(`
224
224
  `)}}var tW=kf();function eW($,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 O6($){let Z=new z6({name:"plugin-sandbox",..."file"in tW?{bootstrapFile:tW.file}:{bootstrapScript:tW.script},onEvent:$.onEvent}),Q=eW($.importTimeoutMs,4000,"CLINE_PLUGIN_IMPORT_TIMEOUT_MS"),J=eW($.hookTimeoutMs,3000),W=eW($.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(Cf);return{extensions:B.map((K)=>{let G={name:K.name,__clinePluginPath:K.pluginPath,manifest:K.manifest,setup:(F)=>{If(F,Z,K,W,j),hf(F,Z,K,W,j),xf(F,Z,K,W,j),gf(F,Z,K,W,j),vf(F,K)}};return G.hooks=cf(Z,K,J,j),G}),failures:V.failures,pluginPaths:B.map((K)=>K.pluginPath),shutdown:async()=>{await Z.shutdown()},warnings:V.warnings}}function yf($){let Z=$ instanceof Error?$.message:String($);return/cyclic|circular|bigint/i.test(Z)}function $X($,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)=>$X(W,Z)??null);let J={};for(let[W,X]of Object.entries($)){let Y=$X(X,Z);if(Y!==void 0)J[W]=Y}return J}finally{Z.delete($)}}var OF=new Set;function TF($,Z,Q){let J=`${$}:${Z}`;if(OF.has(J))return;OF.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 MF($,Z,Q){try{return await $(Z)}catch(J){if(!yf(J))throw J;return Q(J),await $($X(Z))}}function If($,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 MF(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(!w5(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)=>TF("tool",X.name,H))}};$.registerTool(Y)}}function hf($,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(!w5(j))throw j;return await W(),await Z.call("executeCommand",{pluginId:Q.pluginId,contributionId:X.id,input:Y},{timeoutMs:J})}}})}function xf($,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(!w5(Y))throw Y;return await W(),await Z.call("resolveRuleContent",{pluginId:Q.pluginId,contributionId:X.id},{timeoutMs:J})}}:X.content??""})}function vf($,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 gf($,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 qF(j)?j:Y}catch(j){if(!w5(j))throw j;await W();let V=await Z.call("buildMessages",{pluginId:Q.pluginId,contributionId:X.id,messages:Y},{timeoutMs:J});return qF(V)?V:Y}}})}function qF($){return Array.isArray($)&&$.every((Z)=>typeof Z==="object"&&Z!==null&&("role"in Z)&&("content"in Z))}function mf($,Z,Q,J,W){return async(X)=>{return await MF(async(j)=>{try{return await $.call("invokeHook",{pluginId:Z,hookName:Q,payload:j},{timeoutMs:J})}catch(V){if(!w5(V))throw V;return await W(),await $.call("invokeHook",{pluginId:Z,hookName:Q,payload:j},{timeoutMs:J})}},X,(j)=>TF("hook",Q,j))}}function cf($,Z,Q,J){let W={};for(let X of Z.hooks??[])W[X]=mf($,Z.pluginId,X,Q,J);return Object.keys(W).length>0?W:void 0}import{getPluginDisplayName as tQ}from"@cline/shared/storage";var JX="package.json",af="package";function S5($){return rf($)}function b5($){return lf($)}function of($){try{return oQ($)&&pf($).isDirectory()}catch{return!1}}function WX($){let Z=[],Q=new Set;for(let J of $){let W=aQ(J);if(Q.has(W))continue;Q.add(W),Z.push(W)}return Z}function RF($){let Z=WX($);return CQ(Z)}function fF($){return S5($).flatMap((Z)=>b5(Z)).filter((Z)=>oQ(Z))}function sf($,Z){let Q=[];for(let J of $)try{Q.push(...EF([J],Z))}catch{}return Q}function QX($){return typeof $==="object"&&$!==null}function tf($){try{let Z=JSON.parse(uf(sQ($,JX),"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 PF($,Z){let Q=aQ(Z);return tf($).some((J)=>aQ($,J)===Q)}function ef($,Z){return df($)===af&&oQ(sQ(nQ($),JX))&&PF(nQ($),Z)}function $P($){let Z=aQ($),Q=[],J=nQ(Z);while(!0){if(ef(J,Z)){Q.push(J);break}if(oQ(sQ(J,JX))){if(PF(J,Z))Q.push(J);break}let W=nQ(J);if(W===J)break;J=W}return WX(Q)}function F$($={}){let Z=$.cwd??process.cwd(),Q=fF($.workspacePath),J=EF($.pluginPaths??[],Z);return RF([...J,...Q])}function ZP($={}){let Z=$.cwd??process.cwd(),Q=fF($.workspacePath),J=sf($.pluginPaths??[],Z);return RF([...J,...Q])}function U$($){let Z=[];for(let Q of $)for(let J of $P(Q)){let W=sQ(J,nf);if(of(W))Z.push(W)}return WX(Z)}function CF($={}){return U$(ZP($))}async function q6($={}){let Z=F$($);if(Z.length===0)return{extensions:[],failures:[],warnings:[],pluginPaths:[]};if($.mode==="in_process"){let J=await o2(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 O6({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 QP}from"node:child_process";import{mkdtemp as JP,rm as WP,writeFile as XP}from"node:fs/promises";import{tmpdir as YP}from"node:os";import{join as XX}from"node:path";import{promisify as jP}from"node:util";var VX=jP(QP),wF="cline checkpoint session=";function SF($){return $.includes(wF)}function YX($,Z){$?.log(Z,{severity:"warn"})}function VP($){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 g0($,Z){let Q=await VX("git",["-C",$,...Z],{windowsHide:!0});return{stdout:Q.stdout.trim(),stderr:Q.stderr.trim()}}async function jX($,Z,Q){return(await VX("git",["-C",$,...Q],{windowsHide:!0,env:{...process.env,GIT_INDEX_FILE:Z}})).stdout.trim()}async function BP($){let Q=(await VX("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 JP(XX(YP(),"cline-checkpoint-")),W=XX(J,"index"),X=XX(J,"pathspec");try{await XP(X,`${Q.join("\x00")}\x00`),await jX($,W,["add","--force","--pathspec-from-file",X,"--pathspec-file-nul"]);let Y=await jX($,W,["write-tree"]);if(!Y)return;return await jX($,W,["commit-tree",Y,"-m","untracked files on cline checkpoint"])||void 0}finally{await WP(J,{recursive:!0,force:!0})}}async function HP($,Z){let Q=(await g0($,["stash","create",Z])).stdout,J=await BP($);if(Q){if(!J)return Q;let j=(await g0($,["rev-parse",`${Q}^{tree}`])).stdout,V=(await g0($,["rev-parse",`${Q}^1`])).stdout,B=(await g0($,["rev-parse",`${Q}^2`])).stdout;if(!j||!V||!B)return Q;return(await g0($,["commit-tree",j,"-p",V,"-p",B,"-p",J,"-m",Z])).stdout||Q}if(!J)return;let W=(await g0($,["rev-parse","HEAD"])).stdout,X=(await g0($,["rev-parse","HEAD^{tree}"])).stdout;if(!W||!X)return;let Y=(await g0($,["commit-tree",X,"-p",W,"-m","index on cline checkpoint"])).stdout;if(!Y)return;return(await g0($,["commit-tree",X,"-p",W,"-p",Y,"-p",J,"-m",Z])).stdout||void 0}async function BX($,Z){if(!$)return;let Q=`refs/cline/checkpoints/${Z}/`;try{let{stdout:J}=await g0($,["for-each-ref","--format=%(refname)",Q]),W=J.trim().split(`
225
225
  `).filter(Boolean);await Promise.allSettled(W.map((X)=>g0($,["update-ref","-d",X])))}catch{}}async function bF($,Z,Q){if(!$||Q.length===0)return;await Promise.allSettled(Q.map((J)=>g0($,["update-ref",`refs/cline/checkpoints/${Z}/${J.runCount}`,J.ref])))}function KP($,Z){let Q=$.findIndex((J)=>J.runCount===Z.runCount);if(Q<0)return[...$,Z];return $.map((J,W)=>W===Q?Z:J)}function kF($){let Z,Q,J=async()=>{if(Z!==void 0)return Z;try{Z=(await g0($.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 g0($.cwd,["rev-parse","HEAD"])).stdout.trim();if(!G)return;return{ref:G,createdAt:Date.now(),runCount:X,kind:"commit"}}catch(K){YX($.logger,`${H}: ${K instanceof Error?K.message:String(K)}`);return}},j=`${wF}${$.sessionId} run=${X}`,V="";try{V=await HP($.cwd,j)??""}catch(H){return YX($.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 g0($.cwd,["update-ref",B,V])}catch(H){YX($.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=h$(X.messages);if(j<1)return;let V=await $.readSessionMetadata(),B=VP(V),H=h$(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=KP(B?.history??[],G);await $.writeSessionMetadata({...V??{},checkpoint:{latest:G,history:F}});return}}}import{appendFileSync as EP,readFileSync as RP}from"node:fs";import{join as fP}from"node:path";import{augmentNodeCommandForDebug as PP}from"@cline/shared";import{ensureHookLogDir as IF}from"@cline/shared/storage";function N6($,Z){if(!Z)return;return{name:$,manifest:{capabilities:["hooks"]},hooks:Z}}import{existsSync as GP,readdirSync as FP}from"node:fs";import{basename as UP,extname as DP,join as LP}from"node:path";import{HOOKS_CONFIG_DIRECTORY_NAME as eQ,resolveHooksConfigSearchPaths as _P}from"@cline/shared/storage";function k5($){return _P($)}var T6;((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"})(T6||={});var y5={["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"},zP=new Map(Object.values(T6).map(($)=>[$.toLowerCase(),$])),AP=new Set(["",".sh",".bash",".zsh",".js",".mjs",".cjs",".ts",".mts",".cts",".py",".ps1"]);function I5($){let Z=DP($).toLowerCase();if(!AP.has(Z))return;let Q=UP($,Z).trim().toLowerCase();return zP.get(Q)}function o$($){let Z=[],Q=new Set,J=k5($).filter((W)=>GP(W));for(let W of J)try{for(let X of FP(W,{withFileTypes:!0})){if(!X.isFile())continue;let Y=I5(X.name);if(!Y)continue;let j=LP(W,X.name);if(Q.has(j))continue;Q.add(j),Z.push({fileName:Y,hookEventName:y5[Y],path:j})}}catch{}return Z.sort((W,X)=>W.path.localeCompare(X.path))}import{spawn as OP}from"node:child_process";import{augmentNodeCommandForDebug as qP,withResolvedClineBuildEnv as NP}from"@cline/shared";function TP($){let Z=$.trim();if(!Z)return{};let J=Z.split(`
226
226
  `).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 yF($,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 MP($,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 D$($,Z){let Q=qP(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=OP(Q[0],Q.slice(1),{cwd:Z.cwd,env:NP(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(yF(F,Q)))}),H=new Promise((K,G)=>{W.once("error",(F)=>{if(V)clearTimeout(V);G(yF(F,Q))}),W.once("close",(F)=>{if(V)clearTimeout(V);let{parsedJson:U,parseError:D}=TP(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,MP(W,JSON.stringify($))]),H]),J){W.unref();return}return await H}function $7($){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 h5($,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 CP($,Z){if(!Z)return $;if(!$)return{...Z};let Q=[$.context,Z.context].filter((W)=>typeof W==="string"&&W.length>0).join(`
package/dist/hub/index.js CHANGED
@@ -284,7 +284,7 @@ ${JSON.stringify(J,null,2)}`}startClaimLeaseHeartbeat($){let Z=Math.max(1000,Mat
284
284
  error = ?,
285
285
  scheduled_for = COALESCE(?, scheduled_for),
286
286
  updated_at = ?
287
- 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,q0(),$)}attachReportPathToRun($,Z){this.db.prepare("UPDATE cron_runs SET report_path = ?, updated_at = ? WHERE run_id = ?").run(Z,q0(),$)}}function fZ($){return $?new Date($).getTime():void 0}function Uq($){let Z=$.metadata?{...$.metadata}:void 0;if(Z)delete Z.__hubScheduleCreatedBy,delete Z.__hubScheduleCwd,delete Z.__hubRuntimeOptions;return Z}function w4($){let Z=$.metadata;return{scheduleId:$.externalId,name:$.title,cronPattern:$.triggerKind==="one_off"?TB:$.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:fZ($.nextRunAt),lastRunAt:fZ($.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:Uq($)}}function Dq($){switch($){case"done":return"success";case"cancelled":return"aborted";case"running":return"running";case"queued":return"pending";default:return"failed"}}function wJ($,Z){return{executionId:$.runId,scheduleId:Z,sessionId:$.sessionId,triggeredAt:new Date($.scheduledFor??$.createdAt).getTime(),startedAt:fZ($.startedAt),endedAt:fZ($.completedAt),status:Dq($.status),errorMessage:$.error}}class v8{store;materializer;runner;started=!1;disposed=!1;constructor($){this.store=new C4({dbPath:$.dbPath}),this.materializer=new q4({store:this.store}),this.runner=new E4({store:this.store,materializer:this.materializer,runtimeHandlers:$.runtimeHandlers,eventPublisher:$.eventPublisher,workspaceRoot:"",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 w4(this.store.createHubSchedule($))}getSchedule($){let Z=this.store.getHubSchedule($);return Z?w4(Z):void 0}listSchedules($={}){return this.store.listHubSchedules($).map((Z)=>w4(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=w4(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?w4(Y):void 0}validateScheduleTiming($,Z,Q){if($.trim()!==TB){UB($);return}let J=Z?.[Fq];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 wJ(Q,$)}triggerScheduleNowDetached($){let Z=this.store.enqueueHubScheduleRun($,"manual");if(!Z)return;return this.runner.tick().catch(()=>{return}),wJ(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 wJ(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}))}}sZ();import{createSessionId as BN,isHubProtocolCompatible as HN,resolveClineBuildEnv as KN,resolveHubCommandTimeoutMs as GN}from"@cline/shared";var YH={};P(YH,{splitCoreSessionConfig:()=>g4,isUnusableSessionError:()=>hJ,isSessionNotFoundError:()=>k1,SessionNotFoundError:()=>W$,SESSION_NOT_FOUND_ERROR_CODE:()=>N2});var N2="session_not_found";class W$ extends Error{sessionId;code="session_not_found";constructor($,Z){super(Z??($?`session not found: ${$}`:"session not found"));this.sessionId=$;this.name="SessionNotFoundError"}}function k1($){return $ instanceof W$||typeof $==="object"&&$!==null&&"code"in $&&$.code==="session_not_found"}function DT($){if($ instanceof Error)return $.message;if(typeof $==="object"&&$!==null&&"message"in $){let Z=$.message;return typeof Z==="string"?Z:""}return typeof $==="string"?$:""}function hJ($){if(k1($))return!0;if(typeof $==="object"&&$!==null&&"code"in $&&$.code==="session_run_in_progress")return!0;return DT($).includes("shutdown called while a run is in progress")}function g4($){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 mT}from"node:child_process";import{closeSync as cT,mkdirSync as uT,openSync as pT}from"node:fs";import{basename as dT,dirname as lT,join as iT}from"node:path";import{fileURLToPath as rT}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as nT,isHubDaemonProcess as AH,isHubProtocolCompatible as aT,resolveClineBuildEnv as OH,withResolvedClineBuildEnv as oT}from"@cline/shared";import{createHash as LT,randomBytes as _T}from"node:crypto";import{existsSync as zT}from"node:fs";import{chmod as AT,mkdir as xJ,readFile as HH,rm as vJ,writeFile as KH}from"node:fs/promises";import{dirname as GH,join as gJ}from"node:path";import{resolveClineDataDir as E2,resolveClineDir as FH}from"@cline/shared/storage";var l8="0.0.70";var m4={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:l8,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",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 OT="CLINE_HUB_DISCOVERY_PATH",qT="CLINE_HUB_BUILD_ID",VH=30000,TT=15000,NT=100;function ET($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function MT($){return LT("sha256").update($).digest("hex").slice(0,12)}function RT($){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 tZ(){return _T(32).toString("hex")}function fT($){return new Promise((Z)=>setTimeout(Z,$))}function PT($){return`${$}.lock`}async function CT($){try{let Z=JSON.parse(await HH(gJ($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function BH($){await vJ($,{recursive:!0,force:!0}).catch(()=>{return})}function eZ(){return process.env[qT]?.trim()||String(m4.version)}function X$($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${MT($)}`,Q=process.env[OT]?.trim()||gJ(E2(),"locks","hub","owners",`${ET(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function UH($=`hub-${Date.now().toString(36)}`){return X$($)}async function N0($){try{let Z=JSON.parse(await HH($,"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,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 i8($,Z){await xJ(GH($),{recursive:!0}),await vJ($,{force:!0}).catch(()=>{return}),await KH($,`${JSON.stringify(Z,null,2)}
287
+ 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,q0(),$)}attachReportPathToRun($,Z){this.db.prepare("UPDATE cron_runs SET report_path = ?, updated_at = ? WHERE run_id = ?").run(Z,q0(),$)}}function fZ($){return $?new Date($).getTime():void 0}function Uq($){let Z=$.metadata?{...$.metadata}:void 0;if(Z)delete Z.__hubScheduleCreatedBy,delete Z.__hubScheduleCwd,delete Z.__hubRuntimeOptions;return Z}function w4($){let Z=$.metadata;return{scheduleId:$.externalId,name:$.title,cronPattern:$.triggerKind==="one_off"?TB:$.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:fZ($.nextRunAt),lastRunAt:fZ($.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:Uq($)}}function Dq($){switch($){case"done":return"success";case"cancelled":return"aborted";case"running":return"running";case"queued":return"pending";default:return"failed"}}function wJ($,Z){return{executionId:$.runId,scheduleId:Z,sessionId:$.sessionId,triggeredAt:new Date($.scheduledFor??$.createdAt).getTime(),startedAt:fZ($.startedAt),endedAt:fZ($.completedAt),status:Dq($.status),errorMessage:$.error}}class v8{store;materializer;runner;started=!1;disposed=!1;constructor($){this.store=new C4({dbPath:$.dbPath}),this.materializer=new q4({store:this.store}),this.runner=new E4({store:this.store,materializer:this.materializer,runtimeHandlers:$.runtimeHandlers,eventPublisher:$.eventPublisher,workspaceRoot:"",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 w4(this.store.createHubSchedule($))}getSchedule($){let Z=this.store.getHubSchedule($);return Z?w4(Z):void 0}listSchedules($={}){return this.store.listHubSchedules($).map((Z)=>w4(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=w4(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?w4(Y):void 0}validateScheduleTiming($,Z,Q){if($.trim()!==TB){UB($);return}let J=Z?.[Fq];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 wJ(Q,$)}triggerScheduleNowDetached($){let Z=this.store.enqueueHubScheduleRun($,"manual");if(!Z)return;return this.runner.tick().catch(()=>{return}),wJ(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 wJ(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}))}}sZ();import{createSessionId as BN,isHubProtocolCompatible as HN,resolveClineBuildEnv as KN,resolveHubCommandTimeoutMs as GN}from"@cline/shared";var YH={};P(YH,{splitCoreSessionConfig:()=>g4,isUnusableSessionError:()=>hJ,isSessionNotFoundError:()=>k1,SessionNotFoundError:()=>W$,SESSION_NOT_FOUND_ERROR_CODE:()=>N2});var N2="session_not_found";class W$ extends Error{sessionId;code="session_not_found";constructor($,Z){super(Z??($?`session not found: ${$}`:"session not found"));this.sessionId=$;this.name="SessionNotFoundError"}}function k1($){return $ instanceof W$||typeof $==="object"&&$!==null&&"code"in $&&$.code==="session_not_found"}function DT($){if($ instanceof Error)return $.message;if(typeof $==="object"&&$!==null&&"message"in $){let Z=$.message;return typeof Z==="string"?Z:""}return typeof $==="string"?$:""}function hJ($){if(k1($))return!0;if(typeof $==="object"&&$!==null&&"code"in $&&$.code==="session_run_in_progress")return!0;return DT($).includes("shutdown called while a run is in progress")}function g4($){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 mT}from"node:child_process";import{closeSync as cT,mkdirSync as uT,openSync as pT}from"node:fs";import{basename as dT,dirname as lT,join as iT}from"node:path";import{fileURLToPath as rT}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as nT,isHubDaemonProcess as AH,isHubProtocolCompatible as aT,resolveClineBuildEnv as OH,withResolvedClineBuildEnv as oT}from"@cline/shared";import{createHash as LT,randomBytes as _T}from"node:crypto";import{existsSync as zT}from"node:fs";import{chmod as AT,mkdir as xJ,readFile as HH,rm as vJ,writeFile as KH}from"node:fs/promises";import{dirname as GH,join as gJ}from"node:path";import{resolveClineDataDir as E2,resolveClineDir as FH}from"@cline/shared/storage";var l8="0.0.71";var m4={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:l8,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",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 OT="CLINE_HUB_DISCOVERY_PATH",qT="CLINE_HUB_BUILD_ID",VH=30000,TT=15000,NT=100;function ET($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function MT($){return LT("sha256").update($).digest("hex").slice(0,12)}function RT($){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 tZ(){return _T(32).toString("hex")}function fT($){return new Promise((Z)=>setTimeout(Z,$))}function PT($){return`${$}.lock`}async function CT($){try{let Z=JSON.parse(await HH(gJ($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function BH($){await vJ($,{recursive:!0,force:!0}).catch(()=>{return})}function eZ(){return process.env[qT]?.trim()||String(m4.version)}function X$($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${MT($)}`,Q=process.env[OT]?.trim()||gJ(E2(),"locks","hub","owners",`${ET(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function UH($=`hub-${Date.now().toString(36)}`){return X$($)}async function N0($){try{let Z=JSON.parse(await HH($,"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,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 i8($,Z){await xJ(GH($),{recursive:!0}),await vJ($,{force:!0}).catch(()=>{return}),await KH($,`${JSON.stringify(Z,null,2)}
288
288
  `,{encoding:"utf8",mode:384}),await AT($,384)}async function a0($){await vJ($,{force:!0}).catch(()=>{return})}async function $Q($,Z){let Q=PT($);await xJ(GH(Q),{recursive:!0});let J=Date.now()+TT;while(!0)try{await xJ(Q,{recursive:!1}),await KH(gJ(Q,"owner.json"),`${JSON.stringify({pid:process.pid,acquiredAt:new Date().toISOString()},null,2)}
289
289
  `,"utf8");try{return await Z()}finally{await BH(Q)}}catch(W){if((W instanceof Error&&"code"in W?String(W.code):"")!=="EEXIST")throw W;let Y=await CT(Q),j=Y?Date.now()-Date.parse(Y.acquiredAt):VH+1;if(!Y||!RT(Y.pid)||j>VH){await BH(Q);continue}if(Date.now()>=J)throw Error(`Timed out waiting for hub startup lock ${Q}`);await fT(NT)}}async function Y$($,Z){try{let Q=await fetch(Z?.authToken?mJ($):ZQ($),{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,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 O1($,Z,Q="/hub"){return new URL(`ws://${$}:${Z}${Q}`).toString()}function ZQ($){let Z=new URL($);return Z.protocol=Z.protocol==="wss:"?"https:":"http:",Z.pathname="/health",Z.search="",Z.toString()}function mJ($){let Z=new URL(ZQ($));return Z.pathname="/status",Z.toString()}function DH($){return zT($)}import{CLINE_HUB_DEV_PORT as wT,CLINE_HUB_PORT as ST,resolveClineBuildEnv as bT}from"@cline/shared";var kT="CLINE_HUB_HOST",yT="CLINE_HUB_PORT",IT="CLINE_HUB_PATHNAME",cJ="127.0.0.1",uJ=ST,pJ="/hub";function LH($){return bT($)==="development"?wT:uJ}function dJ($={}){return($.env??process.env)[kT]?.trim()||cJ}function r8($={}){let Q=($.env??process.env)[yT]?.trim();if(!Q)return LH($);let J=Number.parseInt(Q,10);if(!Number.isInteger(J)||J<1||J>65535)return LH($);return J}function lJ($={}){return($.env??process.env)[IT]?.trim()||pJ}function y1($={},Z={}){return{host:$.host??dJ(Z),port:$.port??r8(Z),pathname:$.pathname??lJ(Z)}}import{join as hT}from"node:path";var xT="shared:cline",vT="CLINE_HUB_DISCOVERY_PATH",gT="hub-production";function _H($){let Z=S1($.trim());return X$(`workspace:${Z||$.trim()}`)}function q1($=xT){return X$($)}function I1(){return{ownerId:gT,discoveryPath:process.env[vT]?.trim()||hT(E2(),"locks","hub","production.json")}}var sT=8000,tT=200,eT=3000,$N=100,ZN=[100,250,500,1000,2000],QN="--cline-hub-daemon";function JN($){return[...$.host?["--host",$.host]:[],...typeof $.port==="number"?["--port",String($.port)]:[],...$.pathname?["--pathname",$.pathname]:[]]}function WN(){try{let $=iT(E2(),"logs","hub-daemon.log");return uT(lT($),{recursive:!0}),{fd:pT($,"a"),logPath:$}}catch{return}}function qH(){return OH()==="production"?I1():q1()}function M2($){return aT($).compatible}function zH($,Z,Q){if(!Z||Z.url!==Q)return $;return{...$,authToken:$.authToken??Z.authToken,pid:$.pid??Z.pid}}async function R2($,Z){try{return await Y$($,{authToken:Z})}catch{return}}async function XN($,Z){let Q=Date.now()+Z;while(Date.now()<Q){if(!(await R2($))?.url)return!0;await new Promise((W)=>setTimeout(W,$N))}return!1}async function QQ($,Z){if(await u4($.url,$.authToken).catch(()=>!1),$.pid)try{process.kill($.pid,"SIGTERM")}catch{}let Q=await XN($.url,eT);return await a0(Z).catch(()=>{return}),Q}async function c4($,Z){if(M2($))return!0;return QQ($,Z)}async function TH($){if(OH()!=="production")return;let Z=q1();if(Z.discoveryPath===$.discoveryPath)return;let Q=await N0(Z.discoveryPath);if(Q?.url)await QQ(Q,Z.discoveryPath);else await a0(Z.discoveryPath).catch(()=>{return})}function YN(){let $=import.meta.url.endsWith(".ts")?"ts":"js";return rT(new URL(`./entry.${$}`,import.meta.url))}function jN($,Z){let Q=YN(),J=process.execPath?.trim();if(!J)throw Error("unable to resolve runtime executable for hub daemon");let W=dT(J).toLowerCase().includes("bun"),X=Q.startsWith("/$bunfs/"),Y=W&&Q.toLowerCase().endsWith(".ts"),j=X?[QN]:[...Y?["--conditions=development"]:[],Q];return{launcher:J,args:[...j,"--cwd",$,...JN(Z)],cwd:$,env:{...oT(process.env),CLINE_NO_INTERACTIVE:"1",[nT]:"1"}}}function VN($){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 iJ($,Z={}){if(AH())return;let Q=jN($,Z),J=WN();try{mT(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)cT(J.fd)}}async function n8($,Z={}){for(let Q=0;;Q++)try{iJ($,Z);return}catch(J){let W=ZN[Q];if(!VN(J)||W===void 0)throw J;await new Promise((X)=>setTimeout(X,W))}}function JQ($,Z={}){if(AH())return;let Q=qH(),J=y1(Z),W=O1(J.host,J.port,J.pathname),X=Z.allowPortFallback===!0&&J.port!==0;TH(Q).catch(()=>{return}).then(()=>N0(Q.discoveryPath)).then(async(Y)=>{let j=!1;if(Y?.url)if(!Y.authToken){if(j=!0,!await QQ(Y,Q.discoveryPath)&&!X)return}else{let H=await R2(Y.url,Y.authToken);if(H?.url&&M2(H)&&await T1(H.url,{authToken:Y.authToken}))return;if(H?.url)await c4({...H,authToken:Y.authToken},Q.discoveryPath);else await a0(Q.discoveryPath).catch(()=>{return})}let V=await R2(W);if(V?.url){if(M2(V)){if(!X||!j)return}else if(!await c4({...V,authToken:void 0},Q.discoveryPath)&&!X)return}let B=X?{...J,port:0}:J;await n8($,B)}).catch(()=>{})}async function NH($,Z={}){let Q=qH(),J=Z.host!==void 0||Z.port!==void 0||Z.pathname!==void 0||!!process.env.CLINE_HUB_PORT?.trim(),W=y1(Z),X=O1(W.host,W.port,W.pathname),Y=(F)=>{if(!J)h$(F.url,F.authToken);return F};await TH(Q).catch(()=>{return});let j=await N0(Q.discoveryPath),V=!1;if(j?.url){let F=j.authToken;if(!F)V=!0,await QQ(j,Q.discoveryPath);else{let U=await R2(j.url,F);if(U?.url&&M2(U)&&await T1(U.url,{authToken:F}))return Y({url:U.url,authToken:F});if(U?.url)await c4({...U,authToken:F},Q.discoveryPath);else await a0(Q.discoveryPath).catch(()=>{return})}}let B=await R2(X);if(B?.url){let F=zH(B,j,X);if(M2(B)){let D=[B.authToken,j?.authToken].filter((A)=>typeof A==="string"&&A.trim().length>0);for(let A of D){if(!await T1(B.url,{authToken:A}))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:A,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 i8(Q.discoveryPath,L)}catch{}return Y({url:B.url,authToken:A})}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 c4(F,Q.discoveryPath)&&Z.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=Z.allowPortFallback===!0&&W.port!==0?{...W,port:0}:W;await n8($,K);let G=Date.now()+sT;while(Date.now()<G){let F=await N0(Q.discoveryPath);if(F?.url&&F.authToken){let D=await R2(F.url,F.authToken);if(D?.url&&M2(D)&&await T1(D.url,{authToken:F.authToken}))return Y({url:D.url,authToken:F.authToken})}let U=await R2(X);if(U?.url&&!M2(U)){let D=zH(U,F,X);if(!await c4(D,Q.discoveryPath)&&Z.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,tT))}throw Error("Timed out waiting for detached hub startup.")}function WQ(){return KN()==="production"?I1():q1()}function FN(){let $=globalThis.WebSocket;if(!$)throw Error("Global WebSocket is not available in this runtime. Node 22+ is required for hub mode.");return $}function PH($){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 PH($.data);return String($)}function UN($){if(typeof $==="string")return $;if($ instanceof Uint8Array)return Buffer.from($).toString("utf8");if($ instanceof ArrayBuffer)return Buffer.from($).toString("utf8");return""}function EH($){let Z=$,Q=UN(Z.reason);return new p0("hub_connection_closed",Z.code||Q?`Hub connection closed (code=${Z.code??0}${Q?`, reason=${Q}`:""})`:rJ,{closeCode:Z.code,closeReason:Q||void 0})}function DN($,Z){if($ instanceof p0)return $;if($ instanceof Error)return new p0("hub_connect_failed",$.message);if($&&typeof $==="object"&&"error"in $&&$.error instanceof Error)return new p0("hub_connect_failed",$.error.message);let Q=$&&typeof $==="object"&&"message"in $&&typeof $.message==="string"?$.message.trim():"";if(Q)return new p0("hub_connect_failed",Q);let J=$&&typeof $==="object"&&"type"in $&&typeof $.type==="string"?$.type.trim():"";return new p0("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 LN=8000,_N=200,MH="*",RH=8000,zN="cline-hub-auth.",CH=new Map,wH=new Set,AN=3000,ON=3000,qN=100,rJ="Hub connection closed",TN=250,NN=5000,fH=0.5;class p0 extends Error{code;details;constructor($,Z,Q){super(Z);this.code=$;this.details=Q;this.name="HubTransportError"}}function oJ($){return $ instanceof p0}class a8 extends Error{command;code;constructor($,Z,Q){super(Q);this.command=$;this.code=Z;this.name="HubCommandError"}}function XQ($,Z){return $ instanceof a8&&$.code==="hub_command_timeout"&&(Z===void 0||$.command===Z)}function SH($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=sJ($.toString());return Q?CH.get(Q):void 0}function EN($){try{let Q=new URL($).hostname.toLowerCase().replace(/^\[|\]$/g,"");return Q==="localhost"||Q==="127.0.0.1"||Q==="::1"}catch{return!1}}function sJ($){if(!EN($))return;let Z=new URL(x$($));return Z.search="",Z.hash="",Z.toString()}function nJ($){let Z=sJ($);return!!Z&&wH.has(Z)}function h$($,Z){let Q=sJ($);if(Q){if(wH.add(Q),Z?.trim())CH.set(Q,Z)}return $}class N1{options;socket;connectPromise;clientId;currentUrl;recoveryPromise;pendingReplies=new Map;listeners=new Set;subscriptionCounts=new Map;reconnectTimer;reconnectAttempt=0;closedByClient=!1;lastCloseError=new p0("hub_connection_closed",rJ);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()||SH($);$.hash="";let J=new(FN())($.toString(),Z?[`${zN}${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 p0("hub_connect_timeout",`Timed out connecting to hub after ${RH}ms`),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0;try{J.close()}catch{}Y(this.lastCloseError)},RH);J.addEventListener("open",()=>{if(j)return;j=!0,clearTimeout(V),X()}),J.addEventListener("error",(B)=>{if(j)return;j=!0,clearTimeout(V),this.lastCloseError=DN(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=EH(B),this.sawSocketClose=!0;this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)})}),J.addEventListener("message",(X)=>{this.handleFrame(JSON.parse(PH(X)))}),J.addEventListener("close",(X)=>{if(this.socket!==J)return;if(!W)this.lastCloseError=EH(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=BN("hubreq_"),X=GN($,J?.timeoutMs),Y=new Promise((V,B)=>{let H=X===null?void 0:setTimeout(()=>{if(!this.pendingReplies.delete(W))return;B(new a8($,"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===N2){let V=Q??(typeof Z?.sessionId==="string"?Z.sessionId:void 0);throw new W$(V,j.error.message)}throw new a8($,j.error?.code,j.error?.message??`Hub command ${$} failed`)}return j}async recoverLocalHubTransport($){if(!nJ(this.currentUrl)||!oJ($))return!1;if(this.recoveryPromise)return await this.recoveryPromise;return this.recoveryPromise=(async()=>{let Z=await f2({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(TN*2**this.reconnectAttempt,NN),Z=Math.round($*(1-fH)+Math.random()*$*fH);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(!nJ(this.currentUrl)){this.reconnectAttempt+=1,this.scheduleReconnect();return}try{let $=await f2({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 p0("hub_connection_closed",rJ),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 p0("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 $??MH}subscriptionSessionIdFromKey($){return $===MH?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 x$($){let Z=new URL($);if(Z.protocol==="http:")Z.protocol="ws:";else if(Z.protocol==="https:")Z.protocol="wss:";return Z.toString()}async function T1($,Z){let Q=new N1({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 aJ($,Z){let Q=x$($),J=await Y$(Q,{authToken:Z?.authToken});if(!J)return{status:"unreachable",url:Q};if(!HN(J).compatible)return{status:"protocol_mismatch",url:Q};if(Z?.verifyConnection===!0&&!await T1(Q,{workspaceRoot:Z.workspaceRoot,cwd:Z.cwd,authToken:Z.authToken}))return{status:"unreachable",url:Q};return{status:"compatible",url:Q}}async function MN($){let Z=Date.now()+LN;while(Date.now()<Z){let Q=await N0($.discoveryPath);if(Q?.url){let J=await aJ(Q.url,{verifyConnection:!0,authToken:Q.authToken});if(J.status==="compatible")return h$(J.url,Q.authToken)}await new Promise((J)=>setTimeout(J,_N))}return}async function RN($){let Z=Date.now()+ON;while(Date.now()<Z){if(!(await Y$($).catch(()=>{return}))?.url)return!0;await new Promise((J)=>setTimeout(J,qN))}return!1}function fN($,Z){try{return x$($)===x$(Z)}catch{return!1}}function PN($){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 CN($,Z,Q){let J=new N1({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:AN});return!PN(W.payload)}catch{return!1}finally{await J.dispose().catch(()=>{return})}}async function p4($={}){if($.endpoint?.trim()){let W=await aJ($.endpoint);return W.status==="compatible"?W.url:void 0}let Z=WQ(),Q=await N0(Z.discoveryPath);if(!Q?.url)return;let J=await aJ(Q.url,{authToken:Q.authToken});if(J.status==="compatible")return h$(J.url,Q.authToken);if(J.status==="protocol_mismatch")await a0(Z.discoveryPath).catch(()=>{return});return}async function f2($={}){let Z=await p4($);if(Z&&await T1(Z,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return Z;if($.endpoint?.trim())return;let Q=WQ();return await n8($.workspaceRoot??process.cwd()),await MN(Q)}async function u4($,Z){let Q=new URL($),J=Z?.trim()||SH(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 tJ($=WQ()){let Z=await N0($.discoveryPath);if(!Z?.url)return!1;try{if(await u4(Z.url,Z.authToken))return!0}catch{}return!1}async function YQ($){if(!nJ($.url))return;let Z=WQ(),Q=await N0(Z.discoveryPath);if(!Q?.url||!fN(Q.url,$.url))return;if(!await CN(Q.url,Q.authToken,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return;if(!await tJ())return;if(!await RN(Q.url))return;return await a0(Z.discoveryPath).catch(()=>{return}),await f2({workspaceRoot:$.workspaceRoot,cwd:$.cwd})}import{resolveClineBuildEnv as wN}from"@cline/shared";function SN($,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 bN="cline-hub-auth.";function kN($){return $.host!==void 0||$.port!==void 0||$.pathname!==void 0}function yN($,Z){let Q=new URL($),J=new URL(Z);return Q.search="",Q.hash="",J.search="",J.hash="",Q.toString()===J.toString()}function bH(){return wN()==="production"?I1():q1()}async function IN($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=bH(),J=await N0(Q.discoveryPath);if(J?.url&&yN($.toString(),J.url))return J.authToken;return}async function eJ($={}){let Z=y1($);if(!kN($)){let Q=bH(),J=await N0(Q.discoveryPath);if(J?.url)return J.url}return O1(Z.host,Z.port,Z.pathname)}async function jQ($){return await new Promise((Z,Q)=>{(async()=>{let J=new URL($),W=await IN(J);J.hash="";let X=new WebSocket(J.toString(),W?[`${bN}${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(SN(V,$))})})().catch(Q)})}async function kH($){try{return(await jQ($)).close(),!0}catch{return!1}}async function yH($,Z){let Q=await eJ($),J=await jQ(Q);try{return await J.send({version:Z.version??"v1",clientId:Z.clientId??"hub-client",...Z})}finally{J.close()}}function $W($){return $?JSON.parse(JSON.stringify($)):{}}function VQ($){let Z=$?.session&&typeof $.session==="object"?$.session:void 0;if(!Z)return;let Q=Z.metadata&&typeof Z.metadata==="object"?$W(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 IH($,Z){return $.error?.message??`hub command failed: ${Z}`}function hN($){let Z=$W($);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 hH($){let Z=$?.sessionId;return typeof Z==="string"&&Z.trim()?Z.trim():void 0}function xN($){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 vN($){let Z=$W($.payload);if($.event==="schedule.execution_completed")return{sessionId:$.sessionId?.trim()||hH(Z)||"",eventType:"schedule.execution.completed",payload:Z};if($.event==="schedule.execution_failed")return{sessionId:$.sessionId?.trim()||hH(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:hN($.payload)};case"run.completed":return{sessionId:Q,eventType:"runtime.chat.completed",payload:Z};default:return}}class ZW{options;client;metadataApplied=!1;constructor($){this.options=$;this.client=new N1({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=VQ(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(k1(Q))return;throw Q}return VQ(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(IH(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(IH(W,"session.restore"));let X=VQ(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=xN(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)=>VQ({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=vN(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 QW{client;constructor($){this.client=new N1({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:[]}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 ou}from"@cline/llms";var UA={};P(UA,{LocalRuntimeHost:()=>i1});import{readdirSync as cu}from"node:fs";import{homedir as uu}from"node:os";import{isAbsolute as pu,join as PV,resolve as CV}from"node:path";import{captureSdkError as C$,createSessionId as du,isLikelyAuthError as lu,normalizeUserInput as iu}from"@cline/shared";import{setHomeDirIfUnset as ru}from"@cline/shared/storage";var GK={};P(GK,{saveProviderOAuthCredentials:()=>C2,resolveProviderApiKeyFromSettings:()=>zW,loginAndSaveProviderOAuthCredentials:()=>t4,isOAuthProvider:()=>g$,getProviderOAuthCredentialsFromSettings:()=>e4,getProviderAuthStorageId:()=>_W,getProviderAuthHandler:()=>L0,getPersistedProviderApiKey:()=>Z6,formatProviderOAuthApiKey:()=>AW});import{decodeJwtPayload as qE,getClineEnvironmentConfig as HK}from"@cline/shared";var rH={};P(rH,{startClineDeviceAuth:()=>KW,refreshClineToken:()=>GQ,loginClineOAuth:()=>d4,getValidClineCredentials:()=>l4,completeClineDeviceAuth:()=>GW});import{decodeJwtPayload as lN,getClineEnvironmentConfig as XW}from"@cline/shared";var xH={};P(xH,{setSdkLogger:()=>WW,sdkDebug:()=>t,hashSecret:()=>w0,getSdkLogger:()=>mN});import{createHash as gN}from"node:crypto";var JW;function WW($){JW=$}function mN(){return JW}function w0($){if(typeof $!=="string"||$.length===0)return"unset";return gN("sha256").update($).digest("hex").slice(0,8)}function t($){try{JW?.debug($)}catch{}}T0();var vH={};P(vH,{startLocalOAuthServer:()=>E1});function cN(){let $;return{promise:new Promise((Q)=>{$=Q}),resolve:$}}async function E1($){let Z=await import("node:http"),Q=$.host??"127.0.0.1",J=$.timeoutMs??300000,W=$.successHtml??uN,X=cN(),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((_,A)=>{try{let L=new URL(_.url||"",`http://${Q}:${F}`);if(L.pathname!==$.callbackPath){A.statusCode=404,A.end("Not found");return}let O={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(O.error){A.statusCode=400,A.end(`Authentication failed: ${O.error}`),K(),H(O);return}if(!O.code){A.statusCode=400,A.end("Missing authorization code");return}if($.expectedState&&O.state!==$.expectedState){A.statusCode=400,A.end("State mismatch");return}A.statusCode=200,A.setHeader("Content-Type","text/html; charset=utf-8"),A.end(W),K(),H(O)}catch{A.statusCode=500,A.end("Internal error")}}),D=await new Promise((_)=>{let A=(L)=>{U.off("error",A),_({bound:!1,error:L})};U.once("error",A),U.listen(F,Q,()=>{U.off("error",A),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 uN=`<!DOCTYPE html>
290
290
  <html lang="en">
package/dist/index.js CHANGED
@@ -464,7 +464,7 @@ ${JSON.stringify(J,null,2)}`}startClaimLeaseHeartbeat($){let Z=Math.max(1000,Mat
464
464
  `)[0]?.trim())}function L$($){if(!$)return;let Z={...$},Q=X2(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 g6($){let Z=L$($.metadata)??{},Q=$.title!==void 0?X2($.title):x3($.prompt);if(Q)Z.title=Q;return Object.keys(Z).length>0?Z:void 0}function v3($){let Z=x2($.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(x6($.sessionId))return{agent:"teammate",sessionId:$.sessionId,taskType:"team",origin:Q};if(G9($.sessionId))return{agent:"subagent",sessionId:$.sessionId,taskType:"subagent_task",origin:Q};return{agent:"lead",sessionId:$.sessionId,origin:Q}}function g3($){return{version:1,updated_at:$.updatedAt,agent:$.context.agent,sessionId:$.context.sessionId,...$.context.taskType?{taskType:$.context.taskType}:{},origin:$.context.origin,messages:F9($.messages),...$.systemPrompt?{system_prompt:$.systemPrompt}:{}}}function sH($,Z,Q){ff(Cf($),{recursive:!0}),Pf($,`${JSON.stringify(g3({updatedAt:Z,context:Q,messages:[]}),null,2)}
465
465
  `,"utf8")}function tH($,Z){return l0.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 eH($,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 yf}from"node:fs";import{readFile as If}from"node:fs/promises";class m6{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 _$($){let Z=$?.trim();if(!Z||!yf(Z))return[];try{let Q=(await If(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 m3($){return $?{...$}:void 0}async function $K($,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 c6($){if(typeof $!=="string")return;let Z=$.trim();return Z.length>0?Z:void 0}function Z1($){let Z=c6($);if(!Z)return;return Z.toLowerCase()==="unknown"?void 0:Z}function D9($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function gf($){if(!$||typeof $!=="object"||Array.isArray($))return;return{...$}}function u3($){let Z=$??200;return Number.isFinite(Z)?Math.max(0,Math.floor(Z)):200}function mf($){if($===0)return 0;return Math.min(Math.max($*2,20),2000)}function cf($){return $.isSubagent!==!0&&!c6($.parentSessionId)}function uf($){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 p3($){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 pf($){let Z=u3($);if(Z===0)return[];let Q=WK(),W=(await hf(Q,{withFileTypes:!0}).catch(()=>[])).filter((Y)=>Y.isDirectory()).map((Y)=>({entry:Y,recency:uf(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=JK(Q,j,`${j}.json`),B=await QK(V,"utf8").catch(()=>{return});if(!B)return;let H;try{H=JSON.parse(B)}catch{return}let K=l0.safeParse(H);if(!K.success)return;return p3(K.data)}))).filter((Y)=>Boolean(Y)).sort((Y,j)=>j.startedAt.localeCompare(Y.startedAt)).slice(0,Z)}async function df($,Z,Q){let J=u3(Z);if(J===0)return await $.listSessions(0),[];let W=Q.includeSubagents?J:mf(J),X=await $.listSessions(W);return(Q.includeSubagents?X:X.filter(cf)).slice(0,J)}function lf($){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(`
466
466
  `).trim()}function ZK($){return $.replace(/\s+/g," ").trim()}function rf($,Z){if($.length<=Z)return $;return`${$.slice(0,Math.max(0,Z-3)).trimEnd()}...`}function nf($){for(let Z of["user","assistant"])for(let Q of $){if(Q.role!==Z)continue;let J=ZK(lf(Q.content));if(!J)continue;let W=Z==="user"?ZK(xf(J)):J,X=vf(W.split(`
467
- `)[0]??W);return rf(X,50)}return}function af($){let Z=0;for(let Q of $)Z+=D9(Q.metrics?.cost)??0;return Z}function of($){let Z,Q;for(let J=$.length-1;J>=0;J-=1){let W=$[J];if(!Z)Z=Z1(W.modelInfo?.provider);if(!Q)Q=Z1(W.modelInfo?.id);if(Z&&Q)break}return{provider:Z,model:Q}}function sf($){return Z1($?.provider)??Z1($?.provider&&typeof $.provider==="object"&&!Array.isArray($.provider)?$.provider.id:void 0)}function tf($){return Z1($?.model)??Z1($?.model&&typeof $.model==="object"&&!Array.isArray($.model)?$.model.id:void 0)}function c3($,Z){let Q=gf($.metadata),J=c6(Z?.title)??c6(Q?.title),W=D9(Z?.totalCost)??D9(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:Z1(Z?.provider)??Z1($.provider)??sf(Q)??"",model:Z1(Z?.model)??Z1($.model)??tf(Q)??"",metadata:X}}function ef($){let Z=$.content;if(!Array.isArray(Z))return!1;return Z.some((Q)=>!!Q&&typeof Q==="object"&&Q.type==="tool-call")}function $P($,Z){if($.status!=="running"||$.interactive!==!0)return!1;let Q=Z.at(-1);return Q?.role==="assistant"&&!ef(Q)}async function ZP($,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 $P(Q,J)?{...Q,status:"idle"}:Q}))}async function QP($,Z){return await Promise.all(Z.map(async(Q)=>{let J=c3(Q),W=Boolean(c6(J.metadata?.title)),X=Boolean(Z1(J.provider)),Y=Boolean(Z1(J.model)),j=D9(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=of(B),K=af(B);return c3(Q,{title:W?void 0:nf(B),provider:X?void 0:H.provider,model:Y?void 0:H.model,totalCost:V||K<=0?void 0:K})}))}async function d3($,Z={}){let Q=u3(Z.limit),J=Z.includeSubagents===!0,W=await df($,Q,{includeSubagents:J}),X=Z.includeManifestFallback===!0&&W.length<Q?await pf(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 ZP($,j);if(Z.hydrate===!1)return V.map((B)=>c3(B));return await QP($,V)}async function JP($){let Z=$.trim();if(!Z)return;let Q=JK(WK(),Z,`${Z}.json`),J=await QK(Q,"utf8").catch(()=>{return});if(!J)return;try{let W=l0.safeParse(JSON.parse(J));return W.success?W.data.messages_path:void 0}catch{return}}async function WP($,Z={}){let Q=new Map;return await d3({listSessions:async(W)=>{let X=await $.listSessions(W);Q.clear();for(let Y of X)Q.set(Y.sessionId,Y);return X.map(v6)},readSessionMessages:async(W)=>{let X=Q.get(W)?.messagesPath??await JP(W);return await _$(X)}},Z)}import{captureSdkError as VU}from"@cline/shared";import{createSessionId as XC,isHubProtocolCompatible as YC,resolveClineBuildEnv as jC,resolveHubCommandTimeoutMs as VC}from"@cline/shared";import{spawn as IP}from"node:child_process";import{closeSync as hP,mkdirSync as xP,openSync as vP}from"node:fs";import{basename as gP,dirname as mP,join as cP}from"node:path";import{fileURLToPath as uP}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as pP,isHubDaemonProcess as _K,isHubProtocolCompatible as dP,resolveClineBuildEnv as zK,withResolvedClineBuildEnv as lP}from"@cline/shared";import{createHash as XP,randomBytes as YP}from"node:crypto";import{existsSync as jP}from"node:fs";import{chmod as VP,mkdir as l3,readFile as VK,rm as i3,writeFile as BK}from"node:fs/promises";import{dirname as HK,join as r3}from"node:path";import{resolveClineDataDir as p6,resolveClineDir as fa}from"@cline/shared/storage";var U8="0.0.70";var u6={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:U8,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",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 BP="CLINE_HUB_DISCOVERY_PATH",HP="CLINE_HUB_BUILD_ID",YK=30000,KP=15000,GP=100;function FP($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function UP($){return XP("sha256").update($).digest("hex").slice(0,12)}function DP($){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 KK(){return YP(32).toString("hex")}function LP($){return new Promise((Z)=>setTimeout(Z,$))}function _P($){return`${$}.lock`}async function zP($){try{let Z=JSON.parse(await VK(r3($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function jK($){await i3($,{recursive:!0,force:!0}).catch(()=>{return})}function GK(){return process.env[HP]?.trim()||String(u6.version)}function Y2($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${UP($)}`,Q=process.env[BP]?.trim()||r3(p6(),"locks","hub","owners",`${FP(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function Ca($=`hub-${Date.now().toString(36)}`){return Y2($)}async function M0($){try{let Z=JSON.parse(await VK($,"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,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 L9($,Z){await l3(HK($),{recursive:!0}),await i3($,{force:!0}).catch(()=>{return}),await BK($,`${JSON.stringify(Z,null,2)}
467
+ `)[0]??W);return rf(X,50)}return}function af($){let Z=0;for(let Q of $)Z+=D9(Q.metrics?.cost)??0;return Z}function of($){let Z,Q;for(let J=$.length-1;J>=0;J-=1){let W=$[J];if(!Z)Z=Z1(W.modelInfo?.provider);if(!Q)Q=Z1(W.modelInfo?.id);if(Z&&Q)break}return{provider:Z,model:Q}}function sf($){return Z1($?.provider)??Z1($?.provider&&typeof $.provider==="object"&&!Array.isArray($.provider)?$.provider.id:void 0)}function tf($){return Z1($?.model)??Z1($?.model&&typeof $.model==="object"&&!Array.isArray($.model)?$.model.id:void 0)}function c3($,Z){let Q=gf($.metadata),J=c6(Z?.title)??c6(Q?.title),W=D9(Z?.totalCost)??D9(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:Z1(Z?.provider)??Z1($.provider)??sf(Q)??"",model:Z1(Z?.model)??Z1($.model)??tf(Q)??"",metadata:X}}function ef($){let Z=$.content;if(!Array.isArray(Z))return!1;return Z.some((Q)=>!!Q&&typeof Q==="object"&&Q.type==="tool-call")}function $P($,Z){if($.status!=="running"||$.interactive!==!0)return!1;let Q=Z.at(-1);return Q?.role==="assistant"&&!ef(Q)}async function ZP($,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 $P(Q,J)?{...Q,status:"idle"}:Q}))}async function QP($,Z){return await Promise.all(Z.map(async(Q)=>{let J=c3(Q),W=Boolean(c6(J.metadata?.title)),X=Boolean(Z1(J.provider)),Y=Boolean(Z1(J.model)),j=D9(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=of(B),K=af(B);return c3(Q,{title:W?void 0:nf(B),provider:X?void 0:H.provider,model:Y?void 0:H.model,totalCost:V||K<=0?void 0:K})}))}async function d3($,Z={}){let Q=u3(Z.limit),J=Z.includeSubagents===!0,W=await df($,Q,{includeSubagents:J}),X=Z.includeManifestFallback===!0&&W.length<Q?await pf(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 ZP($,j);if(Z.hydrate===!1)return V.map((B)=>c3(B));return await QP($,V)}async function JP($){let Z=$.trim();if(!Z)return;let Q=JK(WK(),Z,`${Z}.json`),J=await QK(Q,"utf8").catch(()=>{return});if(!J)return;try{let W=l0.safeParse(JSON.parse(J));return W.success?W.data.messages_path:void 0}catch{return}}async function WP($,Z={}){let Q=new Map;return await d3({listSessions:async(W)=>{let X=await $.listSessions(W);Q.clear();for(let Y of X)Q.set(Y.sessionId,Y);return X.map(v6)},readSessionMessages:async(W)=>{let X=Q.get(W)?.messagesPath??await JP(W);return await _$(X)}},Z)}import{captureSdkError as VU}from"@cline/shared";import{createSessionId as XC,isHubProtocolCompatible as YC,resolveClineBuildEnv as jC,resolveHubCommandTimeoutMs as VC}from"@cline/shared";import{spawn as IP}from"node:child_process";import{closeSync as hP,mkdirSync as xP,openSync as vP}from"node:fs";import{basename as gP,dirname as mP,join as cP}from"node:path";import{fileURLToPath as uP}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as pP,isHubDaemonProcess as _K,isHubProtocolCompatible as dP,resolveClineBuildEnv as zK,withResolvedClineBuildEnv as lP}from"@cline/shared";import{createHash as XP,randomBytes as YP}from"node:crypto";import{existsSync as jP}from"node:fs";import{chmod as VP,mkdir as l3,readFile as VK,rm as i3,writeFile as BK}from"node:fs/promises";import{dirname as HK,join as r3}from"node:path";import{resolveClineDataDir as p6,resolveClineDir as fa}from"@cline/shared/storage";var U8="0.0.71";var u6={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:U8,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",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 BP="CLINE_HUB_DISCOVERY_PATH",HP="CLINE_HUB_BUILD_ID",YK=30000,KP=15000,GP=100;function FP($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function UP($){return XP("sha256").update($).digest("hex").slice(0,12)}function DP($){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 KK(){return YP(32).toString("hex")}function LP($){return new Promise((Z)=>setTimeout(Z,$))}function _P($){return`${$}.lock`}async function zP($){try{let Z=JSON.parse(await VK(r3($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function jK($){await i3($,{recursive:!0,force:!0}).catch(()=>{return})}function GK(){return process.env[HP]?.trim()||String(u6.version)}function Y2($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${UP($)}`,Q=process.env[BP]?.trim()||r3(p6(),"locks","hub","owners",`${FP(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function Ca($=`hub-${Date.now().toString(36)}`){return Y2($)}async function M0($){try{let Z=JSON.parse(await VK($,"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,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 L9($,Z){await l3(HK($),{recursive:!0}),await i3($,{force:!0}).catch(()=>{return}),await BK($,`${JSON.stringify(Z,null,2)}
468
468
  `,{encoding:"utf8",mode:384}),await VP($,384)}async function D1($){await i3($,{force:!0}).catch(()=>{return})}async function FK($,Z){let Q=_P($);await l3(HK(Q),{recursive:!0});let J=Date.now()+KP;while(!0)try{await l3(Q,{recursive:!1}),await BK(r3(Q,"owner.json"),`${JSON.stringify({pid:process.pid,acquiredAt:new Date().toISOString()},null,2)}
469
469
  `,"utf8");try{return await Z()}finally{await jK(Q)}}catch(W){if((W instanceof Error&&"code"in W?String(W.code):"")!=="EEXIST")throw W;let Y=await zP(Q),j=Y?Date.now()-Date.parse(Y.acquiredAt):YK+1;if(!Y||!DP(Y.pid)||j>YK){await jK(Q);continue}if(Date.now()>=J)throw Error(`Timed out waiting for hub startup lock ${Q}`);await LP(GP)}}async function j2($,Z){try{let Q=await fetch(Z?.authToken?AP($):UK($),{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,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 x1($,Z,Q="/hub"){return new URL(`ws://${$}:${Z}${Q}`).toString()}function UK($){let Z=new URL($);return Z.protocol=Z.protocol==="wss:"?"https:":"http:",Z.pathname="/health",Z.search="",Z.toString()}function AP($){let Z=new URL(UK($));return Z.pathname="/status",Z.toString()}function wa($){return jP($)}import{CLINE_HUB_DEV_PORT as OP,CLINE_HUB_PORT as qP,resolveClineBuildEnv as TP}from"@cline/shared";var NP="CLINE_HUB_HOST",EP="CLINE_HUB_PORT",MP="CLINE_HUB_PATHNAME",RP="127.0.0.1",fP=qP,PP="/hub";function DK($){return TP($)==="development"?OP:fP}function CP($={}){return($.env??process.env)[NP]?.trim()||RP}function _9($={}){let Q=($.env??process.env)[EP]?.trim();if(!Q)return DK($);let J=Number.parseInt(Q,10);if(!Number.isInteger(J)||J<1||J>65535)return DK($);return J}function wP($={}){return($.env??process.env)[MP]?.trim()||PP}function z$($={},Z={}){return{host:$.host??CP(Z),port:$.port??_9(Z),pathname:$.pathname??wP(Z)}}import{join as SP}from"node:path";var bP="shared:cline",kP="CLINE_HUB_DISCOVERY_PATH",yP="hub-production";function xa($){let Z=F$($.trim());return Y2(`workspace:${Z||$.trim()}`)}function v1($=bP){return Y2($)}function A$(){return{ownerId:yP,discoveryPath:process.env[kP]?.trim()||SP(p6(),"locks","hub","production.json")}}var iP=8000,rP=200,nP=3000,aP=100,oP=[100,250,500,1000,2000],sP="--cline-hub-daemon";function tP($){return[...$.host?["--host",$.host]:[],...typeof $.port==="number"?["--port",String($.port)]:[],...$.pathname?["--pathname",$.pathname]:[]]}function eP(){try{let $=cP(p6(),"logs","hub-daemon.log");return xP(mP($),{recursive:!0}),{fd:vP($,"a"),logPath:$}}catch{return}}function AK(){return zK()==="production"?A$():v1()}function V2($){return dP($).compatible}function LK($,Z,Q){if(!Z||Z.url!==Q)return $;return{...$,authToken:$.authToken??Z.authToken,pid:$.pid??Z.pid}}async function B2($,Z){try{return await j2($,{authToken:Z})}catch{return}}async function $C($,Z){let Q=Date.now()+Z;while(Date.now()<Q){if(!(await B2($))?.url)return!0;await new Promise((W)=>setTimeout(W,aP))}return!1}async function z9($,Z){if(await n3($.url,$.authToken).catch(()=>!1),$.pid)try{process.kill($.pid,"SIGTERM")}catch{}let Q=await $C($.url,nP);return await D1(Z).catch(()=>{return}),Q}async function d6($,Z){if(V2($))return!0;return z9($,Z)}async function OK($){if(zK()!=="production")return;let Z=v1();if(Z.discoveryPath===$.discoveryPath)return;let Q=await M0(Z.discoveryPath);if(Q?.url)await z9(Q,Z.discoveryPath);else await D1(Z.discoveryPath).catch(()=>{return})}function ZC(){let $=import.meta.url.endsWith(".ts")?"ts":"js";return uP(new URL(`./entry.${$}`,import.meta.url))}function QC($,Z){let Q=ZC(),J=process.execPath?.trim();if(!J)throw Error("unable to resolve runtime executable for hub daemon");let W=gP(J).toLowerCase().includes("bun"),X=Q.startsWith("/$bunfs/"),Y=W&&Q.toLowerCase().endsWith(".ts"),j=X?[sP]:[...Y?["--conditions=development"]:[],Q];return{launcher:J,args:[...j,"--cwd",$,...tP(Z)],cwd:$,env:{...lP(process.env),CLINE_NO_INTERACTIVE:"1",[pP]:"1"}}}function JC($){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 WC($,Z={}){if(_K())return;let Q=QC($,Z),J=eP();try{IP(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)hP(J.fd)}}async function A9($,Z={}){for(let Q=0;;Q++)try{WC($,Z);return}catch(J){let W=oP[Q];if(!JC(J)||W===void 0)throw J;await new Promise((X)=>setTimeout(X,W))}}function qK($,Z={}){if(_K())return;let Q=AK(),J=z$(Z),W=x1(J.host,J.port,J.pathname),X=Z.allowPortFallback===!0&&J.port!==0;OK(Q).catch(()=>{return}).then(()=>M0(Q.discoveryPath)).then(async(Y)=>{let j=!1;if(Y?.url)if(!Y.authToken){if(j=!0,!await z9(Y,Q.discoveryPath)&&!X)return}else{let H=await B2(Y.url,Y.authToken);if(H?.url&&V2(H)&&await g1(H.url,{authToken:Y.authToken}))return;if(H?.url)await d6({...H,authToken:Y.authToken},Q.discoveryPath);else await D1(Q.discoveryPath).catch(()=>{return})}let V=await B2(W);if(V?.url){if(V2(V)){if(!X||!j)return}else if(!await d6({...V,authToken:void 0},Q.discoveryPath)&&!X)return}let B=X?{...J,port:0}:J;await A9($,B)}).catch(()=>{})}async function na($,Z={}){let Q=AK(),J=Z.host!==void 0||Z.port!==void 0||Z.pathname!==void 0||!!process.env.CLINE_HUB_PORT?.trim(),W=z$(Z),X=x1(W.host,W.port,W.pathname),Y=(F)=>{if(!J)D8(F.url,F.authToken);return F};await OK(Q).catch(()=>{return});let j=await M0(Q.discoveryPath),V=!1;if(j?.url){let F=j.authToken;if(!F)V=!0,await z9(j,Q.discoveryPath);else{let U=await B2(j.url,F);if(U?.url&&V2(U)&&await g1(U.url,{authToken:F}))return Y({url:U.url,authToken:F});if(U?.url)await d6({...U,authToken:F},Q.discoveryPath);else await D1(Q.discoveryPath).catch(()=>{return})}}let B=await B2(X);if(B?.url){let F=LK(B,j,X);if(V2(B)){let D=[B.authToken,j?.authToken].filter((A)=>typeof A==="string"&&A.trim().length>0);for(let A of D){if(!await g1(B.url,{authToken:A}))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:A,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 L9(Q.discoveryPath,L)}catch{}return Y({url:B.url,authToken:A})}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 d6(F,Q.discoveryPath)&&Z.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=Z.allowPortFallback===!0&&W.port!==0?{...W,port:0}:W;await A9($,K);let G=Date.now()+iP;while(Date.now()<G){let F=await M0(Q.discoveryPath);if(F?.url&&F.authToken){let D=await B2(F.url,F.authToken);if(D?.url&&V2(D)&&await g1(D.url,{authToken:F.authToken}))return Y({url:D.url,authToken:F.authToken})}let U=await B2(X);if(U?.url&&!V2(U)){let D=LK(U,F,X);if(!await d6(D,Q.discoveryPath)&&Z.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,rP))}throw Error("Timed out waiting for detached hub startup.")}function q9(){return jC()==="production"?A$():v1()}function BC(){let $=globalThis.WebSocket;if(!$)throw Error("Global WebSocket is not available in this runtime. Node 22+ is required for hub mode.");return $}function RK($){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 RK($.data);return String($)}function HC($){if(typeof $==="string")return $;if($ instanceof Uint8Array)return Buffer.from($).toString("utf8");if($ instanceof ArrayBuffer)return Buffer.from($).toString("utf8");return""}function TK($){let Z=$,Q=HC(Z.reason);return new Q1("hub_connection_closed",Z.code||Q?`Hub connection closed (code=${Z.code??0}${Q?`, reason=${Q}`:""})`:a3,{closeCode:Z.code,closeReason:Q||void 0})}function KC($,Z){if($ instanceof Q1)return $;if($ instanceof Error)return new Q1("hub_connect_failed",$.message);if($&&typeof $==="object"&&"error"in $&&$.error instanceof Error)return new Q1("hub_connect_failed",$.error.message);let Q=$&&typeof $==="object"&&"message"in $&&typeof $.message==="string"?$.message.trim():"";if(Q)return new Q1("hub_connect_failed",Q);let J=$&&typeof $==="object"&&"type"in $&&typeof $.type==="string"?$.type.trim():"";return new Q1("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 GC=8000,FC=200,NK="*",EK=8000,UC="cline-hub-auth.",fK=new Map,PK=new Set,DC=3000,LC=3000,_C=100,a3="Hub connection closed",zC=250,AC=5000,MK=0.5;class Q1 extends Error{code;details;constructor($,Z,Q){super(Z);this.code=$;this.details=Q;this.name="HubTransportError"}}function OC($){return $ instanceof Q1}class O9 extends Error{command;code;constructor($,Z,Q){super(Q);this.command=$;this.code=Z;this.name="HubCommandError"}}function CK($,Z){return $ instanceof O9&&$.code==="hub_command_timeout"&&(Z===void 0||$.command===Z)}function wK($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=t3($.toString());return Q?fK.get(Q):void 0}function qC($){try{let Q=new URL($).hostname.toLowerCase().replace(/^\[|\]$/g,"");return Q==="localhost"||Q==="127.0.0.1"||Q==="::1"}catch{return!1}}function t3($){if(!qC($))return;let Z=new URL(L8($));return Z.search="",Z.hash="",Z.toString()}function o3($){let Z=t3($);return!!Z&&PK.has(Z)}function D8($,Z){let Q=t3($);if(Q){if(PK.add(Q),Z?.trim())fK.set(Q,Z)}return $}class m1{options;socket;connectPromise;clientId;currentUrl;recoveryPromise;pendingReplies=new Map;listeners=new Set;subscriptionCounts=new Map;reconnectTimer;reconnectAttempt=0;closedByClient=!1;lastCloseError=new Q1("hub_connection_closed",a3);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()||wK($);$.hash="";let J=new(BC())($.toString(),Z?[`${UC}${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 Q1("hub_connect_timeout",`Timed out connecting to hub after ${EK}ms`),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0;try{J.close()}catch{}Y(this.lastCloseError)},EK);J.addEventListener("open",()=>{if(j)return;j=!0,clearTimeout(V),X()}),J.addEventListener("error",(B)=>{if(j)return;j=!0,clearTimeout(V),this.lastCloseError=KC(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=TK(B),this.sawSocketClose=!0;this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)})}),J.addEventListener("message",(X)=>{this.handleFrame(JSON.parse(RK(X)))}),J.addEventListener("close",(X)=>{if(this.socket!==J)return;if(!W)this.lastCloseError=TK(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=XC("hubreq_"),X=VC($,J?.timeoutMs),Y=new Promise((V,B)=>{let H=X===null?void 0:setTimeout(()=>{if(!this.pendingReplies.delete(W))return;B(new O9($,"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===R6){let V=Q??(typeof Z?.sessionId==="string"?Z.sessionId:void 0);throw new Z2(V,j.error.message)}throw new O9($,j.error?.code,j.error?.message??`Hub command ${$} failed`)}return j}async recoverLocalHubTransport($){if(!o3(this.currentUrl)||!OC($))return!1;if(this.recoveryPromise)return await this.recoveryPromise;return this.recoveryPromise=(async()=>{let Z=await l6({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(zC*2**this.reconnectAttempt,AC),Z=Math.round($*(1-MK)+Math.random()*$*MK);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(!o3(this.currentUrl)){this.reconnectAttempt+=1,this.scheduleReconnect();return}try{let $=await l6({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 Q1("hub_connection_closed",a3),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 Q1("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 $??NK}subscriptionSessionIdFromKey($){return $===NK?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 L8($){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 m1({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 s3($,Z){let Q=L8($),J=await j2(Q,{authToken:Z?.authToken});if(!J)return{status:"unreachable",url:Q};if(!YC(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 TC($){let Z=Date.now()+GC;while(Date.now()<Z){let Q=await M0($.discoveryPath);if(Q?.url){let J=await s3(Q.url,{verifyConnection:!0,authToken:Q.authToken});if(J.status==="compatible")return D8(J.url,Q.authToken)}await new Promise((J)=>setTimeout(J,FC))}return}async function NC($){let Z=Date.now()+LC;while(Date.now()<Z){if(!(await j2($).catch(()=>{return}))?.url)return!0;await new Promise((J)=>setTimeout(J,_C))}return!1}function EC($,Z){try{return L8($)===L8(Z)}catch{return!1}}function MC($){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 RC($,Z,Q){let J=new m1({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:DC});return!MC(W.payload)}catch{return!1}finally{await J.dispose().catch(()=>{return})}}async function e3($={}){if($.endpoint?.trim()){let W=await s3($.endpoint);return W.status==="compatible"?W.url:void 0}let Z=q9(),Q=await M0(Z.discoveryPath);if(!Q?.url)return;let J=await s3(Q.url,{authToken:Q.authToken});if(J.status==="compatible")return D8(J.url,Q.authToken);if(J.status==="protocol_mismatch")await D1(Z.discoveryPath).catch(()=>{return});return}async function l6($={}){let Z=await e3($);if(Z&&await g1(Z,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return Z;if($.endpoint?.trim())return;let Q=q9();return await A9($.workspaceRoot??process.cwd()),await TC(Q)}async function n3($,Z){let Q=new URL($),J=Z?.trim()||wK(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 fC($=q9()){let Z=await M0($.discoveryPath);if(!Z?.url)return!1;try{if(await n3(Z.url,Z.authToken))return!0}catch{}return!1}async function SK($){if(!o3($.url))return;let Z=q9(),Q=await M0(Z.discoveryPath);if(!Q?.url||!EC(Q.url,$.url))return;if(!await RC(Q.url,Q.authToken,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return;if(!await fC())return;if(!await NC(Q.url))return;return await D1(Z.discoveryPath).catch(()=>{return}),await l6({workspaceRoot:$.workspaceRoot,cwd:$.cwd})}import{resolveProviderRequestHeaders as IC}from"@cline/llms";import{captureSdkError as QJ,createSessionId as xK,HUB_CHECKPOINT_CAPABILITY as hC,HUB_COMPACTION_CAPABILITY as xC,HUB_CUSTOM_TOOL_CAPABILITY_PREFIX as vC,HUB_HOOK_CAPABILITY_PREFIX as gC,HUB_MISTAKE_LIMIT_CAPABILITY as mC,HUB_TOOL_EXECUTOR_CAPABILITY_PREFIX as cC,HUB_USER_INSTRUCTIONS_SNAPSHOT_CAPABILITY as uC,isHubToolExecutorName as pC}from"@cline/shared";import{createHash as PC}from"node:crypto";import{formatDisplayUserInput as bK}from"@cline/shared";import{z as q1}from"zod";function CC($){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 wC=q1.custom(CC),T9=q1.object({version:q1.literal(1),updated_at:q1.string().datetime(),conversation_id:q1.string().min(1).optional(),source_message_count:q1.number().int().nonnegative(),source_prefix_hash:q1.string().min(1).optional(),source_last_message_key:q1.string().min(1).optional(),messages:q1.array(wC),system_prompt:q1.string().optional()});function $J($){return JSON.parse(JSON.stringify($))}function kK($){if($.role!=="user")return $;if(typeof $.content==="string")return{...$,content:bK($.content)};return{...$,content:$.content.map((Z)=>Z.type==="text"?{...Z,text:bK(Z.text)}:Z)}}function yK($){if($.includes(":"))throw TypeError("Message role cannot contain ':' in compaction boundary keys")}function SC($){let Z=kK($);return yK(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 IK($){if(!$)return"";let Z=kK($);if(typeof Z.id==="string"&&Z.id.trim())return`id:${Z.id.trim()}`;if(yK(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 hK($,Z=$.length){let Q=PC("sha256");Q.update(`cline-session-compaction-source-v2
470
470
  `),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.70",
4
+ "version": "0.0.71",
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.70",
53
- "@cline/shared": "0.0.70",
54
- "@cline/llms": "0.0.70",
52
+ "@cline/agents": "0.0.71",
53
+ "@cline/shared": "0.0.71",
54
+ "@cline/llms": "0.0.71",
55
55
  "@modelcontextprotocol/sdk": "^1.29.0",
56
56
  "@opentelemetry/api": "^1.9.0",
57
57
  "@opentelemetry/api-logs": "^0.214.0",