@cline/core 0.0.58-nightly.1783394305 → 0.0.58
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
|
@@ -497,7 +497,7 @@ ${JSON.stringify(W,null,2)}`}startClaimLeaseHeartbeat($){let Z=Math.max(1000,Mat
|
|
|
497
497
|
updated_at = ?
|
|
498
498
|
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,M0(),$)}attachReportPathToRun($,Z){this.db.prepare("UPDATE cron_runs SET report_path = ?, updated_at = ? WHERE run_id = ?").run(Z,M0(),$)}}class M5{store;reconciler;watcher;eventIngress;materializer;runner;started=!1;disposed=!1;constructor($){this.store=new O5({dbPath:$.dbPath});let Z=$.specs;this.reconciler=new fJ({store:this.store,specs:Z}),this.materializer=new L5({store:this.store}),this.eventIngress=new JJ({store:this.store,logger:$.logger}),this.runner=new _5({store:this.store,materializer:this.materializer,runtimeHandlers:$.runtimeHandlers,workspaceRoot:$.workspaceRoot,specs:Z,logger:$.logger,pollIntervalMs:$.pollIntervalMs,claimLeaseSeconds:$.claimLeaseSeconds,globalMaxConcurrency:$.globalMaxConcurrency}),this.watcher=new UJ({reconciler:this.reconciler,debounceMs:$.watcherDebounceMs,onReconciled:()=>{this.materializer.materializeAll()},onError:(Q)=>{let W=$.logger;if(W)if(W.error)W.error("cron.watcher.failed",{error:Q});else W.log("cron.watcher.failed",{error:Q})}})}async start(){if(this.disposed)throw Error("CronService disposed");if(this.started)return;this.started=!0,await this.reconciler.reconcileAll(),this.materializer.materializeAll(),this.watcher.start(),await this.runner.start()}async stop(){this.watcher.stop(),await this.runner.stop(),this.started=!1}async dispose(){if(this.disposed)return;this.disposed=!0,this.watcher.dispose(),await this.runner.dispose(),this.store.close()}listSpecs($){return this.store.listSpecs($)}getSpec($){return this.store.getSpec($)}listRuns($){return this.store.listRuns($)}getRun($){return this.store.getRun($)}listActiveRuns(){return this.store.listRuns({status:"running",limit:200})}listUpcomingRuns($=20){return this.store.listRuns({status:"queued",limit:$})}async reconcileNow(){await this.reconciler.reconcileAll(),this.materializer.materializeAll()}ingestEvent($){return this.eventIngress.ingestEvent($)}listEventLogs($){return this.store.listEventLogs($)}getEventLog($){return this.store.getEventLog($)}}var $F={};E($F,{manifestToSessionRecord:()=>RQ,listSessionHistoryFromBackend:()=>OJ,listSessionHistory:()=>NQ,hydrateSessionHistory:()=>eK});import{readdir as aE,readFile as sK}from"node:fs/promises";import{join as oK}from"node:path";import{formatDisplayUserInput as sE,normalizeUserInput as oE}from"@cline/shared";import{resolveSessionDataDir as tK}from"@cline/shared/storage";import{existsSync as iE}from"node:fs";import{readFile as nE}from"node:fs/promises";class R5{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 h$($){let Z=$?.trim();if(!Z||!iE(Z))return[];try{let Q=(await nE(Z,"utf8")).trim();if(!Q)return[];let W=JSON.parse(Q);if(Array.isArray(W))return W;if(W&&typeof W==="object"&&!Array.isArray(W)){let J=W.messages;if(Array.isArray(J))return J}return[]}catch{return[]}}function zJ($){return $?{...$}:void 0}async function nK($,Z){if(!($.hookName==="tool_call"||!!$.parent_agent_id))return;await Z.queueSpawnRequest($);let W=await Z.upsertSubagentSessionFromHook($);if(!W)return;await Z.appendSubagentHookAudit(W,$),await Z.applySubagentStatus(W,$)}function N5($){if(typeof $!=="string")return;let Z=$.trim();return Z.length>0?Z:void 0}function n0($){let Z=N5($);if(!Z)return;return Z.toLowerCase()==="unknown"?void 0:Z}function MQ($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function tE($){if(!$||typeof $!=="object"||Array.isArray($))return;return{...$}}function qJ($){let Z=$??200;return Number.isFinite(Z)?Math.max(0,Math.floor(Z)):200}function eE($){if($===0)return 0;return Math.min(Math.max($*2,20),2000)}function $C($){return $.isSubagent!==!0&&!N5($.parentSessionId)}function ZC($){let Z=$.match(/\d{13,}/g);if(!Z||Z.length===0)return 0;let Q=0;for(let W of Z){let J=Number.parseInt(W,10);if(Number.isFinite(J)&&J>Q)Q=J}return Q}function RQ($){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 QC($){let Z=qJ($);if(Z===0)return[];let Q=tK(),J=(await aE(Q,{withFileTypes:!0}).catch(()=>[])).filter((Y)=>Y.isDirectory()).map((Y)=>({entry:Y,recency:ZC(Y.name.trim())})).sort((Y,j)=>j.recency-Y.recency||j.entry.name.localeCompare(Y.entry.name));return(await Promise.all(J.map(async({entry:Y})=>{let j=Y.name.trim();if(!j)return;let V=oK(Q,j,`${j}.json`),B=await sK(V,"utf8").catch(()=>{return});if(!B)return;let H;try{H=JSON.parse(B)}catch{return}let G=P0.safeParse(H);if(!G.success)return;return RQ(G.data)}))).filter((Y)=>Boolean(Y)).sort((Y,j)=>j.startedAt.localeCompare(Y.startedAt)).slice(0,Z)}async function WC($,Z,Q){let W=qJ(Z);if(W===0)return await $.listSessions(0),[];let J=Q.includeSubagents?W:eE(W),X=await $.listSessions(J);return(Q.includeSubagents?X:X.filter($C)).slice(0,W)}function JC($){if(typeof $==="string")return $.trim();let Z=[];for(let Q of $){if(!Q||typeof Q!=="object")continue;let W=Q;if(W.type!=="text")continue;let J=W.text?.trim();if(J)Z.push(J)}return Z.join(`
|
|
499
499
|
`).trim()}function aK($){return $.replace(/\s+/g," ").trim()}function XC($,Z){if($.length<=Z)return $;return`${$.slice(0,Math.max(0,Z-3)).trimEnd()}...`}function YC($){for(let Z of["user","assistant"])for(let Q of $){if(Q.role!==Z)continue;let W=aK(JC(Q.content));if(!W)continue;let J=Z==="user"?aK(sE(W)):W,X=oE(J.split(`
|
|
500
|
-
`)[0]??J);return XC(X,50)}return}function jC($){let Z=0;for(let Q of $)Z+=MQ(Q.metrics?.cost)??0;return Z}function VC($){let Z,Q;for(let W=$.length-1;W>=0;W-=1){let J=$[W];if(!Z)Z=n0(J.modelInfo?.provider);if(!Q)Q=n0(J.modelInfo?.id);if(Z&&Q)break}return{provider:Z,model:Q}}function BC($){return n0($?.provider)??n0($?.provider&&typeof $.provider==="object"&&!Array.isArray($.provider)?$.provider.id:void 0)}function HC($){return n0($?.model)??n0($?.model&&typeof $.model==="object"&&!Array.isArray($.model)?$.model.id:void 0)}function TJ($,Z){let Q=tE($.metadata),W=N5(Z?.title)??N5(Q?.title),J=MQ(Z?.totalCost)??MQ(Q?.totalCost),X=Q||W!==void 0||J!==void 0?{...Q??{},...W!==void 0?{title:W}:{},...J!==void 0?{totalCost:J}:{}}:void 0;return{...$,provider:n0(Z?.provider)??n0($.provider)??BC(Q)??"",model:n0(Z?.model)??n0($.model)??HC(Q)??"",metadata:X}}function GC($){let Z=$.content;if(!Array.isArray(Z))return!1;return Z.some((Q)=>!!Q&&typeof Q==="object"&&Q.type==="tool-call")}function KC($,Z){if($.status!=="running"||$.interactive!==!0)return!1;let Q=Z.at(-1);return Q?.role==="assistant"&&!GC(Q)}async function FC($,Z){return await Promise.all(Z.map(async(Q)=>{if(Q.status!=="running"||Q.interactive!==!0)return Q;let W=await $.readSessionMessages(Q.sessionId);return KC(Q,W)?{...Q,status:"idle"}:Q}))}async function eK($,Z){return await Promise.all(Z.map(async(Q)=>{let W=TJ(Q),J=Boolean(N5(W.metadata?.title)),X=Boolean(n0(W.provider)),Y=Boolean(n0(W.model)),j=MQ(W.metadata?.totalCost),V=j!==void 0&&j>0;if(J&&X&&Y&&V)return W;let B=await $.readSessionMessages(Q.sessionId);if(B.length===0)return W;let H=VC(B),G=jC(B);return TJ(Q,{title:J?void 0:YC(B),provider:X?void 0:H.provider,model:Y?void 0:H.model,totalCost:V||G<=0?void 0:G})}))}async function NQ($,Z={}){let Q=qJ(Z.limit),W=Z.includeSubagents===!0,J=await WC($,Q,{includeSubagents:W}),X=Z.includeManifestFallback===!0&&J.length<Q?await QC(Math.min(Math.max(Q*2,100),500)):[],Y=new Map;for(let B of[...J,...X]){if(Y.has(B.sessionId))continue;Y.set(B.sessionId,B)}let j=X.length===0?J:Array.from(Y.values()).sort((B,H)=>H.startedAt.localeCompare(B.startedAt)).slice(0,Q),V=await FC($,j);if(Z.hydrate===!1)return V.map((B)=>TJ(B));return await eK($,V)}async function AC($){let Z=$.trim();if(!Z)return;let Q=oK(tK(),Z,`${Z}.json`),W=await sK(Q,"utf8").catch(()=>{return});if(!W)return;try{let J=P0.safeParse(JSON.parse(W));return J.success?J.data.messages_path:void 0}catch{return}}async function OJ($,Z={}){let Q=new Map;return await NQ({listSessions:async(J)=>{let X=await $.listSessions(J);Q.clear();for(let Y of X)Q.set(Y.sessionId,Y);return X.map(R6)},readSessionMessages:async(J)=>{let X=Q.get(J)?.messagesPath??await AC(J);return await h$(X)}},Z)}var FA={};E(FA,{resolveSessionBackend:()=>XX,createRuntimeHost:()=>V4});import{captureSdkError as GA}from"@cline/shared";import{createSessionId as Vw,isHubProtocolCompatible as Bw,resolveClineBuildEnv as Hw,resolveHubCommandTimeoutMs as Gw}from"@cline/shared";import{spawn as mC}from"node:child_process";import{closeSync as vC,mkdirSync as cC,openSync as uC}from"node:fs";import{basename as dC,dirname as lC,join as pC}from"node:path";import{fileURLToPath as rC}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as iC,isHubDaemonProcess as AF,isHubProtocolCompatible as nC,resolveClineBuildEnv as fF,withResolvedClineBuildEnv as aC}from"@cline/shared";import{createHash as fC,randomBytes as UC}from"node:crypto";import{existsSync as DC}from"node:fs";import{chmod as LC,mkdir as MJ,readFile as XF,rm as RJ,writeFile as YF}from"node:fs/promises";import{dirname as jF,join as NJ}from"node:path";import{resolveClineDataDir as P2,resolveClineDir as VF}from"@cline/shared/storage";var QF="0.0.58
|
|
500
|
+
`)[0]??J);return XC(X,50)}return}function jC($){let Z=0;for(let Q of $)Z+=MQ(Q.metrics?.cost)??0;return Z}function VC($){let Z,Q;for(let W=$.length-1;W>=0;W-=1){let J=$[W];if(!Z)Z=n0(J.modelInfo?.provider);if(!Q)Q=n0(J.modelInfo?.id);if(Z&&Q)break}return{provider:Z,model:Q}}function BC($){return n0($?.provider)??n0($?.provider&&typeof $.provider==="object"&&!Array.isArray($.provider)?$.provider.id:void 0)}function HC($){return n0($?.model)??n0($?.model&&typeof $.model==="object"&&!Array.isArray($.model)?$.model.id:void 0)}function TJ($,Z){let Q=tE($.metadata),W=N5(Z?.title)??N5(Q?.title),J=MQ(Z?.totalCost)??MQ(Q?.totalCost),X=Q||W!==void 0||J!==void 0?{...Q??{},...W!==void 0?{title:W}:{},...J!==void 0?{totalCost:J}:{}}:void 0;return{...$,provider:n0(Z?.provider)??n0($.provider)??BC(Q)??"",model:n0(Z?.model)??n0($.model)??HC(Q)??"",metadata:X}}function GC($){let Z=$.content;if(!Array.isArray(Z))return!1;return Z.some((Q)=>!!Q&&typeof Q==="object"&&Q.type==="tool-call")}function KC($,Z){if($.status!=="running"||$.interactive!==!0)return!1;let Q=Z.at(-1);return Q?.role==="assistant"&&!GC(Q)}async function FC($,Z){return await Promise.all(Z.map(async(Q)=>{if(Q.status!=="running"||Q.interactive!==!0)return Q;let W=await $.readSessionMessages(Q.sessionId);return KC(Q,W)?{...Q,status:"idle"}:Q}))}async function eK($,Z){return await Promise.all(Z.map(async(Q)=>{let W=TJ(Q),J=Boolean(N5(W.metadata?.title)),X=Boolean(n0(W.provider)),Y=Boolean(n0(W.model)),j=MQ(W.metadata?.totalCost),V=j!==void 0&&j>0;if(J&&X&&Y&&V)return W;let B=await $.readSessionMessages(Q.sessionId);if(B.length===0)return W;let H=VC(B),G=jC(B);return TJ(Q,{title:J?void 0:YC(B),provider:X?void 0:H.provider,model:Y?void 0:H.model,totalCost:V||G<=0?void 0:G})}))}async function NQ($,Z={}){let Q=qJ(Z.limit),W=Z.includeSubagents===!0,J=await WC($,Q,{includeSubagents:W}),X=Z.includeManifestFallback===!0&&J.length<Q?await QC(Math.min(Math.max(Q*2,100),500)):[],Y=new Map;for(let B of[...J,...X]){if(Y.has(B.sessionId))continue;Y.set(B.sessionId,B)}let j=X.length===0?J:Array.from(Y.values()).sort((B,H)=>H.startedAt.localeCompare(B.startedAt)).slice(0,Q),V=await FC($,j);if(Z.hydrate===!1)return V.map((B)=>TJ(B));return await eK($,V)}async function AC($){let Z=$.trim();if(!Z)return;let Q=oK(tK(),Z,`${Z}.json`),W=await sK(Q,"utf8").catch(()=>{return});if(!W)return;try{let J=P0.safeParse(JSON.parse(W));return J.success?J.data.messages_path:void 0}catch{return}}async function OJ($,Z={}){let Q=new Map;return await NQ({listSessions:async(J)=>{let X=await $.listSessions(J);Q.clear();for(let Y of X)Q.set(Y.sessionId,Y);return X.map(R6)},readSessionMessages:async(J)=>{let X=Q.get(J)?.messagesPath??await AC(J);return await h$(X)}},Z)}var FA={};E(FA,{resolveSessionBackend:()=>XX,createRuntimeHost:()=>V4});import{captureSdkError as GA}from"@cline/shared";import{createSessionId as Vw,isHubProtocolCompatible as Bw,resolveClineBuildEnv as Hw,resolveHubCommandTimeoutMs as Gw}from"@cline/shared";import{spawn as mC}from"node:child_process";import{closeSync as vC,mkdirSync as cC,openSync as uC}from"node:fs";import{basename as dC,dirname as lC,join as pC}from"node:path";import{fileURLToPath as rC}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as iC,isHubDaemonProcess as AF,isHubProtocolCompatible as nC,resolveClineBuildEnv as fF,withResolvedClineBuildEnv as aC}from"@cline/shared";import{createHash as fC,randomBytes as UC}from"node:crypto";import{existsSync as DC}from"node:fs";import{chmod as LC,mkdir as MJ,readFile as XF,rm as RJ,writeFile as YF}from"node:fs/promises";import{dirname as jF,join as NJ}from"node:path";import{resolveClineDataDir as P2,resolveClineDir as VF}from"@cline/shared/storage";var QF="0.0.58";var E5={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:QF,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 _C="CLINE_HUB_DISCOVERY_PATH",zC="CLINE_HUB_BUILD_ID",WF=30000,TC=15000,qC=100;function OC($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function MC($){return fC("sha256").update($).digest("hex").slice(0,12)}function RC($){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 EQ(){return UC(32).toString("hex")}function NC($){return new Promise((Z)=>setTimeout(Z,$))}function EC($){return`${$}.lock`}async function CC($){try{let Z=JSON.parse(await XF(NJ($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function JF($){await RJ($,{recursive:!0,force:!0}).catch(()=>{return})}function CQ(){return process.env[zC]?.trim()||String(E5.version)}function n1($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${MC($)}`,Q=process.env[_C]?.trim()||NJ(P2(),"locks","hub","owners",`${OC(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function BF($=`hub-${Date.now().toString(36)}`){return n1($)}async function f0($){try{let Z=JSON.parse(await XF($,"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 wQ($,Z){await MJ(jF($),{recursive:!0}),await RJ($,{force:!0}).catch(()=>{return}),await YF($,`${JSON.stringify(Z,null,2)}
|
|
501
501
|
`,{encoding:"utf8",mode:384}),await LC($,384)}async function b0($){await RJ($,{force:!0}).catch(()=>{return})}async function PQ($,Z){let Q=EC($);await MJ(jF(Q),{recursive:!0});let W=Date.now()+TC;while(!0)try{await MJ(Q,{recursive:!1}),await YF(NJ(Q,"owner.json"),`${JSON.stringify({pid:process.pid,acquiredAt:new Date().toISOString()},null,2)}
|
|
502
502
|
`,"utf8");try{return await Z()}finally{await JF(Q)}}catch(J){if((J instanceof Error&&"code"in J?String(J.code):"")!=="EEXIST")throw J;let Y=await CC(Q),j=Y?Date.now()-Date.parse(Y.acquiredAt):WF+1;if(!Y||!RC(Y.pid)||j>WF){await JF(Q);continue}if(Date.now()>=W)throw Error(`Timed out waiting for hub startup lock ${Q}`);await NC(qC)}}async function a1($,Z){try{let Q=await fetch(Z?.authToken?EJ($):SQ($),{headers:Z?.authToken?{authorization:`Bearer ${Z.authToken}`}:void 0});if(!Q.ok)return;let W=await Q.json();if(typeof W.protocolVersion!=="string"||typeof W.host!=="string"||typeof W.port!=="number"||typeof W.url!=="string")return;return{protocolVersion:W.protocolVersion,minClientProtocolVersion:typeof W.minClientProtocolVersion==="string"?W.minClientProtocolVersion:void 0,maxClientProtocolVersion:typeof W.maxClientProtocolVersion==="string"?W.maxClientProtocolVersion:void 0,capabilities:Array.isArray(W.capabilities)?W.capabilities.filter((J)=>typeof J==="string"):void 0,coreVersion:typeof W.coreVersion==="string"?W.coreVersion:void 0,buildId:typeof W.buildId==="string"?W.buildId:void 0,host:W.host,port:W.port,url:W.url,hubId:typeof W.hubId==="string"?W.hubId:void 0,authToken:typeof W.authToken==="string"?W.authToken:void 0,pid:typeof W.pid==="number"?W.pid:void 0,startedAt:typeof W.startedAt==="string"?W.startedAt:void 0,updatedAt:typeof W.updatedAt==="string"?W.updatedAt:void 0}}catch{return}}function V1($,Z,Q="/hub"){return new URL(`ws://${$}:${Z}${Q}`).toString()}function SQ($){let Z=new URL($);return Z.protocol=Z.protocol==="wss:"?"https:":"http:",Z.pathname="/health",Z.search="",Z.toString()}function EJ($){let Z=new URL(SQ($));return Z.pathname="/status",Z.toString()}function HF($){return DC($)}import{CLINE_HUB_DEV_PORT as wC,CLINE_HUB_PORT as PC,resolveClineBuildEnv as SC}from"@cline/shared";var bC="CLINE_HUB_HOST",yC="CLINE_HUB_PORT",hC="CLINE_HUB_PATHNAME",CJ="127.0.0.1",wJ=PC,PJ="/hub";function GF($){return SC($)==="development"?wC:wJ}function SJ($={}){return($.env??process.env)[bC]?.trim()||CJ}function s8($={}){let Q=($.env??process.env)[yC]?.trim();if(!Q)return GF($);let W=Number.parseInt(Q,10);if(!Number.isInteger(W)||W<1||W>65535)return GF($);return W}function bJ($={}){return($.env??process.env)[hC]?.trim()||PJ}function a0($={},Z={}){return{host:$.host??SJ(Z),port:$.port??s8(Z),pathname:$.pathname??bJ(Z)}}import{join as kC}from"node:path";var IC="shared:cline",xC="CLINE_HUB_DISCOVERY_PATH",gC="hub-production";function KF($){let Z=d1($.trim());return n1(`workspace:${Z||$.trim()}`)}function y0($=IC){return n1($)}function s0(){return{ownerId:gC,discoveryPath:process.env[xC]?.trim()||kC(P2(),"locks","hub","production.json")}}var sC=8000,oC=200,tC=3000,eC=100,$w=[100,250,500,1000,2000],Zw="--cline-hub-daemon";function Qw($){return[...$.host?["--host",$.host]:[],...typeof $.port==="number"?["--port",String($.port)]:[],...$.pathname?["--pathname",$.pathname]:[]]}function Ww(){try{let $=pC(P2(),"logs","hub-daemon.log");return cC(lC($),{recursive:!0}),{fd:uC($,"a"),logPath:$}}catch{return}}function UF(){return fF()==="production"?s0():y0()}function S2($){return nC($).compatible}function FF($,Z,Q){if(!Z||Z.url!==Q)return $;return{...$,authToken:$.authToken??Z.authToken,pid:$.pid??Z.pid}}async function b2($,Z){try{return await a1($,{authToken:Z})}catch{return}}async function Jw($,Z){let Q=Date.now()+Z;while(Date.now()<Q){if(!(await b2($))?.url)return!0;await new Promise((J)=>setTimeout(J,eC))}return!1}async function bQ($,Z){if(await w5($.url,$.authToken).catch(()=>!1),$.pid)try{process.kill($.pid,"SIGTERM")}catch{}let Q=await Jw($.url,tC);return await b0(Z).catch(()=>{return}),Q}async function C5($,Z){if(S2($))return!0;return bQ($,Z)}async function DF($){if(fF()!=="production")return;let Z=y0();if(Z.discoveryPath===$.discoveryPath)return;let Q=await f0(Z.discoveryPath);if(Q?.url)await bQ(Q,Z.discoveryPath);else await b0(Z.discoveryPath).catch(()=>{return})}function Xw(){let $=import.meta.url.endsWith(".ts")?"ts":"js";return rC(new URL(`./entry.${$}`,import.meta.url))}function Yw($,Z){let Q=Xw(),W=process.execPath?.trim();if(!W)throw Error("unable to resolve runtime executable for hub daemon");let J=dC(W).toLowerCase().includes("bun"),X=Q.startsWith("/$bunfs/"),Y=J&&Q.toLowerCase().endsWith(".ts"),j=X?[Zw]:[...Y?["--conditions=development"]:[],Q];return{launcher:W,args:[...j,"--cwd",$,...Qw(Z)],cwd:$,env:{...aC(process.env),CLINE_NO_INTERACTIVE:"1",[iC]:"1"}}}function jw($){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 yJ($,Z={}){if(AF())return;let Q=Yw($,Z),W=Ww();try{mC(Q.launcher,Q.args,{detached:!0,stdio:W?["ignore",W.fd,W.fd]:"ignore",env:Q.env,cwd:Q.cwd,windowsHide:!0}).unref()}finally{if(W)vC(W.fd)}}async function o8($,Z={}){for(let Q=0;;Q++)try{yJ($,Z);return}catch(W){let J=$w[Q];if(!jw(W)||J===void 0)throw W;await new Promise((X)=>setTimeout(X,J))}}function yQ($,Z={}){if(AF())return;let Q=UF(),W=a0(Z),J=V1(W.host,W.port,W.pathname),X=Z.allowPortFallback===!0&&W.port!==0;DF(Q).catch(()=>{return}).then(()=>f0(Q.discoveryPath)).then(async(Y)=>{let j=!1;if(Y?.url)if(!Y.authToken){if(j=!0,!await bQ(Y,Q.discoveryPath)&&!X)return}else{let H=await b2(Y.url,Y.authToken);if(H?.url&&S2(H)&&await f1(H.url,{authToken:Y.authToken}))return;if(H?.url)await C5({...H,authToken:Y.authToken},Q.discoveryPath);else await b0(Q.discoveryPath).catch(()=>{return})}let V=await b2(J);if(V?.url){if(S2(V)){if(!X||!j)return}else if(!await C5({...V,authToken:void 0},Q.discoveryPath)&&!X)return}let B=X?{...W,port:0}:W;await o8($,B)}).catch(()=>{})}async function LF($,Z={}){let Q=UF(),W=Z.host!==void 0||Z.port!==void 0||Z.pathname!==void 0||!!process.env.CLINE_HUB_PORT?.trim(),J=a0(Z),X=V1(J.host,J.port,J.pathname),Y=(F)=>{if(!W)k$(F.url,F.authToken);return F};await DF(Q).catch(()=>{return});let j=await f0(Q.discoveryPath),V=!1;if(j?.url){let F=j.authToken;if(!F)V=!0,await bQ(j,Q.discoveryPath);else{let A=await b2(j.url,F);if(A?.url&&S2(A)&&await f1(A.url,{authToken:F}))return Y({url:A.url,authToken:F});if(A?.url)await C5({...A,authToken:F},Q.discoveryPath);else await b0(Q.discoveryPath).catch(()=>{return})}}let B=await b2(X);if(B?.url){let F=FF(B,j,X);if(S2(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 C5(F,Q.discoveryPath)&&Z.allowPortFallback!==!0&&J.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&&J.port!==0?{...J,port:0}:J;await o8($,G);let K=Date.now()+sC;while(Date.now()<K){let F=await f0(Q.discoveryPath);if(F?.url&&F.authToken){let L=await b2(F.url,F.authToken);if(L?.url&&S2(L)&&await f1(L.url,{authToken:F.authToken}))return Y({url:L.url,authToken:F.authToken})}let A=await b2(X);if(A?.url&&!S2(A)){let L=FF(A,F,X);if(!await C5(L,Q.discoveryPath)&&Z.allowPortFallback!==!0&&J.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((L)=>setTimeout(L,oC))}throw Error("Timed out waiting for detached hub startup.")}function hQ(){return Hw()==="production"?s0():y0()}function Kw(){let $=globalThis.WebSocket;if(!$)throw Error("Global WebSocket is not available in this runtime. Node 22+ is required for hub mode.");return $}function OF($){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 OF($.data);return String($)}function Fw($){if(typeof $==="string")return $;if($ instanceof Uint8Array)return Buffer.from($).toString("utf8");if($ instanceof ArrayBuffer)return Buffer.from($).toString("utf8");return""}function _F($){let Z=$,Q=Fw(Z.reason);return new N0("hub_connection_closed",Z.code||Q?`Hub connection closed (code=${Z.code??0}${Q?`, reason=${Q}`:""})`:hJ,{closeCode:Z.code,closeReason:Q||void 0})}function Aw($,Z){if($ instanceof N0)return $;if($ instanceof Error)return new N0("hub_connect_failed",$.message);if($&&typeof $==="object"&&"error"in $&&$.error instanceof Error)return new N0("hub_connect_failed",$.error.message);let Q=$&&typeof $==="object"&&"message"in $&&typeof $.message==="string"?$.message.trim():"";if(Q)return new N0("hub_connect_failed",Q);let W=$&&typeof $==="object"&&"type"in $&&typeof $.type==="string"?$.type.trim():"";return new N0("hub_connect_failed",W?`Failed to connect to hub at ${Z.toString()} (${W} event before socket open).`:`Failed to connect to hub at ${Z.toString()}.`)}var fw=8000,Uw=200,zF="*",TF=8000,Dw="cline-hub-auth.",MF=new Map,RF=new Set,Lw=3000,_w=3000,zw=100,hJ="Hub connection closed",Tw=250,qw=5000,qF=0.5;class N0 extends Error{code;details;constructor($,Z,Q){super(Z);this.code=$;this.details=Q;this.name="HubTransportError"}}function xJ($){return $ instanceof N0}class t8 extends Error{command;code;constructor($,Z,Q){super(Q);this.command=$;this.code=Z;this.name="HubCommandError"}}function kQ($,Z){return $ instanceof t8&&$.code==="hub_command_timeout"&&(Z===void 0||$.command===Z)}function NF($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=gJ($.toString());return Q?MF.get(Q):void 0}function Ow($){try{let Q=new URL($).hostname.toLowerCase().replace(/^\[|\]$/g,"");return Q==="localhost"||Q==="127.0.0.1"||Q==="::1"}catch{return!1}}function gJ($){if(!Ow($))return;let Z=new URL(I$($));return Z.search="",Z.hash="",Z.toString()}function kJ($){let Z=gJ($);return!!Z&&RF.has(Z)}function k$($,Z){let Q=gJ($);if(Q){if(RF.add(Q),Z?.trim())MF.set(Q,Z)}return $}class B1{options;socket;connectPromise;clientId;currentUrl;recoveryPromise;pendingReplies=new Map;listeners=new Set;subscriptionCounts=new Map;reconnectTimer;reconnectAttempt=0;closedByClient=!1;lastCloseError=new N0("hub_connection_closed",hJ);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()||NF($);$.hash="";let W=new(Kw())($.toString(),Z?[`${Dw}${Z}`]:void 0);this.socket=W;let J=!1;this.connectPromise=new Promise((X,Y)=>{let j=!1,V=setTimeout(()=>{if(j)return;j=!0,J=!0,this.lastCloseError=new N0("hub_connect_timeout",`Timed out connecting to hub after ${TF}ms`),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0;try{W.close()}catch{}Y(this.lastCloseError)},TF);W.addEventListener("open",()=>{if(j)return;j=!0,clearTimeout(V),X()}),W.addEventListener("error",(B)=>{if(j)return;j=!0,clearTimeout(V),this.lastCloseError=Aw(B,$),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)}),W.addEventListener("close",(B)=>{if(j)return;if(j=!0,clearTimeout(V),!J)this.lastCloseError=_F(B),this.sawSocketClose=!0;this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)})}),W.addEventListener("message",(X)=>{this.handleFrame(JSON.parse(OF(X)))}),W.addEventListener("close",(X)=>{if(this.socket!==W)return;if(!J)this.lastCloseError=_F(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,W={listener:$,sessionId:Q};return this.listeners.add(W),this.adjustSubscriptionCount(Q,1),()=>{if(!this.listeners.delete(W))return;this.adjustSubscriptionCount(Q,-1)}}async command($,Z,Q,W){let J=0,X=$!=="client.register"&&$!=="client.unregister";while(!0)try{return await this.commandOnce($,Z,Q,W)}catch(Y){if(!X||J>=1||!await this.recoverLocalHubTransport(Y))throw Y;J+=1}}async commandOnce($,Z,Q,W){await this.connect();let J=Vw("hubreq_"),X=Gw($,W?.timeoutMs),Y=new Promise((V,B)=>{let H=X===null?void 0:setTimeout(()=>{if(!this.pendingReplies.delete(J))return;B(new t8($,"hub_command_timeout",`Hub command ${$} timed out after ${X}ms (hub=${this.currentUrl}, requestId=${J}, 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(J,{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:J,clientId:this.clientId,sessionId:Q,timeoutMs:X,payload:Z}})}catch(V){throw this.pendingReplies.delete(J),V}let j=await Y;if(!j.ok){if(j.error?.code===N2){let V=Q??(typeof Z?.sessionId==="string"?Z.sessionId:void 0);throw new r1(V,j.error.message)}throw new t8($,j.error?.code,j.error?.message??`Hub command ${$} failed`)}return j}async recoverLocalHubTransport($){if(!kJ(this.currentUrl)||!xJ($))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(Tw*2**this.reconnectAttempt,qw),Z=Math.round($*(1-qF)+Math.random()*$*qF);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(!kJ(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 N0("hub_connection_closed",hJ),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 N0("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($),W=(this.subscriptionCounts.get(Q)??0)+Z;if(W<=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,W),Z>0&&W===1&&this.socket?.readyState===1)this.sendSubscriptionFrame("stream.subscribe",$)}subscriptionKeyForSessionId($){return $??zF}subscriptionSessionIdFromKey($){return $===zF?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 I$($){let Z=new URL($);if(Z.protocol==="http:")Z.protocol="ws:";else if(Z.protocol==="https:")Z.protocol="wss:";return Z.toString()}async function f1($,Z){let Q=new B1({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 IJ($,Z){let Q=I$($),W=await a1(Q,{authToken:Z?.authToken});if(!W)return{status:"unreachable",url:Q};if(!Bw(W).compatible)return{status:"protocol_mismatch",url:Q};if(Z?.verifyConnection===!0&&!await f1(Q,{workspaceRoot:Z.workspaceRoot,cwd:Z.cwd,authToken:Z.authToken}))return{status:"unreachable",url:Q};return{status:"compatible",url:Q}}async function Mw($){let Z=Date.now()+fw;while(Date.now()<Z){let Q=await f0($.discoveryPath);if(Q?.url){let W=await IJ(Q.url,{verifyConnection:!0,authToken:Q.authToken});if(W.status==="compatible")return k$(W.url,Q.authToken)}await new Promise((W)=>setTimeout(W,Uw))}return}async function Rw($){let Z=Date.now()+_w;while(Date.now()<Z){if(!(await a1($).catch(()=>{return}))?.url)return!0;await new Promise((W)=>setTimeout(W,zw))}return!1}function Nw($,Z){try{return I$($)===I$(Z)}catch{return!1}}function Ew($){return($&&typeof $==="object"&&Array.isArray($.sessions)?$.sessions:[]).some((Q)=>{if(!Q||typeof Q!=="object")return!1;let W=Q;if(W.status==="running"||W.status==="idle"||W.status==="pending")return!0;return Array.isArray(W.participants)&&W.participants.length>0})}async function Cw($,Z,Q){let W=new B1({url:$,authToken:Z,clientType:"hub-recovery-check",displayName:"hub recovery check",workspaceRoot:Q?.workspaceRoot,cwd:Q?.cwd});try{let J=await W.command("session.list",{limit:500},void 0,{timeoutMs:Lw});return!Ew(J.payload)}catch{return!1}finally{await W.dispose().catch(()=>{return})}}async function P5($={}){if($.endpoint?.trim()){let J=await IJ($.endpoint);return J.status==="compatible"?J.url:void 0}let Z=hQ(),Q=await f0(Z.discoveryPath);if(!Q?.url)return;let W=await IJ(Q.url,{authToken:Q.authToken});if(W.status==="compatible")return k$(W.url,Q.authToken);if(W.status==="protocol_mismatch")await b0(Z.discoveryPath).catch(()=>{return});return}async function y2($={}){let Z=await P5($);if(Z&&await f1(Z,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return Z;if($.endpoint?.trim())return;let Q=hQ();return await o8($.workspaceRoot??process.cwd()),await Mw(Q)}async function w5($,Z){let Q=new URL($),W=Z?.trim()||NF(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:W?{authorization:`Bearer ${W}`}:void 0})).ok}async function mJ($=hQ()){let Z=await f0($.discoveryPath);if(!Z?.url)return!1;try{if(await w5(Z.url,Z.authToken))return!0}catch{}return!1}async function IQ($){if(!kJ($.url))return;let Z=hQ(),Q=await f0(Z.discoveryPath);if(!Q?.url||!Nw(Q.url,$.url))return;if(!await Cw(Q.url,Q.authToken,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return;if(!await mJ())return;if(!await Rw(Q.url))return;return await b0(Z.discoveryPath).catch(()=>{return}),await y2({workspaceRoot:$.workspaceRoot,cwd:$.cwd})}var mF={};E(mF,{HubRuntimeHost:()=>s1});import{captureSdkError as CF,createSessionId as wF,HUB_CHECKPOINT_CAPABILITY as bw,HUB_COMPACTION_CAPABILITY as yw,HUB_CUSTOM_TOOL_CAPABILITY_PREFIX as hw,HUB_HOOK_CAPABILITY_PREFIX as kw,HUB_MISTAKE_LIMIT_CAPABILITY as Iw,HUB_TOOL_EXECUTOR_CAPABILITY_PREFIX as xw,HUB_USER_INSTRUCTIONS_SNAPSHOT_CAPABILITY as gw,isHubToolExecutorName as mw}from"@cline/shared";var EF={};E(EF,{createCoreSessionSnapshot:()=>U1,coreSessionSnapshotToRecord:()=>xQ});function ww($){return $?JSON.parse(JSON.stringify($)):void 0}function Pw($){return $?JSON.parse(JSON.stringify($)):void 0}function Sw($){let Z=$?.checkpoint&&typeof $.checkpoint==="object"&&!Array.isArray($.checkpoint)?$.checkpoint:void 0,W=(Array.isArray(Z?.history)?Z.history:[]).filter((Y)=>!!Y&&typeof Y==="object"&&!Array.isArray(Y)).flatMap((Y)=>{let j=typeof Y.ref==="string"?Y.ref.trim():"",V=Number(Y.createdAt),B=Number(Y.runCount);if(!j||!Number.isFinite(V)||!Number.isInteger(B))return[];return[{ref:j,createdAt:V,runCount:B,...Y.kind==="stash"||Y.kind==="commit"?{kind:Y.kind}:{}}]}),J=W.at(-1),X=$?.checkpointEnabled===!0?!0:void 0;if(!X&&W.length===0)return;return{...X?{enabled:X}:{},...J?{latest:J}:{},history:W}}function U1($){let{session:Z}=$,Q=ww(Z.metadata);return{version:1,sessionId:Z.sessionId,source:Z.source,status:Z.status,createdAt:Z.startedAt,updatedAt:Z.updatedAt,endedAt:Z.endedAt??null,exitCode:Z.exitCode??null,interactive:Z.interactive,workspace:{cwd:Z.cwd,root:Z.workspaceRoot},model:{providerId:Z.provider,modelId:Z.model},capabilities:{enableTools:Z.enableTools,enableSpawn:Z.enableSpawn,enableTeams:Z.enableTeams},lineage:{...Z.parentSessionId?{parentSessionId:Z.parentSessionId}:{},...Z.parentAgentId?{parentAgentId:Z.parentAgentId}:{},...Z.agentId?{agentId:Z.agentId}:{},...Z.conversationId?{conversationId:Z.conversationId}:{},isSubagent:Z.isSubagent},...Z.teamName?{team:{name:Z.teamName}}:{},...Z.prompt?{prompt:Z.prompt}:{},...Q?{metadata:Q}:{},...Z.messagesPath?{artifacts:{messagesPath:Z.messagesPath}}:{},...$.messages?{messages:Pw($.messages)}:{},...$.usage?{usage:{...$.usage}}:{},...$.aggregateUsage?{aggregateUsage:{...$.aggregateUsage}}:{},...(()=>{let W=Sw(Q);return W?{checkpoint:W}:{}})()}}function xQ($){return{sessionId:$.sessionId,parentSessionId:$.lineage.parentSessionId,agentId:$.lineage.agentId,parentAgentId:$.lineage.parentAgentId,conversationId:$.lineage.conversationId,isSubagent:$.lineage.isSubagent,source:$.source,startedAt:$.createdAt,endedAt:$.endedAt??void 0,exitCode:$.exitCode??void 0,status:$.status,interactive:$.interactive,provider:$.model.providerId,model:$.model.modelId,cwd:$.workspace.cwd,workspaceRoot:$.workspace.root,teamName:$.team?.name,enableTools:$.capabilities.enableTools,enableSpawn:$.capabilities.enableSpawn,enableTeams:$.capabilities.enableTeams,prompt:$.prompt,metadata:$.metadata,updatedAt:$.updatedAt,messagesPath:$.artifacts?.messagesPath}}function e8($){if(!$)return;return JSON.parse(JSON.stringify($))}var vw=["beforeRun","afterRun","beforeModel","afterModel","beforeTool","afterTool","onEvent"];function PF($){if(!$||typeof $!=="object"||Array.isArray($))return;return JSON.parse(JSON.stringify($))}function SF($){if(!$)return;let{userInstructionService:Z,...Q}=$;return JSON.parse(JSON.stringify(Q))}function bF($){let Z=$&&typeof $==="object"&&!Array.isArray($)?$:{};return{agentId:typeof Z.agentId==="string"?Z.agentId:"",conversationId:typeof Z.conversationId==="string"?Z.conversationId:"",iteration:typeof Z.iteration==="number"?Z.iteration:0,metadata:Z.metadata&&typeof Z.metadata==="object"&&!Array.isArray(Z.metadata)?Z.metadata:void 0}}function h2($,Z,Q){$.manifest.push(Z),$.handlers.set(Z.capabilityName,Q)}function yF($,Z){let Q={manifest:[],handlers:new Map};for(let J of Object.keys(Z.toolExecutors??{}).filter(mw)){let X=Z.toolExecutors?.[J];if(typeof X!=="function")continue;h2(Q,{kind:"toolExecutor",executor:J,capabilityName:`${xw}${J}`},async({payload:Y,abortSignal:j})=>{let V=Array.isArray(Y.args)?[...Y.args]:[],B={...bF(Y.context),signal:j};return{result:await X(...V,B)}})}for(let J of $?.extraTools??[])h2(Q,{kind:"tool",name:J.name,description:J.description,inputSchema:e8(J.inputSchema)??{},...J.lifecycle?{lifecycle:e8(J.lifecycle)}:{},capabilityName:`${hw}${J.name}`},async({payload:X,abortSignal:Y,progress:j})=>{let V={...bF(X.context),signal:Y};return{result:await J.execute(X.input,{...V,emitUpdate:(H)=>{j({update:H})}})}});let W=$?.hooks;if(W)for(let J of vw){let X=W[J];if(typeof X!=="function")continue;h2(Q,{kind:"hook",name:J,capabilityName:`${kw}${J}`},async({payload:Y})=>({control:await X(Y.context)}))}if($?.compaction?.compact){let J=$.compaction.compact;h2(Q,{kind:"compaction",capabilityName:yw,config:PF($.compaction)},async({payload:X})=>({result:await J(X.context)}))}if($?.checkpoint?.createCheckpoint){let J=$.checkpoint.createCheckpoint;h2(Q,{kind:"checkpoint",capabilityName:bw,config:PF($.checkpoint)},async({payload:X})=>({result:await J(X.context)}))}if($?.onConsecutiveMistakeLimitReached){let J=$.onConsecutiveMistakeLimitReached;h2(Q,{kind:"mistakeLimit",capabilityName:Iw},async({payload:X})=>({result:await J(X.context)}))}if($?.userInstructionService){let J=$.userInstructionService;h2(Q,{kind:"userInstructionService",capabilityName:gw},async()=>{return await J.start().catch(()=>{}),{snapshot:{records:{skill:J.listRecords("skill"),rule:J.listRecords("rule"),workflow:J.listRecords("workflow")},runtimeCommands:J.listRuntimeCommands()}}})}return Q}function xF($){if(typeof $==="string"&&$.trim())return $.trim();if($ instanceof Error)return $.message.trim()||void 0;if($&&typeof $==="object"&&"message"in $){let Z=$.message;if(typeof Z==="string"&&Z.trim())return Z.trim()}return}function cw($){return xF($)??"Capability request was cancelled."}function uw($){if(typeof $!=="string")return $;try{return JSON.parse($)}catch{return $}}function dw($){return $==="completed"||$==="max_iterations"||$==="aborted"||$==="mistake_limit"||$==="error"}function lw($){if(!$||typeof $!=="object"||Array.isArray($))return;let Z=$,Q=typeof Z.inputTokens==="number"?Z.inputTokens:void 0,W=typeof Z.outputTokens==="number"?Z.outputTokens:void 0;if(Q===void 0||W===void 0)return;return{inputTokens:Q,outputTokens:W,cacheReadTokens:typeof Z.cacheReadTokens==="number"?Z.cacheReadTokens:0,cacheWriteTokens:typeof Z.cacheWriteTokens==="number"?Z.cacheWriteTokens:0,totalCost:typeof Z.totalCost==="number"?Z.totalCost:0}}function hF($){if(!$)return;return{inputTokens:typeof $.inputTokens==="number"?$.inputTokens:0,outputTokens:typeof $.outputTokens==="number"?$.outputTokens:0,cacheReadTokens:typeof $.cacheReadTokens==="number"?$.cacheReadTokens:0,cacheWriteTokens:typeof $.cacheWriteTokens==="number"?$.cacheWriteTokens:0,totalCost:typeof $.totalCost==="number"?$.totalCost:0}}function vJ($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function x$($,Z){return vJ($?.[Z])??0}function pw($){let Z=$?.delta&&typeof $.delta==="object"?$.delta:void 0,Q=$?.totals&&typeof $.totals==="object"?$.totals:void 0,W=$?.agent&&typeof $.agent==="object"?$.agent:void 0,J=W?.teamRole==="teammate"||W?.teamRole==="lead"?W.teamRole:void 0;return{event:{type:"usage",agentId:typeof W?.agentId==="string"?W.agentId:void 0,conversationId:typeof W?.conversationId==="string"?W.conversationId:void 0,parentAgentId:typeof W?.parentAgentId==="string"?W.parentAgentId:void 0,inputTokens:x$(Z,"inputTokens"),outputTokens:x$(Z,"outputTokens"),cacheReadTokens:x$(Z,"cacheReadTokens"),cacheWriteTokens:x$(Z,"cacheWriteTokens"),cost:vJ(Z?.totalCost),totalInputTokens:x$(Q,"inputTokens"),totalOutputTokens:x$(Q,"outputTokens"),totalCacheReadTokens:x$(Q,"cacheReadTokens"),totalCacheWriteTokens:x$(Q,"cacheWriteTokens"),totalCost:vJ(Q?.totalCost)},teamAgentId:typeof W?.teamAgentId==="string"?W.teamAgentId:void 0,teamRole:J}}function rw($){let Z=$?.result&&typeof $.result==="object"&&!Array.isArray($.result)?$.result:void 0,Q=$?.reason??Z?.finishReason,W=dw(Q)?Q:Q==="failed"?"error":"completed",J=lw($?.usage??Z?.usage);return{type:"done",reason:W,text:typeof $?.text==="string"?$.text:typeof Z?.text==="string"?Z.text:"",iterations:typeof $?.iterations==="number"?$.iterations:typeof Z?.iterations==="number"?Z.iterations:0,usage:J}}function gQ($,Z){return $.error?.message??`hub command failed: ${Z}`}function S5($){switch($){case"idle":case"completed":return"completed";case"failed":return"failed";case"aborted":return"cancelled";default:return"running"}}function gF($){let Z=$.metadata&&typeof $.metadata==="object"?JSON.parse(JSON.stringify($.metadata)):void 0;return{sessionId:$.sessionId,parentSessionId:typeof Z?.parentSessionId==="string"?Z.parentSessionId:void 0,agentId:$.runtimeSession?.agentId||(typeof Z?.agentId==="string"?Z.agentId:void 0),parentAgentId:typeof Z?.parentAgentId==="string"?Z.parentAgentId:void 0,conversationId:typeof Z?.conversationId==="string"?Z.conversationId:void 0,isSubagent:typeof Z?.isSubagent==="boolean"?Z.isSubagent:!1,source:typeof Z?.source==="string"?Z.source:z0.CORE,pid:typeof Z?.pid==="number"?Z.pid:void 0,startedAt:new Date($.createdAt).toISOString(),endedAt:S5($.status)==="running"?void 0:new Date($.updatedAt).toISOString(),exitCode:S5($.status)==="completed"?0:S5($.status)==="failed"?1:void 0,status:S5($.status),interactive:Z?.interactive===!0,provider:typeof Z?.provider==="string"?Z.provider:"hub",model:typeof Z?.model==="string"?Z.model:"hub",cwd:$.cwd?.trim()||$.workspaceRoot,workspaceRoot:$.workspaceRoot,teamName:typeof Z?.teamName==="string"?Z.teamName:void 0,enableTools:$.runtimeOptions?.enableTools??Z?.enableTools===!0,enableSpawn:$.runtimeOptions?.enableSpawn??Z?.enableSpawn===!0,enableTeams:$.runtimeOptions?.enableTeams??Z?.enableTeams===!0,prompt:typeof Z?.prompt==="string"?Z.prompt:void 0,metadata:Z,updatedAt:new Date($.updatedAt).toISOString(),messagesPath:typeof Z?.messagesPath==="string"?Z.messagesPath:void 0,hookPath:typeof Z?.hookPath==="string"?Z.hookPath:void 0}}function g$($){if(!$||typeof $!=="object"||Array.isArray($))return;let Z=$;return Z.version===1&&typeof Z.sessionId==="string"?JSON.parse(JSON.stringify(Z)):void 0}function iw($){let Z=g$($?.snapshot);if(Z)return xQ(Z);let Q=$?.session;return Q?gF(Q):void 0}function kF($,Z,Q){let W=Q?.workspaceRoot?.trim()||Z.config.workspaceRoot||Z.config.cwd;return P0.parse({version:1,session_id:$,source:Z.source??z0.CORE,pid:process.pid,started_at:new Date(Q?.createdAt??Date.now()).toISOString(),status:S5(Q?.status),interactive:Z.interactive===!0,provider:Z.config.providerId,model:Z.config.modelId,cwd:Q?.cwd?.trim()||Z.config.cwd,workspace_root:W,team_name:Z.config.teamName,enable_tools:Z.config.enableTools,enable_spawn:Z.config.enableSpawnAgent,enable_teams:Z.config.enableAgentTeams,prompt:Z.prompt?.trim()||void 0,metadata:Z.sessionMetadata&&Object.keys(Z.sessionMetadata).length>0?Z.sessionMetadata:void 0})}function IF($,Z){return P0.parse({version:1,session_id:$.sessionId,source:$.source,pid:process.pid,started_at:$.createdAt,status:$.status,interactive:$.interactive,provider:$.model.providerId,model:$.model.modelId,cwd:$.workspace.cwd,workspace_root:$.workspace.root,team_name:$.team?.name,enable_tools:$.capabilities.enableTools,enable_spawn:$.capabilities.enableSpawn,enable_teams:$.capabilities.enableTeams,prompt:($.prompt??Z.prompt?.trim())||void 0,metadata:$.metadata,messages_path:$.artifacts?.messagesPath})}class s1{runtimeAddress;pendingPrompts;client;clientOptions;clientContext;events=new R5;sessionCapabilities=new Map;sessionClientContributionHandlers=new Map;sessionSubscriptions=new Map;pendingApprovalToolCallIds=new Set;agentDoneEmittedForCurrentRunBySession=new Set;activeCapabilityAbortControllers=new Map;defaultCapabilities;telemetry;constructor($,Z){this.clientContext=Z,this.clientOptions={authToken:$.authToken,clientType:$.clientType??"core-hub-runtime",displayName:$.displayName??"core hub runtime",workspaceRoot:Z?.workspaceRoot,cwd:Z?.cwd},this.defaultCapabilities=O0($.capabilities)??{},this.telemetry=$.telemetry,this.runtimeAddress=$.url,this.pendingPrompts={list:(Q)=>this.requestPendingPromptsList(Q),update:(Q)=>this.requestPendingPromptUpdate(Q),delete:(Q)=>this.requestPendingPromptDelete(Q)},this.client=this.createClient($.url)}createClient($){return new B1({...this.clientOptions,url:$})}async replaceClient($){let Z=this.client;this.client=this.createClient($),this.runtimeAddress=$,await Promise.resolve(Z.dispose()).catch(()=>{return})}async recoverLocalHubStartupDeadlock($){if(!kQ($,"session.create"))return!1;let Z=await IQ({url:this.client.getUrl(),workspaceRoot:this.clientContext?.workspaceRoot,cwd:this.clientContext?.cwd}).catch(()=>{return});if(!Z)return!1;return await this.replaceClient(Z),!0}registerPlannedSession($,Z,Q){if(this.sessionCapabilities.set($,Z),Q.size>0)this.sessionClientContributionHandlers.set($,Q);this.ensureSessionSubscription($)}cleanupPlannedSession($){this.sessionCapabilities.delete($),this.sessionClientContributionHandlers.delete($),this.disposeSessionSubscription($)}async connect(){await this.client.connect()}async startSession($){let Z=this.resolveCapabilities($),Q=yF($.localRuntime,Z),W=$.config.sessionId?.trim()||wF(),J=()=>this.client.command("session.create",{workspaceRoot:$.config.workspaceRoot?.trim()||$.config.cwd,cwd:$.config.cwd,sessionConfig:e8({...$.config,sessionId:W}),metadata:{...$.sessionMetadata??{},source:$.source??z0.CORE,provider:$.config.providerId,model:$.config.modelId,enableTools:$.config.enableTools,enableSpawn:$.config.enableSpawnAgent,enableTeams:$.config.enableAgentTeams,teamName:$.config.teamName,prompt:$.prompt,interactive:$.interactive===!0},runtimeOptions:{...Q.manifest.length>0?{clientContributions:Q.manifest}:{},...$.localRuntime?.configExtensions?{configExtensions:$.localRuntime.configExtensions}:{}},toolPolicies:e8($.toolPolicies),initialMessages:$.initialMessages});this.registerPlannedSession(W,Z,Q.handlers);let X;try{X=await J()}catch(B){if(this.cleanupPlannedSession(W),await this.recoverLocalHubStartupDeadlock(B)){this.registerPlannedSession(W,Z,Q.handlers);try{X=await J()}catch(H){throw this.cleanupPlannedSession(W),H}}else throw B}let Y=g$(X.payload?.snapshot),j=X.payload?.session,V=(Y?.sessionId??j?.sessionId)?.trim();if(!V)throw this.cleanupPlannedSession(W),Error("Hub runtime did not return a session id.");if(V!==W)this.cleanupPlannedSession(W),this.registerPlannedSession(V,Z,Q.handlers);return{sessionId:V,manifest:Y?IF(Y,$):kF(V,$,j),manifestPath:"",messagesPath:"",result:void 0}}async restoreSession($){let Z=$.sessionId.trim();if(!Z)throw Error("sessionId is required");let Q=$.restore?.messages!==!1;if(Q&&!$.start)throw Error("start is required when restore.messages is true");let W=$.start,J=W?this.resolveCapabilities(W):void 0,X=W?yF(W.localRuntime,J??{}):{manifest:[],handlers:new Map},Y=W?W.config.sessionId?.trim()||wF():void 0;if(Y&&J)this.sessionCapabilities.set(Y,J);if(Y&&X.handlers.size>0)this.sessionClientContributionHandlers.set(Y,X.handlers),this.ensureSessionSubscription(Y);let j;try{j=await this.client.command("session.restore",{sessionId:Z,checkpointRunCount:$.checkpointRunCount,restore:$.restore,...W?{workspaceRoot:W.config.workspaceRoot?.trim()||W.config.cwd,cwd:W.config.cwd??$.cwd,sessionConfig:e8({...W.config,sessionId:Y}),metadata:{...W.sessionMetadata??{},source:W.source??z0.CORE,provider:W.config.providerId,model:W.config.modelId,enableTools:W.config.enableTools,enableSpawn:W.config.enableSpawnAgent,enableTeams:W.config.enableAgentTeams,teamName:W.config.teamName,prompt:W.prompt,interactive:W.interactive===!0},runtimeOptions:{...X.manifest.length>0?{clientContributions:X.manifest}:{},...W.localRuntime?.configExtensions?{configExtensions:W.localRuntime.configExtensions}:{}},toolPolicies:e8(W.toolPolicies)}:{}},Z)}catch(F){if(Y)this.sessionCapabilities.delete(Y),this.sessionClientContributionHandlers.delete(Y),this.disposeSessionSubscription(Y);throw F}if(!j.ok){let F=typeof j.payload?.error==="string"?j.payload.error:"session.restore failed";if(Y)this.sessionCapabilities.delete(Y),this.sessionClientContributionHandlers.delete(Y),this.disposeSessionSubscription(Y);throw Error(F)}let V=g$(j.payload?.snapshot),B=j.payload?.session,H=(V?.sessionId??B?.sessionId)?.trim();if(Q&&!H){if(Y)this.sessionCapabilities.delete(Y),this.sessionClientContributionHandlers.delete(Y),this.disposeSessionSubscription(Y);throw Error("Hub checkpoint restore returned no session id")}if(H&&Y&&H!==Y)this.sessionCapabilities.delete(Y),this.sessionClientContributionHandlers.delete(Y),this.disposeSessionSubscription(Y);if(H&&J)this.sessionCapabilities.set(H,J);if(H&&X.handlers.size>0)this.sessionClientContributionHandlers.set(H,X.handlers);if(H)this.ensureSessionSubscription(H);let G=Array.isArray(j.payload?.messages)?j.payload.messages:void 0,K=j.payload?.checkpoint;if(!K)throw Error("Hub checkpoint restore returned no checkpoint");return{sessionId:H,startResult:H?{sessionId:H,manifest:V?IF(V,W??{}):kF(H,W??{},B),manifestPath:"",messagesPath:"",result:void 0}:void 0,messages:G,checkpoint:K}}async runTurn($){return this.ensureSessionSubscription($.sessionId),(await this.client.command("run.start",{sessionId:$.sessionId,input:$.prompt,mode:$.mode,attachments:($.userImages?.length??0)>0||($.userFiles?.length??0)>0?{...$.userImages?.length?{userImages:$.userImages}:{},...$.userFiles?.length?{userFiles:$.userFiles}:{}}:void 0,delivery:$.delivery,timeoutMs:$.timeoutMs},$.sessionId,{timeoutMs:null})).payload?.result}async requestPendingPromptsList($){this.ensureSessionSubscription($.sessionId);let Z=await this.client.command("session.pending_prompts",{sessionId:$.sessionId},$.sessionId);return Array.isArray(Z.payload?.prompts)?Z.payload.prompts:[]}async requestPendingPromptUpdate($){this.ensureSessionSubscription($.sessionId);let Z=await this.client.command("session.update_pending_prompt",{...$},$.sessionId);return{sessionId:$.sessionId,prompts:Array.isArray(Z.payload?.prompts)?Z.payload.prompts:[],prompt:Z.payload?.prompt,updated:Z.payload?.updated===!0}}async requestPendingPromptDelete($){this.ensureSessionSubscription($.sessionId);let Z=await this.client.command("session.remove_pending_prompt",{...$},$.sessionId);return{sessionId:$.sessionId,prompts:Array.isArray(Z.payload?.prompts)?Z.payload.prompts:[],prompt:Z.payload?.prompt,removed:Z.payload?.removed===!0}}async getAccumulatedUsage($){let Z=await this.client.command("session.get",{includeSnapshot:!0},$),Q=g$(Z.payload?.snapshot);if(Q){let Y=Q.usage?{...Q.usage}:void 0,j=Q.aggregateUsage?{...Q.aggregateUsage}:void 0;return Y||j?{usage:Y,aggregateUsage:j}:void 0}let W=Z.payload?.session,J=hF(W?.usage),X=hF(W?.aggregateUsage);return J||X?{usage:J,aggregateUsage:X}:void 0}async abort($,Z){await this.client.command("run.abort",{sessionId:$,reason:xF(Z)},$)}async stopSession($){this.sessionCapabilities.delete($),this.disposeSessionSubscription($),await this.client.command("session.detach",{sessionId:$},$)}async dispose(){for(let[$,Z]of this.sessionSubscriptions){Z();try{await this.client.command("session.detach",{sessionId:$},$)}catch{}}this.sessionSubscriptions.clear(),this.sessionCapabilities.clear(),this.agentDoneEmittedForCurrentRunBySession.clear();for(let $ of this.activeCapabilityAbortControllers.values())$.abort("Hub runtime host disposed.");this.activeCapabilityAbortControllers.clear(),await this.client.dispose()}async getSession($){let Z;try{Z=await this.client.command("session.get",void 0,$)}catch(Q){if(i1(Q))return;throw Q}return iw(Z.payload)}async listSessions($=100){let Z=await this.client.command("session.list",{limit:$}),Q=Array.isArray(Z.payload?.snapshots)?Z.payload.snapshots.flatMap((J)=>{let X=g$(J);return X?[xQ(X)]:[]}):[];if(Q.length>0)return Q;return(Z.payload?.sessions??[]).map(gF)}async listSettings($){let Z=await this.client.command("settings.list",SF($));if(!Z.ok)throw Error(gQ(Z,"settings.list"));return Z.payload?.snapshot}async toggleSetting($){let Z=await this.client.command("settings.toggle",SF($));if(!Z.ok)throw Error(gQ(Z,"settings.toggle"));return{snapshot:Z.payload?.snapshot,changedTypes:Array.isArray(Z.payload?.changedTypes)?Z.payload.changedTypes:[]}}async deleteSession($){return this.sessionCapabilities.delete($),this.disposeSessionSubscription($),(await this.client.command("session.delete",{sessionId:$})).payload?.deleted===!0}async updateSession($,Z){let Q={...Z.metadata??{}};if(typeof Z.prompt==="string")Q.prompt=Z.prompt;if(typeof Z.title==="string")Q.title=Z.title;return{updated:(await this.client.command("session.update",{sessionId:$,metadata:Q})).ok}}async readSessionMessages($){let Z=$.trim();if(!Z)return[];let Q=await this.client.command("session.messages",{sessionId:Z},Z);if(!Q.ok)throw CF(this.telemetry,{component:"core",operation:"hub.runtime_host.read_session_messages",error:Error(gQ(Q,"session.messages")),severity:Q.error?.code==="session_not_found"?"warn":"error",handled:!0,context:{command:"session.messages",sessionId:Z,errorCode:Q.error?.code,runtimeAddress:this.runtimeAddress}}),Error(gQ(Q,"session.messages"));let W=Q.payload?.messages;return Array.isArray(W)?W:[]}async dispatchHookEvent($){await this.client.command("session.hook",{payload:$})}subscribe($,Z){return this.events.subscribe($,Z)}ensureSessionSubscription($){let Z=$.trim();if(!Z||this.sessionSubscriptions.has(Z))return;let Q=this.client.subscribe((W)=>{this.handleHubEvent(W)},{sessionId:Z});this.sessionSubscriptions.set(Z,typeof Q==="function"?Q:()=>{})}disposeSessionSubscription($){let Z=$.trim();if(!Z)return;this.sessionSubscriptions.get(Z)?.(),this.sessionSubscriptions.delete(Z),this.agentDoneEmittedForCurrentRunBySession.delete(Z)}resolveCapabilities($){return O0(this.defaultCapabilities,$.capabilities)??{}}emitToolCallContentStart($){this.events.emit({type:"agent_event",payload:{sessionId:$.sessionId,event:{type:"content_start",contentType:"tool",toolCallId:$.toolCallId,toolName:$.toolName,input:$.toolInput}}})}emitAgentDoneIfNeeded($){if(this.agentDoneEmittedForCurrentRunBySession.has($.sessionId))return;this.agentDoneEmittedForCurrentRunBySession.add($.sessionId),this.events.emit({type:"agent_event",payload:{sessionId:$.sessionId,event:rw($.payload)}})}handleHubEvent($){let Z=$.sessionId?.trim();if($.event==="capability.requested"){this.handleCapabilityRequest($).catch((Q)=>{this.captureDetachedHubEventError("hub.runtime_host.capability_request",Q,$)});return}if($.event==="capability.resolved"){this.handleCapabilityResolved($);return}if($.event==="approval.requested"){this.handleApprovalRequested($).catch((Q)=>{this.captureDetachedHubEventError("hub.runtime_host.approval_request",Q,$)});return}if(!Z)return;switch($.event){case"run.started":{this.agentDoneEmittedForCurrentRunBySession.delete(Z);let Q=g$($.payload?.snapshot),W=$.payload?.session;if(Q)this.events.emit({type:"session_snapshot",payload:{sessionId:Z,snapshot:Q}});this.events.emit({type:"status",payload:{sessionId:Z,status:W?.status??"running"}});return}case"iteration.started":{this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"iteration_start",iteration:typeof $.payload?.iteration==="number"?$.payload.iteration:0}}});return}case"iteration.finished":{this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"iteration_end",iteration:typeof $.payload?.iteration==="number"?$.payload.iteration:0,hadToolCalls:$.payload?.hadToolCalls===!0,toolCallCount:typeof $.payload?.toolCallCount==="number"?$.payload.toolCallCount:0}}});return}case"assistant.delta":{let Q=typeof $.payload?.text==="string"?$.payload.text:"";if(!Q)return;this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"content_start",contentType:"text",text:Q}}});return}case"assistant.finished":{this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"content_end",contentType:"text",text:typeof $.payload?.text==="string"?$.payload.text:void 0}}});return}case"reasoning.delta":{let Q=typeof $.payload?.text==="string"?$.payload.text:"",W=$.payload?.redacted===!0;if(!Q&&!W)return;this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"content_start",contentType:"reasoning",reasoning:Q,redacted:W}}});return}case"reasoning.finished":{this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"content_end",contentType:"reasoning",reasoning:typeof $.payload?.reasoning==="string"?$.payload.reasoning:void 0}}});return}case"agent.done":{this.emitAgentDoneIfNeeded({sessionId:Z,payload:$.payload});return}case"usage.updated":{let Q=pw($.payload);this.events.emit({type:"agent_event",payload:{sessionId:Z,event:Q.event,teamAgentId:Q.teamAgentId,teamRole:Q.teamRole}});return}case"tool.started":{let Q=typeof $.payload?.toolCallId==="string"?$.payload.toolCallId:void 0;if(Q&&this.pendingApprovalToolCallIds.delete(Q))return;this.emitToolCallContentStart({sessionId:Z,toolCallId:Q,toolName:typeof $.payload?.toolName==="string"?$.payload.toolName:void 0,toolInput:$.payload?.input});return}case"tool.finished":{let Q=typeof $.payload?.toolCallId==="string"?$.payload.toolCallId:void 0;if(Q)this.pendingApprovalToolCallIds.delete(Q);this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"content_end",contentType:"tool",toolCallId:Q,toolName:typeof $.payload?.toolName==="string"?$.payload.toolName:void 0,output:$.payload?.output,error:typeof $.payload?.error==="string"?$.payload.error:void 0}}});return}case"session.created":case"session.updated":case"session.attached":case"session.detached":{let Q=g$($.payload?.snapshot),W=$.payload?.session;if(Q)this.events.emit({type:"session_snapshot",payload:{sessionId:Z,snapshot:Q}});this.events.emit({type:"status",payload:{sessionId:Z,status:W?.status??"running"}});return}case"session.pending_prompts":{this.events.emit({type:"pending_prompts",payload:{sessionId:Z,prompts:Array.isArray($.payload?.prompts)?$.payload.prompts:[]}});return}case"session.pending_prompt_submitted":{let Q=$.payload?.prompt;if(!Q)return;this.events.emit({type:"pending_prompt_submitted",payload:{sessionId:Z,id:Q.id,prompt:Q.prompt,delivery:Q.delivery,attachmentCount:Q.attachmentCount,userImages:Q.userImages,userFiles:Q.userFiles}});return}case"run.completed":case"run.failed":case"run.aborted":{let Q=g$($.payload?.snapshot),W=typeof $.payload?.reason==="string"?$.payload.reason:$.event==="run.aborted"?"aborted":$.event==="run.failed"?"error":"completed";if(this.emitAgentDoneIfNeeded({sessionId:Z,payload:{...$.payload,reason:W}}),Q?.interactive===!0&&B0(Q.status))return;this.events.emit({type:"ended",payload:{sessionId:Z,reason:W,ts:$.timestamp??Date.now()}});return}default:return}}captureDetachedHubEventError($,Z,Q){try{CF(this.telemetry,{component:"core",operation:$,error:Z,severity:"warn",handled:!0,context:{event:Q.event,sessionId:Q.sessionId,runtimeAddress:this.runtimeAddress}})}catch{}}async handleCapabilityRequest($){let Z=$.sessionId?.trim();if(!Z)return;let Q=typeof $.payload?.targetClientId==="string"?$.payload.targetClientId:void 0;if(Q&&Q!==this.client.getClientId())return;let W=typeof $.payload?.requestId==="string"?$.payload.requestId:"",J=typeof $.payload?.capabilityName==="string"?$.payload.capabilityName:"";if(!W)return;let X=this.sessionClientContributionHandlers.get(Z)?.get(J);if(!X){await this.client.command("capability.respond",{requestId:W,ok:!1,error:`No client contribution handler registered for capability ${J} in session ${Z}.`},Z).catch(()=>{});return}let Y=$.payload?.payload&&typeof $.payload.payload==="object"&&!Array.isArray($.payload.payload)?$.payload.payload:{},j=new AbortController;this.activeCapabilityAbortControllers.set(W,j);let V=(B)=>{this.client.command("capability.progress",{requestId:W,payload:B},Z).catch((H)=>{this.captureDetachedHubEventError("hub.runtime_host.capability_progress",H,$)})};try{let B=await X({payload:Y,abortSignal:j.signal,progress:V});if(j.signal.aborted)return;await this.client.command("capability.respond",{requestId:W,ok:!0,payload:B},Z)}catch(B){if(j.signal.aborted)return;await this.client.command("capability.respond",{requestId:W,ok:!1,error:B instanceof Error?B.message:String(B)},Z)}finally{this.activeCapabilityAbortControllers.delete(W)}}handleCapabilityResolved($){if($.payload?.cancelled!==!0)return;let Z=typeof $.payload.requestId==="string"?$.payload.requestId.trim():"";if(!Z)return;let Q=this.activeCapabilityAbortControllers.get(Z);if(!Q)return;Q.abort(cw($.payload.error))}async handleApprovalRequested($){let Z=$.sessionId?.trim();if(!Z)return;let Q=this.sessionCapabilities.get(Z)?.requestToolApproval??this.defaultCapabilities.requestToolApproval;if(!Q)return;let W=typeof $.payload?.approvalId==="string"?$.payload.approvalId.trim():"",J=typeof $.payload?.toolCallId==="string"?$.payload.toolCallId:"",X=typeof $.payload?.toolName==="string"?$.payload.toolName:"";if(!W||!J||!X)return;let Y=$.payload?.policy&&typeof $.payload.policy==="object"&&!Array.isArray($.payload.policy)?$.payload.policy:{autoApprove:!1},j=uw($.payload?.inputJson);this.pendingApprovalToolCallIds.add(J),this.emitToolCallContentStart({sessionId:Z,toolCallId:J,toolName:X,toolInput:j});let V=await Promise.resolve(Q({sessionId:Z,agentId:typeof $.payload?.agentId==="string"?$.payload.agentId:"",conversationId:typeof $.payload?.conversationId==="string"?$.payload.conversationId:Z,iteration:typeof $.payload?.iteration==="number"?$.payload.iteration:0,toolCallId:J,toolName:X,input:j,policy:Y})).catch((B)=>({approved:!1,reason:B instanceof Error?B.message:`Tool approval request failed: ${String(B)}`}));await this.client.command("approval.respond",{approvalId:W,approved:V.approved,reason:V.reason},Z).catch(()=>{})}}var vF={};E(vF,{RemoteRuntimeHost:()=>$4});class $4 extends s1{constructor($){super({url:I$($.endpoint),authToken:$.authToken,clientType:$.clientType??"core-remote-runtime",displayName:$.displayName??"core remote runtime",capabilities:$.capabilities},{workspaceRoot:$.workspaceRoot,cwd:$.cwd})}}var cF={};E(cF,{SqliteSessionStore:()=>L1});import{existsSync as nw,mkdirSync as aw}from"node:fs";import{join as sw}from"node:path";import{asBool as b5,asOptionalString as D1,asString as o1,ensureSessionSchema as ow,loadSqliteDb as tw,nowIso as mQ,toBoolInt as y5}from"@cline/shared/db";import{resolveDbDataDir as ew}from"@cline/shared/storage";class L1{sessionsDirPath;db;constructor($={}){this.sessionsDirPath=$.sessionsDir??ew()}init(){this.getRawDb()}ensureSessionsDir(){if(!nw(this.sessionsDirPath))aw(this.sessionsDirPath,{recursive:!0});return this.sessionsDirPath}sessionDbPath(){return sw(this.ensureSessionsDir(),"sessions.db")}getRawDb(){if(this.db)return this.db;let $=tw(this.sessionDbPath());return ow($,{includeLegacyMigrations:!0}),this.db=$,$}close(){this.db?.close?.(),this.db=void 0}run($,Z=[]){return this.getRawDb().prepare($).run(...Z)}queryOne($,Z=[]){return this.getRawDb().prepare($).get(...Z)??void 0}queryAll($,Z=[]){return this.getRawDb().prepare($).all(...Z)}create($){let Z=mQ();this.run(`INSERT OR REPLACE INTO sessions (
|
|
503
503
|
session_id, source, pid, started_at, ended_at, exit_code, status, status_lock, interactive,
|
package/dist/hub/index.js
CHANGED
|
@@ -273,7 +273,7 @@ ${JSON.stringify(W,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,L0(),$)}attachReportPathToRun($,Z){this.db.prepare("UPDATE cron_runs SET report_path = ?, updated_at = ? WHERE run_id = ?").run(Z,L0(),$)}}function _9($){return $?new Date($).getTime():void 0}function XL($){let Z=$.metadata?{...$.metadata}:void 0;if(Z)delete Z.__hubScheduleCreatedBy,delete Z.__hubScheduleCwd,delete Z.__hubRuntimeOptions;return Z}function L9($){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:_9($.nextRunAt),lastRunAt:_9($.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:XL($)}}function YL($){switch($){case"done":return"success";case"cancelled":return"aborted";case"running":return"running";case"queued":return"pending";default:return"failed"}}function AW($,Z){return{executionId:$.runId,scheduleId:Z,sessionId:$.sessionId,triggeredAt:new Date($.scheduledFor??$.createdAt).getTime(),startedAt:_9($.startedAt),endedAt:_9($.completedAt),status:YL($.status),errorMessage:$.error}}class Z8{store;materializer;runner;started=!1;disposed=!1;constructor($){this.store=new x4({dbPath:$.dbPath}),this.materializer=new P4({store:this.store}),this.runner=new y4({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(HW($.cronPattern),!$.workspaceRoot?.trim())throw Error("workspaceRoot is required for schedules");return L9(this.store.createHubSchedule($))}getSchedule($){let Z=this.store.getHubSchedule($);return Z?L9(Z):void 0}listSchedules($={}){return this.store.listHubSchedules($).map((Z)=>L9(Z))}updateSchedule($,Z){if(Z.cronPattern!==void 0)HW(Z.cronPattern);let Q=this.store.getHubSchedule($);if(!Q)return;let W=Z.workspaceRoot!==void 0?Z.workspaceRoot.trim():Q.workspaceRoot;if((Z.enabled??Q.enabled)&&!W)throw Error("workspaceRoot is required for enabled schedules");let X=this.store.updateHubSchedule($,{...Z,scheduleId:$});return X?L9(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 AW(Q,$)}triggerScheduleNowDetached($){let Z=this.store.enqueueHubScheduleRun($,"manual");if(!Z)return;return this.runner.tick().catch(()=>{return}),AW(Z,$)}listScheduleExecutions($){let Z=$.scheduleId?this.store.getHubSchedule($.scheduleId):void 0,Q={specId:Z?.specId,limit:$.limit};return this.store.listRuns(Q).map((J)=>{let X=Z??this.store.getSpec(J.specId);if(!X||X.source!=="hub-schedule")return;return AW(J,X.externalId)}).filter((J)=>{if(!J)return!1;return!$.status||J.status===$.status})}getScheduleStats($){let Z=this.listScheduleExecutions({scheduleId:$,limit:1e4});if(Z.length===0)return{totalRuns:0,successRate:0,avgDurationSeconds:0};let Q=0,W=0,J=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)J+=Y.endedAt-Y.startedAt,W+=1}return{totalRuns:Z.length,successRate:Q/Z.length,avgDurationSeconds:W>0?J/W/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,W)=>String(Q.nextRunAt).localeCompare(String(W.nextRunAt))).slice(0,$).map(({spec:Q,nextRunAt:W})=>({scheduleId:Q.externalId,name:Q.title,nextRunAt:W}))}}u9();import{createSessionId as s_,isHubProtocolCompatible as o_,resolveClineBuildEnv as t_,resolveHubCommandTimeoutMs as e_}from"@cline/shared";var lj={};N(lj,{splitCoreSessionConfig:()=>i4,isSessionNotFoundError:()=>I1,SessionNotFoundError:()=>k1,SESSION_NOT_FOUND_ERROR_CODE:()=>s$});var s$="session_not_found";class k1 extends Error{sessionId;code="session_not_found";constructor($,Z){super(Z??($?`session not found: ${$}`:"session not found"));this.sessionId=$;this.name="SessionNotFoundError"}}function I1($){return $ instanceof k1||typeof $==="object"&&$!==null&&"code"in $&&$.code==="session_not_found"}function i4($){let{hooks:Z,logger:Q,telemetry:W,extensionContext:J,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(W)K.telemetry=W;if(J)K.extensionContext=J;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 N_}from"node:child_process";import{closeSync as C_,mkdirSync as w_,openSync as P_}from"node:fs";import{basename as S_,dirname as b_,join as y_}from"node:path";import{fileURLToPath as h_}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as k_,isHubDaemonProcess as JV,isHubProtocolCompatible as I_,resolveClineBuildEnv as XV,withResolvedClineBuildEnv as x_}from"@cline/shared";import{createHash as W_,randomBytes as J_}from"node:crypto";import{existsSync as X_}from"node:fs";import{chmod as Y_,mkdir as _W,readFile as aj,rm as zW,writeFile as sj}from"node:fs/promises";import{dirname as oj,join as TW}from"node:path";import{resolveClineDataDir as o$,resolveClineDir as tj}from"@cline/shared/storage";var rj="0.0.58-nightly.1783394305";var n4={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:rj,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 j_="CLINE_HUB_DISCOVERY_PATH",V_="CLINE_HUB_BUILD_ID",ij=30000,B_=15000,H_=100;function G_($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function K_($){return W_("sha256").update($).digest("hex").slice(0,12)}function F_($){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 d9(){return J_(32).toString("hex")}function A_($){return new Promise((Z)=>setTimeout(Z,$))}function f_($){return`${$}.lock`}async function U_($){try{let Z=JSON.parse(await aj(TW($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function nj($){await zW($,{recursive:!0,force:!0}).catch(()=>{return})}function l9(){return process.env[V_]?.trim()||String(n4.version)}function x1($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${K_($)}`,Q=process.env[j_]?.trim()||TW(o$(),"locks","hub","owners",`${G_(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function ej($=`hub-${Date.now().toString(36)}`){return x1($)}async function K0($){try{let Z=JSON.parse(await aj($,"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 p9($,Z){await _W(oj($),{recursive:!0}),await zW($,{force:!0}).catch(()=>{return}),await sj($,`${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,L0(),$)}attachReportPathToRun($,Z){this.db.prepare("UPDATE cron_runs SET report_path = ?, updated_at = ? WHERE run_id = ?").run(Z,L0(),$)}}function _9($){return $?new Date($).getTime():void 0}function XL($){let Z=$.metadata?{...$.metadata}:void 0;if(Z)delete Z.__hubScheduleCreatedBy,delete Z.__hubScheduleCwd,delete Z.__hubRuntimeOptions;return Z}function L9($){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:_9($.nextRunAt),lastRunAt:_9($.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:XL($)}}function YL($){switch($){case"done":return"success";case"cancelled":return"aborted";case"running":return"running";case"queued":return"pending";default:return"failed"}}function AW($,Z){return{executionId:$.runId,scheduleId:Z,sessionId:$.sessionId,triggeredAt:new Date($.scheduledFor??$.createdAt).getTime(),startedAt:_9($.startedAt),endedAt:_9($.completedAt),status:YL($.status),errorMessage:$.error}}class Z8{store;materializer;runner;started=!1;disposed=!1;constructor($){this.store=new x4({dbPath:$.dbPath}),this.materializer=new P4({store:this.store}),this.runner=new y4({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(HW($.cronPattern),!$.workspaceRoot?.trim())throw Error("workspaceRoot is required for schedules");return L9(this.store.createHubSchedule($))}getSchedule($){let Z=this.store.getHubSchedule($);return Z?L9(Z):void 0}listSchedules($={}){return this.store.listHubSchedules($).map((Z)=>L9(Z))}updateSchedule($,Z){if(Z.cronPattern!==void 0)HW(Z.cronPattern);let Q=this.store.getHubSchedule($);if(!Q)return;let W=Z.workspaceRoot!==void 0?Z.workspaceRoot.trim():Q.workspaceRoot;if((Z.enabled??Q.enabled)&&!W)throw Error("workspaceRoot is required for enabled schedules");let X=this.store.updateHubSchedule($,{...Z,scheduleId:$});return X?L9(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 AW(Q,$)}triggerScheduleNowDetached($){let Z=this.store.enqueueHubScheduleRun($,"manual");if(!Z)return;return this.runner.tick().catch(()=>{return}),AW(Z,$)}listScheduleExecutions($){let Z=$.scheduleId?this.store.getHubSchedule($.scheduleId):void 0,Q={specId:Z?.specId,limit:$.limit};return this.store.listRuns(Q).map((J)=>{let X=Z??this.store.getSpec(J.specId);if(!X||X.source!=="hub-schedule")return;return AW(J,X.externalId)}).filter((J)=>{if(!J)return!1;return!$.status||J.status===$.status})}getScheduleStats($){let Z=this.listScheduleExecutions({scheduleId:$,limit:1e4});if(Z.length===0)return{totalRuns:0,successRate:0,avgDurationSeconds:0};let Q=0,W=0,J=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)J+=Y.endedAt-Y.startedAt,W+=1}return{totalRuns:Z.length,successRate:Q/Z.length,avgDurationSeconds:W>0?J/W/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,W)=>String(Q.nextRunAt).localeCompare(String(W.nextRunAt))).slice(0,$).map(({spec:Q,nextRunAt:W})=>({scheduleId:Q.externalId,name:Q.title,nextRunAt:W}))}}u9();import{createSessionId as s_,isHubProtocolCompatible as o_,resolveClineBuildEnv as t_,resolveHubCommandTimeoutMs as e_}from"@cline/shared";var lj={};N(lj,{splitCoreSessionConfig:()=>i4,isSessionNotFoundError:()=>I1,SessionNotFoundError:()=>k1,SESSION_NOT_FOUND_ERROR_CODE:()=>s$});var s$="session_not_found";class k1 extends Error{sessionId;code="session_not_found";constructor($,Z){super(Z??($?`session not found: ${$}`:"session not found"));this.sessionId=$;this.name="SessionNotFoundError"}}function I1($){return $ instanceof k1||typeof $==="object"&&$!==null&&"code"in $&&$.code==="session_not_found"}function i4($){let{hooks:Z,logger:Q,telemetry:W,extensionContext:J,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(W)K.telemetry=W;if(J)K.extensionContext=J;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 N_}from"node:child_process";import{closeSync as C_,mkdirSync as w_,openSync as P_}from"node:fs";import{basename as S_,dirname as b_,join as y_}from"node:path";import{fileURLToPath as h_}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as k_,isHubDaemonProcess as JV,isHubProtocolCompatible as I_,resolveClineBuildEnv as XV,withResolvedClineBuildEnv as x_}from"@cline/shared";import{createHash as W_,randomBytes as J_}from"node:crypto";import{existsSync as X_}from"node:fs";import{chmod as Y_,mkdir as _W,readFile as aj,rm as zW,writeFile as sj}from"node:fs/promises";import{dirname as oj,join as TW}from"node:path";import{resolveClineDataDir as o$,resolveClineDir as tj}from"@cline/shared/storage";var rj="0.0.58";var n4={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:rj,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 j_="CLINE_HUB_DISCOVERY_PATH",V_="CLINE_HUB_BUILD_ID",ij=30000,B_=15000,H_=100;function G_($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function K_($){return W_("sha256").update($).digest("hex").slice(0,12)}function F_($){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 d9(){return J_(32).toString("hex")}function A_($){return new Promise((Z)=>setTimeout(Z,$))}function f_($){return`${$}.lock`}async function U_($){try{let Z=JSON.parse(await aj(TW($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function nj($){await zW($,{recursive:!0,force:!0}).catch(()=>{return})}function l9(){return process.env[V_]?.trim()||String(n4.version)}function x1($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${K_($)}`,Q=process.env[j_]?.trim()||TW(o$(),"locks","hub","owners",`${G_(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function ej($=`hub-${Date.now().toString(36)}`){return x1($)}async function K0($){try{let Z=JSON.parse(await aj($,"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 p9($,Z){await _W(oj($),{recursive:!0}),await zW($,{force:!0}).catch(()=>{return}),await sj($,`${JSON.stringify(Z,null,2)}
|
|
277
277
|
`,{encoding:"utf8",mode:384}),await Y_($,384)}async function S0($){await zW($,{force:!0}).catch(()=>{return})}async function r9($,Z){let Q=f_($);await _W(oj(Q),{recursive:!0});let W=Date.now()+B_;while(!0)try{await _W(Q,{recursive:!1}),await sj(TW(Q,"owner.json"),`${JSON.stringify({pid:process.pid,acquiredAt:new Date().toISOString()},null,2)}
|
|
278
278
|
`,"utf8");try{return await Z()}finally{await nj(Q)}}catch(J){if((J instanceof Error&&"code"in J?String(J.code):"")!=="EEXIST")throw J;let Y=await U_(Q),j=Y?Date.now()-Date.parse(Y.acquiredAt):ij+1;if(!Y||!F_(Y.pid)||j>ij){await nj(Q);continue}if(Date.now()>=W)throw Error(`Timed out waiting for hub startup lock ${Q}`);await A_(H_)}}async function g1($,Z){try{let Q=await fetch(Z?.authToken?qW($):i9($),{headers:Z?.authToken?{authorization:`Bearer ${Z.authToken}`}:void 0});if(!Q.ok)return;let W=await Q.json();if(typeof W.protocolVersion!=="string"||typeof W.host!=="string"||typeof W.port!=="number"||typeof W.url!=="string")return;return{protocolVersion:W.protocolVersion,minClientProtocolVersion:typeof W.minClientProtocolVersion==="string"?W.minClientProtocolVersion:void 0,maxClientProtocolVersion:typeof W.maxClientProtocolVersion==="string"?W.maxClientProtocolVersion:void 0,capabilities:Array.isArray(W.capabilities)?W.capabilities.filter((J)=>typeof J==="string"):void 0,coreVersion:typeof W.coreVersion==="string"?W.coreVersion:void 0,buildId:typeof W.buildId==="string"?W.buildId:void 0,host:W.host,port:W.port,url:W.url,hubId:typeof W.hubId==="string"?W.hubId:void 0,authToken:typeof W.authToken==="string"?W.authToken:void 0,pid:typeof W.pid==="number"?W.pid:void 0,startedAt:typeof W.startedAt==="string"?W.startedAt:void 0,updatedAt:typeof W.updatedAt==="string"?W.updatedAt:void 0}}catch{return}}function Z1($,Z,Q="/hub"){return new URL(`ws://${$}:${Z}${Q}`).toString()}function i9($){let Z=new URL($);return Z.protocol=Z.protocol==="wss:"?"https:":"http:",Z.pathname="/health",Z.search="",Z.toString()}function qW($){let Z=new URL(i9($));return Z.pathname="/status",Z.toString()}function $V($){return X_($)}import{CLINE_HUB_DEV_PORT as D_,CLINE_HUB_PORT as L_,resolveClineBuildEnv as __}from"@cline/shared";var z_="CLINE_HUB_HOST",T_="CLINE_HUB_PORT",q_="CLINE_HUB_PATHNAME",OW="127.0.0.1",MW=L_,RW="/hub";function ZV($){return __($)==="development"?D_:MW}function EW($={}){return($.env??process.env)[z_]?.trim()||OW}function V8($={}){let Q=($.env??process.env)[T_]?.trim();if(!Q)return ZV($);let W=Number.parseInt(Q,10);if(!Number.isInteger(W)||W<1||W>65535)return ZV($);return W}function NW($={}){return($.env??process.env)[q_]?.trim()||RW}function K1($={},Z={}){return{host:$.host??EW(Z),port:$.port??V8(Z),pathname:$.pathname??NW(Z)}}import{join as O_}from"node:path";var M_="shared:cline",R_="CLINE_HUB_DISCOVERY_PATH",E_="hub-production";function QV($){let Z=C1($.trim());return x1(`workspace:${Z||$.trim()}`)}function Q1($=M_){return x1($)}function F1(){return{ownerId:E_,discoveryPath:process.env[R_]?.trim()||O_(o$(),"locks","hub","production.json")}}var g_=8000,m_=200,v_=3000,c_=100,u_=[100,250,500,1000,2000],d_="--cline-hub-daemon";function l_($){return[...$.host?["--host",$.host]:[],...typeof $.port==="number"?["--port",String($.port)]:[],...$.pathname?["--pathname",$.pathname]:[]]}function p_(){try{let $=y_(o$(),"logs","hub-daemon.log");return w_(b_($),{recursive:!0}),{fd:P_($,"a"),logPath:$}}catch{return}}function YV(){return XV()==="production"?F1():Q1()}function t$($){return I_($).compatible}function WV($,Z,Q){if(!Z||Z.url!==Q)return $;return{...$,authToken:$.authToken??Z.authToken,pid:$.pid??Z.pid}}async function e$($,Z){try{return await g1($,{authToken:Z})}catch{return}}async function r_($,Z){let Q=Date.now()+Z;while(Date.now()<Q){if(!(await e$($))?.url)return!0;await new Promise((J)=>setTimeout(J,c_))}return!1}async function n9($,Z){if(await s4($.url,$.authToken).catch(()=>!1),$.pid)try{process.kill($.pid,"SIGTERM")}catch{}let Q=await r_($.url,v_);return await S0(Z).catch(()=>{return}),Q}async function a4($,Z){if(t$($))return!0;return n9($,Z)}async function jV($){if(XV()!=="production")return;let Z=Q1();if(Z.discoveryPath===$.discoveryPath)return;let Q=await K0(Z.discoveryPath);if(Q?.url)await n9(Q,Z.discoveryPath);else await S0(Z.discoveryPath).catch(()=>{return})}function i_(){let $=import.meta.url.endsWith(".ts")?"ts":"js";return h_(new URL(`./entry.${$}`,import.meta.url))}function n_($,Z){let Q=i_(),W=process.execPath?.trim();if(!W)throw Error("unable to resolve runtime executable for hub daemon");let J=S_(W).toLowerCase().includes("bun"),X=Q.startsWith("/$bunfs/"),Y=J&&Q.toLowerCase().endsWith(".ts"),j=X?[d_]:[...Y?["--conditions=development"]:[],Q];return{launcher:W,args:[...j,"--cwd",$,...l_(Z)],cwd:$,env:{...x_(process.env),CLINE_NO_INTERACTIVE:"1",[k_]:"1"}}}function a_($){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 CW($,Z={}){if(JV())return;let Q=n_($,Z),W=p_();try{N_(Q.launcher,Q.args,{detached:!0,stdio:W?["ignore",W.fd,W.fd]:"ignore",env:Q.env,cwd:Q.cwd,windowsHide:!0}).unref()}finally{if(W)C_(W.fd)}}async function B8($,Z={}){for(let Q=0;;Q++)try{CW($,Z);return}catch(W){let J=u_[Q];if(!a_(W)||J===void 0)throw W;await new Promise((X)=>setTimeout(X,J))}}function a9($,Z={}){if(JV())return;let Q=YV(),W=K1(Z),J=Z1(W.host,W.port,W.pathname),X=Z.allowPortFallback===!0&&W.port!==0;jV(Q).catch(()=>{return}).then(()=>K0(Q.discoveryPath)).then(async(Y)=>{let j=!1;if(Y?.url)if(!Y.authToken){if(j=!0,!await n9(Y,Q.discoveryPath)&&!X)return}else{let H=await e$(Y.url,Y.authToken);if(H?.url&&t$(H)&&await A1(H.url,{authToken:Y.authToken}))return;if(H?.url)await a4({...H,authToken:Y.authToken},Q.discoveryPath);else await S0(Q.discoveryPath).catch(()=>{return})}let V=await e$(J);if(V?.url){if(t$(V)){if(!X||!j)return}else if(!await a4({...V,authToken:void 0},Q.discoveryPath)&&!X)return}let B=X?{...W,port:0}:W;await B8($,B)}).catch(()=>{})}async function VV($,Z={}){let Q=YV(),W=Z.host!==void 0||Z.port!==void 0||Z.pathname!==void 0||!!process.env.CLINE_HUB_PORT?.trim(),J=K1(Z),X=Z1(J.host,J.port,J.pathname),Y=(F)=>{if(!W)H$(F.url,F.authToken);return F};await jV(Q).catch(()=>{return});let j=await K0(Q.discoveryPath),V=!1;if(j?.url){let F=j.authToken;if(!F)V=!0,await n9(j,Q.discoveryPath);else{let A=await e$(j.url,F);if(A?.url&&t$(A)&&await A1(A.url,{authToken:F}))return Y({url:A.url,authToken:F});if(A?.url)await a4({...A,authToken:F},Q.discoveryPath);else await S0(Q.discoveryPath).catch(()=>{return})}}let B=await e$(X);if(B?.url){let F=WV(B,j,X);if(t$(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 a4(F,Q.discoveryPath)&&Z.allowPortFallback!==!0&&J.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&&J.port!==0?{...J,port:0}:J;await B8($,G);let K=Date.now()+g_;while(Date.now()<K){let F=await K0(Q.discoveryPath);if(F?.url&&F.authToken){let L=await e$(F.url,F.authToken);if(L?.url&&t$(L)&&await A1(L.url,{authToken:F.authToken}))return Y({url:L.url,authToken:F.authToken})}let A=await e$(X);if(A?.url&&!t$(A)){let L=WV(A,F,X);if(!await a4(L,Q.discoveryPath)&&Z.allowPortFallback!==!0&&J.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((L)=>setTimeout(L,m_))}throw Error("Timed out waiting for detached hub startup.")}function s9(){return t_()==="production"?F1():Q1()}function $z(){let $=globalThis.WebSocket;if(!$)throw Error("Global WebSocket is not available in this runtime. Node 22+ is required for hub mode.");return $}function FV($){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 FV($.data);return String($)}function Zz($){if(typeof $==="string")return $;if($ instanceof Uint8Array)return Buffer.from($).toString("utf8");if($ instanceof ArrayBuffer)return Buffer.from($).toString("utf8");return""}function BV($){let Z=$,Q=Zz(Z.reason);return new R0("hub_connection_closed",Z.code||Q?`Hub connection closed (code=${Z.code??0}${Q?`, reason=${Q}`:""})`:wW,{closeCode:Z.code,closeReason:Q||void 0})}function Qz($,Z){if($ instanceof R0)return $;if($ instanceof Error)return new R0("hub_connect_failed",$.message);if($&&typeof $==="object"&&"error"in $&&$.error instanceof Error)return new R0("hub_connect_failed",$.error.message);let Q=$&&typeof $==="object"&&"message"in $&&typeof $.message==="string"?$.message.trim():"";if(Q)return new R0("hub_connect_failed",Q);let W=$&&typeof $==="object"&&"type"in $&&typeof $.type==="string"?$.type.trim():"";return new R0("hub_connect_failed",W?`Failed to connect to hub at ${Z.toString()} (${W} event before socket open).`:`Failed to connect to hub at ${Z.toString()}.`)}var Wz=8000,Jz=200,HV="*",GV=8000,Xz="cline-hub-auth.",AV=new Map,fV=new Set,Yz=3000,jz=3000,Vz=100,wW="Hub connection closed",Bz=250,Hz=5000,KV=0.5;class R0 extends Error{code;details;constructor($,Z,Q){super(Z);this.code=$;this.details=Q;this.name="HubTransportError"}}function bW($){return $ instanceof R0}class H8 extends Error{command;code;constructor($,Z,Q){super(Q);this.command=$;this.code=Z;this.name="HubCommandError"}}function o9($,Z){return $ instanceof H8&&$.code==="hub_command_timeout"&&(Z===void 0||$.command===Z)}function UV($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=yW($.toString());return Q?AV.get(Q):void 0}function Gz($){try{let Q=new URL($).hostname.toLowerCase().replace(/^\[|\]$/g,"");return Q==="localhost"||Q==="127.0.0.1"||Q==="::1"}catch{return!1}}function yW($){if(!Gz($))return;let Z=new URL(G$($));return Z.search="",Z.hash="",Z.toString()}function PW($){let Z=yW($);return!!Z&&fV.has(Z)}function H$($,Z){let Q=yW($);if(Q){if(fV.add(Q),Z?.trim())AV.set(Q,Z)}return $}class W1{options;socket;connectPromise;clientId;currentUrl;recoveryPromise;pendingReplies=new Map;listeners=new Set;subscriptionCounts=new Map;reconnectTimer;reconnectAttempt=0;closedByClient=!1;lastCloseError=new R0("hub_connection_closed",wW);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()||UV($);$.hash="";let W=new($z())($.toString(),Z?[`${Xz}${Z}`]:void 0);this.socket=W;let J=!1;this.connectPromise=new Promise((X,Y)=>{let j=!1,V=setTimeout(()=>{if(j)return;j=!0,J=!0,this.lastCloseError=new R0("hub_connect_timeout",`Timed out connecting to hub after ${GV}ms`),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0;try{W.close()}catch{}Y(this.lastCloseError)},GV);W.addEventListener("open",()=>{if(j)return;j=!0,clearTimeout(V),X()}),W.addEventListener("error",(B)=>{if(j)return;j=!0,clearTimeout(V),this.lastCloseError=Qz(B,$),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)}),W.addEventListener("close",(B)=>{if(j)return;if(j=!0,clearTimeout(V),!J)this.lastCloseError=BV(B),this.sawSocketClose=!0;this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)})}),W.addEventListener("message",(X)=>{this.handleFrame(JSON.parse(FV(X)))}),W.addEventListener("close",(X)=>{if(this.socket!==W)return;if(!J)this.lastCloseError=BV(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,W={listener:$,sessionId:Q};return this.listeners.add(W),this.adjustSubscriptionCount(Q,1),()=>{if(!this.listeners.delete(W))return;this.adjustSubscriptionCount(Q,-1)}}async command($,Z,Q,W){let J=0,X=$!=="client.register"&&$!=="client.unregister";while(!0)try{return await this.commandOnce($,Z,Q,W)}catch(Y){if(!X||J>=1||!await this.recoverLocalHubTransport(Y))throw Y;J+=1}}async commandOnce($,Z,Q,W){await this.connect();let J=s_("hubreq_"),X=e_($,W?.timeoutMs),Y=new Promise((V,B)=>{let H=X===null?void 0:setTimeout(()=>{if(!this.pendingReplies.delete(J))return;B(new H8($,"hub_command_timeout",`Hub command ${$} timed out after ${X}ms (hub=${this.currentUrl}, requestId=${J}, 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(J,{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:J,clientId:this.clientId,sessionId:Q,timeoutMs:X,payload:Z}})}catch(V){throw this.pendingReplies.delete(J),V}let j=await Y;if(!j.ok){if(j.error?.code===s$){let V=Q??(typeof Z?.sessionId==="string"?Z.sessionId:void 0);throw new k1(V,j.error.message)}throw new H8($,j.error?.code,j.error?.message??`Hub command ${$} failed`)}return j}async recoverLocalHubTransport($){if(!PW(this.currentUrl)||!bW($))return!1;if(this.recoveryPromise)return await this.recoveryPromise;return this.recoveryPromise=(async()=>{let Z=await $2({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(Bz*2**this.reconnectAttempt,Hz),Z=Math.round($*(1-KV)+Math.random()*$*KV);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(!PW(this.currentUrl)){this.reconnectAttempt+=1,this.scheduleReconnect();return}try{let $=await $2({workspaceRoot:this.options.workspaceRoot,cwd:this.options.cwd});if($){this.currentUrl=$,await this.connect(),this.reconnectAttempt=0;return}}catch{}this.reconnectAttempt+=1,this.scheduleReconnect()}}close(){let $=this.socket;if(this.closedByClient=!0,this.clearReconnectTimer(),this.registered=!1,!$)return;this.lastCloseError=new R0("hub_connection_closed",wW),this.sawSocketClose=!1;for(let Z of this.pendingReplies.values())Z.reject(this.lastCloseError);this.pendingReplies.clear(),this.connectPromise=void 0,this.socket=void 0;try{$.close()}catch{}}async dispose(){if(this.socket?.readyState===1&&this.registered)try{await this.command("client.unregister",void 0,void 0,{timeoutMs:2000})}catch{}this.close()}sendFrame($){if(!this.socket||this.socket.readyState!==1){if(this.lastCloseError.code==="hub_connection_closed"&&!this.sawSocketClose)throw new R0("hub_connection_not_open","Hub connection is not open.");throw this.lastCloseError}this.socket.send(JSON.stringify($))}sendSubscriptionFrame($,Z){this.sendFrame({kind:$,clientId:this.clientId,...Z?{sessionId:Z}:{}})}adjustSubscriptionCount($,Z){let Q=this.subscriptionKeyForSessionId($),W=(this.subscriptionCounts.get(Q)??0)+Z;if(W<=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,W),Z>0&&W===1&&this.socket?.readyState===1)this.sendSubscriptionFrame("stream.subscribe",$)}subscriptionKeyForSessionId($){return $??HV}subscriptionSessionIdFromKey($){return $===HV?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 G$($){let Z=new URL($);if(Z.protocol==="http:")Z.protocol="ws:";else if(Z.protocol==="https:")Z.protocol="wss:";return Z.toString()}async function A1($,Z){let Q=new W1({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 SW($,Z){let Q=G$($),W=await g1(Q,{authToken:Z?.authToken});if(!W)return{status:"unreachable",url:Q};if(!o_(W).compatible)return{status:"protocol_mismatch",url:Q};if(Z?.verifyConnection===!0&&!await A1(Q,{workspaceRoot:Z.workspaceRoot,cwd:Z.cwd,authToken:Z.authToken}))return{status:"unreachable",url:Q};return{status:"compatible",url:Q}}async function Kz($){let Z=Date.now()+Wz;while(Date.now()<Z){let Q=await K0($.discoveryPath);if(Q?.url){let W=await SW(Q.url,{verifyConnection:!0,authToken:Q.authToken});if(W.status==="compatible")return H$(W.url,Q.authToken)}await new Promise((W)=>setTimeout(W,Jz))}return}async function Fz($){let Z=Date.now()+jz;while(Date.now()<Z){if(!(await g1($).catch(()=>{return}))?.url)return!0;await new Promise((W)=>setTimeout(W,Vz))}return!1}function Az($,Z){try{return G$($)===G$(Z)}catch{return!1}}function fz($){return($&&typeof $==="object"&&Array.isArray($.sessions)?$.sessions:[]).some((Q)=>{if(!Q||typeof Q!=="object")return!1;let W=Q;if(W.status==="running"||W.status==="idle"||W.status==="pending")return!0;return Array.isArray(W.participants)&&W.participants.length>0})}async function Uz($,Z,Q){let W=new W1({url:$,authToken:Z,clientType:"hub-recovery-check",displayName:"hub recovery check",workspaceRoot:Q?.workspaceRoot,cwd:Q?.cwd});try{let J=await W.command("session.list",{limit:500},void 0,{timeoutMs:Yz});return!fz(J.payload)}catch{return!1}finally{await W.dispose().catch(()=>{return})}}async function o4($={}){if($.endpoint?.trim()){let J=await SW($.endpoint);return J.status==="compatible"?J.url:void 0}let Z=s9(),Q=await K0(Z.discoveryPath);if(!Q?.url)return;let W=await SW(Q.url,{authToken:Q.authToken});if(W.status==="compatible")return H$(W.url,Q.authToken);if(W.status==="protocol_mismatch")await S0(Z.discoveryPath).catch(()=>{return});return}async function $2($={}){let Z=await o4($);if(Z&&await A1(Z,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return Z;if($.endpoint?.trim())return;let Q=s9();return await B8($.workspaceRoot??process.cwd()),await Kz(Q)}async function s4($,Z){let Q=new URL($),W=Z?.trim()||UV(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:W?{authorization:`Bearer ${W}`}:void 0})).ok}async function hW($=s9()){let Z=await K0($.discoveryPath);if(!Z?.url)return!1;try{if(await s4(Z.url,Z.authToken))return!0}catch{}return!1}async function t9($){if(!PW($.url))return;let Z=s9(),Q=await K0(Z.discoveryPath);if(!Q?.url||!Az(Q.url,$.url))return;if(!await Uz(Q.url,Q.authToken,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return;if(!await hW())return;if(!await Fz(Q.url))return;return await S0(Z.discoveryPath).catch(()=>{return}),await $2({workspaceRoot:$.workspaceRoot,cwd:$.cwd})}import{resolveClineBuildEnv as Dz}from"@cline/shared";function Lz($,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 _z="cline-hub-auth.";function zz($){return $.host!==void 0||$.port!==void 0||$.pathname!==void 0}function Tz($,Z){let Q=new URL($),W=new URL(Z);return Q.search="",Q.hash="",W.search="",W.hash="",Q.toString()===W.toString()}function DV(){return Dz()==="production"?F1():Q1()}async function qz($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=DV(),W=await K0(Q.discoveryPath);if(W?.url&&Tz($.toString(),W.url))return W.authToken;return}async function kW($={}){let Z=K1($);if(!zz($)){let Q=DV(),W=await K0(Q.discoveryPath);if(W?.url)return W.url}return Z1(Z.host,Z.port,Z.pathname)}async function e9($){return await new Promise((Z,Q)=>{(async()=>{let W=new URL($),J=await qz(W);W.hash="";let X=new WebSocket(W.toString(),J?[`${_z}${J}`]: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(Lz(V,$))})})().catch(Q)})}async function LV($){try{return(await e9($)).close(),!0}catch{return!1}}async function _V($,Z){let Q=await kW($),W=await e9(Q);try{return await W.send({version:Z.version??"v1",clientId:Z.clientId??"hub-client",...Z})}finally{W.close()}}function IW($){return $?JSON.parse(JSON.stringify($)):{}}function $Z($){let Z=$?.session&&typeof $.session==="object"?$.session:void 0;if(!Z)return;let Q=Z.metadata&&typeof Z.metadata==="object"?IW(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 zV($,Z){return $.error?.message??`hub command failed: ${Z}`}function Oz($){let Z=IW($);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 W=Q?.error&&typeof Q.error==="object"?Q.error:void 0;if(typeof W?.message==="string"&&W.message.trim())return{...Z,error:W.message.trim()};return Z}function TV($){let Z=$?.sessionId;return typeof Z==="string"&&Z.trim()?Z.trim():void 0}function Mz($){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 Rz($){let Z=IW($.payload);if($.event==="schedule.execution_completed")return{sessionId:$.sessionId?.trim()||TV(Z)||"",eventType:"schedule.execution.completed",payload:Z};if($.event==="schedule.execution_failed")return{sessionId:$.sessionId?.trim()||TV(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:Oz($.payload)};case"run.completed":return{sessionId:Q,eventType:"runtime.chat.completed",payload:Z};default:return}}class xW{options;client;metadataApplied=!1;constructor($){this.options=$;this.client=new W1({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=$Z(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(I1(Q))return;throw Q}return $Z(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(zV(Q,"session.messages"));let W=Q.payload?.messages;return Array.isArray(W)?W:[]}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 W=$.config,J=await this.client.command("session.restore",{sessionId:Z,checkpointRunCount:$.checkpointRunCount,restore:$.restore,...W?{workspaceRoot:W.workspaceRoot,cwd:W.cwd,sessionConfig:{providerId:W.provider,modelId:W.model,apiKey:W.apiKey,cwd:W.cwd??W.workspaceRoot,workspaceRoot:W.workspaceRoot,systemPrompt:W.systemPrompt??"",mode:W.mode??"act",rules:W.rules,maxIterations:W.maxIterations,enableTools:W.enableTools,enableSpawnAgent:W.enableSpawn!==!1,enableAgentTeams:W.enableTeams!==!1,disableMcpSettingsTools:W.disableMcpSettingsTools,missionLogIntervalSteps:W.missionStepInterval,missionLogIntervalMs:W.missionTimeIntervalMs},metadata:{source:W.source??"cli",provider:W.provider,model:W.model,enableTools:W.enableTools,enableSpawn:W.enableSpawn,enableTeams:W.enableTeams,prompt:void 0,interactive:W.interactive!==!1},runtimeOptions:{mode:W.mode,systemPrompt:W.systemPrompt,maxIterations:W.maxIterations,enableTools:W.enableTools,enableSpawn:W.enableSpawn,enableTeams:W.enableTeams,autoApproveTools:W.autoApproveTools,configExtensions:W.configExtensions},modelSelection:{provider:W.provider,model:W.model,apiKey:W.apiKey},toolPolicies:W.toolPolicies}:{}},Z);if(!J.ok)throw Error(zV(J,"session.restore"));let X=$Z(J.payload);if(Q&&!X?.sessionId)throw Error("hub checkpoint restore returned no session id");let Y=Array.isArray(J.payload?.messages)?J.payload.messages:void 0,j=Mz(J.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((W)=>$Z({session:W})).filter((W)=>Boolean(W?.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((J)=>J.trim()).filter(Boolean)),W=this.client.subscribe((J)=>{let X=Rz(J);if(!X)return;if(Q.size>0&&!Q.has(X.sessionId))return;Z.onEvent?.(X)});return this.ensureMetadataApplied().catch((J)=>{Z.onError?.(J instanceof Error?J:Error(String(J)))}),W}streamTeamProgress($,Z){let Q=this.client.subscribe((W)=>{if(W.event!=="team.progress"||!W.payload)return;Z.onProjection?.(W.payload)});return this.ensureMetadataApplied().catch((W)=>{Z.onError?.(W instanceof Error?W:Error(String(W)))}),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 gW{client;constructor($){this.client=new W1({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 Bx}from"@cline/llms";var jU={};N(jU,{LocalRuntimeHost:()=>T1});import{readdirSync as $x}from"node:fs";import{homedir as Zx}from"node:os";import{isAbsolute as Qx,join as kY,resolve as IY}from"node:path";import{captureSdkError as p2,createSessionId as Wx,isLikelyAuthError as Jx,normalizeUserInput as Xx}from"@cline/shared";import{setHomeDirIfUnset as Yx}from"@cline/shared/storage";var sV={};N(sV,{saveProviderOAuthCredentials:()=>W2,resolveProviderApiKeyFromSettings:()=>sW,loginAndSaveProviderOAuthCredentials:()=>X6,isOAuthProvider:()=>Q2,getProviderOAuthCredentialsFromSettings:()=>Y6,getProviderAuthStorageId:()=>aW,getProviderAuthHandler:()=>j0,getPersistedProviderApiKey:()=>U8,formatProviderOAuthApiKey:()=>oW});import{getClineEnvironmentConfig as nV}from"@cline/shared";_0();var SV={};N(SV,{startClineDeviceAuth:()=>lW,refreshClineToken:()=>JZ,loginClineOAuth:()=>t4,getValidClineCredentials:()=>e4,completeClineDeviceAuth:()=>pW});import{getClineEnvironmentConfig as mW}from"@cline/shared";var qV={};N(qV,{startLocalOAuthServer:()=>J1});function Ez(){let $;return{promise:new Promise((Q)=>{$=Q}),resolve:$}}async function J1($){let Z=await import("node:http"),Q=$.host??"127.0.0.1",W=$.timeoutMs??300000,J=$.successHtml??Nz,X=Ez(),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)},W),X.promise};for(let F of $.ports){let A=Z.createServer((f,D)=>{try{let U=new URL(f.url||"",`http://${Q}:${F}`);if(U.pathname!==$.callbackPath){D.statusCode=404,D.end("Not found");return}let T={url:U,code:U.searchParams.get("code")??void 0,state:U.searchParams.get("state")??void 0,provider:U.searchParams.get("provider")??void 0,error:U.searchParams.get("error")??void 0};if(T.error){D.statusCode=400,D.end(`Authentication failed: ${T.error}`),G(),H(T);return}if(!T.code){D.statusCode=400,D.end("Missing authorization code");return}if($.expectedState&&T.state!==$.expectedState){D.statusCode=400,D.end("State mismatch");return}D.statusCode=200,D.setHeader("Content-Type","text/html; charset=utf-8"),D.end(J),G(),H(T)}catch{D.statusCode=500,D.end("Internal error")}}),L=await new Promise((f)=>{let D=(U)=>{A.off("error",D),f({bound:!1,error:U})};A.once("error",D),A.listen(F,Q,()=>{A.off("error",D),V=A,f({bound:!0})})});if(L.error){if(L.error.code==="EADDRINUSE")continue;throw G(),L.error}if(L.bound){B=F;let f=`http://${Q}:${F}${$.callbackPath}`;if($.onListening)await Promise.resolve($.onListening({host:Q,port:F,callbackUrl:f})).catch(()=>{});return{callbackUrl:f,waitForCallback:K,cancelWait:()=>{G(),H(null)},close:()=>{G(),H(null)}}}}return{callbackUrl:"",waitForCallback:async()=>null,cancelWait:()=>{},close:()=>{}}}var Nz=`<!DOCTYPE html>
|
|
279
279
|
<html lang="en">
|
package/dist/index.js
CHANGED
|
@@ -453,7 +453,7 @@ ${JSON.stringify(W,null,2)}`}startClaimLeaseHeartbeat($){let Z=Math.max(1000,Mat
|
|
|
453
453
|
`)[0]?.trim())}function i1($){if(!$)return;let Z={...$},Q=I$(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 e8($){let Z=i1($.metadata)??{},Q=$.title!==void 0?I$($.title):y7($.prompt);if(Q)Z.title=Q;return Object.keys(Z).length>0?Z:void 0}function h7($){let Z=o8($);if(Z)return{agent:"teammate",sessionId:Z.rootSessionId,taskType:"team"};let Q=_5($);if(Q)return{agent:"subagent",sessionId:Q.rootSessionId,taskType:"subagent_task"};return{agent:"lead",sessionId:$}}function k7($){return{version:1,updated_at:$.updatedAt,agent:$.context.agent,sessionId:$.context.sessionId,...$.context.taskType?{taskType:$.context.taskType}:{},messages:z5($.messages),...$.systemPrompt?{system_prompt:$.systemPrompt}:{}}}function YB($,Z,Q){oO(eO($),{recursive:!0}),tO($,`${JSON.stringify(k7({updatedAt:Z,context:Q,messages:[]}),null,2)}
|
|
454
454
|
`,"utf8")}function jB($,Z){return N0.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 VB($,Z,Q){let W=0;while(!0){let J=await $();if(J===void 0)return{updated:!1};let X=await Z(J);if(typeof X==="object"&&X!==null&&"updated"in X&&X.updated===!1){if(W+=1,W>=Q)return X;continue}return X}}import{existsSync as JM}from"node:fs";import{readFile as XM}from"node:fs/promises";class $4{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 n1($){let Z=$?.trim();if(!Z||!JM(Z))return[];try{let Q=(await XM(Z,"utf8")).trim();if(!Q)return[];let W=JSON.parse(Q);if(Array.isArray(W))return W;if(W&&typeof W==="object"&&!Array.isArray(W)){let J=W.messages;if(Array.isArray(J))return J}return[]}catch{return[]}}function I7($){return $?{...$}:void 0}async function BB($,Z){if(!($.hookName==="tool_call"||!!$.parent_agent_id))return;await Z.queueSpawnRequest($);let W=await Z.upsertSubagentSessionFromHook($);if(!W)return;await Z.appendSubagentHookAudit(W,$),await Z.applySubagentStatus(W,$)}function Z4($){if(typeof $!=="string")return;let Z=$.trim();return Z.length>0?Z:void 0}function x0($){let Z=Z4($);if(!Z)return;return Z.toLowerCase()==="unknown"?void 0:Z}function q5($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function BM($){if(!$||typeof $!=="object"||Array.isArray($))return;return{...$}}function g7($){let Z=$??200;return Number.isFinite(Z)?Math.max(0,Math.floor(Z)):200}function HM($){if($===0)return 0;return Math.min(Math.max($*2,20),2000)}function GM($){return $.isSubagent!==!0&&!Z4($.parentSessionId)}function KM($){let Z=$.match(/\d{13,}/g);if(!Z||Z.length===0)return 0;let Q=0;for(let W of Z){let J=Number.parseInt(W,10);if(Number.isFinite(J)&&J>Q)Q=J}return Q}function m7($){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 FM($){let Z=g7($);if(Z===0)return[];let Q=FB(),J=(await YM(Q,{withFileTypes:!0}).catch(()=>[])).filter((Y)=>Y.isDirectory()).map((Y)=>({entry:Y,recency:KM(Y.name.trim())})).sort((Y,j)=>j.recency-Y.recency||j.entry.name.localeCompare(Y.entry.name));return(await Promise.all(J.map(async({entry:Y})=>{let j=Y.name.trim();if(!j)return;let V=KB(Q,j,`${j}.json`),B=await GB(V,"utf8").catch(()=>{return});if(!B)return;let H;try{H=JSON.parse(B)}catch{return}let G=N0.safeParse(H);if(!G.success)return;return m7(G.data)}))).filter((Y)=>Boolean(Y)).sort((Y,j)=>j.startedAt.localeCompare(Y.startedAt)).slice(0,Z)}async function AM($,Z,Q){let W=g7(Z);if(W===0)return await $.listSessions(0),[];let J=Q.includeSubagents?W:HM(W),X=await $.listSessions(J);return(Q.includeSubagents?X:X.filter(GM)).slice(0,W)}function fM($){if(typeof $==="string")return $.trim();let Z=[];for(let Q of $){if(!Q||typeof Q!=="object")continue;let W=Q;if(W.type!=="text")continue;let J=W.text?.trim();if(J)Z.push(J)}return Z.join(`
|
|
455
455
|
`).trim()}function HB($){return $.replace(/\s+/g," ").trim()}function UM($,Z){if($.length<=Z)return $;return`${$.slice(0,Math.max(0,Z-3)).trimEnd()}...`}function DM($){for(let Z of["user","assistant"])for(let Q of $){if(Q.role!==Z)continue;let W=HB(fM(Q.content));if(!W)continue;let J=Z==="user"?HB(jM(W)):W,X=VM(J.split(`
|
|
456
|
-
`)[0]??J);return UM(X,50)}return}function LM($){let Z=0;for(let Q of $)Z+=q5(Q.metrics?.cost)??0;return Z}function _M($){let Z,Q;for(let W=$.length-1;W>=0;W-=1){let J=$[W];if(!Z)Z=x0(J.modelInfo?.provider);if(!Q)Q=x0(J.modelInfo?.id);if(Z&&Q)break}return{provider:Z,model:Q}}function zM($){return x0($?.provider)??x0($?.provider&&typeof $.provider==="object"&&!Array.isArray($.provider)?$.provider.id:void 0)}function TM($){return x0($?.model)??x0($?.model&&typeof $.model==="object"&&!Array.isArray($.model)?$.model.id:void 0)}function x7($,Z){let Q=BM($.metadata),W=Z4(Z?.title)??Z4(Q?.title),J=q5(Z?.totalCost)??q5(Q?.totalCost),X=Q||W!==void 0||J!==void 0?{...Q??{},...W!==void 0?{title:W}:{},...J!==void 0?{totalCost:J}:{}}:void 0;return{...$,provider:x0(Z?.provider)??x0($.provider)??zM(Q)??"",model:x0(Z?.model)??x0($.model)??TM(Q)??"",metadata:X}}function qM($){let Z=$.content;if(!Array.isArray(Z))return!1;return Z.some((Q)=>!!Q&&typeof Q==="object"&&Q.type==="tool-call")}function OM($,Z){if($.status!=="running"||$.interactive!==!0)return!1;let Q=Z.at(-1);return Q?.role==="assistant"&&!qM(Q)}async function MM($,Z){return await Promise.all(Z.map(async(Q)=>{if(Q.status!=="running"||Q.interactive!==!0)return Q;let W=await $.readSessionMessages(Q.sessionId);return OM(Q,W)?{...Q,status:"idle"}:Q}))}async function RM($,Z){return await Promise.all(Z.map(async(Q)=>{let W=x7(Q),J=Boolean(Z4(W.metadata?.title)),X=Boolean(x0(W.provider)),Y=Boolean(x0(W.model)),j=q5(W.metadata?.totalCost),V=j!==void 0&&j>0;if(J&&X&&Y&&V)return W;let B=await $.readSessionMessages(Q.sessionId);if(B.length===0)return W;let H=_M(B),G=LM(B);return x7(Q,{title:J?void 0:DM(B),provider:X?void 0:H.provider,model:Y?void 0:H.model,totalCost:V||G<=0?void 0:G})}))}async function v7($,Z={}){let Q=g7(Z.limit),W=Z.includeSubagents===!0,J=await AM($,Q,{includeSubagents:W}),X=Z.includeManifestFallback===!0&&J.length<Q?await FM(Math.min(Math.max(Q*2,100),500)):[],Y=new Map;for(let B of[...J,...X]){if(Y.has(B.sessionId))continue;Y.set(B.sessionId,B)}let j=X.length===0?J:Array.from(Y.values()).sort((B,H)=>H.startedAt.localeCompare(B.startedAt)).slice(0,Q),V=await MM($,j);if(Z.hydrate===!1)return V.map((B)=>x7(B));return await RM($,V)}async function EM($){let Z=$.trim();if(!Z)return;let Q=KB(FB(),Z,`${Z}.json`),W=await GB(Q,"utf8").catch(()=>{return});if(!W)return;try{let J=N0.safeParse(JSON.parse(W));return J.success?J.data.messages_path:void 0}catch{return}}async function NM($,Z={}){let Q=new Map;return await v7({listSessions:async(J)=>{let X=await $.listSessions(J);Q.clear();for(let Y of X)Q.set(Y.sessionId,Y);return X.map(t8)},readSessionMessages:async(J)=>{let X=Q.get(J)?.messagesPath??await EM(J);return await n1(X)}},Z)}import{captureSdkError as aG}from"@cline/shared";import{createSessionId as CR,isHubProtocolCompatible as wR,resolveClineBuildEnv as PR,resolveHubCommandTimeoutMs as SR}from"@cline/shared";import{spawn as JR}from"node:child_process";import{closeSync as XR,mkdirSync as YR,openSync as jR}from"node:fs";import{basename as VR,dirname as BR,join as HR}from"node:path";import{fileURLToPath as GR}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as KR,isHubDaemonProcess as CB,isHubProtocolCompatible as FR,resolveClineBuildEnv as wB,withResolvedClineBuildEnv as AR}from"@cline/shared";import{createHash as CM,randomBytes as wM}from"node:crypto";import{existsSync as PM}from"node:fs";import{chmod as SM,mkdir as c7,readFile as LB,rm as u7,writeFile as _B}from"node:fs/promises";import{dirname as zB,join as d7}from"node:path";import{resolveClineDataDir as W4,resolveClineDir as Sd}from"@cline/shared/storage";var fB="0.0.58
|
|
456
|
+
`)[0]??J);return UM(X,50)}return}function LM($){let Z=0;for(let Q of $)Z+=q5(Q.metrics?.cost)??0;return Z}function _M($){let Z,Q;for(let W=$.length-1;W>=0;W-=1){let J=$[W];if(!Z)Z=x0(J.modelInfo?.provider);if(!Q)Q=x0(J.modelInfo?.id);if(Z&&Q)break}return{provider:Z,model:Q}}function zM($){return x0($?.provider)??x0($?.provider&&typeof $.provider==="object"&&!Array.isArray($.provider)?$.provider.id:void 0)}function TM($){return x0($?.model)??x0($?.model&&typeof $.model==="object"&&!Array.isArray($.model)?$.model.id:void 0)}function x7($,Z){let Q=BM($.metadata),W=Z4(Z?.title)??Z4(Q?.title),J=q5(Z?.totalCost)??q5(Q?.totalCost),X=Q||W!==void 0||J!==void 0?{...Q??{},...W!==void 0?{title:W}:{},...J!==void 0?{totalCost:J}:{}}:void 0;return{...$,provider:x0(Z?.provider)??x0($.provider)??zM(Q)??"",model:x0(Z?.model)??x0($.model)??TM(Q)??"",metadata:X}}function qM($){let Z=$.content;if(!Array.isArray(Z))return!1;return Z.some((Q)=>!!Q&&typeof Q==="object"&&Q.type==="tool-call")}function OM($,Z){if($.status!=="running"||$.interactive!==!0)return!1;let Q=Z.at(-1);return Q?.role==="assistant"&&!qM(Q)}async function MM($,Z){return await Promise.all(Z.map(async(Q)=>{if(Q.status!=="running"||Q.interactive!==!0)return Q;let W=await $.readSessionMessages(Q.sessionId);return OM(Q,W)?{...Q,status:"idle"}:Q}))}async function RM($,Z){return await Promise.all(Z.map(async(Q)=>{let W=x7(Q),J=Boolean(Z4(W.metadata?.title)),X=Boolean(x0(W.provider)),Y=Boolean(x0(W.model)),j=q5(W.metadata?.totalCost),V=j!==void 0&&j>0;if(J&&X&&Y&&V)return W;let B=await $.readSessionMessages(Q.sessionId);if(B.length===0)return W;let H=_M(B),G=LM(B);return x7(Q,{title:J?void 0:DM(B),provider:X?void 0:H.provider,model:Y?void 0:H.model,totalCost:V||G<=0?void 0:G})}))}async function v7($,Z={}){let Q=g7(Z.limit),W=Z.includeSubagents===!0,J=await AM($,Q,{includeSubagents:W}),X=Z.includeManifestFallback===!0&&J.length<Q?await FM(Math.min(Math.max(Q*2,100),500)):[],Y=new Map;for(let B of[...J,...X]){if(Y.has(B.sessionId))continue;Y.set(B.sessionId,B)}let j=X.length===0?J:Array.from(Y.values()).sort((B,H)=>H.startedAt.localeCompare(B.startedAt)).slice(0,Q),V=await MM($,j);if(Z.hydrate===!1)return V.map((B)=>x7(B));return await RM($,V)}async function EM($){let Z=$.trim();if(!Z)return;let Q=KB(FB(),Z,`${Z}.json`),W=await GB(Q,"utf8").catch(()=>{return});if(!W)return;try{let J=N0.safeParse(JSON.parse(W));return J.success?J.data.messages_path:void 0}catch{return}}async function NM($,Z={}){let Q=new Map;return await v7({listSessions:async(J)=>{let X=await $.listSessions(J);Q.clear();for(let Y of X)Q.set(Y.sessionId,Y);return X.map(t8)},readSessionMessages:async(J)=>{let X=Q.get(J)?.messagesPath??await EM(J);return await n1(X)}},Z)}import{captureSdkError as aG}from"@cline/shared";import{createSessionId as CR,isHubProtocolCompatible as wR,resolveClineBuildEnv as PR,resolveHubCommandTimeoutMs as SR}from"@cline/shared";import{spawn as JR}from"node:child_process";import{closeSync as XR,mkdirSync as YR,openSync as jR}from"node:fs";import{basename as VR,dirname as BR,join as HR}from"node:path";import{fileURLToPath as GR}from"node:url";import{CLINE_RUN_AS_HUB_DAEMON_ENV as KR,isHubDaemonProcess as CB,isHubProtocolCompatible as FR,resolveClineBuildEnv as wB,withResolvedClineBuildEnv as AR}from"@cline/shared";import{createHash as CM,randomBytes as wM}from"node:crypto";import{existsSync as PM}from"node:fs";import{chmod as SM,mkdir as c7,readFile as LB,rm as u7,writeFile as _B}from"node:fs/promises";import{dirname as zB,join as d7}from"node:path";import{resolveClineDataDir as W4,resolveClineDir as Sd}from"@cline/shared/storage";var fB="0.0.58";var Q4={name:"@cline/core",description:"Cline Core SDK for Node Runtime",version:fB,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 bM="CLINE_HUB_DISCOVERY_PATH",yM="CLINE_HUB_BUILD_ID",UB=30000,hM=15000,kM=100;function IM($){return $.replace(/[^a-zA-Z0-9_.-]+/g,"_")}function xM($){return CM("sha256").update($).digest("hex").slice(0,12)}function gM($){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 TB(){return wM(32).toString("hex")}function mM($){return new Promise((Z)=>setTimeout(Z,$))}function vM($){return`${$}.lock`}async function cM($){try{let Z=JSON.parse(await LB(d7($,"owner.json"),"utf8"));if(typeof Z.pid!=="number"||typeof Z.acquiredAt!=="string")return;return{pid:Z.pid,acquiredAt:Z.acquiredAt}}catch{return}}async function DB($){await u7($,{recursive:!0,force:!0}).catch(()=>{return})}function qB(){return process.env[yM]?.trim()||String(Q4.version)}function x$($=process.argv[1]?.trim()||process.cwd()){let Z=`hub-${xM($)}`,Q=process.env[bM]?.trim()||d7(W4(),"locks","hub","owners",`${IM(Z)}.json`);return{ownerId:Z,discoveryPath:Q}}function yd($=`hub-${Date.now().toString(36)}`){return x$($)}async function A0($){try{let Z=JSON.parse(await LB($,"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 OB($,Z){await c7(zB($),{recursive:!0}),await u7($,{force:!0}).catch(()=>{return}),await _B($,`${JSON.stringify(Z,null,2)}
|
|
457
457
|
`,{encoding:"utf8",mode:384}),await SM($,384)}async function a0($){await u7($,{force:!0}).catch(()=>{return})}async function MB($,Z){let Q=vM($);await c7(zB(Q),{recursive:!0});let W=Date.now()+hM;while(!0)try{await c7(Q,{recursive:!1}),await _B(d7(Q,"owner.json"),`${JSON.stringify({pid:process.pid,acquiredAt:new Date().toISOString()},null,2)}
|
|
458
458
|
`,"utf8");try{return await Z()}finally{await DB(Q)}}catch(J){if((J instanceof Error&&"code"in J?String(J.code):"")!=="EEXIST")throw J;let Y=await cM(Q),j=Y?Date.now()-Date.parse(Y.acquiredAt):UB+1;if(!Y||!gM(Y.pid)||j>UB){await DB(Q);continue}if(Date.now()>=W)throw Error(`Timed out waiting for hub startup lock ${Q}`);await mM(kM)}}async function g$($,Z){try{let Q=await fetch(Z?.authToken?uM($):RB($),{headers:Z?.authToken?{authorization:`Bearer ${Z.authToken}`}:void 0});if(!Q.ok)return;let W=await Q.json();if(typeof W.protocolVersion!=="string"||typeof W.host!=="string"||typeof W.port!=="number"||typeof W.url!=="string")return;return{protocolVersion:W.protocolVersion,minClientProtocolVersion:typeof W.minClientProtocolVersion==="string"?W.minClientProtocolVersion:void 0,maxClientProtocolVersion:typeof W.maxClientProtocolVersion==="string"?W.maxClientProtocolVersion:void 0,capabilities:Array.isArray(W.capabilities)?W.capabilities.filter((J)=>typeof J==="string"):void 0,coreVersion:typeof W.coreVersion==="string"?W.coreVersion:void 0,buildId:typeof W.buildId==="string"?W.buildId:void 0,host:W.host,port:W.port,url:W.url,hubId:typeof W.hubId==="string"?W.hubId:void 0,authToken:typeof W.authToken==="string"?W.authToken:void 0,pid:typeof W.pid==="number"?W.pid:void 0,startedAt:typeof W.startedAt==="string"?W.startedAt:void 0,updatedAt:typeof W.updatedAt==="string"?W.updatedAt:void 0}}catch{return}}function L1($,Z,Q="/hub"){return new URL(`ws://${$}:${Z}${Q}`).toString()}function RB($){let Z=new URL($);return Z.protocol=Z.protocol==="wss:"?"https:":"http:",Z.pathname="/health",Z.search="",Z.toString()}function uM($){let Z=new URL(RB($));return Z.pathname="/status",Z.toString()}function hd($){return PM($)}import{CLINE_HUB_DEV_PORT as dM,CLINE_HUB_PORT as lM,resolveClineBuildEnv as pM}from"@cline/shared";var rM="CLINE_HUB_HOST",iM="CLINE_HUB_PORT",nM="CLINE_HUB_PATHNAME",aM="127.0.0.1",sM=lM,oM="/hub";function EB($){return pM($)==="development"?dM:sM}function tM($={}){return($.env??process.env)[rM]?.trim()||aM}function O5($={}){let Q=($.env??process.env)[iM]?.trim();if(!Q)return EB($);let W=Number.parseInt(Q,10);if(!Number.isInteger(W)||W<1||W>65535)return EB($);return W}function eM($={}){return($.env??process.env)[nM]?.trim()||oM}function a1($={},Z={}){return{host:$.host??tM(Z),port:$.port??O5(Z),pathname:$.pathname??eM(Z)}}import{join as $R}from"node:path";var ZR="shared:cline",QR="CLINE_HUB_DISCOVERY_PATH",WR="hub-production";function cd($){let Z=b$($.trim());return x$(`workspace:${Z||$.trim()}`)}function _1($=ZR){return x$($)}function s1(){return{ownerId:WR,discoveryPath:process.env[QR]?.trim()||$R(W4(),"locks","hub","production.json")}}var fR=8000,UR=200,DR=3000,LR=100,_R=[100,250,500,1000,2000],zR="--cline-hub-daemon";function TR($){return[...$.host?["--host",$.host]:[],...typeof $.port==="number"?["--port",String($.port)]:[],...$.pathname?["--pathname",$.pathname]:[]]}function qR(){try{let $=HR(W4(),"logs","hub-daemon.log");return YR(BR($),{recursive:!0}),{fd:jR($,"a"),logPath:$}}catch{return}}function PB(){return wB()==="production"?s1():_1()}function m$($){return FR($).compatible}function NB($,Z,Q){if(!Z||Z.url!==Q)return $;return{...$,authToken:$.authToken??Z.authToken,pid:$.pid??Z.pid}}async function v$($,Z){try{return await g$($,{authToken:Z})}catch{return}}async function OR($,Z){let Q=Date.now()+Z;while(Date.now()<Q){if(!(await v$($))?.url)return!0;await new Promise((J)=>setTimeout(J,LR))}return!1}async function M5($,Z){if(await l7($.url,$.authToken).catch(()=>!1),$.pid)try{process.kill($.pid,"SIGTERM")}catch{}let Q=await OR($.url,DR);return await a0(Z).catch(()=>{return}),Q}async function J4($,Z){if(m$($))return!0;return M5($,Z)}async function SB($){if(wB()!=="production")return;let Z=_1();if(Z.discoveryPath===$.discoveryPath)return;let Q=await A0(Z.discoveryPath);if(Q?.url)await M5(Q,Z.discoveryPath);else await a0(Z.discoveryPath).catch(()=>{return})}function MR(){let $=import.meta.url.endsWith(".ts")?"ts":"js";return GR(new URL(`./entry.${$}`,import.meta.url))}function RR($,Z){let Q=MR(),W=process.execPath?.trim();if(!W)throw Error("unable to resolve runtime executable for hub daemon");let J=VR(W).toLowerCase().includes("bun"),X=Q.startsWith("/$bunfs/"),Y=J&&Q.toLowerCase().endsWith(".ts"),j=X?[zR]:[...Y?["--conditions=development"]:[],Q];return{launcher:W,args:[...j,"--cwd",$,...TR(Z)],cwd:$,env:{...AR(process.env),CLINE_NO_INTERACTIVE:"1",[KR]:"1"}}}function ER($){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 NR($,Z={}){if(CB())return;let Q=RR($,Z),W=qR();try{JR(Q.launcher,Q.args,{detached:!0,stdio:W?["ignore",W.fd,W.fd]:"ignore",env:Q.env,cwd:Q.cwd,windowsHide:!0}).unref()}finally{if(W)XR(W.fd)}}async function R5($,Z={}){for(let Q=0;;Q++)try{NR($,Z);return}catch(W){let J=_R[Q];if(!ER(W)||J===void 0)throw W;await new Promise((X)=>setTimeout(X,J))}}function bB($,Z={}){if(CB())return;let Q=PB(),W=a1(Z),J=L1(W.host,W.port,W.pathname),X=Z.allowPortFallback===!0&&W.port!==0;SB(Q).catch(()=>{return}).then(()=>A0(Q.discoveryPath)).then(async(Y)=>{let j=!1;if(Y?.url)if(!Y.authToken){if(j=!0,!await M5(Y,Q.discoveryPath)&&!X)return}else{let H=await v$(Y.url,Y.authToken);if(H?.url&&m$(H)&&await o1(H.url,{authToken:Y.authToken}))return;if(H?.url)await J4({...H,authToken:Y.authToken},Q.discoveryPath);else await a0(Q.discoveryPath).catch(()=>{return})}let V=await v$(J);if(V?.url){if(m$(V)){if(!X||!j)return}else if(!await J4({...V,authToken:void 0},Q.discoveryPath)&&!X)return}let B=X?{...W,port:0}:W;await R5($,B)}).catch(()=>{})}async function td($,Z={}){let Q=PB(),W=Z.host!==void 0||Z.port!==void 0||Z.pathname!==void 0||!!process.env.CLINE_HUB_PORT?.trim(),J=a1(Z),X=L1(J.host,J.port,J.pathname),Y=(F)=>{if(!W)k2(F.url,F.authToken);return F};await SB(Q).catch(()=>{return});let j=await A0(Q.discoveryPath),V=!1;if(j?.url){let F=j.authToken;if(!F)V=!0,await M5(j,Q.discoveryPath);else{let A=await v$(j.url,F);if(A?.url&&m$(A)&&await o1(A.url,{authToken:F}))return Y({url:A.url,authToken:F});if(A?.url)await J4({...A,authToken:F},Q.discoveryPath);else await a0(Q.discoveryPath).catch(()=>{return})}}let B=await v$(X);if(B?.url){let F=NB(B,j,X);if(m$(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 J4(F,Q.discoveryPath)&&Z.allowPortFallback!==!0&&J.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&&J.port!==0?{...J,port:0}:J;await R5($,G);let K=Date.now()+fR;while(Date.now()<K){let F=await A0(Q.discoveryPath);if(F?.url&&F.authToken){let L=await v$(F.url,F.authToken);if(L?.url&&m$(L)&&await o1(L.url,{authToken:F.authToken}))return Y({url:L.url,authToken:F.authToken})}let A=await v$(X);if(A?.url&&!m$(A)){let L=NB(A,F,X);if(!await J4(L,Q.discoveryPath)&&Z.allowPortFallback!==!0&&J.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((L)=>setTimeout(L,UR))}throw Error("Timed out waiting for detached hub startup.")}function N5(){return PR()==="production"?s1():_1()}function bR(){let $=globalThis.WebSocket;if(!$)throw Error("Global WebSocket is not available in this runtime. Node 22+ is required for hub mode.");return $}function xB($){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 xB($.data);return String($)}function yR($){if(typeof $==="string")return $;if($ instanceof Uint8Array)return Buffer.from($).toString("utf8");if($ instanceof ArrayBuffer)return Buffer.from($).toString("utf8");return""}function yB($){let Z=$,Q=yR(Z.reason);return new g0("hub_connection_closed",Z.code||Q?`Hub connection closed (code=${Z.code??0}${Q?`, reason=${Q}`:""})`:p7,{closeCode:Z.code,closeReason:Q||void 0})}function hR($,Z){if($ instanceof g0)return $;if($ instanceof Error)return new g0("hub_connect_failed",$.message);if($&&typeof $==="object"&&"error"in $&&$.error instanceof Error)return new g0("hub_connect_failed",$.error.message);let Q=$&&typeof $==="object"&&"message"in $&&typeof $.message==="string"?$.message.trim():"";if(Q)return new g0("hub_connect_failed",Q);let W=$&&typeof $==="object"&&"type"in $&&typeof $.type==="string"?$.type.trim():"";return new g0("hub_connect_failed",W?`Failed to connect to hub at ${Z.toString()} (${W} event before socket open).`:`Failed to connect to hub at ${Z.toString()}.`)}var kR=8000,IR=200,hB="*",kB=8000,xR="cline-hub-auth.",gB=new Map,mB=new Set,gR=3000,mR=3000,vR=100,p7="Hub connection closed",cR=250,uR=5000,IB=0.5;class g0 extends Error{code;details;constructor($,Z,Q){super(Z);this.code=$;this.details=Q;this.name="HubTransportError"}}function dR($){return $ instanceof g0}class E5 extends Error{command;code;constructor($,Z,Q){super(Q);this.command=$;this.code=Z;this.name="HubCommandError"}}function vB($,Z){return $ instanceof E5&&$.code==="hub_command_timeout"&&(Z===void 0||$.command===Z)}function cB($){let Z=$.searchParams.get("authToken")?.trim();if($.searchParams.delete("authToken"),Z)return Z;let Q=n7($.toString());return Q?gB.get(Q):void 0}function lR($){try{let Q=new URL($).hostname.toLowerCase().replace(/^\[|\]$/g,"");return Q==="localhost"||Q==="127.0.0.1"||Q==="::1"}catch{return!1}}function n7($){if(!lR($))return;let Z=new URL(I2($));return Z.search="",Z.hash="",Z.toString()}function r7($){let Z=n7($);return!!Z&&mB.has(Z)}function k2($,Z){let Q=n7($);if(Q){if(mB.add(Q),Z?.trim())gB.set(Q,Z)}return $}class z1{options;socket;connectPromise;clientId;currentUrl;recoveryPromise;pendingReplies=new Map;listeners=new Set;subscriptionCounts=new Map;reconnectTimer;reconnectAttempt=0;closedByClient=!1;lastCloseError=new g0("hub_connection_closed",p7);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()||cB($);$.hash="";let W=new(bR())($.toString(),Z?[`${xR}${Z}`]:void 0);this.socket=W;let J=!1;this.connectPromise=new Promise((X,Y)=>{let j=!1,V=setTimeout(()=>{if(j)return;j=!0,J=!0,this.lastCloseError=new g0("hub_connect_timeout",`Timed out connecting to hub after ${kB}ms`),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0;try{W.close()}catch{}Y(this.lastCloseError)},kB);W.addEventListener("open",()=>{if(j)return;j=!0,clearTimeout(V),X()}),W.addEventListener("error",(B)=>{if(j)return;j=!0,clearTimeout(V),this.lastCloseError=hR(B,$),this.sawSocketClose=!1,this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)}),W.addEventListener("close",(B)=>{if(j)return;if(j=!0,clearTimeout(V),!J)this.lastCloseError=yB(B),this.sawSocketClose=!0;this.connectPromise=void 0,this.socket=void 0,Y(this.lastCloseError)})}),W.addEventListener("message",(X)=>{this.handleFrame(JSON.parse(xB(X)))}),W.addEventListener("close",(X)=>{if(this.socket!==W)return;if(!J)this.lastCloseError=yB(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,W={listener:$,sessionId:Q};return this.listeners.add(W),this.adjustSubscriptionCount(Q,1),()=>{if(!this.listeners.delete(W))return;this.adjustSubscriptionCount(Q,-1)}}async command($,Z,Q,W){let J=0,X=$!=="client.register"&&$!=="client.unregister";while(!0)try{return await this.commandOnce($,Z,Q,W)}catch(Y){if(!X||J>=1||!await this.recoverLocalHubTransport(Y))throw Y;J+=1}}async commandOnce($,Z,Q,W){await this.connect();let J=CR("hubreq_"),X=SR($,W?.timeoutMs),Y=new Promise((V,B)=>{let H=X===null?void 0:setTimeout(()=>{if(!this.pendingReplies.delete(J))return;B(new E5($,"hub_command_timeout",`Hub command ${$} timed out after ${X}ms (hub=${this.currentUrl}, requestId=${J}, 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(J,{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:J,clientId:this.clientId,sessionId:Q,timeoutMs:X,payload:Z}})}catch(V){throw this.pendingReplies.delete(J),V}let j=await Y;if(!j.ok){if(j.error?.code===c8){let V=Q??(typeof Z?.sessionId==="string"?Z.sessionId:void 0);throw new P$(V,j.error.message)}throw new E5($,j.error?.code,j.error?.message??`Hub command ${$} failed`)}return j}async recoverLocalHubTransport($){if(!r7(this.currentUrl)||!dR($))return!1;if(this.recoveryPromise)return await this.recoveryPromise;return this.recoveryPromise=(async()=>{let Z=await X4({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(cR*2**this.reconnectAttempt,uR),Z=Math.round($*(1-IB)+Math.random()*$*IB);this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=void 0,this.reconnectSubscribedTransport()},Z)}async reconnectSubscribedTransport(){if(this.closedByClient||!this.hasActiveSubscriptions())return;try{await this.connect(),this.reconnectAttempt=0}catch{if(!r7(this.currentUrl)){this.reconnectAttempt+=1,this.scheduleReconnect();return}try{let $=await X4({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 g0("hub_connection_closed",p7),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 g0("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($),W=(this.subscriptionCounts.get(Q)??0)+Z;if(W<=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,W),Z>0&&W===1&&this.socket?.readyState===1)this.sendSubscriptionFrame("stream.subscribe",$)}subscriptionKeyForSessionId($){return $??hB}subscriptionSessionIdFromKey($){return $===hB?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 I2($){let Z=new URL($);if(Z.protocol==="http:")Z.protocol="ws:";else if(Z.protocol==="https:")Z.protocol="wss:";return Z.toString()}async function o1($,Z){let Q=new z1({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 i7($,Z){let Q=I2($),W=await g$(Q,{authToken:Z?.authToken});if(!W)return{status:"unreachable",url:Q};if(!wR(W).compatible)return{status:"protocol_mismatch",url:Q};if(Z?.verifyConnection===!0&&!await o1(Q,{workspaceRoot:Z.workspaceRoot,cwd:Z.cwd,authToken:Z.authToken}))return{status:"unreachable",url:Q};return{status:"compatible",url:Q}}async function pR($){let Z=Date.now()+kR;while(Date.now()<Z){let Q=await A0($.discoveryPath);if(Q?.url){let W=await i7(Q.url,{verifyConnection:!0,authToken:Q.authToken});if(W.status==="compatible")return k2(W.url,Q.authToken)}await new Promise((W)=>setTimeout(W,IR))}return}async function rR($){let Z=Date.now()+mR;while(Date.now()<Z){if(!(await g$($).catch(()=>{return}))?.url)return!0;await new Promise((W)=>setTimeout(W,vR))}return!1}function iR($,Z){try{return I2($)===I2(Z)}catch{return!1}}function nR($){return($&&typeof $==="object"&&Array.isArray($.sessions)?$.sessions:[]).some((Q)=>{if(!Q||typeof Q!=="object")return!1;let W=Q;if(W.status==="running"||W.status==="idle"||W.status==="pending")return!0;return Array.isArray(W.participants)&&W.participants.length>0})}async function aR($,Z,Q){let W=new z1({url:$,authToken:Z,clientType:"hub-recovery-check",displayName:"hub recovery check",workspaceRoot:Q?.workspaceRoot,cwd:Q?.cwd});try{let J=await W.command("session.list",{limit:500},void 0,{timeoutMs:gR});return!nR(J.payload)}catch{return!1}finally{await W.dispose().catch(()=>{return})}}async function a7($={}){if($.endpoint?.trim()){let J=await i7($.endpoint);return J.status==="compatible"?J.url:void 0}let Z=N5(),Q=await A0(Z.discoveryPath);if(!Q?.url)return;let W=await i7(Q.url,{authToken:Q.authToken});if(W.status==="compatible")return k2(W.url,Q.authToken);if(W.status==="protocol_mismatch")await a0(Z.discoveryPath).catch(()=>{return});return}async function X4($={}){let Z=await a7($);if(Z&&await o1(Z,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return Z;if($.endpoint?.trim())return;let Q=N5();return await R5($.workspaceRoot??process.cwd()),await pR(Q)}async function l7($,Z){let Q=new URL($),W=Z?.trim()||cB(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:W?{authorization:`Bearer ${W}`}:void 0})).ok}async function sR($=N5()){let Z=await A0($.discoveryPath);if(!Z?.url)return!1;try{if(await l7(Z.url,Z.authToken))return!0}catch{}return!1}async function uB($){if(!r7($.url))return;let Z=N5(),Q=await A0(Z.discoveryPath);if(!Q?.url||!iR(Q.url,$.url))return;if(!await aR(Q.url,Q.authToken,{workspaceRoot:$.workspaceRoot,cwd:$.cwd}))return;if(!await sR())return;if(!await rR(Q.url))return;return await a0(Z.discoveryPath).catch(()=>{return}),await X4({workspaceRoot:$.workspaceRoot,cwd:$.cwd})}import{captureSdkError as dB,createSessionId as lB,HUB_CHECKPOINT_CAPABILITY as $E,HUB_COMPACTION_CAPABILITY as ZE,HUB_CUSTOM_TOOL_CAPABILITY_PREFIX as QE,HUB_HOOK_CAPABILITY_PREFIX as WE,HUB_MISTAKE_LIMIT_CAPABILITY as JE,HUB_TOOL_EXECUTOR_CAPABILITY_PREFIX as XE,HUB_USER_INSTRUCTIONS_SNAPSHOT_CAPABILITY as YE,isHubToolExecutorName as jE}from"@cline/shared";function oR($){return $?JSON.parse(JSON.stringify($)):void 0}function tR($){return $?JSON.parse(JSON.stringify($)):void 0}function eR($){let Z=$?.checkpoint&&typeof $.checkpoint==="object"&&!Array.isArray($.checkpoint)?$.checkpoint:void 0,W=(Array.isArray(Z?.history)?Z.history:[]).filter((Y)=>!!Y&&typeof Y==="object"&&!Array.isArray(Y)).flatMap((Y)=>{let j=typeof Y.ref==="string"?Y.ref.trim():"",V=Number(Y.createdAt),B=Number(Y.runCount);if(!j||!Number.isFinite(V)||!Number.isInteger(B))return[];return[{ref:j,createdAt:V,runCount:B,...Y.kind==="stash"||Y.kind==="commit"?{kind:Y.kind}:{}}]}),J=W.at(-1),X=$?.checkpointEnabled===!0?!0:void 0;if(!X&&W.length===0)return;return{...X?{enabled:X}:{},...J?{latest:J}:{},history:W}}function t1($){let{session:Z}=$,Q=oR(Z.metadata);return{version:1,sessionId:Z.sessionId,source:Z.source,status:Z.status,createdAt:Z.startedAt,updatedAt:Z.updatedAt,endedAt:Z.endedAt??null,exitCode:Z.exitCode??null,interactive:Z.interactive,workspace:{cwd:Z.cwd,root:Z.workspaceRoot},model:{providerId:Z.provider,modelId:Z.model},capabilities:{enableTools:Z.enableTools,enableSpawn:Z.enableSpawn,enableTeams:Z.enableTeams},lineage:{...Z.parentSessionId?{parentSessionId:Z.parentSessionId}:{},...Z.parentAgentId?{parentAgentId:Z.parentAgentId}:{},...Z.agentId?{agentId:Z.agentId}:{},...Z.conversationId?{conversationId:Z.conversationId}:{},isSubagent:Z.isSubagent},...Z.teamName?{team:{name:Z.teamName}}:{},...Z.prompt?{prompt:Z.prompt}:{},...Q?{metadata:Q}:{},...Z.messagesPath?{artifacts:{messagesPath:Z.messagesPath}}:{},...$.messages?{messages:tR($.messages)}:{},...$.usage?{usage:{...$.usage}}:{},...$.aggregateUsage?{aggregateUsage:{...$.aggregateUsage}}:{},...(()=>{let W=eR(Q);return W?{checkpoint:W}:{}})()}}function s7($){return{sessionId:$.sessionId,parentSessionId:$.lineage.parentSessionId,agentId:$.lineage.agentId,parentAgentId:$.lineage.parentAgentId,conversationId:$.lineage.conversationId,isSubagent:$.lineage.isSubagent,source:$.source,startedAt:$.createdAt,endedAt:$.endedAt??void 0,exitCode:$.exitCode??void 0,status:$.status,interactive:$.interactive,provider:$.model.providerId,model:$.model.modelId,cwd:$.workspace.cwd,workspaceRoot:$.workspace.root,teamName:$.team?.name,enableTools:$.capabilities.enableTools,enableSpawn:$.capabilities.enableSpawn,enableTeams:$.capabilities.enableTeams,prompt:$.prompt,metadata:$.metadata,updatedAt:$.updatedAt,messagesPath:$.artifacts?.messagesPath}}function x2($){if(!$)return;return JSON.parse(JSON.stringify($))}var VE=["beforeRun","afterRun","beforeModel","afterModel","beforeTool","afterTool","onEvent"];function pB($){if(!$||typeof $!=="object"||Array.isArray($))return;return JSON.parse(JSON.stringify($))}function rB($){if(!$)return;let{userInstructionService:Z,...Q}=$;return JSON.parse(JSON.stringify(Q))}function iB($){let Z=$&&typeof $==="object"&&!Array.isArray($)?$:{};return{agentId:typeof Z.agentId==="string"?Z.agentId:"",conversationId:typeof Z.conversationId==="string"?Z.conversationId:"",iteration:typeof Z.iteration==="number"?Z.iteration:0,metadata:Z.metadata&&typeof Z.metadata==="object"&&!Array.isArray(Z.metadata)?Z.metadata:void 0}}function c$($,Z,Q){$.manifest.push(Z),$.handlers.set(Z.capabilityName,Q)}function nB($,Z){let Q={manifest:[],handlers:new Map};for(let J of Object.keys(Z.toolExecutors??{}).filter(jE)){let X=Z.toolExecutors?.[J];if(typeof X!=="function")continue;c$(Q,{kind:"toolExecutor",executor:J,capabilityName:`${XE}${J}`},async({payload:Y,abortSignal:j})=>{let V=Array.isArray(Y.args)?[...Y.args]:[],B={...iB(Y.context),signal:j};return{result:await X(...V,B)}})}for(let J of $?.extraTools??[])c$(Q,{kind:"tool",name:J.name,description:J.description,inputSchema:x2(J.inputSchema)??{},...J.lifecycle?{lifecycle:x2(J.lifecycle)}:{},capabilityName:`${QE}${J.name}`},async({payload:X,abortSignal:Y,progress:j})=>{let V={...iB(X.context),signal:Y};return{result:await J.execute(X.input,{...V,emitUpdate:(H)=>{j({update:H})}})}});let W=$?.hooks;if(W)for(let J of VE){let X=W[J];if(typeof X!=="function")continue;c$(Q,{kind:"hook",name:J,capabilityName:`${WE}${J}`},async({payload:Y})=>({control:await X(Y.context)}))}if($?.compaction?.compact){let J=$.compaction.compact;c$(Q,{kind:"compaction",capabilityName:ZE,config:pB($.compaction)},async({payload:X})=>({result:await J(X.context)}))}if($?.checkpoint?.createCheckpoint){let J=$.checkpoint.createCheckpoint;c$(Q,{kind:"checkpoint",capabilityName:$E,config:pB($.checkpoint)},async({payload:X})=>({result:await J(X.context)}))}if($?.onConsecutiveMistakeLimitReached){let J=$.onConsecutiveMistakeLimitReached;c$(Q,{kind:"mistakeLimit",capabilityName:JE},async({payload:X})=>({result:await J(X.context)}))}if($?.userInstructionService){let J=$.userInstructionService;c$(Q,{kind:"userInstructionService",capabilityName:YE},async()=>{return await J.start().catch(()=>{}),{snapshot:{records:{skill:J.listRecords("skill"),rule:J.listRecords("rule"),workflow:J.listRecords("workflow")},runtimeCommands:J.listRuntimeCommands()}}})}return Q}function tB($){if(typeof $==="string"&&$.trim())return $.trim();if($ instanceof Error)return $.message.trim()||void 0;if($&&typeof $==="object"&&"message"in $){let Z=$.message;if(typeof Z==="string"&&Z.trim())return Z.trim()}return}function BE($){return tB($)??"Capability request was cancelled."}function HE($){if(typeof $!=="string")return $;try{return JSON.parse($)}catch{return $}}function GE($){return $==="completed"||$==="max_iterations"||$==="aborted"||$==="mistake_limit"||$==="error"}function KE($){if(!$||typeof $!=="object"||Array.isArray($))return;let Z=$,Q=typeof Z.inputTokens==="number"?Z.inputTokens:void 0,W=typeof Z.outputTokens==="number"?Z.outputTokens:void 0;if(Q===void 0||W===void 0)return;return{inputTokens:Q,outputTokens:W,cacheReadTokens:typeof Z.cacheReadTokens==="number"?Z.cacheReadTokens:0,cacheWriteTokens:typeof Z.cacheWriteTokens==="number"?Z.cacheWriteTokens:0,totalCost:typeof Z.totalCost==="number"?Z.totalCost:0}}function aB($){if(!$)return;return{inputTokens:typeof $.inputTokens==="number"?$.inputTokens:0,outputTokens:typeof $.outputTokens==="number"?$.outputTokens:0,cacheReadTokens:typeof $.cacheReadTokens==="number"?$.cacheReadTokens:0,cacheWriteTokens:typeof $.cacheWriteTokens==="number"?$.cacheWriteTokens:0,totalCost:typeof $.totalCost==="number"?$.totalCost:0}}function o7($){return typeof $==="number"&&Number.isFinite($)?$:void 0}function e1($,Z){return o7($?.[Z])??0}function FE($){let Z=$?.delta&&typeof $.delta==="object"?$.delta:void 0,Q=$?.totals&&typeof $.totals==="object"?$.totals:void 0,W=$?.agent&&typeof $.agent==="object"?$.agent:void 0,J=W?.teamRole==="teammate"||W?.teamRole==="lead"?W.teamRole:void 0;return{event:{type:"usage",agentId:typeof W?.agentId==="string"?W.agentId:void 0,conversationId:typeof W?.conversationId==="string"?W.conversationId:void 0,parentAgentId:typeof W?.parentAgentId==="string"?W.parentAgentId:void 0,inputTokens:e1(Z,"inputTokens"),outputTokens:e1(Z,"outputTokens"),cacheReadTokens:e1(Z,"cacheReadTokens"),cacheWriteTokens:e1(Z,"cacheWriteTokens"),cost:o7(Z?.totalCost),totalInputTokens:e1(Q,"inputTokens"),totalOutputTokens:e1(Q,"outputTokens"),totalCacheReadTokens:e1(Q,"cacheReadTokens"),totalCacheWriteTokens:e1(Q,"cacheWriteTokens"),totalCost:o7(Q?.totalCost)},teamAgentId:typeof W?.teamAgentId==="string"?W.teamAgentId:void 0,teamRole:J}}function AE($){let Z=$?.result&&typeof $.result==="object"&&!Array.isArray($.result)?$.result:void 0,Q=$?.reason??Z?.finishReason,W=GE(Q)?Q:Q==="failed"?"error":"completed",J=KE($?.usage??Z?.usage);return{type:"done",reason:W,text:typeof $?.text==="string"?$.text:typeof Z?.text==="string"?Z.text:"",iterations:typeof $?.iterations==="number"?$.iterations:typeof Z?.iterations==="number"?Z.iterations:0,usage:J}}function C5($,Z){return $.error?.message??`hub command failed: ${Z}`}function Y4($){switch($){case"idle":case"completed":return"completed";case"failed":return"failed";case"aborted":return"cancelled";default:return"running"}}function eB($){let Z=$.metadata&&typeof $.metadata==="object"?JSON.parse(JSON.stringify($.metadata)):void 0;return{sessionId:$.sessionId,parentSessionId:typeof Z?.parentSessionId==="string"?Z.parentSessionId:void 0,agentId:$.runtimeSession?.agentId||(typeof Z?.agentId==="string"?Z.agentId:void 0),parentAgentId:typeof Z?.parentAgentId==="string"?Z.parentAgentId:void 0,conversationId:typeof Z?.conversationId==="string"?Z.conversationId:void 0,isSubagent:typeof Z?.isSubagent==="boolean"?Z.isSubagent:!1,source:typeof Z?.source==="string"?Z.source:T0.CORE,pid:typeof Z?.pid==="number"?Z.pid:void 0,startedAt:new Date($.createdAt).toISOString(),endedAt:Y4($.status)==="running"?void 0:new Date($.updatedAt).toISOString(),exitCode:Y4($.status)==="completed"?0:Y4($.status)==="failed"?1:void 0,status:Y4($.status),interactive:Z?.interactive===!0,provider:typeof Z?.provider==="string"?Z.provider:"hub",model:typeof Z?.model==="string"?Z.model:"hub",cwd:$.cwd?.trim()||$.workspaceRoot,workspaceRoot:$.workspaceRoot,teamName:typeof Z?.teamName==="string"?Z.teamName:void 0,enableTools:$.runtimeOptions?.enableTools??Z?.enableTools===!0,enableSpawn:$.runtimeOptions?.enableSpawn??Z?.enableSpawn===!0,enableTeams:$.runtimeOptions?.enableTeams??Z?.enableTeams===!0,prompt:typeof Z?.prompt==="string"?Z.prompt:void 0,metadata:Z,updatedAt:new Date($.updatedAt).toISOString(),messagesPath:typeof Z?.messagesPath==="string"?Z.messagesPath:void 0,hookPath:typeof Z?.hookPath==="string"?Z.hookPath:void 0}}function $$($){if(!$||typeof $!=="object"||Array.isArray($))return;let Z=$;return Z.version===1&&typeof Z.sessionId==="string"?JSON.parse(JSON.stringify(Z)):void 0}function fE($){let Z=$$($?.snapshot);if(Z)return s7(Z);let Q=$?.session;return Q?eB(Q):void 0}function sB($,Z,Q){let W=Q?.workspaceRoot?.trim()||Z.config.workspaceRoot||Z.config.cwd;return N0.parse({version:1,session_id:$,source:Z.source??T0.CORE,pid:process.pid,started_at:new Date(Q?.createdAt??Date.now()).toISOString(),status:Y4(Q?.status),interactive:Z.interactive===!0,provider:Z.config.providerId,model:Z.config.modelId,cwd:Q?.cwd?.trim()||Z.config.cwd,workspace_root:W,team_name:Z.config.teamName,enable_tools:Z.config.enableTools,enable_spawn:Z.config.enableSpawnAgent,enable_teams:Z.config.enableAgentTeams,prompt:Z.prompt?.trim()||void 0,metadata:Z.sessionMetadata&&Object.keys(Z.sessionMetadata).length>0?Z.sessionMetadata:void 0})}function oB($,Z){return N0.parse({version:1,session_id:$.sessionId,source:$.source,pid:process.pid,started_at:$.createdAt,status:$.status,interactive:$.interactive,provider:$.model.providerId,model:$.model.modelId,cwd:$.workspace.cwd,workspace_root:$.workspace.root,team_name:$.team?.name,enable_tools:$.capabilities.enableTools,enable_spawn:$.capabilities.enableSpawn,enable_teams:$.capabilities.enableTeams,prompt:($.prompt??Z.prompt?.trim())||void 0,metadata:$.metadata,messages_path:$.artifacts?.messagesPath})}class u${runtimeAddress;pendingPrompts;client;clientOptions;clientContext;events=new $4;sessionCapabilities=new Map;sessionClientContributionHandlers=new Map;sessionSubscriptions=new Map;pendingApprovalToolCallIds=new Set;agentDoneEmittedForCurrentRunBySession=new Set;activeCapabilityAbortControllers=new Map;defaultCapabilities;telemetry;constructor($,Z){this.clientContext=Z,this.clientOptions={authToken:$.authToken,clientType:$.clientType??"core-hub-runtime",displayName:$.displayName??"core hub runtime",workspaceRoot:Z?.workspaceRoot,cwd:Z?.cwd},this.defaultCapabilities=q0($.capabilities)??{},this.telemetry=$.telemetry,this.runtimeAddress=$.url,this.pendingPrompts={list:(Q)=>this.requestPendingPromptsList(Q),update:(Q)=>this.requestPendingPromptUpdate(Q),delete:(Q)=>this.requestPendingPromptDelete(Q)},this.client=this.createClient($.url)}createClient($){return new z1({...this.clientOptions,url:$})}async replaceClient($){let Z=this.client;this.client=this.createClient($),this.runtimeAddress=$,await Promise.resolve(Z.dispose()).catch(()=>{return})}async recoverLocalHubStartupDeadlock($){if(!vB($,"session.create"))return!1;let Z=await uB({url:this.client.getUrl(),workspaceRoot:this.clientContext?.workspaceRoot,cwd:this.clientContext?.cwd}).catch(()=>{return});if(!Z)return!1;return await this.replaceClient(Z),!0}registerPlannedSession($,Z,Q){if(this.sessionCapabilities.set($,Z),Q.size>0)this.sessionClientContributionHandlers.set($,Q);this.ensureSessionSubscription($)}cleanupPlannedSession($){this.sessionCapabilities.delete($),this.sessionClientContributionHandlers.delete($),this.disposeSessionSubscription($)}async connect(){await this.client.connect()}async startSession($){let Z=this.resolveCapabilities($),Q=nB($.localRuntime,Z),W=$.config.sessionId?.trim()||lB(),J=()=>this.client.command("session.create",{workspaceRoot:$.config.workspaceRoot?.trim()||$.config.cwd,cwd:$.config.cwd,sessionConfig:x2({...$.config,sessionId:W}),metadata:{...$.sessionMetadata??{},source:$.source??T0.CORE,provider:$.config.providerId,model:$.config.modelId,enableTools:$.config.enableTools,enableSpawn:$.config.enableSpawnAgent,enableTeams:$.config.enableAgentTeams,teamName:$.config.teamName,prompt:$.prompt,interactive:$.interactive===!0},runtimeOptions:{...Q.manifest.length>0?{clientContributions:Q.manifest}:{},...$.localRuntime?.configExtensions?{configExtensions:$.localRuntime.configExtensions}:{}},toolPolicies:x2($.toolPolicies),initialMessages:$.initialMessages});this.registerPlannedSession(W,Z,Q.handlers);let X;try{X=await J()}catch(B){if(this.cleanupPlannedSession(W),await this.recoverLocalHubStartupDeadlock(B)){this.registerPlannedSession(W,Z,Q.handlers);try{X=await J()}catch(H){throw this.cleanupPlannedSession(W),H}}else throw B}let Y=$$(X.payload?.snapshot),j=X.payload?.session,V=(Y?.sessionId??j?.sessionId)?.trim();if(!V)throw this.cleanupPlannedSession(W),Error("Hub runtime did not return a session id.");if(V!==W)this.cleanupPlannedSession(W),this.registerPlannedSession(V,Z,Q.handlers);return{sessionId:V,manifest:Y?oB(Y,$):sB(V,$,j),manifestPath:"",messagesPath:"",result:void 0}}async restoreSession($){let Z=$.sessionId.trim();if(!Z)throw Error("sessionId is required");let Q=$.restore?.messages!==!1;if(Q&&!$.start)throw Error("start is required when restore.messages is true");let W=$.start,J=W?this.resolveCapabilities(W):void 0,X=W?nB(W.localRuntime,J??{}):{manifest:[],handlers:new Map},Y=W?W.config.sessionId?.trim()||lB():void 0;if(Y&&J)this.sessionCapabilities.set(Y,J);if(Y&&X.handlers.size>0)this.sessionClientContributionHandlers.set(Y,X.handlers),this.ensureSessionSubscription(Y);let j;try{j=await this.client.command("session.restore",{sessionId:Z,checkpointRunCount:$.checkpointRunCount,restore:$.restore,...W?{workspaceRoot:W.config.workspaceRoot?.trim()||W.config.cwd,cwd:W.config.cwd??$.cwd,sessionConfig:x2({...W.config,sessionId:Y}),metadata:{...W.sessionMetadata??{},source:W.source??T0.CORE,provider:W.config.providerId,model:W.config.modelId,enableTools:W.config.enableTools,enableSpawn:W.config.enableSpawnAgent,enableTeams:W.config.enableAgentTeams,teamName:W.config.teamName,prompt:W.prompt,interactive:W.interactive===!0},runtimeOptions:{...X.manifest.length>0?{clientContributions:X.manifest}:{},...W.localRuntime?.configExtensions?{configExtensions:W.localRuntime.configExtensions}:{}},toolPolicies:x2(W.toolPolicies)}:{}},Z)}catch(F){if(Y)this.sessionCapabilities.delete(Y),this.sessionClientContributionHandlers.delete(Y),this.disposeSessionSubscription(Y);throw F}if(!j.ok){let F=typeof j.payload?.error==="string"?j.payload.error:"session.restore failed";if(Y)this.sessionCapabilities.delete(Y),this.sessionClientContributionHandlers.delete(Y),this.disposeSessionSubscription(Y);throw Error(F)}let V=$$(j.payload?.snapshot),B=j.payload?.session,H=(V?.sessionId??B?.sessionId)?.trim();if(Q&&!H){if(Y)this.sessionCapabilities.delete(Y),this.sessionClientContributionHandlers.delete(Y),this.disposeSessionSubscription(Y);throw Error("Hub checkpoint restore returned no session id")}if(H&&Y&&H!==Y)this.sessionCapabilities.delete(Y),this.sessionClientContributionHandlers.delete(Y),this.disposeSessionSubscription(Y);if(H&&J)this.sessionCapabilities.set(H,J);if(H&&X.handlers.size>0)this.sessionClientContributionHandlers.set(H,X.handlers);if(H)this.ensureSessionSubscription(H);let G=Array.isArray(j.payload?.messages)?j.payload.messages:void 0,K=j.payload?.checkpoint;if(!K)throw Error("Hub checkpoint restore returned no checkpoint");return{sessionId:H,startResult:H?{sessionId:H,manifest:V?oB(V,W??{}):sB(H,W??{},B),manifestPath:"",messagesPath:"",result:void 0}:void 0,messages:G,checkpoint:K}}async runTurn($){return this.ensureSessionSubscription($.sessionId),(await this.client.command("run.start",{sessionId:$.sessionId,input:$.prompt,mode:$.mode,attachments:($.userImages?.length??0)>0||($.userFiles?.length??0)>0?{...$.userImages?.length?{userImages:$.userImages}:{},...$.userFiles?.length?{userFiles:$.userFiles}:{}}:void 0,delivery:$.delivery,timeoutMs:$.timeoutMs},$.sessionId,{timeoutMs:null})).payload?.result}async requestPendingPromptsList($){this.ensureSessionSubscription($.sessionId);let Z=await this.client.command("session.pending_prompts",{sessionId:$.sessionId},$.sessionId);return Array.isArray(Z.payload?.prompts)?Z.payload.prompts:[]}async requestPendingPromptUpdate($){this.ensureSessionSubscription($.sessionId);let Z=await this.client.command("session.update_pending_prompt",{...$},$.sessionId);return{sessionId:$.sessionId,prompts:Array.isArray(Z.payload?.prompts)?Z.payload.prompts:[],prompt:Z.payload?.prompt,updated:Z.payload?.updated===!0}}async requestPendingPromptDelete($){this.ensureSessionSubscription($.sessionId);let Z=await this.client.command("session.remove_pending_prompt",{...$},$.sessionId);return{sessionId:$.sessionId,prompts:Array.isArray(Z.payload?.prompts)?Z.payload.prompts:[],prompt:Z.payload?.prompt,removed:Z.payload?.removed===!0}}async getAccumulatedUsage($){let Z=await this.client.command("session.get",{includeSnapshot:!0},$),Q=$$(Z.payload?.snapshot);if(Q){let Y=Q.usage?{...Q.usage}:void 0,j=Q.aggregateUsage?{...Q.aggregateUsage}:void 0;return Y||j?{usage:Y,aggregateUsage:j}:void 0}let W=Z.payload?.session,J=aB(W?.usage),X=aB(W?.aggregateUsage);return J||X?{usage:J,aggregateUsage:X}:void 0}async abort($,Z){await this.client.command("run.abort",{sessionId:$,reason:tB(Z)},$)}async stopSession($){this.sessionCapabilities.delete($),this.disposeSessionSubscription($),await this.client.command("session.detach",{sessionId:$},$)}async dispose(){for(let[$,Z]of this.sessionSubscriptions){Z();try{await this.client.command("session.detach",{sessionId:$},$)}catch{}}this.sessionSubscriptions.clear(),this.sessionCapabilities.clear(),this.agentDoneEmittedForCurrentRunBySession.clear();for(let $ of this.activeCapabilityAbortControllers.values())$.abort("Hub runtime host disposed.");this.activeCapabilityAbortControllers.clear(),await this.client.dispose()}async getSession($){let Z;try{Z=await this.client.command("session.get",void 0,$)}catch(Q){if(S$(Q))return;throw Q}return fE(Z.payload)}async listSessions($=100){let Z=await this.client.command("session.list",{limit:$}),Q=Array.isArray(Z.payload?.snapshots)?Z.payload.snapshots.flatMap((J)=>{let X=$$(J);return X?[s7(X)]:[]}):[];if(Q.length>0)return Q;return(Z.payload?.sessions??[]).map(eB)}async listSettings($){let Z=await this.client.command("settings.list",rB($));if(!Z.ok)throw Error(C5(Z,"settings.list"));return Z.payload?.snapshot}async toggleSetting($){let Z=await this.client.command("settings.toggle",rB($));if(!Z.ok)throw Error(C5(Z,"settings.toggle"));return{snapshot:Z.payload?.snapshot,changedTypes:Array.isArray(Z.payload?.changedTypes)?Z.payload.changedTypes:[]}}async deleteSession($){return this.sessionCapabilities.delete($),this.disposeSessionSubscription($),(await this.client.command("session.delete",{sessionId:$})).payload?.deleted===!0}async updateSession($,Z){let Q={...Z.metadata??{}};if(typeof Z.prompt==="string")Q.prompt=Z.prompt;if(typeof Z.title==="string")Q.title=Z.title;return{updated:(await this.client.command("session.update",{sessionId:$,metadata:Q})).ok}}async readSessionMessages($){let Z=$.trim();if(!Z)return[];let Q=await this.client.command("session.messages",{sessionId:Z},Z);if(!Q.ok)throw dB(this.telemetry,{component:"core",operation:"hub.runtime_host.read_session_messages",error:Error(C5(Q,"session.messages")),severity:Q.error?.code==="session_not_found"?"warn":"error",handled:!0,context:{command:"session.messages",sessionId:Z,errorCode:Q.error?.code,runtimeAddress:this.runtimeAddress}}),Error(C5(Q,"session.messages"));let W=Q.payload?.messages;return Array.isArray(W)?W:[]}async dispatchHookEvent($){await this.client.command("session.hook",{payload:$})}subscribe($,Z){return this.events.subscribe($,Z)}ensureSessionSubscription($){let Z=$.trim();if(!Z||this.sessionSubscriptions.has(Z))return;let Q=this.client.subscribe((W)=>{this.handleHubEvent(W)},{sessionId:Z});this.sessionSubscriptions.set(Z,typeof Q==="function"?Q:()=>{})}disposeSessionSubscription($){let Z=$.trim();if(!Z)return;this.sessionSubscriptions.get(Z)?.(),this.sessionSubscriptions.delete(Z),this.agentDoneEmittedForCurrentRunBySession.delete(Z)}resolveCapabilities($){return q0(this.defaultCapabilities,$.capabilities)??{}}emitToolCallContentStart($){this.events.emit({type:"agent_event",payload:{sessionId:$.sessionId,event:{type:"content_start",contentType:"tool",toolCallId:$.toolCallId,toolName:$.toolName,input:$.toolInput}}})}emitAgentDoneIfNeeded($){if(this.agentDoneEmittedForCurrentRunBySession.has($.sessionId))return;this.agentDoneEmittedForCurrentRunBySession.add($.sessionId),this.events.emit({type:"agent_event",payload:{sessionId:$.sessionId,event:AE($.payload)}})}handleHubEvent($){let Z=$.sessionId?.trim();if($.event==="capability.requested"){this.handleCapabilityRequest($).catch((Q)=>{this.captureDetachedHubEventError("hub.runtime_host.capability_request",Q,$)});return}if($.event==="capability.resolved"){this.handleCapabilityResolved($);return}if($.event==="approval.requested"){this.handleApprovalRequested($).catch((Q)=>{this.captureDetachedHubEventError("hub.runtime_host.approval_request",Q,$)});return}if(!Z)return;switch($.event){case"run.started":{this.agentDoneEmittedForCurrentRunBySession.delete(Z);let Q=$$($.payload?.snapshot),W=$.payload?.session;if(Q)this.events.emit({type:"session_snapshot",payload:{sessionId:Z,snapshot:Q}});this.events.emit({type:"status",payload:{sessionId:Z,status:W?.status??"running"}});return}case"iteration.started":{this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"iteration_start",iteration:typeof $.payload?.iteration==="number"?$.payload.iteration:0}}});return}case"iteration.finished":{this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"iteration_end",iteration:typeof $.payload?.iteration==="number"?$.payload.iteration:0,hadToolCalls:$.payload?.hadToolCalls===!0,toolCallCount:typeof $.payload?.toolCallCount==="number"?$.payload.toolCallCount:0}}});return}case"assistant.delta":{let Q=typeof $.payload?.text==="string"?$.payload.text:"";if(!Q)return;this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"content_start",contentType:"text",text:Q}}});return}case"assistant.finished":{this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"content_end",contentType:"text",text:typeof $.payload?.text==="string"?$.payload.text:void 0}}});return}case"reasoning.delta":{let Q=typeof $.payload?.text==="string"?$.payload.text:"",W=$.payload?.redacted===!0;if(!Q&&!W)return;this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"content_start",contentType:"reasoning",reasoning:Q,redacted:W}}});return}case"reasoning.finished":{this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"content_end",contentType:"reasoning",reasoning:typeof $.payload?.reasoning==="string"?$.payload.reasoning:void 0}}});return}case"agent.done":{this.emitAgentDoneIfNeeded({sessionId:Z,payload:$.payload});return}case"usage.updated":{let Q=FE($.payload);this.events.emit({type:"agent_event",payload:{sessionId:Z,event:Q.event,teamAgentId:Q.teamAgentId,teamRole:Q.teamRole}});return}case"tool.started":{let Q=typeof $.payload?.toolCallId==="string"?$.payload.toolCallId:void 0;if(Q&&this.pendingApprovalToolCallIds.delete(Q))return;this.emitToolCallContentStart({sessionId:Z,toolCallId:Q,toolName:typeof $.payload?.toolName==="string"?$.payload.toolName:void 0,toolInput:$.payload?.input});return}case"tool.finished":{let Q=typeof $.payload?.toolCallId==="string"?$.payload.toolCallId:void 0;if(Q)this.pendingApprovalToolCallIds.delete(Q);this.events.emit({type:"agent_event",payload:{sessionId:Z,event:{type:"content_end",contentType:"tool",toolCallId:Q,toolName:typeof $.payload?.toolName==="string"?$.payload.toolName:void 0,output:$.payload?.output,error:typeof $.payload?.error==="string"?$.payload.error:void 0}}});return}case"session.created":case"session.updated":case"session.attached":case"session.detached":{let Q=$$($.payload?.snapshot),W=$.payload?.session;if(Q)this.events.emit({type:"session_snapshot",payload:{sessionId:Z,snapshot:Q}});this.events.emit({type:"status",payload:{sessionId:Z,status:W?.status??"running"}});return}case"session.pending_prompts":{this.events.emit({type:"pending_prompts",payload:{sessionId:Z,prompts:Array.isArray($.payload?.prompts)?$.payload.prompts:[]}});return}case"session.pending_prompt_submitted":{let Q=$.payload?.prompt;if(!Q)return;this.events.emit({type:"pending_prompt_submitted",payload:{sessionId:Z,id:Q.id,prompt:Q.prompt,delivery:Q.delivery,attachmentCount:Q.attachmentCount,userImages:Q.userImages,userFiles:Q.userFiles}});return}case"run.completed":case"run.failed":case"run.aborted":{let Q=$$($.payload?.snapshot),W=typeof $.payload?.reason==="string"?$.payload.reason:$.event==="run.aborted"?"aborted":$.event==="run.failed"?"error":"completed";if(this.emitAgentDoneIfNeeded({sessionId:Z,payload:{...$.payload,reason:W}}),Q?.interactive===!0&&j0(Q.status))return;this.events.emit({type:"ended",payload:{sessionId:Z,reason:W,ts:$.timestamp??Date.now()}});return}default:return}}captureDetachedHubEventError($,Z,Q){try{dB(this.telemetry,{component:"core",operation:$,error:Z,severity:"warn",handled:!0,context:{event:Q.event,sessionId:Q.sessionId,runtimeAddress:this.runtimeAddress}})}catch{}}async handleCapabilityRequest($){let Z=$.sessionId?.trim();if(!Z)return;let Q=typeof $.payload?.targetClientId==="string"?$.payload.targetClientId:void 0;if(Q&&Q!==this.client.getClientId())return;let W=typeof $.payload?.requestId==="string"?$.payload.requestId:"",J=typeof $.payload?.capabilityName==="string"?$.payload.capabilityName:"";if(!W)return;let X=this.sessionClientContributionHandlers.get(Z)?.get(J);if(!X){await this.client.command("capability.respond",{requestId:W,ok:!1,error:`No client contribution handler registered for capability ${J} in session ${Z}.`},Z).catch(()=>{});return}let Y=$.payload?.payload&&typeof $.payload.payload==="object"&&!Array.isArray($.payload.payload)?$.payload.payload:{},j=new AbortController;this.activeCapabilityAbortControllers.set(W,j);let V=(B)=>{this.client.command("capability.progress",{requestId:W,payload:B},Z).catch((H)=>{this.captureDetachedHubEventError("hub.runtime_host.capability_progress",H,$)})};try{let B=await X({payload:Y,abortSignal:j.signal,progress:V});if(j.signal.aborted)return;await this.client.command("capability.respond",{requestId:W,ok:!0,payload:B},Z)}catch(B){if(j.signal.aborted)return;await this.client.command("capability.respond",{requestId:W,ok:!1,error:B instanceof Error?B.message:String(B)},Z)}finally{this.activeCapabilityAbortControllers.delete(W)}}handleCapabilityResolved($){if($.payload?.cancelled!==!0)return;let Z=typeof $.payload.requestId==="string"?$.payload.requestId.trim():"";if(!Z)return;let Q=this.activeCapabilityAbortControllers.get(Z);if(!Q)return;Q.abort(BE($.payload.error))}async handleApprovalRequested($){let Z=$.sessionId?.trim();if(!Z)return;let Q=this.sessionCapabilities.get(Z)?.requestToolApproval??this.defaultCapabilities.requestToolApproval;if(!Q)return;let W=typeof $.payload?.approvalId==="string"?$.payload.approvalId.trim():"",J=typeof $.payload?.toolCallId==="string"?$.payload.toolCallId:"",X=typeof $.payload?.toolName==="string"?$.payload.toolName:"";if(!W||!J||!X)return;let Y=$.payload?.policy&&typeof $.payload.policy==="object"&&!Array.isArray($.payload.policy)?$.payload.policy:{autoApprove:!1},j=HE($.payload?.inputJson);this.pendingApprovalToolCallIds.add(J),this.emitToolCallContentStart({sessionId:Z,toolCallId:J,toolName:X,toolInput:j});let V=await Promise.resolve(Q({sessionId:Z,agentId:typeof $.payload?.agentId==="string"?$.payload.agentId:"",conversationId:typeof $.payload?.conversationId==="string"?$.payload.conversationId:Z,iteration:typeof $.payload?.iteration==="number"?$.payload.iteration:0,toolCallId:J,toolName:X,input:j,policy:Y})).catch((B)=>({approved:!1,reason:B instanceof Error?B.message:`Tool approval request failed: ${String(B)}`}));await this.client.command("approval.respond",{approvalId:W,approved:V.approved,reason:V.reason},Z).catch(()=>{})}}class w5 extends u${constructor($){super({url:I2($.endpoint),authToken:$.authToken,clientType:$.clientType??"core-remote-runtime",displayName:$.displayName??"core remote runtime",capabilities:$.capabilities},{workspaceRoot:$.workspaceRoot,cwd:$.cwd})}}import{existsSync as UE,mkdirSync as DE}from"node:fs";import{join as LE}from"node:path";import{asBool as j4,asOptionalString as Q1,asString as T1,ensureSessionSchema as _E,loadSqliteDb as zE,nowIso as P5,toBoolInt as V4}from"@cline/shared/db";import{resolveDbDataDir as TE}from"@cline/shared/storage";class Z${sessionsDirPath;db;constructor($={}){this.sessionsDirPath=$.sessionsDir??TE()}init(){this.getRawDb()}ensureSessionsDir(){if(!UE(this.sessionsDirPath))DE(this.sessionsDirPath,{recursive:!0});return this.sessionsDirPath}sessionDbPath(){return LE(this.ensureSessionsDir(),"sessions.db")}getRawDb(){if(this.db)return this.db;let $=zE(this.sessionDbPath());return _E($,{includeLegacyMigrations:!0}),this.db=$,$}close(){this.db?.close?.(),this.db=void 0}run($,Z=[]){return this.getRawDb().prepare($).run(...Z)}queryOne($,Z=[]){return this.getRawDb().prepare($).get(...Z)??void 0}queryAll($,Z=[]){return this.getRawDb().prepare($).all(...Z)}create($){let Z=P5();this.run(`INSERT OR REPLACE INTO sessions (
|
|
459
459
|
session_id, source, pid, started_at, ended_at, exit_code, status, status_lock, interactive,
|
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.58
|
|
4
|
+
"version": "0.0.58",
|
|
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.58
|
|
52
|
-
"@cline/shared": "0.0.58
|
|
53
|
-
"@cline/llms": "0.0.58
|
|
51
|
+
"@cline/agents": "0.0.58",
|
|
52
|
+
"@cline/shared": "0.0.58",
|
|
53
|
+
"@cline/llms": "0.0.58",
|
|
54
54
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
55
55
|
"@opentelemetry/api": "^1.9.0",
|
|
56
56
|
"@opentelemetry/api-logs": "^0.214.0",
|