@cline/core 0.0.68-nightly.1785640549 → 0.0.69

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.
@@ -217,7 +217,7 @@ Searched ${_} files.`;let O=[`Found ${F.length} result${F.length===1?"":"s"} for
217
217
  ${J}`;return Q||J}function uf($,Z){let Q=Z?.["*"]??{},J=Z?.[$]??{};return{...Q,...J}.enabled!==!1}function df($,Z){return $.filter((Q)=>uf(Q.name,Z))}function pf($,Z){return J$(df($,Z))}function lf($){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 j=await X.beforeModel?.({...Q,request:J});if(!j)continue;if(j.stop)return j;W={...W,...j,options:qK(W?.options,j.options)},J={...J,...j.messages?{messages:j.messages}:{},...j.tools?{tools:j.tools}:{},...j.options?{options:qK(J.options,j.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 j=await X.beforeTool?.({...Q,input:J});if(!j)continue;if(j.stop||j.skip)return j;if(W={...W,...j},Object.hasOwn(j,"input"))J=j.input}return W},afterTool:async(Q)=>{let J=Q.result,W;for(let X of Z){let j=await X.afterTool?.({...Q,result:J});if(!j)continue;if(j.stop)return j;if(W={...W,...j},j.result)J=j.result}return W},onEvent:async(Q)=>{for(let J of Z)await J.onEvent?.(Q)}}}class u${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 tJ;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??hf,this.conversation=new rJ($.initialMessages),this.messageBuilder=new pJ(FK()),this.contributionRegistry=xf({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 sJ({maxConsecutiveMistakes:Q,onLimitReached:$.onConsecutiveMistakeLimitReached,onLimitTelemetry:(X)=>{AZ(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,j,Y)=>rf(this.logger,X,j,Y),agentId:this.agentId,getConversationId:()=>this.conversation.getConversationId(),getActiveRunId:()=>this.activeRunId??"",appendRecoveryNotice:(X,j)=>{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 oJ(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=h2($),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 Error(`SessionRuntime.shutdown called while a run is in progress (agentId=${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 mf(Z);if(Q)$.push(Q)}return cf(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||!gf(Z.text))return Z;if(!await this.config.onAuthError().catch(()=>!1))return Z;let J=await this.executeRunInternal({isContinue:!0});return yV(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 D=await af(Q,$.userImages,$.userFiles,this.config.userFileContentLoader);this.conversation.appendMessage({role:"user",content:D})}let J=await this.composeSystemPrompt(),W=XK(this.config,this.logger,this.telemetry),X=new Map;for(let D of this.contributionRegistry.getRegisteredTools())X.set(D.name,D);let j=pf([...X.values()],this.config.toolPolicies),Y=new Map;for(let D of j)Y.set(D.name,D);for(let D of this.config.tools)Y.set(D.name,D);let V=this.conversation.getConversationId(),B=zK(this.config),H=Array.from(Y.values()),K=JQ(this.conversation.getMessages()),G=_K({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}),U=this.createAgentRuntimeImpl(G);if(this.activeRuntime=U,this.abortRequested)U.abort(this.abortReason);let F=U.subscribe((D)=>{this.handleRuntimeEvent(D)}),_,A;try{if($.isContinue)_=await U.continue(void 0);else _=await U.run("")}catch(D){A=D instanceof Error?D:Error(String(D))}finally{F();try{await this.activeTrackerWork}catch(D){this.logger?.error?.("SessionRuntime tracker work failed during drain",{agentId:this.agentId,error:D})}this.activeRuntime=null,this.running=!1,this.abortRequested=!1,this.abortReason=void 0}if(_&&_.messages.length>0){let D=o8(_.messages);this.conversation.replaceMessages(D)}let O=new Date;try{return this.buildLegacyResult({runResult:_,thrownError:A,startedAt:Z,endedAt:O})}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 $=lf([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=o8(J.messages),X=await this.prepareProviderMessagesForApi(W),j=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:$},emitStatusNotice:J.emitStatusNotice});if(!j)return;return{...j.messages?{messages:JQ(j.messages)}:{},...j.systemPrompt!==void 0?{systemPrompt:j.systemPrompt}:{}}}}async prepareMessagesForModelRequest($){let Z=await this.prepareProviderMessagesForApi(WQ($));return JQ(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,j=X?vf(W?.type==="tool-result"?W.output:void 0):void 0,Y={id:$.toolCall.toolCallId,name:$.toolCall.toolName,input:J,output:W?.type==="tool-result"?W.output:void 0,error:j,durationMs:Z===void 0?0:Q.getTime()-Z.getTime(),startedAt:Z??Q,endedAt:Q};if(this.currentRunToolCalls.push(Y),X){if(this.currentTurnFailedTools+=1,j)this.currentTurnFailureDetails.push(`[${$.toolCall.toolName}] ${j}`)}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(o8($));return}if(Z.length===0)return;let Q=new Set(this.conversation.getMessages().map((W)=>W.id).filter((W)=>typeof W==="string")),J=o8(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(),j=Q?"error":nf(Z),Y=(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?o8(Z.messages):this.conversation.getMessages(),H=zK(this.config);if(Q)throw Q;return{text:Y,usage:V,messages:B,toolCalls:this.currentRunToolCalls,iterations:Z?.iterations??0,finishReason:j,model:{id:this.config.modelId,provider:this.config.providerId,info:H},startedAt:J,endedAt:W,durationMs:X}}}function rf($,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 nf($){if(!$)return"error";switch($.status){case"completed":return"completed";case"aborted":return"aborted";case"failed":return"error"}}async function af($,Z,Q,J){let{buildInitialUserContent:W}=await Promise.resolve().then(() => OK);return W($,Z,Q,J)}function zK($){if($.knownModels?.[$.modelId])return $.knownModels[$.modelId];let Z=cJ($);if(Z?.[$.modelId])return Z[$.modelId];return}import{buildClineSystemPrompt as TK}from"@cline/shared";function NK($,Z){let Q=$.trim();if(Z.providerId.toLowerCase()!=="cline")return Q;return TK({ide:Z.clineIdeName?.trim()||"Terminal",workspaceRoot:Z.cwd?.trim()||"/",providerId:Z.providerId,rules:`# Team Teammate Role
218
218
  ${Q}`,platform:Z.clinePlatform,metadata:Z.workspaceMetadata})}function fK($,Z){let Q=$.trim();if(Z.providerId.toLowerCase()!=="cline")return Q;return TK({ide:Z.clineIdeName||"Terminal",workspaceRoot:Z.cwd?.trim()||"/",providerId:Z.providerId,overridePrompt:Q,metadata:Z.workspaceMetadata,platform:Z.clinePlatform})}function d$($){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 x2($){let Z=$.configProvider.getRuntimeConfig(),Q=$.kind==="teammate"?NK($.prompt,Z):fK($.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 p$($){let Z=x2($),Q=new u$(Z);if(Z.onEvent)Q.subscribeEvents(Z.onEvent);return Q}var tf=eJ.object({systemPrompt:eJ.string().describe("System prompt defining the sub-agent's behavior"),task:eJ.string().describe("Task for the sub-agent to complete")});function l$($){return of({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:sf(tf),execute:async(Z,Q)=>{let J=$.createSubAgentTools?await $.createSubAgentTools(Z,Q):$.subAgentTools??[],W=p$({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(),j=W.getConversationId(),Y=Q.agentId;if($.onSubAgentStart)try{await $.onSubAgentStart({subAgentId:X,conversationId:j,parentAgentId:Y,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:j,parentAgentId:Y,input:Z,result:B,agentResult:V})}catch{}return B}catch(V){if($.onSubAgentEnd)try{await $.onSubAgentEnd({subAgentId:X,conversationId:j,parentAgentId:Y,input:Z,error:V instanceof Error?V:Error(String(V))})}catch{}throw V}},timeoutMs:300000,retryable:!1})}import{createTool as z0,TEAM_AWAIT_TIMEOUT_MS as ef,TEAM_RUN_MESSAGE_PREVIEW_LIMIT as $R,TEAM_RUN_TEXT_PREVIEW_LIMIT as ZR,TEAM_TASK_IGNORED_FIELDS_BY_ACTION as QR,TeamAttachOutcomeFragmentInputSchema as RK,TeamAwaitRunsInputSchema as MK,TeamBroadcastInputSchema as EK,TeamBroadcastToolResultSchema as JR,TeamCancelRunInputSchema as CK,TeamCancelRunToolResultSchema as WR,TeamCleanupInputSchema as PK,TeamCleanupToolResultSchema as XR,TeamCreateOutcomeInputSchema as wK,TeamCreateOutcomeToolResultSchema as jR,TeamFinalizeOutcomeInputSchema as SK,TeamFinalizeOutcomeToolResultSchema as YR,TeamListOutcomesInputSchema as bK,TeamListRunsInputSchema as yK,TeamMailboxMessageToolResultSchema as VR,TeamMissionLogInputSchema as kK,TeamMissionLogToolResultSchema as BR,TeamOutcomeFragmentToolResultSchema as IK,TeamOutcomeToolResultSchema as HR,TeamReadMailboxInputSchema as hK,TeamReviewOutcomeFragmentInputSchema as xK,TeamRunTaskInputSchema as gK,TeamRunTaskToolResultSchema as $W,TeamRunToolSummarySchema as ZW,TeamSendMessageInputSchema as vK,TeamSendMessageToolResultSchema as KR,TeamShutdownTeammateInputSchema as mK,TeamSimpleAgentStatusToolResultSchema as cK,TeamSpawnTeammateInputSchema as uK,TeamStatusInputSchema as dK,TeamStatusToolResultSchema as GR,TeamTaskInputSchema as pK,TeamTaskToolResultSchema as $5,validateWithZod as g,zodToJsonSchema as T0}from"@cline/shared";function lK($,Z){let Q=$.replace(/\s+/g," ").trim();if(Q.length<=Z)return Q;return`${Q.slice(0,Math.max(0,Z-3)).trimEnd()}...`}function g2($,Z){if($===void 0)throw Error(`Missing required field: ${Z}`);return $}function UR($){let Z=$.result;if(!Z)return;return{textPreview:lK(Z.text,ZR),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 VQ($){return $?.toISOString()}function QW($){return{id:$.id,agentId:$.agentId,taskId:$.taskId,status:$.status,messagePreview:lK($.message,$R),priority:$.priority,retryCount:$.retryCount,maxRetries:$.maxRetries,nextAttemptAt:VQ($.nextAttemptAt),continueConversation:$.continueConversation,startedAt:$.startedAt.toISOString(),endedAt:VQ($.endedAt),leaseOwner:$.leaseOwner,heartbeatAt:VQ($.heartbeatAt),lastProgressAt:VQ($.lastProgressAt),lastProgressMessage:$.lastProgressMessage,currentActivity:$.currentActivity,error:$.error,resultSummary:UR($)}}function FR($){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 t8=["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 iK($){let Z=[];if($.createBaseTools)Z.push(...$.createBaseTools());Z.push(...v2({runtime:$.runtime,requesterId:$.spec.agentId,teammateConfigProvider:$.teammateConfigProvider,createBaseTools:$.createBaseTools,allowSpawn:!1,includeSpawnTool:!1})),$.runtime.spawnTeammate({agentId:$.spec.agentId,config:x2({kind:"teammate",prompt:$.spec.rolePrompt,role:$.spec.rolePrompt,configProvider:$.teammateConfigProvider,tools:Z,maxIterations:$.spec.maxIterations,cwd:$.teammateConfigProvider.getRuntimeConfig().cwd})})}function e8($){let Z=$.leadAgentId??"lead",Q=$.restoredFromPersistence===!0,J=v2({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;iK({runtime:$.runtime,requesterId:Z,teammateConfigProvider:$.teammateConfigProvider,createBaseTools:$.createBaseTools,spec:X}),W.push(X.agentId)}return{tools:J,restoredFromPersistence:Q,restoredTeammates:W}}function v2($){let Z=$.allowSpawn??!0,Q=$.includeSpawnTool??!0,J=$.includeManagementTools??!0,W=[];if(Q)W.push(z0({name:"team_spawn_teammate",description:"Spawn a teammate with a required agentId and rolePrompt.",inputSchema:T0(uK),execute:async(j)=>{let Y=g(uK,j);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:Y.agentId,rolePrompt:Y.rolePrompt};if(iK({runtime:$.runtime,requesterId:$.requesterId,teammateConfigProvider:$.teammateConfigProvider,createBaseTools:$.createBaseTools,spec:V}),!J)$.onLeadToolsUnlocked?.(v2({...$,includeSpawnTool:!1,includeManagementTools:!0,onLeadToolsUnlocked:void 0}));return g(cK,{agentId:Y.agentId,status:"spawned"})}}));if(!J)return W;W.push(z0({name:"team_shutdown_teammate",description:"Shutdown a teammate by agentId.",inputSchema:T0(mK),execute:async(j)=>{let Y=g(mK,j);if($.runtime.getMemberRole($.requesterId)!=="lead")throw Error("Only the lead agent can manage teammates.");return $.runtime.shutdownTeammate(Y.agentId,Y.reason),g(cK,{agentId:Y.agentId,status:"stopped"})}})),W.push(z0({name:"team_status",description:"Return a snapshot of team members, task counts, mailbox, and mission log stats.",inputSchema:T0(dK),execute:async(j)=>{return g(dK,j),g(GR,$.runtime.getSnapshot())}})),W.push(z0({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(pK),execute:async(j)=>{let Y=g(pK,j);switch(Y.action){case"create":{let V=new Set(QR.create??[]),B=Object.entries(j).filter(([K,G])=>V.has(K)&&G!=null).map(([K])=>K),H=$.runtime.createTask({title:g2(Y.title,"title"),description:g2(Y.description,"description"),dependsOn:Y.dependsOn,assignee:Y.assignee,createdBy:$.requesterId});return g($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 g($5,{action:"list",tasks:$.runtime.listTaskItems({status:Y.status,assignee:Y.assignee})});case"claim":{let V=$.runtime.claimTask(g2(Y.taskId,"taskId"),$.requesterId);return g($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(g2(Y.taskId,"taskId"),$.requesterId,g2(Y.summary,"summary"));return g($5,{action:"complete",taskId:V.id,status:V.status})}case"block":{let V=$.runtime.blockTask(g2(Y.taskId,"taskId"),$.requesterId,g2(Y.reason,"reason"));return g($5,{action:"block",taskId:V.id,status:V.status})}}}}));let X=new Map;return W.push(z0({name:"team_run_task",description:"Route a delegated task to a teammate. Choose sync (wait) or async (run in background).",inputSchema:T0(gK),execute:async(j)=>{let Y=g(gK,j);if(Y.runMode==="async"){let H=$.runtime.startTeammateRun(Y.agentId,Y.task,{taskId:Y.taskId||void 0,fromAgentId:$.requesterId,continueConversation:Y.continueConversation||void 0});return g($W,{agentId:Y.agentId,mode:"async",status:"queued",dispatched:!0,message:`Task dispatched to ${Y.agentId} and queued as ${H.id}.`,runId:H.id})}let V=X.get(Y.agentId);if(V){let H=await V;return g($W,{...H,status:"joined",deduped:!0,message:`Task for ${Y.agentId} was already dispatched in this tool batch; joined the existing in-flight run.`})}let B=$.runtime.routeToTeammate(Y.agentId,Y.task,{taskId:Y.taskId||void 0,fromAgentId:$.requesterId,continueConversation:Y.continueConversation||void 0}).then((H)=>g($W,{agentId:Y.agentId,mode:"sync",status:"running",dispatched:!0,message:`Task dispatched to ${Y.agentId} and completed in sync mode.`,text:H.text,iterations:H.iterations})).finally(()=>{X.delete(Y.agentId)});return X.set(Y.agentId,B),await B}})),W.push(z0({name:"team_cancel_run",description:"Cancel one async teammate run.",inputSchema:T0(CK),execute:async(j)=>{let Y=g(CK,j),V=$.runtime.cancelRun(Y.runId,Y.reason);return g(WR,{runId:V.id,status:V.status})}})),W.push(z0({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(yK),execute:async(j)=>g(ZW.array(),$.runtime.listRuns(g(yK,j)).map(QW))})),W.push(z0({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(MK),timeoutMs:ef,execute:async(j)=>{let Y=g(MK,j);if(Y.runId){let H=await $.runtime.awaitRun(Y.runId);return FR(H),g(ZW,QW(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 g(ZW.array(),V.map(QW))}})),W.push(z0({name:"team_send_message",description:"Send a mailbox message to a specific teammate.",inputSchema:T0(vK),execute:async(j)=>{let Y=g(vK,j),V=$.runtime.sendMessage($.requesterId,Y.toAgentId,Y.subject,Y.body,Y.taskId??void 0);return g(KR,{id:V.id,toAgentId:V.toAgentId})}})),W.push(z0({name:"team_broadcast",description:"Broadcast a message to all teammates.",inputSchema:T0(EK),execute:async(j)=>{let Y=g(EK,j),V=$.runtime.broadcast($.requesterId,Y.subject,Y.body,{taskId:Y.taskId??void 0});return g(JR,{delivered:V.length})}})),W.push(z0({name:"team_read_mailbox",description:"Read the current agent mailbox.",inputSchema:T0(hK),execute:async(j)=>{let Y=g(hK,j);return g(VR.array(),$.runtime.listMailbox($.requesterId,{unreadOnly:Y.unreadOnly,markRead:!0}))}})),W.push(z0({name:"team_mission_log",description:"Append a mission log update for your team.",inputSchema:T0(kK),execute:async(j)=>{let Y=g(kK,j),V=$.runtime.appendMissionLog({agentId:$.requesterId,taskId:Y.taskId||void 0,kind:Y.kind,summary:Y.summary,evidence:Y.evidence?.length?Y.evidence:void 0,nextAction:Y.nextAction||void 0});return g(BR,{id:V.id})}})),W.push(z0({name:"team_cleanup",description:"Clean up the team runtime. Fails if teammates are still running.",inputSchema:T0(PK),execute:async(j)=>{if(g(PK,j),$.runtime.getMemberRole($.requesterId)!=="lead")throw Error("Only the lead agent can run cleanup.");return $.runtime.cleanup(),g(XR,{status:"cleaned"})}})),W.push(z0({name:"team_create_outcome",description:"Create a converged team outcome.",inputSchema:T0(wK),execute:async(j)=>{let Y=g(wK,j),V=$.runtime.createOutcome({title:Y.title,requiredSections:Y.requiredSections,createdBy:$.requesterId});return g(jR,{outcomeId:V.id,status:V.status,requiredSections:V.requiredSections})}})),W.push(z0({name:"team_attach_outcome_fragment",description:"Attach a fragment to an outcome section.",inputSchema:T0(RK),execute:async(j)=>{let Y=g(RK,j),V=$.runtime.attachOutcomeFragment({outcomeId:Y.outcomeId,section:Y.section,sourceAgentId:$.requesterId,sourceRunId:Y.sourceRunId||void 0,content:Y.content});return g(IK,{fragmentId:V.id,status:V.status})}})),W.push(z0({name:"team_review_outcome_fragment",description:"Review one outcome fragment.",inputSchema:T0(xK),execute:async(j)=>{let Y=g(xK,j),V=$.runtime.reviewOutcomeFragment({fragmentId:Y.fragmentId,reviewedBy:$.requesterId,approved:Y.approved});return g(IK,{fragmentId:V.id,status:V.status})}})),W.push(z0({name:"team_finalize_outcome",description:"Finalize one outcome.",inputSchema:T0(SK),execute:async(j)=>{let Y=g(SK,j),V=$.runtime.finalizeOutcome(Y.outcomeId);return g(YR,{outcomeId:V.id,status:V.status})}})),W.push(z0({name:"team_list_outcomes",description:"List team outcomes.",inputSchema:T0(bK),execute:async(j)=>{return g(bK,j),g(HR.array(),$.runtime.listOutcomes())}})),W}function BQ($){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 rK($){return $.toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")}var DR=[{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:l$({configProvider:{}}).description,headlessToolNames:["spawn_agent"]},{id:"teams",description:"Enable team collaboration tools for teammate management, task coordination, mailbox messaging, mission logs, and outcomes.",headlessToolNames:[...t8]}],_R={read_files:"enableReadFiles",search_codebase:"enableSearch",run_commands:"enableBash",fetch_web_content:"enableWebFetch",apply_patch:"enableApplyPatch",editor:"enableEditor",skills:"enableSkills",ask_question:"enableAskQuestion"};function AR($){return $==="plan"||$==="yolo"?$:"act"}function aK($){let Z=AR($.mode),Q=J1[Q$({mode:Z})],J=a8($.providerId??"",$.modelId??"",Z,n8);return{mode:Z,flags:{...Q,...J,...typeof $.enableSpawnAgent==="boolean"?{enableSpawnAgent:$.enableSpawnAgent}:{},...typeof $.enableAgentTeams==="boolean"?{enableAgentTeams:$.enableAgentTeams}:{}}}}function nK($,Z){if(Z.disabledToolIds?.has($))return!1;let{flags:Q}=aK(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=_R[$];return J?Q[J]===!0:!1}function LR($,Z){if($.id==="editor"){let{flags:Q}=aK(Z),J=Q.enableApplyPatch===!0&&Q.enableEditor!==!0;return{...$,defaultEnabled:nK($.id,Z),headlessToolNames:[J?"apply_patch":"editor"]}}return{...$,defaultEnabled:nK($.id,Z)}}function m2($={}){return DR.map((Z)=>LR(Z,$))}function HQ($={}){return m2($).filter((Z)=>Z.defaultEnabled).map((Z)=>Z.id)}function KQ($){if(!$.enabled)return new Set;let Z=m2($.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 m2(Z).filter((Q)=>$.has(Q.id)).flatMap((Q)=>Q.headlessToolNames)}function GQ($,Z={}){return Z5($,Z)}import{getDefaultShell as OR}from"@cline/shared";function c2($={}){let{executorOptions:Z={},executors:Q,...J}=$,W=J.shell??Z.bash?.shell??OR(process.platform),X={...Z,bash:{...Z.bash,shell:W}},j={...r8(X),...Q??{}};return v$({...J,shell:W,executors:j})}import{mkdirSync as RR,writeFileSync as MR}from"node:fs";import{dirname as ER}from"node:path";import{normalizeUserInput as CR,stripModeNotices as PR}from"@cline/shared";import{nanoid as wR}from"nanoid";var sK={};P(sK,{sanitizeSessionToken:()=>u2,parseTeamTaskSubSessionId:()=>Z6,parseSubSessionId:()=>J5,makeTeamTaskSubSessionId:()=>Q5,makeSubSessionId:()=>$6,deriveSubsessionStatus:()=>W5});import{nanoid as TR}from"nanoid";function u2($){return $.replace(/[^a-zA-Z0-9._-]+/g,"_")}function $6($,Z){let Q=u2($),J=u2(Z),W=`${Q}__${J}`;return W.length>180?W.slice(0,180):W}function Q5($,Z){let Q=u2($),J=u2(Z);return`${Q}__teamtask__${J}__${TR(6)}`}function Z6($){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 j=W.slice(0,X),Y=W.slice(X+2);if(!J||!j||!Y)return null;return{rootSessionId:J,agentId:j,teamTaskId:Y}}function J5($){if(Z6($))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 W5($){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 Q0}from"zod";var $G={};P($G,{isTerminalSessionStatus:()=>eK,isNonTerminalSessionStatus:()=>_0,SessionSource:()=>A0,SESSION_STATUSES:()=>X5,NON_TERMINAL_SESSION_STATUSES:()=>tK});import{SESSION_STATUS_VALUES as NR}from"@cline/shared";var X5=NR,tK=["idle","running","pending"];function eK($){return!tK.includes($)}function _0($){return!eK($)}var A0={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 fR=Q0.enum(X5),r0=Q0.object({version:Q0.literal(1),session_id:Q0.string().min(1),source:Q0.string().min(1),pid:Q0.number().int(),started_at:Q0.string().min(1),ended_at:Q0.string().min(1).optional(),exit_code:Q0.number().int().nullable().optional(),status:fR,interactive:Q0.boolean(),provider:Q0.string().min(1),model:Q0.string().min(1),cwd:Q0.string().min(1),workspace_root:Q0.string().min(1),team_name:Q0.string().min(1).optional(),enable_tools:Q0.boolean(),enable_spawn:Q0.boolean(),enable_teams:Q0.boolean(),prompt:Q0.string().optional(),metadata:Q0.record(Q0.string(),Q0.unknown()).optional(),messages_path:Q0.string().min(1).optional(),compaction_path:Q0.string().min(1).optional()});function ZG($){if(!$)return!1;return Object.values($).some((Z)=>typeof Z==="function")}function WW($,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 QG($){return JSON.stringify($,(Z,Q)=>{if(Q instanceof Error)return{name:Q.name,message:Q.message,stack:Q.stack};return Q})}function W$($){return typeof $==="string"&&$.trim()?$.trim():void 0}function JW($,Z){let Q={...$};Q.id=W$(Q.id)??wR();let J=Q.modelInfo&&typeof Q.modelInfo==="object"?{...Q.modelInfo}:void 0,W={id:W$(J?.id)??W$(Q.modelId)??W$(Z?.id),provider:W$(J?.provider)??W$(Q.providerId)??W$(Z?.provider),family:W$(J?.family)??W$(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)=>JW(Z))}function FQ($,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 JW(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 j=X[X.length-1],Y=X.some((V)=>J[V]?.metrics);for(let V of X){let B=J[V],H=B.metrics;if(!H&&V===j&&!Y){let K=Z.usage;H={inputTokens:K.inputTokens,outputTokens:K.outputTokens,cacheReadTokens:K.cacheReadTokens??0,cacheWriteTokens:K.cacheWriteTokens??0,cost:K.totalCost}}J[V]={...JW(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 j5($){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 d2($){let Z=$?.trim();return Z?Z.slice(0,SR):void 0}function XW($){let Z=PR(CR($??"")).trim();if(!Z)return;return d2(Z.split(`
219
219
  `)[0]?.trim())}function i$($){if(!$)return;let Z={...$},Q=d2(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 Y5($){let Z=i$($.metadata)??{},Q=$.title!==void 0?d2($.title):XW($.prompt);if(Q)Z.title=Q;return Object.keys(Z).length>0?Z:void 0}function jW($){let Z=Z6($);if(Z)return{agent:"teammate",sessionId:Z.rootSessionId,taskType:"team"};let Q=J5($);if(Q)return{agent:"subagent",sessionId:Q.rootSessionId,taskType:"subagent_task"};return{agent:"lead",sessionId:$}}function YW($){return{version:1,updated_at:$.updatedAt,agent:$.context.agent,sessionId:$.context.sessionId,...$.context.taskType?{taskType:$.context.taskType}:{},messages:UQ($.messages),...$.systemPrompt?{system_prompt:$.systemPrompt}:{}}}function JG($,Z,Q){RR(ER($),{recursive:!0}),MR($,`${JSON.stringify(YW({updatedAt:Z,context:Q,messages:[]}),null,2)}
220
- `,"utf8")}function WG($,Z){return r0.parse({version:1,session_id:$.sessionId,source:$.source,pid:$.pid,started_at:$.startedAt,ended_at:Z?.endedAt??$.endedAt??void 0,exit_code:Z?.exitCode??$.exitCode??void 0,status:Z?.status??$.status,interactive:$.interactive,provider:$.provider,model:$.model,cwd:$.cwd,workspace_root:$.workspaceRoot,team_name:$.teamName??void 0,enable_tools:$.enableTools,enable_spawn:$.enableSpawn,enable_teams:$.enableTeams,prompt:$.prompt??void 0,metadata:Z?.metadata??$.metadata??void 0,messages_path:$.messagesPath??void 0})}async function XG($,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}}q0();var jG={};P(jG,{summarizeUsageFromMessages:()=>J6,sumUsageTotals:()=>V5,getCurrentContextSize:()=>VW,createInitialAccumulatedUsage:()=>P0,accumulateUsageTotals:()=>N0});function P0(){return{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,totalCost:0}}function N0($,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 V5($){let Z=P0();for(let Q of $)Z=N0(Z,Q);return Z}function Q6($){return typeof $==="number"&&Number.isFinite($)?$:0}function J6($){let Z=P0();for(let Q of $){let J=Q.metrics;if(!J)continue;Z=N0(Z,{inputTokens:Q6(J.inputTokens),outputTokens:Q6(J.outputTokens),cacheReadTokens:Q6(J.cacheReadTokens),cacheWriteTokens:Q6(J.cacheWriteTokens),totalCost:Q6(J.cost)})}return Z}function VW($){for(let Z=$.length-1;Z>=0;Z-=1){let Q=$[Z];if(Q?.role!=="assistant")continue;let J=Q6(Q.metrics?.inputTokens);return J>0?J:void 0}return}function bR($){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 BW($){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 X$($){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 yR($){return{inputTokens:$.inputTokens,outputTokens:$.outputTokens,cacheWriteTokens:$.cacheWriteTokens,cacheReadTokens:$.cacheReadTokens,totalCost:$.cost}}function kR($){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 HW($,Z,Q){let{sessionId:J,config:W,liveSession:X,emit:j}=$,Y=W.telemetry,V=X?.runtime.teamRuntime,B=Q?.isPrimaryAgentEvent??!0,H=BW(Z),K=X$({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=bR(Z.input);if(G)DZ(Y,{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",U=!Z.error;if(S8(Y,{ulid:J,tool:G,autoApproved:void 0,success:U,modelId:W.modelId,provider:W.providerId,...K}),!U&&(G==="editor"||G==="apply_patch"))_Z(Y,{ulid:J,modelId:W.modelId,provider:W.providerId,errorType:Z.error,...K})}if(Z.type==="usage"&&X?.turnUsageBaseline){let G=yR(Z);if(B){X.turnPrimaryUsage=N0(X.turnPrimaryUsage??P0(),G);let F=N0(X.turnUsageBaseline,X.turnPrimaryUsage);$.usageBySession.set(J,F),w8(Y,{ulid:J,provider:W.providerId,model:W.modelId,source:"assistant",mode:W.mode,...K}),UZ(Y,{ulid:J,tokensIn:Z.inputTokens,tokensOut:Z.outputTokens,cacheWriteTokens:Z.cacheWriteTokens,cacheReadTokens:Z.cacheReadTokens,totalCost:Z.cost,model:W.modelId,...K})}else{let F=kR({isPrimaryAgentEvent:B,overrides:Q,eventMetadata:H}),_=X.turnUsageByAgent??new Map;X.turnUsageByAgent=_,_.set(F,N0(_.get(F)??P0(),G))}let U=N0(X.turnPrimaryUsage??P0(),V5(X.turnUsageByAgent?.values()??[]));$.aggregateUsageBySession.set(J,N0(X.turnAggregateUsageBaseline??X.turnUsageBaseline,U))}if(Z.type==="iteration_end"&&B)$.persistMessages(J,X?.agent.getMessages()??[],X?.config.systemPrompt);j({type:"agent_event",payload:{sessionId:J,event:Z,teamAgentId:Q?.teamAgentId,teamRole:Q!==void 0?Q.teamRole??(B?"lead":void 0):void 0}}),j({type:"chunk",payload:{sessionId:J,stream:"agent",chunk:QG(Z),ts:Date.now()}})}function j$($){return $.workspaceRoot??$.cwd}import{resolveProviderRequestHeaders as eE}from"@cline/llms";import{hasRuntimeConfigExtension as $C}from"@cline/shared";var W6="0.0.68-nightly.1785640549";var B5={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:W6,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"]};z1();import{existsSync as qQ,readFileSync as TM,statSync as NM}from"node:fs";import{basename as fM,dirname as LQ,join as zQ,resolve as OQ}from"node:path";import{discoverPluginModulePaths as RM,resolveConfiguredPluginModulePaths as wG,resolvePluginConfigSearchPaths as MM,SKILLS_CONFIG_DIRECTORY_NAME as EM}from"@cline/shared/storage";import{resolve as $M}from"node:path";import{normalizePluginManifest as ZM}from"@cline/shared";import{existsSync as S0,readFileSync as j6}from"node:fs";import{builtinModules as IR,createRequire as FW}from"node:module";import{dirname as r$,extname as K5,isAbsolute as hR,resolve as o}from"node:path";import{fileURLToPath as BG}from"node:url";import{PLUGIN_FILE_EXTENSIONS as xR}from"@cline/shared";var HG=r$(BG(import.meta.url)),gR=FW(import.meta.url),vR=o(HG,"..","..","..","..",".."),KW=uR(vR),mR=["@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"],DW=new Set(IR.flatMap(($)=>[$,$.replace(/^node:/,"")])),H5=new Set(xR),cR=["development","node","import","require","default"];function uR($){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 j=JSON.parse(j6(X,"utf8"));if(typeof j.name!=="string"||!j.exports)continue;if(typeof j.exports==="string"){let Y=o(W,j.exports);if(S0(Y))Z[j.name]=Y;continue}if(typeof j.exports!=="object")continue;for(let[Y,V]of Object.entries(j.exports)){let B=dR(W,V);if(!B)continue;let H=Y==="."?j.name:`${j.name}/${Y.replace(/^\.\//,"")}`;Z[H]=B}}catch{}}return Z}function dR($,Z){let Q=_W(Z);if(!Q)return null;let J=KG($,Q);for(let W of J)if(S0(W))return W;return null}function _W($,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 cR){let W=_W(Q[J],Z);if(W)return W}return null}function KG($,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 pR($){return Object.fromEntries(Object.entries($).sort(([Z],[Q])=>Q.length-Z.length))}function DQ($){return!($.startsWith(".")||$.startsWith("/")||$.startsWith("file:")||$.startsWith("data:")||$.startsWith("http:")||$.startsWith("https:"))}function X6($){if($.startsWith("@")){let[Z,Q]=$.split("/",3);return Q?`${Z}/${Q}`:$}return $.split("/",1)[0]??$}function lR($){let Z=X6($);if($===Z)return".";return`.${$.slice(Z.length)}`}function GG($){return X6($).startsWith("@cline/")}function GW($,Z){let Q=X6(Z),J=r$($);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 VG($){return UW($)!==null}function UW($){try{return gR.resolve($)}catch{}return iR($)}function iR($){let Z=X6($),Q=UG(Z);if(!Q)return null;let J=o(Q,"package.json");try{let W=JSON.parse(j6(J,"utf8")),X=lR($),j=X==="."&&typeof W.exports==="string"?W.exports:W.exports&&typeof W.exports==="object"&&Object.hasOwn(W.exports,X)?W.exports[X]:void 0,Y=_W(j)??(X==="."&&typeof W.main==="string"?W.main:null);if(!Y)return null;let V=o(Q,Y),B=[V,...KG(Q,Y).filter((H)=>H!==V)];for(let H of B)if(S0(H))return H;return null}catch{return null}}function rR(){let $=[HG],Z=process.env.CLINE_WRAPPER_PATH?.trim();if(Z)$.push(r$(r$(Z)));let Q=process.execPath?.trim();if(Q)$.push(r$(Q));return[...new Set($.map((J)=>o(J)))]}function nR($,Z){let Q=$;while(!0){let J=o(Q,"package.json");if(S0(J))try{if(JSON.parse(j6(J,"utf8")).name===Z)return Q}catch{}let W=o(Q,"node_modules",Z,"package.json");if(S0(W))return r$(W);let X=o(Q,"..");if(X===Q)return null;Q=X}}function UG($){for(let Z of rR()){let Q=nR(Z,$);if(Q)return Q}return null}function aR($){let Q=r$($);for(let J=0;J<4;J++){let W=o(Q,"package.json");if(S0(W))try{let j=JSON.parse(j6(W,"utf8"));return j!=null&&typeof j==="object"&&"cline"in j}catch{return!1}let X=o(Q,"..");if(X===Q)return!1;Q=X}return!1}function FG($,Z){let Q=Z.startsWith("file:")?BG(Z):hR(Z)?Z:o(r$($),Z);if(S0(Q)&&H5.has(K5(Q)))return Q;for(let J of H5){let W=`${Q}${J}`;if(S0(W))return W}for(let J of H5){let W=o(Q,`index${J}`);if(S0(W))return W}return null}function DG($){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 oR($){return K5($)!==".ts"}function _G($,Z,Q=new Set){if(Q.has($)||!S0($))return;if(Q.add($),!H5.has(K5($)))return;let J=j6($,"utf8"),W=oR($);for(let X of DG(J)){if(X.startsWith("node:")||DW.has(X))continue;if(DQ(X)){if(!W)continue;if(Object.hasOwn(KW,X)||Object.hasOwn(KW,X6(X))||GW($,X)||GG(X)&&VG(X)||Z&&VG(X))continue;throw Error(`Cannot find module '${X6(X)}'`)}let j=FG($,X);if(j)_G(j,Z,Q)}}function AG($,Z=new Set,Q=new Set){if(Z.has($)||!S0($))return Q;if(Z.add($),!H5.has(K5($)))return Q;let J=j6($,"utf8");for(let W of DG(J)){if(Q.add(W),DQ(W))continue;let X=FG($,W);if(X)AG(X,Z,Q)}return Q}function sR($,Z){let Q=FW($),J={},W=AG($),X=new Set(mR);for(let[j,Y]of Object.entries(KW)){try{Q.resolve(j);continue}catch{}J[j]=Y}for(let j of W)if(DQ(j)&&(GG(j)||Z))X.add(j);for(let j of X){if(Object.hasOwn(J,j)||GW($,j))continue;let Y=UW(j);if(Y)J[j]=Y}if(!Z)return J;for(let j of W){if(!DQ(j)||Object.hasOwn(J,j)||GW($,j)||j.startsWith("node:")||DW.has(j))continue;let Y=UW(j);if(Y)J[j]=Y}return J}function tR($){let Z=K5($);return Z===".ts"||Z===".tsx"||Z===".mts"||Z===".cts"}var p2;function eR(){if(p2!==void 0)return p2;let $=UG("jiti");if(!$)return p2=null,null;let Z=o($,"dist","babel.cjs");if(!S0(Z))return p2=null,null;try{let J=FW(Z)(Z);p2=typeof J==="function"?J:null}catch{p2=null}return p2}async function LG($,Z={}){let Q=!aR($);_G($,Q);let J=sR($,Q),W=pR(J),X=await import("jiti"),j=typeof X==="function"?X:typeof X.default==="function"?X.default:void 0;if(!j)throw Error("Unable to load jiti");let Y=Object.entries(W).filter(([,K])=>tR(K)).map(([K])=>K),V=eR(),B=V?(K)=>V({...K,interopDefault:!0}):void 0;return await j($,{alias:W,cache:Z.useCache,requireCache:Z.useCache,esmResolve:!0,interopDefault:!1,nativeModules:[...DW],transformModules:Y,tryNative:!1,...B?{transform:B}:{}}).import($,{})}function OG($,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 qG($){return typeof $==="object"&&$!==null}function AW($){return Array.isArray($)&&$.every((Z)=>typeof Z==="string")}function QM($,Z){if(!qG($.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 JM($,Z){if(!qG($))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"`);QM($,Z)}async function G5($,Z={}){let Q=$M(Z.cwd??process.cwd(),$),J=await LG(Q,{useCache:Z.useCache}),W=Z.exportName??"plugin",X=J.default??J[W];JM(X,Q);let j=X,Y=j.setup,V=Y?(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 Y(B,G)}:void 0;return{...j,manifest:ZM(j.manifest),setup:V}}async function _Q($,Z={}){return(await l2($,Z)).plugins}async function l2($,Z={}){let Q=[],J=[],W=new Map,X=0;for(let Y of $)try{let V=await G5(Y,Z);if(!OG(V.manifest,Z))continue;let B=W.get(V.name);if(B)J.push({type:"duplicate_plugin_override",pluginName:V.name,pluginPath:Y,overriddenPluginPath:B.pluginPath,message:`Plugin "${V.name}" from ${Y} overrides ${B.pluginPath}`});W.set(V.name,{plugin:V,pluginPath:Y,order:X++})}catch(V){let B=V instanceof Error?V.message:String(V);Q.push({pluginPath:Y,phase:"load",message:B,stack:V instanceof Error?V.stack:void 0})}let j=[...W.values()].sort((Y,V)=>Y.order-V.order);return{plugins:j.map((Y)=>Y.plugin),pluginPaths:j.map((Y)=>Y.pluginPath),failures:Q,warnings:J}}import{existsSync as NW}from"node:fs";import{createRequire as EG}from"node:module";import{dirname as AQ,join as V6}from"node:path";import{fileURLToPath as VM}from"node:url";var fG={};P(fG,{resolveSubprocessRuntimeExecutable:()=>OW,buildSubprocessSandboxCommand:()=>NG,SubprocessSandbox:()=>Y6,CLINE_JS_RUNTIME_PATH_ENV:()=>TG});import{spawn as WM}from"node:child_process";import{basename as XM}from"node:path";import{augmentNodeCommandForDebug as jM,withResolvedClineBuildEnv as YM}from"@cline/shared";function LW($){if($ instanceof Error)return $;return Error(String($))}var TG="CLINE_JS_RUNTIME_PATH";function zG($){let Z=$?.trim();if(!Z)return!1;let Q=XM(Z).toLowerCase();return Q==="node"||Q==="node.exe"||Q==="bun"||Q==="bun.exe"}function OW($={}){let Z=$.env??process.env,Q=$.runtimeExecutable?.trim()||Z[TG]?.trim();if(Q)return Q;let J=$.execPath?.trim()||process.execPath;if(zG(J))return J;for(let W of[Z.BUN_EXEC_PATH,Z.npm_node_execpath,Z.NODE]){let X=W?.trim();if(X&&zG(X))return X}return"node"}function NG($,Z={}){let Q=OW({env:Z.env,execPath:Z.execPath,runtimeExecutable:Z.runtimeExecutable});return jM([Q,...$],{env:Z.env,execArgv:Z.execArgv,debugRole:Z.name==="plugin-sandbox"?"plugin-sandbox":"sandbox"})}class Y6{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=NG($,{name:this.options.name,runtimeExecutable:this.options.runtimeExecutable}),Q=WM(Z[0]??OW(this.options),Z.slice(1),{stdio:["ignore","ignore","pipe","ipc"],env:YM(process.env),windowsHide:!0});this.process=Q;let J="",W=(X)=>{let j=J+X;J=j.length>4000?j.slice(-4000):j};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: ${LW(X).message}`))}),Q.on("exit",(X,j)=>{this.process=null;let Y=J.trim();this.failPending(Error(`${this.options.name??"sandbox"} process exited (code=${String(X)}, signal=${String(j)})${Y?`: ${Y}`:""}`))})}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((j,Y)=>{let V={resolve:(B)=>j(B),reject:Y};if((Q.timeoutMs??0)>0)V.timeout=setTimeout(()=>{this.clearPendingRequest(W),this.shutdown().catch(()=>{}),Y(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 "${$}": ${LW(B).message}`))})}catch(B){this.clearPendingRequest(W),Y(LW(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 BM($){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 U5($){return($ instanceof Error?$.message:String($)).includes("Unknown sandbox plugin id:")}function HM(){return`@cline/cli-${process.platform==="win32"?"windows":process.platform}-${process.arch}`}function KM(){let $=process.env.CLINE_WRAPPER_PATH?.trim();if(!$)return;try{let Q=EG($).resolve(`${HM()}/package.json`),J=V6(AQ(Q),"extensions","plugin-sandbox-bootstrap.js");return NW(J)?J:void 0}catch{return}}function GM(){let $=process.execPath?.trim();if(!$)return;let Z=V6(AQ(AQ($)),"extensions","plugin-sandbox-bootstrap.js");return NW(Z)?Z:void 0}function UM(){let $=AQ(VM(import.meta.url)),Z=EG(import.meta.url),Q=[V6($,"plugin-sandbox-bootstrap.js"),V6($,"extensions","plugin-sandbox-bootstrap.js"),V6($,"agents","plugin-sandbox-bootstrap.js"),KM(),GM()];for(let X of Q.filter((j)=>typeof j==="string"))if(NW(X))return{file:X};let J=V6($,"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(`
220
+ `,"utf8")}function WG($,Z){return r0.parse({version:1,session_id:$.sessionId,source:$.source,pid:$.pid,started_at:$.startedAt,ended_at:Z?.endedAt??$.endedAt??void 0,exit_code:Z?.exitCode??$.exitCode??void 0,status:Z?.status??$.status,interactive:$.interactive,provider:$.provider,model:$.model,cwd:$.cwd,workspace_root:$.workspaceRoot,team_name:$.teamName??void 0,enable_tools:$.enableTools,enable_spawn:$.enableSpawn,enable_teams:$.enableTeams,prompt:$.prompt??void 0,metadata:Z?.metadata??$.metadata??void 0,messages_path:$.messagesPath??void 0})}async function XG($,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}}q0();var jG={};P(jG,{summarizeUsageFromMessages:()=>J6,sumUsageTotals:()=>V5,getCurrentContextSize:()=>VW,createInitialAccumulatedUsage:()=>P0,accumulateUsageTotals:()=>N0});function P0(){return{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,totalCost:0}}function N0($,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 V5($){let Z=P0();for(let Q of $)Z=N0(Z,Q);return Z}function Q6($){return typeof $==="number"&&Number.isFinite($)?$:0}function J6($){let Z=P0();for(let Q of $){let J=Q.metrics;if(!J)continue;Z=N0(Z,{inputTokens:Q6(J.inputTokens),outputTokens:Q6(J.outputTokens),cacheReadTokens:Q6(J.cacheReadTokens),cacheWriteTokens:Q6(J.cacheWriteTokens),totalCost:Q6(J.cost)})}return Z}function VW($){for(let Z=$.length-1;Z>=0;Z-=1){let Q=$[Z];if(Q?.role!=="assistant")continue;let J=Q6(Q.metrics?.inputTokens);return J>0?J:void 0}return}function bR($){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 BW($){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 X$($){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 yR($){return{inputTokens:$.inputTokens,outputTokens:$.outputTokens,cacheWriteTokens:$.cacheWriteTokens,cacheReadTokens:$.cacheReadTokens,totalCost:$.cost}}function kR($){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 HW($,Z,Q){let{sessionId:J,config:W,liveSession:X,emit:j}=$,Y=W.telemetry,V=X?.runtime.teamRuntime,B=Q?.isPrimaryAgentEvent??!0,H=BW(Z),K=X$({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=bR(Z.input);if(G)DZ(Y,{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",U=!Z.error;if(S8(Y,{ulid:J,tool:G,autoApproved:void 0,success:U,modelId:W.modelId,provider:W.providerId,...K}),!U&&(G==="editor"||G==="apply_patch"))_Z(Y,{ulid:J,modelId:W.modelId,provider:W.providerId,errorType:Z.error,...K})}if(Z.type==="usage"&&X?.turnUsageBaseline){let G=yR(Z);if(B){X.turnPrimaryUsage=N0(X.turnPrimaryUsage??P0(),G);let F=N0(X.turnUsageBaseline,X.turnPrimaryUsage);$.usageBySession.set(J,F),w8(Y,{ulid:J,provider:W.providerId,model:W.modelId,source:"assistant",mode:W.mode,...K}),UZ(Y,{ulid:J,tokensIn:Z.inputTokens,tokensOut:Z.outputTokens,cacheWriteTokens:Z.cacheWriteTokens,cacheReadTokens:Z.cacheReadTokens,totalCost:Z.cost,model:W.modelId,...K})}else{let F=kR({isPrimaryAgentEvent:B,overrides:Q,eventMetadata:H}),_=X.turnUsageByAgent??new Map;X.turnUsageByAgent=_,_.set(F,N0(_.get(F)??P0(),G))}let U=N0(X.turnPrimaryUsage??P0(),V5(X.turnUsageByAgent?.values()??[]));$.aggregateUsageBySession.set(J,N0(X.turnAggregateUsageBaseline??X.turnUsageBaseline,U))}if(Z.type==="iteration_end"&&B)$.persistMessages(J,X?.agent.getMessages()??[],X?.config.systemPrompt);j({type:"agent_event",payload:{sessionId:J,event:Z,teamAgentId:Q?.teamAgentId,teamRole:Q!==void 0?Q.teamRole??(B?"lead":void 0):void 0}}),j({type:"chunk",payload:{sessionId:J,stream:"agent",chunk:QG(Z),ts:Date.now()}})}function j$($){return $.workspaceRoot??$.cwd}import{resolveProviderRequestHeaders as eE}from"@cline/llms";import{hasRuntimeConfigExtension as $C}from"@cline/shared";var W6="0.0.69";var B5={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:W6,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"]};z1();import{existsSync as qQ,readFileSync as TM,statSync as NM}from"node:fs";import{basename as fM,dirname as LQ,join as zQ,resolve as OQ}from"node:path";import{discoverPluginModulePaths as RM,resolveConfiguredPluginModulePaths as wG,resolvePluginConfigSearchPaths as MM,SKILLS_CONFIG_DIRECTORY_NAME as EM}from"@cline/shared/storage";import{resolve as $M}from"node:path";import{normalizePluginManifest as ZM}from"@cline/shared";import{existsSync as S0,readFileSync as j6}from"node:fs";import{builtinModules as IR,createRequire as FW}from"node:module";import{dirname as r$,extname as K5,isAbsolute as hR,resolve as o}from"node:path";import{fileURLToPath as BG}from"node:url";import{PLUGIN_FILE_EXTENSIONS as xR}from"@cline/shared";var HG=r$(BG(import.meta.url)),gR=FW(import.meta.url),vR=o(HG,"..","..","..","..",".."),KW=uR(vR),mR=["@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"],DW=new Set(IR.flatMap(($)=>[$,$.replace(/^node:/,"")])),H5=new Set(xR),cR=["development","node","import","require","default"];function uR($){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 j=JSON.parse(j6(X,"utf8"));if(typeof j.name!=="string"||!j.exports)continue;if(typeof j.exports==="string"){let Y=o(W,j.exports);if(S0(Y))Z[j.name]=Y;continue}if(typeof j.exports!=="object")continue;for(let[Y,V]of Object.entries(j.exports)){let B=dR(W,V);if(!B)continue;let H=Y==="."?j.name:`${j.name}/${Y.replace(/^\.\//,"")}`;Z[H]=B}}catch{}}return Z}function dR($,Z){let Q=_W(Z);if(!Q)return null;let J=KG($,Q);for(let W of J)if(S0(W))return W;return null}function _W($,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 cR){let W=_W(Q[J],Z);if(W)return W}return null}function KG($,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 pR($){return Object.fromEntries(Object.entries($).sort(([Z],[Q])=>Q.length-Z.length))}function DQ($){return!($.startsWith(".")||$.startsWith("/")||$.startsWith("file:")||$.startsWith("data:")||$.startsWith("http:")||$.startsWith("https:"))}function X6($){if($.startsWith("@")){let[Z,Q]=$.split("/",3);return Q?`${Z}/${Q}`:$}return $.split("/",1)[0]??$}function lR($){let Z=X6($);if($===Z)return".";return`.${$.slice(Z.length)}`}function GG($){return X6($).startsWith("@cline/")}function GW($,Z){let Q=X6(Z),J=r$($);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 VG($){return UW($)!==null}function UW($){try{return gR.resolve($)}catch{}return iR($)}function iR($){let Z=X6($),Q=UG(Z);if(!Q)return null;let J=o(Q,"package.json");try{let W=JSON.parse(j6(J,"utf8")),X=lR($),j=X==="."&&typeof W.exports==="string"?W.exports:W.exports&&typeof W.exports==="object"&&Object.hasOwn(W.exports,X)?W.exports[X]:void 0,Y=_W(j)??(X==="."&&typeof W.main==="string"?W.main:null);if(!Y)return null;let V=o(Q,Y),B=[V,...KG(Q,Y).filter((H)=>H!==V)];for(let H of B)if(S0(H))return H;return null}catch{return null}}function rR(){let $=[HG],Z=process.env.CLINE_WRAPPER_PATH?.trim();if(Z)$.push(r$(r$(Z)));let Q=process.execPath?.trim();if(Q)$.push(r$(Q));return[...new Set($.map((J)=>o(J)))]}function nR($,Z){let Q=$;while(!0){let J=o(Q,"package.json");if(S0(J))try{if(JSON.parse(j6(J,"utf8")).name===Z)return Q}catch{}let W=o(Q,"node_modules",Z,"package.json");if(S0(W))return r$(W);let X=o(Q,"..");if(X===Q)return null;Q=X}}function UG($){for(let Z of rR()){let Q=nR(Z,$);if(Q)return Q}return null}function aR($){let Q=r$($);for(let J=0;J<4;J++){let W=o(Q,"package.json");if(S0(W))try{let j=JSON.parse(j6(W,"utf8"));return j!=null&&typeof j==="object"&&"cline"in j}catch{return!1}let X=o(Q,"..");if(X===Q)return!1;Q=X}return!1}function FG($,Z){let Q=Z.startsWith("file:")?BG(Z):hR(Z)?Z:o(r$($),Z);if(S0(Q)&&H5.has(K5(Q)))return Q;for(let J of H5){let W=`${Q}${J}`;if(S0(W))return W}for(let J of H5){let W=o(Q,`index${J}`);if(S0(W))return W}return null}function DG($){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 oR($){return K5($)!==".ts"}function _G($,Z,Q=new Set){if(Q.has($)||!S0($))return;if(Q.add($),!H5.has(K5($)))return;let J=j6($,"utf8"),W=oR($);for(let X of DG(J)){if(X.startsWith("node:")||DW.has(X))continue;if(DQ(X)){if(!W)continue;if(Object.hasOwn(KW,X)||Object.hasOwn(KW,X6(X))||GW($,X)||GG(X)&&VG(X)||Z&&VG(X))continue;throw Error(`Cannot find module '${X6(X)}'`)}let j=FG($,X);if(j)_G(j,Z,Q)}}function AG($,Z=new Set,Q=new Set){if(Z.has($)||!S0($))return Q;if(Z.add($),!H5.has(K5($)))return Q;let J=j6($,"utf8");for(let W of DG(J)){if(Q.add(W),DQ(W))continue;let X=FG($,W);if(X)AG(X,Z,Q)}return Q}function sR($,Z){let Q=FW($),J={},W=AG($),X=new Set(mR);for(let[j,Y]of Object.entries(KW)){try{Q.resolve(j);continue}catch{}J[j]=Y}for(let j of W)if(DQ(j)&&(GG(j)||Z))X.add(j);for(let j of X){if(Object.hasOwn(J,j)||GW($,j))continue;let Y=UW(j);if(Y)J[j]=Y}if(!Z)return J;for(let j of W){if(!DQ(j)||Object.hasOwn(J,j)||GW($,j)||j.startsWith("node:")||DW.has(j))continue;let Y=UW(j);if(Y)J[j]=Y}return J}function tR($){let Z=K5($);return Z===".ts"||Z===".tsx"||Z===".mts"||Z===".cts"}var p2;function eR(){if(p2!==void 0)return p2;let $=UG("jiti");if(!$)return p2=null,null;let Z=o($,"dist","babel.cjs");if(!S0(Z))return p2=null,null;try{let J=FW(Z)(Z);p2=typeof J==="function"?J:null}catch{p2=null}return p2}async function LG($,Z={}){let Q=!aR($);_G($,Q);let J=sR($,Q),W=pR(J),X=await import("jiti"),j=typeof X==="function"?X:typeof X.default==="function"?X.default:void 0;if(!j)throw Error("Unable to load jiti");let Y=Object.entries(W).filter(([,K])=>tR(K)).map(([K])=>K),V=eR(),B=V?(K)=>V({...K,interopDefault:!0}):void 0;return await j($,{alias:W,cache:Z.useCache,requireCache:Z.useCache,esmResolve:!0,interopDefault:!1,nativeModules:[...DW],transformModules:Y,tryNative:!1,...B?{transform:B}:{}}).import($,{})}function OG($,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 qG($){return typeof $==="object"&&$!==null}function AW($){return Array.isArray($)&&$.every((Z)=>typeof Z==="string")}function QM($,Z){if(!qG($.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 JM($,Z){if(!qG($))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"`);QM($,Z)}async function G5($,Z={}){let Q=$M(Z.cwd??process.cwd(),$),J=await LG(Q,{useCache:Z.useCache}),W=Z.exportName??"plugin",X=J.default??J[W];JM(X,Q);let j=X,Y=j.setup,V=Y?(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 Y(B,G)}:void 0;return{...j,manifest:ZM(j.manifest),setup:V}}async function _Q($,Z={}){return(await l2($,Z)).plugins}async function l2($,Z={}){let Q=[],J=[],W=new Map,X=0;for(let Y of $)try{let V=await G5(Y,Z);if(!OG(V.manifest,Z))continue;let B=W.get(V.name);if(B)J.push({type:"duplicate_plugin_override",pluginName:V.name,pluginPath:Y,overriddenPluginPath:B.pluginPath,message:`Plugin "${V.name}" from ${Y} overrides ${B.pluginPath}`});W.set(V.name,{plugin:V,pluginPath:Y,order:X++})}catch(V){let B=V instanceof Error?V.message:String(V);Q.push({pluginPath:Y,phase:"load",message:B,stack:V instanceof Error?V.stack:void 0})}let j=[...W.values()].sort((Y,V)=>Y.order-V.order);return{plugins:j.map((Y)=>Y.plugin),pluginPaths:j.map((Y)=>Y.pluginPath),failures:Q,warnings:J}}import{existsSync as NW}from"node:fs";import{createRequire as EG}from"node:module";import{dirname as AQ,join as V6}from"node:path";import{fileURLToPath as VM}from"node:url";var fG={};P(fG,{resolveSubprocessRuntimeExecutable:()=>OW,buildSubprocessSandboxCommand:()=>NG,SubprocessSandbox:()=>Y6,CLINE_JS_RUNTIME_PATH_ENV:()=>TG});import{spawn as WM}from"node:child_process";import{basename as XM}from"node:path";import{augmentNodeCommandForDebug as jM,withResolvedClineBuildEnv as YM}from"@cline/shared";function LW($){if($ instanceof Error)return $;return Error(String($))}var TG="CLINE_JS_RUNTIME_PATH";function zG($){let Z=$?.trim();if(!Z)return!1;let Q=XM(Z).toLowerCase();return Q==="node"||Q==="node.exe"||Q==="bun"||Q==="bun.exe"}function OW($={}){let Z=$.env??process.env,Q=$.runtimeExecutable?.trim()||Z[TG]?.trim();if(Q)return Q;let J=$.execPath?.trim()||process.execPath;if(zG(J))return J;for(let W of[Z.BUN_EXEC_PATH,Z.npm_node_execpath,Z.NODE]){let X=W?.trim();if(X&&zG(X))return X}return"node"}function NG($,Z={}){let Q=OW({env:Z.env,execPath:Z.execPath,runtimeExecutable:Z.runtimeExecutable});return jM([Q,...$],{env:Z.env,execArgv:Z.execArgv,debugRole:Z.name==="plugin-sandbox"?"plugin-sandbox":"sandbox"})}class Y6{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=NG($,{name:this.options.name,runtimeExecutable:this.options.runtimeExecutable}),Q=WM(Z[0]??OW(this.options),Z.slice(1),{stdio:["ignore","ignore","pipe","ipc"],env:YM(process.env),windowsHide:!0});this.process=Q;let J="",W=(X)=>{let j=J+X;J=j.length>4000?j.slice(-4000):j};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: ${LW(X).message}`))}),Q.on("exit",(X,j)=>{this.process=null;let Y=J.trim();this.failPending(Error(`${this.options.name??"sandbox"} process exited (code=${String(X)}, signal=${String(j)})${Y?`: ${Y}`:""}`))})}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((j,Y)=>{let V={resolve:(B)=>j(B),reject:Y};if((Q.timeoutMs??0)>0)V.timeout=setTimeout(()=>{this.clearPendingRequest(W),this.shutdown().catch(()=>{}),Y(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 "${$}": ${LW(B).message}`))})}catch(B){this.clearPendingRequest(W),Y(LW(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 BM($){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 U5($){return($ instanceof Error?$.message:String($)).includes("Unknown sandbox plugin id:")}function HM(){return`@cline/cli-${process.platform==="win32"?"windows":process.platform}-${process.arch}`}function KM(){let $=process.env.CLINE_WRAPPER_PATH?.trim();if(!$)return;try{let Q=EG($).resolve(`${HM()}/package.json`),J=V6(AQ(Q),"extensions","plugin-sandbox-bootstrap.js");return NW(J)?J:void 0}catch{return}}function GM(){let $=process.execPath?.trim();if(!$)return;let Z=V6(AQ(AQ($)),"extensions","plugin-sandbox-bootstrap.js");return NW(Z)?Z:void 0}function UM(){let $=AQ(VM(import.meta.url)),Z=EG(import.meta.url),Q=[V6($,"plugin-sandbox-bootstrap.js"),V6($,"extensions","plugin-sandbox-bootstrap.js"),V6($,"agents","plugin-sandbox-bootstrap.js"),KM(),GM()];for(let X of Q.filter((j)=>typeof j==="string"))if(NW(X))return{file:X};let J=V6($,"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(`
221
221
  `)}}var qW=UM();function zW($,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 B6($){let Z=new Y6({name:"plugin-sandbox",..."file"in qW?{bootstrapFile:qW.file}:{bootstrapScript:qW.script},onEvent:$.onEvent}),Q=zW($.importTimeoutMs,4000,"CLINE_PLUGIN_IMPORT_TIMEOUT_MS"),J=zW($.hookTimeoutMs,3000),W=zW($.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},j,Y=()=>{return j??=Z.call("initialize",X,{timeoutMs:Q}).finally(()=>{j=void 0}),j},V;try{V=await Z.call("initialize",X,{timeoutMs:Q})}catch(K){throw await Z.shutdown().catch(()=>{}),K}let B=V.plugins.map(BM);return{extensions:B.map((K)=>{let G={name:K.name,__clinePluginPath:K.pluginPath,manifest:K.manifest,setup:(U)=>{DM(U,Z,K,W,Y),_M(U,Z,K,W,Y),AM(U,Z,K,W,Y),OM(U,Z,K,W,Y),LM(U,K)}};return G.hooks=zM(Z,K,J,Y),G}),failures:V.failures,pluginPaths:B.map((K)=>K.pluginPath),shutdown:async()=>{await Z.shutdown()},warnings:V.warnings}}function FM($){let Z=$ instanceof Error?$.message:String($);return/cyclic|circular|bigint/i.test(Z)}function TW($,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)=>TW(W,Z)??null);let J={};for(let[W,X]of Object.entries($)){let j=TW(X,Z);if(j!==void 0)J[W]=j}return J}finally{Z.delete($)}}var RG=new Set;function CG($,Z,Q){let J=`${$}:${Z}`;if(RG.has(J))return;RG.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 PG($,Z,Q){try{return await $(Z)}catch(J){if(!FM(J))throw J;return Q(J),await $(TW(Z))}}function DM($,Z,Q,J,W){for(let X of Q.contributions?.tools??[]){let j={name:X.name,description:X.description??"",inputSchema:X.inputSchema??{type:"object",properties:{}},timeoutMs:X.timeoutMs,retryable:X.retryable,execute:async(Y,V)=>{return await PG(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(U){if(!U5(U))throw U;return await W(),await Z.call("executeTool",{pluginId:Q.pluginId,contributionId:X.id,input:K,context:G},{timeoutMs:J})}},{input:Y,context:V},(H)=>CG("tool",X.name,H))}};$.registerTool(j)}}function _M($,Z,Q,J,W){for(let X of Q.contributions?.commands??[])$.registerCommand({name:X.name,description:X.description,handler:async(j)=>{try{return await Z.call("executeCommand",{pluginId:Q.pluginId,contributionId:X.id,input:j},{timeoutMs:J})}catch(Y){if(!U5(Y))throw Y;return await W(),await Z.call("executeCommand",{pluginId:Q.pluginId,contributionId:X.id,input:j},{timeoutMs:J})}}})}function AM($,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(j){if(!U5(j))throw j;return await W(),await Z.call("resolveRuleContent",{pluginId:Q.pluginId,contributionId:X.id},{timeoutMs:J})}}:X.content??""})}function LM($,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 OM($,Z,Q,J,W){for(let X of Q.contributions?.messageBuilders??[])$.registerMessageBuilder({name:X.name,async build(j){try{let Y=await Z.call("buildMessages",{pluginId:Q.pluginId,contributionId:X.id,messages:j},{timeoutMs:J});return MG(Y)?Y:j}catch(Y){if(!U5(Y))throw Y;await W();let V=await Z.call("buildMessages",{pluginId:Q.pluginId,contributionId:X.id,messages:j},{timeoutMs:J});return MG(V)?V:j}}})}function MG($){return Array.isArray($)&&$.every((Z)=>typeof Z==="object"&&Z!==null&&("role"in Z)&&("content"in Z))}function qM($,Z,Q,J,W){return async(X)=>{return await PG(async(Y)=>{try{return await $.call("invokeHook",{pluginId:Z,hookName:Q,payload:Y},{timeoutMs:J})}catch(V){if(!U5(V))throw V;return await W(),await $.call("invokeHook",{pluginId:Z,hookName:Q,payload:Y},{timeoutMs:J})}},X,(Y)=>CG("hook",Q,Y))}}function zM($,Z,Q,J){let W={};for(let X of Z.hooks??[])W[X]=qM($,Z.pluginId,X,Q,J);return Object.keys(W).length>0?W:void 0}var RW="package.json",CM="package";function F5($){return MM($)}function D5($){return RM($)}function PM($){try{return qQ($)&&NM($).isDirectory()}catch{return!1}}function MW($){let Z=[],Q=new Set;for(let J of $){let W=OQ(J);if(Q.has(W))continue;Q.add(W),Z.push(W)}return Z}function SG($){let Z=MW($);return ZQ(Z)}function bG($){return F5($).flatMap((Z)=>D5(Z)).filter((Z)=>qQ(Z))}function wM($,Z){let Q=[];for(let J of $)try{Q.push(...wG([J],Z))}catch{}return Q}function fW($){return typeof $==="object"&&$!==null}function SM($){try{let Z=JSON.parse(TM(zQ($,RW),"utf8"));if(!fW(Z)||!fW(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(!fW(W)||!Array.isArray(W.paths))continue;for(let X of W.paths)if(typeof X==="string")J.push(X)}return J}catch{return[]}}function yG($,Z){let Q=OQ(Z);return SM($).some((J)=>OQ($,J)===Q)}function bM($,Z){return fM($)===CM&&qQ(zQ(LQ($),RW))&&yG(LQ($),Z)}function yM($){let Z=OQ($),Q=[],J=LQ(Z);while(!0){if(bM(J,Z)){Q.push(J);break}if(qQ(zQ(J,RW))){if(yG(J,Z))Q.push(J);break}let W=LQ(J);if(W===J)break;J=W}return MW(Q)}function Y$($={}){let Z=$.cwd??process.cwd(),Q=bG($.workspacePath),J=wG($.pluginPaths??[],Z);return SG([...J,...Q])}function kM($={}){let Z=$.cwd??process.cwd(),Q=bG($.workspacePath),J=wM($.pluginPaths??[],Z);return SG([...J,...Q])}function V$($){let Z=[];for(let Q of $)for(let J of yM(Q)){let W=zQ(J,EM);if(PM(W))Z.push(W)}return MW(Z)}function kG($={}){return V$(kM($))}async function H6($={}){let Z=Y$($);if(Z.length===0)return{extensions:[],failures:[],warnings:[],pluginPaths:[]};if($.mode==="in_process"){let J=await l2(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 B6({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 IM}from"node:child_process";import{mkdtemp as hM,rm as xM,writeFile as gM}from"node:fs/promises";import{tmpdir as vM}from"node:os";import{join as EW}from"node:path";import{promisify as mM}from"node:util";var wW=mM(IM),IG="cline checkpoint session=";function hG($){return $.includes(IG)}function CW($,Z){$?.log(Z,{severity:"warn"})}function cM($){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 h0($,Z){let Q=await wW("git",["-C",$,...Z],{windowsHide:!0});return{stdout:Q.stdout.trim(),stderr:Q.stderr.trim()}}async function PW($,Z,Q){return(await wW("git",["-C",$,...Q],{windowsHide:!0,env:{...process.env,GIT_INDEX_FILE:Z}})).stdout.trim()}async function uM($){let Q=(await wW("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 hM(EW(vM(),"cline-checkpoint-")),W=EW(J,"index"),X=EW(J,"pathspec");try{await gM(X,`${Q.join("\x00")}\x00`),await PW($,W,["add","--force","--pathspec-from-file",X,"--pathspec-file-nul"]);let j=await PW($,W,["write-tree"]);if(!j)return;return await PW($,W,["commit-tree",j,"-m","untracked files on cline checkpoint"])||void 0}finally{await xM(J,{recursive:!0,force:!0})}}async function dM($,Z){let Q=(await h0($,["stash","create",Z])).stdout,J=await uM($);if(Q){if(!J)return Q;let Y=(await h0($,["rev-parse",`${Q}^{tree}`])).stdout,V=(await h0($,["rev-parse",`${Q}^1`])).stdout,B=(await h0($,["rev-parse",`${Q}^2`])).stdout;if(!Y||!V||!B)return Q;return(await h0($,["commit-tree",Y,"-p",V,"-p",B,"-p",J,"-m",Z])).stdout||Q}if(!J)return;let W=(await h0($,["rev-parse","HEAD"])).stdout,X=(await h0($,["rev-parse","HEAD^{tree}"])).stdout;if(!W||!X)return;let j=(await h0($,["commit-tree",X,"-p",W,"-m","index on cline checkpoint"])).stdout;if(!j)return;return(await h0($,["commit-tree",X,"-p",W,"-p",j,"-p",J,"-m",Z])).stdout||void 0}async function SW($,Z){if(!$)return;let Q=`refs/cline/checkpoints/${Z}/`;try{let{stdout:J}=await h0($,["for-each-ref","--format=%(refname)",Q]),W=J.trim().split(`
222
222
  `).filter(Boolean);await Promise.allSettled(W.map((X)=>h0($,["update-ref","-d",X])))}catch{}}async function xG($,Z,Q){if(!$||Q.length===0)return;await Promise.allSettled(Q.map((J)=>h0($,["update-ref",`refs/cline/checkpoints/${Z}/${J.runCount}`,J.ref])))}function pM($,Z){let Q=$.findIndex((J)=>J.runCount===Z.runCount);if(Q<0)return[...$,Z];return $.map((J,W)=>W===Q?Z:J)}function gG($){let Z,Q,J=async()=>{if(Z!==void 0)return Z;try{Z=(await h0($.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 j=async(H)=>{try{let G=(await h0($.cwd,["rev-parse","HEAD"])).stdout.trim();if(!G)return;return{ref:G,createdAt:Date.now(),runCount:X,kind:"commit"}}catch(K){CW($.logger,`${H}: ${K instanceof Error?K.message:String(K)}`);return}},Y=`${IG}${$.sessionId} run=${X}`,V="";try{V=await dM($.cwd,Y)??""}catch(H){return CW($.logger,`Checkpoint snapshot failed: ${H instanceof Error?H.message:String(H)}`),j("Checkpoint HEAD fallback failed")}if(!V)return j("Checkpoint HEAD fallback failed");let B=`refs/cline/checkpoints/${$.sessionId}/${X}`;try{await h0($.cwd,["update-ref",B,V])}catch(H){CW($.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 j=X.messages.slice(Q??Math.max(0,X.messages.length-1));Q=void 0;let Y=k$(X.messages);if(Y<1)return;let V=await $.readSessionMetadata(),B=cM(V),H=k$(j)>=1,K=B?.history.some((F)=>F.runCount===Y)??!1;if(!H&&K)return;let G=await W(Y);if(!G)return;if(B?.latest.ref===G.ref)return;let U=pM(B?.history??[],G);await $.writeSessionMetadata({...V??{},checkpoint:{latest:G,history:U}});return}}}import{appendFileSync as WE,readFileSync as XE}from"node:fs";import{join as jE}from"node:path";import{augmentNodeCommandForDebug as YE}from"@cline/shared";import{ensureHookLogDir as mG}from"@cline/shared/storage";function K6($,Z){if(!Z)return;return{name:$,manifest:{capabilities:["hooks"]},hooks:Z}}import{existsSync as lM,readdirSync as iM}from"node:fs";import{basename as rM,extname as nM,join as aM}from"node:path";import{HOOKS_CONFIG_DIRECTORY_NAME as TQ,resolveHooksConfigSearchPaths as oM}from"@cline/shared/storage";function _5($){return oM($)}var G6;((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"})(G6||={});var A5={["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"},sM=new Map(Object.values(G6).map(($)=>[$.toLowerCase(),$])),tM=new Set(["",".sh",".bash",".zsh",".js",".mjs",".cjs",".ts",".mts",".cts",".py",".ps1"]);function L5($){let Z=nM($).toLowerCase();if(!tM.has(Z))return;let Q=rM($,Z).trim().toLowerCase();return sM.get(Q)}function n$($){let Z=[],Q=new Set,J=_5($).filter((W)=>lM(W));for(let W of J)try{for(let X of iM(W,{withFileTypes:!0})){if(!X.isFile())continue;let j=L5(X.name);if(!j)continue;let Y=aM(W,X.name);if(Q.has(Y))continue;Q.add(Y),Z.push({fileName:j,hookEventName:A5[j],path:Y})}}catch{}return Z.sort((W,X)=>W.path.localeCompare(X.path))}import{spawn as eM}from"node:child_process";import{augmentNodeCommandForDebug as $E,withResolvedClineBuildEnv as ZE}from"@cline/shared";function QE($){let Z=$.trim();if(!Z)return{};let J=Z.split(`
223
223
  `).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 vG($,Z){let Q=$ instanceof Error?$:Error(String($)),J=Q,W=Z.join(" ");if(J.code==="EACCES"){let j=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 j.code=J.code,j}let X=Error(`Failed to execute hook command "${W}": ${Q.message}`);return X.code=J.code,X}async function JE($,Z){let Q=$.stdin;if(!Q)throw Error("runSubprocessEvent failed to create stdin pipe");await new Promise((J,W)=>{let X=!1,j=(B)=>{if(X)return;X=!0,B()},Y=(B)=>{let H=B.code;return H==="EPIPE"||H==="EOF"||H==="ERR_STREAM_DESTROYED"},V=(B)=>{if(Y(B)){j(J);return}j(()=>W(B))};Q.on("error",V),Q.once("close",()=>Q.off("error",V)),Q.end(Z,(B)=>{if(B){if(Y(B)){j(J);return}j(()=>W(B));return}j(J)})})}async function B$($,Z){let Q=$E(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=eM(Q[0],Q.slice(1),{cwd:Z.cwd,env:ZE(Z.env),stdio:J?["pipe","ignore","ignore"]:["pipe","pipe","pipe"],detached:J,windowsHide:!0}),X="",j="",Y=!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)=>{j+=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",(U)=>G(vG(U,Q)))}),H=new Promise((K,G)=>{W.once("error",(U)=>{if(V)clearTimeout(V);G(vG(U,Q))}),W.once("close",(U)=>{if(V)clearTimeout(V);let{parsedJson:F,parseError:_}=QE(X);K({exitCode:U,stdout:X,stderr:j,parsedJson:F,parseError:_,timedOut:Y})})});if(J)H.catch(()=>{return});if(!J&&(Z.timeoutMs??0)>0)V=setTimeout(()=>{Y=!0,W.kill("SIGKILL")},Z.timeoutMs);if(await Promise.race([Promise.all([B,JE(W,JSON.stringify($))]),H]),J){W.unref();return}return await H}function NQ($){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 O5($,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 VE($,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 KZ($){return $?new Date($).getTime():void 0}function _q($){let Z=$.metadata?{...$.metadata}:void 0;if(Z)delete Z.__hubScheduleCreatedBy,delete Z.__hubScheduleCwd,delete Z.__hubRuntimeOptions;return Z}function O4($){let Z=$.metadata;return{scheduleId:$.externalId,name:$.title,cronPattern:$.triggerKind==="one_off"?lV:$.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:KZ($.nextRunAt),lastRunAt:KZ($.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:_q($)}}function Lq($){switch($){case"done":return"success";case"cancelled":return"aborted";case"running":return"running";case"queued":return"pending";default:return"failed"}}function $J($,Z){return{executionId:$.runId,scheduleId:Z,sessionId:$.sessionId,triggeredAt:new Date($.scheduledFor??$.createdAt).getTime(),startedAt:KZ($.startedAt),endedAt:KZ($.completedAt),status:Lq($.status),errorMessage:$.error}}class b8{store;materializer;runner;started=!1;disposed=!1;constructor($){this.store=new A4({dbPath:$.dbPath}),this.materializer=new H4({store:this.store}),this.runner=new U4({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 O4(this.store.createHubSchedule($))}getSchedule($){let Z=this.store.getHubSchedule($);return Z?O4(Z):void 0}listSchedules($={}){return this.store.listHubSchedules($).map((Z)=>O4(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=O4(Q);if(this.validateScheduleTiming(Z.cronPattern??X.cronPattern,Z.metadata??X.metadata,W),W&&!J)throw Error("workspaceRoot is required for enabled schedules");let j=this.store.updateHubSchedule($,{...Z,scheduleId:$});return j?O4(j):void 0}validateScheduleTiming($,Z,Q){if($.trim()!==lV){xV($);return}let J=Z?.[Dq];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 $J(Q,$)}triggerScheduleNowDetached($){let Z=this.store.enqueueHubScheduleRun($,"manual");if(!Z)return;return this.runner.tick().catch(()=>{return}),$J(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 $J(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 j of Z){if(j.status==="success"||j.status==="completed")Q+=1;if(!X&&j.status!=="success"&&j.status!=="completed")X=j;if(j.startedAt&&j.endedAt)W+=j.endedAt-j.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}))}}hZ();import{createSessionId as KT,isHubProtocolCompatible as GT,resolveClineBuildEnv as UT,resolveHubCommandTimeoutMs as FT}from"@cline/shared";var RB={};P(RB,{splitCoreSessionConfig:()=>C4,isSessionNotFoundError:()=>e1,SessionNotFoundError:()=>t1,SESSION_NOT_FOUND_ERROR_CODE:()=>T2});var T2="session_not_found";class t1 extends Error{sessionId;code="session_not_found";constructor($,Z){super(Z??($?`session not found: ${$}`:"session not found"));this.sessionId=$;this.name="SessionNotFoundError"}}function e1($){return $ instanceof t1||typeof $==="object"&&$!==null&&"code"in $&&$.code==="session_not_found"}function C4($){let{hooks:Z,logger:Q,telemetry:J,extensionContext:W,extraTools:X,extensions:j,onTeamEvent:Y,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(j)G.extensions=j;if(Y)G.onTeamEvent=Y;if(V)G.onConsecutiveMistakeLimitReached=V;if(B?.createCheckpoint)G.checkpoint=B;if(H?.compact)G.compaction=H;let U=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}}:{}},...U?{localRuntime:U}:{}}}import{spawn as uz}from"node:child_process";import{closeSync as dz,mkdirSync as pz,openSync as lz}from"node:fs";import{basename as iz,dirname as rz,join as nz}from"node:path";import{fileURLToPath as az}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as oz,isHubDaemonProcess as gB,isHubProtocolCompatible as sz,resolveClineBuildEnv as vB,withResolvedClineBuildEnv as tz}from"@cline/shared";import{createHash as Az,randomBytes as Oz}from"node:crypto";import{existsSync as qz}from"node:fs";import{chmod as zz,mkdir as jJ,readFile as PB,rm as YJ,writeFile as wB}from"node:fs/promises";import{dirname as SB,join as VJ}from"node:path";import{resolveClineDataDir as N2,resolveClineDir as bB}from"@cline/shared/storage";var v8="0.0.68-nightly.1785640549";var P4={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:v8,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 Tz="CLINE_HUB_DISCOVERY_PATH",Nz="CLINE_HUB_BUILD_ID",MB=30000,fz=15000,Rz=100;function Ez($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function Mz($){return Az("sha256").update($).digest("hex").slice(0,12)}function Cz($){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 IZ(){return Oz(32).toString("hex")}function Pz($){return new Promise((Z)=>setTimeout(Z,$))}function wz($){return`${$}.lock`}async function Sz($){try{let Z=JSON.parse(await PB(VJ($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function CB($){await YJ($,{recursive:!0,force:!0}).catch(()=>{return})}function xZ(){return process.env[Nz]?.trim()||String(P4.version)}function $$($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${Mz($)}`,Q=process.env[Tz]?.trim()||VJ(N2(),"locks","hub","owners",`${Ez(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function yB($=`hub-${Date.now().toString(36)}`){return $$($)}async function z0($){try{let Z=JSON.parse(await PB($,"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 gZ($,Z){await jJ(SB($),{recursive:!0}),await YJ($,{force:!0}).catch(()=>{return}),await wB($,`${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 KZ($){return $?new Date($).getTime():void 0}function _q($){let Z=$.metadata?{...$.metadata}:void 0;if(Z)delete Z.__hubScheduleCreatedBy,delete Z.__hubScheduleCwd,delete Z.__hubRuntimeOptions;return Z}function O4($){let Z=$.metadata;return{scheduleId:$.externalId,name:$.title,cronPattern:$.triggerKind==="one_off"?lV:$.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:KZ($.nextRunAt),lastRunAt:KZ($.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:_q($)}}function Lq($){switch($){case"done":return"success";case"cancelled":return"aborted";case"running":return"running";case"queued":return"pending";default:return"failed"}}function $J($,Z){return{executionId:$.runId,scheduleId:Z,sessionId:$.sessionId,triggeredAt:new Date($.scheduledFor??$.createdAt).getTime(),startedAt:KZ($.startedAt),endedAt:KZ($.completedAt),status:Lq($.status),errorMessage:$.error}}class b8{store;materializer;runner;started=!1;disposed=!1;constructor($){this.store=new A4({dbPath:$.dbPath}),this.materializer=new H4({store:this.store}),this.runner=new U4({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 O4(this.store.createHubSchedule($))}getSchedule($){let Z=this.store.getHubSchedule($);return Z?O4(Z):void 0}listSchedules($={}){return this.store.listHubSchedules($).map((Z)=>O4(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=O4(Q);if(this.validateScheduleTiming(Z.cronPattern??X.cronPattern,Z.metadata??X.metadata,W),W&&!J)throw Error("workspaceRoot is required for enabled schedules");let j=this.store.updateHubSchedule($,{...Z,scheduleId:$});return j?O4(j):void 0}validateScheduleTiming($,Z,Q){if($.trim()!==lV){xV($);return}let J=Z?.[Dq];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 $J(Q,$)}triggerScheduleNowDetached($){let Z=this.store.enqueueHubScheduleRun($,"manual");if(!Z)return;return this.runner.tick().catch(()=>{return}),$J(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 $J(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 j of Z){if(j.status==="success"||j.status==="completed")Q+=1;if(!X&&j.status!=="success"&&j.status!=="completed")X=j;if(j.startedAt&&j.endedAt)W+=j.endedAt-j.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}))}}hZ();import{createSessionId as KT,isHubProtocolCompatible as GT,resolveClineBuildEnv as UT,resolveHubCommandTimeoutMs as FT}from"@cline/shared";var RB={};P(RB,{splitCoreSessionConfig:()=>C4,isSessionNotFoundError:()=>e1,SessionNotFoundError:()=>t1,SESSION_NOT_FOUND_ERROR_CODE:()=>T2});var T2="session_not_found";class t1 extends Error{sessionId;code="session_not_found";constructor($,Z){super(Z??($?`session not found: ${$}`:"session not found"));this.sessionId=$;this.name="SessionNotFoundError"}}function e1($){return $ instanceof t1||typeof $==="object"&&$!==null&&"code"in $&&$.code==="session_not_found"}function C4($){let{hooks:Z,logger:Q,telemetry:J,extensionContext:W,extraTools:X,extensions:j,onTeamEvent:Y,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(j)G.extensions=j;if(Y)G.onTeamEvent=Y;if(V)G.onConsecutiveMistakeLimitReached=V;if(B?.createCheckpoint)G.checkpoint=B;if(H?.compact)G.compaction=H;let U=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}}:{}},...U?{localRuntime:U}:{}}}import{spawn as uz}from"node:child_process";import{closeSync as dz,mkdirSync as pz,openSync as lz}from"node:fs";import{basename as iz,dirname as rz,join as nz}from"node:path";import{fileURLToPath as az}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as oz,isHubDaemonProcess as gB,isHubProtocolCompatible as sz,resolveClineBuildEnv as vB,withResolvedClineBuildEnv as tz}from"@cline/shared";import{createHash as Az,randomBytes as Oz}from"node:crypto";import{existsSync as qz}from"node:fs";import{chmod as zz,mkdir as jJ,readFile as PB,rm as YJ,writeFile as wB}from"node:fs/promises";import{dirname as SB,join as VJ}from"node:path";import{resolveClineDataDir as N2,resolveClineDir as bB}from"@cline/shared/storage";var v8="0.0.69";var P4={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:v8,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 Tz="CLINE_HUB_DISCOVERY_PATH",Nz="CLINE_HUB_BUILD_ID",MB=30000,fz=15000,Rz=100;function Ez($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function Mz($){return Az("sha256").update($).digest("hex").slice(0,12)}function Cz($){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 IZ(){return Oz(32).toString("hex")}function Pz($){return new Promise((Z)=>setTimeout(Z,$))}function wz($){return`${$}.lock`}async function Sz($){try{let Z=JSON.parse(await PB(VJ($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function CB($){await YJ($,{recursive:!0,force:!0}).catch(()=>{return})}function xZ(){return process.env[Nz]?.trim()||String(P4.version)}function $$($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${Mz($)}`,Q=process.env[Tz]?.trim()||VJ(N2(),"locks","hub","owners",`${Ez(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function yB($=`hub-${Date.now().toString(36)}`){return $$($)}async function z0($){try{let Z=JSON.parse(await PB($,"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 gZ($,Z){await jJ(SB($),{recursive:!0}),await YJ($,{force:!0}).catch(()=>{return}),await wB($,`${JSON.stringify(Z,null,2)}
288
288
  `,{encoding:"utf8",mode:384}),await zz($,384)}async function r0($){await YJ($,{force:!0}).catch(()=>{return})}async function vZ($,Z){let Q=wz($);await jJ(SB(Q),{recursive:!0});let J=Date.now()+fz;while(!0)try{await jJ(Q,{recursive:!1}),await wB(VJ(Q,"owner.json"),`${JSON.stringify({pid:process.pid,acquiredAt:new Date().toISOString()},null,2)}
289
289
  `,"utf8");try{return await Z()}finally{await CB(Q)}}catch(W){if((W instanceof Error&&"code"in W?String(W.code):"")!=="EEXIST")throw W;let j=await Sz(Q),Y=j?Date.now()-Date.parse(j.acquiredAt):MB+1;if(!j||!Cz(j.pid)||Y>MB){await CB(Q);continue}if(Date.now()>=J)throw Error(`Timed out waiting for hub startup lock ${Q}`);await Pz(Rz)}}async function Z$($,Z){try{let Q=await fetch(Z?.authToken?BJ($):mZ($),{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 U1($,Z,Q="/hub"){return new URL(`ws://${$}:${Z}${Q}`).toString()}function mZ($){let Z=new URL($);return Z.protocol=Z.protocol==="wss:"?"https:":"http:",Z.pathname="/health",Z.search="",Z.toString()}function BJ($){let Z=new URL(mZ($));return Z.pathname="/status",Z.toString()}function kB($){return qz($)}import{CLINE_HUB_DEV_PORT as bz,CLINE_HUB_PORT as yz,resolveClineBuildEnv as kz}from"@cline/shared";var hz="CLINE_HUB_HOST",Iz="CLINE_HUB_PORT",xz="CLINE_HUB_PATHNAME",HJ="127.0.0.1",KJ=yz,GJ="/hub";function hB($){return kz($)==="development"?bz:KJ}function UJ($={}){return($.env??process.env)[hz]?.trim()||HJ}function m8($={}){let Q=($.env??process.env)[Iz]?.trim();if(!Q)return hB($);let J=Number.parseInt(Q,10);if(!Number.isInteger(J)||J<1||J>65535)return hB($);return J}function FJ($={}){return($.env??process.env)[xz]?.trim()||GJ}function M1($={},Z={}){return{host:$.host??UJ(Z),port:$.port??m8(Z),pathname:$.pathname??FJ(Z)}}import{join as gz}from"node:path";var vz="shared:cline",mz="CLINE_HUB_DISCOVERY_PATH",cz="hub-production";function IB($){let Z=f1($.trim());return $$(`workspace:${Z||$.trim()}`)}function F1($=vz){return $$($)}function C1(){return{ownerId:cz,discoveryPath:process.env[mz]?.trim()||gz(N2(),"locks","hub","production.json")}}var ez=8000,$T=200,ZT=3000,QT=100,JT=[100,250,500,1000,2000],WT="--cline-hub-daemon";function XT($){return[...$.host?["--host",$.host]:[],...typeof $.port==="number"?["--port",String($.port)]:[],...$.pathname?["--pathname",$.pathname]:[]]}function jT(){try{let $=nz(N2(),"logs","hub-daemon.log");return pz(rz($),{recursive:!0}),{fd:lz($,"a"),logPath:$}}catch{return}}function mB(){return vB()==="production"?C1():F1()}function f2($){return sz($).compatible}function xB($,Z,Q){if(!Z||Z.url!==Q)return $;return{...$,authToken:$.authToken??Z.authToken,pid:$.pid??Z.pid}}async function R2($,Z){try{return await Z$($,{authToken:Z})}catch{return}}async function YT($,Z){let Q=Date.now()+Z;while(Date.now()<Q){if(!(await R2($))?.url)return!0;await new Promise((W)=>setTimeout(W,QT))}return!1}async function cZ($,Z){if(await S4($.url,$.authToken).catch(()=>!1),$.pid)try{process.kill($.pid,"SIGTERM")}catch{}let Q=await YT($.url,ZT);return await r0(Z).catch(()=>{return}),Q}async function w4($,Z){if(f2($))return!0;return cZ($,Z)}async function cB($){if(vB()!=="production")return;let Z=F1();if(Z.discoveryPath===$.discoveryPath)return;let Q=await z0(Z.discoveryPath);if(Q?.url)await cZ(Q,Z.discoveryPath);else await r0(Z.discoveryPath).catch(()=>{return})}function VT(){let $=import.meta.url.endsWith(".ts")?"ts":"js";return az(new URL(`./entry.${$}`,import.meta.url))}function BT($,Z){let Q=VT(),J=process.execPath?.trim();if(!J)throw Error("unable to resolve runtime executable for hub daemon");let W=iz(J).toLowerCase().includes("bun"),X=Q.startsWith("/$bunfs/"),j=W&&Q.toLowerCase().endsWith(".ts"),Y=X?[WT]:[...j?["--conditions=development"]:[],Q];return{launcher:J,args:[...Y,"--cwd",$,...XT(Z)],cwd:$,env:{...tz(process.env),CLINE_NO_INTERACTIVE:"1",[oz]:"1"}}}function HT($){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 DJ($,Z={}){if(gB())return;let Q=BT($,Z),J=jT();try{uz(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)dz(J.fd)}}async function c8($,Z={}){for(let Q=0;;Q++)try{DJ($,Z);return}catch(J){let W=JT[Q];if(!HT(J)||W===void 0)throw J;await new Promise((X)=>setTimeout(X,W))}}function uZ($,Z={}){if(gB())return;let Q=mB(),J=M1(Z),W=U1(J.host,J.port,J.pathname),X=Z.allowPortFallback===!0&&J.port!==0;cB(Q).catch(()=>{return}).then(()=>z0(Q.discoveryPath)).then(async(j)=>{let Y=!1;if(j?.url)if(!j.authToken){if(Y=!0,!await cZ(j,Q.discoveryPath)&&!X)return}else{let H=await R2(j.url,j.authToken);if(H?.url&&f2(H)&&await P1(H.url,{authToken:j.authToken}))return;if(H?.url)await w4({...H,authToken:j.authToken},Q.discoveryPath);else await r0(Q.discoveryPath).catch(()=>{return})}let V=await R2(W);if(V?.url){if(f2(V)){if(!X||!Y)return}else if(!await w4({...V,authToken:void 0},Q.discoveryPath)&&!X)return}let B=X?{...J,port:0}:J;await c8($,B)}).catch(()=>{})}async function uB($,Z={}){let Q=mB(),J=Z.host!==void 0||Z.port!==void 0||Z.pathname!==void 0||!!process.env.CLINE_HUB_PORT?.trim(),W=M1(Z),X=U1(W.host,W.port,W.pathname),j=(U)=>{if(!J)k$(U.url,U.authToken);return U};await cB(Q).catch(()=>{return});let Y=await z0(Q.discoveryPath),V=!1;if(Y?.url){let U=Y.authToken;if(!U)V=!0,await cZ(Y,Q.discoveryPath);else{let F=await R2(Y.url,U);if(F?.url&&f2(F)&&await P1(F.url,{authToken:U}))return j({url:F.url,authToken:U});if(F?.url)await w4({...F,authToken:U},Q.discoveryPath);else await r0(Q.discoveryPath).catch(()=>{return})}}let B=await R2(X);if(B?.url){let U=xB(B,Y,X);if(f2(B))throw Error(`A compatible Cline Hub is already running at ${X}, but its discovery record is missing or unreadable. 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 w4(U,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 c8($,K);let G=Date.now()+ez;while(Date.now()<G){let U=await z0(Q.discoveryPath);if(U?.url&&U.authToken){let _=await R2(U.url,U.authToken);if(_?.url&&f2(_)&&await P1(_.url,{authToken:U.authToken}))return j({url:_.url,authToken:U.authToken})}let F=await R2(X);if(F?.url&&!f2(F)){let _=xB(F,U,X);if(!await w4(_,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((_)=>setTimeout(_,$T))}throw Error("Timed out waiting for detached hub startup.")}function dZ(){return UT()==="production"?C1():F1()}function DT(){let $=globalThis.WebSocket;if(!$)throw Error("Global WebSocket is not available in this runtime. Node 22+ is required for hub mode.");return $}function rB($){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 rB($.data);return String($)}function _T($){if(typeof $==="string")return $;if($ instanceof Uint8Array)return Buffer.from($).toString("utf8");if($ instanceof ArrayBuffer)return Buffer.from($).toString("utf8");return""}function dB($){let Z=$,Q=_T(Z.reason);return new m0("hub_connection_closed",Z.code||Q?`Hub connection closed (code=${Z.code??0}${Q?`, reason=${Q}`:""})`:_J,{closeCode:Z.code,closeReason:Q||void 0})}function LT($,Z){if($ instanceof m0)return $;if($ instanceof Error)return new m0("hub_connect_failed",$.message);if($&&typeof $==="object"&&"error"in $&&$.error instanceof Error)return new m0("hub_connect_failed",$.error.message);let Q=$&&typeof $==="object"&&"message"in $&&typeof $.message==="string"?$.message.trim():"";if(Q)return new m0("hub_connect_failed",Q);let J=$&&typeof $==="object"&&"type"in $&&typeof $.type==="string"?$.type.trim():"";return new m0("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 AT=8000,OT=200,pB="*",lB=8000,qT="cline-hub-auth.",nB=new Map,aB=new Set,zT=3000,TT=3000,NT=100,_J="Hub connection closed",fT=250,RT=5000,iB=0.5;class m0 extends Error{code;details;constructor($,Z,Q){super(Z);this.code=$;this.details=Q;this.name="HubTransportError"}}function OJ($){return $ instanceof m0}class u8 extends Error{command;code;constructor($,Z,Q){super(Q);this.command=$;this.code=Z;this.name="HubCommandError"}}function pZ($,Z){return $ instanceof u8&&$.code==="hub_command_timeout"&&(Z===void 0||$.command===Z)}function oB($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=qJ($.toString());return Q?nB.get(Q):void 0}function ET($){try{let Q=new URL($).hostname.toLowerCase().replace(/^\[|\]$/g,"");return Q==="localhost"||Q==="127.0.0.1"||Q==="::1"}catch{return!1}}function qJ($){if(!ET($))return;let Z=new URL(h$($));return Z.search="",Z.hash="",Z.toString()}function LJ($){let Z=qJ($);return!!Z&&aB.has(Z)}function k$($,Z){let Q=qJ($);if(Q){if(aB.add(Q),Z?.trim())nB.set(Q,Z)}return $}class D1{options;socket;connectPromise;clientId;currentUrl;recoveryPromise;pendingReplies=new Map;listeners=new Set;subscriptionCounts=new Map;reconnectTimer;reconnectAttempt=0;closedByClient=!1;lastCloseError=new m0("hub_connection_closed",_J);sawSocketClose=!1;registered=!1;constructor($){this.options=$;this.clientId=$.clientId??`core-${Math.random().toString(36).slice(2,10)}-${Date.now().toString(36)}`,this.currentUrl=$.url}getClientId(){return this.clientId}getUrl(){return this.currentUrl}isConnected(){return this.socket?.readyState===1&&this.registered}getConnectionError(){return this.isConnected()?null:this.lastCloseError}async connect(){if(this.socket&&(this.socket.readyState===1||this.socket.readyState===0))return this.connectPromise??Promise.resolve();this.closedByClient=!1,this.clearReconnectTimer();let $=new URL(this.currentUrl),Z=this.options.authToken?.trim()||oB($);$.hash="";let J=new(DT())($.toString(),Z?[`${qT}${Z}`]:void 0);this.socket=J;let W=!1;this.connectPromise=new Promise((X,j)=>{let Y=!1,V=setTimeout(()=>{if(Y)return;Y=!0,W=!0,this.lastCloseError=new m0("hub_connect_timeout",`Timed out connecting to hub after ${lB}ms`),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0;try{J.close()}catch{}j(this.lastCloseError)},lB);J.addEventListener("open",()=>{if(Y)return;Y=!0,clearTimeout(V),X()}),J.addEventListener("error",(B)=>{if(Y)return;Y=!0,clearTimeout(V),this.lastCloseError=LT(B,$),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0,j(this.lastCloseError)}),J.addEventListener("close",(B)=>{if(Y)return;if(Y=!0,clearTimeout(V),!W)this.lastCloseError=dB(B),this.sawSocketClose=!0;this.connectPromise=void 0,this.socket=void 0,j(this.lastCloseError)})}),J.addEventListener("message",(X)=>{this.handleFrame(JSON.parse(rB(X)))}),J.addEventListener("close",(X)=>{if(this.socket!==J)return;if(!W)this.lastCloseError=dB(X),this.sawSocketClose=!0;this.registered=!1;for(let j of this.pendingReplies.values())j.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(j){if(!X||W>=1||!await this.recoverLocalHubTransport(j))throw j;W+=1}}async commandOnce($,Z,Q,J){await this.connect();let W=KT("hubreq_"),X=FT($,J?.timeoutMs),j=new Promise((V,B)=>{let H=X===null?void 0:setTimeout(()=>{if(!this.pendingReplies.delete(W))return;B(new u8($,"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 Y=await j;if(!Y.ok){if(Y.error?.code===T2){let V=Q??(typeof Z?.sessionId==="string"?Z.sessionId:void 0);throw new t1(V,Y.error.message)}throw new u8($,Y.error?.code,Y.error?.message??`Hub command ${$} failed`)}return Y}async recoverLocalHubTransport($){if(!LJ(this.currentUrl)||!OJ($))return!1;if(this.recoveryPromise)return await this.recoveryPromise;return this.recoveryPromise=(async()=>{let Z=await E2({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(fT*2**this.reconnectAttempt,RT),Z=Math.round($*(1-iB)+Math.random()*$*iB);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(!LJ(this.currentUrl)){this.reconnectAttempt+=1,this.scheduleReconnect();return}try{let $=await E2({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 m0("hub_connection_closed",_J),this.sawSocketClose=!1;for(let Z of this.pendingReplies.values())Z.reject(this.lastCloseError);this.pendingReplies.clear(),this.connectPromise=void 0,this.socket=void 0;try{$.close()}catch{}}async dispose(){if(this.socket?.readyState===1&&this.registered)try{await this.command("client.unregister",void 0,void 0,{timeoutMs:2000})}catch{}this.close()}sendFrame($){if(!this.socket||this.socket.readyState!==1){if(this.lastCloseError.code==="hub_connection_closed"&&!this.sawSocketClose)throw new m0("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 $??pB}subscriptionSessionIdFromKey($){return $===pB?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 h$($){let Z=new URL($);if(Z.protocol==="http:")Z.protocol="ws:";else if(Z.protocol==="https:")Z.protocol="wss:";return Z.toString()}async function P1($,Z){let Q=new D1({url:$,authToken:Z?.authToken,clientType:"hub-healthcheck",displayName:"hub healthcheck",workspaceRoot:Z?.workspaceRoot,cwd:Z?.cwd});try{return await Q.connect(),!0}catch{return!1}finally{Q.close()}}async function AJ($,Z){let Q=h$($),J=await Z$(Q,{authToken:Z?.authToken});if(!J)return{status:"unreachable",url:Q};if(!GT(J).compatible)return{status:"protocol_mismatch",url:Q};if(Z?.verifyConnection===!0&&!await P1(Q,{workspaceRoot:Z.workspaceRoot,cwd:Z.cwd,authToken:Z.authToken}))return{status:"unreachable",url:Q};return{status:"compatible",url:Q}}async function MT($){let Z=Date.now()+AT;while(Date.now()<Z){let Q=await z0($.discoveryPath);if(Q?.url){let J=await AJ(Q.url,{verifyConnection:!0,authToken:Q.authToken});if(J.status==="compatible")return k$(J.url,Q.authToken)}await new Promise((J)=>setTimeout(J,OT))}return}async function CT($){let Z=Date.now()+TT;while(Date.now()<Z){if(!(await Z$($).catch(()=>{return}))?.url)return!0;await new Promise((J)=>setTimeout(J,NT))}return!1}function PT($,Z){try{return h$($)===h$(Z)}catch{return!1}}function wT($){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 ST($,Z,Q){let J=new D1({url:$,authToken:Z,clientType:"hub-recovery-check",displayName:"hub recovery check",workspaceRoot:Q?.workspaceRoot,cwd:Q?.cwd});try{let W=await J.command("session.list",{limit:500},void 0,{timeoutMs:zT});return!wT(W.payload)}catch{return!1}finally{await J.dispose().catch(()=>{return})}}async function b4($={}){if($.endpoint?.trim()){let W=await AJ($.endpoint);return W.status==="compatible"?W.url:void 0}let Z=dZ(),Q=await z0(Z.discoveryPath);if(!Q?.url)return;let J=await AJ(Q.url,{authToken:Q.authToken});if(J.status==="compatible")return k$(J.url,Q.authToken);if(J.status==="protocol_mismatch")await r0(Z.discoveryPath).catch(()=>{return});return}async function E2($={}){let Z=await b4($);if(Z&&await P1(Z,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return Z;if($.endpoint?.trim())return;let Q=dZ();return await c8($.workspaceRoot??process.cwd()),await MT(Q)}async function S4($,Z){let Q=new URL($),J=Z?.trim()||oB(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 zJ($=dZ()){let Z=await z0($.discoveryPath);if(!Z?.url)return!1;try{if(await S4(Z.url,Z.authToken))return!0}catch{}return!1}async function lZ($){if(!LJ($.url))return;let Z=dZ(),Q=await z0(Z.discoveryPath);if(!Q?.url||!PT(Q.url,$.url))return;if(!await ST(Q.url,Q.authToken,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return;if(!await zJ())return;if(!await CT(Q.url))return;return await r0(Z.discoveryPath).catch(()=>{return}),await E2({workspaceRoot:$.workspaceRoot,cwd:$.cwd})}import{resolveClineBuildEnv as bT}from"@cline/shared";function yT($,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 kT="cline-hub-auth.";function hT($){return $.host!==void 0||$.port!==void 0||$.pathname!==void 0}function IT($,Z){let Q=new URL($),J=new URL(Z);return Q.search="",Q.hash="",J.search="",J.hash="",Q.toString()===J.toString()}function sB(){return bT()==="production"?C1():F1()}async function xT($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=sB(),J=await z0(Q.discoveryPath);if(J?.url&&IT($.toString(),J.url))return J.authToken;return}async function TJ($={}){let Z=M1($);if(!hT($)){let Q=sB(),J=await z0(Q.discoveryPath);if(J?.url)return J.url}return U1(Z.host,Z.port,Z.pathname)}async function iZ($){return await new Promise((Z,Q)=>{(async()=>{let J=new URL($),W=await xT(J);J.hash="";let X=new WebSocket(J.toString(),W?[`${kT}${W}`]:void 0),j=new Map,Y=0;X.addEventListener("open",()=>{Z({send(V){let B=V.requestId??`hub-client-${++Y}`;return new Promise((H,K)=>{j.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=j.get(B.envelope.requestId);if(H)j.delete(B.envelope.requestId),H.resolve(B.envelope)}}),X.addEventListener("close",()=>{for(let V of j.values())V.reject(Error("Hub connection closed"));j.clear()}),X.addEventListener("error",(V)=>{Q(yT(V,$))})})().catch(Q)})}async function tB($){try{return(await iZ($)).close(),!0}catch{return!1}}async function eB($,Z){let Q=await TJ($),J=await iZ(Q);try{return await J.send({version:Z.version??"v1",clientId:Z.clientId??"hub-client",...Z})}finally{J.close()}}function NJ($){return $?JSON.parse(JSON.stringify($)):{}}function rZ($){let Z=$?.session&&typeof $.session==="object"?$.session:void 0;if(!Z)return;let Q=Z.metadata&&typeof Z.metadata==="object"?NJ(Z.metadata):void 0;return{sessionId:typeof Z.sessionId==="string"?Z.sessionId:"",parentSessionId:typeof Q?.parentSessionId==="string"?Q.parentSessionId:void 0,messagesPath:typeof Q?.messagesPath==="string"?Q.messagesPath:void 0,metadata:Q}}function $H($,Z){return $.error?.message??`hub command failed: ${Z}`}function gT($){let Z=NJ($);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 ZH($){let Z=$?.sessionId;return typeof Z==="string"&&Z.trim()?Z.trim():void 0}function vT($){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 mT($){let Z=NJ($.payload);if($.event==="schedule.execution_completed")return{sessionId:$.sessionId?.trim()||ZH(Z)||"",eventType:"schedule.execution.completed",payload:Z};if($.event==="schedule.execution_failed")return{sessionId:$.sessionId?.trim()||ZH(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:gT($.payload)};case"run.completed":return{sessionId:Q,eventType:"runtime.chat.completed",payload:Z};default:return}}class fJ{options;client;metadataApplied=!1;constructor($){this.options=$;this.client=new D1({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=rZ(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(e1(Q))return;throw Q}return rZ(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($H(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($H(W,"session.restore"));let X=rZ(W.payload);if(Q&&!X?.sessionId)throw Error("hub checkpoint restore returned no session id");let j=Array.isArray(W.payload?.messages)?W.payload.messages:void 0,Y=vT(W.payload);return{sessionId:X?.sessionId,startResult:X?.sessionId?{sessionId:X.sessionId,manifestPath:"",messagesPath:X.messagesPath??""}:void 0,...j?{messages:j}:{},checkpoint:Y}}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)=>rZ({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=mT(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 RJ{client;constructor($){this.client=new D1({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 Nc}from"@cline/llms";var LA={};P(LA,{LocalRuntimeHost:()=>m1});import{readdirSync as Fc}from"node:fs";import{homedir as Dc}from"node:os";import{isAbsolute as _c,join as sY,resolve as tY}from"node:path";import{captureSdkError as F2,createSessionId as Lc,isLikelyAuthError as Ac,normalizeUserInput as Oc}from"@cline/shared";import{setHomeDirIfUnset as qc}from"@cline/shared/storage";var SH={};P(SH,{saveProviderOAuthCredentials:()=>C2,resolveProviderApiKeyFromSettings:()=>cJ,loginAndSaveProviderOAuthCredentials:()=>c4,isOAuthProvider:()=>x$,getProviderOAuthCredentialsFromSettings:()=>u4,getProviderAuthStorageId:()=>mJ,getProviderAuthHandler:()=>F0,getPersistedProviderApiKey:()=>n8,formatProviderOAuthApiKey:()=>uJ});import{decodeJwtPayload as NN,getClineEnvironmentConfig as PH}from"@cline/shared";var GH={};P(GH,{startClineDeviceAuth:()=>kJ,refreshClineToken:()=>sZ,loginClineOAuth:()=>y4,getValidClineCredentials:()=>k4,completeClineDeviceAuth:()=>hJ});import{decodeJwtPayload as rT,getClineEnvironmentConfig as CJ}from"@cline/shared";var QH={};P(QH,{setSdkLogger:()=>MJ,sdkDebug:()=>t,hashSecret:()=>w0,getSdkLogger:()=>uT});import{createHash as cT}from"node:crypto";var EJ;function MJ($){EJ=$}function uT(){return EJ}function w0($){if(typeof $!=="string"||$.length===0)return"unset";return cT("sha256").update($).digest("hex").slice(0,8)}function t($){try{EJ?.debug($)}catch{}}C0();var JH={};P(JH,{startLocalOAuthServer:()=>_1});function dT(){let $;return{promise:new Promise((Q)=>{$=Q}),resolve:$}}async function _1($){let Z=await import("node:http"),Q=$.host??"127.0.0.1",J=$.timeoutMs??300000,W=$.successHtml??pT,X=dT(),j=!1,Y=null,V=null,B=null,H=(U)=>{if(j)return;j=!0,X.resolve(U)},K=()=>{if(Y)clearTimeout(Y),Y=null;let U=B;if(B=null,V)V.close(),V.closeAllConnections?.(),V=null;if(U!==null&&$.onClose)Promise.resolve($.onClose({host:Q,port:U})).catch(()=>{})},G=async()=>{return Y=setTimeout(()=>{K(),H(null)},J),X.promise};for(let U of $.ports){let F=Z.createServer((L,O)=>{try{let D=new URL(L.url||"",`http://${Q}:${U}`);if(D.pathname!==$.callbackPath){O.statusCode=404,O.end("Not found");return}let q={url:D,code:D.searchParams.get("code")??void 0,state:D.searchParams.get("state")??void 0,provider:D.searchParams.get("provider")??void 0,error:D.searchParams.get("error")??void 0};if(q.error){O.statusCode=400,O.end(`Authentication failed: ${q.error}`),K(),H(q);return}if(!q.code){O.statusCode=400,O.end("Missing authorization code");return}if($.expectedState&&q.state!==$.expectedState){O.statusCode=400,O.end("State mismatch");return}O.statusCode=200,O.setHeader("Content-Type","text/html; charset=utf-8"),O.end(W),K(),H(q)}catch{O.statusCode=500,O.end("Internal error")}}),_=await new Promise((L)=>{let O=(D)=>{F.off("error",O),L({bound:!1,error:D})};F.once("error",O),F.listen(U,Q,()=>{F.off("error",O),V=F,L({bound:!0})})});if(_.error){if(_.error.code==="EADDRINUSE")continue;throw K(),_.error}if(_.bound){B=U;let L=`http://${Q}:${U}${$.callbackPath}`;if($.onListening)await Promise.resolve($.onListening({host:Q,port:U,callbackUrl:L})).catch(()=>{});return{callbackUrl:L,waitForCallback:G,cancelWait:()=>{K(),H(null)},close:()=>{K(),H(null)}}}}return{callbackUrl:"",waitForCallback:async()=>null,cancelWait:()=>{},close:()=>{}}}var pT=`<!DOCTYPE html>
290
290
  <html lang="en">
package/dist/index.js CHANGED
@@ -462,7 +462,7 @@ ${JSON.stringify(J,null,2)}`}startClaimLeaseHeartbeat($){let Z=Math.max(1000,Mat
462
462
  `)[0]?.trim())}function G$($){if(!$)return;let Z={...$},Q=J2(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 S6($){let Z=G$($.metadata)??{},Q=$.title!==void 0?J2($.title):D3($.prompt);if(Q)Z.title=Q;return Object.keys(Z).length>0?Z:void 0}function _3($){let Z=P6($);if(Z)return{agent:"teammate",sessionId:Z.rootSessionId,taskType:"team"};let Q=s5($);if(Q)return{agent:"subagent",sessionId:Q.rootSessionId,taskType:"subagent_task"};return{agent:"lead",sessionId:$}}function L3($){return{version:1,updated_at:$.updatedAt,agent:$.context.agent,sessionId:$.context.sessionId,...$.context.taskType?{taskType:$.context.taskType}:{},messages:t5($.messages),...$.systemPrompt?{system_prompt:$.systemPrompt}:{}}}function AH($,Z,Q){LE(OE($),{recursive:!0}),AE($,`${JSON.stringify(L3({updatedAt:Z,context:Q,messages:[]}),null,2)}
463
463
  `,"utf8")}function OH($,Z){return d0.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 qH($,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 fE}from"node:fs";import{readFile as RE}from"node:fs/promises";class b6{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 U$($){let Z=$?.trim();if(!Z||!fE(Z))return[];try{let Q=(await RE(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 A3($){return $?{...$}:void 0}async function zH($,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 y6($){if(typeof $!=="string")return;let Z=$.trim();return Z.length>0?Z:void 0}function s0($){let Z=y6($);if(!Z)return;return Z.toLowerCase()==="unknown"?void 0:Z}function $9($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function PE($){if(!$||typeof $!=="object"||Array.isArray($))return;return{...$}}function q3($){let Z=$??200;return Number.isFinite(Z)?Math.max(0,Math.floor(Z)):200}function wE($){if($===0)return 0;return Math.min(Math.max($*2,20),2000)}function SE($){return $.isSubagent!==!0&&!y6($.parentSessionId)}function bE($){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 z3($){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 yE($){let Z=q3($);if(Z===0)return[];let Q=RH(),W=(await EE(Q,{withFileTypes:!0}).catch(()=>[])).filter((j)=>j.isDirectory()).map((j)=>({entry:j,recency:bE(j.name.trim())})).sort((j,Y)=>Y.recency-j.recency||Y.entry.name.localeCompare(j.entry.name));return(await Promise.all(W.map(async({entry:j})=>{let Y=j.name.trim();if(!Y)return;let V=fH(Q,Y,`${Y}.json`),B=await NH(V,"utf8").catch(()=>{return});if(!B)return;let H;try{H=JSON.parse(B)}catch{return}let K=d0.safeParse(H);if(!K.success)return;return z3(K.data)}))).filter((j)=>Boolean(j)).sort((j,Y)=>Y.startedAt.localeCompare(j.startedAt)).slice(0,Z)}async function kE($,Z,Q){let J=q3(Z);if(J===0)return await $.listSessions(0),[];let W=Q.includeSubagents?J:wE(J),X=await $.listSessions(W);return(Q.includeSubagents?X:X.filter(SE)).slice(0,J)}function hE($){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(`
464
464
  `).trim()}function TH($){return $.replace(/\s+/g," ").trim()}function IE($,Z){if($.length<=Z)return $;return`${$.slice(0,Math.max(0,Z-3)).trimEnd()}...`}function xE($){for(let Z of["user","assistant"])for(let Q of $){if(Q.role!==Z)continue;let J=TH(hE(Q.content));if(!J)continue;let W=Z==="user"?TH(ME(J)):J,X=CE(W.split(`
465
- `)[0]??W);return IE(X,50)}return}function gE($){let Z=0;for(let Q of $)Z+=$9(Q.metrics?.cost)??0;return Z}function vE($){let Z,Q;for(let J=$.length-1;J>=0;J-=1){let W=$[J];if(!Z)Z=s0(W.modelInfo?.provider);if(!Q)Q=s0(W.modelInfo?.id);if(Z&&Q)break}return{provider:Z,model:Q}}function mE($){return s0($?.provider)??s0($?.provider&&typeof $.provider==="object"&&!Array.isArray($.provider)?$.provider.id:void 0)}function cE($){return s0($?.model)??s0($?.model&&typeof $.model==="object"&&!Array.isArray($.model)?$.model.id:void 0)}function O3($,Z){let Q=PE($.metadata),J=y6(Z?.title)??y6(Q?.title),W=$9(Z?.totalCost)??$9(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:s0(Z?.provider)??s0($.provider)??mE(Q)??"",model:s0(Z?.model)??s0($.model)??cE(Q)??"",metadata:X}}function uE($){let Z=$.content;if(!Array.isArray(Z))return!1;return Z.some((Q)=>!!Q&&typeof Q==="object"&&Q.type==="tool-call")}function dE($,Z){if($.status!=="running"||$.interactive!==!0)return!1;let Q=Z.at(-1);return Q?.role==="assistant"&&!uE(Q)}async function pE($,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 dE(Q,J)?{...Q,status:"idle"}:Q}))}async function lE($,Z){return await Promise.all(Z.map(async(Q)=>{let J=O3(Q),W=Boolean(y6(J.metadata?.title)),X=Boolean(s0(J.provider)),j=Boolean(s0(J.model)),Y=$9(J.metadata?.totalCost),V=Y!==void 0&&Y>0;if(W&&X&&j&&V)return J;let B=await $.readSessionMessages(Q.sessionId);if(B.length===0)return J;let H=vE(B),K=gE(B);return O3(Q,{title:W?void 0:xE(B),provider:X?void 0:H.provider,model:j?void 0:H.model,totalCost:V||K<=0?void 0:K})}))}async function T3($,Z={}){let Q=q3(Z.limit),J=Z.includeSubagents===!0,W=await kE($,Q,{includeSubagents:J}),X=Z.includeManifestFallback===!0&&W.length<Q?await yE(Math.min(Math.max(Q*2,100),500)):[],j=new Map;for(let B of[...W,...X]){if(j.has(B.sessionId))continue;j.set(B.sessionId,B)}let Y=X.length===0?W:Array.from(j.values()).sort((B,H)=>H.startedAt.localeCompare(B.startedAt)).slice(0,Q),V=await pE($,Y);if(Z.hydrate===!1)return V.map((B)=>O3(B));return await lE($,V)}async function iE($){let Z=$.trim();if(!Z)return;let Q=fH(RH(),Z,`${Z}.json`),J=await NH(Q,"utf8").catch(()=>{return});if(!J)return;try{let W=d0.safeParse(JSON.parse(J));return W.success?W.data.messages_path:void 0}catch{return}}async function rE($,Z={}){let Q=new Map;return await T3({listSessions:async(W)=>{let X=await $.listSessions(W);Q.clear();for(let j of X)Q.set(j.sessionId,j);return X.map(w6)},readSessionMessages:async(W)=>{let X=Q.get(W)?.messagesPath??await iE(W);return await U$(X)}},Z)}import{captureSdkError as MU}from"@cline/shared";import{createSessionId as nM,isHubProtocolCompatible as aM,resolveClineBuildEnv as oM,resolveHubCommandTimeoutMs as sM}from"@cline/shared";import{spawn as fM}from"node:child_process";import{closeSync as RM,mkdirSync as EM,openSync as MM}from"node:fs";import{basename as CM,dirname as PM,join as wM}from"node:path";import{fileURLToPath as SM}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as bM,isHubDaemonProcess as vH,isHubProtocolCompatible as yM,resolveClineBuildEnv as mH,withResolvedClineBuildEnv as kM}from"@cline/shared";import{createHash as nE,randomBytes as aE}from"node:crypto";import{existsSync as oE}from"node:fs";import{chmod as sE,mkdir as N3,readFile as PH,rm as f3,writeFile as wH}from"node:fs/promises";import{dirname as SH,join as R3}from"node:path";import{resolveClineDataDir as h6,resolveClineDir as gr}from"@cline/shared/storage";var Y8="0.0.68-nightly.1785640549";var k6={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:Y8,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 tE="CLINE_HUB_DISCOVERY_PATH",eE="CLINE_HUB_BUILD_ID",MH=30000,$M=15000,ZM=100;function QM($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function JM($){return nE("sha256").update($).digest("hex").slice(0,12)}function WM($){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 bH(){return aE(32).toString("hex")}function XM($){return new Promise((Z)=>setTimeout(Z,$))}function jM($){return`${$}.lock`}async function YM($){try{let Z=JSON.parse(await PH(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 CH($){await f3($,{recursive:!0,force:!0}).catch(()=>{return})}function yH(){return process.env[eE]?.trim()||String(k6.version)}function W2($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${JM($)}`,Q=process.env[tE]?.trim()||R3(h6(),"locks","hub","owners",`${QM(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function mr($=`hub-${Date.now().toString(36)}`){return W2($)}async function R0($){try{let Z=JSON.parse(await PH($,"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 kH($,Z){await N3(SH($),{recursive:!0}),await f3($,{force:!0}).catch(()=>{return}),await wH($,`${JSON.stringify(Z,null,2)}
465
+ `)[0]??W);return IE(X,50)}return}function gE($){let Z=0;for(let Q of $)Z+=$9(Q.metrics?.cost)??0;return Z}function vE($){let Z,Q;for(let J=$.length-1;J>=0;J-=1){let W=$[J];if(!Z)Z=s0(W.modelInfo?.provider);if(!Q)Q=s0(W.modelInfo?.id);if(Z&&Q)break}return{provider:Z,model:Q}}function mE($){return s0($?.provider)??s0($?.provider&&typeof $.provider==="object"&&!Array.isArray($.provider)?$.provider.id:void 0)}function cE($){return s0($?.model)??s0($?.model&&typeof $.model==="object"&&!Array.isArray($.model)?$.model.id:void 0)}function O3($,Z){let Q=PE($.metadata),J=y6(Z?.title)??y6(Q?.title),W=$9(Z?.totalCost)??$9(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:s0(Z?.provider)??s0($.provider)??mE(Q)??"",model:s0(Z?.model)??s0($.model)??cE(Q)??"",metadata:X}}function uE($){let Z=$.content;if(!Array.isArray(Z))return!1;return Z.some((Q)=>!!Q&&typeof Q==="object"&&Q.type==="tool-call")}function dE($,Z){if($.status!=="running"||$.interactive!==!0)return!1;let Q=Z.at(-1);return Q?.role==="assistant"&&!uE(Q)}async function pE($,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 dE(Q,J)?{...Q,status:"idle"}:Q}))}async function lE($,Z){return await Promise.all(Z.map(async(Q)=>{let J=O3(Q),W=Boolean(y6(J.metadata?.title)),X=Boolean(s0(J.provider)),j=Boolean(s0(J.model)),Y=$9(J.metadata?.totalCost),V=Y!==void 0&&Y>0;if(W&&X&&j&&V)return J;let B=await $.readSessionMessages(Q.sessionId);if(B.length===0)return J;let H=vE(B),K=gE(B);return O3(Q,{title:W?void 0:xE(B),provider:X?void 0:H.provider,model:j?void 0:H.model,totalCost:V||K<=0?void 0:K})}))}async function T3($,Z={}){let Q=q3(Z.limit),J=Z.includeSubagents===!0,W=await kE($,Q,{includeSubagents:J}),X=Z.includeManifestFallback===!0&&W.length<Q?await yE(Math.min(Math.max(Q*2,100),500)):[],j=new Map;for(let B of[...W,...X]){if(j.has(B.sessionId))continue;j.set(B.sessionId,B)}let Y=X.length===0?W:Array.from(j.values()).sort((B,H)=>H.startedAt.localeCompare(B.startedAt)).slice(0,Q),V=await pE($,Y);if(Z.hydrate===!1)return V.map((B)=>O3(B));return await lE($,V)}async function iE($){let Z=$.trim();if(!Z)return;let Q=fH(RH(),Z,`${Z}.json`),J=await NH(Q,"utf8").catch(()=>{return});if(!J)return;try{let W=d0.safeParse(JSON.parse(J));return W.success?W.data.messages_path:void 0}catch{return}}async function rE($,Z={}){let Q=new Map;return await T3({listSessions:async(W)=>{let X=await $.listSessions(W);Q.clear();for(let j of X)Q.set(j.sessionId,j);return X.map(w6)},readSessionMessages:async(W)=>{let X=Q.get(W)?.messagesPath??await iE(W);return await U$(X)}},Z)}import{captureSdkError as MU}from"@cline/shared";import{createSessionId as nM,isHubProtocolCompatible as aM,resolveClineBuildEnv as oM,resolveHubCommandTimeoutMs as sM}from"@cline/shared";import{spawn as fM}from"node:child_process";import{closeSync as RM,mkdirSync as EM,openSync as MM}from"node:fs";import{basename as CM,dirname as PM,join as wM}from"node:path";import{fileURLToPath as SM}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as bM,isHubDaemonProcess as vH,isHubProtocolCompatible as yM,resolveClineBuildEnv as mH,withResolvedClineBuildEnv as kM}from"@cline/shared";import{createHash as nE,randomBytes as aE}from"node:crypto";import{existsSync as oE}from"node:fs";import{chmod as sE,mkdir as N3,readFile as PH,rm as f3,writeFile as wH}from"node:fs/promises";import{dirname as SH,join as R3}from"node:path";import{resolveClineDataDir as h6,resolveClineDir as gr}from"@cline/shared/storage";var Y8="0.0.69";var k6={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:Y8,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 tE="CLINE_HUB_DISCOVERY_PATH",eE="CLINE_HUB_BUILD_ID",MH=30000,$M=15000,ZM=100;function QM($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function JM($){return nE("sha256").update($).digest("hex").slice(0,12)}function WM($){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 bH(){return aE(32).toString("hex")}function XM($){return new Promise((Z)=>setTimeout(Z,$))}function jM($){return`${$}.lock`}async function YM($){try{let Z=JSON.parse(await PH(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 CH($){await f3($,{recursive:!0,force:!0}).catch(()=>{return})}function yH(){return process.env[eE]?.trim()||String(k6.version)}function W2($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${JM($)}`,Q=process.env[tE]?.trim()||R3(h6(),"locks","hub","owners",`${QM(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function mr($=`hub-${Date.now().toString(36)}`){return W2($)}async function R0($){try{let Z=JSON.parse(await PH($,"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 kH($,Z){await N3(SH($),{recursive:!0}),await f3($,{force:!0}).catch(()=>{return}),await wH($,`${JSON.stringify(Z,null,2)}
466
466
  `,{encoding:"utf8",mode:384}),await sE($,384)}async function V1($){await f3($,{force:!0}).catch(()=>{return})}async function hH($,Z){let Q=jM($);await N3(SH(Q),{recursive:!0});let J=Date.now()+$M;while(!0)try{await N3(Q,{recursive:!1}),await wH(R3(Q,"owner.json"),`${JSON.stringify({pid:process.pid,acquiredAt:new Date().toISOString()},null,2)}
467
467
  `,"utf8");try{return await Z()}finally{await CH(Q)}}catch(W){if((W instanceof Error&&"code"in W?String(W.code):"")!=="EEXIST")throw W;let j=await YM(Q),Y=j?Date.now()-Date.parse(j.acquiredAt):MH+1;if(!j||!WM(j.pid)||Y>MH){await CH(Q);continue}if(Date.now()>=J)throw Error(`Timed out waiting for hub startup lock ${Q}`);await XM(ZM)}}async function X2($,Z){try{let Q=await fetch(Z?.authToken?VM($):IH($),{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 b1($,Z,Q="/hub"){return new URL(`ws://${$}:${Z}${Q}`).toString()}function IH($){let Z=new URL($);return Z.protocol=Z.protocol==="wss:"?"https:":"http:",Z.pathname="/health",Z.search="",Z.toString()}function VM($){let Z=new URL(IH($));return Z.pathname="/status",Z.toString()}function cr($){return oE($)}import{CLINE_HUB_DEV_PORT as BM,CLINE_HUB_PORT as HM,resolveClineBuildEnv as KM}from"@cline/shared";var GM="CLINE_HUB_HOST",UM="CLINE_HUB_PORT",FM="CLINE_HUB_PATHNAME",DM="127.0.0.1",_M=HM,LM="/hub";function xH($){return KM($)==="development"?BM:_M}function AM($={}){return($.env??process.env)[GM]?.trim()||DM}function Z9($={}){let Q=($.env??process.env)[UM]?.trim();if(!Q)return xH($);let J=Number.parseInt(Q,10);if(!Number.isInteger(J)||J<1||J>65535)return xH($);return J}function OM($={}){return($.env??process.env)[FM]?.trim()||LM}function F$($={},Z={}){return{host:$.host??AM(Z),port:$.port??Z9(Z),pathname:$.pathname??OM(Z)}}import{join as qM}from"node:path";var zM="shared:cline",TM="CLINE_HUB_DISCOVERY_PATH",NM="hub-production";function nr($){let Z=B$($.trim());return W2(`workspace:${Z||$.trim()}`)}function y1($=zM){return W2($)}function D$(){return{ownerId:NM,discoveryPath:process.env[TM]?.trim()||qM(h6(),"locks","hub","production.json")}}var hM=8000,IM=200,xM=3000,gM=100,vM=[100,250,500,1000,2000],mM="--cline-hub-daemon";function cM($){return[...$.host?["--host",$.host]:[],...typeof $.port==="number"?["--port",String($.port)]:[],...$.pathname?["--pathname",$.pathname]:[]]}function uM(){try{let $=wM(h6(),"logs","hub-daemon.log");return EM(PM($),{recursive:!0}),{fd:MM($,"a"),logPath:$}}catch{return}}function cH(){return mH()==="production"?D$():y1()}function j2($){return yM($).compatible}function gH($,Z,Q){if(!Z||Z.url!==Q)return $;return{...$,authToken:$.authToken??Z.authToken,pid:$.pid??Z.pid}}async function Y2($,Z){try{return await X2($,{authToken:Z})}catch{return}}async function dM($,Z){let Q=Date.now()+Z;while(Date.now()<Q){if(!(await Y2($))?.url)return!0;await new Promise((W)=>setTimeout(W,gM))}return!1}async function Q9($,Z){if(await E3($.url,$.authToken).catch(()=>!1),$.pid)try{process.kill($.pid,"SIGTERM")}catch{}let Q=await dM($.url,xM);return await V1(Z).catch(()=>{return}),Q}async function I6($,Z){if(j2($))return!0;return Q9($,Z)}async function uH($){if(mH()!=="production")return;let Z=y1();if(Z.discoveryPath===$.discoveryPath)return;let Q=await R0(Z.discoveryPath);if(Q?.url)await Q9(Q,Z.discoveryPath);else await V1(Z.discoveryPath).catch(()=>{return})}function pM(){let $=import.meta.url.endsWith(".ts")?"ts":"js";return SM(new URL(`./entry.${$}`,import.meta.url))}function lM($,Z){let Q=pM(),J=process.execPath?.trim();if(!J)throw Error("unable to resolve runtime executable for hub daemon");let W=CM(J).toLowerCase().includes("bun"),X=Q.startsWith("/$bunfs/"),j=W&&Q.toLowerCase().endsWith(".ts"),Y=X?[mM]:[...j?["--conditions=development"]:[],Q];return{launcher:J,args:[...Y,"--cwd",$,...cM(Z)],cwd:$,env:{...kM(process.env),CLINE_NO_INTERACTIVE:"1",[bM]:"1"}}}function iM($){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 rM($,Z={}){if(vH())return;let Q=lM($,Z),J=uM();try{fM(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)RM(J.fd)}}async function J9($,Z={}){for(let Q=0;;Q++)try{rM($,Z);return}catch(J){let W=vM[Q];if(!iM(J)||W===void 0)throw J;await new Promise((X)=>setTimeout(X,W))}}function dH($,Z={}){if(vH())return;let Q=cH(),J=F$(Z),W=b1(J.host,J.port,J.pathname),X=Z.allowPortFallback===!0&&J.port!==0;uH(Q).catch(()=>{return}).then(()=>R0(Q.discoveryPath)).then(async(j)=>{let Y=!1;if(j?.url)if(!j.authToken){if(Y=!0,!await Q9(j,Q.discoveryPath)&&!X)return}else{let H=await Y2(j.url,j.authToken);if(H?.url&&j2(H)&&await _$(H.url,{authToken:j.authToken}))return;if(H?.url)await I6({...H,authToken:j.authToken},Q.discoveryPath);else await V1(Q.discoveryPath).catch(()=>{return})}let V=await Y2(W);if(V?.url){if(j2(V)){if(!X||!Y)return}else if(!await I6({...V,authToken:void 0},Q.discoveryPath)&&!X)return}let B=X?{...J,port:0}:J;await J9($,B)}).catch(()=>{})}async function Xn($,Z={}){let Q=cH(),J=Z.host!==void 0||Z.port!==void 0||Z.pathname!==void 0||!!process.env.CLINE_HUB_PORT?.trim(),W=F$(Z),X=b1(W.host,W.port,W.pathname),j=(U)=>{if(!J)V8(U.url,U.authToken);return U};await uH(Q).catch(()=>{return});let Y=await R0(Q.discoveryPath),V=!1;if(Y?.url){let U=Y.authToken;if(!U)V=!0,await Q9(Y,Q.discoveryPath);else{let F=await Y2(Y.url,U);if(F?.url&&j2(F)&&await _$(F.url,{authToken:U}))return j({url:F.url,authToken:U});if(F?.url)await I6({...F,authToken:U},Q.discoveryPath);else await V1(Q.discoveryPath).catch(()=>{return})}}let B=await Y2(X);if(B?.url){let U=gH(B,Y,X);if(j2(B))throw Error(`A compatible Cline Hub is already running at ${X}, but its discovery record is missing or unreadable. 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 I6(U,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 J9($,K);let G=Date.now()+hM;while(Date.now()<G){let U=await R0(Q.discoveryPath);if(U?.url&&U.authToken){let _=await Y2(U.url,U.authToken);if(_?.url&&j2(_)&&await _$(_.url,{authToken:U.authToken}))return j({url:_.url,authToken:U.authToken})}let F=await Y2(X);if(F?.url&&!j2(F)){let _=gH(F,U,X);if(!await I6(_,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((_)=>setTimeout(_,IM))}throw Error("Timed out waiting for detached hub startup.")}function X9(){return oM()==="production"?D$():y1()}function tM(){let $=globalThis.WebSocket;if(!$)throw Error("Global WebSocket is not available in this runtime. Node 22+ is required for hub mode.");return $}function nH($){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 nH($.data);return String($)}function eM($){if(typeof $==="string")return $;if($ instanceof Uint8Array)return Buffer.from($).toString("utf8");if($ instanceof ArrayBuffer)return Buffer.from($).toString("utf8");return""}function pH($){let Z=$,Q=eM(Z.reason);return new t0("hub_connection_closed",Z.code||Q?`Hub connection closed (code=${Z.code??0}${Q?`, reason=${Q}`:""})`:M3,{closeCode:Z.code,closeReason:Q||void 0})}function $C($,Z){if($ instanceof t0)return $;if($ instanceof Error)return new t0("hub_connect_failed",$.message);if($&&typeof $==="object"&&"error"in $&&$.error instanceof Error)return new t0("hub_connect_failed",$.error.message);let Q=$&&typeof $==="object"&&"message"in $&&typeof $.message==="string"?$.message.trim():"";if(Q)return new t0("hub_connect_failed",Q);let J=$&&typeof $==="object"&&"type"in $&&typeof $.type==="string"?$.type.trim():"";return new t0("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 ZC=8000,QC=200,lH="*",iH=8000,JC="cline-hub-auth.",aH=new Map,oH=new Set,WC=3000,XC=3000,jC=100,M3="Hub connection closed",YC=250,VC=5000,rH=0.5;class t0 extends Error{code;details;constructor($,Z,Q){super(Z);this.code=$;this.details=Q;this.name="HubTransportError"}}function BC($){return $ instanceof t0}class W9 extends Error{command;code;constructor($,Z,Q){super(Q);this.command=$;this.code=Z;this.name="HubCommandError"}}function sH($,Z){return $ instanceof W9&&$.code==="hub_command_timeout"&&(Z===void 0||$.command===Z)}function tH($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=w3($.toString());return Q?aH.get(Q):void 0}function HC($){try{let Q=new URL($).hostname.toLowerCase().replace(/^\[|\]$/g,"");return Q==="localhost"||Q==="127.0.0.1"||Q==="::1"}catch{return!1}}function w3($){if(!HC($))return;let Z=new URL(B8($));return Z.search="",Z.hash="",Z.toString()}function C3($){let Z=w3($);return!!Z&&oH.has(Z)}function V8($,Z){let Q=w3($);if(Q){if(oH.add(Q),Z?.trim())aH.set(Q,Z)}return $}class k1{options;socket;connectPromise;clientId;currentUrl;recoveryPromise;pendingReplies=new Map;listeners=new Set;subscriptionCounts=new Map;reconnectTimer;reconnectAttempt=0;closedByClient=!1;lastCloseError=new t0("hub_connection_closed",M3);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()||tH($);$.hash="";let J=new(tM())($.toString(),Z?[`${JC}${Z}`]:void 0);this.socket=J;let W=!1;this.connectPromise=new Promise((X,j)=>{let Y=!1,V=setTimeout(()=>{if(Y)return;Y=!0,W=!0,this.lastCloseError=new t0("hub_connect_timeout",`Timed out connecting to hub after ${iH}ms`),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0;try{J.close()}catch{}j(this.lastCloseError)},iH);J.addEventListener("open",()=>{if(Y)return;Y=!0,clearTimeout(V),X()}),J.addEventListener("error",(B)=>{if(Y)return;Y=!0,clearTimeout(V),this.lastCloseError=$C(B,$),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0,j(this.lastCloseError)}),J.addEventListener("close",(B)=>{if(Y)return;if(Y=!0,clearTimeout(V),!W)this.lastCloseError=pH(B),this.sawSocketClose=!0;this.connectPromise=void 0,this.socket=void 0,j(this.lastCloseError)})}),J.addEventListener("message",(X)=>{this.handleFrame(JSON.parse(nH(X)))}),J.addEventListener("close",(X)=>{if(this.socket!==J)return;if(!W)this.lastCloseError=pH(X),this.sawSocketClose=!0;this.registered=!1;for(let j of this.pendingReplies.values())j.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(j){if(!X||W>=1||!await this.recoverLocalHubTransport(j))throw j;W+=1}}async commandOnce($,Z,Q,J){await this.connect();let W=nM("hubreq_"),X=sM($,J?.timeoutMs),j=new Promise((V,B)=>{let H=X===null?void 0:setTimeout(()=>{if(!this.pendingReplies.delete(W))return;B(new W9($,"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 Y=await j;if(!Y.ok){if(Y.error?.code===A6){let V=Q??(typeof Z?.sessionId==="string"?Z.sessionId:void 0);throw new t$(V,Y.error.message)}throw new W9($,Y.error?.code,Y.error?.message??`Hub command ${$} failed`)}return Y}async recoverLocalHubTransport($){if(!C3(this.currentUrl)||!BC($))return!1;if(this.recoveryPromise)return await this.recoveryPromise;return this.recoveryPromise=(async()=>{let Z=await x6({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(YC*2**this.reconnectAttempt,VC),Z=Math.round($*(1-rH)+Math.random()*$*rH);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(!C3(this.currentUrl)){this.reconnectAttempt+=1,this.scheduleReconnect();return}try{let $=await x6({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 t0("hub_connection_closed",M3),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 t0("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 $??lH}subscriptionSessionIdFromKey($){return $===lH?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 B8($){let Z=new URL($);if(Z.protocol==="http:")Z.protocol="ws:";else if(Z.protocol==="https:")Z.protocol="wss:";return Z.toString()}async function _$($,Z){let Q=new k1({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 P3($,Z){let Q=B8($),J=await X2(Q,{authToken:Z?.authToken});if(!J)return{status:"unreachable",url:Q};if(!aM(J).compatible)return{status:"protocol_mismatch",url:Q};if(Z?.verifyConnection===!0&&!await _$(Q,{workspaceRoot:Z.workspaceRoot,cwd:Z.cwd,authToken:Z.authToken}))return{status:"unreachable",url:Q};return{status:"compatible",url:Q}}async function KC($){let Z=Date.now()+ZC;while(Date.now()<Z){let Q=await R0($.discoveryPath);if(Q?.url){let J=await P3(Q.url,{verifyConnection:!0,authToken:Q.authToken});if(J.status==="compatible")return V8(J.url,Q.authToken)}await new Promise((J)=>setTimeout(J,QC))}return}async function GC($){let Z=Date.now()+XC;while(Date.now()<Z){if(!(await X2($).catch(()=>{return}))?.url)return!0;await new Promise((J)=>setTimeout(J,jC))}return!1}function UC($,Z){try{return B8($)===B8(Z)}catch{return!1}}function FC($){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 DC($,Z,Q){let J=new k1({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:WC});return!FC(W.payload)}catch{return!1}finally{await J.dispose().catch(()=>{return})}}async function S3($={}){if($.endpoint?.trim()){let W=await P3($.endpoint);return W.status==="compatible"?W.url:void 0}let Z=X9(),Q=await R0(Z.discoveryPath);if(!Q?.url)return;let J=await P3(Q.url,{authToken:Q.authToken});if(J.status==="compatible")return V8(J.url,Q.authToken);if(J.status==="protocol_mismatch")await V1(Z.discoveryPath).catch(()=>{return});return}async function x6($={}){let Z=await S3($);if(Z&&await _$(Z,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return Z;if($.endpoint?.trim())return;let Q=X9();return await J9($.workspaceRoot??process.cwd()),await KC(Q)}async function E3($,Z){let Q=new URL($),J=Z?.trim()||tH(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 _C($=X9()){let Z=await R0($.discoveryPath);if(!Z?.url)return!1;try{if(await E3(Z.url,Z.authToken))return!0}catch{}return!1}async function eH($){if(!C3($.url))return;let Z=X9(),Q=await R0(Z.discoveryPath);if(!Q?.url||!UC(Q.url,$.url))return;if(!await DC(Q.url,Q.authToken,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return;if(!await _C())return;if(!await GC(Q.url))return;return await V1(Z.discoveryPath).catch(()=>{return}),await x6({workspaceRoot:$.workspaceRoot,cwd:$.cwd})}import{resolveProviderRequestHeaders as fC}from"@cline/llms";import{captureSdkError as k3,createSessionId as XK,HUB_CHECKPOINT_CAPABILITY as RC,HUB_COMPACTION_CAPABILITY as EC,HUB_CUSTOM_TOOL_CAPABILITY_PREFIX as MC,HUB_HOOK_CAPABILITY_PREFIX as CC,HUB_MISTAKE_LIMIT_CAPABILITY as PC,HUB_TOOL_EXECUTOR_CAPABILITY_PREFIX as wC,HUB_USER_INSTRUCTIONS_SNAPSHOT_CAPABILITY as SC,isHubToolExecutorName as bC}from"@cline/shared";import{createHash as LC}from"node:crypto";import{formatDisplayUserInput as $K}from"@cline/shared";import{z as _1}from"zod";function AC($){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 OC=_1.custom(AC),j9=_1.object({version:_1.literal(1),updated_at:_1.string().datetime(),conversation_id:_1.string().min(1).optional(),source_message_count:_1.number().int().nonnegative(),source_prefix_hash:_1.string().min(1).optional(),source_last_message_key:_1.string().min(1).optional(),messages:_1.array(OC),system_prompt:_1.string().optional()});function b3($){return JSON.parse(JSON.stringify($))}function ZK($){if($.role!=="user")return $;if(typeof $.content==="string")return{...$,content:$K($.content)};return{...$,content:$.content.map((Z)=>Z.type==="text"?{...Z,text:$K(Z.text)}:Z)}}function QK($){if($.includes(":"))throw TypeError("Message role cannot contain ':' in compaction boundary keys")}function qC($){let Z=ZK($);return QK(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 JK($){if(!$)return"";let Z=ZK($);if(typeof Z.id==="string"&&Z.id.trim())return`id:${Z.id.trim()}`;if(QK(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 WK($,Z=$.length){let Q=LC("sha256");Q.update(`cline-session-compaction-source-v2
468
468
  `),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.68-nightly.1785640549",
4
+ "version": "0.0.69",
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.68-nightly.1785640549",
53
- "@cline/shared": "0.0.68-nightly.1785640549",
54
- "@cline/llms": "0.0.68-nightly.1785640549",
52
+ "@cline/agents": "0.0.69",
53
+ "@cline/shared": "0.0.69",
54
+ "@cline/llms": "0.0.69",
55
55
  "@modelcontextprotocol/sdk": "^1.29.0",
56
56
  "@opentelemetry/api": "^1.9.0",
57
57
  "@opentelemetry/api-logs": "^0.214.0",