@cline/core 0.0.59-nightly.1783567022 → 0.0.59
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.
- package/dist/hub/daemon/entry.js +1 -1
- package/dist/hub/index.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +4 -4
package/dist/hub/daemon/entry.js
CHANGED
|
@@ -199,7 +199,7 @@ Searched ${D} files.`;let L=[`Found ${A.length} result${A.length===1?"":"s"} for
|
|
|
199
199
|
${J}`;return Q||J}function sq($,Z){let Q=Z?.["*"]??{},J=Z?.[$]??{};return{...Q,...J}.enabled!==!1}function tq($,Z){return $.filter((Q)=>sq(Q.name,Z))}function eq($,Z){return c1(tq($,Z))}function $O($){let Z=$.filter((Q)=>Q!==void 0);if(Z.length===0)return{};return{beforeRun:async(Q)=>{for(let J of Z){let W=await J.beforeRun?.(Q);if(W?.stop)return W}return},afterRun:async(Q)=>{for(let J of Z)await J.afterRun?.(Q)},beforeModel:async(Q)=>{let J=Q.request,W;for(let X of Z){let Y=await X.beforeModel?.({...Q,request:J});if(!Y)continue;if(Y.stop)return Y;W={...W,...Y,options:dB(W?.options,Y.options)},J={...J,...Y.messages?{messages:Y.messages}:{},...Y.tools?{tools:Y.tools}:{},...Y.options?{options:dB(J.options,Y.options)}:{}}}return W},afterModel:async(Q)=>{for(let J of Z){let W=await J.afterModel?.(Q);if(W?.stop)return W}return},beforeTool:async(Q)=>{let J=Q.input,W;for(let X of Z){let Y=await X.beforeTool?.({...Q,input:J});if(!Y)continue;if(Y.stop||Y.skip)return Y;if(W={...W,...Y},Object.hasOwn(Y,"input"))J=Y.input}return W},afterTool:async(Q)=>{let J=Q.result,W;for(let X of Z){let Y=await X.afterTool?.({...Q,result:J});if(!Y)continue;if(Y.stop)return Y;if(W={...W,...Y},Y.result)J=Y.result}return W},onEvent:async(Q)=>{for(let J of Z)await J.onEvent?.(Q)}}}class T${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 QJ;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??rq,this.conversation=new t3($.initialMessages),this.messageBuilder=new a3(gB()),this.contributionRegistry=iq({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 ZJ({maxConsecutiveMistakes:Q,onLimitReached:$.onConsecutiveMistakeLimitReached,emit:(X)=>this.emitLegacyEvent(X),log:(X,Y,j)=>ZO(this.logger,X,Y,j),agentId:this.agentId,getConversationId:()=>this.conversation.getConversationId(),getActiveRunId:()=>this.activeRunId??"",appendRecoveryNotice:(X,Y)=>{this.conversation.appendMessage({role:"user",content:[{type:"text",text:X}]})}});let J=$.execution?.loopDetection;this.loopDetectionDisabled=J===!1;let W=J===!1||J===void 0?void 0:J;this.loopTracker=new $J(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=R8($),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 aq(Z);if(Q)$.push(Q)}return oq(this.config.systemPrompt,$)}executeRun($){let Z;return Z=this.executeRunInternal($).finally(()=>{if(this.activeRunPromise===Z)this.activeRunPromise=null}),this.activeRunPromise=Z,Z}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 U=await JO(Q,$.userImages,$.userFiles,this.config.userFileContentLoader);this.conversation.appendMessage({role:"user",content:U})}let J=await this.composeSystemPrompt(),W=wB(this.config,this.logger,this.telemetry),X=new Map;for(let U of this.contributionRegistry.getRegisteredTools())X.set(U.name,U);let Y=eq([...X.values()],this.config.toolPolicies),j=new Map;for(let U of Y)j.set(U.name,U);for(let U of this.config.tools)j.set(U.name,U);let V=this.conversation.getConversationId(),B=lB(this.config),H=Array.from(j.values()),G=TZ(this.conversation.getMessages()),K=vB({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,[kV]:this.telemetry},hooks:this.createRuntimeHooks(),prepareTurn:this.createRuntimePrepareTurn(B,H),initialMessages:G,systemPrompt:J}),F=this.createAgentRuntimeImpl(K);if(this.activeRuntime=F,this.abortRequested)F.abort(this.abortReason);let A=F.subscribe((U)=>{this.handleRuntimeEvent(U)}),D,f;try{if($.isContinue)D=await F.continue(void 0);else D=await F.run("")}catch(U){f=U instanceof Error?U:Error(String(U))}finally{A();try{await this.activeTrackerWork}catch(U){this.logger?.error?.("SessionRuntime tracker work failed during drain",{agentId:this.agentId,error:U})}this.activeRuntime=null,this.running=!1,this.abortRequested=!1,this.abortReason=void 0}if(D&&D.messages.length>0){let U=O8(D.messages);this.conversation.replaceMessages(U)}let L=new Date;try{return this.buildLegacyResult({runResult:D,thrownError:f,startedAt:Z,endedAt:L})}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 $=$O([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),Y=await Q({agentId:J.agentId,conversationId:J.conversationId??this.conversation.getConversationId(),parentAgentId:J.parentAgentId??null,iteration:J.iteration,messages:W,apiMessages:X,abortSignal:J.signal??new AbortController().signal,systemPrompt:J.systemPrompt??"",tools:Z,model:{id:this.config.modelId,provider:this.config.providerId,info:$},emitStatusNotice:J.emitStatusNotice});if(!Y)return;return{...Y.messages?{messages:TZ(Y.messages)}:{},...Y.systemPrompt!==void 0?{systemPrompt:Y.systemPrompt}:{}}}}async prepareMessagesForModelRequest($){let Z=await this.prepareProviderMessagesForApi(qZ($));return TZ(Z)}async prepareProviderMessagesForApi($){let Z=$,Q=this.contributionRegistry.getRegistrySnapshot().messageBuilder;for(let J of Q)Z=await J.build(Z);return this.messageBuilder.buildForApi(Z)}handleRuntimeEvent($){switch($.type){case"message-added":case"assistant-message":{this.syncConversationFromRuntimeMessage($.snapshot.messages,[$.message]);break}case"turn-started":{this.currentTurnSuccessfulTools=0,this.currentTurnFailedTools=0,this.currentTurnFailureDetails=[];break}case"tool-started":{this.toolStartedAt.set($.toolCall.toolCallId,new Date),this.toolInputs.set($.toolCall.toolCallId,$.toolCall.input),this.inspectLoopForToolCall($.toolCall.toolName,$.toolCall.input,$.iteration);break}case"tool-finished":{let Z=this.toolStartedAt.get($.toolCall.toolCallId),Q=new Date,J=this.toolInputs.get($.toolCall.toolCallId);this.toolStartedAt.delete($.toolCall.toolCallId),this.toolInputs.delete($.toolCall.toolCallId);let W=$.message.content.find((V)=>V.type==="tool-result"),X=W?.type==="tool-result"&&W.isError===!0,Y=X?nq(W?.type==="tool-result"?W.output:void 0):void 0,j={id:$.toolCall.toolCallId,name:$.toolCall.toolName,input:J,output:W?.type==="tool-result"?W.output:void 0,error:Y,durationMs:Z===void 0?0:Q.getTime()-Z.getTime(),startedAt:Z??Q,endedAt:Q};if(this.currentRunToolCalls.push(j),X){if(this.currentTurnFailedTools+=1,Y)this.currentTurnFailureDetails.push(`[${$.toolCall.toolName}] ${Y}`)}else this.currentTurnSuccessfulTools+=1;break}case"turn-finished":{let Z=this.currentTurnFailedTools,Q=this.currentTurnSuccessfulTools;if(Z>0&&Q===0){let J=this.currentTurnFailureDetails.join("; ");this.enqueueMistakeRecord({iteration:$.iteration,reason:"tool_execution_failed",details:`${Z} tool call(s) failed${J?`: ${J}`:""}`})}else if(Q>0)this.mistakeTracker.reset();break}case"usage-updated":{this.currentRunUsage={inputTokens:$.usage.inputTokens,outputTokens:$.usage.outputTokens,cacheReadTokens:$.usage.cacheReadTokens>0?$.usage.cacheReadTokens:void 0,cacheWriteTokens:$.usage.cacheWriteTokens>0?$.usage.cacheWriteTokens:void 0,totalCost:$.usage.totalCost};break}default:break}for(let Z of this.eventAdapter.translate($))this.emitLegacyEvent(Z)}syncConversationFromRuntimeMessage($,Z){if($.length>0){this.conversation.replaceMessages(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(),Y=Q?"error":QO(Z),j=(Z?.status==="failed"?Z.error?.message:void 0)||Z?.outputText||"",V=Z?{inputTokens:Z.usage.inputTokens,outputTokens:Z.usage.outputTokens,cacheReadTokens:Z.usage.cacheReadTokens>0?Z.usage.cacheReadTokens:void 0,cacheWriteTokens:Z.usage.cacheWriteTokens>0?Z.usage.cacheWriteTokens:void 0,totalCost:Z.usage.totalCost}:this.currentRunUsage,B=Z?O8(Z.messages):this.conversation.getMessages(),H=lB(this.config);if(Q)throw Q;return{text:j,usage:V,messages:B,toolCalls:this.currentRunToolCalls,iterations:Z?.iterations??0,finishReason:Y,model:{id:this.config.modelId,provider:this.config.providerId,info:H},startedAt:J,endedAt:W,durationMs:X}}}function ZO($,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 QO($){if(!$)return"error";switch($.status){case"completed":return"completed";case"aborted":return"aborted";case"failed":return"error"}}async function JO($,Z,Q,J){let{buildInitialUserContent:W}=await Promise.resolve().then(() => uB);return W($,Z,Q,J)}function lB($){if($.knownModels?.[$.modelId])return $.knownModels[$.modelId];let Z=r3($);if(Z?.[$.modelId])return Z[$.modelId];return}import{buildClineSystemPrompt as pB}from"@cline/shared";function rB($,Z){let Q=$.trim();if(Z.providerId.toLowerCase()!=="cline")return Q;return pB({ide:Z.clineIdeName?.trim()||"Terminal",workspaceRoot:Z.cwd?.trim()||"/",providerId:Z.providerId,rules:`# Team Teammate Role
|
|
200
200
|
${Q}`,platform:Z.clinePlatform,metadata:Z.workspaceMetadata})}function iB($,Z){let Q=$.trim();if(Z.providerId.toLowerCase()!=="cline")return Q;return pB({ide:Z.clineIdeName||"Terminal",workspaceRoot:Z.cwd?.trim()||"/",providerId:Z.providerId,overridePrompt:Q,metadata:Z.workspaceMetadata,platform:Z.clinePlatform})}function q$($){let Z={...$};return{getRuntimeConfig:()=>Z,getConnectionConfig:()=>({providerId:Z.providerId,modelId:Z.modelId,apiKey:Z.apiKey,baseUrl:Z.baseUrl,headers:Z.headers,providerConfig:Z.providerConfig,knownModels:Z.knownModels,thinking:Z.thinking,reasoningEffort:Z.reasoningEffort,thinkingBudgetTokens:Z.thinkingBudgetTokens,maxTokensPerTurn:Z.maxTokensPerTurn}),updateConnectionDefaults:(Q)=>{Z={...Z,...Q}}}}function K2($){let Z=$.configProvider.getRuntimeConfig(),Q=$.kind==="teammate"?rB($.prompt,Z):iB($.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 O$($){let Z=K2($),Q=new T$(Z);if(Z.onEvent)Q.subscribeEvents(Z.onEvent);return Q}var YO=JJ.object({systemPrompt:JJ.string().describe("System prompt defining the sub-agent's behavior"),task:JJ.string().describe("Task for the sub-agent to complete")});function z$($){return WO({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:XO(YO),execute:async(Z,Q)=>{let J=$.createSubAgentTools?await $.createSubAgentTools(Z,Q):$.subAgentTools??[],W=O$({kind:"subagent",prompt:Z.systemPrompt,configProvider:$.configProvider,tools:J,maxIterations:$.defaultMaxIterations,parentAgentId:Q.agentId,abortSignal:Q.signal,onEvent:$.onSubAgentEvent,hookErrorMode:$.hookErrorMode,toolPolicies:$.toolPolicies,requestToolApproval:$.requestToolApproval}),X=W.getAgentId(),Y=W.getConversationId(),j=Q.agentId;if($.onSubAgentStart)try{await $.onSubAgentStart({subAgentId:X,conversationId:Y,parentAgentId:j,input:Z})}catch{}try{let V=await W.run(Z.task),B={text:V.text,iterations:V.iterations,finishReason:V.finishReason,usage:{inputTokens:V.usage.inputTokens,outputTokens:V.usage.outputTokens}};if($.onSubAgentEnd)try{await $.onSubAgentEnd({subAgentId:X,conversationId:Y,parentAgentId:j,input:Z,result:B,agentResult:V})}catch{}return B}catch(V){if($.onSubAgentEnd)try{await $.onSubAgentEnd({subAgentId:X,conversationId:Y,parentAgentId:j,input:Z,error:V instanceof Error?V:Error(String(V))})}catch{}throw V}},timeoutMs:300000,retryable:!1})}import{createTool as A0,TEAM_AWAIT_TIMEOUT_MS as jO,TEAM_RUN_MESSAGE_PREVIEW_LIMIT as VO,TEAM_RUN_TEXT_PREVIEW_LIMIT as BO,TEAM_TASK_IGNORED_FIELDS_BY_ACTION as HO,TeamAttachOutcomeFragmentInputSchema as nB,TeamAwaitRunsInputSchema as aB,TeamBroadcastInputSchema as oB,TeamBroadcastToolResultSchema as GO,TeamCancelRunInputSchema as sB,TeamCancelRunToolResultSchema as KO,TeamCleanupInputSchema as tB,TeamCleanupToolResultSchema as FO,TeamCreateOutcomeInputSchema as eB,TeamCreateOutcomeToolResultSchema as AO,TeamFinalizeOutcomeInputSchema as $H,TeamFinalizeOutcomeToolResultSchema as UO,TeamListOutcomesInputSchema as ZH,TeamListRunsInputSchema as QH,TeamMailboxMessageToolResultSchema as fO,TeamMissionLogInputSchema as JH,TeamMissionLogToolResultSchema as DO,TeamOutcomeFragmentToolResultSchema as WH,TeamOutcomeToolResultSchema as LO,TeamReadMailboxInputSchema as XH,TeamReviewOutcomeFragmentInputSchema as YH,TeamRunTaskInputSchema as jH,TeamRunTaskToolResultSchema as WJ,TeamRunToolSummarySchema as XJ,TeamSendMessageInputSchema as VH,TeamSendMessageToolResultSchema as _O,TeamShutdownTeammateInputSchema as BH,TeamSimpleAgentStatusToolResultSchema as HH,TeamSpawnTeammateInputSchema as GH,TeamStatusInputSchema as KH,TeamStatusToolResultSchema as TO,TeamTaskInputSchema as FH,TeamTaskToolResultSchema as P6,validateWithZod as I,zodToJsonSchema as U0}from"@cline/shared";function AH($,Z){let Q=$.replace(/\s+/g," ").trim();if(Q.length<=Z)return Q;return`${Q.slice(0,Math.max(0,Z-3)).trimEnd()}...`}function F2($,Z){if($===void 0)throw Error(`Missing required field: ${Z}`);return $}function qO($){let Z=$.result;if(!Z)return;return{textPreview:AH(Z.text,BO),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 MZ($){return $?.toISOString()}function YJ($){return{id:$.id,agentId:$.agentId,taskId:$.taskId,status:$.status,messagePreview:AH($.message,VO),priority:$.priority,retryCount:$.retryCount,maxRetries:$.maxRetries,nextAttemptAt:MZ($.nextAttemptAt),continueConversation:$.continueConversation,startedAt:$.startedAt.toISOString(),endedAt:MZ($.endedAt),leaseOwner:$.leaseOwner,heartbeatAt:MZ($.heartbeatAt),lastProgressAt:MZ($.lastProgressAt),lastProgressMessage:$.lastProgressMessage,currentActivity:$.currentActivity,error:$.error,resultSummary:qO($)}}function OO($){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 M8=["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 UH($){let Z=[];if($.createBaseTools)Z.push(...$.createBaseTools());Z.push(...A2({runtime:$.runtime,requesterId:$.spec.agentId,teammateConfigProvider:$.teammateConfigProvider,createBaseTools:$.createBaseTools,allowSpawn:!1})),$.runtime.spawnTeammate({agentId:$.spec.agentId,config:K2({kind:"teammate",prompt:$.spec.rolePrompt,role:$.spec.rolePrompt,configProvider:$.teammateConfigProvider,tools:Z,maxIterations:$.spec.maxIterations,cwd:$.teammateConfigProvider.getRuntimeConfig().cwd})})}function N8($){let Z=$.leadAgentId??"lead",Q=$.restoredFromPersistence===!0,J=A2({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;UH({runtime:$.runtime,requesterId:Z,teammateConfigProvider:$.teammateConfigProvider,createBaseTools:$.createBaseTools,spec:X}),W.push(X.agentId)}return{tools:J,restoredFromPersistence:Q,restoredTeammates:W}}function A2($){let Z=$.allowSpawn??!0,Q=$.includeSpawnTool??!0,J=$.includeManagementTools??!0,W=[];if(Q)W.push(A0({name:"team_spawn_teammate",description:"Spawn a teammate with a required agentId and rolePrompt.",inputSchema:U0(GH),execute:async(Y)=>{let j=I(GH,Y);if($.runtime.getMemberRole($.requesterId)!=="lead")throw Error("Only the lead agent can manage teammates.");if(!Z)throw Error("Spawning teammates is disabled in this context.");let V={agentId:j.agentId,rolePrompt:j.rolePrompt};if(UH({runtime:$.runtime,requesterId:$.requesterId,teammateConfigProvider:$.teammateConfigProvider,createBaseTools:$.createBaseTools,spec:V}),!J)$.onLeadToolsUnlocked?.(A2({...$,includeSpawnTool:!1,includeManagementTools:!0,onLeadToolsUnlocked:void 0}));return I(HH,{agentId:j.agentId,status:"spawned"})}}));if(!J)return W;W.push(A0({name:"team_shutdown_teammate",description:"Shutdown a teammate by agentId.",inputSchema:U0(BH),execute:async(Y)=>{let j=I(BH,Y);if($.runtime.getMemberRole($.requesterId)!=="lead")throw Error("Only the lead agent can manage teammates.");return $.runtime.shutdownTeammate(j.agentId,j.reason),I(HH,{agentId:j.agentId,status:"stopped"})}})),W.push(A0({name:"team_status",description:"Return a snapshot of team members, task counts, mailbox, and mission log stats.",inputSchema:U0(KH),execute:async(Y)=>{return I(KH,Y),I(TO,$.runtime.getSnapshot())}})),W.push(A0({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:U0(FH),execute:async(Y)=>{let j=I(FH,Y);switch(j.action){case"create":{let V=new Set(HO.create??[]),B=Object.entries(Y).filter(([G,K])=>V.has(G)&&K!=null).map(([G])=>G),H=$.runtime.createTask({title:F2(j.title,"title"),description:F2(j.description,"description"),dependsOn:j.dependsOn,assignee:j.assignee,createdBy:$.requesterId});return I(P6,{action:"create",taskId:H.id,status:H.status,...B.length>0?{ignoredFields:B,note:`Ignored fields for action=create: ${B.join(", ")}`}:{}})}case"list":return I(P6,{action:"list",tasks:$.runtime.listTaskItems({status:j.status,assignee:j.assignee})});case"claim":{let V=$.runtime.claimTask(F2(j.taskId,"taskId"),$.requesterId);return I(P6,{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(F2(j.taskId,"taskId"),$.requesterId,F2(j.summary,"summary"));return I(P6,{action:"complete",taskId:V.id,status:V.status})}case"block":{let V=$.runtime.blockTask(F2(j.taskId,"taskId"),$.requesterId,F2(j.reason,"reason"));return I(P6,{action:"block",taskId:V.id,status:V.status})}}}}));let X=new Map;return W.push(A0({name:"team_run_task",description:"Route a delegated task to a teammate. Choose sync (wait) or async (run in background).",inputSchema:U0(jH),execute:async(Y)=>{let j=I(jH,Y);if(j.runMode==="async"){let H=$.runtime.startTeammateRun(j.agentId,j.task,{taskId:j.taskId||void 0,fromAgentId:$.requesterId,continueConversation:j.continueConversation||void 0});return I(WJ,{agentId:j.agentId,mode:"async",status:"queued",dispatched:!0,message:`Task dispatched to ${j.agentId} and queued as ${H.id}.`,runId:H.id})}let V=X.get(j.agentId);if(V){let H=await V;return I(WJ,{...H,status:"joined",deduped:!0,message:`Task for ${j.agentId} was already dispatched in this tool batch; joined the existing in-flight run.`})}let B=$.runtime.routeToTeammate(j.agentId,j.task,{taskId:j.taskId||void 0,fromAgentId:$.requesterId,continueConversation:j.continueConversation||void 0}).then((H)=>I(WJ,{agentId:j.agentId,mode:"sync",status:"running",dispatched:!0,message:`Task dispatched to ${j.agentId} and completed in sync mode.`,text:H.text,iterations:H.iterations})).finally(()=>{X.delete(j.agentId)});return X.set(j.agentId,B),await B}})),W.push(A0({name:"team_cancel_run",description:"Cancel one async teammate run.",inputSchema:U0(sB),execute:async(Y)=>{let j=I(sB,Y),V=$.runtime.cancelRun(j.runId,j.reason);return I(KO,{runId:V.id,status:V.status})}})),W.push(A0({name:"team_list_runs",description:"List teammate runs started with team_run_task in async mode, including live activity/progress fields when available.",inputSchema:U0(QH),execute:async(Y)=>I(XJ.array(),$.runtime.listRuns(I(QH,Y)).map(YJ))})),W.push(A0({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:U0(aB),timeoutMs:jO,execute:async(Y)=>{let j=I(aB,Y);if(j.runId){let H=await $.runtime.awaitRun(j.runId);return OO(H),I(XJ,YJ(H))}let V=await $.runtime.awaitAllRuns(),B=V.filter((H)=>["failed","cancelled","interrupted"].includes(H.status));if(B.length>0){let H=B.map((G)=>`${G.id}:${G.status}${G.error?`(${G.error})`:""}`).join(", ");throw Error(`One or more runs did not complete successfully: ${H}`)}return I(XJ.array(),V.map(YJ))}})),W.push(A0({name:"team_send_message",description:"Send a mailbox message to a specific teammate.",inputSchema:U0(VH),execute:async(Y)=>{let j=I(VH,Y),V=$.runtime.sendMessage($.requesterId,j.toAgentId,j.subject,j.body,j.taskId??void 0);return I(_O,{id:V.id,toAgentId:V.toAgentId})}})),W.push(A0({name:"team_broadcast",description:"Broadcast a message to all teammates.",inputSchema:U0(oB),execute:async(Y)=>{let j=I(oB,Y),V=$.runtime.broadcast($.requesterId,j.subject,j.body,{taskId:j.taskId??void 0});return I(GO,{delivered:V.length})}})),W.push(A0({name:"team_read_mailbox",description:"Read the current agent mailbox.",inputSchema:U0(XH),execute:async(Y)=>{let j=I(XH,Y);return I(fO.array(),$.runtime.listMailbox($.requesterId,{unreadOnly:j.unreadOnly,markRead:!0}))}})),W.push(A0({name:"team_mission_log",description:"Append a mission log update for your team.",inputSchema:U0(JH),execute:async(Y)=>{let j=I(JH,Y),V=$.runtime.appendMissionLog({agentId:$.requesterId,taskId:j.taskId||void 0,kind:j.kind,summary:j.summary,evidence:j.evidence?.length?j.evidence:void 0,nextAction:j.nextAction||void 0});return I(DO,{id:V.id})}})),W.push(A0({name:"team_cleanup",description:"Clean up the team runtime. Fails if teammates are still running.",inputSchema:U0(tB),execute:async(Y)=>{if(I(tB,Y),$.runtime.getMemberRole($.requesterId)!=="lead")throw Error("Only the lead agent can run cleanup.");return $.runtime.cleanup(),I(FO,{status:"cleaned"})}})),W.push(A0({name:"team_create_outcome",description:"Create a converged team outcome.",inputSchema:U0(eB),execute:async(Y)=>{let j=I(eB,Y),V=$.runtime.createOutcome({title:j.title,requiredSections:j.requiredSections,createdBy:$.requesterId});return I(AO,{outcomeId:V.id,status:V.status,requiredSections:V.requiredSections})}})),W.push(A0({name:"team_attach_outcome_fragment",description:"Attach a fragment to an outcome section.",inputSchema:U0(nB),execute:async(Y)=>{let j=I(nB,Y),V=$.runtime.attachOutcomeFragment({outcomeId:j.outcomeId,section:j.section,sourceAgentId:$.requesterId,sourceRunId:j.sourceRunId||void 0,content:j.content});return I(WH,{fragmentId:V.id,status:V.status})}})),W.push(A0({name:"team_review_outcome_fragment",description:"Review one outcome fragment.",inputSchema:U0(YH),execute:async(Y)=>{let j=I(YH,Y),V=$.runtime.reviewOutcomeFragment({fragmentId:j.fragmentId,reviewedBy:$.requesterId,approved:j.approved});return I(WH,{fragmentId:V.id,status:V.status})}})),W.push(A0({name:"team_finalize_outcome",description:"Finalize one outcome.",inputSchema:U0($H),execute:async(Y)=>{let j=I($H,Y),V=$.runtime.finalizeOutcome(j.outcomeId);return I(UO,{outcomeId:V.id,status:V.status})}})),W.push(A0({name:"team_list_outcomes",description:"List team outcomes.",inputSchema:U0(ZH),execute:async(Y)=>{return I(ZH,Y),I(LO.array(),$.runtime.listOutcomes())}})),W}function NZ($){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 fH($){return $.toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")}var zO=[{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:z$({configProvider:{}}).description,headlessToolNames:["spawn_agent"]},{id:"teams",description:"Enable team collaboration tools for teammate management, task coordination, mailbox messaging, mission logs, and outcomes.",headlessToolNames:[...M8]}],RO={read_files:"enableReadFiles",search_codebase:"enableSearch",run_commands:"enableBash",fetch_web_content:"enableWebFetch",apply_patch:"enableApplyPatch",editor:"enableEditor",skills:"enableSkills",ask_question:"enableAskQuestion"};function MO($){return $==="plan"||$==="yolo"?$:"act"}function LH($){let Z=MO($.mode),Q=a0[v1({mode:Z})],J=q8($.providerId??"",$.modelId??"",Z,T8);return{mode:Z,flags:{...Q,...J,...typeof $.enableSpawnAgent==="boolean"?{enableSpawnAgent:$.enableSpawnAgent}:{},...typeof $.enableAgentTeams==="boolean"?{enableAgentTeams:$.enableAgentTeams}:{}}}}function DH($,Z){if(Z.disabledToolIds?.has($))return!1;let{flags:Q}=LH(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=RO[$];return J?Q[J]===!0:!1}function NO($,Z){if($.id==="editor"){let{flags:Q}=LH(Z),J=Q.enableApplyPatch===!0&&Q.enableEditor!==!0;return{...$,defaultEnabled:DH($.id,Z),headlessToolNames:[J?"apply_patch":"editor"]}}return{...$,defaultEnabled:DH($.id,Z)}}function U2($={}){return zO.map((Z)=>NO(Z,$))}function EZ($={}){return U2($).filter((Z)=>Z.defaultEnabled).map((Z)=>Z.id)}function CZ($){if(!$.enabled)return new Set;let Z=U2($.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 S6($,Z={}){return U2(Z).filter((Q)=>$.has(Q.id)).flatMap((Q)=>Q.headlessToolNames)}function wZ($,Z={}){return S6($,Z)}function f2($={}){let{executorOptions:Z={},executors:Q,...J}=$,W={..._8(Z),...Q??{}};return D$({...J,executors:W})}import{mkdirSync as bO,writeFileSync as yO}from"node:fs";import{dirname as kO}from"node:path";import{normalizeUserInput as hO,stripModeNotices as IO}from"@cline/shared";import{nanoid as xO}from"nanoid";var TH={};E(TH,{sanitizeSessionToken:()=>D2,parseTeamTaskSubSessionId:()=>C8,parseSubSessionId:()=>y6,makeTeamTaskSubSessionId:()=>b6,makeSubSessionId:()=>E8,deriveSubsessionStatus:()=>k6});import{nanoid as wO}from"nanoid";function D2($){return $.replace(/[^a-zA-Z0-9._-]+/g,"_")}function E8($,Z){let Q=D2($),J=D2(Z),W=`${Q}__${J}`;return W.length>180?W.slice(0,180):W}function b6($,Z){let Q=D2($),J=D2(Z);return`${Q}__teamtask__${J}__${wO(6)}`}function C8($){let Q=$.indexOf("__teamtask__");if(Q<=0)return null;let J=$.slice(0,Q),W=$.slice(Q+12),X=W.lastIndexOf("__");if(X<=0)return null;let Y=W.slice(0,X),j=W.slice(X+2);if(!J||!Y||!j)return null;return{rootSessionId:J,agentId:Y,teamTaskId:j}}function y6($){if(C8($))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 k6($){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 e}from"zod";var zH={};E(zH,{isTerminalSessionStatus:()=>OH,isNonTerminalSessionStatus:()=>G0,SessionSource:()=>K0,SESSION_STATUSES:()=>h6,NON_TERMINAL_SESSION_STATUSES:()=>qH});import{SESSION_STATUS_VALUES as PO}from"@cline/shared";var h6=PO,qH=["idle","running","pending"];function OH($){return!qH.includes($)}function G0($){return!OH($)}var K0={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 SO=e.enum(h6),x0=e.object({version:e.literal(1),session_id:e.string().min(1),source:e.string().min(1),pid:e.number().int(),started_at:e.string().min(1),ended_at:e.string().min(1).optional(),exit_code:e.number().int().nullable().optional(),status:SO,interactive:e.boolean(),provider:e.string().min(1),model:e.string().min(1),cwd:e.string().min(1),workspace_root:e.string().min(1),team_name:e.string().min(1).optional(),enable_tools:e.boolean(),enable_spawn:e.boolean(),enable_teams:e.boolean(),prompt:e.string().optional(),metadata:e.record(e.string(),e.unknown()).optional(),messages_path:e.string().min(1).optional(),compaction_path:e.string().min(1).optional()});function RH($){if(!$)return!1;return Object.values($).some((Z)=>typeof Z==="function")}function VJ($,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 MH($){return JSON.stringify($,(Z,Q)=>{if(Q instanceof Error)return{name:Q.name,message:Q.message,stack:Q.stack};return Q})}function u1($){return typeof $==="string"&&$.trim()?$.trim():void 0}function jJ($,Z){let Q={...$};Q.id=u1(Q.id)??xO();let J=Q.modelInfo&&typeof Q.modelInfo==="object"?{...Q.modelInfo}:void 0,W={id:u1(J?.id)??u1(Q.modelId)??u1(Z?.id),provider:u1(J?.provider)??u1(Q.providerId)??u1(Z?.provider),family:u1(J?.family)??u1(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 PZ($){return $.map((Z)=>jJ(Z))}function SZ($,Z,Q=[]){let J=$.map((V,B)=>{let H=Q[B],K=H?.role===V.role&&JSON.stringify(H.content)===JSON.stringify(V.content)?{...H,...V}:{...V};return jJ(K)}),W=Q.length,X=[];for(let V=W;V<J.length;V+=1)if(J[V]?.role==="assistant")X.push(V);if(X.length===0){let V=[...J].reverse().findIndex((B)=>B.role==="assistant");if(V===-1)return J;X.push(J.length-1-V)}let Y=X[X.length-1],j=X.some((V)=>J[V]?.metrics);for(let V of X){let B=J[V],H=B.metrics;if(!H&&V===Y&&!j){let G=Z.usage;H={inputTokens:G.inputTokens,outputTokens:G.outputTokens,cacheReadTokens:G.cacheReadTokens??0,cacheWriteTokens:G.cacheWriteTokens??0,cost:G.totalCost}}J[V]={...jJ(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 I6($){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 gO=120;function L2($){let Z=$?.trim();return Z?Z.slice(0,gO):void 0}function BJ($){let Z=IO(hO($??"")).trim();if(!Z)return;return L2(Z.split(`
|
|
201
201
|
`)[0]?.trim())}function R$($){if(!$)return;let Z={...$},Q=L2(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 x6($){let Z=R$($.metadata)??{},Q=$.title!==void 0?L2($.title):BJ($.prompt);if(Q)Z.title=Q;return Object.keys(Z).length>0?Z:void 0}function HJ($){let Z=C8($);if(Z)return{agent:"teammate",sessionId:Z.rootSessionId,taskType:"team"};let Q=y6($);if(Q)return{agent:"subagent",sessionId:Q.rootSessionId,taskType:"subagent_task"};return{agent:"lead",sessionId:$}}function GJ($){return{version:1,updated_at:$.updatedAt,agent:$.context.agent,sessionId:$.context.sessionId,...$.context.taskType?{taskType:$.context.taskType}:{},messages:PZ($.messages),...$.systemPrompt?{system_prompt:$.systemPrompt}:{}}}function NH($,Z,Q){bO(kO($),{recursive:!0}),yO($,`${JSON.stringify(GJ({updatedAt:Z,context:Q,messages:[]}),null,2)}
|
|
202
|
-
`,"utf8")}function EH($,Z){return x0.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 CH($,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}}_0();var wH={};E(wH,{summarizeUsageFromMessages:()=>P8,sumUsageTotals:()=>g6,getCurrentContextSize:()=>KJ,createInitialAccumulatedUsage:()=>q0,accumulateUsageTotals:()=>f0});function q0(){return{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,totalCost:0}}function f0($,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 g6($){let Z=q0();for(let Q of $)Z=f0(Z,Q);return Z}function w8($){return typeof $==="number"&&Number.isFinite($)?$:0}function P8($){let Z=q0();for(let Q of $){let J=Q.metrics;if(!J)continue;Z=f0(Z,{inputTokens:w8(J.inputTokens),outputTokens:w8(J.outputTokens),cacheReadTokens:w8(J.cacheReadTokens),cacheWriteTokens:w8(J.cacheWriteTokens),totalCost:w8(J.cost)})}return Z}function KJ($){for(let Z=$.length-1;Z>=0;Z-=1){let Q=$[Z];if(Q?.role!=="assistant")continue;let J=w8(Q.metrics?.inputTokens);return J>0?J:void 0}return}function mO($){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 FJ($){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 d1($){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 vO($){return{inputTokens:$.inputTokens,outputTokens:$.outputTokens,cacheWriteTokens:$.cacheWriteTokens,cacheReadTokens:$.cacheReadTokens,totalCost:$.cost}}function cO($){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 AJ($,Z,Q){let{sessionId:J,config:W,liveSession:X,emit:Y}=$,j=W.telemetry,V=X?.runtime.teamRuntime,B=Q?.isPrimaryAgentEvent??!0,H=FJ(Z),G=d1({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 K=mO(Z.input);if(K)h9(j,{ulid:J,skillName:K,skillSource:"project",skillsAvailableGlobal:0,skillsAvailableProject:0,provider:W.providerId,modelId:W.modelId,...G})}if(Z.type==="content_end"&&Z.contentType==="tool"){let K=Z.toolName??"unknown",F=!Z.error;if(Y8(j,{ulid:J,tool:K,autoApproved:void 0,success:F,modelId:W.modelId,provider:W.providerId,...G}),!F&&(K==="editor"||K==="apply_patch"))I9(j,{ulid:J,modelId:W.modelId,provider:W.providerId,errorType:Z.error,...G})}if(Z.type==="notice"&&Z.reason==="api_error")c4(j,{ulid:J,model:W.modelId,provider:W.providerId,errorMessage:Z.message,...G});if(Z.type==="error")c4(j,{ulid:J,model:W.modelId,provider:W.providerId,errorMessage:Z.error?.message??"unknown error",...G});if(Z.type==="usage"&&X?.turnUsageBaseline){let K=vO(Z);if(B){X.turnPrimaryUsage=f0(X.turnPrimaryUsage??q0(),K);let A=f0(X.turnUsageBaseline,X.turnPrimaryUsage);$.usageBySession.set(J,A),X8(j,{ulid:J,provider:W.providerId,model:W.modelId,source:"assistant",mode:W.mode,...G}),y9(j,{ulid:J,tokensIn:Z.inputTokens,tokensOut:Z.outputTokens,cacheWriteTokens:Z.cacheWriteTokens,cacheReadTokens:Z.cacheReadTokens,totalCost:Z.cost,model:W.modelId,...G})}else{let A=cO({isPrimaryAgentEvent:B,overrides:Q,eventMetadata:H}),D=X.turnUsageByAgent??new Map;X.turnUsageByAgent=D,D.set(A,f0(D.get(A)??q0(),K))}let F=f0(X.turnPrimaryUsage??q0(),g6(X.turnUsageByAgent?.values()??[]));$.aggregateUsageBySession.set(J,f0(X.turnAggregateUsageBaseline??X.turnUsageBaseline,F))}if(Z.type==="iteration_end"&&B)$.persistMessages(J,X?.agent.getMessages()??[],X?.config.systemPrompt);Y({type:"agent_event",payload:{sessionId:J,event:Z,teamAgentId:Q?.teamAgentId,teamRole:Q!==void 0?Q.teamRole??(B?"lead":void 0):void 0}}),Y({type:"chunk",payload:{sessionId:J,stream:"agent",chunk:MH(Z),ts:Date.now()}})}function M$($){return $.workspaceRoot??$.cwd}import{buildClineClientRequestHeaders as tR,hasRuntimeConfigExtension as eR}from"@cline/shared";var S8="0.0.59-nightly.1783567022";var m6={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:S8,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: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"]};F1();import{existsSync as xZ,readFileSync as Cz,statSync as wz}from"node:fs";import{basename as Pz,dirname as hZ,join as gZ,resolve as IZ}from"node:path";import{discoverPluginModulePaths as Sz,resolveConfiguredPluginModulePaths as sH,resolvePluginConfigSearchPaths as bz,SKILLS_CONFIG_DIRECTORY_NAME as yz}from"@cline/shared/storage";import{resolve as jz}from"node:path";import{normalizePluginManifest as Vz}from"@cline/shared";import{existsSync as R0,readFileSync as y8}from"node:fs";import{builtinModules as uO,createRequire as LJ}from"node:module";import{dirname as N$,extname as c6,isAbsolute as dO,resolve as i}from"node:path";import{fileURLToPath as bH}from"node:url";import{PLUGIN_FILE_EXTENSIONS as lO}from"@cline/shared";var yH=N$(bH(import.meta.url)),pO=LJ(import.meta.url),rO=i(yH,"..","..","..","..",".."),UJ=aO(rO),iO=["@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"],_J=new Set(uO.flatMap(($)=>[$,$.replace(/^node:/,"")])),v6=new Set(lO),nO=["development","node","import","require","default"];function aO($){let Z={},Q={"@cline/sdk":i($,"packages/sdk/src/index.ts"),"@cline/agents":i($,"packages/agents/src/index.ts"),"@cline/core":i($,"packages/core/src/index.ts"),"@cline/llms":i($,"packages/llms/src/index.ts"),"@cline/shared":i($,"packages/shared/src/index.ts"),"@cline/shared/storage":i($,"packages/shared/src/storage/index.ts"),"@cline/shared/db":i($,"packages/shared/src/db/index.ts")};for(let[J,W]of Object.entries(Q))if(R0(W))Z[J]=W;for(let J of["agents","core","llms","shared"]){let W=i($,"packages",J),X=i(W,"package.json");if(!R0(X))continue;try{let Y=JSON.parse(y8(X,"utf8"));if(typeof Y.name!=="string"||!Y.exports)continue;if(typeof Y.exports==="string"){let j=i(W,Y.exports);if(R0(j))Z[Y.name]=j;continue}if(typeof Y.exports!=="object")continue;for(let[j,V]of Object.entries(Y.exports)){let B=oO(W,V);if(!B)continue;let H=j==="."?Y.name:`${Y.name}/${j.replace(/^\.\//,"")}`;Z[H]=B}}catch{}}return Z}function oO($,Z){let Q=TJ(Z);if(!Q)return null;let J=kH($,Q);for(let W of J)if(R0(W))return W;return null}function TJ($,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 nO){let W=TJ(Q[J],Z);if(W)return W}return null}function kH($,Z){let Q=Z.replace(/^\.\//,""),J=[i($,Z)];if(Q.startsWith("dist/")){let W=Q.replace(/^dist\//,"src/").replace(/\.(mjs|cjs|js)$/,"");return[i($,`${W}.ts`),i($,`${W}.tsx`),i($,`${W}.mts`),i($,`${W}.cts`),...J]}return J}function sO($){return Object.fromEntries(Object.entries($).sort(([Z],[Q])=>Q.length-Z.length))}function bZ($){return!($.startsWith(".")||$.startsWith("/")||$.startsWith("file:")||$.startsWith("data:")||$.startsWith("http:")||$.startsWith("https:"))}function b8($){if($.startsWith("@")){let[Z,Q]=$.split("/",3);return Q?`${Z}/${Q}`:$}return $.split("/",1)[0]??$}function tO($){let Z=b8($);if($===Z)return".";return`.${$.slice(Z.length)}`}function hH($){return b8($).startsWith("@cline/")}function fJ($,Z){let Q=b8(Z),J=N$($);while(!0){let W=i(J,"node_modules",Q);if(R0(W)||R0(i(W,"package.json")))return!0;let X=i(J,"..");if(X===J)return!1;J=X}}function SH($){return DJ($)!==null}function DJ($){try{return pO.resolve($)}catch{}return eO($)}function eO($){let Z=b8($),Q=IH(Z);if(!Q)return null;let J=i(Q,"package.json");try{let W=JSON.parse(y8(J,"utf8")),X=tO($),Y=X==="."&&typeof W.exports==="string"?W.exports:W.exports&&typeof W.exports==="object"&&Object.hasOwn(W.exports,X)?W.exports[X]:void 0,j=TJ(Y)??(X==="."&&typeof W.main==="string"?W.main:null);if(!j)return null;let V=i(Q,j),B=[V,...kH(Q,j).filter((H)=>H!==V)];for(let H of B)if(R0(H))return H;return null}catch{return null}}function $z(){let $=[yH],Z=process.env.CLINE_WRAPPER_PATH?.trim();if(Z)$.push(N$(N$(Z)));let Q=process.execPath?.trim();if(Q)$.push(N$(Q));return[...new Set($.map((J)=>i(J)))]}function Zz($,Z){let Q=$;while(!0){let J=i(Q,"package.json");if(R0(J))try{if(JSON.parse(y8(J,"utf8")).name===Z)return Q}catch{}let W=i(Q,"node_modules",Z,"package.json");if(R0(W))return N$(W);let X=i(Q,"..");if(X===Q)return null;Q=X}}function IH($){for(let Z of $z()){let Q=Zz(Z,$);if(Q)return Q}return null}function Qz($){let Q=N$($);for(let J=0;J<4;J++){let W=i(Q,"package.json");if(R0(W))try{let Y=JSON.parse(y8(W,"utf8"));return Y!=null&&typeof Y==="object"&&"cline"in Y}catch{return!1}let X=i(Q,"..");if(X===Q)return!1;Q=X}return!1}function xH($,Z){let Q=Z.startsWith("file:")?bH(Z):dO(Z)?Z:i(N$($),Z);if(R0(Q)&&v6.has(c6(Q)))return Q;for(let J of v6){let W=`${Q}${J}`;if(R0(W))return W}for(let J of v6){let W=i(Q,`index${J}`);if(R0(W))return W}return null}function gH($){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 Jz($){return c6($)!==".ts"}function mH($,Z,Q=new Set){if(Q.has($)||!R0($))return;if(Q.add($),!v6.has(c6($)))return;let J=y8($,"utf8"),W=Jz($);for(let X of gH(J)){if(X.startsWith("node:")||_J.has(X))continue;if(bZ(X)){if(!W)continue;if(Object.hasOwn(UJ,X)||Object.hasOwn(UJ,b8(X))||fJ($,X)||hH(X)&&SH(X)||Z&&SH(X))continue;throw Error(`Cannot find module '${b8(X)}'`)}let Y=xH($,X);if(Y)mH(Y,Z,Q)}}function vH($,Z=new Set,Q=new Set){if(Z.has($)||!R0($))return Q;if(Z.add($),!v6.has(c6($)))return Q;let J=y8($,"utf8");for(let W of gH(J)){if(Q.add(W),bZ(W))continue;let X=xH($,W);if(X)vH(X,Z,Q)}return Q}function Wz($,Z){let Q=LJ($),J={},W=vH($),X=new Set(iO);for(let[Y,j]of Object.entries(UJ)){try{Q.resolve(Y);continue}catch{}J[Y]=j}for(let Y of W)if(bZ(Y)&&(hH(Y)||Z))X.add(Y);for(let Y of X){if(Object.hasOwn(J,Y)||fJ($,Y))continue;let j=DJ(Y);if(j)J[Y]=j}if(!Z)return J;for(let Y of W){if(!bZ(Y)||Object.hasOwn(J,Y)||fJ($,Y)||Y.startsWith("node:")||_J.has(Y))continue;let j=DJ(Y);if(j)J[Y]=j}return J}function Xz($){let Z=c6($);return Z===".ts"||Z===".tsx"||Z===".mts"||Z===".cts"}var _2;function Yz(){if(_2!==void 0)return _2;let $=IH("jiti");if(!$)return _2=null,null;let Z=i($,"dist","babel.cjs");if(!R0(Z))return _2=null,null;try{let J=LJ(Z)(Z);_2=typeof J==="function"?J:null}catch{_2=null}return _2}async function cH($,Z={}){let Q=!Qz($);mH($,Q);let J=Wz($,Q),W=sO(J),X=await import("jiti"),Y=typeof X==="function"?X:typeof X.default==="function"?X.default:void 0;if(!Y)throw Error("Unable to load jiti");let j=Object.entries(W).filter(([,G])=>Xz(G)).map(([G])=>G),V=Yz(),B=V?(G)=>V({...G,interopDefault:!0}):void 0;return await Y($,{alias:W,cache:Z.useCache,requireCache:Z.useCache,esmResolve:!0,interopDefault:!1,nativeModules:[..._J],transformModules:j,tryNative:!1,...B?{transform:B}:{}}).import($,{})}function uH($,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 dH($){return typeof $==="object"&&$!==null}function qJ($){return Array.isArray($)&&$.every((Z)=>typeof Z==="string")}function Bz($,Z){if(!dH($.manifest))throw Error(`Invalid plugin module at ${Z}: missing required "manifest"`);if(!qJ($.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")&&!qJ($.manifest.providerIds))throw Error(`Invalid plugin module at ${Z}: manifest.providerIds must be a string array when provided`);if(Object.hasOwn($.manifest,"modelIds")&&!qJ($.manifest.modelIds))throw Error(`Invalid plugin module at ${Z}: manifest.modelIds must be a string array when provided`)}function Hz($,Z){if(!dH($))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"`);Bz($,Z)}async function u6($,Z={}){let Q=jz(Z.cwd??process.cwd(),$),J=await cH(Q,{useCache:Z.useCache}),W=Z.exportName??"plugin",X=J.default??J[W];Hz(X,Q);let Y=X,j=Y.setup,V=j?(B,H)=>{let G={...Z.session,...H.session},K={...H,session:Object.keys(G).length>0?G:void 0,client:Z.client??H.client,user:Z.user??H.user,workspaceInfo:Z.workspaceInfo??H.workspaceInfo,automation:Z.automation??H.automation,logger:Z.logger??H.logger,telemetry:Z.telemetry??H.telemetry};return j(B,K)}:void 0;return{...Y,manifest:Vz(Y.manifest),setup:V}}async function yZ($,Z={}){return(await T2($,Z)).plugins}async function T2($,Z={}){let Q=[],J=[],W=new Map,X=0;for(let j of $)try{let V=await u6(j,Z);if(!uH(V.manifest,Z))continue;let B=W.get(V.name);if(B)J.push({type:"duplicate_plugin_override",pluginName:V.name,pluginPath:j,overriddenPluginPath:B.pluginPath,message:`Plugin "${V.name}" from ${j} overrides ${B.pluginPath}`});W.set(V.name,{plugin:V,pluginPath:j,order:X++})}catch(V){let B=V instanceof Error?V.message:String(V);Q.push({pluginPath:j,phase:"load",message:B,stack:V instanceof Error?V.stack:void 0})}let Y=[...W.values()].sort((j,V)=>j.order-V.order);return{plugins:Y.map((j)=>j.plugin),pluginPaths:Y.map((j)=>j.pluginPath),failures:Q,warnings:J}}import{existsSync as MJ}from"node:fs";import{createRequire as oH}from"node:module";import{dirname as kZ,join as h8}from"node:path";import{fileURLToPath as Uz}from"node:url";var nH={};E(nH,{resolveSubprocessRuntimeExecutable:()=>OJ,buildSubprocessSandboxCommand:()=>iH,SubprocessSandbox:()=>k8,CLINE_JS_RUNTIME_PATH_ENV:()=>rH});import{spawn as Gz}from"node:child_process";import{basename as Kz}from"node:path";import{augmentNodeCommandForDebug as Fz,withResolvedClineBuildEnv as Az}from"@cline/shared";function lH($){if($ instanceof Error)return $;return Error(String($))}var rH="CLINE_JS_RUNTIME_PATH";function pH($){let Z=$?.trim();if(!Z)return!1;let Q=Kz(Z).toLowerCase();return Q==="node"||Q==="node.exe"||Q==="bun"||Q==="bun.exe"}function OJ($={}){let Z=$.env??process.env,Q=$.runtimeExecutable?.trim()||Z[rH]?.trim();if(Q)return Q;let J=$.execPath?.trim()||process.execPath;if(pH(J))return J;for(let W of[Z.BUN_EXEC_PATH,Z.npm_node_execpath,Z.NODE]){let X=W?.trim();if(X&&pH(X))return X}return"node"}function iH($,Z={}){let Q=OJ({env:Z.env,execPath:Z.execPath,runtimeExecutable:Z.runtimeExecutable});return Fz([Q,...$],{env:Z.env,execArgv:Z.execArgv,debugRole:Z.name==="plugin-sandbox"?"plugin-sandbox":"sandbox"})}class k8{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=iH($,{name:this.options.name,runtimeExecutable:this.options.runtimeExecutable}),Q=Gz(Z[0]??OJ(this.options),Z.slice(1),{stdio:["ignore","ignore","pipe","ipc"],env:Az(process.env),windowsHide:!0});this.process=Q;let J="",W=(X)=>{let Y=J+X;J=Y.length>4000?Y.slice(-4000):Y};Q.stderr?.setEncoding("utf8"),Q.stderr?.on("data",(X)=>{W(X)}),Q.on("message",(X)=>{this.onMessage(X)}),Q.on("error",(X)=>{this.failPending(Error(`${this.processLabel} process error: ${lH(X).message}`))}),Q.on("exit",(X,Y)=>{this.process=null;let j=J.trim();this.failPending(Error(`${this.options.name??"sandbox"} process exited (code=${String(X)}, signal=${String(Y)})${j?`: ${j}`:""}`))})}async call($,Z,Q={}){this.start();let J=this.process;if(!J||J.exitCode!==null)throw Error(`${this.processLabel} process is not available`);let W=`req_${++this.requestCounter}`,X={type:"call",id:W,method:$,args:Z};return await new Promise((Y,j)=>{let V={resolve:(B)=>Y(B),reject:j};if((Q.timeoutMs??0)>0)V.timeout=setTimeout(()=>{this.clearPendingRequest(W),this.shutdown().catch(()=>{}),j(Error(`${this.processLabel} call timed out after ${Q.timeoutMs}ms: ${$}`))},Q.timeoutMs);this.pending.set(W,V),J.send(X,(B)=>{if(!B)return;let H=this.clearPendingRequest(W);if(!H)return;H.reject(Error(`${this.processLabel} failed to send call "${$}": ${lH(B).message}`))})})}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 fz($){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 d6($){return($ instanceof Error?$.message:String($)).includes("Unknown sandbox plugin id:")}function Dz(){return`@cline/cli-${process.platform==="win32"?"windows":process.platform}-${process.arch}`}function Lz(){let $=process.env.CLINE_WRAPPER_PATH?.trim();if(!$)return;try{let Q=oH($).resolve(`${Dz()}/package.json`),J=h8(kZ(Q),"extensions","plugin-sandbox-bootstrap.js");return MJ(J)?J:void 0}catch{return}}function _z(){let $=process.execPath?.trim();if(!$)return;let Z=h8(kZ(kZ($)),"extensions","plugin-sandbox-bootstrap.js");return MJ(Z)?Z:void 0}function Tz(){let $=kZ(Uz(import.meta.url)),Z=oH(import.meta.url),Q=[h8($,"plugin-sandbox-bootstrap.js"),h8($,"extensions","plugin-sandbox-bootstrap.js"),h8($,"agents","plugin-sandbox-bootstrap.js"),Lz(),_z()];for(let X of Q.filter((Y)=>typeof Y==="string"))if(MJ(X))return{file:X};let J=h8($,"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(`
|
|
202
|
+
`,"utf8")}function EH($,Z){return x0.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 CH($,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}}_0();var wH={};E(wH,{summarizeUsageFromMessages:()=>P8,sumUsageTotals:()=>g6,getCurrentContextSize:()=>KJ,createInitialAccumulatedUsage:()=>q0,accumulateUsageTotals:()=>f0});function q0(){return{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,totalCost:0}}function f0($,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 g6($){let Z=q0();for(let Q of $)Z=f0(Z,Q);return Z}function w8($){return typeof $==="number"&&Number.isFinite($)?$:0}function P8($){let Z=q0();for(let Q of $){let J=Q.metrics;if(!J)continue;Z=f0(Z,{inputTokens:w8(J.inputTokens),outputTokens:w8(J.outputTokens),cacheReadTokens:w8(J.cacheReadTokens),cacheWriteTokens:w8(J.cacheWriteTokens),totalCost:w8(J.cost)})}return Z}function KJ($){for(let Z=$.length-1;Z>=0;Z-=1){let Q=$[Z];if(Q?.role!=="assistant")continue;let J=w8(Q.metrics?.inputTokens);return J>0?J:void 0}return}function mO($){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 FJ($){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 d1($){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 vO($){return{inputTokens:$.inputTokens,outputTokens:$.outputTokens,cacheWriteTokens:$.cacheWriteTokens,cacheReadTokens:$.cacheReadTokens,totalCost:$.cost}}function cO($){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 AJ($,Z,Q){let{sessionId:J,config:W,liveSession:X,emit:Y}=$,j=W.telemetry,V=X?.runtime.teamRuntime,B=Q?.isPrimaryAgentEvent??!0,H=FJ(Z),G=d1({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 K=mO(Z.input);if(K)h9(j,{ulid:J,skillName:K,skillSource:"project",skillsAvailableGlobal:0,skillsAvailableProject:0,provider:W.providerId,modelId:W.modelId,...G})}if(Z.type==="content_end"&&Z.contentType==="tool"){let K=Z.toolName??"unknown",F=!Z.error;if(Y8(j,{ulid:J,tool:K,autoApproved:void 0,success:F,modelId:W.modelId,provider:W.providerId,...G}),!F&&(K==="editor"||K==="apply_patch"))I9(j,{ulid:J,modelId:W.modelId,provider:W.providerId,errorType:Z.error,...G})}if(Z.type==="notice"&&Z.reason==="api_error")c4(j,{ulid:J,model:W.modelId,provider:W.providerId,errorMessage:Z.message,...G});if(Z.type==="error")c4(j,{ulid:J,model:W.modelId,provider:W.providerId,errorMessage:Z.error?.message??"unknown error",...G});if(Z.type==="usage"&&X?.turnUsageBaseline){let K=vO(Z);if(B){X.turnPrimaryUsage=f0(X.turnPrimaryUsage??q0(),K);let A=f0(X.turnUsageBaseline,X.turnPrimaryUsage);$.usageBySession.set(J,A),X8(j,{ulid:J,provider:W.providerId,model:W.modelId,source:"assistant",mode:W.mode,...G}),y9(j,{ulid:J,tokensIn:Z.inputTokens,tokensOut:Z.outputTokens,cacheWriteTokens:Z.cacheWriteTokens,cacheReadTokens:Z.cacheReadTokens,totalCost:Z.cost,model:W.modelId,...G})}else{let A=cO({isPrimaryAgentEvent:B,overrides:Q,eventMetadata:H}),D=X.turnUsageByAgent??new Map;X.turnUsageByAgent=D,D.set(A,f0(D.get(A)??q0(),K))}let F=f0(X.turnPrimaryUsage??q0(),g6(X.turnUsageByAgent?.values()??[]));$.aggregateUsageBySession.set(J,f0(X.turnAggregateUsageBaseline??X.turnUsageBaseline,F))}if(Z.type==="iteration_end"&&B)$.persistMessages(J,X?.agent.getMessages()??[],X?.config.systemPrompt);Y({type:"agent_event",payload:{sessionId:J,event:Z,teamAgentId:Q?.teamAgentId,teamRole:Q!==void 0?Q.teamRole??(B?"lead":void 0):void 0}}),Y({type:"chunk",payload:{sessionId:J,stream:"agent",chunk:MH(Z),ts:Date.now()}})}function M$($){return $.workspaceRoot??$.cwd}import{buildClineClientRequestHeaders as tR,hasRuntimeConfigExtension as eR}from"@cline/shared";var S8="0.0.59";var m6={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:S8,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: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"]};F1();import{existsSync as xZ,readFileSync as Cz,statSync as wz}from"node:fs";import{basename as Pz,dirname as hZ,join as gZ,resolve as IZ}from"node:path";import{discoverPluginModulePaths as Sz,resolveConfiguredPluginModulePaths as sH,resolvePluginConfigSearchPaths as bz,SKILLS_CONFIG_DIRECTORY_NAME as yz}from"@cline/shared/storage";import{resolve as jz}from"node:path";import{normalizePluginManifest as Vz}from"@cline/shared";import{existsSync as R0,readFileSync as y8}from"node:fs";import{builtinModules as uO,createRequire as LJ}from"node:module";import{dirname as N$,extname as c6,isAbsolute as dO,resolve as i}from"node:path";import{fileURLToPath as bH}from"node:url";import{PLUGIN_FILE_EXTENSIONS as lO}from"@cline/shared";var yH=N$(bH(import.meta.url)),pO=LJ(import.meta.url),rO=i(yH,"..","..","..","..",".."),UJ=aO(rO),iO=["@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"],_J=new Set(uO.flatMap(($)=>[$,$.replace(/^node:/,"")])),v6=new Set(lO),nO=["development","node","import","require","default"];function aO($){let Z={},Q={"@cline/sdk":i($,"packages/sdk/src/index.ts"),"@cline/agents":i($,"packages/agents/src/index.ts"),"@cline/core":i($,"packages/core/src/index.ts"),"@cline/llms":i($,"packages/llms/src/index.ts"),"@cline/shared":i($,"packages/shared/src/index.ts"),"@cline/shared/storage":i($,"packages/shared/src/storage/index.ts"),"@cline/shared/db":i($,"packages/shared/src/db/index.ts")};for(let[J,W]of Object.entries(Q))if(R0(W))Z[J]=W;for(let J of["agents","core","llms","shared"]){let W=i($,"packages",J),X=i(W,"package.json");if(!R0(X))continue;try{let Y=JSON.parse(y8(X,"utf8"));if(typeof Y.name!=="string"||!Y.exports)continue;if(typeof Y.exports==="string"){let j=i(W,Y.exports);if(R0(j))Z[Y.name]=j;continue}if(typeof Y.exports!=="object")continue;for(let[j,V]of Object.entries(Y.exports)){let B=oO(W,V);if(!B)continue;let H=j==="."?Y.name:`${Y.name}/${j.replace(/^\.\//,"")}`;Z[H]=B}}catch{}}return Z}function oO($,Z){let Q=TJ(Z);if(!Q)return null;let J=kH($,Q);for(let W of J)if(R0(W))return W;return null}function TJ($,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 nO){let W=TJ(Q[J],Z);if(W)return W}return null}function kH($,Z){let Q=Z.replace(/^\.\//,""),J=[i($,Z)];if(Q.startsWith("dist/")){let W=Q.replace(/^dist\//,"src/").replace(/\.(mjs|cjs|js)$/,"");return[i($,`${W}.ts`),i($,`${W}.tsx`),i($,`${W}.mts`),i($,`${W}.cts`),...J]}return J}function sO($){return Object.fromEntries(Object.entries($).sort(([Z],[Q])=>Q.length-Z.length))}function bZ($){return!($.startsWith(".")||$.startsWith("/")||$.startsWith("file:")||$.startsWith("data:")||$.startsWith("http:")||$.startsWith("https:"))}function b8($){if($.startsWith("@")){let[Z,Q]=$.split("/",3);return Q?`${Z}/${Q}`:$}return $.split("/",1)[0]??$}function tO($){let Z=b8($);if($===Z)return".";return`.${$.slice(Z.length)}`}function hH($){return b8($).startsWith("@cline/")}function fJ($,Z){let Q=b8(Z),J=N$($);while(!0){let W=i(J,"node_modules",Q);if(R0(W)||R0(i(W,"package.json")))return!0;let X=i(J,"..");if(X===J)return!1;J=X}}function SH($){return DJ($)!==null}function DJ($){try{return pO.resolve($)}catch{}return eO($)}function eO($){let Z=b8($),Q=IH(Z);if(!Q)return null;let J=i(Q,"package.json");try{let W=JSON.parse(y8(J,"utf8")),X=tO($),Y=X==="."&&typeof W.exports==="string"?W.exports:W.exports&&typeof W.exports==="object"&&Object.hasOwn(W.exports,X)?W.exports[X]:void 0,j=TJ(Y)??(X==="."&&typeof W.main==="string"?W.main:null);if(!j)return null;let V=i(Q,j),B=[V,...kH(Q,j).filter((H)=>H!==V)];for(let H of B)if(R0(H))return H;return null}catch{return null}}function $z(){let $=[yH],Z=process.env.CLINE_WRAPPER_PATH?.trim();if(Z)$.push(N$(N$(Z)));let Q=process.execPath?.trim();if(Q)$.push(N$(Q));return[...new Set($.map((J)=>i(J)))]}function Zz($,Z){let Q=$;while(!0){let J=i(Q,"package.json");if(R0(J))try{if(JSON.parse(y8(J,"utf8")).name===Z)return Q}catch{}let W=i(Q,"node_modules",Z,"package.json");if(R0(W))return N$(W);let X=i(Q,"..");if(X===Q)return null;Q=X}}function IH($){for(let Z of $z()){let Q=Zz(Z,$);if(Q)return Q}return null}function Qz($){let Q=N$($);for(let J=0;J<4;J++){let W=i(Q,"package.json");if(R0(W))try{let Y=JSON.parse(y8(W,"utf8"));return Y!=null&&typeof Y==="object"&&"cline"in Y}catch{return!1}let X=i(Q,"..");if(X===Q)return!1;Q=X}return!1}function xH($,Z){let Q=Z.startsWith("file:")?bH(Z):dO(Z)?Z:i(N$($),Z);if(R0(Q)&&v6.has(c6(Q)))return Q;for(let J of v6){let W=`${Q}${J}`;if(R0(W))return W}for(let J of v6){let W=i(Q,`index${J}`);if(R0(W))return W}return null}function gH($){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 Jz($){return c6($)!==".ts"}function mH($,Z,Q=new Set){if(Q.has($)||!R0($))return;if(Q.add($),!v6.has(c6($)))return;let J=y8($,"utf8"),W=Jz($);for(let X of gH(J)){if(X.startsWith("node:")||_J.has(X))continue;if(bZ(X)){if(!W)continue;if(Object.hasOwn(UJ,X)||Object.hasOwn(UJ,b8(X))||fJ($,X)||hH(X)&&SH(X)||Z&&SH(X))continue;throw Error(`Cannot find module '${b8(X)}'`)}let Y=xH($,X);if(Y)mH(Y,Z,Q)}}function vH($,Z=new Set,Q=new Set){if(Z.has($)||!R0($))return Q;if(Z.add($),!v6.has(c6($)))return Q;let J=y8($,"utf8");for(let W of gH(J)){if(Q.add(W),bZ(W))continue;let X=xH($,W);if(X)vH(X,Z,Q)}return Q}function Wz($,Z){let Q=LJ($),J={},W=vH($),X=new Set(iO);for(let[Y,j]of Object.entries(UJ)){try{Q.resolve(Y);continue}catch{}J[Y]=j}for(let Y of W)if(bZ(Y)&&(hH(Y)||Z))X.add(Y);for(let Y of X){if(Object.hasOwn(J,Y)||fJ($,Y))continue;let j=DJ(Y);if(j)J[Y]=j}if(!Z)return J;for(let Y of W){if(!bZ(Y)||Object.hasOwn(J,Y)||fJ($,Y)||Y.startsWith("node:")||_J.has(Y))continue;let j=DJ(Y);if(j)J[Y]=j}return J}function Xz($){let Z=c6($);return Z===".ts"||Z===".tsx"||Z===".mts"||Z===".cts"}var _2;function Yz(){if(_2!==void 0)return _2;let $=IH("jiti");if(!$)return _2=null,null;let Z=i($,"dist","babel.cjs");if(!R0(Z))return _2=null,null;try{let J=LJ(Z)(Z);_2=typeof J==="function"?J:null}catch{_2=null}return _2}async function cH($,Z={}){let Q=!Qz($);mH($,Q);let J=Wz($,Q),W=sO(J),X=await import("jiti"),Y=typeof X==="function"?X:typeof X.default==="function"?X.default:void 0;if(!Y)throw Error("Unable to load jiti");let j=Object.entries(W).filter(([,G])=>Xz(G)).map(([G])=>G),V=Yz(),B=V?(G)=>V({...G,interopDefault:!0}):void 0;return await Y($,{alias:W,cache:Z.useCache,requireCache:Z.useCache,esmResolve:!0,interopDefault:!1,nativeModules:[..._J],transformModules:j,tryNative:!1,...B?{transform:B}:{}}).import($,{})}function uH($,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 dH($){return typeof $==="object"&&$!==null}function qJ($){return Array.isArray($)&&$.every((Z)=>typeof Z==="string")}function Bz($,Z){if(!dH($.manifest))throw Error(`Invalid plugin module at ${Z}: missing required "manifest"`);if(!qJ($.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")&&!qJ($.manifest.providerIds))throw Error(`Invalid plugin module at ${Z}: manifest.providerIds must be a string array when provided`);if(Object.hasOwn($.manifest,"modelIds")&&!qJ($.manifest.modelIds))throw Error(`Invalid plugin module at ${Z}: manifest.modelIds must be a string array when provided`)}function Hz($,Z){if(!dH($))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"`);Bz($,Z)}async function u6($,Z={}){let Q=jz(Z.cwd??process.cwd(),$),J=await cH(Q,{useCache:Z.useCache}),W=Z.exportName??"plugin",X=J.default??J[W];Hz(X,Q);let Y=X,j=Y.setup,V=j?(B,H)=>{let G={...Z.session,...H.session},K={...H,session:Object.keys(G).length>0?G:void 0,client:Z.client??H.client,user:Z.user??H.user,workspaceInfo:Z.workspaceInfo??H.workspaceInfo,automation:Z.automation??H.automation,logger:Z.logger??H.logger,telemetry:Z.telemetry??H.telemetry};return j(B,K)}:void 0;return{...Y,manifest:Vz(Y.manifest),setup:V}}async function yZ($,Z={}){return(await T2($,Z)).plugins}async function T2($,Z={}){let Q=[],J=[],W=new Map,X=0;for(let j of $)try{let V=await u6(j,Z);if(!uH(V.manifest,Z))continue;let B=W.get(V.name);if(B)J.push({type:"duplicate_plugin_override",pluginName:V.name,pluginPath:j,overriddenPluginPath:B.pluginPath,message:`Plugin "${V.name}" from ${j} overrides ${B.pluginPath}`});W.set(V.name,{plugin:V,pluginPath:j,order:X++})}catch(V){let B=V instanceof Error?V.message:String(V);Q.push({pluginPath:j,phase:"load",message:B,stack:V instanceof Error?V.stack:void 0})}let Y=[...W.values()].sort((j,V)=>j.order-V.order);return{plugins:Y.map((j)=>j.plugin),pluginPaths:Y.map((j)=>j.pluginPath),failures:Q,warnings:J}}import{existsSync as MJ}from"node:fs";import{createRequire as oH}from"node:module";import{dirname as kZ,join as h8}from"node:path";import{fileURLToPath as Uz}from"node:url";var nH={};E(nH,{resolveSubprocessRuntimeExecutable:()=>OJ,buildSubprocessSandboxCommand:()=>iH,SubprocessSandbox:()=>k8,CLINE_JS_RUNTIME_PATH_ENV:()=>rH});import{spawn as Gz}from"node:child_process";import{basename as Kz}from"node:path";import{augmentNodeCommandForDebug as Fz,withResolvedClineBuildEnv as Az}from"@cline/shared";function lH($){if($ instanceof Error)return $;return Error(String($))}var rH="CLINE_JS_RUNTIME_PATH";function pH($){let Z=$?.trim();if(!Z)return!1;let Q=Kz(Z).toLowerCase();return Q==="node"||Q==="node.exe"||Q==="bun"||Q==="bun.exe"}function OJ($={}){let Z=$.env??process.env,Q=$.runtimeExecutable?.trim()||Z[rH]?.trim();if(Q)return Q;let J=$.execPath?.trim()||process.execPath;if(pH(J))return J;for(let W of[Z.BUN_EXEC_PATH,Z.npm_node_execpath,Z.NODE]){let X=W?.trim();if(X&&pH(X))return X}return"node"}function iH($,Z={}){let Q=OJ({env:Z.env,execPath:Z.execPath,runtimeExecutable:Z.runtimeExecutable});return Fz([Q,...$],{env:Z.env,execArgv:Z.execArgv,debugRole:Z.name==="plugin-sandbox"?"plugin-sandbox":"sandbox"})}class k8{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=iH($,{name:this.options.name,runtimeExecutable:this.options.runtimeExecutable}),Q=Gz(Z[0]??OJ(this.options),Z.slice(1),{stdio:["ignore","ignore","pipe","ipc"],env:Az(process.env),windowsHide:!0});this.process=Q;let J="",W=(X)=>{let Y=J+X;J=Y.length>4000?Y.slice(-4000):Y};Q.stderr?.setEncoding("utf8"),Q.stderr?.on("data",(X)=>{W(X)}),Q.on("message",(X)=>{this.onMessage(X)}),Q.on("error",(X)=>{this.failPending(Error(`${this.processLabel} process error: ${lH(X).message}`))}),Q.on("exit",(X,Y)=>{this.process=null;let j=J.trim();this.failPending(Error(`${this.options.name??"sandbox"} process exited (code=${String(X)}, signal=${String(Y)})${j?`: ${j}`:""}`))})}async call($,Z,Q={}){this.start();let J=this.process;if(!J||J.exitCode!==null)throw Error(`${this.processLabel} process is not available`);let W=`req_${++this.requestCounter}`,X={type:"call",id:W,method:$,args:Z};return await new Promise((Y,j)=>{let V={resolve:(B)=>Y(B),reject:j};if((Q.timeoutMs??0)>0)V.timeout=setTimeout(()=>{this.clearPendingRequest(W),this.shutdown().catch(()=>{}),j(Error(`${this.processLabel} call timed out after ${Q.timeoutMs}ms: ${$}`))},Q.timeoutMs);this.pending.set(W,V),J.send(X,(B)=>{if(!B)return;let H=this.clearPendingRequest(W);if(!H)return;H.reject(Error(`${this.processLabel} failed to send call "${$}": ${lH(B).message}`))})})}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 fz($){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 d6($){return($ instanceof Error?$.message:String($)).includes("Unknown sandbox plugin id:")}function Dz(){return`@cline/cli-${process.platform==="win32"?"windows":process.platform}-${process.arch}`}function Lz(){let $=process.env.CLINE_WRAPPER_PATH?.trim();if(!$)return;try{let Q=oH($).resolve(`${Dz()}/package.json`),J=h8(kZ(Q),"extensions","plugin-sandbox-bootstrap.js");return MJ(J)?J:void 0}catch{return}}function _z(){let $=process.execPath?.trim();if(!$)return;let Z=h8(kZ(kZ($)),"extensions","plugin-sandbox-bootstrap.js");return MJ(Z)?Z:void 0}function Tz(){let $=kZ(Uz(import.meta.url)),Z=oH(import.meta.url),Q=[h8($,"plugin-sandbox-bootstrap.js"),h8($,"extensions","plugin-sandbox-bootstrap.js"),h8($,"agents","plugin-sandbox-bootstrap.js"),Lz(),_z()];for(let X of Q.filter((Y)=>typeof Y==="string"))if(MJ(X))return{file:X};let J=h8($,"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(`
|
|
203
203
|
`)}}var zJ=Tz();function RJ($,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 I8($){let Z=new k8({name:"plugin-sandbox",..."file"in zJ?{bootstrapFile:zJ.file}:{bootstrapScript:zJ.script},onEvent:$.onEvent}),Q=RJ($.importTimeoutMs,4000,"CLINE_PLUGIN_IMPORT_TIMEOUT_MS"),J=RJ($.hookTimeoutMs,3000),W=RJ($.contributionTimeoutMs,60000),X={pluginPaths:$.pluginPaths,exportName:$.exportName,providerId:$.providerId,modelId:$.modelId,cwd:$.cwd,session:$.session,client:$.client,user:$.user,workspaceInfo:$.workspaceInfo,loggerEnabled:Boolean($.logger)},Y,j=()=>{return Y??=Z.call("initialize",X,{timeoutMs:Q}).finally(()=>{Y=void 0}),Y},V;try{V=await Z.call("initialize",X,{timeoutMs:Q})}catch(G){throw await Z.shutdown().catch(()=>{}),G}let B=V.plugins.map(fz);return{extensions:B.map((G)=>{let K={name:G.name,__clinePluginPath:G.pluginPath,manifest:G.manifest,setup:(F)=>{qz(F,Z,G,W,j),Oz(F,Z,G,W,j),zz(F,Z,G,W,j),Mz(F,Z,G,W,j),Rz(F,G)}};return K.hooks=Ez(Z,G,J,j),K}),failures:V.failures,pluginPaths:B.map((G)=>G.pluginPath),shutdown:async()=>{await Z.shutdown()},warnings:V.warnings}}function qz($,Z,Q,J,W){for(let X of Q.contributions?.tools??[]){let Y={name:X.name,description:X.description??"",inputSchema:X.inputSchema??{type:"object",properties:{}},timeoutMs:X.timeoutMs,retryable:X.retryable,execute:async(j,V)=>{try{return await Z.call("executeTool",{pluginId:Q.pluginId,contributionId:X.id,input:j,context:V},{timeoutMs:J})}catch(B){if(!d6(B))throw B;return await W(),await Z.call("executeTool",{pluginId:Q.pluginId,contributionId:X.id,input:j,context:V},{timeoutMs:J})}}};$.registerTool(Y)}}function Oz($,Z,Q,J,W){for(let X of Q.contributions?.commands??[])$.registerCommand({name:X.name,description:X.description,handler:async(Y)=>{try{return await Z.call("executeCommand",{pluginId:Q.pluginId,contributionId:X.id,input:Y},{timeoutMs:J})}catch(j){if(!d6(j))throw j;return await W(),await Z.call("executeCommand",{pluginId:Q.pluginId,contributionId:X.id,input:Y},{timeoutMs:J})}}})}function zz($,Z,Q,J,W){for(let X of Q.contributions?.rules??[])$.registerRule({id:X.ruleId,source:X.source,content:X.hasContentHandler===!0?async()=>{try{return await Z.call("resolveRuleContent",{pluginId:Q.pluginId,contributionId:X.id},{timeoutMs:J})}catch(Y){if(!d6(Y))throw Y;return await W(),await Z.call("resolveRuleContent",{pluginId:Q.pluginId,contributionId:X.id},{timeoutMs:J})}}:X.content??""})}function Rz($,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 Mz($,Z,Q,J,W){for(let X of Q.contributions?.messageBuilders??[])$.registerMessageBuilder({name:X.name,async build(Y){try{let j=await Z.call("buildMessages",{pluginId:Q.pluginId,contributionId:X.id,messages:Y},{timeoutMs:J});return aH(j)?j:Y}catch(j){if(!d6(j))throw j;await W();let V=await Z.call("buildMessages",{pluginId:Q.pluginId,contributionId:X.id,messages:Y},{timeoutMs:J});return aH(V)?V:Y}}})}function aH($){return Array.isArray($)&&$.every((Z)=>typeof Z==="object"&&Z!==null&&("role"in Z)&&("content"in Z))}function Nz($,Z,Q,J,W){return async(X)=>{try{return await $.call("invokeHook",{pluginId:Z,hookName:Q,payload:X},{timeoutMs:J})}catch(Y){if(!d6(Y))throw Y;return await W(),await $.call("invokeHook",{pluginId:Z,hookName:Q,payload:X},{timeoutMs:J})}}}function Ez($,Z,Q,J){let W={};for(let X of Z.hooks??[])W[X]=Nz($,Z.pluginId,X,Q,J);return Object.keys(W).length>0?W:void 0}var EJ="package.json",kz="package";function l6($){return bz($)}function p6($){return Sz($)}function hz($){try{return xZ($)&&wz($).isDirectory()}catch{return!1}}function CJ($){let Z=[],Q=new Set;for(let J of $){let W=IZ(J);if(Q.has(W))continue;Q.add(W),Z.push(W)}return Z}function tH($){let Z=CJ($);return LZ(Z)}function eH($){return l6($).flatMap((Z)=>p6(Z)).filter((Z)=>xZ(Z))}function Iz($,Z){let Q=[];for(let J of $)try{Q.push(...sH([J],Z))}catch{}return Q}function NJ($){return typeof $==="object"&&$!==null}function xz($){try{let Z=JSON.parse(Cz(gZ($,EJ),"utf8"));if(!NJ(Z)||!NJ(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(!NJ(W)||!Array.isArray(W.paths))continue;for(let X of W.paths)if(typeof X==="string")J.push(X)}return J}catch{return[]}}function $G($,Z){let Q=IZ(Z);return xz($).some((J)=>IZ($,J)===Q)}function gz($,Z){return Pz($)===kz&&xZ(gZ(hZ($),EJ))&&$G(hZ($),Z)}function mz($){let Z=IZ($),Q=[],J=hZ(Z);while(!0){if(gz(J,Z)){Q.push(J);break}if(xZ(gZ(J,EJ))){if($G(J,Z))Q.push(J);break}let W=hZ(J);if(W===J)break;J=W}return CJ(Q)}function l1($={}){let Z=$.cwd??process.cwd(),Q=eH($.workspacePath),J=sH($.pluginPaths??[],Z);return tH([...J,...Q])}function vz($={}){let Z=$.cwd??process.cwd(),Q=eH($.workspacePath),J=Iz($.pluginPaths??[],Z);return tH([...J,...Q])}function p1($){let Z=[];for(let Q of $)for(let J of mz(Q)){let W=gZ(J,yz);if(hz(W))Z.push(W)}return CJ(Z)}function ZG($={}){return p1(vz($))}async function x8($={}){let Z=l1($);if(Z.length===0)return{extensions:[],failures:[],warnings:[],pluginPaths:[]};if($.mode==="in_process"){let J=await T2(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 I8({pluginPaths:Z,exportName:$.exportName,importTimeoutMs:$.importTimeoutMs,hookTimeoutMs:$.hookTimeoutMs,contributionTimeoutMs:$.contributionTimeoutMs,onEvent:$.onEvent,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 cz}from"node:child_process";import{promisify as uz}from"node:util";var dz=uz(cz);function wJ($,Z){$?.log(Z,{severity:"warn"})}function lz($){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 q2($,Z){let Q=await dz("git",["-C",$,...Z],{windowsHide:!0});return{stdout:Q.stdout.trim(),stderr:Q.stderr.trim()}}async function PJ($,Z){if(!$)return;let Q=`refs/cline/checkpoints/${Z}/`;try{let{stdout:J}=await q2($,["for-each-ref","--format=%(refname)",Q]),W=J.trim().split(`
|
|
204
204
|
`).filter(Boolean);await Promise.allSettled(W.map((X)=>q2($,["update-ref","-d",X])))}catch{}}async function QG($,Z,Q){if(!$||Q.length===0)return;await Promise.allSettled(Q.map((J)=>q2($,["update-ref",`refs/cline/checkpoints/${Z}/${J.runCount}`,J.ref])))}function pz($,Z){let Q=$.findIndex((J)=>J.runCount===Z.runCount);if(Q<0)return[...$,Z];return $.map((J,W)=>W===Q?Z:J)}function JG($){let Z=$.initialRunCount??0,Q,J=async()=>{if(Q!==void 0)return Q;try{Q=(await q2($.cwd,["rev-parse","--is-inside-work-tree"])).stdout==="true"}catch{Q=!1}return Q},W=async()=>{if($.createCheckpoint)return await $.createCheckpoint({cwd:$.cwd,sessionId:$.sessionId,runCount:Z});if(!await J())return;let X=async(B)=>{try{let G=(await q2($.cwd,["rev-parse","HEAD"])).stdout.trim();if(!G)return;return{ref:G,createdAt:Date.now(),runCount:Z,kind:"commit"}}catch(H){wJ($.logger,`${B}: ${H instanceof Error?H.message:String(H)}`);return}},Y=`cline checkpoint session=${$.sessionId} run=${Z}`,j="";try{j=(await q2($.cwd,["stash","create",Y])).stdout.trim()}catch(B){return wJ($.logger,`Checkpoint snapshot failed: ${B instanceof Error?B.message:String(B)}`),X("Checkpoint HEAD fallback failed")}if(!j)return X("Checkpoint HEAD fallback failed");let V=`refs/cline/checkpoints/${$.sessionId}/${Z}`;try{await q2($.cwd,["update-ref",V,j])}catch(B){wJ($.logger,`Checkpoint store failed: ${B instanceof Error?B.message:String(B)}`);return}return{ref:j,createdAt:Date.now(),runCount:Z,kind:"stash"}};return{beforeRun:async({snapshot:X})=>{if(X.parentAgentId!=null)return;Z+=1;return},beforeModel:async({snapshot:X})=>{if(X.parentAgentId!=null||X.iteration!==1||Z<1)return;let Y=await W();if(!Y)return;let j=await $.readSessionMetadata(),V=lz(j);if(V?.latest.ref===Y.ref)return;let B=pz(V?.history??[],Y);await $.writeSessionMetadata({...j??{},checkpoint:{latest:Y,history:B}});return}}}import{spawn as $R}from"node:child_process";import{appendFileSync as ZR,readFileSync as QR}from"node:fs";import{join as JR}from"node:path";import{augmentNodeCommandForDebug as YG,withResolvedClineBuildEnv as yJ}from"@cline/shared";import{ensureHookLogDir as WG}from"@cline/shared/storage";function g8($,Z){if(!Z)return;return{name:$,manifest:{capabilities:["hooks"]},hooks:Z}}import{existsSync as rz,readdirSync as iz}from"node:fs";import{basename as nz,extname as az,join as oz}from"node:path";import{HOOKS_CONFIG_DIRECTORY_NAME as mZ,resolveHooksConfigSearchPaths as sz}from"@cline/shared/storage";function r6($){return sz($)}var m8;((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"})(m8||={});var i6={["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"},tz=new Map(Object.values(m8).map(($)=>[$.toLowerCase(),$])),ez=new Set(["",".sh",".bash",".zsh",".js",".mjs",".cjs",".ts",".mts",".cts",".py",".ps1"]);function n6($){let Z=az($).toLowerCase();if(!ez.has(Z))return;let Q=nz($,Z).trim().toLowerCase();return tz.get(Q)}function E$($){let Z=[],Q=new Set,J=r6($).filter((W)=>rz(W));for(let W of J)try{for(let X of iz(W,{withFileTypes:!0})){if(!X.isFile())continue;let Y=n6(X.name);if(!Y)continue;let j=oz(W,X.name);if(Q.has(j))continue;Q.add(j),Z.push({fileName:Y,hookEventName:i6[Y],path:j})}}catch{}return Z.sort((W,X)=>W.path.localeCompare(X.path))}function cZ($){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 vZ($,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 WR($,Z){if(!Z)return $;if(!$)return{...Z};let Q=[$.context,Z.context].filter((W)=>typeof W==="string"&&W.length>0).join(`
|
|
205
205
|
`),J=[...$.appendMessages??[],...Z.appendMessages??[]];return{cancel:$.cancel===!0||Z.cancel===!0?!0:void 0,review:$.review===!0||Z.review===!0?!0:void 0,context:Q||void 0,overrideInput:Z.overrideInput!==void 0?Z.overrideInput:$.overrideInput,systemPrompt:Z.systemPrompt!==void 0?Z.systemPrompt:$.systemPrompt,appendMessages:J.length>0?J:void 0}}function XR($){if(!$||typeof $!=="object")return;let Z=$,Q=typeof Z.context==="string"?Z.context:typeof Z.contextModification==="string"?Z.contextModification:typeof Z.errorMessage==="string"?Z.errorMessage:void 0;return{cancel:typeof Z.cancel==="boolean"?Z.cancel:void 0,review:typeof Z.review==="boolean"?Z.review:void 0,context:Q,overrideInput:Object.hasOwn(Z,"overrideInput")?Z.overrideInput:void 0}}function SJ($){let Z=String($??"").toLowerCase();return Z.includes("cancel")||Z.includes("abort")||Z.includes("interrupt")}function M0($,Z){let Q=process.env.CLINE_USER_ID?.trim()||process.env.USER?.trim()||"unknown",J={rootSessionId:Z.rootSessionId||$.conversationId};return{clineVersion:process.env.CLINE_VERSION?.trim()||"",timestamp:new Date().toISOString(),taskId:$.conversationId,sessionContext:J,workspaceRoots:Z.workspacePath?[Z.workspacePath]:[],workspaceInfo:Z.workspaceInfo,userId:Q,agent_id:$.agentId,parent_agent_id:$.parentAgentId}}function YR($){let Z=$.trim();if(!Z)return{};let J=Z.split(`
|
package/dist/hub/index.js
CHANGED
|
@@ -273,7 +273,7 @@ ${JSON.stringify(J,null,2)}`}startClaimLeaseHeartbeat($){let Z=Math.max(1000,Mat
|
|
|
273
273
|
error = ?,
|
|
274
274
|
scheduled_for = COALESCE(?, scheduled_for),
|
|
275
275
|
updated_at = ?
|
|
276
|
-
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 P9($){return $?new Date($).getTime():void 0}function SL($){let Z=$.metadata?{...$.metadata}:void 0;if(Z)delete Z.__hubScheduleCreatedBy,delete Z.__hubScheduleCwd,delete Z.__hubRuntimeOptions;return Z}function w9($){let Z=$.metadata;return{scheduleId:$.externalId,name:$.title,cronPattern:$.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==="yolo"?"yolo":"act",systemPrompt:$.systemPrompt,maxIterations:$.maxIterations,timeoutSeconds:$.timeoutSeconds,maxParallel:$.maxParallel??1,createdAt:new Date($.createdAt).getTime(),updatedAt:new Date($.updatedAt).getTime(),nextRunAt:P9($.nextRunAt),lastRunAt:P9($.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:SL($)}}function bL($){switch($){case"done":return"success";case"cancelled":return"aborted";case"running":return"running";case"queued":return"pending";default:return"failed"}}function q3($,Z){return{executionId:$.runId,scheduleId:Z,sessionId:$.sessionId,triggeredAt:new Date($.scheduledFor??$.createdAt).getTime(),startedAt:P9($.startedAt),endedAt:P9($.completedAt),status:bL($.status),errorMessage:$.error}}class j8{store;materializer;runner;started=!1;disposed=!1;constructor($){this.store=new r4({dbPath:$.dbPath}),this.materializer=new m4({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(L3($.cronPattern),!$.workspaceRoot?.trim())throw Error("workspaceRoot is required for schedules");return w9(this.store.createHubSchedule($))}getSchedule($){let Z=this.store.getHubSchedule($);return Z?w9(Z):void 0}listSchedules($={}){return this.store.listHubSchedules($).map((Z)=>w9(Z))}updateSchedule($,Z){if(Z.cronPattern!==void 0)L3(Z.cronPattern);let Q=this.store.getHubSchedule($);if(!Q)return;let J=Z.workspaceRoot!==void 0?Z.workspaceRoot.trim():Q.workspaceRoot;if((Z.enabled??Q.enabled)&&!J)throw Error("workspaceRoot is required for enabled schedules");let X=this.store.updateHubSchedule($,{...Z,scheduleId:$});return X?w9(X):void 0}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 q3(Q,$)}triggerScheduleNowDetached($){let Z=this.store.enqueueHubScheduleRun($,"manual");if(!Z)return;return this.runner.tick().catch(()=>{return}),q3(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 q3(W,X.externalId)}).filter((W)=>{if(!W)return!1;return!$.status||W.status===$.status})}getScheduleStats($){let Z=this.listScheduleExecutions({scheduleId:$,limit:1e4});if(Z.length===0)return{totalRuns:0,successRate:0,avgDurationSeconds:0};let Q=0,J=0,W=0,X;for(let Y of Z){if(Y.status==="success"||Y.status==="completed")Q+=1;if(!X&&Y.status!=="success"&&Y.status!=="completed")X=Y;if(Y.startedAt&&Y.endedAt)W+=Y.endedAt-Y.startedAt,J+=1}return{totalRuns:Z.length,successRate:Q/Z.length,avgDurationSeconds:J>0?W/J/1000:0,lastFailure:X}}getActiveExecutions(){return this.runner.getActiveRuns().flatMap(($)=>{let Z=this.store.getSpec($.specId);if(!Z||Z.source!=="hub-schedule"||!$.sessionId)return[];return[{executionId:$.runId,scheduleId:Z.externalId,sessionId:$.sessionId,startedAt:$.startedAt??new Date().toISOString(),timeoutAt:Z.timeoutSeconds&&$.startedAt?new Date(new Date($.startedAt).getTime()+Z.timeoutSeconds*1000).toISOString():void 0}]})}getUpcomingRuns($=20){let Z={triggerKind:"schedule",enabled:!0,limit:$};return this.store.listSpecs(Z).flatMap((Q)=>Q.source==="hub-schedule"&&Q.nextRunAt?[{spec:Q,nextRunAt:Q.nextRunAt}]:[]).sort((Q,J)=>String(Q.nextRunAt).localeCompare(String(J.nextRunAt))).slice(0,$).map(({spec:Q,nextRunAt:J})=>({scheduleId:Q.externalId,name:Q.title,nextRunAt:J}))}}e9();import{createSessionId as qT,isHubProtocolCompatible as zT,resolveClineBuildEnv as RT,resolveHubCommandTimeoutMs as MT}from"@cline/shared";var QV={};E(QV,{splitCoreSessionConfig:()=>Q6,isSessionNotFoundError:()=>m1,SessionNotFoundError:()=>g1,SESSION_NOT_FOUND_ERROR_CODE:()=>Q2});var Q2="session_not_found";class g1 extends Error{sessionId;code="session_not_found";constructor($,Z){super(Z??($?`session not found: ${$}`:"session not found"));this.sessionId=$;this.name="SessionNotFoundError"}}function m1($){return $ instanceof g1||typeof $==="object"&&$!==null&&"code"in $&&$.code==="session_not_found"}function Q6($){let{hooks:Z,logger:Q,telemetry:J,extensionContext:W,extraTools:X,extensions:Y,onTeamEvent:j,onConsecutiveMistakeLimitReached:V,checkpoint:B,compaction:H,...G}=$,K={};if(Z)K.hooks=Z;if(Q)K.logger=Q;if(J)K.telemetry=J;if(W)K.extensionContext=W;if(X)K.extraTools=X;if(Y)K.extensions=Y;if(j)K.onTeamEvent=j;if(V)K.onConsecutiveMistakeLimitReached=V;if(B?.createCheckpoint)K.checkpoint=B;if(H?.compact)K.compaction=H;let F=Object.keys(K).length>0?K:void 0;return{config:{...G,...B?{checkpoint:{enabled:B.enabled}}:{},...H?{compaction:{enabled:H.enabled,strategy:H.strategy,thresholdRatio:H.thresholdRatio,reserveTokens:H.reserveTokens,preserveRecentTokens:H.preserveRecentTokens,maxInputTokens:H.maxInputTokens,summarizer:H.summarizer}}:{}},...F?{localRuntime:F}:{}}}import{spawn as e_}from"node:child_process";import{closeSync as $T,mkdirSync as ZT,openSync as QT}from"node:fs";import{basename as JT,dirname as WT,join as XT}from"node:path";import{fileURLToPath as YT}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as jT,isHubDaemonProcess as fV,isHubProtocolCompatible as VT,resolveClineBuildEnv as UV,withResolvedClineBuildEnv as BT}from"@cline/shared";import{createHash as w_,randomBytes as P_}from"node:crypto";import{existsSync as S_}from"node:fs";import{chmod as b_,mkdir as E3,readFile as YV,rm as C3,writeFile as jV}from"node:fs/promises";import{dirname as VV,join as w3}from"node:path";import{resolveClineDataDir as J2,resolveClineDir as BV}from"@cline/shared/storage";var A8="0.0.59-nightly.1783567022";var J6={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:A8,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: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 y_="CLINE_HUB_DISCOVERY_PATH",h_="CLINE_HUB_BUILD_ID",WV=30000,k_=15000,I_=100;function x_($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function g_($){return w_("sha256").update($).digest("hex").slice(0,12)}function m_($){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 $Z(){return P_(32).toString("hex")}function v_($){return new Promise((Z)=>setTimeout(Z,$))}function c_($){return`${$}.lock`}async function u_($){try{let Z=JSON.parse(await YV(w3($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function XV($){await C3($,{recursive:!0,force:!0}).catch(()=>{return})}function ZZ(){return process.env[h_]?.trim()||String(J6.version)}function v1($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${g_($)}`,Q=process.env[y_]?.trim()||w3(J2(),"locks","hub","owners",`${x_(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function HV($=`hub-${Date.now().toString(36)}`){return v1($)}async function A0($){try{let Z=JSON.parse(await YV($,"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 QZ($,Z){await E3(VV($),{recursive:!0}),await C3($,{force:!0}).catch(()=>{return}),await jV($,`${JSON.stringify(Z,null,2)}
|
|
276
|
+
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 P9($){return $?new Date($).getTime():void 0}function SL($){let Z=$.metadata?{...$.metadata}:void 0;if(Z)delete Z.__hubScheduleCreatedBy,delete Z.__hubScheduleCwd,delete Z.__hubRuntimeOptions;return Z}function w9($){let Z=$.metadata;return{scheduleId:$.externalId,name:$.title,cronPattern:$.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==="yolo"?"yolo":"act",systemPrompt:$.systemPrompt,maxIterations:$.maxIterations,timeoutSeconds:$.timeoutSeconds,maxParallel:$.maxParallel??1,createdAt:new Date($.createdAt).getTime(),updatedAt:new Date($.updatedAt).getTime(),nextRunAt:P9($.nextRunAt),lastRunAt:P9($.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:SL($)}}function bL($){switch($){case"done":return"success";case"cancelled":return"aborted";case"running":return"running";case"queued":return"pending";default:return"failed"}}function q3($,Z){return{executionId:$.runId,scheduleId:Z,sessionId:$.sessionId,triggeredAt:new Date($.scheduledFor??$.createdAt).getTime(),startedAt:P9($.startedAt),endedAt:P9($.completedAt),status:bL($.status),errorMessage:$.error}}class j8{store;materializer;runner;started=!1;disposed=!1;constructor($){this.store=new r4({dbPath:$.dbPath}),this.materializer=new m4({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(L3($.cronPattern),!$.workspaceRoot?.trim())throw Error("workspaceRoot is required for schedules");return w9(this.store.createHubSchedule($))}getSchedule($){let Z=this.store.getHubSchedule($);return Z?w9(Z):void 0}listSchedules($={}){return this.store.listHubSchedules($).map((Z)=>w9(Z))}updateSchedule($,Z){if(Z.cronPattern!==void 0)L3(Z.cronPattern);let Q=this.store.getHubSchedule($);if(!Q)return;let J=Z.workspaceRoot!==void 0?Z.workspaceRoot.trim():Q.workspaceRoot;if((Z.enabled??Q.enabled)&&!J)throw Error("workspaceRoot is required for enabled schedules");let X=this.store.updateHubSchedule($,{...Z,scheduleId:$});return X?w9(X):void 0}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 q3(Q,$)}triggerScheduleNowDetached($){let Z=this.store.enqueueHubScheduleRun($,"manual");if(!Z)return;return this.runner.tick().catch(()=>{return}),q3(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 q3(W,X.externalId)}).filter((W)=>{if(!W)return!1;return!$.status||W.status===$.status})}getScheduleStats($){let Z=this.listScheduleExecutions({scheduleId:$,limit:1e4});if(Z.length===0)return{totalRuns:0,successRate:0,avgDurationSeconds:0};let Q=0,J=0,W=0,X;for(let Y of Z){if(Y.status==="success"||Y.status==="completed")Q+=1;if(!X&&Y.status!=="success"&&Y.status!=="completed")X=Y;if(Y.startedAt&&Y.endedAt)W+=Y.endedAt-Y.startedAt,J+=1}return{totalRuns:Z.length,successRate:Q/Z.length,avgDurationSeconds:J>0?W/J/1000:0,lastFailure:X}}getActiveExecutions(){return this.runner.getActiveRuns().flatMap(($)=>{let Z=this.store.getSpec($.specId);if(!Z||Z.source!=="hub-schedule"||!$.sessionId)return[];return[{executionId:$.runId,scheduleId:Z.externalId,sessionId:$.sessionId,startedAt:$.startedAt??new Date().toISOString(),timeoutAt:Z.timeoutSeconds&&$.startedAt?new Date(new Date($.startedAt).getTime()+Z.timeoutSeconds*1000).toISOString():void 0}]})}getUpcomingRuns($=20){let Z={triggerKind:"schedule",enabled:!0,limit:$};return this.store.listSpecs(Z).flatMap((Q)=>Q.source==="hub-schedule"&&Q.nextRunAt?[{spec:Q,nextRunAt:Q.nextRunAt}]:[]).sort((Q,J)=>String(Q.nextRunAt).localeCompare(String(J.nextRunAt))).slice(0,$).map(({spec:Q,nextRunAt:J})=>({scheduleId:Q.externalId,name:Q.title,nextRunAt:J}))}}e9();import{createSessionId as qT,isHubProtocolCompatible as zT,resolveClineBuildEnv as RT,resolveHubCommandTimeoutMs as MT}from"@cline/shared";var QV={};E(QV,{splitCoreSessionConfig:()=>Q6,isSessionNotFoundError:()=>m1,SessionNotFoundError:()=>g1,SESSION_NOT_FOUND_ERROR_CODE:()=>Q2});var Q2="session_not_found";class g1 extends Error{sessionId;code="session_not_found";constructor($,Z){super(Z??($?`session not found: ${$}`:"session not found"));this.sessionId=$;this.name="SessionNotFoundError"}}function m1($){return $ instanceof g1||typeof $==="object"&&$!==null&&"code"in $&&$.code==="session_not_found"}function Q6($){let{hooks:Z,logger:Q,telemetry:J,extensionContext:W,extraTools:X,extensions:Y,onTeamEvent:j,onConsecutiveMistakeLimitReached:V,checkpoint:B,compaction:H,...G}=$,K={};if(Z)K.hooks=Z;if(Q)K.logger=Q;if(J)K.telemetry=J;if(W)K.extensionContext=W;if(X)K.extraTools=X;if(Y)K.extensions=Y;if(j)K.onTeamEvent=j;if(V)K.onConsecutiveMistakeLimitReached=V;if(B?.createCheckpoint)K.checkpoint=B;if(H?.compact)K.compaction=H;let F=Object.keys(K).length>0?K:void 0;return{config:{...G,...B?{checkpoint:{enabled:B.enabled}}:{},...H?{compaction:{enabled:H.enabled,strategy:H.strategy,thresholdRatio:H.thresholdRatio,reserveTokens:H.reserveTokens,preserveRecentTokens:H.preserveRecentTokens,maxInputTokens:H.maxInputTokens,summarizer:H.summarizer}}:{}},...F?{localRuntime:F}:{}}}import{spawn as e_}from"node:child_process";import{closeSync as $T,mkdirSync as ZT,openSync as QT}from"node:fs";import{basename as JT,dirname as WT,join as XT}from"node:path";import{fileURLToPath as YT}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as jT,isHubDaemonProcess as fV,isHubProtocolCompatible as VT,resolveClineBuildEnv as UV,withResolvedClineBuildEnv as BT}from"@cline/shared";import{createHash as w_,randomBytes as P_}from"node:crypto";import{existsSync as S_}from"node:fs";import{chmod as b_,mkdir as E3,readFile as YV,rm as C3,writeFile as jV}from"node:fs/promises";import{dirname as VV,join as w3}from"node:path";import{resolveClineDataDir as J2,resolveClineDir as BV}from"@cline/shared/storage";var A8="0.0.59";var J6={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:A8,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: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 y_="CLINE_HUB_DISCOVERY_PATH",h_="CLINE_HUB_BUILD_ID",WV=30000,k_=15000,I_=100;function x_($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function g_($){return w_("sha256").update($).digest("hex").slice(0,12)}function m_($){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 $Z(){return P_(32).toString("hex")}function v_($){return new Promise((Z)=>setTimeout(Z,$))}function c_($){return`${$}.lock`}async function u_($){try{let Z=JSON.parse(await YV(w3($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function XV($){await C3($,{recursive:!0,force:!0}).catch(()=>{return})}function ZZ(){return process.env[h_]?.trim()||String(J6.version)}function v1($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${g_($)}`,Q=process.env[y_]?.trim()||w3(J2(),"locks","hub","owners",`${x_(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function HV($=`hub-${Date.now().toString(36)}`){return v1($)}async function A0($){try{let Z=JSON.parse(await YV($,"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 QZ($,Z){await E3(VV($),{recursive:!0}),await C3($,{force:!0}).catch(()=>{return}),await jV($,`${JSON.stringify(Z,null,2)}
|
|
277
277
|
`,{encoding:"utf8",mode:384}),await b_($,384)}async function g0($){await C3($,{force:!0}).catch(()=>{return})}async function JZ($,Z){let Q=c_($);await E3(VV(Q),{recursive:!0});let J=Date.now()+k_;while(!0)try{await E3(Q,{recursive:!1}),await jV(w3(Q,"owner.json"),`${JSON.stringify({pid:process.pid,acquiredAt:new Date().toISOString()},null,2)}
|
|
278
278
|
`,"utf8");try{return await Z()}finally{await XV(Q)}}catch(W){if((W instanceof Error&&"code"in W?String(W.code):"")!=="EEXIST")throw W;let Y=await u_(Q),j=Y?Date.now()-Date.parse(Y.acquiredAt):WV+1;if(!Y||!m_(Y.pid)||j>WV){await XV(Q);continue}if(Date.now()>=J)throw Error(`Timed out waiting for hub startup lock ${Q}`);await v_(I_)}}async function c1($,Z){try{let Q=await fetch(Z?.authToken?P3($):WZ($),{headers:Z?.authToken?{authorization:`Bearer ${Z.authToken}`}:void 0});if(!Q.ok)return;let J=await Q.json();if(typeof J.protocolVersion!=="string"||typeof J.host!=="string"||typeof J.port!=="number"||typeof J.url!=="string")return;return{protocolVersion:J.protocolVersion,minClientProtocolVersion:typeof J.minClientProtocolVersion==="string"?J.minClientProtocolVersion:void 0,maxClientProtocolVersion:typeof J.maxClientProtocolVersion==="string"?J.maxClientProtocolVersion:void 0,capabilities:Array.isArray(J.capabilities)?J.capabilities.filter((W)=>typeof W==="string"):void 0,coreVersion:typeof J.coreVersion==="string"?J.coreVersion:void 0,buildId:typeof J.buildId==="string"?J.buildId:void 0,host:J.host,port:J.port,url:J.url,hubId:typeof J.hubId==="string"?J.hubId:void 0,authToken:typeof J.authToken==="string"?J.authToken:void 0,pid:typeof J.pid==="number"?J.pid:void 0,startedAt:typeof J.startedAt==="string"?J.startedAt:void 0,updatedAt:typeof J.updatedAt==="string"?J.updatedAt:void 0}}catch{return}}function X1($,Z,Q="/hub"){return new URL(`ws://${$}:${Z}${Q}`).toString()}function WZ($){let Z=new URL($);return Z.protocol=Z.protocol==="wss:"?"https:":"http:",Z.pathname="/health",Z.search="",Z.toString()}function P3($){let Z=new URL(WZ($));return Z.pathname="/status",Z.toString()}function GV($){return S_($)}import{CLINE_HUB_DEV_PORT as d_,CLINE_HUB_PORT as l_,resolveClineBuildEnv as p_}from"@cline/shared";var r_="CLINE_HUB_HOST",i_="CLINE_HUB_PORT",n_="CLINE_HUB_PATHNAME",S3="127.0.0.1",b3=l_,y3="/hub";function KV($){return p_($)==="development"?d_:b3}function h3($={}){return($.env??process.env)[r_]?.trim()||S3}function f8($={}){let Q=($.env??process.env)[i_]?.trim();if(!Q)return KV($);let J=Number.parseInt(Q,10);if(!Number.isInteger(J)||J<1||J>65535)return KV($);return J}function k3($={}){return($.env??process.env)[n_]?.trim()||y3}function D1($={},Z={}){return{host:$.host??h3(Z),port:$.port??f8(Z),pathname:$.pathname??k3(Z)}}import{join as a_}from"node:path";var o_="shared:cline",s_="CLINE_HUB_DISCOVERY_PATH",t_="hub-production";function FV($){let Z=S1($.trim());return v1(`workspace:${Z||$.trim()}`)}function Y1($=o_){return v1($)}function L1(){return{ownerId:t_,discoveryPath:process.env[s_]?.trim()||a_(J2(),"locks","hub","production.json")}}var HT=8000,GT=200,KT=3000,FT=100,AT=[100,250,500,1000,2000],fT="--cline-hub-daemon";function UT($){return[...$.host?["--host",$.host]:[],...typeof $.port==="number"?["--port",String($.port)]:[],...$.pathname?["--pathname",$.pathname]:[]]}function DT(){try{let $=XT(J2(),"logs","hub-daemon.log");return ZT(WT($),{recursive:!0}),{fd:QT($,"a"),logPath:$}}catch{return}}function DV(){return UV()==="production"?L1():Y1()}function W2($){return VT($).compatible}function AV($,Z,Q){if(!Z||Z.url!==Q)return $;return{...$,authToken:$.authToken??Z.authToken,pid:$.pid??Z.pid}}async function X2($,Z){try{return await c1($,{authToken:Z})}catch{return}}async function LT($,Z){let Q=Date.now()+Z;while(Date.now()<Q){if(!(await X2($))?.url)return!0;await new Promise((W)=>setTimeout(W,FT))}return!1}async function XZ($,Z){if(await X6($.url,$.authToken).catch(()=>!1),$.pid)try{process.kill($.pid,"SIGTERM")}catch{}let Q=await LT($.url,KT);return await g0(Z).catch(()=>{return}),Q}async function W6($,Z){if(W2($))return!0;return XZ($,Z)}async function LV($){if(UV()!=="production")return;let Z=Y1();if(Z.discoveryPath===$.discoveryPath)return;let Q=await A0(Z.discoveryPath);if(Q?.url)await XZ(Q,Z.discoveryPath);else await g0(Z.discoveryPath).catch(()=>{return})}function _T(){let $=import.meta.url.endsWith(".ts")?"ts":"js";return YT(new URL(`./entry.${$}`,import.meta.url))}function TT($,Z){let Q=_T(),J=process.execPath?.trim();if(!J)throw Error("unable to resolve runtime executable for hub daemon");let W=JT(J).toLowerCase().includes("bun"),X=Q.startsWith("/$bunfs/"),Y=W&&Q.toLowerCase().endsWith(".ts"),j=X?[fT]:[...Y?["--conditions=development"]:[],Q];return{launcher:J,args:[...j,"--cwd",$,...UT(Z)],cwd:$,env:{...BT(process.env),CLINE_NO_INTERACTIVE:"1",[jT]:"1"}}}function OT($){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 I3($,Z={}){if(fV())return;let Q=TT($,Z),J=DT();try{e_(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)$T(J.fd)}}async function U8($,Z={}){for(let Q=0;;Q++)try{I3($,Z);return}catch(J){let W=AT[Q];if(!OT(J)||W===void 0)throw J;await new Promise((X)=>setTimeout(X,W))}}function YZ($,Z={}){if(fV())return;let Q=DV(),J=D1(Z),W=X1(J.host,J.port,J.pathname),X=Z.allowPortFallback===!0&&J.port!==0;LV(Q).catch(()=>{return}).then(()=>A0(Q.discoveryPath)).then(async(Y)=>{let j=!1;if(Y?.url)if(!Y.authToken){if(j=!0,!await XZ(Y,Q.discoveryPath)&&!X)return}else{let H=await X2(Y.url,Y.authToken);if(H?.url&&W2(H)&&await _1(H.url,{authToken:Y.authToken}))return;if(H?.url)await W6({...H,authToken:Y.authToken},Q.discoveryPath);else await g0(Q.discoveryPath).catch(()=>{return})}let V=await X2(W);if(V?.url){if(W2(V)){if(!X||!j)return}else if(!await W6({...V,authToken:void 0},Q.discoveryPath)&&!X)return}let B=X?{...J,port:0}:J;await U8($,B)}).catch(()=>{})}async function _V($,Z={}){let Q=DV(),J=Z.host!==void 0||Z.port!==void 0||Z.pathname!==void 0||!!process.env.CLINE_HUB_PORT?.trim(),W=D1(Z),X=X1(W.host,W.port,W.pathname),Y=(F)=>{if(!J)A$(F.url,F.authToken);return F};await LV(Q).catch(()=>{return});let j=await A0(Q.discoveryPath),V=!1;if(j?.url){let F=j.authToken;if(!F)V=!0,await XZ(j,Q.discoveryPath);else{let A=await X2(j.url,F);if(A?.url&&W2(A)&&await _1(A.url,{authToken:F}))return Y({url:A.url,authToken:F});if(A?.url)await W6({...A,authToken:F},Q.discoveryPath);else await g0(Q.discoveryPath).catch(()=>{return})}}let B=await X2(X);if(B?.url){let F=AV(B,j,X);if(W2(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 W6(F,Q.discoveryPath)&&Z.allowPortFallback!==!0&&W.port!==0)throw Error(`An incompatible Cline Hub is already running at ${X} and could not be retired automatically. Run 'cline doctor fix' to stop stale hub daemons before starting a new hub.`)}let G=Z.allowPortFallback===!0&&W.port!==0?{...W,port:0}:W;await U8($,G);let K=Date.now()+HT;while(Date.now()<K){let F=await A0(Q.discoveryPath);if(F?.url&&F.authToken){let D=await X2(F.url,F.authToken);if(D?.url&&W2(D)&&await _1(D.url,{authToken:F.authToken}))return Y({url:D.url,authToken:F.authToken})}let A=await X2(X);if(A?.url&&!W2(A)){let D=AV(A,F,X);if(!await W6(D,Q.discoveryPath)&&Z.allowPortFallback!==!0&&W.port!==0)throw Error(`An incompatible Cline Hub is still running at ${X} and could not be retired automatically. Run 'cline doctor fix' to stop stale hub daemons before starting a new hub.`)}await new Promise((D)=>setTimeout(D,GT))}throw Error("Timed out waiting for detached hub startup.")}function jZ(){return RT()==="production"?L1():Y1()}function NT(){let $=globalThis.WebSocket;if(!$)throw Error("Global WebSocket is not available in this runtime. Node 22+ is required for hub mode.");return $}function RV($){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 RV($.data);return String($)}function ET($){if(typeof $==="string")return $;if($ instanceof Uint8Array)return Buffer.from($).toString("utf8");if($ instanceof ArrayBuffer)return Buffer.from($).toString("utf8");return""}function TV($){let Z=$,Q=ET(Z.reason);return new b0("hub_connection_closed",Z.code||Q?`Hub connection closed (code=${Z.code??0}${Q?`, reason=${Q}`:""})`:x3,{closeCode:Z.code,closeReason:Q||void 0})}function CT($,Z){if($ instanceof b0)return $;if($ instanceof Error)return new b0("hub_connect_failed",$.message);if($&&typeof $==="object"&&"error"in $&&$.error instanceof Error)return new b0("hub_connect_failed",$.error.message);let Q=$&&typeof $==="object"&&"message"in $&&typeof $.message==="string"?$.message.trim():"";if(Q)return new b0("hub_connect_failed",Q);let J=$&&typeof $==="object"&&"type"in $&&typeof $.type==="string"?$.type.trim():"";return new b0("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 wT=8000,PT=200,OV="*",qV=8000,ST="cline-hub-auth.",MV=new Map,NV=new Set,bT=3000,yT=3000,hT=100,x3="Hub connection closed",kT=250,IT=5000,zV=0.5;class b0 extends Error{code;details;constructor($,Z,Q){super(Z);this.code=$;this.details=Q;this.name="HubTransportError"}}function v3($){return $ instanceof b0}class D8 extends Error{command;code;constructor($,Z,Q){super(Q);this.command=$;this.code=Z;this.name="HubCommandError"}}function VZ($,Z){return $ instanceof D8&&$.code==="hub_command_timeout"&&(Z===void 0||$.command===Z)}function EV($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=c3($.toString());return Q?MV.get(Q):void 0}function xT($){try{let Q=new URL($).hostname.toLowerCase().replace(/^\[|\]$/g,"");return Q==="localhost"||Q==="127.0.0.1"||Q==="::1"}catch{return!1}}function c3($){if(!xT($))return;let Z=new URL(f$($));return Z.search="",Z.hash="",Z.toString()}function g3($){let Z=c3($);return!!Z&&NV.has(Z)}function A$($,Z){let Q=c3($);if(Q){if(NV.add(Q),Z?.trim())MV.set(Q,Z)}return $}class j1{options;socket;connectPromise;clientId;currentUrl;recoveryPromise;pendingReplies=new Map;listeners=new Set;subscriptionCounts=new Map;reconnectTimer;reconnectAttempt=0;closedByClient=!1;lastCloseError=new b0("hub_connection_closed",x3);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}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()||EV($);$.hash="";let J=new(NT())($.toString(),Z?[`${ST}${Z}`]:void 0);this.socket=J;let W=!1;this.connectPromise=new Promise((X,Y)=>{let j=!1,V=setTimeout(()=>{if(j)return;j=!0,W=!0,this.lastCloseError=new b0("hub_connect_timeout",`Timed out connecting to hub after ${qV}ms`),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0;try{J.close()}catch{}Y(this.lastCloseError)},qV);J.addEventListener("open",()=>{if(j)return;j=!0,clearTimeout(V),X()}),J.addEventListener("error",(B)=>{if(j)return;j=!0,clearTimeout(V),this.lastCloseError=CT(B,$),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)}),J.addEventListener("close",(B)=>{if(j)return;if(j=!0,clearTimeout(V),!W)this.lastCloseError=TV(B),this.sawSocketClose=!0;this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)})}),J.addEventListener("message",(X)=>{this.handleFrame(JSON.parse(RV(X)))}),J.addEventListener("close",(X)=>{if(this.socket!==J)return;if(!W)this.lastCloseError=TV(X),this.sawSocketClose=!0;this.registered=!1;for(let Y of this.pendingReplies.values())Y.reject(this.lastCloseError);if(this.pendingReplies.clear(),this.connectPromise=void 0,this.socket=void 0,!this.closedByClient&&this.hasActiveSubscriptions())this.scheduleReconnect()}),await this.connectPromise,await this.command("client.register",{clientId:this.clientId,clientType:this.options.clientType??"core",displayName:this.options.displayName??"core",transport:"native",actorKind:"client",workspaceContext:{workspaceRoot:this.options.workspaceRoot,cwd:this.options.cwd}}),this.registered=!0;for(let X of this.subscriptionCounts.keys())this.sendSubscriptionFrame("stream.subscribe",this.subscriptionSessionIdFromKey(X));this.reconnectAttempt=0}subscribe($,Z){let Q=Z?.sessionId?.trim()||void 0,J={listener:$,sessionId:Q};return this.listeners.add(J),this.adjustSubscriptionCount(Q,1),()=>{if(!this.listeners.delete(J))return;this.adjustSubscriptionCount(Q,-1)}}async command($,Z,Q,J){let W=0,X=$!=="client.register"&&$!=="client.unregister";while(!0)try{return await this.commandOnce($,Z,Q,J)}catch(Y){if(!X||W>=1||!await this.recoverLocalHubTransport(Y))throw Y;W+=1}}async commandOnce($,Z,Q,J){await this.connect();let W=qT("hubreq_"),X=MT($,J?.timeoutMs),Y=new Promise((V,B)=>{let H=X===null?void 0:setTimeout(()=>{if(!this.pendingReplies.delete(W))return;B(new D8($,"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:(G)=>{if(H)clearTimeout(H);V(G)},reject:(G)=>{if(H)clearTimeout(H);B(G)}})});try{this.sendFrame({kind:"command",envelope:{version:"v1",command:$,requestId:W,clientId:this.clientId,sessionId:Q,timeoutMs:X,payload:Z}})}catch(V){throw this.pendingReplies.delete(W),V}let j=await Y;if(!j.ok){if(j.error?.code===Q2){let V=Q??(typeof Z?.sessionId==="string"?Z.sessionId:void 0);throw new g1(V,j.error.message)}throw new D8($,j.error?.code,j.error?.message??`Hub command ${$} failed`)}return j}async recoverLocalHubTransport($){if(!g3(this.currentUrl)||!v3($))return!1;if(this.recoveryPromise)return await this.recoveryPromise;return this.recoveryPromise=(async()=>{let Z=await Y2({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(kT*2**this.reconnectAttempt,IT),Z=Math.round($*(1-zV)+Math.random()*$*zV);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(!g3(this.currentUrl)){this.reconnectAttempt+=1,this.scheduleReconnect();return}try{let $=await Y2({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 b0("hub_connection_closed",x3),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 b0("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 $??OV}subscriptionSessionIdFromKey($){return $===OV?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 f$($){let Z=new URL($);if(Z.protocol==="http:")Z.protocol="ws:";else if(Z.protocol==="https:")Z.protocol="wss:";return Z.toString()}async function _1($,Z){let Q=new j1({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 m3($,Z){let Q=f$($),J=await c1(Q,{authToken:Z?.authToken});if(!J)return{status:"unreachable",url:Q};if(!zT(J).compatible)return{status:"protocol_mismatch",url:Q};if(Z?.verifyConnection===!0&&!await _1(Q,{workspaceRoot:Z.workspaceRoot,cwd:Z.cwd,authToken:Z.authToken}))return{status:"unreachable",url:Q};return{status:"compatible",url:Q}}async function gT($){let Z=Date.now()+wT;while(Date.now()<Z){let Q=await A0($.discoveryPath);if(Q?.url){let J=await m3(Q.url,{verifyConnection:!0,authToken:Q.authToken});if(J.status==="compatible")return A$(J.url,Q.authToken)}await new Promise((J)=>setTimeout(J,PT))}return}async function mT($){let Z=Date.now()+yT;while(Date.now()<Z){if(!(await c1($).catch(()=>{return}))?.url)return!0;await new Promise((J)=>setTimeout(J,hT))}return!1}function vT($,Z){try{return f$($)===f$(Z)}catch{return!1}}function cT($){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 uT($,Z,Q){let J=new j1({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:bT});return!cT(W.payload)}catch{return!1}finally{await J.dispose().catch(()=>{return})}}async function Y6($={}){if($.endpoint?.trim()){let W=await m3($.endpoint);return W.status==="compatible"?W.url:void 0}let Z=jZ(),Q=await A0(Z.discoveryPath);if(!Q?.url)return;let J=await m3(Q.url,{authToken:Q.authToken});if(J.status==="compatible")return A$(J.url,Q.authToken);if(J.status==="protocol_mismatch")await g0(Z.discoveryPath).catch(()=>{return});return}async function Y2($={}){let Z=await Y6($);if(Z&&await _1(Z,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return Z;if($.endpoint?.trim())return;let Q=jZ();return await U8($.workspaceRoot??process.cwd()),await gT(Q)}async function X6($,Z){let Q=new URL($),J=Z?.trim()||EV(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 u3($=jZ()){let Z=await A0($.discoveryPath);if(!Z?.url)return!1;try{if(await X6(Z.url,Z.authToken))return!0}catch{}return!1}async function BZ($){if(!g3($.url))return;let Z=jZ(),Q=await A0(Z.discoveryPath);if(!Q?.url||!vT(Q.url,$.url))return;if(!await uT(Q.url,Q.authToken,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return;if(!await u3())return;if(!await mT(Q.url))return;return await g0(Z.discoveryPath).catch(()=>{return}),await Y2({workspaceRoot:$.workspaceRoot,cwd:$.cwd})}import{resolveClineBuildEnv as dT}from"@cline/shared";function lT($,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 pT="cline-hub-auth.";function rT($){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 CV(){return dT()==="production"?L1():Y1()}async function nT($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=CV(),J=await A0(Q.discoveryPath);if(J?.url&&iT($.toString(),J.url))return J.authToken;return}async function d3($={}){let Z=D1($);if(!rT($)){let Q=CV(),J=await A0(Q.discoveryPath);if(J?.url)return J.url}return X1(Z.host,Z.port,Z.pathname)}async function HZ($){return await new Promise((Z,Q)=>{(async()=>{let J=new URL($),W=await nT(J);J.hash="";let X=new WebSocket(J.toString(),W?[`${pT}${W}`]:void 0),Y=new Map,j=0;X.addEventListener("open",()=>{Z({send(V){let B=V.requestId??`hub-client-${++j}`;return new Promise((H,G)=>{Y.set(B,{resolve:H,reject:G});let K={kind:"command",envelope:{...V,requestId:B}};X.send(JSON.stringify(K))})},close(){X.close()}})}),X.addEventListener("message",(V)=>{let B=JSON.parse(String(V.data));if(B.kind==="reply"&&B.envelope.requestId){let H=Y.get(B.envelope.requestId);if(H)Y.delete(B.envelope.requestId),H.resolve(B.envelope)}}),X.addEventListener("close",()=>{for(let V of Y.values())V.reject(Error("Hub connection closed"));Y.clear()}),X.addEventListener("error",(V)=>{Q(lT(V,$))})})().catch(Q)})}async function wV($){try{return(await HZ($)).close(),!0}catch{return!1}}async function PV($,Z){let Q=await d3($),J=await HZ(Q);try{return await J.send({version:Z.version??"v1",clientId:Z.clientId??"hub-client",...Z})}finally{J.close()}}function l3($){return $?JSON.parse(JSON.stringify($)):{}}function GZ($){let Z=$?.session&&typeof $.session==="object"?$.session:void 0;if(!Z)return;let Q=Z.metadata&&typeof Z.metadata==="object"?l3(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 SV($,Z){return $.error?.message??`hub command failed: ${Z}`}function aT($){let Z=l3($);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 bV($){let Z=$?.sessionId;return typeof Z==="string"&&Z.trim()?Z.trim():void 0}function oT($){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 sT($){let Z=l3($.payload);if($.event==="schedule.execution_completed")return{sessionId:$.sessionId?.trim()||bV(Z)||"",eventType:"schedule.execution.completed",payload:Z};if($.event==="schedule.execution_failed")return{sessionId:$.sessionId?.trim()||bV(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"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:aT($.payload)};case"run.completed":return{sessionId:Q,eventType:"runtime.chat.completed",payload:Z};default:return}}class p3{options;client;metadataApplied=!1;constructor($){this.options=$;this.client=new j1({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=GZ(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(m1(Q))return;throw Q}return GZ(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(SV(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(SV(W,"session.restore"));let X=GZ(W.payload);if(Q&&!X?.sessionId)throw Error("hub checkpoint restore returned no session id");let Y=Array.isArray(W.payload?.messages)?W.payload.messages:void 0,j=oT(W.payload);return{sessionId:X?.sessionId,startResult:X?.sessionId?{sessionId:X.sessionId,manifestPath:"",messagesPath:X.messagesPath??""}:void 0,...Y?{messages:Y}:{},checkpoint:j}}async listSessions($){await this.ensureMetadataApplied();let Z=await this.client.command("session.list",{limit:$?.limit??200});return(Array.isArray(Z.payload?.sessions)?Z.payload?.sessions:[]).map((J)=>GZ({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=sT(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 r3{client;constructor($){this.client=new j1({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 sx}from"@cline/llms";var CU={};E(CU,{LocalRuntimeHost:()=>E1});import{readdirSync as ux}from"node:fs";import{homedir as dx}from"node:os";import{isAbsolute as lx,join as rY,resolve as iY}from"node:path";import{captureSdkError as r$,createSessionId as px,isLikelyAuthError as rx,normalizeUserInput as ix}from"@cline/shared";import{setHomeDirIfUnset as nx}from"@cline/shared/storage";var jB={};E(jB,{saveProviderOAuthCredentials:()=>B2,resolveProviderApiKeyFromSettings:()=>WJ,loginAndSaveProviderOAuthCredentials:()=>A6,isOAuthProvider:()=>V2,getProviderOAuthCredentialsFromSettings:()=>f6,getProviderAuthStorageId:()=>JJ,getProviderAuthHandler:()=>B0,getPersistedProviderApiKey:()=>z8,formatProviderOAuthApiKey:()=>XJ});import{getClineEnvironmentConfig as XB}from"@cline/shared";z0();var uV={};E(uV,{startClineDeviceAuth:()=>t3,refreshClineToken:()=>fZ,loginClineOAuth:()=>j6,getValidClineCredentials:()=>V6,completeClineDeviceAuth:()=>e3});import{getClineEnvironmentConfig as i3}from"@cline/shared";var yV={};E(yV,{startLocalOAuthServer:()=>V1});function tT(){let $;return{promise:new Promise((Q)=>{$=Q}),resolve:$}}async function V1($){let Z=await import("node:http"),Q=$.host??"127.0.0.1",J=$.timeoutMs??300000,W=$.successHtml??eT,X=tT(),Y=!1,j=null,V=null,B=null,H=(F)=>{if(Y)return;Y=!0,X.resolve(F)},G=()=>{if(j)clearTimeout(j),j=null;let F=B;if(B=null,V)V.close(),V.closeAllConnections?.(),V=null;if(F!==null&&$.onClose)Promise.resolve($.onClose({host:Q,port:F})).catch(()=>{})},K=async()=>{return j=setTimeout(()=>{G(),H(null)},J),X.promise};for(let F of $.ports){let A=Z.createServer((U,L)=>{try{let f=new URL(U.url||"",`http://${Q}:${F}`);if(f.pathname!==$.callbackPath){L.statusCode=404,L.end("Not found");return}let z={url:f,code:f.searchParams.get("code")??void 0,state:f.searchParams.get("state")??void 0,provider:f.searchParams.get("provider")??void 0,error:f.searchParams.get("error")??void 0};if(z.error){L.statusCode=400,L.end(`Authentication failed: ${z.error}`),G(),H(z);return}if(!z.code){L.statusCode=400,L.end("Missing authorization code");return}if($.expectedState&&z.state!==$.expectedState){L.statusCode=400,L.end("State mismatch");return}L.statusCode=200,L.setHeader("Content-Type","text/html; charset=utf-8"),L.end(W),G(),H(z)}catch{L.statusCode=500,L.end("Internal error")}}),D=await new Promise((U)=>{let L=(f)=>{A.off("error",L),U({bound:!1,error:f})};A.once("error",L),A.listen(F,Q,()=>{A.off("error",L),V=A,U({bound:!0})})});if(D.error){if(D.error.code==="EADDRINUSE")continue;throw G(),D.error}if(D.bound){B=F;let U=`http://${Q}:${F}${$.callbackPath}`;if($.onListening)await Promise.resolve($.onListening({host:Q,port:F,callbackUrl:U})).catch(()=>{});return{callbackUrl:U,waitForCallback:K,cancelWait:()=>{G(),H(null)},close:()=>{G(),H(null)}}}}return{callbackUrl:"",waitForCallback:async()=>null,cancelWait:()=>{},close:()=>{}}}var eT=`<!DOCTYPE html>
|
|
279
279
|
<html lang="en">
|
package/dist/index.js
CHANGED
|
@@ -453,7 +453,7 @@ ${JSON.stringify(J,null,2)}`}startClaimLeaseHeartbeat($){let Z=Math.max(1000,Mat
|
|
|
453
453
|
`)[0]?.trim())}function s1($){if(!$)return;let Z={...$},Q=u$(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 Y4($){let Z=s1($.metadata)??{},Q=$.title!==void 0?u$($.title):v7($.prompt);if(Q)Z.title=Q;return Object.keys(Z).length>0?Z:void 0}function c7($){let Z=W4($);if(Z)return{agent:"teammate",sessionId:Z.rootSessionId,taskType:"team"};let Q=E5($);if(Q)return{agent:"subagent",sessionId:Q.rootSessionId,taskType:"subagent_task"};return{agent:"lead",sessionId:$}}function u7($){return{version:1,updated_at:$.updatedAt,agent:$.context.agent,sessionId:$.context.sessionId,...$.context.taskType?{taskType:$.context.taskType}:{},messages:C5($.messages),...$.systemPrompt?{system_prompt:$.systemPrompt}:{}}}function DB($,Z,Q){OR(zR($),{recursive:!0}),qR($,`${JSON.stringify(u7({updatedAt:Z,context:Q,messages:[]}),null,2)}
|
|
454
454
|
`,"utf8")}function LB($,Z){return h0.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 _B($,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 CR}from"node:fs";import{readFile as wR}from"node:fs/promises";class j4{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 t1($){let Z=$?.trim();if(!Z||!CR(Z))return[];try{let Q=(await wR(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 d7($){return $?{...$}:void 0}async function TB($,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 V4($){if(typeof $!=="string")return;let Z=$.trim();return Z.length>0?Z:void 0}function l0($){let Z=V4($);if(!Z)return;return Z.toLowerCase()==="unknown"?void 0:Z}function P5($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function yR($){if(!$||typeof $!=="object"||Array.isArray($))return;return{...$}}function p7($){let Z=$??200;return Number.isFinite(Z)?Math.max(0,Math.floor(Z)):200}function hR($){if($===0)return 0;return Math.min(Math.max($*2,20),2000)}function kR($){return $.isSubagent!==!0&&!V4($.parentSessionId)}function IR($){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 r7($){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 xR($){let Z=p7($);if(Z===0)return[];let Q=RB(),W=(await PR(Q,{withFileTypes:!0}).catch(()=>[])).filter((Y)=>Y.isDirectory()).map((Y)=>({entry:Y,recency:IR(Y.name.trim())})).sort((Y,j)=>j.recency-Y.recency||j.entry.name.localeCompare(Y.entry.name));return(await Promise.all(W.map(async({entry:Y})=>{let j=Y.name.trim();if(!j)return;let V=zB(Q,j,`${j}.json`),B=await qB(V,"utf8").catch(()=>{return});if(!B)return;let H;try{H=JSON.parse(B)}catch{return}let G=h0.safeParse(H);if(!G.success)return;return r7(G.data)}))).filter((Y)=>Boolean(Y)).sort((Y,j)=>j.startedAt.localeCompare(Y.startedAt)).slice(0,Z)}async function gR($,Z,Q){let J=p7(Z);if(J===0)return await $.listSessions(0),[];let W=Q.includeSubagents?J:hR(J),X=await $.listSessions(W);return(Q.includeSubagents?X:X.filter(kR)).slice(0,J)}function mR($){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(`
|
|
455
455
|
`).trim()}function OB($){return $.replace(/\s+/g," ").trim()}function vR($,Z){if($.length<=Z)return $;return`${$.slice(0,Math.max(0,Z-3)).trimEnd()}...`}function cR($){for(let Z of["user","assistant"])for(let Q of $){if(Q.role!==Z)continue;let J=OB(mR(Q.content));if(!J)continue;let W=Z==="user"?OB(SR(J)):J,X=bR(W.split(`
|
|
456
|
-
`)[0]??W);return vR(X,50)}return}function uR($){let Z=0;for(let Q of $)Z+=P5(Q.metrics?.cost)??0;return Z}function dR($){let Z,Q;for(let J=$.length-1;J>=0;J-=1){let W=$[J];if(!Z)Z=l0(W.modelInfo?.provider);if(!Q)Q=l0(W.modelInfo?.id);if(Z&&Q)break}return{provider:Z,model:Q}}function lR($){return l0($?.provider)??l0($?.provider&&typeof $.provider==="object"&&!Array.isArray($.provider)?$.provider.id:void 0)}function pR($){return l0($?.model)??l0($?.model&&typeof $.model==="object"&&!Array.isArray($.model)?$.model.id:void 0)}function l7($,Z){let Q=yR($.metadata),J=V4(Z?.title)??V4(Q?.title),W=P5(Z?.totalCost)??P5(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:l0(Z?.provider)??l0($.provider)??lR(Q)??"",model:l0(Z?.model)??l0($.model)??pR(Q)??"",metadata:X}}function rR($){let Z=$.content;if(!Array.isArray(Z))return!1;return Z.some((Q)=>!!Q&&typeof Q==="object"&&Q.type==="tool-call")}function iR($,Z){if($.status!=="running"||$.interactive!==!0)return!1;let Q=Z.at(-1);return Q?.role==="assistant"&&!rR(Q)}async function nR($,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 iR(Q,J)?{...Q,status:"idle"}:Q}))}async function aR($,Z){return await Promise.all(Z.map(async(Q)=>{let J=l7(Q),W=Boolean(V4(J.metadata?.title)),X=Boolean(l0(J.provider)),Y=Boolean(l0(J.model)),j=P5(J.metadata?.totalCost),V=j!==void 0&&j>0;if(W&&X&&Y&&V)return J;let B=await $.readSessionMessages(Q.sessionId);if(B.length===0)return J;let H=dR(B),G=uR(B);return l7(Q,{title:W?void 0:cR(B),provider:X?void 0:H.provider,model:Y?void 0:H.model,totalCost:V||G<=0?void 0:G})}))}async function i7($,Z={}){let Q=p7(Z.limit),J=Z.includeSubagents===!0,W=await gR($,Q,{includeSubagents:J}),X=Z.includeManifestFallback===!0&&W.length<Q?await xR(Math.min(Math.max(Q*2,100),500)):[],Y=new Map;for(let B of[...W,...X]){if(Y.has(B.sessionId))continue;Y.set(B.sessionId,B)}let j=X.length===0?W:Array.from(Y.values()).sort((B,H)=>H.startedAt.localeCompare(B.startedAt)).slice(0,Q),V=await nR($,j);if(Z.hydrate===!1)return V.map((B)=>l7(B));return await aR($,V)}async function oR($){let Z=$.trim();if(!Z)return;let Q=zB(RB(),Z,`${Z}.json`),J=await qB(Q,"utf8").catch(()=>{return});if(!J)return;try{let W=h0.safeParse(JSON.parse(J));return W.success?W.data.messages_path:void 0}catch{return}}async function sR($,Z={}){let Q=new Map;return await i7({listSessions:async(W)=>{let X=await $.listSessions(W);Q.clear();for(let Y of X)Q.set(Y.sessionId,Y);return X.map(X4)},readSessionMessages:async(W)=>{let X=Q.get(W)?.messagesPath??await oR(W);return await t1(X)}},Z)}import{captureSdkError as fK}from"@cline/shared";import{createSessionId as tM,isHubProtocolCompatible as eM,resolveClineBuildEnv as $N,resolveHubCommandTimeoutMs as ZN}from"@cline/shared";import{spawn as CM}from"node:child_process";import{closeSync as wM,mkdirSync as PM,openSync as SM}from"node:fs";import{basename as bM,dirname as yM,join as hM}from"node:path";import{fileURLToPath as kM}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as IM,isHubDaemonProcess as gB,isHubProtocolCompatible as xM,resolveClineBuildEnv as mB,withResolvedClineBuildEnv as gM}from"@cline/shared";import{createHash as tR,randomBytes as eR}from"node:crypto";import{existsSync as $M}from"node:fs";import{chmod as ZM,mkdir as n7,readFile as CB,rm as a7,writeFile as wB}from"node:fs/promises";import{dirname as PB,join as o7}from"node:path";import{resolveClineDataDir as H4,resolveClineDir as Tl}from"@cline/shared/storage";var c2="0.0.59
|
|
456
|
+
`)[0]??W);return vR(X,50)}return}function uR($){let Z=0;for(let Q of $)Z+=P5(Q.metrics?.cost)??0;return Z}function dR($){let Z,Q;for(let J=$.length-1;J>=0;J-=1){let W=$[J];if(!Z)Z=l0(W.modelInfo?.provider);if(!Q)Q=l0(W.modelInfo?.id);if(Z&&Q)break}return{provider:Z,model:Q}}function lR($){return l0($?.provider)??l0($?.provider&&typeof $.provider==="object"&&!Array.isArray($.provider)?$.provider.id:void 0)}function pR($){return l0($?.model)??l0($?.model&&typeof $.model==="object"&&!Array.isArray($.model)?$.model.id:void 0)}function l7($,Z){let Q=yR($.metadata),J=V4(Z?.title)??V4(Q?.title),W=P5(Z?.totalCost)??P5(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:l0(Z?.provider)??l0($.provider)??lR(Q)??"",model:l0(Z?.model)??l0($.model)??pR(Q)??"",metadata:X}}function rR($){let Z=$.content;if(!Array.isArray(Z))return!1;return Z.some((Q)=>!!Q&&typeof Q==="object"&&Q.type==="tool-call")}function iR($,Z){if($.status!=="running"||$.interactive!==!0)return!1;let Q=Z.at(-1);return Q?.role==="assistant"&&!rR(Q)}async function nR($,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 iR(Q,J)?{...Q,status:"idle"}:Q}))}async function aR($,Z){return await Promise.all(Z.map(async(Q)=>{let J=l7(Q),W=Boolean(V4(J.metadata?.title)),X=Boolean(l0(J.provider)),Y=Boolean(l0(J.model)),j=P5(J.metadata?.totalCost),V=j!==void 0&&j>0;if(W&&X&&Y&&V)return J;let B=await $.readSessionMessages(Q.sessionId);if(B.length===0)return J;let H=dR(B),G=uR(B);return l7(Q,{title:W?void 0:cR(B),provider:X?void 0:H.provider,model:Y?void 0:H.model,totalCost:V||G<=0?void 0:G})}))}async function i7($,Z={}){let Q=p7(Z.limit),J=Z.includeSubagents===!0,W=await gR($,Q,{includeSubagents:J}),X=Z.includeManifestFallback===!0&&W.length<Q?await xR(Math.min(Math.max(Q*2,100),500)):[],Y=new Map;for(let B of[...W,...X]){if(Y.has(B.sessionId))continue;Y.set(B.sessionId,B)}let j=X.length===0?W:Array.from(Y.values()).sort((B,H)=>H.startedAt.localeCompare(B.startedAt)).slice(0,Q),V=await nR($,j);if(Z.hydrate===!1)return V.map((B)=>l7(B));return await aR($,V)}async function oR($){let Z=$.trim();if(!Z)return;let Q=zB(RB(),Z,`${Z}.json`),J=await qB(Q,"utf8").catch(()=>{return});if(!J)return;try{let W=h0.safeParse(JSON.parse(J));return W.success?W.data.messages_path:void 0}catch{return}}async function sR($,Z={}){let Q=new Map;return await i7({listSessions:async(W)=>{let X=await $.listSessions(W);Q.clear();for(let Y of X)Q.set(Y.sessionId,Y);return X.map(X4)},readSessionMessages:async(W)=>{let X=Q.get(W)?.messagesPath??await oR(W);return await t1(X)}},Z)}import{captureSdkError as fK}from"@cline/shared";import{createSessionId as tM,isHubProtocolCompatible as eM,resolveClineBuildEnv as $N,resolveHubCommandTimeoutMs as ZN}from"@cline/shared";import{spawn as CM}from"node:child_process";import{closeSync as wM,mkdirSync as PM,openSync as SM}from"node:fs";import{basename as bM,dirname as yM,join as hM}from"node:path";import{fileURLToPath as kM}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as IM,isHubDaemonProcess as gB,isHubProtocolCompatible as xM,resolveClineBuildEnv as mB,withResolvedClineBuildEnv as gM}from"@cline/shared";import{createHash as tR,randomBytes as eR}from"node:crypto";import{existsSync as $M}from"node:fs";import{chmod as ZM,mkdir as n7,readFile as CB,rm as a7,writeFile as wB}from"node:fs/promises";import{dirname as PB,join as o7}from"node:path";import{resolveClineDataDir as H4,resolveClineDir as Tl}from"@cline/shared/storage";var c2="0.0.59";var B4={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:c2,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: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 QM="CLINE_HUB_DISCOVERY_PATH",JM="CLINE_HUB_BUILD_ID",NB=30000,WM=15000,XM=100;function YM($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function jM($){return tR("sha256").update($).digest("hex").slice(0,12)}function VM($){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 SB(){return eR(32).toString("hex")}function BM($){return new Promise((Z)=>setTimeout(Z,$))}function HM($){return`${$}.lock`}async function GM($){try{let Z=JSON.parse(await CB(o7($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function EB($){await a7($,{recursive:!0,force:!0}).catch(()=>{return})}function bB(){return process.env[JM]?.trim()||String(B4.version)}function d$($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${jM($)}`,Q=process.env[QM]?.trim()||o7(H4(),"locks","hub","owners",`${YM(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function ql($=`hub-${Date.now().toString(36)}`){return d$($)}async function L0($){try{let Z=JSON.parse(await CB($,"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 yB($,Z){await n7(PB($),{recursive:!0}),await a7($,{force:!0}).catch(()=>{return}),await wB($,`${JSON.stringify(Z,null,2)}
|
|
457
457
|
`,{encoding:"utf8",mode:384}),await ZM($,384)}async function e0($){await a7($,{force:!0}).catch(()=>{return})}async function hB($,Z){let Q=HM($);await n7(PB(Q),{recursive:!0});let J=Date.now()+WM;while(!0)try{await n7(Q,{recursive:!1}),await wB(o7(Q,"owner.json"),`${JSON.stringify({pid:process.pid,acquiredAt:new Date().toISOString()},null,2)}
|
|
458
458
|
`,"utf8");try{return await Z()}finally{await EB(Q)}}catch(W){if((W instanceof Error&&"code"in W?String(W.code):"")!=="EEXIST")throw W;let Y=await GM(Q),j=Y?Date.now()-Date.parse(Y.acquiredAt):NB+1;if(!Y||!VM(Y.pid)||j>NB){await EB(Q);continue}if(Date.now()>=J)throw Error(`Timed out waiting for hub startup lock ${Q}`);await BM(XM)}}async function l$($,Z){try{let Q=await fetch(Z?.authToken?KM($):kB($),{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 T1($,Z,Q="/hub"){return new URL(`ws://${$}:${Z}${Q}`).toString()}function kB($){let Z=new URL($);return Z.protocol=Z.protocol==="wss:"?"https:":"http:",Z.pathname="/health",Z.search="",Z.toString()}function KM($){let Z=new URL(kB($));return Z.pathname="/status",Z.toString()}function zl($){return $M($)}import{CLINE_HUB_DEV_PORT as FM,CLINE_HUB_PORT as AM,resolveClineBuildEnv as fM}from"@cline/shared";var UM="CLINE_HUB_HOST",DM="CLINE_HUB_PORT",LM="CLINE_HUB_PATHNAME",_M="127.0.0.1",TM=AM,OM="/hub";function IB($){return fM($)==="development"?FM:TM}function qM($={}){return($.env??process.env)[UM]?.trim()||_M}function S5($={}){let Q=($.env??process.env)[DM]?.trim();if(!Q)return IB($);let J=Number.parseInt(Q,10);if(!Number.isInteger(J)||J<1||J>65535)return IB($);return J}function zM($={}){return($.env??process.env)[LM]?.trim()||OM}function e1($={},Z={}){return{host:$.host??qM(Z),port:$.port??S5(Z),pathname:$.pathname??zM(Z)}}import{join as RM}from"node:path";var MM="shared:cline",NM="CLINE_HUB_DISCOVERY_PATH",EM="hub-production";function Pl($){let Z=g$($.trim());return d$(`workspace:${Z||$.trim()}`)}function O1($=MM){return d$($)}function $$(){return{ownerId:EM,discoveryPath:process.env[NM]?.trim()||RM(H4(),"locks","hub","production.json")}}var mM=8000,vM=200,cM=3000,uM=100,dM=[100,250,500,1000,2000],lM="--cline-hub-daemon";function pM($){return[...$.host?["--host",$.host]:[],...typeof $.port==="number"?["--port",String($.port)]:[],...$.pathname?["--pathname",$.pathname]:[]]}function rM(){try{let $=hM(H4(),"logs","hub-daemon.log");return PM(yM($),{recursive:!0}),{fd:SM($,"a"),logPath:$}}catch{return}}function vB(){return mB()==="production"?$$():O1()}function p$($){return xM($).compatible}function xB($,Z,Q){if(!Z||Z.url!==Q)return $;return{...$,authToken:$.authToken??Z.authToken,pid:$.pid??Z.pid}}async function r$($,Z){try{return await l$($,{authToken:Z})}catch{return}}async function iM($,Z){let Q=Date.now()+Z;while(Date.now()<Q){if(!(await r$($))?.url)return!0;await new Promise((W)=>setTimeout(W,uM))}return!1}async function b5($,Z){if(await s7($.url,$.authToken).catch(()=>!1),$.pid)try{process.kill($.pid,"SIGTERM")}catch{}let Q=await iM($.url,cM);return await e0(Z).catch(()=>{return}),Q}async function G4($,Z){if(p$($))return!0;return b5($,Z)}async function cB($){if(mB()!=="production")return;let Z=O1();if(Z.discoveryPath===$.discoveryPath)return;let Q=await L0(Z.discoveryPath);if(Q?.url)await b5(Q,Z.discoveryPath);else await e0(Z.discoveryPath).catch(()=>{return})}function nM(){let $=import.meta.url.endsWith(".ts")?"ts":"js";return kM(new URL(`./entry.${$}`,import.meta.url))}function aM($,Z){let Q=nM(),J=process.execPath?.trim();if(!J)throw Error("unable to resolve runtime executable for hub daemon");let W=bM(J).toLowerCase().includes("bun"),X=Q.startsWith("/$bunfs/"),Y=W&&Q.toLowerCase().endsWith(".ts"),j=X?[lM]:[...Y?["--conditions=development"]:[],Q];return{launcher:J,args:[...j,"--cwd",$,...pM(Z)],cwd:$,env:{...gM(process.env),CLINE_NO_INTERACTIVE:"1",[IM]:"1"}}}function oM($){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 sM($,Z={}){if(gB())return;let Q=aM($,Z),J=rM();try{CM(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)wM(J.fd)}}async function y5($,Z={}){for(let Q=0;;Q++)try{sM($,Z);return}catch(J){let W=dM[Q];if(!oM(J)||W===void 0)throw J;await new Promise((X)=>setTimeout(X,W))}}function uB($,Z={}){if(gB())return;let Q=vB(),J=e1(Z),W=T1(J.host,J.port,J.pathname),X=Z.allowPortFallback===!0&&J.port!==0;cB(Q).catch(()=>{return}).then(()=>L0(Q.discoveryPath)).then(async(Y)=>{let j=!1;if(Y?.url)if(!Y.authToken){if(j=!0,!await b5(Y,Q.discoveryPath)&&!X)return}else{let H=await r$(Y.url,Y.authToken);if(H?.url&&p$(H)&&await Z$(H.url,{authToken:Y.authToken}))return;if(H?.url)await G4({...H,authToken:Y.authToken},Q.discoveryPath);else await e0(Q.discoveryPath).catch(()=>{return})}let V=await r$(W);if(V?.url){if(p$(V)){if(!X||!j)return}else if(!await G4({...V,authToken:void 0},Q.discoveryPath)&&!X)return}let B=X?{...J,port:0}:J;await y5($,B)}).catch(()=>{})}async function cl($,Z={}){let Q=vB(),J=Z.host!==void 0||Z.port!==void 0||Z.pathname!==void 0||!!process.env.CLINE_HUB_PORT?.trim(),W=e1(Z),X=T1(W.host,W.port,W.pathname),Y=(F)=>{if(!J)u2(F.url,F.authToken);return F};await cB(Q).catch(()=>{return});let j=await L0(Q.discoveryPath),V=!1;if(j?.url){let F=j.authToken;if(!F)V=!0,await b5(j,Q.discoveryPath);else{let A=await r$(j.url,F);if(A?.url&&p$(A)&&await Z$(A.url,{authToken:F}))return Y({url:A.url,authToken:F});if(A?.url)await G4({...A,authToken:F},Q.discoveryPath);else await e0(Q.discoveryPath).catch(()=>{return})}}let B=await r$(X);if(B?.url){let F=xB(B,j,X);if(p$(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 G4(F,Q.discoveryPath)&&Z.allowPortFallback!==!0&&W.port!==0)throw Error(`An incompatible Cline Hub is already running at ${X} and could not be retired automatically. Run 'cline doctor fix' to stop stale hub daemons before starting a new hub.`)}let G=Z.allowPortFallback===!0&&W.port!==0?{...W,port:0}:W;await y5($,G);let K=Date.now()+mM;while(Date.now()<K){let F=await L0(Q.discoveryPath);if(F?.url&&F.authToken){let D=await r$(F.url,F.authToken);if(D?.url&&p$(D)&&await Z$(D.url,{authToken:F.authToken}))return Y({url:D.url,authToken:F.authToken})}let A=await r$(X);if(A?.url&&!p$(A)){let D=xB(A,F,X);if(!await G4(D,Q.discoveryPath)&&Z.allowPortFallback!==!0&&W.port!==0)throw Error(`An incompatible Cline Hub is still running at ${X} and could not be retired automatically. Run 'cline doctor fix' to stop stale hub daemons before starting a new hub.`)}await new Promise((D)=>setTimeout(D,vM))}throw Error("Timed out waiting for detached hub startup.")}function k5(){return $N()==="production"?$$():O1()}function QN(){let $=globalThis.WebSocket;if(!$)throw Error("Global WebSocket is not available in this runtime. Node 22+ is required for hub mode.");return $}function iB($){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 iB($.data);return String($)}function JN($){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=JN(Z.reason);return new p0("hub_connection_closed",Z.code||Q?`Hub connection closed (code=${Z.code??0}${Q?`, reason=${Q}`:""})`:t7,{closeCode:Z.code,closeReason:Q||void 0})}function WN($,Z){if($ instanceof p0)return $;if($ instanceof Error)return new p0("hub_connect_failed",$.message);if($&&typeof $==="object"&&"error"in $&&$.error instanceof Error)return new p0("hub_connect_failed",$.error.message);let Q=$&&typeof $==="object"&&"message"in $&&typeof $.message==="string"?$.message.trim():"";if(Q)return new p0("hub_connect_failed",Q);let J=$&&typeof $==="object"&&"type"in $&&typeof $.type==="string"?$.type.trim():"";return new p0("hub_connect_failed",J?`Failed to connect to hub at ${Z.toString()} (${J} event before socket open).`:`Failed to connect to hub at ${Z.toString()}.`)}var XN=8000,YN=200,lB="*",pB=8000,jN="cline-hub-auth.",nB=new Map,aB=new Set,VN=3000,BN=3000,HN=100,t7="Hub connection closed",GN=250,KN=5000,rB=0.5;class p0 extends Error{code;details;constructor($,Z,Q){super(Z);this.code=$;this.details=Q;this.name="HubTransportError"}}function FN($){return $ instanceof p0}class h5 extends Error{command;code;constructor($,Z,Q){super(Q);this.command=$;this.code=Z;this.name="HubCommandError"}}function oB($,Z){return $ instanceof h5&&$.code==="hub_command_timeout"&&(Z===void 0||$.command===Z)}function sB($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=Z3($.toString());return Q?nB.get(Q):void 0}function AN($){try{let Q=new URL($).hostname.toLowerCase().replace(/^\[|\]$/g,"");return Q==="localhost"||Q==="127.0.0.1"||Q==="::1"}catch{return!1}}function Z3($){if(!AN($))return;let Z=new URL(d2($));return Z.search="",Z.hash="",Z.toString()}function e7($){let Z=Z3($);return!!Z&&aB.has(Z)}function u2($,Z){let Q=Z3($);if(Q){if(aB.add(Q),Z?.trim())nB.set(Q,Z)}return $}class q1{options;socket;connectPromise;clientId;currentUrl;recoveryPromise;pendingReplies=new Map;listeners=new Set;subscriptionCounts=new Map;reconnectTimer;reconnectAttempt=0;closedByClient=!1;lastCloseError=new p0("hub_connection_closed",t7);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}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()||sB($);$.hash="";let J=new(QN())($.toString(),Z?[`${jN}${Z}`]:void 0);this.socket=J;let W=!1;this.connectPromise=new Promise((X,Y)=>{let j=!1,V=setTimeout(()=>{if(j)return;j=!0,W=!0,this.lastCloseError=new p0("hub_connect_timeout",`Timed out connecting to hub after ${pB}ms`),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0;try{J.close()}catch{}Y(this.lastCloseError)},pB);J.addEventListener("open",()=>{if(j)return;j=!0,clearTimeout(V),X()}),J.addEventListener("error",(B)=>{if(j)return;j=!0,clearTimeout(V),this.lastCloseError=WN(B,$),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)}),J.addEventListener("close",(B)=>{if(j)return;if(j=!0,clearTimeout(V),!W)this.lastCloseError=dB(B),this.sawSocketClose=!0;this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)})}),J.addEventListener("message",(X)=>{this.handleFrame(JSON.parse(iB(X)))}),J.addEventListener("close",(X)=>{if(this.socket!==J)return;if(!W)this.lastCloseError=dB(X),this.sawSocketClose=!0;this.registered=!1;for(let Y of this.pendingReplies.values())Y.reject(this.lastCloseError);if(this.pendingReplies.clear(),this.connectPromise=void 0,this.socket=void 0,!this.closedByClient&&this.hasActiveSubscriptions())this.scheduleReconnect()}),await this.connectPromise,await this.command("client.register",{clientId:this.clientId,clientType:this.options.clientType??"core",displayName:this.options.displayName??"core",transport:"native",actorKind:"client",workspaceContext:{workspaceRoot:this.options.workspaceRoot,cwd:this.options.cwd}}),this.registered=!0;for(let X of this.subscriptionCounts.keys())this.sendSubscriptionFrame("stream.subscribe",this.subscriptionSessionIdFromKey(X));this.reconnectAttempt=0}subscribe($,Z){let Q=Z?.sessionId?.trim()||void 0,J={listener:$,sessionId:Q};return this.listeners.add(J),this.adjustSubscriptionCount(Q,1),()=>{if(!this.listeners.delete(J))return;this.adjustSubscriptionCount(Q,-1)}}async command($,Z,Q,J){let W=0,X=$!=="client.register"&&$!=="client.unregister";while(!0)try{return await this.commandOnce($,Z,Q,J)}catch(Y){if(!X||W>=1||!await this.recoverLocalHubTransport(Y))throw Y;W+=1}}async commandOnce($,Z,Q,J){await this.connect();let W=tM("hubreq_"),X=ZN($,J?.timeoutMs),Y=new Promise((V,B)=>{let H=X===null?void 0:setTimeout(()=>{if(!this.pendingReplies.delete(W))return;B(new h5($,"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:(G)=>{if(H)clearTimeout(H);V(G)},reject:(G)=>{if(H)clearTimeout(H);B(G)}})});try{this.sendFrame({kind:"command",envelope:{version:"v1",command:$,requestId:W,clientId:this.clientId,sessionId:Q,timeoutMs:X,payload:Z}})}catch(V){throw this.pendingReplies.delete(W),V}let j=await Y;if(!j.ok){if(j.error?.code===n8){let V=Q??(typeof Z?.sessionId==="string"?Z.sessionId:void 0);throw new I$(V,j.error.message)}throw new h5($,j.error?.code,j.error?.message??`Hub command ${$} failed`)}return j}async recoverLocalHubTransport($){if(!e7(this.currentUrl)||!FN($))return!1;if(this.recoveryPromise)return await this.recoveryPromise;return this.recoveryPromise=(async()=>{let Z=await K4({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(GN*2**this.reconnectAttempt,KN),Z=Math.round($*(1-rB)+Math.random()*$*rB);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(!e7(this.currentUrl)){this.reconnectAttempt+=1,this.scheduleReconnect();return}try{let $=await K4({workspaceRoot:this.options.workspaceRoot,cwd:this.options.cwd});if($){this.currentUrl=$,await this.connect(),this.reconnectAttempt=0;return}}catch{}this.reconnectAttempt+=1,this.scheduleReconnect()}}close(){let $=this.socket;if(this.closedByClient=!0,this.clearReconnectTimer(),this.registered=!1,!$)return;this.lastCloseError=new p0("hub_connection_closed",t7),this.sawSocketClose=!1;for(let Z of this.pendingReplies.values())Z.reject(this.lastCloseError);this.pendingReplies.clear(),this.connectPromise=void 0,this.socket=void 0;try{$.close()}catch{}}async dispose(){if(this.socket?.readyState===1&&this.registered)try{await this.command("client.unregister",void 0,void 0,{timeoutMs:2000})}catch{}this.close()}sendFrame($){if(!this.socket||this.socket.readyState!==1){if(this.lastCloseError.code==="hub_connection_closed"&&!this.sawSocketClose)throw new p0("hub_connection_not_open","Hub connection is not open.");throw this.lastCloseError}this.socket.send(JSON.stringify($))}sendSubscriptionFrame($,Z){this.sendFrame({kind:$,clientId:this.clientId,...Z?{sessionId:Z}:{}})}adjustSubscriptionCount($,Z){let Q=this.subscriptionKeyForSessionId($),J=(this.subscriptionCounts.get(Q)??0)+Z;if(J<=0){if(this.subscriptionCounts.delete(Q),!this.hasActiveSubscriptions())this.clearReconnectTimer();if(Z<0&&this.socket?.readyState===1)this.sendSubscriptionFrame("stream.unsubscribe",$);return}if(this.subscriptionCounts.set(Q,J),Z>0&&J===1&&this.socket?.readyState===1)this.sendSubscriptionFrame("stream.subscribe",$)}subscriptionKeyForSessionId($){return $??lB}subscriptionSessionIdFromKey($){return $===lB?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 d2($){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$($,Z){let Q=new q1({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 $3($,Z){let Q=d2($),J=await l$(Q,{authToken:Z?.authToken});if(!J)return{status:"unreachable",url:Q};if(!eM(J).compatible)return{status:"protocol_mismatch",url:Q};if(Z?.verifyConnection===!0&&!await Z$(Q,{workspaceRoot:Z.workspaceRoot,cwd:Z.cwd,authToken:Z.authToken}))return{status:"unreachable",url:Q};return{status:"compatible",url:Q}}async function fN($){let Z=Date.now()+XN;while(Date.now()<Z){let Q=await L0($.discoveryPath);if(Q?.url){let J=await $3(Q.url,{verifyConnection:!0,authToken:Q.authToken});if(J.status==="compatible")return u2(J.url,Q.authToken)}await new Promise((J)=>setTimeout(J,YN))}return}async function UN($){let Z=Date.now()+BN;while(Date.now()<Z){if(!(await l$($).catch(()=>{return}))?.url)return!0;await new Promise((J)=>setTimeout(J,HN))}return!1}function DN($,Z){try{return d2($)===d2(Z)}catch{return!1}}function LN($){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 _N($,Z,Q){let J=new q1({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:VN});return!LN(W.payload)}catch{return!1}finally{await J.dispose().catch(()=>{return})}}async function Q3($={}){if($.endpoint?.trim()){let W=await $3($.endpoint);return W.status==="compatible"?W.url:void 0}let Z=k5(),Q=await L0(Z.discoveryPath);if(!Q?.url)return;let J=await $3(Q.url,{authToken:Q.authToken});if(J.status==="compatible")return u2(J.url,Q.authToken);if(J.status==="protocol_mismatch")await e0(Z.discoveryPath).catch(()=>{return});return}async function K4($={}){let Z=await Q3($);if(Z&&await Z$(Z,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return Z;if($.endpoint?.trim())return;let Q=k5();return await y5($.workspaceRoot??process.cwd()),await fN(Q)}async function s7($,Z){let Q=new URL($),J=Z?.trim()||sB(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 TN($=k5()){let Z=await L0($.discoveryPath);if(!Z?.url)return!1;try{if(await s7(Z.url,Z.authToken))return!0}catch{}return!1}async function tB($){if(!e7($.url))return;let Z=k5(),Q=await L0(Z.discoveryPath);if(!Q?.url||!DN(Q.url,$.url))return;if(!await _N(Q.url,Q.authToken,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return;if(!await TN())return;if(!await UN(Q.url))return;return await e0(Z.discoveryPath).catch(()=>{return}),await K4({workspaceRoot:$.workspaceRoot,cwd:$.cwd})}import{captureSdkError as X3,createSessionId as WH,HUB_CHECKPOINT_CAPABILITY as CN,HUB_COMPACTION_CAPABILITY as wN,HUB_CUSTOM_TOOL_CAPABILITY_PREFIX as PN,HUB_HOOK_CAPABILITY_PREFIX as SN,HUB_MISTAKE_LIMIT_CAPABILITY as bN,HUB_TOOL_EXECUTOR_CAPABILITY_PREFIX as yN,HUB_USER_INSTRUCTIONS_SNAPSHOT_CAPABILITY as hN,isHubToolExecutorName as kN,mergeClineClientRequestHeaders as IN}from"@cline/shared";import{createHash as ON}from"node:crypto";import{formatDisplayUserInput as eB}from"@cline/shared";import{z as Y1}from"zod";function qN($){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 zN=Y1.custom(qN),I5=Y1.object({version:Y1.literal(1),updated_at:Y1.string().datetime(),conversation_id:Y1.string().min(1).optional(),source_message_count:Y1.number().int().nonnegative(),source_prefix_hash:Y1.string().min(1).optional(),source_last_message_key:Y1.string().min(1).optional(),messages:Y1.array(zN),system_prompt:Y1.string().optional()});function J3($){return JSON.parse(JSON.stringify($))}function $H($){if($.role!=="user")return $;if(typeof $.content==="string")return{...$,content:eB($.content)};return{...$,content:$.content.map((Z)=>Z.type==="text"?{...Z,text:eB(Z.text)}:Z)}}function ZH($){if($.includes(":"))throw TypeError("Message role cannot contain ':' in compaction boundary keys")}function RN($){let Z=$H($);return ZH(Z.role),[["role",Z.role],["content",Z.content],["id",Z.id??null],["agent",Z.agent??null],["sessionId",Z.sessionId??null],["metadata",Z.metadata??null],["modelInfo",Z.modelInfo??null],["metrics",Z.metrics??null],["ts",Z.ts??null]]}function QH($){if(!$)return"";let Z=$H($);if(typeof Z.id==="string"&&Z.id.trim())return`id:${Z.id.trim()}`;if(ZH(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 JH($,Z=$.length){let Q=ON("sha256");Q.update(`cline-session-compaction-source-v1
|
|
459
459
|
`),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.59
|
|
4
|
+
"version": "0.0.59",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/cline/cline",
|
|
@@ -48,9 +48,9 @@
|
|
|
48
48
|
"test:watch": "vitest --config vitest.config.ts"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@cline/agents": "0.0.59
|
|
52
|
-
"@cline/shared": "0.0.59
|
|
53
|
-
"@cline/llms": "0.0.59
|
|
51
|
+
"@cline/agents": "0.0.59",
|
|
52
|
+
"@cline/shared": "0.0.59",
|
|
53
|
+
"@cline/llms": "0.0.59",
|
|
54
54
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
55
55
|
"@opentelemetry/api": "^1.9.0",
|
|
56
56
|
"@opentelemetry/api-logs": "^0.214.0",
|