@cline/shared 0.0.83 → 0.0.84

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/agent.d.ts CHANGED
@@ -142,6 +142,8 @@ export interface AgentToolContext {
142
142
  emitUpdate?: (update: unknown) => void;
143
143
  }
144
144
  export interface AgentTool<TInput = unknown, TOutput = unknown> extends AgentToolDefinition {
145
+ /** Override the runtime execution mode. Adjacent parallel calls may overlap; sequential calls form ordering boundaries. */
146
+ executionMode?: "sequential" | "parallel";
145
147
  timeoutMs?: number;
146
148
  retryable?: boolean;
147
149
  maxRetries?: number;
@@ -176,6 +178,13 @@ export interface AgentRuntimePrepareTurnContext {
176
178
  * compaction rather than trust its token estimates.
177
179
  */
178
180
  overflowRecovery?: boolean;
181
+ /**
182
+ * Input tokens the provider actually counted for the previous request this
183
+ * run, when available. Compaction uses it as a floor on its char-based
184
+ * estimate, which under-counts dense content (disassembly, image dumps) and
185
+ * can otherwise let the real context grow past the window without triggering.
186
+ */
187
+ previousRequestInputTokens?: number;
179
188
  emitStatusNotice?: (message: string, metadata?: Record<string, unknown>) => void;
180
189
  }
181
190
  export interface AgentRuntimePrepareTurnResult {
@@ -232,6 +241,8 @@ export type AgentModelEvent = {
232
241
  } | {
233
242
  type: "finish";
234
243
  reason: AgentModelFinishReason;
244
+ /** HTTP X-Request-ID of the surfaced response, not the provider's generation ID. */
245
+ requestId?: string;
235
246
  error?: string;
236
247
  errorClass?: ProviderErrorClass;
237
248
  /**
@@ -263,6 +274,17 @@ export interface AgentStopControl {
263
274
  stop?: boolean;
264
275
  reason?: string;
265
276
  }
277
+ export interface AgentRunStartResult {
278
+ stop?: boolean;
279
+ reason?: string;
280
+ /**
281
+ * Text to inject into the conversation as hook context (e.g. a hook's
282
+ * `contextModification`). Collected across hooks and appended after the
283
+ * run's input messages as a `<hook_context>` user message, so the model
284
+ * sees it on the run's first request.
285
+ */
286
+ appendContext?: string;
287
+ }
266
288
  export interface AgentBeforeModelResult {
267
289
  stop?: boolean;
268
290
  reason?: string;
@@ -274,6 +296,8 @@ export interface AgentAfterModelContext {
274
296
  snapshot: AgentRuntimeStateSnapshot;
275
297
  assistantMessage: AgentMessage;
276
298
  finishReason: AgentModelFinishReason;
299
+ /** HTTP X-Request-ID when exposed by the model adapter; hidden retry IDs are not included. */
300
+ requestId?: string;
277
301
  }
278
302
  export interface AgentBeforeToolContext {
279
303
  snapshot: AgentRuntimeStateSnapshot;
@@ -324,7 +348,7 @@ export interface AgentRunLifecycleContext {
324
348
  * 7-callback hook bag consumed by `AgentRuntime`.
325
349
  */
326
350
  export interface AgentRuntimeHooks {
327
- beforeRun?: (context: AgentRunLifecycleContext) => AgentStopControl | undefined | Promise<AgentStopControl | undefined>;
351
+ beforeRun?: (context: AgentRunLifecycleContext) => AgentRunStartResult | undefined | Promise<AgentRunStartResult | undefined>;
328
352
  afterRun?: (context: AgentRunLifecycleContext & {
329
353
  result: AgentRunResult;
330
354
  }) => void | Promise<void>;
@@ -488,6 +488,13 @@ export interface AgentPrepareTurnContext {
488
488
  * compaction rather than trust its token estimates.
489
489
  */
490
490
  overflowRecovery?: boolean;
491
+ /**
492
+ * Input tokens the provider actually counted for the previous request this
493
+ * run, when available. Compaction uses it as a floor on its own char-based
494
+ * estimate, which under-counts dense content (disassembly, pixel dumps) and
495
+ * can otherwise let the real context grow past the window without triggering.
496
+ */
497
+ previousRequestInputTokens?: number;
491
498
  emitStatusNotice?: (message: string, metadata?: Record<string, unknown>) => void;
492
499
  }
493
500
  export interface AgentPrepareTurnResult {
package/dist/db/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var GZ=Object.defineProperty;var YZ=(Z)=>Z;function OZ(Z,$){this[Z]=YZ.bind(null,$)}var z0=(Z,$)=>{for(var j in $)GZ(Z,j,{get:$[j],enumerable:!0,configurable:!0,set:OZ.bind($,j)})};import{existsSync as j0,readFileSync as X0,renameSync as K0}from"node:fs";import{appendFileSync as LZ,existsSync as U,mkdirSync as y,readdirSync as BZ,readFileSync as n,statSync as N}from"node:fs";import{homedir as JZ}from"node:os";import{basename as MZ,dirname as D,extname as qZ,isAbsolute as NZ,join as Q,relative as AZ,resolve as O}from"node:path";var E="workspaces",R="chat";function HZ(Z){let $=Z.trim(),j=/^[A-Za-z]:[\\/]/.test($)||$.startsWith("\\\\"),X=$.startsWith("/");if(!j&&!X)return!1;let K=$.split(j?/[\\/]+/:/\/+/).filter(Boolean),V=K.at(-1)??"",W=K.at(-2)??"",z=K.at(-3)??"";return(K.at(-4)??"")===".cline"&&z==="data"&&W==="workspaces"&&V==="chat"}var u=".clinerules",I=".cline",S=".agents",TZ=S,r="agents",v="hooks",b="skills",s="rules",k="workflows",g="plugins",t="AGENTS.md",_Z="plugin.json";function L0(){return Q(G(),E,R)}var xZ="cline_mcp_settings.json",CZ="settings.json";function DZ(){let Z=process?.env?.HOME?.trim();if(Z&&Z!=="~")return Z;let $=process?.env?.USERPROFILE?.trim();if($)return $;let j=process?.env?.HOMEDRIVE?.trim(),X=process?.env?.HOMEPATH?.trim();if(j&&X)return`${j}${X}`;let K=JZ().trim();if(K&&K!=="~")return K;return"~"}var H=DZ(),a=!1;function B0(Z){let $=Z.trim();if(!$)return;H=$,a=!0}function J0(Z){if(a)return;let $=Z.trim();if(!$)return;H=$}var x,e=!1;function M0(Z){let $=Z.trim();if(!$)return;x=$,e=!0}function q0(Z){if(e)return;let $=Z.trim();if(!$)return;x=$}function F(){if(x)return x;let Z=process.env.CLINE_DIR?.trim();if(Z)return Z;return Q(H,".cline")}function IZ(){return Q(H,"Documents","Cline")}function f(Z){return Q(IZ(),Z)}function G(){let Z=process.env.CLINE_DATA_DIR?.trim();if(Z)return Z;return Q(F(),"data")}function N0(){let Z=process.env.CLINE_SESSION_DATA_DIR?.trim();if(Z)return Z;return Q(G(),"sessions")}function A0(){let Z=process.env.CLINE_TEAM_DATA_DIR?.trim();if(Z)return Z;return Q(G(),"teams")}function SZ(){let Z=process.env.CLINE_CONNECTOR_DATA_DIR?.trim();if(Z)return Z;return Q(G(),"connectors")}function T0(Z,$){let j=Z.replace(/[^a-zA-Z0-9._-]+/g,"_"),X=$.replace(/[^a-zA-Z0-9._-]+/g,"_");return Q(G(),"logs","connectors",j,`${X}.log`)}function ZZ(){let Z=process.env.CLINE_CONNECTOR_SETTINGS_PATH?.trim();if(Z)return Z;return Q(SZ(),CZ)}function w(){let Z=process.env.CLINE_DB_DATA_DIR?.trim();if(Z)return Z;return Q(G(),"db")}function $Z(){let Z=process.env.CLINE_CONNECTORS_DB_PATH?.trim();if(Z)return Z;return Q(w(),"connectors.db")}function _0(){let Z=process.env.CLINE_CRON_DB_PATH?.trim();if(Z)return Z;return Q(w(),"cron.db")}function x0(){let Z=process.env.CLINE_TASKS_DB_PATH?.trim();if(Z)return Z;return Q(w(),"tasks.db")}function C0(){return Q(F(),"schedules")}function fZ(){return Q(F(),"tasks")}function EZ(Z){let $=Z.trim();if(!$)throw Error("workspaceRoot is required for workspace task scope");return Q($,".cline","tasks")}function D0(Z){let $=Z.taskSpecsDir?.trim();if($)return $;if(Z.scope==="workspace")return EZ(Z.workspaceRoot??"");return fZ()}function RZ(){return Q(F(),"cron")}function o(Z){return Q(Z,".cline","cron")}function jZ(Z){if(typeof Z==="string")return o(Z);if(Z?.cronSpecsDir?.trim())return Z.cronSpecsDir.trim();if(Z?.scope==="workspace"){let $=Z.workspaceRoot?.trim();if(!$)throw Error("workspaceRoot is required for workspace cron scope");return o($)}return RZ()}function I0(Z){return Q(jZ(Z),"reports")}function S0(Z){return Q(jZ(Z),"events")}function f0(){let Z=process.env.CLINE_PROVIDER_SETTINGS_PATH?.trim();if(Z)return Z;return Q(G(),"settings","providers.json")}function E0(){let Z=process.env.CLINE_GLOBAL_SETTINGS_PATH?.trim();if(Z)return Z;return Q(G(),"settings","global-settings.json")}function R0(){let Z=process.env.CLINE_MCP_SETTINGS_PATH?.trim();if(Z)return Z;return Q(G(),"settings",xZ)}function A(Z){let $=new Set,j=[];for(let X of Z){if(!X||$.has(X))continue;$.add(X),j.push(X)}return j}function vZ(Z){if(!Z)return[];return[u,I,S].map(($)=>Q(Z,$,b))}function kZ(){return Q(F(),r)}function v0(Z){return A([Z?Q(Z,I,r):"",kZ()])}function k0(Z){let $=[f("Hooks"),Q(F(),v)];if(Z)$.push(Q(Z,u,v),Q(Z,I,v));return A($)}function b0(Z){return A([...vZ(Z),Q(F(),b),Q(H,S,b)])}function bZ(){return Q(H,S,t)}function g0(Z){let $=Z?[Q(Z,u),Q(Z,I,s)]:[],j=Z?[Q(Z,t)]:[];return A([...j,...$,bZ(),Q(F(),s),Q(H,"Cline","Rules"),f("Rules")])}function m0(Z){return A([Z?Q(Z,".clinerules",k):"",f("Workflows"),Q(F(),k),Z?Q(Z,".cline",k):""])}function y0(Z){return A([Z?Q(Z,".cline",g):"",Q(F(),g),f("Plugins")])}function u0(){return[Q(H,TZ,g)]}var XZ=new Set([".js",".ts"]),P="package.json",gZ=["index.ts","index.js"],mZ=new Set(["node_modules"]);function m(Z){try{return N(Q(Z,_Z)).isFile()}catch{return!1}}function C(Z){let $=Z.lastIndexOf(".");if($===-1)return!1;return XZ.has(Z.slice($))}function KZ(Z){try{let $=JSON.parse(n(Z,"utf8"));if(!$.cline||typeof $.cline!=="object")return null;return $.cline}catch{return null}}function QZ(Z){let $=Z?.plugins;if(!Array.isArray($))return[];return $.flatMap((j)=>j.paths??[])}function yZ(Z){let $=O(Z);if(!U($)||!N($).isDirectory())return null;if(m($))return null;let j=Q($,P);if(U(j)){let X=KZ(j),K=QZ(X).map((V)=>O($,V)).filter((V)=>U(V)&&N(V).isFile()&&C(V));if(K.length>0)return K}for(let X of gZ){let K=Q($,X);if(U(K)&&N(K).isFile())return[K]}return null}function uZ(Z){try{let $=JSON.parse(n(Z,"utf8"));return typeof $.name==="string"&&$.name.trim()?$.name.trim():void 0}catch{return}}function wZ(Z,$){let j=AZ(O(Z),O($));return j===""||!j.startsWith("..")&&!NZ(j)}function w0(Z,$){let j=D(Z),X=O($);while(wZ(X,j)){let K=Q(j,P);if(U(K)){let W=uZ(K);if(W)return W;break}let V=O(j,"..");if(V===j)break;j=V}return MZ(Z,qZ(Z))}function PZ(Z){let $=O(Z);if(!U($))return[];if(m($))return[];let j=[],X=[$];while(X.length>0){let K=X.pop();if(!K)continue;let V;try{V=BZ(K,{withFileTypes:!0})}catch{continue}for(let W of V){let z=Q(K,W.name);if(W.isDirectory()){if(m(z))continue;if(mZ.has(W.name)||W.name.startsWith("."))continue;let B=Q(z,P);if(U(B)){let J=KZ(B),i=QZ(J).map((T)=>O(z,T)).filter((T)=>U(T)&&N(T).isFile()&&C(T));if(i.length>0){j.push(...i);continue}}X.push(z);continue}if(W.name.startsWith("."))continue;if(W.isFile()&&C(z))j.push(z)}}return j.sort((K,V)=>K.localeCompare(V))}function P0(Z,$){let j=[];for(let X of Z){let K=X.trim();if(!K)continue;let V=O($,K);if(!U(V))throw Error(`Plugin path does not exist: ${V}`);if(N(V).isDirectory()){let z=yZ(V);if(z){j.push(...z);continue}j.push(...PZ(V));continue}if(!C(V))throw Error(`Plugin file must use a supported extension (${[...XZ].join(", ")}): ${V}`);j.push(V)}return j}function pZ(Z){let $=D(Z);if(!U($))y($,{recursive:!0})}function p0(Z){y(D(Z),{recursive:!0}),LZ(Z,"")}function d0(Z){if(Z?.trim())return pZ(Z),D(Z);let $=Q(G(),"logs");if(!U($))y($,{recursive:!0});return $}import{mkdirSync as dZ}from"node:fs";import{createRequire as hZ}from"node:module";import{dirname as lZ}from"node:path";function VZ(Z){if(Z instanceof Error)return Z.message;return String(Z)}function WZ(Z){if(Z&&typeof Z==="object"&&"code"in Z&&typeof Z.code==="string")return Z.code;return""}var cZ=3,iZ=50;function M(){return new Date().toISOString()}function _(Z){return Z?1:0}function Y(Z){return typeof Z==="string"?Z:""}function p(Z){if(typeof Z!=="string")return;let $=Z.trim();return $.length>0?$:void 0}function sZ(Z){return Z===1||Z===!0}function oZ(Z){if(Z<=0)return;try{let $=new SharedArrayBuffer(4),j=new Int32Array($);Atomics.wait(j,0,0,Z)}catch{}}function nZ(Z){if(!Z||typeof Z!=="object")return!1;let $=VZ(Z),j=WZ(Z);return j==="SQLITE_BUSY"||j==="SQLITE_LOCKED"||$.includes("SQLITE_BUSY")||$.includes("SQLITE_LOCKED")||$.includes("database is locked")}function L(Z){let $=0;for(;;)try{return Z()}catch(j){if(!nZ(j)||$>=cZ)throw j;$+=1,oZ(iZ*2**($-1))}}function rZ(Z){return{prepare:($)=>{let j=Z.query($);return{run:(...X)=>L(()=>j.run(...X)),get:(...X)=>L(()=>j.get(...X)),all:(...X)=>L(()=>j.all(...X))}},exec:($)=>L(()=>Z.exec($)),close:()=>Z.close?.()}}function tZ(Z){return{prepare:($)=>{let j=Z.prepare($);return{run:(...X)=>L(()=>j.run(...X)),get:(...X)=>L(()=>j.get(...X)??null),all:(...X)=>L(()=>j.all(...X))}},exec:($)=>L(()=>Z.exec($)),close:()=>Z.close?.()}}function d(Z){dZ(lZ(Z),{recursive:!0});let $=hZ(import.meta.url);if(typeof globalThis.Bun<"u"){let{Database:X}=$("bun:sqlite");return rZ(new X(Z,{create:!0}))}let j=process.emitWarning;process.emitWarning=(X,...K)=>{if((typeof X==="string"?X:X?.message??"").includes("SQLite"))return;return j.call(process,X,...K)};try{let{DatabaseSync:X}=$(["node",":sqlite"].join(""));return tZ(new X(Z))}finally{process.emitWarning=j}}var aZ=[`CREATE TABLE IF NOT EXISTS sessions (
1
+ var zX=Object.defineProperty;var OX=(X)=>X;function YX(X,Z){this[X]=OX.bind(null,Z)}var zZ=(X,Z)=>{for(var $ in Z)zX(X,$,{get:Z[$],enumerable:!0,configurable:!0,set:YX.bind(Z,$)})};import{existsSync as GZ,readFileSync as QZ,renameSync as KZ}from"node:fs";import{appendFileSync as MX,existsSync as V,mkdirSync as y,readdirSync as HX,readFileSync as o,statSync as q}from"node:fs";import{homedir as NX}from"node:os";import{basename as BX,dirname as C,extname as JX,isAbsolute as _X,join as G,relative as qX,resolve as Y}from"node:path";var R="workspaces",f="chat";function LX(X){let Z=X.trim(),$=/^[A-Za-z]:[\\/]/.test(Z)||Z.startsWith("\\\\"),j=Z.startsWith("/");if(!$&&!j)return!1;let F=Z.split($?/[\\/]+/:/\/+/).filter(Boolean),Q=F.at(-1)??"",K=F.at(-2)??"",U=F.at(-3)??"";return(F.at(-4)??"")===".cline"&&U==="data"&&K==="workspaces"&&Q==="chat"}var u=".clinerules",D=".cline",x=".agents",TX=x,n="agents",v="hooks",k="skills",r="rules",b="workflows",g="plugins",t="AGENTS.md",EX="plugin.json";function BZ(){return G(z(),R,f)}var AX="cline_mcp_settings.json",IX="settings.json";function CX(){let X=process?.env?.HOME?.trim();if(X&&X!=="~")return X;let Z=process?.env?.USERPROFILE?.trim();if(Z)return Z;let $=process?.env?.HOMEDRIVE?.trim(),j=process?.env?.HOMEPATH?.trim();if($&&j)return`${$}${j}`;let F=NX().trim();if(F&&F!=="~")return F;return"~"}var L=CX(),a=!1;function JZ(X){let Z=X.trim();if(!Z)return;L=Z,a=!0}function _Z(X){if(a)return;let Z=X.trim();if(!Z)return;L=Z}var A,e=!1;function qZ(X){let Z=X.trim();if(!Z)return;A=Z,e=!0}function TZ(X){if(e)return;let Z=X.trim();if(!Z)return;A=Z}function W(){if(A)return A;let X=process.env.CLINE_DIR?.trim();if(X)return X;return G(L,".cline")}function DX(){return G(L,"Documents","Cline")}function S(X){return G(DX(),X)}function z(){let X=process.env.CLINE_DATA_DIR?.trim();if(X)return X;return G(W(),"data")}function EZ(){let X=process.env.CLINE_SESSION_DATA_DIR?.trim();if(X)return X;return G(z(),"sessions")}function AZ(){let X=process.env.CLINE_TEAM_DATA_DIR?.trim();if(X)return X;return G(z(),"teams")}function xX(){let X=process.env.CLINE_CONNECTOR_DATA_DIR?.trim();if(X)return X;return G(z(),"connectors")}function IZ(X,Z){let $=X.replace(/[^a-zA-Z0-9._-]+/g,"_"),j=Z.replace(/[^a-zA-Z0-9._-]+/g,"_");return G(z(),"logs","connectors",$,`${j}.log`)}function XX(){let X=process.env.CLINE_CONNECTOR_SETTINGS_PATH?.trim();if(X)return X;return G(xX(),IX)}function w(){let X=process.env.CLINE_DB_DATA_DIR?.trim();if(X)return X;return G(z(),"db")}function ZX(){let X=process.env.CLINE_CONNECTORS_DB_PATH?.trim();if(X)return X;return G(w(),"connectors.db")}function CZ(){let X=process.env.CLINE_CRON_DB_PATH?.trim();if(X)return X;return G(w(),"cron.db")}function DZ(){let X=process.env.CLINE_TASKS_DB_PATH?.trim();if(X)return X;return G(w(),"tasks.db")}function xZ(){return G(W(),"schedules")}function SX(){return G(W(),"tasks")}function RX(X){let Z=X.trim();if(!Z)throw Error("workspaceRoot is required for workspace task scope");return G(Z,".cline","tasks")}function SZ(X){let Z=X.taskSpecsDir?.trim();if(Z)return Z;if(X.scope==="workspace")return RX(X.workspaceRoot??"");return SX()}function fX(){return G(W(),"cron")}function s(X){return G(X,".cline","cron")}function $X(X){if(typeof X==="string")return s(X);if(X?.cronSpecsDir?.trim())return X.cronSpecsDir.trim();if(X?.scope==="workspace"){let Z=X.workspaceRoot?.trim();if(!Z)throw Error("workspaceRoot is required for workspace cron scope");return s(Z)}return fX()}function RZ(X){return G($X(X),"reports")}function fZ(X){return G($X(X),"events")}function vZ(){let X=process.env.CLINE_PROVIDER_SETTINGS_PATH?.trim();if(X)return X;return G(z(),"settings","providers.json")}function bZ(){let X=process.env.CLINE_GLOBAL_SETTINGS_PATH?.trim();if(X)return X;return G(z(),"settings","global-settings.json")}function kZ(){let X=process.env.CLINE_MCP_SETTINGS_PATH?.trim();if(X)return X;return G(z(),"settings",AX)}function B(X){let Z=new Set,$=[];for(let j of X){if(!j||Z.has(j))continue;Z.add(j),$.push(j)}return $}function vX(X){if(!X)return[];return[u,D,x].map((Z)=>G(X,Z,k))}function bX(){return G(W(),n)}function gZ(X){return B([X?G(X,D,n):"",bX()])}function mZ(X){let Z=[S("Hooks"),G(W(),v)];if(X)Z.push(G(X,u,v),G(X,D,v));return B(Z)}function yZ(X){return B([...vX(X),G(W(),k),G(L,x,k)])}function kX(){return G(L,x,t)}function gX(X){return[G(X,u),G(X,D,r)]}function mX(){let X=[];for(let Z of["OneDrive","OneDriveConsumer","OneDriveCommercial"]){let $=process.env[Z]?.trim();if($)X.push(G($,"Documents"))}return X}function yX(){return B([G(W(),r),G(L,"Cline","Rules"),S("Rules"),...mX().map((X)=>G(X,"Cline","Rules"))])}function uZ(X){let Z=X?gX(X):[],$=X?[G(X,t)]:[];return B([...$,...Z,kX(),...yX()])}function wZ(X){return B([X?G(X,".clinerules",b):"",S("Workflows"),G(W(),b),X?G(X,".cline",b):""])}function PZ(X){return B([X?G(X,".cline",g):"",G(W(),g),S("Plugins")])}function pZ(){return[G(L,TX,g)]}var jX=new Set([".js",".ts"]),P="package.json",uX=["index.ts","index.js"],wX=new Set(["node_modules"]);function m(X){try{return q(G(X,EX)).isFile()}catch{return!1}}function I(X){let Z=X.lastIndexOf(".");if(Z===-1)return!1;return jX.has(X.slice(Z))}function FX(X){try{let Z=JSON.parse(o(X,"utf8"));if(!Z.cline||typeof Z.cline!=="object")return null;return Z.cline}catch{return null}}function GX(X){let Z=X?.plugins;if(!Array.isArray(Z))return[];return Z.flatMap(($)=>$.paths??[])}function PX(X){let Z=Y(X);if(!V(Z)||!q(Z).isDirectory())return null;if(m(Z))return null;let $=G(Z,P);if(V($)){let j=FX($),F=GX(j).map((Q)=>Y(Z,Q)).filter((Q)=>V(Q)&&q(Q).isFile()&&I(Q));if(F.length>0)return F}for(let j of uX){let F=G(Z,j);if(V(F)&&q(F).isFile())return[F]}return null}function pX(X){try{let Z=JSON.parse(o(X,"utf8"));return typeof Z.name==="string"&&Z.name.trim()?Z.name.trim():void 0}catch{return}}function dX(X,Z){let $=qX(Y(X),Y(Z));return $===""||!$.startsWith("..")&&!_X($)}function dZ(X,Z){let $=C(X),j=Y(Z);while(dX(j,$)){let F=G($,P);if(V(F)){let K=pX(F);if(K)return K;break}let Q=Y($,"..");if(Q===$)break;$=Q}return BX(X,JX(X))}function hX(X){let Z=Y(X);if(!V(Z))return[];if(m(Z))return[];let $=[],j=[Z];while(j.length>0){let F=j.pop();if(!F)continue;let Q;try{Q=HX(F,{withFileTypes:!0})}catch{continue}for(let K of Q){let U=G(F,K.name);if(K.isDirectory()){if(m(U))continue;if(wX.has(K.name)||K.name.startsWith("."))continue;let H=G(U,P);if(V(H)){let N=FX(H),i=GX(N).map((T)=>Y(U,T)).filter((T)=>V(T)&&q(T).isFile()&&I(T));if(i.length>0){$.push(...i);continue}}j.push(U);continue}if(K.name.startsWith("."))continue;if(K.isFile()&&I(U))$.push(U)}}return $.sort((F,Q)=>F.localeCompare(Q))}function hZ(X,Z){let $=[];for(let j of X){let F=j.trim();if(!F)continue;let Q=Y(Z,F);if(!V(Q))throw Error(`Plugin path does not exist: ${Q}`);if(q(Q).isDirectory()){let U=PX(Q);if(U){$.push(...U);continue}$.push(...hX(Q));continue}if(!I(Q))throw Error(`Plugin file must use a supported extension (${[...jX].join(", ")}): ${Q}`);$.push(Q)}return $}function lX(X){let Z=C(X);if(!V(Z))y(Z,{recursive:!0})}function lZ(X){y(C(X),{recursive:!0}),MX(X,"")}function cZ(X){if(X?.trim())return lX(X),C(X);let Z=G(z(),"logs");if(!V(Z))y(Z,{recursive:!0});return Z}import{mkdirSync as cX}from"node:fs";import{createRequire as iX}from"node:module";import{dirname as sX}from"node:path";function QX(X){if(X instanceof Error)return X.message;return String(X)}function KX(X){if(X&&typeof X==="object"&&"code"in X&&typeof X.code==="string")return X.code;return""}var oX=3,nX=50;function J(){return new Date().toISOString()}function E(X){return X?1:0}function O(X){return typeof X==="string"?X:""}function p(X){if(typeof X!=="string")return;let Z=X.trim();return Z.length>0?Z:void 0}function rX(X){return X===1||X===!0}function tX(X){if(X<=0)return;try{let Z=new SharedArrayBuffer(4),$=new Int32Array(Z);Atomics.wait($,0,0,X)}catch{}}function aX(X){if(!X||typeof X!=="object")return!1;let Z=QX(X),$=KX(X);return $==="SQLITE_BUSY"||$==="SQLITE_LOCKED"||Z.includes("SQLITE_BUSY")||Z.includes("SQLITE_LOCKED")||Z.includes("database is locked")}function M(X){let Z=0;for(;;)try{return X()}catch($){if(!aX($)||Z>=oX)throw $;Z+=1,tX(nX*2**(Z-1))}}function eX(X){return{prepare:(Z)=>{let $=X.query(Z);return{run:(...j)=>M(()=>$.run(...j)),get:(...j)=>M(()=>$.get(...j)),all:(...j)=>M(()=>$.all(...j))}},exec:(Z)=>M(()=>X.exec(Z)),close:()=>X.close?.()}}function XZ(X){return{prepare:(Z)=>{let $=X.prepare(Z);return{run:(...j)=>M(()=>$.run(...j)),get:(...j)=>M(()=>$.get(...j)??null),all:(...j)=>M(()=>$.all(...j))}},exec:(Z)=>M(()=>X.exec(Z)),close:()=>X.close?.()}}function d(X){cX(sX(X),{recursive:!0});let Z=iX(import.meta.url);if(typeof globalThis.Bun<"u"){let{Database:j}=Z("bun:sqlite");return eX(new j(X,{create:!0}))}let $=process.emitWarning;process.emitWarning=(j,...F)=>{if((typeof j==="string"?j:j?.message??"").includes("SQLite"))return;return $.call(process,j,...F)};try{let{DatabaseSync:j}=Z(["node",":sqlite"].join(""));return XZ(new j(X))}finally{process.emitWarning=$}}var ZZ=[`CREATE TABLE IF NOT EXISTS sessions (
2
2
  session_id TEXT PRIMARY KEY,
3
3
  source TEXT NOT NULL,
4
4
  pid INTEGER NOT NULL,
@@ -77,7 +77,7 @@ var GZ=Object.defineProperty;var YZ=(Z)=>Z;function OZ(Z,$){this[Z]=YZ.bind(null
77
77
  FOREIGN KEY (session_id) REFERENCES sessions(session_id) ON DELETE SET NULL
78
78
  );`,`CREATE INDEX IF NOT EXISTS idx_schedule_executions_schedule
79
79
  ON schedule_executions(schedule_id, triggered_at DESC);`,`CREATE INDEX IF NOT EXISTS idx_schedules_next_run
80
- ON schedules(enabled, next_run_at);`],eZ=[{table:"sessions",column:"workspace_root",sql:"ALTER TABLE sessions ADD COLUMN workspace_root TEXT;"},{table:"sessions",column:"parent_session_id",sql:"ALTER TABLE sessions ADD COLUMN parent_session_id TEXT;"},{table:"sessions",column:"parent_agent_id",sql:"ALTER TABLE sessions ADD COLUMN parent_agent_id TEXT;"},{table:"sessions",column:"agent_id",sql:"ALTER TABLE sessions ADD COLUMN agent_id TEXT;"},{table:"sessions",column:"conversation_id",sql:"ALTER TABLE sessions ADD COLUMN conversation_id TEXT;"},{table:"sessions",column:"is_subagent",sql:"ALTER TABLE sessions ADD COLUMN is_subagent INTEGER NOT NULL DEFAULT 0;"},{table:"sessions",column:"messages_path",sql:"ALTER TABLE sessions ADD COLUMN messages_path TEXT;"},{table:"sessions",column:"metadata_json",sql:"ALTER TABLE sessions ADD COLUMN metadata_json TEXT;"},{table:"sessions",column:"transcript_path",sql:"ALTER TABLE sessions ADD COLUMN transcript_path TEXT NOT NULL DEFAULT '';"},{table:"schedules",column:"claim_token",sql:"ALTER TABLE schedules ADD COLUMN claim_token TEXT;"},{table:"schedules",column:"claim_started_at",sql:"ALTER TABLE schedules ADD COLUMN claim_started_at TEXT;"},{table:"schedules",column:"claim_until_at",sql:"ALTER TABLE schedules ADD COLUMN claim_until_at TEXT;"}];function Z0(Z,$){return new Set(Z.prepare(`PRAGMA table_info(${$});`).all().map((j)=>j.name))}function $0(Z,$={}){Z.exec("PRAGMA journal_mode = WAL;"),Z.exec("PRAGMA busy_timeout = 5000;");for(let K of aZ)Z.exec(K);if(!$.includeLegacyMigrations)return;let j=new Map,X=(K)=>{let V=j.get(K);if(!V)V=Z0(Z,K),j.set(K,V);return V};for(let K of eZ)if(!X(K.table).has(K.column)){if(Z.exec(K.sql),K.column==="workspace_root")Z.exec("UPDATE sessions SET workspace_root = cwd WHERE workspace_root IS NULL OR workspace_root = '';");j.delete(K.table)}}var Q0=`CREATE TABLE IF NOT EXISTS connector_configs (
80
+ ON schedules(enabled, next_run_at);`],$Z=[{table:"sessions",column:"workspace_root",sql:"ALTER TABLE sessions ADD COLUMN workspace_root TEXT;"},{table:"sessions",column:"parent_session_id",sql:"ALTER TABLE sessions ADD COLUMN parent_session_id TEXT;"},{table:"sessions",column:"parent_agent_id",sql:"ALTER TABLE sessions ADD COLUMN parent_agent_id TEXT;"},{table:"sessions",column:"agent_id",sql:"ALTER TABLE sessions ADD COLUMN agent_id TEXT;"},{table:"sessions",column:"conversation_id",sql:"ALTER TABLE sessions ADD COLUMN conversation_id TEXT;"},{table:"sessions",column:"is_subagent",sql:"ALTER TABLE sessions ADD COLUMN is_subagent INTEGER NOT NULL DEFAULT 0;"},{table:"sessions",column:"messages_path",sql:"ALTER TABLE sessions ADD COLUMN messages_path TEXT;"},{table:"sessions",column:"metadata_json",sql:"ALTER TABLE sessions ADD COLUMN metadata_json TEXT;"},{table:"sessions",column:"transcript_path",sql:"ALTER TABLE sessions ADD COLUMN transcript_path TEXT NOT NULL DEFAULT '';"},{table:"schedules",column:"claim_token",sql:"ALTER TABLE schedules ADD COLUMN claim_token TEXT;"},{table:"schedules",column:"claim_started_at",sql:"ALTER TABLE schedules ADD COLUMN claim_started_at TEXT;"},{table:"schedules",column:"claim_until_at",sql:"ALTER TABLE schedules ADD COLUMN claim_until_at TEXT;"}];function jZ(X,Z){return new Set(X.prepare(`PRAGMA table_info(${Z});`).all().map(($)=>$.name))}function FZ(X,Z={}){X.exec("PRAGMA journal_mode = WAL;"),X.exec("PRAGMA busy_timeout = 5000;");for(let F of ZZ)X.exec(F);if(!Z.includeLegacyMigrations)return;let $=new Map,j=(F)=>{let Q=$.get(F);if(!Q)Q=jZ(X,F),$.set(F,Q);return Q};for(let F of $Z)if(!j(F.table).has(F.column)){if(X.exec(F.sql),F.column==="workspace_root")X.exec("UPDATE sessions SET workspace_root = cwd WHERE workspace_root IS NULL OR workspace_root = '';");$.delete(F.table)}}var UZ=`CREATE TABLE IF NOT EXISTS connector_configs (
81
81
  channel TEXT PRIMARY KEY,
82
82
  type TEXT NOT NULL,
83
83
  values_json TEXT NOT NULL DEFAULT '{}',
@@ -85,7 +85,7 @@ var GZ=Object.defineProperty;var YZ=(Z)=>Z;function OZ(Z,$){this[Z]=YZ.bind(null
85
85
  security_values_json TEXT NOT NULL DEFAULT '{}',
86
86
  configured_at TEXT NOT NULL,
87
87
  updated_at TEXT NOT NULL
88
- );`,V0=`CREATE TABLE IF NOT EXISTS connector_connections (
88
+ );`,VZ=`CREATE TABLE IF NOT EXISTS connector_connections (
89
89
  channel TEXT NOT NULL,
90
90
  instance_id TEXT NOT NULL,
91
91
  connect_args_json TEXT NOT NULL,
@@ -94,11 +94,11 @@ var GZ=Object.defineProperty;var YZ=(Z)=>Z;function OZ(Z,$){this[Z]=YZ.bind(null
94
94
  updated_at TEXT NOT NULL,
95
95
  last_connected_at TEXT NOT NULL,
96
96
  PRIMARY KEY (channel, instance_id)
97
- );`;function FZ(Z){Z.exec("PRAGMA journal_mode = WAL;"),Z.exec("PRAGMA busy_timeout = 5000;"),Z.exec(Q0),Z.exec(V0)}function q(Z){return typeof Z==="object"&&Z!==null&&!Array.isArray(Z)}function zZ(Z){if(typeof Z!=="string"||!Z)return{};try{let $=JSON.parse(Z);if(!q($))return{};let j={};for(let[X,K]of Object.entries($))if(typeof K==="string")j[X]=K;return j}catch{return{}}}function UZ(Z){if(typeof Z!=="string"||!Z)return;try{let $=JSON.parse(Z);if(!Array.isArray($))return;return $.filter((j)=>typeof j==="string")}catch{return}}class c{dbPath;db;constructor(Z={}){this.dbPath=Z.dbPath??$Z()}getRawDb(){if(this.db)return this.db;let Z=d(this.dbPath);return FZ(Z),this.db=Z,this.importLegacyJsonSettings(),Z}close(){this.db?.close?.(),this.db=void 0}getConfig(Z){let $=this.getRawDb().prepare("SELECT * FROM connector_configs WHERE channel = ?").get(Z);return $?h($):void 0}listConfigs(){return this.getRawDb().prepare("SELECT * FROM connector_configs ORDER BY channel ASC").all().map(h)}getConnection(Z,$){let j=this.getRawDb().prepare(`SELECT * FROM connector_connections
98
- WHERE channel = ? AND instance_id = ?`).get(Z,$);return j?l(j):void 0}listConnections(Z){return(Z?this.getRawDb().prepare(`SELECT * FROM connector_connections
97
+ );`;function WX(X){X.exec("PRAGMA journal_mode = WAL;"),X.exec("PRAGMA busy_timeout = 5000;"),X.exec(UZ),X.exec(VZ)}function _(X){return typeof X==="object"&&X!==null&&!Array.isArray(X)}function UX(X){if(typeof X!=="string"||!X)return{};try{let Z=JSON.parse(X);if(!_(Z))return{};let $={};for(let[j,F]of Object.entries(Z))if(typeof F==="string")$[j]=F;return $}catch{return{}}}function VX(X){if(typeof X!=="string"||!X)return;try{let Z=JSON.parse(X);if(!Array.isArray(Z))return;return Z.filter(($)=>typeof $==="string")}catch{return}}class c{dbPath;db;constructor(X={}){this.dbPath=X.dbPath??ZX()}getRawDb(){if(this.db)return this.db;let X=d(this.dbPath);return WX(X),this.db=X,this.importLegacyJsonSettings(),X}close(){this.db?.close?.(),this.db=void 0}getConfig(X){let Z=this.getRawDb().prepare("SELECT * FROM connector_configs WHERE channel = ?").get(X);return Z?h(Z):void 0}listConfigs(){return this.getRawDb().prepare("SELECT * FROM connector_configs ORDER BY channel ASC").all().map(h)}getConnection(X,Z){let $=this.getRawDb().prepare(`SELECT * FROM connector_connections
98
+ WHERE channel = ? AND instance_id = ?`).get(X,Z);return $?l($):void 0}listConnections(X){return(X?this.getRawDb().prepare(`SELECT * FROM connector_connections
99
99
  WHERE channel = ?
100
- ORDER BY instance_id ASC`).all(Z):this.getRawDb().prepare(`SELECT * FROM connector_connections
101
- ORDER BY channel ASC, instance_id ASC`).all()).map(l)}upsertConfig(Z){let $=M(),j=this.getRawDb();j.exec("BEGIN IMMEDIATE;");try{let X=j.prepare("SELECT * FROM connector_configs WHERE channel = ?").get(Z.channel),K=X?h(X):void 0,W=j.prepare("SELECT * FROM connector_connections WHERE channel = ?").all(Z.channel).map(l),z=Z.updateConnectArgs&&W.length===1&&W[0]?Z.updateConnectArgs({config:K,connection:W[0]}):void 0;if(j.prepare(`INSERT INTO connector_configs (
100
+ ORDER BY instance_id ASC`).all(X):this.getRawDb().prepare(`SELECT * FROM connector_connections
101
+ ORDER BY channel ASC, instance_id ASC`).all()).map(l)}upsertConfig(X){let Z=J(),$=this.getRawDb();$.exec("BEGIN IMMEDIATE;");try{let j=$.prepare("SELECT * FROM connector_configs WHERE channel = ?").get(X.channel),F=j?h(j):void 0,K=$.prepare("SELECT * FROM connector_connections WHERE channel = ?").all(X.channel).map(l),U=X.updateConnectArgs&&K.length===1&&K[0]?X.updateConnectArgs({config:F,connection:K[0]}):void 0;if($.prepare(`INSERT INTO connector_configs (
102
102
  channel, type, values_json, security_enabled,
103
103
  security_values_json, configured_at, updated_at
104
104
  ) VALUES (?, ?, ?, ?, ?, ?, ?)
@@ -108,9 +108,9 @@ var GZ=Object.defineProperty;var YZ=(Z)=>Z;function OZ(Z,$){this[Z]=YZ.bind(null
108
108
  security_enabled = excluded.security_enabled,
109
109
  security_values_json = excluded.security_values_json,
110
110
  configured_at = excluded.configured_at,
111
- updated_at = excluded.updated_at`).run(Z.channel,Z.type??Z.channel,JSON.stringify(Z.values),_(Z.security?.enabled===!0),JSON.stringify(Z.security?.values??{}),Z.configuredAt??K?.configuredAt??$,Z.updatedAt??$),z&&W[0])j.prepare(`UPDATE connector_connections
111
+ updated_at = excluded.updated_at`).run(X.channel,X.type??X.channel,JSON.stringify(X.values),E(X.security?.enabled===!0),JSON.stringify(X.security?.values??{}),X.configuredAt??F?.configuredAt??Z,X.updatedAt??Z),U&&K[0])$.prepare(`UPDATE connector_connections
112
112
  SET connect_args_json = ?, updated_at = ?
113
- WHERE channel = ? AND instance_id = ?`).run(JSON.stringify(z),$,Z.channel,W[0].instanceId);j.exec("COMMIT;")}catch(X){try{j.exec("ROLLBACK;")}catch{}throw X}}recordConnected(Z,$,j){let X=M();this.getRawDb().prepare(`INSERT INTO connector_connections (
113
+ WHERE channel = ? AND instance_id = ?`).run(JSON.stringify(U),Z,X.channel,K[0].instanceId);$.exec("COMMIT;")}catch(j){try{$.exec("ROLLBACK;")}catch{}throw j}}recordConnected(X,Z,$){let j=J();this.getRawDb().prepare(`INSERT INTO connector_connections (
114
114
  channel, instance_id, connect_args_json,
115
115
  last_successful_args_json, enabled, updated_at, last_connected_at
116
116
  ) VALUES (?, ?, ?, ?, 1, ?, ?)
@@ -119,9 +119,9 @@ var GZ=Object.defineProperty;var YZ=(Z)=>Z;function OZ(Z,$){this[Z]=YZ.bind(null
119
119
  last_successful_args_json = excluded.last_successful_args_json,
120
120
  enabled = 1,
121
121
  updated_at = excluded.updated_at,
122
- last_connected_at = excluded.last_connected_at`).run(Z,$,JSON.stringify(j),JSON.stringify(j),X,X)}setEnabled(Z,$,j){if(j){this.getRawDb().prepare(`UPDATE connector_connections
122
+ last_connected_at = excluded.last_connected_at`).run(X,Z,JSON.stringify($),JSON.stringify($),j,j)}setEnabled(X,Z,$){if($){this.getRawDb().prepare(`UPDATE connector_connections
123
123
  SET enabled = ?, updated_at = ?
124
- WHERE channel = ? AND instance_id = ?`).run(_($),M(),Z,j);return}this.getRawDb().prepare(`UPDATE connector_connections
124
+ WHERE channel = ? AND instance_id = ?`).run(E(Z),J(),X,$);return}this.getRawDb().prepare(`UPDATE connector_connections
125
125
  SET enabled = ?, updated_at = ?
126
- WHERE channel = ?`).run(_($),M(),Z)}deleteConnection(Z,$){return(this.getRawDb().prepare(`DELETE FROM connector_connections
127
- WHERE channel = ? AND instance_id = ?`).run(Z,$).changes??0)>0}disableAll(){this.getRawDb().prepare("UPDATE connector_connections SET enabled = 0, updated_at = ?").run(M())}deleteConfig(Z){return(this.getRawDb().prepare("DELETE FROM connector_configs WHERE channel = ?").run(Z).changes??0)>0}importLegacyJsonSettings(){let Z=ZZ();if(!j0(Z))return;try{let $=JSON.parse(X0(Z,"utf8")),j=q($)&&q($.connectors)?$.connectors:{};for(let[X,K]of Object.entries(j)){if(!q(K)||this.getConfig(X))continue;let V={};if(q(K.values)){for(let[B,J]of Object.entries(K.values))if(typeof J==="string")V[B]=J}let W={},z=q(K.security)?K.security:void 0;if(z&&q(z.values)){for(let[B,J]of Object.entries(z.values))if(typeof J==="string")W[B]=J}this.upsertConfig({channel:X,type:typeof K.type==="string"?K.type:X,values:V,security:z?{enabled:z.enabled===!0,values:W}:void 0,configuredAt:typeof K.configuredAt==="string"?K.configuredAt:void 0,updatedAt:typeof K.updatedAt==="string"?K.updatedAt:void 0})}K0(Z,`${Z}.migrated`)}catch{}}}function h(Z){let $=Z.security_enabled===1,j=zZ(Z.security_values_json),X=$||Object.keys(j).length>0;return{channel:Y(Z.channel),type:Y(Z.type),values:zZ(Z.values_json),security:X?{enabled:$,values:j}:void 0,configuredAt:Y(Z.configured_at),updatedAt:Y(Z.updated_at)}}function l(Z){return{channel:Y(Z.channel),instanceId:Y(Z.instance_id),connectArgs:UZ(Z.connect_args_json)??[],lastSuccessfulArgs:UZ(Z.last_successful_args_json)??[],enabled:Z.enabled===1,updatedAt:Y(Z.updated_at),lastConnectedAt:p(Z.last_connected_at)??Y(Z.updated_at)}}function W0(Z){let $=new c;try{return Z($)}finally{$.close()}}export{W0 as withConnectorStore,_ as toBoolInt,M as nowIso,d as loadSqliteDb,$0 as ensureSessionSchema,FZ as ensureConnectorSchema,Y as asString,p as asOptionalString,sZ as asBool,c as SqliteConnectorStore};
126
+ WHERE channel = ?`).run(E(Z),J(),X)}deleteConnection(X,Z){return(this.getRawDb().prepare(`DELETE FROM connector_connections
127
+ WHERE channel = ? AND instance_id = ?`).run(X,Z).changes??0)>0}disableAll(){this.getRawDb().prepare("UPDATE connector_connections SET enabled = 0, updated_at = ?").run(J())}deleteConfig(X){return(this.getRawDb().prepare("DELETE FROM connector_configs WHERE channel = ?").run(X).changes??0)>0}importLegacyJsonSettings(){let X=XX();if(!GZ(X))return;try{let Z=JSON.parse(QZ(X,"utf8")),$=_(Z)&&_(Z.connectors)?Z.connectors:{};for(let[j,F]of Object.entries($)){if(!_(F)||this.getConfig(j))continue;let Q={};if(_(F.values)){for(let[H,N]of Object.entries(F.values))if(typeof N==="string")Q[H]=N}let K={},U=_(F.security)?F.security:void 0;if(U&&_(U.values)){for(let[H,N]of Object.entries(U.values))if(typeof N==="string")K[H]=N}this.upsertConfig({channel:j,type:typeof F.type==="string"?F.type:j,values:Q,security:U?{enabled:U.enabled===!0,values:K}:void 0,configuredAt:typeof F.configuredAt==="string"?F.configuredAt:void 0,updatedAt:typeof F.updatedAt==="string"?F.updatedAt:void 0})}KZ(X,`${X}.migrated`)}catch{}}}function h(X){let Z=X.security_enabled===1,$=UX(X.security_values_json),j=Z||Object.keys($).length>0;return{channel:O(X.channel),type:O(X.type),values:UX(X.values_json),security:j?{enabled:Z,values:$}:void 0,configuredAt:O(X.configured_at),updatedAt:O(X.updated_at)}}function l(X){return{channel:O(X.channel),instanceId:O(X.instance_id),connectArgs:VX(X.connect_args_json)??[],lastSuccessfulArgs:VX(X.last_successful_args_json)??[],enabled:X.enabled===1,updatedAt:O(X.updated_at),lastConnectedAt:p(X.last_connected_at)??O(X.updated_at)}}function WZ(X){let Z=new c;try{return X(Z)}finally{Z.close()}}export{WZ as withConnectorStore,E as toBoolInt,J as nowIso,d as loadSqliteDb,FZ as ensureSessionSchema,WX as ensureConnectorSchema,O as asString,p as asOptionalString,rX as asBool,c as SqliteConnectorStore};
@@ -5,6 +5,8 @@ export declare const FeatureFlag: {
5
5
  readonly CODE_CLOUD_AGENTS: "code-cloud-agents";
6
6
  /** Shows the GitHub integration step in the desktop app */
7
7
  readonly CODE_ONBOARDING_GITHUB: "code-onboarding-github";
8
+ /** Enables Composio connectors for the signed-in Cline account. */
9
+ readonly CLINE_COMPOSIO_BETA: "CLINE_COMPOSIO_BETA";
8
10
  };
9
11
  export type KnownFeatureFlag = (typeof FeatureFlag)[keyof typeof FeatureFlag];
10
12
  export type FeatureFlag = KnownFeatureFlag | (string & {});
@@ -21,6 +23,10 @@ export interface FeatureFlagsContext {
21
23
  distinctId?: string;
22
24
  /** Authenticated Cline account/user ID, when available. */
23
25
  userId?: string | null;
26
+ /**
27
+ * Authenticated account email, when available. Providers do not send it anywhere.
28
+ */
29
+ email?: string | null;
24
30
  /** Optional SDK consumer name, e.g. `my-production-app`. */
25
31
  clientName?: string;
26
32
  }
package/dist/hub.d.ts CHANGED
@@ -353,7 +353,7 @@ export interface HubCommandOutputMap {
353
353
  export type HubTypedCommandName = keyof HubCommandInputMap & HubCommandName;
354
354
  export type HubCommandInput<TCommand extends HubTypedCommandName> = HubCommandInputMap[TCommand];
355
355
  export type HubCommandOutput<TCommand extends HubTypedCommandName> = HubCommandOutputMap[TCommand];
356
- export type HubCommandName = "client.register" | "client.update" | "client.unregister" | "client.list" | "cline.account.get_current" | "prompt_commands.list" | "prompt_commands.execute" | "mention_files.search" | "catalog.list" | "session.list" | "session.search" | "session.create" | "session.attach" | "session.detach" | "session.get" | "session.messages" | "session.restore" | "session.delete" | "session.update" | "session.update_connection" | "session.compaction.get" | "session.compaction.update" | "session.pending_prompts" | "session.update_pending_prompt" | "session.remove_pending_prompt" | "session.fork" | "session.hook" | "run.start" | "session.send_input" | "run.enqueue" | "run.list" | "run.abort" | "run.proceed_while_running" | "hub.drain" | "hub.status" | "approval.request" | "approval.respond" | "capability.request" | "capability.progress" | "capability.respond" | "peer.register" | "peer.list_sessions" | "peer.attach_session" | "peer.detach_session" | "peer.proxy_command" | "schedule.create" | "schedule.list" | "schedule.get" | "schedule.update" | "schedule.delete" | "schedule.enable" | "schedule.disable" | "schedule.trigger" | "schedule.list_executions" | "schedule.stats" | "schedule.active" | "schedule.upcoming" | "task.create" | "task.list" | "task.get" | "task.update" | "task.approve" | "task.cancel" | "task.run" | "task.automation.get" | "task.automation.set" | "settings.list" | "settings.get" | "settings.patch" | "settings.toggle" | "connector.channels" | "connector.configure" | "connector.delete_config" | "connector.start" | "connector.stop" | "connector.supervised" | "cron.event.ingest" | "cron.event.list" | "cron.event.get" | "ui.notify" | "ui.show_window";
356
+ export type HubCommandName = "client.register" | "client.update" | "client.unregister" | "client.list" | "cline.account.get_current" | "prompt_commands.list" | "prompt_commands.execute" | "mention_files.search" | "catalog.list" | "session.list" | "session.search" | "session.create" | "session.attach" | "session.detach" | "session.get" | "session.messages" | "session.restore" | "session.delete" | "session.update" | "session.update_connection" | "session.compaction.get" | "session.compaction.update" | "session.pending_prompts" | "session.steer_first_pending_prompt" | "session.update_pending_prompt" | "session.remove_pending_prompt" | "session.fork" | "session.hook" | "run.start" | "session.send_input" | "run.enqueue" | "run.list" | "run.abort" | "run.proceed_while_running" | "hub.drain" | "hub.status" | "approval.request" | "approval.respond" | "capability.request" | "capability.progress" | "capability.respond" | "peer.register" | "peer.list_sessions" | "peer.attach_session" | "peer.detach_session" | "peer.proxy_command" | "schedule.create" | "schedule.list" | "schedule.get" | "schedule.update" | "schedule.delete" | "schedule.enable" | "schedule.disable" | "schedule.trigger" | "schedule.list_executions" | "schedule.stats" | "schedule.active" | "schedule.upcoming" | "task.create" | "task.list" | "task.get" | "task.update" | "task.approve" | "task.cancel" | "task.run" | "task.automation.get" | "task.automation.set" | "settings.list" | "settings.get" | "settings.patch" | "settings.toggle" | "connector.channels" | "connector.configure" | "connector.delete_config" | "connector.start" | "connector.stop" | "connector.supervised" | "cron.event.ingest" | "cron.event.list" | "cron.event.get" | "ui.notify" | "ui.show_window";
357
357
  export declare const HUB_DEFAULT_COMMAND_TIMEOUT_MS = 30000;
358
358
  export declare const HUB_COMMAND_SLOW_LOG_MS = 5000;
359
359
  export declare function getDefaultHubCommandTimeoutMs(command: HubCommandName): number | null;
@@ -53,6 +53,8 @@ export type { AddProviderActionRequest, ChatAttachmentFile, ChatAttachments, Cha
53
53
  export { ProviderCapabilitySchema, ProviderClientSchema, ProviderProtocolSchema, } from "./rpc/runtime";
54
54
  export type { TeamProgressCounts, TeamProgressLifecycleEvent, TeamProgressMemberRole, TeamProgressMemberStatus, TeamProgressOutcomeFragmentStatus, TeamProgressOutcomeStatus, TeamProgressProjectionEvent, TeamProgressRunStatus, TeamProgressSummary, TeamProgressTaskStatus, } from "./rpc/team-progress";
55
55
  export { TEAM_LIFECYCLE_EVENT_TYPE, TEAM_PROGRESS_EVENT_TYPE, } from "./rpc/team-progress";
56
+ export type { ClineClientIdentity } from "./runtime/cline-client-identity";
57
+ export { getClineClientIdentity, setClineClientIdentity, } from "./runtime/cline-client-identity";
56
58
  export type { ClineEnvironment, ClineEnvironmentConfig, ResolveClineEnvironmentOptions, } from "./runtime/cline-environment";
57
59
  export { CLINE_ENVIRONMENT_ENV, CLINE_ENVIRONMENT_OVERRIDE_ENV, CLINE_ENVIRONMENTS, DEFAULT_CLINE_ENVIRONMENT, getClineEnvironmentConfig, resolveClineEnvironment, } from "./runtime/cline-environment";
58
60
  export type { CaptureAgentUnexpectedReasoningTokensInput, CaptureSdkErrorInput, CaptureTaskLifecycleEventInput, ITelemetryService, OpenTelemetryClientConfig, SdkTelemetryErrorComponent, SdkTelemetryErrorSeverity, TelemetryArray, TelemetryMetadata, TelemetryObject, TelemetryPrimitive, TelemetryProperties, TelemetryValue, } from "./services/telemetry";