@cline/shared 0.0.86 → 0.0.88-nightly.1790735522

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 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 (
1
+ import{existsSync as rn,readFileSync as sn,renameSync as on}from"node:fs";import{appendFileSync as ge,existsSync as u,mkdirSync as M,readdirSync as de,readFileSync as J,statSync as S}from"node:fs";import{homedir as Te}from"node:os";import{basename as _e,dirname as O,extname as fe,isAbsolute as Ne,join as o,relative as Ce,resolve as g}from"node:path";var v="workspaces",b="chat";function Ee(e){let n=e.trim(),t=/^[A-Za-z]:[\\/]/.test(n)||n.startsWith("\\\\"),r=n.startsWith("/");if(!t&&!r)return!1;let s=n.split(t?/[\\/]+/:/\/+/).filter(Boolean),i=s.at(-1)??"",c=s.at(-2)??"",a=s.at(-3)??"";return(s.at(-4)??"")===".cline"&&a==="data"&&c==="workspaces"&&i==="chat"}var X=".clinerules",h=".cline",I=".agents",Re=I,Q="agents",y="hooks",P="skills",V="rules",k="workflows",w="plugins",z="AGENTS.md",Se="plugin.json";function Tn(){return o(p(),v,b)}var Le="cline_mcp_settings.json",De="settings.json";function me(){let e=process?.env?.HOME?.trim();if(e&&e!=="~")return e;let n=process?.env?.USERPROFILE?.trim();if(n)return n;let t=process?.env?.HOMEDRIVE?.trim(),r=process?.env?.HOMEPATH?.trim();if(t&&r)return`${t}${r}`;let s=Te().trim();if(s&&s!=="~")return s;return"~"}var d=me(),Z=!1;function _n(e){let n=e.trim();if(!n)return;d=n,Z=!0}function fn(e){if(Z)return;let n=e.trim();if(!n)return;d=n}var m,ee=!1;function Nn(e){let n=e.trim();if(!n)return;m=n,ee=!0}function Cn(e){if(ee)return;let n=e.trim();if(!n)return;m=n}function l(){if(m)return m;let e=process.env.CLINE_DIR?.trim();if(e)return e;return o(d,".cline")}function Ae(){return o(d,"Documents","Cline")}function x(e){return o(Ae(),e)}function p(){let e=process.env.CLINE_DATA_DIR?.trim();if(e)return e;return o(l(),"data")}function Rn(){let e=process.env.CLINE_SESSION_DATA_DIR?.trim();if(e)return e;return o(p(),"sessions")}function Sn(){let e=process.env.CLINE_TEAM_DATA_DIR?.trim();if(e)return e;return o(p(),"teams")}function Oe(){let e=process.env.CLINE_CONNECTOR_DATA_DIR?.trim();if(e)return e;return o(p(),"connectors")}function Ln(e,n){let t=e.replace(/[^a-zA-Z0-9._-]+/g,"_"),r=n.replace(/[^a-zA-Z0-9._-]+/g,"_");return o(p(),"logs","connectors",t,`${r}.log`)}function ne(){let e=process.env.CLINE_CONNECTOR_SETTINGS_PATH?.trim();if(e)return e;return o(Oe(),De)}function G(){let e=process.env.CLINE_DB_DATA_DIR?.trim();if(e)return e;return o(p(),"db")}function te(){let e=process.env.CLINE_CONNECTORS_DB_PATH?.trim();if(e)return e;return o(G(),"connectors.db")}function Dn(){let e=process.env.CLINE_CRON_DB_PATH?.trim();if(e)return e;return o(G(),"cron.db")}function mn(){let e=process.env.CLINE_TASKS_DB_PATH?.trim();if(e)return e;return o(G(),"tasks.db")}function An(){return o(l(),"schedules")}function he(){return o(l(),"tasks")}function Ie(e){let n=e.trim();if(!n)throw Error("workspaceRoot is required for workspace task scope");return o(n,".cline","tasks")}function On(e){let n=e.taskSpecsDir?.trim();if(n)return n;if(e.scope==="workspace")return Ie(e.workspaceRoot??"");return he()}function xe(){return o(l(),"cron")}function K(e){return o(e,".cline","cron")}function re(e){if(typeof e==="string")return K(e);if(e?.cronSpecsDir?.trim())return e.cronSpecsDir.trim();if(e?.scope==="workspace"){let n=e.workspaceRoot?.trim();if(!n)throw Error("workspaceRoot is required for workspace cron scope");return K(n)}return xe()}function hn(e){return o(re(e),"reports")}function In(e){return o(re(e),"events")}function xn(){let e=process.env.CLINE_PROVIDER_SETTINGS_PATH?.trim();if(e)return e;return o(p(),"settings","providers.json")}function vn(){let e=process.env.CLINE_GLOBAL_SETTINGS_PATH?.trim();if(e)return e;return o(p(),"settings","global-settings.json")}function bn(){let e=process.env.CLINE_MCP_SETTINGS_PATH?.trim();if(e)return e;return o(p(),"settings",Le)}function N(e){let n=new Set,t=[];for(let r of e){if(!r||n.has(r))continue;n.add(r),t.push(r)}return t}function ve(e){if(!e)return[];return[X,h,I].map((n)=>o(e,n,P))}function be(){return o(l(),Q)}function yn(e){return N([e?o(e,h,Q):"",be()])}function kn(e){let n=[x("Hooks"),o(l(),y)];if(e)n.push(o(e,X,y),o(e,h,y));return N(n)}function Pn(e){return N([...ve(e),o(l(),P),o(d,I,P)])}function ye(){return o(d,I,z)}function ke(e){return[o(e,X),o(e,h,V)]}function Pe(){let e=[];for(let n of["OneDrive","OneDriveConsumer","OneDriveCommercial"]){let t=process.env[n]?.trim();if(t)e.push(o(t,"Documents"))}return e}function we(){return N([o(l(),V),o(d,"Cline","Rules"),x("Rules"),...Pe().map((e)=>o(e,"Cline","Rules"))])}function wn(e){let n=e?ke(e):[],t=e?[o(e,z)]:[];return N([...t,...n,ye(),...we()])}function Un(e){return N([e?o(e,".clinerules",k):"",x("Workflows"),o(l(),k),e?o(e,".cline",k):""])}function Mn(e){return N([e?o(e,".cline",w):"",o(l(),w),x("Plugins")])}function Xn(){return[o(d,Re,w)]}var se=new Set([".js",".ts"]),F="package.json",Ue=["index.ts","index.js"],Me=new Set(["node_modules"]);function U(e){try{return S(o(e,Se)).isFile()}catch{return!1}}function A(e){let n=e.lastIndexOf(".");if(n===-1)return!1;return se.has(e.slice(n))}function oe(e){try{let n=JSON.parse(J(e,"utf8"));if(!n.cline||typeof n.cline!=="object")return null;return n.cline}catch{return null}}function ie(e){let n=e?.plugins;if(!Array.isArray(n))return[];return n.flatMap((t)=>t.paths??[])}function Xe(e){let n=g(e);if(!u(n)||!S(n).isDirectory())return null;if(U(n))return null;let t=o(n,F);if(u(t)){let r=oe(t),s=ie(r).map((i)=>g(n,i)).filter((i)=>u(i)&&S(i).isFile()&&A(i));if(s.length>0)return s}for(let r of Ue){let s=o(n,r);if(u(s)&&S(s).isFile())return[s]}return null}function Ge(e){try{let n=JSON.parse(J(e,"utf8"));return typeof n.name==="string"&&n.name.trim()?n.name.trim():void 0}catch{return}}function Fe(e,n){let t=Ce(g(e),g(n));return t===""||!t.startsWith("..")&&!Ne(t)}function Gn(e,n){let t=O(e),r=g(n);while(Fe(r,t)){let s=o(t,F);if(u(s)){let c=Ge(s);if(c)return c;break}let i=g(t,"..");if(i===t)break;t=i}return _e(e,fe(e))}function qe(e){let n=g(e);if(!u(n))return[];if(U(n))return[];let t=[],r=[n];while(r.length>0){let s=r.pop();if(!s)continue;let i;try{i=de(s,{withFileTypes:!0})}catch{continue}for(let c of i){let a=o(s,c.name);if(c.isDirectory()){if(U(a))continue;if(Me.has(c.name)||c.name.startsWith("."))continue;let _=o(a,F);if(u(_)){let f=oe(_),H=ie(f).map((L)=>g(a,L)).filter((L)=>u(L)&&S(L).isFile()&&A(L));if(H.length>0){t.push(...H);continue}}r.push(a);continue}if(c.name.startsWith("."))continue;if(c.isFile()&&A(a))t.push(a)}}return t.sort((s,i)=>s.localeCompare(i))}function Fn(e,n){let t=[];for(let r of e){let s=r.trim();if(!s)continue;let i=g(n,s);if(!u(i))throw Error(`Plugin path does not exist: ${i}`);if(S(i).isDirectory()){let a=Xe(i);if(a){t.push(...a);continue}t.push(...qe(i));continue}if(!A(i))throw Error(`Plugin file must use a supported extension (${[...se].join(", ")}): ${i}`);t.push(i)}return t}function Ye(e){let n=O(e);if(!u(n))M(n,{recursive:!0})}function qn(e){M(O(e),{recursive:!0}),ge(e,"")}function Yn(e){if(e?.trim())return Ye(e),O(e);let n=o(p(),"logs");if(!u(n))M(n,{recursive:!0});return n}import{mkdirSync as je}from"node:fs";import{createRequire as Be}from"node:module";import{dirname as We}from"node:path";function ce(e){if(e instanceof Error)return e.message;return String(e)}function ae(e){if(e&&typeof e==="object"&&"code"in e&&typeof e.code==="string")return e.code;return""}var He=3,Ke=50;function C(){return new Date().toISOString()}function D(e){return e?1:0}function E(e){return typeof e==="string"?e:""}function q(e){if(typeof e!=="string")return;let n=e.trim();return n.length>0?n:void 0}function Je(e){return e===1||e===!0}function $e(e){if(e<=0)return;try{let n=new SharedArrayBuffer(4),t=new Int32Array(n);Atomics.wait(t,0,0,e)}catch{}}function Qe(e){if(!e||typeof e!=="object")return!1;let n=ce(e),t=ae(e);return t==="SQLITE_BUSY"||t==="SQLITE_LOCKED"||n.includes("SQLITE_BUSY")||n.includes("SQLITE_LOCKED")||n.includes("database is locked")}function T(e){let n=0;for(;;)try{return e()}catch(t){if(!Qe(t)||n>=He)throw t;n+=1,$e(Ke*2**(n-1))}}function Ve(e){return{prepare:(n)=>{let t=e.query(n);return{run:(...r)=>T(()=>t.run(...r)),get:(...r)=>T(()=>t.get(...r)),all:(...r)=>T(()=>t.all(...r))}},exec:(n)=>T(()=>e.exec(n)),close:()=>e.close?.()}}function ze(e){return{prepare:(n)=>{let t=e.prepare(n);return{run:(...r)=>T(()=>t.run(...r)),get:(...r)=>T(()=>t.get(...r)??null),all:(...r)=>T(()=>t.all(...r))}},exec:(n)=>T(()=>e.exec(n)),close:()=>e.close?.()}}function Y(e){je(We(e),{recursive:!0});let n=Be(import.meta.url);if(typeof globalThis.Bun<"u"){let{Database:r}=n("bun:sqlite");return Ve(new r(e,{create:!0}))}let t=process.emitWarning;process.emitWarning=(r,...s)=>{if((typeof r==="string"?r:r?.message??"").includes("SQLite"))return;return t.call(process,r,...s)};try{let{DatabaseSync:r}=n(["node",":sqlite"].join(""));return ze(new r(e))}finally{process.emitWarning=t}}var Ze=[`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 zX=Object.defineProperty;var OX=(X)=>X;function YX(X,Z){this[X]=OX.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);`],$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 (
80
+ ON schedules(enabled, next_run_at);`],en=[{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 nn(e,n){return new Set(e.prepare(`PRAGMA table_info(${n});`).all().map((t)=>t.name))}function tn(e,n={}){e.exec("PRAGMA journal_mode = WAL;"),e.exec("PRAGMA busy_timeout = 5000;");for(let s of Ze)e.exec(s);if(!n.includeLegacyMigrations)return;let t=new Map,r=(s)=>{let i=t.get(s);if(!i)i=nn(e,s),t.set(s,i);return i};for(let s of en)if(!r(s.table).has(s.column)){if(e.exec(s.sql),s.column==="workspace_root")e.exec("UPDATE sessions SET workspace_root = cwd WHERE workspace_root IS NULL OR workspace_root = '';");t.delete(s.table)}}var cn=`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 zX=Object.defineProperty;var OX=(X)=>X;function YX(X,Z){this[X]=OX.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
- );`,VZ=`CREATE TABLE IF NOT EXISTS connector_connections (
88
+ );`,an=`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 zX=Object.defineProperty;var OX=(X)=>X;function YX(X,Z){this[X]=OX.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 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
97
+ );`;function pe(e){e.exec("PRAGMA journal_mode = WAL;"),e.exec("PRAGMA busy_timeout = 5000;"),e.exec(cn),e.exec(an)}function R(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function ue(e){if(typeof e!=="string"||!e)return{};try{let n=JSON.parse(e);if(!R(n))return{};let t={};for(let[r,s]of Object.entries(n))if(typeof s==="string")t[r]=s;return t}catch{return{}}}function le(e){if(typeof e!=="string"||!e)return;try{let n=JSON.parse(e);if(!Array.isArray(n))return;return n.filter((t)=>typeof t==="string")}catch{return}}class W{dbPath;db;constructor(e={}){this.dbPath=e.dbPath??te()}getRawDb(){if(this.db)return this.db;let e=Y(this.dbPath);return pe(e),this.db=e,this.importLegacyJsonSettings(),e}close(){this.db?.close?.(),this.db=void 0}getConfig(e){let n=this.getRawDb().prepare("SELECT * FROM connector_configs WHERE channel = ?").get(e);return n?j(n):void 0}listConfigs(){return this.getRawDb().prepare("SELECT * FROM connector_configs ORDER BY channel ASC").all().map(j)}getConnection(e,n){let t=this.getRawDb().prepare(`SELECT * FROM connector_connections
98
+ WHERE channel = ? AND instance_id = ?`).get(e,n);return t?B(t):void 0}listConnections(e){return(e?this.getRawDb().prepare(`SELECT * FROM connector_connections
99
99
  WHERE channel = ?
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 (
100
+ ORDER BY instance_id ASC`).all(e):this.getRawDb().prepare(`SELECT * FROM connector_connections
101
+ ORDER BY channel ASC, instance_id ASC`).all()).map(B)}upsertConfig(e){let n=C(),t=this.getRawDb();t.exec("BEGIN IMMEDIATE;");try{let r=t.prepare("SELECT * FROM connector_configs WHERE channel = ?").get(e.channel),s=r?j(r):void 0,c=t.prepare("SELECT * FROM connector_connections WHERE channel = ?").all(e.channel).map(B),a=e.updateConnectArgs&&c.length===1&&c[0]?e.updateConnectArgs({config:s,connection:c[0]}):void 0;if(t.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 zX=Object.defineProperty;var OX=(X)=>X;function YX(X,Z){this[X]=OX.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(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
111
+ updated_at = excluded.updated_at`).run(e.channel,e.type??e.channel,JSON.stringify(e.values),D(e.security?.enabled===!0),JSON.stringify(e.security?.values??{}),e.configuredAt??s?.configuredAt??n,e.updatedAt??n),a&&c[0])t.prepare(`UPDATE connector_connections
112
112
  SET connect_args_json = ?, updated_at = ?
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 (
113
+ WHERE channel = ? AND instance_id = ?`).run(JSON.stringify(a),n,e.channel,c[0].instanceId);t.exec("COMMIT;")}catch(r){try{t.exec("ROLLBACK;")}catch{}throw r}}recordConnected(e,n,t){let r=C();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 zX=Object.defineProperty;var OX=(X)=>X;function YX(X,Z){this[X]=OX.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(X,Z,JSON.stringify($),JSON.stringify($),j,j)}setEnabled(X,Z,$){if($){this.getRawDb().prepare(`UPDATE connector_connections
122
+ last_connected_at = excluded.last_connected_at`).run(e,n,JSON.stringify(t),JSON.stringify(t),r,r)}setEnabled(e,n,t){if(t){this.getRawDb().prepare(`UPDATE connector_connections
123
123
  SET enabled = ?, updated_at = ?
124
- WHERE channel = ? AND instance_id = ?`).run(E(Z),J(),X,$);return}this.getRawDb().prepare(`UPDATE connector_connections
124
+ WHERE channel = ? AND instance_id = ?`).run(D(n),C(),e,t);return}this.getRawDb().prepare(`UPDATE connector_connections
125
125
  SET enabled = ?, updated_at = ?
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};
126
+ WHERE channel = ?`).run(D(n),C(),e)}deleteConnection(e,n){return(this.getRawDb().prepare(`DELETE FROM connector_connections
127
+ WHERE channel = ? AND instance_id = ?`).run(e,n).changes??0)>0}disableAll(){this.getRawDb().prepare("UPDATE connector_connections SET enabled = 0, updated_at = ?").run(C())}deleteConfig(e){return(this.getRawDb().prepare("DELETE FROM connector_configs WHERE channel = ?").run(e).changes??0)>0}importLegacyJsonSettings(){let e=ne();if(!rn(e))return;try{let n=JSON.parse(sn(e,"utf8")),t=R(n)&&R(n.connectors)?n.connectors:{};for(let[r,s]of Object.entries(t)){if(!R(s)||this.getConfig(r))continue;let i={};if(R(s.values)){for(let[_,f]of Object.entries(s.values))if(typeof f==="string")i[_]=f}let c={},a=R(s.security)?s.security:void 0;if(a&&R(a.values)){for(let[_,f]of Object.entries(a.values))if(typeof f==="string")c[_]=f}this.upsertConfig({channel:r,type:typeof s.type==="string"?s.type:r,values:i,security:a?{enabled:a.enabled===!0,values:c}:void 0,configuredAt:typeof s.configuredAt==="string"?s.configuredAt:void 0,updatedAt:typeof s.updatedAt==="string"?s.updatedAt:void 0})}on(e,`${e}.migrated`)}catch{}}}function j(e){let n=e.security_enabled===1,t=ue(e.security_values_json),r=n||Object.keys(t).length>0;return{channel:E(e.channel),type:E(e.type),values:ue(e.values_json),security:r?{enabled:n,values:t}:void 0,configuredAt:E(e.configured_at),updatedAt:E(e.updated_at)}}function B(e){return{channel:E(e.channel),instanceId:E(e.instance_id),connectArgs:le(e.connect_args_json)??[],lastSuccessfulArgs:le(e.last_successful_args_json)??[],enabled:e.enabled===1,updatedAt:E(e.updated_at),lastConnectedAt:q(e.last_connected_at)??E(e.updated_at)}}function un(e){let n=new W;try{return e(n)}finally{n.close()}}export{W as SqliteConnectorStore,Je as asBool,q as asOptionalString,E as asString,pe as ensureConnectorSchema,tn as ensureSessionSchema,Y as loadSqliteDb,C as nowIso,D as toBoolInt,un as withConnectorStore};