@cline/shared 0.0.82 → 0.0.83

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/db/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var YZ=Object.defineProperty;var OZ=(Z)=>Z;function HZ(Z,$){this[Z]=OZ.bind(null,$)}var z0=(Z,$)=>{for(var j in $)YZ(Z,j,{get:$[j],enumerable:!0,configurable:!0,set:HZ.bind($,j)})};import{existsSync as j0,readFileSync as X0,renameSync as K0}from"node:fs";import{appendFileSync as BZ,existsSync as U,mkdirSync as y,readdirSync as JZ,readFileSync as r,statSync as A}from"node:fs";import{homedir as MZ}from"node:os";import{basename as qZ,dirname as I,extname as NZ,isAbsolute as AZ,join as Q,relative as TZ,resolve as O}from"node:path";var R="workspaces",v="chat";function LZ(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",S=".cline",f=".agents",s=f,t="agents",b="hooks",g="skills",o="rules",k="workflows",x="plugins",a="AGENTS.md",_Z="plugin.json";function L0(){return Q(G(),R,v)}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=MZ().trim();if(K&&K!=="~")return K;return"~"}var H=DZ(),e=!1;function B0(Z){let $=Z.trim();if(!$)return;H=$,e=!0}function J0(Z){if(e)return;let $=Z.trim();if(!$)return;H=$}var C,ZZ=!1;function M0(Z){let $=Z.trim();if(!$)return;C=$,ZZ=!0}function q0(Z){if(ZZ)return;let $=Z.trim();if(!$)return;C=$}function F(){if(C)return C;let Z=process.env.CLINE_DIR?.trim();if(Z)return Z;return Q(H,".cline")}function IZ(){return Q(H,"Documents","Cline")}function E(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 $Z(){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 jZ(){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 n(Z){return Q(Z,".cline","cron")}function XZ(Z){if(typeof Z==="string")return n(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 n($)}return RZ()}function I0(Z){return Q(XZ(Z),"reports")}function S0(Z){return Q(XZ(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 M(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,S,f].map(($)=>Q(Z,$,g))}function bZ(){return Q(F(),t)}function v0(Z){return M([Z?Q(Z,S,t):"",bZ()])}function b0(Z){let $=[E("Hooks"),Q(F(),b)];if(Z)$.push(Q(Z,u,b),Q(Z,S,b));return M($)}function k0(Z){return M([...vZ(Z),Q(F(),g),Q(H,f,g)])}function kZ(){return Q(H,f,a)}function g0(Z){let $=Z?[Q(Z,u),Q(Z,S,o)]:[],j=Z?[Q(Z,a)]:[];return M([...j,...$,kZ(),Q(F(),o),Q(H,"Cline","Rules"),E("Rules")])}function m0(Z){return M([Z?Q(Z,".clinerules",k):"",E("Workflows"),Q(F(),k),Z?Q(Z,".cline",k):""])}function y0(Z){return M([Z?Q(Z,".cline",x):"",Q(F(),x),E("Plugins")])}function u0(Z){return M([Z?Q(Z,s,x):"",Q(H,s,x)])}var KZ=new Set([".js",".ts"]),P="package.json",gZ=["index.ts","index.js"],mZ=new Set(["node_modules"]);function m(Z){try{return A(Q(Z,_Z)).isFile()}catch{return!1}}function D(Z){let $=Z.lastIndexOf(".");if($===-1)return!1;return KZ.has(Z.slice($))}function QZ(Z){try{let $=JSON.parse(r(Z,"utf8"));if(!$.cline||typeof $.cline!=="object")return null;return $.cline}catch{return null}}function VZ(Z){let $=Z?.plugins;if(!Array.isArray($))return[];return $.flatMap((j)=>j.paths??[])}function yZ(Z){let $=O(Z);if(!U($)||!A($).isDirectory())return null;if(m($))return null;let j=Q($,P);if(U(j)){let X=QZ(j),K=VZ(X).map((V)=>O($,V)).filter((V)=>U(V)&&A(V).isFile()&&D(V));if(K.length>0)return K}for(let X of gZ){let K=Q($,X);if(U(K)&&A(K).isFile())return[K]}return null}function uZ(Z){try{let $=JSON.parse(r(Z,"utf8"));return typeof $.name==="string"&&$.name.trim()?$.name.trim():void 0}catch{return}}function wZ(Z,$){let j=TZ(O(Z),O($));return j===""||!j.startsWith("..")&&!AZ(j)}function w0(Z,$){let j=I(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 qZ(Z,NZ(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=JZ(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=QZ(B),i=VZ(J).map((T)=>O(z,T)).filter((T)=>U(T)&&A(T).isFile()&&D(T));if(i.length>0){j.push(...i);continue}}X.push(z);continue}if(W.name.startsWith("."))continue;if(W.isFile()&&D(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(A(V).isDirectory()){let z=yZ(V);if(z){j.push(...z);continue}j.push(...PZ(V));continue}if(!D(V))throw Error(`Plugin file must use a supported extension (${[...KZ].join(", ")}): ${V}`);j.push(V)}return j}function pZ(Z){let $=I(Z);if(!U($))y($,{recursive:!0})}function p0(Z){y(I(Z),{recursive:!0}),BZ(Z,"")}function d0(Z){if(Z?.trim())return pZ(Z),I(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 WZ(Z){if(Z instanceof Error)return Z.message;return String(Z)}function zZ(Z){if(Z&&typeof Z==="object"&&"code"in Z&&typeof Z.code==="string")return Z.code;return""}var cZ=3,iZ=50;function q(){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 $=WZ(Z),j=zZ(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 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 (
2
2
  session_id TEXT PRIMARY KEY,
3
3
  source TEXT NOT NULL,
4
4
  pid INTEGER NOT NULL,
@@ -94,11 +94,11 @@ var YZ=Object.defineProperty;var OZ=(Z)=>Z;function HZ(Z,$){this[Z]=OZ.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 GZ(Z){Z.exec("PRAGMA journal_mode = WAL;"),Z.exec("PRAGMA busy_timeout = 5000;"),Z.exec(Q0),Z.exec(V0)}function N(Z){return typeof Z==="object"&&Z!==null&&!Array.isArray(Z)}function UZ(Z){if(typeof Z!=="string"||!Z)return{};try{let $=JSON.parse(Z);if(!N($))return{};let j={};for(let[X,K]of Object.entries($))if(typeof K==="string")j[X]=K;return j}catch{return{}}}function FZ(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??jZ()}getRawDb(){if(this.db)return this.db;let Z=d(this.dbPath);return GZ(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
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
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
99
99
  WHERE channel = ?
100
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 $=q(),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 (
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 (
102
102
  channel, type, values_json, security_enabled,
103
103
  security_values_json, configured_at, updated_at
104
104
  ) VALUES (?, ?, ?, ?, ?, ?, ?)
@@ -110,7 +110,7 @@ var YZ=Object.defineProperty;var OZ=(Z)=>Z;function HZ(Z,$){this[Z]=OZ.bind(null
110
110
  configured_at = excluded.configured_at,
111
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
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=q();this.getRawDb().prepare(`INSERT INTO connector_connections (
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 (
114
114
  channel, instance_id, connect_args_json,
115
115
  last_successful_args_json, enabled, updated_at, last_connected_at
116
116
  ) VALUES (?, ?, ?, ?, 1, ?, ?)
@@ -121,7 +121,7 @@ var YZ=Object.defineProperty;var OZ=(Z)=>Z;function HZ(Z,$){this[Z]=OZ.bind(null
121
121
  updated_at = excluded.updated_at,
122
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
123
123
  SET enabled = ?, updated_at = ?
124
- WHERE channel = ? AND instance_id = ?`).run(_($),q(),Z,j);return}this.getRawDb().prepare(`UPDATE connector_connections
124
+ WHERE channel = ? AND instance_id = ?`).run(_($),M(),Z,j);return}this.getRawDb().prepare(`UPDATE connector_connections
125
125
  SET enabled = ?, updated_at = ?
126
- WHERE channel = ?`).run(_($),q(),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(q())}deleteConfig(Z){return(this.getRawDb().prepare("DELETE FROM connector_configs WHERE channel = ?").run(Z).changes??0)>0}importLegacyJsonSettings(){let Z=$Z();if(!j0(Z))return;try{let $=JSON.parse(X0(Z,"utf8")),j=N($)&&N($.connectors)?$.connectors:{};for(let[X,K]of Object.entries(j)){if(!N(K)||this.getConfig(X))continue;let V={};if(N(K.values)){for(let[B,J]of Object.entries(K.values))if(typeof J==="string")V[B]=J}let W={},z=N(K.security)?K.security:void 0;if(z&&N(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=UZ(Z.security_values_json),X=$||Object.keys(j).length>0;return{channel:Y(Z.channel),type:Y(Z.type),values:UZ(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:FZ(Z.connect_args_json)??[],lastSuccessfulArgs:FZ(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,q as nowIso,d as loadSqliteDb,$0 as ensureSessionSchema,GZ as ensureConnectorSchema,Y as asString,p as asOptionalString,sZ as asBool,c as SqliteConnectorStore};
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};
@@ -25,8 +25,10 @@ export interface ClientContext {
25
25
  * Identity of the authenticated user.
26
26
  */
27
27
  export interface UserContext {
28
- /** PostHog / analytics distinct ID */
28
+ /** PostHog / analytics distinct ID (an account or anonymous machine ID). */
29
29
  distinctId?: string;
30
+ /** Authenticated Cline account ID, or null when explicitly signed out. */
31
+ accountId?: string | null;
30
32
  email?: string;
31
33
  organizationId?: string;
32
34
  }
@@ -1,6 +1,8 @@
1
1
  export declare const FeatureFlag: {
2
2
  /** Enables ClinePass provider/model list exposure in supported clients. */
3
3
  readonly CLINE_PASS: "ext-cline-pass";
4
+ /** Makes the Cloud sessions opt-in visible in the Cline Code desktop app. */
5
+ readonly CODE_CLOUD_AGENTS: "code-cloud-agents";
4
6
  /** Shows the GitHub integration step in the desktop app */
5
7
  readonly CODE_ONBOARDING_GITHUB: "code-onboarding-github";
6
8
  };
package/dist/hub.d.ts CHANGED
@@ -597,3 +597,13 @@ export interface HubUIShowWindowPayload {
597
597
  windowId?: string;
598
598
  focus?: boolean;
599
599
  }
600
+ /**
601
+ * Human phrase for the live work an outdated Hub is serving, used by the
602
+ * "Hub update required" surfaces in the CLI and the desktop app - the two
603
+ * must read identically, which is why the copy lives here. Falls back to an
604
+ * unquantified phrase when the Hub could not answer the activity query.
605
+ */
606
+ export declare function describeOutdatedHubSessions(counts: {
607
+ activeSessionCount?: number;
608
+ participantClientCount?: number;
609
+ }): string;
@@ -10,7 +10,7 @@ export type { ClientContext, ClientName, ExtensionContext, UserContext, Workspac
10
10
  export type { AgentExtensionApi, AgentExtensionAutomationContext, AgentExtensionAutomationEventType, AgentExtensionCapability, AgentExtensionCommand, AgentExtensionCommandResult, AgentExtensionHooks, AgentExtensionMcpEnv, AgentExtensionMcpEnvValue, AgentExtensionMcpServer, AgentExtensionMcpSseTransport, AgentExtensionMcpStdioTransport, AgentExtensionMcpStreamableHttpTransport, AgentExtensionMcpTransport, AgentExtensionMessageBuilder, AgentExtensionProvider, AgentExtensionRegistry, AgentExtensionRule, AgentExtensionSessionContext, ContributionRegistryExtension, ContributionRegistryOptions, PluginManifest, PluginSetupContext, } from "./extensions/contribution-registry";
11
11
  export { ContributionRegistry, createContributionRegistry, normalizePluginManifest, } from "./extensions/contribution-registry";
12
12
  export { PLUGIN_FILE_EXTENSIONS } from "./extensions/plugin";
13
- export { FEATURE_FLAGS, type FeatureFlag, FeatureFlagDefaultValue, type FeatureFlagPayload, type FeatureFlagsAndPayloads, type FeatureFlagsContext, type FeatureFlagsSettings, type IFeatureFlagsProvider, } from "./feature-flags";
13
+ export { FEATURE_FLAGS, FeatureFlag, FeatureFlagDefaultValue, type FeatureFlagPayload, type FeatureFlagsAndPayloads, type FeatureFlagsContext, type FeatureFlagsSettings, type IFeatureFlagsProvider, } from "./feature-flags";
14
14
  export type { HookControl } from "./hooks/contracts";
15
15
  export type { AgentAbortHookPayload, AgentEndHookPayload, AgentErrorHookPayload, AgentResumeHookPayload, AgentStartHookPayload, HookEventName, HookEventPayload, HookEventPayloadBase, PostToolUseData, PreCompactData, PreCompactHookPayload, PreToolUseData, PromptSubmitHookPayload, SessionShutdownHookPayload, TaskCancelData, TaskCompleteData, TaskResumeData, TaskStartData, ToolCallHookPayload, ToolResultHookPayload, UserPromptSubmitData, } from "./hooks/events";
16
16
  export { HookEventNameSchema, HookEventPayloadSchema, parseHookEventPayload, } from "./hooks/events";