@cline/shared 0.0.81 → 0.0.82-nightly.1788402687

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.
@@ -11,6 +11,8 @@ export interface ChatRuntimeConfig extends SessionPromptConfig {
11
11
  enableSpawn?: boolean;
12
12
  enableTeams?: boolean;
13
13
  disableMcpSettingsTools?: boolean;
14
+ /** Additional Agent Plugins package roots resolved by the hub runtime. */
15
+ agentPluginPaths?: string[];
14
16
  autoApproveTools?: boolean;
15
17
  missionStepInterval?: number;
16
18
  missionTimeIntervalMs?: number;
@@ -173,6 +175,12 @@ export interface ProviderListItem {
173
175
  color: string;
174
176
  letter: string;
175
177
  enabled: boolean;
178
+ /**
179
+ * True when the persisted settings hold real credentials or a usable
180
+ * keyless endpoint (see @cline/core's isProviderSettingsUsable), unlike
181
+ * `enabled` which is set by any persisted entry.
182
+ */
183
+ configured?: boolean;
176
184
  apiKey?: string;
177
185
  oauthAccessTokenPresent?: boolean;
178
186
  baseUrl?: string;
@@ -1,2 +1,2 @@
1
1
  export { resolveExistingFilePath } from "./path-resolution";
2
- export { AGENT_CONFIG_DIRECTORY_NAME, AGENTS_RULES_FILE_NAME, CLINE_CHAT_WORKSPACE_DIRECTORY_NAME, CLINE_CONNECTOR_SETTINGS_FILE_NAME, CLINE_MCP_SETTINGS_FILE_NAME, CLINE_WORKSPACES_DIRECTORY_NAME, type CronSpecsScope, discoverPluginModulePaths, ensureFileExists, ensureHookLogDir, ensureParentDir, getPluginDisplayName, HOOKS_CONFIG_DIRECTORY_NAME, isChatWorkspacePath, isPluginModulePath, type ResolveCronSpecsDirOptions, type ResolveTaskSpecsDirOptions, RULES_CONFIG_DIRECTORY_NAME, resolveAgentConfigSearchPaths, resolveAgentsConfigDirPath, resolveChatWorkspacePath, resolveClineDataDir, resolveClineDir, resolveConfiguredPluginModulePaths, resolveConnectorDataDir, resolveConnectorLogPath, resolveConnectorSettingsPath, resolveConnectorsDbPath, resolveCronDbPath, resolveCronEventsDir, resolveCronReportsDir, resolveCronSpecsDir, resolveDbDataDir, resolveDocumentsClineDirectoryPath, resolveDocumentsExtensionPath, resolveGlobalAgentsRulesPath, resolveGlobalCronSpecsDir, resolveGlobalSettingsPath, resolveGlobalTaskSpecsDir, resolveHooksConfigSearchPaths, resolveMcpSettingsPath, resolvePluginConfigSearchPaths, resolvePluginModuleEntries, resolveProviderSettingsPath, resolveRulesConfigSearchPaths, resolveSessionDataDir, resolveSkillsConfigSearchPaths, resolveTaskSpecsDir, resolveTasksDbPath, resolveTeamDataDir, resolveWorkflowsConfigSearchPaths, resolveWorkspaceCronSpecsDir, resolveWorkspaceTaskSpecsDir, SKILLS_CONFIG_DIRECTORY_NAME, setClineDir, setClineDirIfUnset, setHomeDir, setHomeDirIfUnset, type TaskSpecsScope, WORKFLOWS_CONFIG_DIRECTORY_NAME, } from "./paths";
2
+ export { AGENT_CONFIG_DIRECTORY_NAME, AGENT_PLUGIN_MANIFEST_FILE_NAME, AGENTS_RULES_FILE_NAME, CLINE_CHAT_WORKSPACE_DIRECTORY_NAME, CLINE_CONNECTOR_SETTINGS_FILE_NAME, CLINE_MCP_SETTINGS_FILE_NAME, CLINE_WORKSPACES_DIRECTORY_NAME, type CronSpecsScope, discoverPluginModulePaths, ensureFileExists, ensureHookLogDir, ensureParentDir, getPluginDisplayName, HOOKS_CONFIG_DIRECTORY_NAME, isAgentPluginDirectory, isChatWorkspacePath, isPluginModulePath, type ResolveCronSpecsDirOptions, type ResolveTaskSpecsDirOptions, RULES_CONFIG_DIRECTORY_NAME, resolveAgentConfigSearchPaths, resolveAgentPluginSearchPaths, resolveAgentSchedulesDir, resolveAgentsConfigDirPath, resolveChatWorkspacePath, resolveClineDataDir, resolveClineDir, resolveConfiguredPluginModulePaths, resolveConnectorDataDir, resolveConnectorLogPath, resolveConnectorSettingsPath, resolveConnectorsDbPath, resolveCronDbPath, resolveCronEventsDir, resolveCronReportsDir, resolveCronSpecsDir, resolveDbDataDir, resolveDocumentsClineDirectoryPath, resolveDocumentsExtensionPath, resolveGlobalAgentsRulesPath, resolveGlobalCronSpecsDir, resolveGlobalSettingsPath, resolveGlobalTaskSpecsDir, resolveHooksConfigSearchPaths, resolveMcpSettingsPath, resolvePluginConfigSearchPaths, resolvePluginModuleEntries, resolveProviderSettingsPath, resolveRulesConfigSearchPaths, resolveSessionDataDir, resolveSkillsConfigSearchPaths, resolveTaskSpecsDir, resolveTasksDbPath, resolveTeamDataDir, resolveWorkflowsConfigSearchPaths, resolveWorkspaceCronSpecsDir, resolveWorkspaceTaskSpecsDir, SKILLS_CONFIG_DIRECTORY_NAME, setClineDir, setClineDirIfUnset, setHomeDir, setHomeDirIfUnset, type TaskSpecsScope, WORKFLOWS_CONFIG_DIRECTORY_NAME, } from "./paths";
@@ -1 +1 @@
1
- var MC=Object.defineProperty;var FC=(C)=>C;function WC(C,S){this[C]=FC.bind(null,S)}var DS=(C,S)=>{for(var T in S)MC(C,T,{get:S[T],enumerable:!0,configurable:!0,set:WC.bind(S,T)})};import{existsSync as K,readdirSync as YC}from"node:fs";import{basename as s,dirname as o,join as p}from"node:path";var KC=/[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g,qC=" ";function l(C){return C.normalize("NFC").replace(KC," ")}function QC(C){let S=s(C),T=S.replace(/ (AM|PM)\./gi,`${qC}$1.`);return T===S?C:p(o(C),T)}function ZC(C){return C.normalize("NFD")}function d(C){return C.replace(/'/g,"’")}function $C(C){let S=o(C),T=l(s(C));try{for(let G of YC(S))if(l(G)===T)return p(S,G)}catch{}return}function AC(C){if(K(C))return C;let S=QC(C);if(S!==C&&K(S))return S;let T=ZC(C);if(T!==C&&K(T))return T;let G=d(C);if(G!==C&&K(G))return G;let _=d(T);if(_!==T&&_!==G&&K(_))return _;return $C(C)}import{appendFileSync as RC,existsSync as I,mkdirSync as V,readdirSync as BC,readFileSync as h,statSync as q}from"node:fs";import{homedir as XC}from"node:os";import{basename as jC,dirname as U,extname as UC,isAbsolute as HC,join as E,relative as zC,resolve as M}from"node:path";var $="workspaces",A="chat";function P(C){let S=C.trim(),T=/^[A-Za-z]:[\\/]/.test(S)||S.startsWith("\\\\"),G=S.startsWith("/");if(!T&&!G)return!1;let _=S.split(T?/[\\/]+/:/\/+/).filter(Boolean),O=_.at(-1)??"",v=_.at(-2)??"",L=_.at(-3)??"";return(_.at(-4)??"")===".cline"&&L==="data"&&v==="workspaces"&&O==="chat"}var x=".clinerules",H=".cline",u=".agents",y="agents",R="hooks",X="skills",b="rules",B="workflows",c="plugins",w="AGENTS.md";function gC(){return E(D(),$,A)}var n="cline_mcp_settings.json",r="settings.json";function bC(){let C=process?.env?.HOME?.trim();if(C&&C!=="~")return C;let S=process?.env?.USERPROFILE?.trim();if(S)return S;let T=process?.env?.HOMEDRIVE?.trim(),G=process?.env?.HOMEPATH?.trim();if(T&&G)return`${T}${G}`;let _=XC().trim();if(_&&_!=="~")return _;return"~"}var F=bC(),i=!1;function JC(C){let S=C.trim();if(!S)return;F=S,i=!0}function VC(C){if(i)return;let S=C.trim();if(!S)return;F=S}var j,e=!1;function xC(C){let S=C.trim();if(!S)return;j=S,e=!0}function uC(C){if(e)return;let S=C.trim();if(!S)return;j=S}function N(){if(j)return j;let C=process.env.CLINE_DIR?.trim();if(C)return C;return E(F,".cline")}function t(){return E(F,"Documents","Cline")}function Z(C){return E(t(),C)}function D(){let C=process.env.CLINE_DATA_DIR?.trim();if(C)return C;return E(N(),"data")}function yC(){let C=process.env.CLINE_SESSION_DATA_DIR?.trim();if(C)return C;return E(D(),"sessions")}function wC(){let C=process.env.CLINE_TEAM_DATA_DIR?.trim();if(C)return C;return E(D(),"teams")}function a(){let C=process.env.CLINE_CONNECTOR_DATA_DIR?.trim();if(C)return C;return E(D(),"connectors")}function kC(C,S){let T=C.replace(/[^a-zA-Z0-9._-]+/g,"_"),G=S.replace(/[^a-zA-Z0-9._-]+/g,"_");return E(D(),"logs","connectors",T,`${G}.log`)}function mC(){let C=process.env.CLINE_CONNECTOR_SETTINGS_PATH?.trim();if(C)return C;return E(a(),r)}function z(){let C=process.env.CLINE_DB_DATA_DIR?.trim();if(C)return C;return E(D(),"db")}function fC(){let C=process.env.CLINE_CONNECTORS_DB_PATH?.trim();if(C)return C;return E(z(),"connectors.db")}function lC(){let C=process.env.CLINE_CRON_DB_PATH?.trim();if(C)return C;return E(z(),"cron.db")}function dC(){let C=process.env.CLINE_TASKS_DB_PATH?.trim();if(C)return C;return E(z(),"tasks.db")}function CC(){return E(N(),"tasks")}function SC(C){let S=C.trim();if(!S)throw Error("workspaceRoot is required for workspace task scope");return E(S,".cline","tasks")}function sC(C){let S=C.taskSpecsDir?.trim();if(S)return S;if(C.scope==="workspace")return SC(C.workspaceRoot??"");return CC()}function TC(){return E(N(),"cron")}function J(C){return E(C,".cline","cron")}function k(C){if(typeof C==="string")return J(C);if(C?.cronSpecsDir?.trim())return C.cronSpecsDir.trim();if(C?.scope==="workspace"){let S=C.workspaceRoot?.trim();if(!S)throw Error("workspaceRoot is required for workspace cron scope");return J(S)}return TC()}function oC(C){return E(k(C),"reports")}function pC(C){return E(k(C),"events")}function PC(){let C=process.env.CLINE_PROVIDER_SETTINGS_PATH?.trim();if(C)return C;return E(D(),"settings","providers.json")}function cC(){let C=process.env.CLINE_GLOBAL_SETTINGS_PATH?.trim();if(C)return C;return E(D(),"settings","global-settings.json")}function hC(){let C=process.env.CLINE_MCP_SETTINGS_PATH?.trim();if(C)return C;return E(D(),"settings",n)}function W(C){let S=new Set,T=[];for(let G of C){if(!G||S.has(G))continue;S.add(G),T.push(G)}return T}function nC(C){if(!C)return[];return[x,H,u].map((S)=>E(C,S,X))}function EC(){return E(N(),y)}function rC(C){return W([C?E(C,H,y):"",EC()])}function iC(C){let S=[Z("Hooks"),E(N(),R)];if(C)S.push(E(C,x,R),E(C,H,R));return W(S)}function eC(C){return W([...nC(C),E(N(),X),E(F,u,X)])}function _C(){return E(F,u,w)}function tC(C){let S=C?[E(C,x),E(C,H,b)]:[],T=C?[E(C,w)]:[];return W([...T,...S,_C(),E(N(),b),Z("Rules")])}function aC(C){return W([C?E(C,".clinerules",B):"",Z("Workflows"),E(N(),B),C?E(C,".cline",B):""])}function CS(C){return W([C?E(C,".cline",c):"",E(N(),c),Z("Plugins")])}var GC=new Set([".js",".ts"]),m="package.json",SS=["index.ts","index.js"];function Q(C){let S=C.lastIndexOf(".");if(S===-1)return!1;return GC.has(C.slice(S))}function OC(C){try{let S=JSON.parse(h(C,"utf8"));if(!S.cline||typeof S.cline!=="object")return null;return S.cline}catch{return null}}function IC(C){let S=C?.plugins;if(!Array.isArray(S))return[];return S.flatMap((T)=>T.paths??[])}function DC(C){let S=M(C);if(!I(S)||!q(S).isDirectory())return null;let T=E(S,m);if(I(T)){let G=OC(T),_=IC(G).map((O)=>M(S,O)).filter((O)=>I(O)&&q(O).isFile()&&Q(O));if(_.length>0)return _}for(let G of SS){let _=E(S,G);if(I(_)&&q(_).isFile())return[_]}return null}function TS(C){try{let S=JSON.parse(h(C,"utf8"));return typeof S.name==="string"&&S.name.trim()?S.name.trim():void 0}catch{return}}function ES(C,S){let T=zC(M(C),M(S));return T===""||!T.startsWith("..")&&!HC(T)}function _S(C,S){let T=U(C),G=M(S);while(ES(G,T)){let _=E(T,m);if(I(_)){let v=TS(_);if(v)return v;break}let O=M(T,"..");if(O===T)break;T=O}return jC(C,UC(C))}function vC(C){let S=M(C);if(!I(S))return[];let T=[],G=[S];while(G.length>0){let _=G.pop();if(!_)continue;let O;try{O=BC(_,{withFileTypes:!0})}catch{continue}for(let v of O){let L=E(_,v.name);if(v.isDirectory()){let g=E(L,m);if(I(g)){let NC=OC(g),f=IC(NC).map((Y)=>M(L,Y)).filter((Y)=>I(Y)&&q(Y).isFile()&&Q(Y));if(f.length>0){T.push(...f);continue}}G.push(L);continue}if(v.name.startsWith("."))continue;if(v.isFile()&&Q(L))T.push(L)}}return T.sort((_,O)=>_.localeCompare(O))}function GS(C,S){let T=[];for(let G of C){let _=G.trim();if(!_)continue;let O=M(S,_);if(!I(O))throw Error(`Plugin path does not exist: ${O}`);if(q(O).isDirectory()){let L=DC(O);if(L){T.push(...L);continue}T.push(...vC(O));continue}if(!Q(O))throw Error(`Plugin file must use a supported extension (${[...GC].join(", ")}): ${O}`);T.push(O)}return T}function LC(C){let S=U(C);if(!I(S))V(S,{recursive:!0})}function OS(C){V(U(C),{recursive:!0}),RC(C,"")}function IS(C){if(C?.trim())return LC(C),U(C);let S=E(D(),"logs");if(!I(S))V(S,{recursive:!0});return S}export{VC as setHomeDirIfUnset,JC as setHomeDir,uC as setClineDirIfUnset,xC as setClineDir,SC as resolveWorkspaceTaskSpecsDir,J as resolveWorkspaceCronSpecsDir,aC as resolveWorkflowsConfigSearchPaths,wC as resolveTeamDataDir,dC as resolveTasksDbPath,sC as resolveTaskSpecsDir,eC as resolveSkillsConfigSearchPaths,yC as resolveSessionDataDir,tC as resolveRulesConfigSearchPaths,PC as resolveProviderSettingsPath,DC as resolvePluginModuleEntries,CS as resolvePluginConfigSearchPaths,hC as resolveMcpSettingsPath,iC as resolveHooksConfigSearchPaths,CC as resolveGlobalTaskSpecsDir,cC as resolveGlobalSettingsPath,TC as resolveGlobalCronSpecsDir,_C as resolveGlobalAgentsRulesPath,AC as resolveExistingFilePath,Z as resolveDocumentsExtensionPath,t as resolveDocumentsClineDirectoryPath,z as resolveDbDataDir,k as resolveCronSpecsDir,oC as resolveCronReportsDir,pC as resolveCronEventsDir,lC as resolveCronDbPath,fC as resolveConnectorsDbPath,mC as resolveConnectorSettingsPath,kC as resolveConnectorLogPath,a as resolveConnectorDataDir,GS as resolveConfiguredPluginModulePaths,N as resolveClineDir,D as resolveClineDataDir,gC as resolveChatWorkspacePath,EC as resolveAgentsConfigDirPath,rC as resolveAgentConfigSearchPaths,Q as isPluginModulePath,P as isChatWorkspacePath,_S as getPluginDisplayName,LC as ensureParentDir,IS as ensureHookLogDir,OS as ensureFileExists,vC as discoverPluginModulePaths,B as WORKFLOWS_CONFIG_DIRECTORY_NAME,X as SKILLS_CONFIG_DIRECTORY_NAME,b as RULES_CONFIG_DIRECTORY_NAME,R as HOOKS_CONFIG_DIRECTORY_NAME,$ as CLINE_WORKSPACES_DIRECTORY_NAME,n as CLINE_MCP_SETTINGS_FILE_NAME,r as CLINE_CONNECTOR_SETTINGS_FILE_NAME,A as CLINE_CHAT_WORKSPACE_DIRECTORY_NAME,y as AGENT_CONFIG_DIRECTORY_NAME,w as AGENTS_RULES_FILE_NAME};
1
+ var FC=Object.defineProperty;var WC=(C)=>C;function YC(C,S){this[C]=WC.bind(null,S)}var FS=(C,S)=>{for(var E in S)FC(C,E,{get:S[E],enumerable:!0,configurable:!0,set:YC.bind(S,E)})};import{existsSync as K,readdirSync as KC}from"node:fs";import{basename as o,dirname as P,join as c}from"node:path";var qC=/[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g,QC=" ";function s(C){return C.normalize("NFC").replace(qC," ")}function ZC(C){let S=o(C),E=S.replace(/ (AM|PM)\./gi,`${QC}$1.`);return E===S?C:c(P(C),E)}function $C(C){return C.normalize("NFD")}function p(C){return C.replace(/'/g,"’")}function RC(C){let S=P(C),E=s(o(C));try{for(let G of KC(S))if(s(G)===E)return c(S,G)}catch{}return}function BC(C){if(K(C))return C;let S=ZC(C);if(S!==C&&K(S))return S;let E=$C(C);if(E!==C&&K(E))return E;let G=p(C);if(G!==C&&K(G))return G;let T=p(E);if(T!==E&&T!==G&&K(T))return T;return RC(C)}import{appendFileSync as XC,existsSync as O,mkdirSync as w,readdirSync as UC,readFileSync as n,statSync as F}from"node:fs";import{homedir as jC}from"node:os";import{basename as gC,dirname as g,extname as HC,isAbsolute as zC,join as _,relative as bC,resolve as M}from"node:path";var Z="workspaces",$="chat";function h(C){let S=C.trim(),E=/^[A-Za-z]:[\\/]/.test(S)||S.startsWith("\\\\"),G=S.startsWith("/");if(!E&&!G)return!1;let T=S.split(E?/[\\/]+/:/\/+/).filter(Boolean),I=T.at(-1)??"",D=T.at(-2)??"",N=T.at(-3)??"";return(T.at(-4)??"")===".cline"&&N==="data"&&D==="workspaces"&&I==="chat"}var y=".clinerules",H=".cline",z=".agents",JC=z,k="agents",R="hooks",X="skills",V="rules",B="workflows",x="plugins",m="AGENTS.md",r="plugin.json";function VC(){return _(L(),Z,$)}var i="cline_mcp_settings.json",e="settings.json";function xC(){let C=process?.env?.HOME?.trim();if(C&&C!=="~")return C;let S=process?.env?.USERPROFILE?.trim();if(S)return S;let E=process?.env?.HOMEDRIVE?.trim(),G=process?.env?.HOMEPATH?.trim();if(E&&G)return`${E}${G}`;let T=jC().trim();if(T&&T!=="~")return T;return"~"}var A=xC(),t=!1;function uC(C){let S=C.trim();if(!S)return;A=S,t=!0}function wC(C){if(t)return;let S=C.trim();if(!S)return;A=S}var U,a=!1;function yC(C){let S=C.trim();if(!S)return;U=S,a=!0}function kC(C){if(a)return;let S=C.trim();if(!S)return;U=S}function v(){if(U)return U;let C=process.env.CLINE_DIR?.trim();if(C)return C;return _(A,".cline")}function CC(){return _(A,"Documents","Cline")}function Q(C){return _(CC(),C)}function L(){let C=process.env.CLINE_DATA_DIR?.trim();if(C)return C;return _(v(),"data")}function mC(){let C=process.env.CLINE_SESSION_DATA_DIR?.trim();if(C)return C;return _(L(),"sessions")}function fC(){let C=process.env.CLINE_TEAM_DATA_DIR?.trim();if(C)return C;return _(L(),"teams")}function SC(){let C=process.env.CLINE_CONNECTOR_DATA_DIR?.trim();if(C)return C;return _(L(),"connectors")}function lC(C,S){let E=C.replace(/[^a-zA-Z0-9._-]+/g,"_"),G=S.replace(/[^a-zA-Z0-9._-]+/g,"_");return _(L(),"logs","connectors",E,`${G}.log`)}function dC(){let C=process.env.CLINE_CONNECTOR_SETTINGS_PATH?.trim();if(C)return C;return _(SC(),e)}function b(){let C=process.env.CLINE_DB_DATA_DIR?.trim();if(C)return C;return _(L(),"db")}function sC(){let C=process.env.CLINE_CONNECTORS_DB_PATH?.trim();if(C)return C;return _(b(),"connectors.db")}function pC(){let C=process.env.CLINE_CRON_DB_PATH?.trim();if(C)return C;return _(b(),"cron.db")}function oC(){let C=process.env.CLINE_TASKS_DB_PATH?.trim();if(C)return C;return _(b(),"tasks.db")}function PC(){return _(v(),"schedules")}function EC(){return _(v(),"tasks")}function _C(C){let S=C.trim();if(!S)throw Error("workspaceRoot is required for workspace task scope");return _(S,".cline","tasks")}function cC(C){let S=C.taskSpecsDir?.trim();if(S)return S;if(C.scope==="workspace")return _C(C.workspaceRoot??"");return EC()}function TC(){return _(v(),"cron")}function u(C){return _(C,".cline","cron")}function f(C){if(typeof C==="string")return u(C);if(C?.cronSpecsDir?.trim())return C.cronSpecsDir.trim();if(C?.scope==="workspace"){let S=C.workspaceRoot?.trim();if(!S)throw Error("workspaceRoot is required for workspace cron scope");return u(S)}return TC()}function hC(C){return _(f(C),"reports")}function nC(C){return _(f(C),"events")}function rC(){let C=process.env.CLINE_PROVIDER_SETTINGS_PATH?.trim();if(C)return C;return _(L(),"settings","providers.json")}function iC(){let C=process.env.CLINE_GLOBAL_SETTINGS_PATH?.trim();if(C)return C;return _(L(),"settings","global-settings.json")}function eC(){let C=process.env.CLINE_MCP_SETTINGS_PATH?.trim();if(C)return C;return _(L(),"settings",i)}function W(C){let S=new Set,E=[];for(let G of C){if(!G||S.has(G))continue;S.add(G),E.push(G)}return E}function tC(C){if(!C)return[];return[y,H,z].map((S)=>_(C,S,X))}function GC(){return _(v(),k)}function aC(C){return W([C?_(C,H,k):"",GC()])}function CS(C){let S=[Q("Hooks"),_(v(),R)];if(C)S.push(_(C,y,R),_(C,H,R));return W(S)}function SS(C){return W([...tC(C),_(v(),X),_(A,z,X)])}function IC(){return _(A,z,m)}function ES(C){let S=C?[_(C,y),_(C,H,V)]:[],E=C?[_(C,m)]:[];return W([...E,...S,IC(),_(v(),V),_(A,"Cline","Rules"),Q("Rules")])}function _S(C){return W([C?_(C,".clinerules",B):"",Q("Workflows"),_(v(),B),C?_(C,".cline",B):""])}function TS(C){return W([C?_(C,".cline",x):"",_(v(),x),Q("Plugins")])}function GS(){return[_(A,JC,x)]}var DC=new Set([".js",".ts"]),l="package.json",IS=["index.ts","index.js"],DS=new Set(["node_modules"]);function j(C){try{return F(_(C,r)).isFile()}catch{return!1}}function q(C){let S=C.lastIndexOf(".");if(S===-1)return!1;return DC.has(C.slice(S))}function NC(C){try{let S=JSON.parse(n(C,"utf8"));if(!S.cline||typeof S.cline!=="object")return null;return S.cline}catch{return null}}function OC(C){let S=C?.plugins;if(!Array.isArray(S))return[];return S.flatMap((E)=>E.paths??[])}function vC(C){let S=M(C);if(!O(S)||!F(S).isDirectory())return null;if(j(S))return null;let E=_(S,l);if(O(E)){let G=NC(E),T=OC(G).map((I)=>M(S,I)).filter((I)=>O(I)&&F(I).isFile()&&q(I));if(T.length>0)return T}for(let G of IS){let T=_(S,G);if(O(T)&&F(T).isFile())return[T]}return null}function NS(C){try{let S=JSON.parse(n(C,"utf8"));return typeof S.name==="string"&&S.name.trim()?S.name.trim():void 0}catch{return}}function OS(C,S){let E=bC(M(C),M(S));return E===""||!E.startsWith("..")&&!zC(E)}function vS(C,S){let E=g(C),G=M(S);while(OS(G,E)){let T=_(E,l);if(O(T)){let D=NS(T);if(D)return D;break}let I=M(E,"..");if(I===E)break;E=I}return gC(C,HC(C))}function LC(C){let S=M(C);if(!O(S))return[];if(j(S))return[];let E=[],G=[S];while(G.length>0){let T=G.pop();if(!T)continue;let I;try{I=UC(T,{withFileTypes:!0})}catch{continue}for(let D of I){let N=_(T,D.name);if(D.isDirectory()){if(j(N))continue;if(DS.has(D.name)||D.name.startsWith("."))continue;let J=_(N,l);if(O(J)){let AC=NC(J),d=OC(AC).map((Y)=>M(N,Y)).filter((Y)=>O(Y)&&F(Y).isFile()&&q(Y));if(d.length>0){E.push(...d);continue}}G.push(N);continue}if(D.name.startsWith("."))continue;if(D.isFile()&&q(N))E.push(N)}}return E.sort((T,I)=>T.localeCompare(I))}function LS(C,S){let E=[];for(let G of C){let T=G.trim();if(!T)continue;let I=M(S,T);if(!O(I))throw Error(`Plugin path does not exist: ${I}`);if(F(I).isDirectory()){let N=vC(I);if(N){E.push(...N);continue}E.push(...LC(I));continue}if(!q(I))throw Error(`Plugin file must use a supported extension (${[...DC].join(", ")}): ${I}`);E.push(I)}return E}function MC(C){let S=g(C);if(!O(S))w(S,{recursive:!0})}function MS(C){w(g(C),{recursive:!0}),XC(C,"")}function AS(C){if(C?.trim())return MC(C),g(C);let S=_(L(),"logs");if(!O(S))w(S,{recursive:!0});return S}export{wC as setHomeDirIfUnset,uC as setHomeDir,kC as setClineDirIfUnset,yC as setClineDir,_C as resolveWorkspaceTaskSpecsDir,u as resolveWorkspaceCronSpecsDir,_S as resolveWorkflowsConfigSearchPaths,fC as resolveTeamDataDir,oC as resolveTasksDbPath,cC as resolveTaskSpecsDir,SS as resolveSkillsConfigSearchPaths,mC as resolveSessionDataDir,ES as resolveRulesConfigSearchPaths,rC as resolveProviderSettingsPath,vC as resolvePluginModuleEntries,TS as resolvePluginConfigSearchPaths,eC as resolveMcpSettingsPath,CS as resolveHooksConfigSearchPaths,EC as resolveGlobalTaskSpecsDir,iC as resolveGlobalSettingsPath,TC as resolveGlobalCronSpecsDir,IC as resolveGlobalAgentsRulesPath,BC as resolveExistingFilePath,Q as resolveDocumentsExtensionPath,CC as resolveDocumentsClineDirectoryPath,b as resolveDbDataDir,f as resolveCronSpecsDir,hC as resolveCronReportsDir,nC as resolveCronEventsDir,pC as resolveCronDbPath,sC as resolveConnectorsDbPath,dC as resolveConnectorSettingsPath,lC as resolveConnectorLogPath,SC as resolveConnectorDataDir,LS as resolveConfiguredPluginModulePaths,v as resolveClineDir,L as resolveClineDataDir,VC as resolveChatWorkspacePath,GC as resolveAgentsConfigDirPath,PC as resolveAgentSchedulesDir,GS as resolveAgentPluginSearchPaths,aC as resolveAgentConfigSearchPaths,q as isPluginModulePath,h as isChatWorkspacePath,j as isAgentPluginDirectory,vS as getPluginDisplayName,MC as ensureParentDir,AS as ensureHookLogDir,MS as ensureFileExists,LC as discoverPluginModulePaths,B as WORKFLOWS_CONFIG_DIRECTORY_NAME,X as SKILLS_CONFIG_DIRECTORY_NAME,V as RULES_CONFIG_DIRECTORY_NAME,R as HOOKS_CONFIG_DIRECTORY_NAME,Z as CLINE_WORKSPACES_DIRECTORY_NAME,i as CLINE_MCP_SETTINGS_FILE_NAME,e as CLINE_CONNECTOR_SETTINGS_FILE_NAME,$ as CLINE_CHAT_WORKSPACE_DIRECTORY_NAME,r as AGENT_PLUGIN_MANIFEST_FILE_NAME,k as AGENT_CONFIG_DIRECTORY_NAME,m as AGENTS_RULES_FILE_NAME};
@@ -6,6 +6,20 @@ export declare const RULES_CONFIG_DIRECTORY_NAME = "rules";
6
6
  export declare const WORKFLOWS_CONFIG_DIRECTORY_NAME = "workflows";
7
7
  export declare const PLUGINS_DIRECTORY_NAME = "plugins";
8
8
  export declare const AGENTS_RULES_FILE_NAME = "AGENTS.md";
9
+ /**
10
+ * Manifest that marks a directory as an Agent Plugin (agent-plugins.org).
11
+ * Per the specification a plugin MUST carry this file at its root, which makes
12
+ * it the discriminator between the two package lanes:
13
+ *
14
+ * - Agent plugin -> `<root>/plugin.json`, discovered under `.agents/plugins`
15
+ * - Cline plugin -> a JS/TS module, discovered under `.cline/plugins`
16
+ *
17
+ * Cline plugin discovery treats it as a hard stop: a directory carrying this
18
+ * file is never scanned for Cline plugin modules, so a plugin authored for
19
+ * another client and dropped into a Cline plugin root cannot have its skill
20
+ * scripts or another vendor's extension directory imported as Cline code.
21
+ */
22
+ export declare const AGENT_PLUGIN_MANIFEST_FILE_NAME = "plugin.json";
9
23
  /**
10
24
  * Shared workspace for all sessions started without a `cwd`/`workspaceRoot`.
11
25
  * Lives under the cline data dir (not `os.tmpdir()`) so OS temp reapers never
@@ -58,6 +72,13 @@ export interface ResolveTaskSpecsDirOptions {
58
72
  /** Required for workspace-scoped task specs. */
59
73
  workspaceRoot?: string;
60
74
  }
75
+ /**
76
+ * Home workspace for agent-created schedules: `~/.cline/schedules/`.
77
+ * Agent-created schedules are user-level routines, so they anchor here (and
78
+ * their unattended sessions run here) instead of inheriting whichever chat
79
+ * workspace happened to create them.
80
+ */
81
+ export declare function resolveAgentSchedulesDir(): string;
61
82
  /** Global file-backed agenda tasks: `~/.cline/tasks/`. */
62
83
  export declare function resolveGlobalTaskSpecsDir(): string;
63
84
  /** Workspace file-backed agenda tasks: `<workspace>/.cline/tasks/`. */
@@ -117,6 +138,26 @@ export declare function resolveGlobalAgentsRulesPath(): string;
117
138
  export declare function resolveRulesConfigSearchPaths(workspacePath?: string): string[];
118
139
  export declare function resolveWorkflowsConfigSearchPaths(workspacePath?: string): string[];
119
140
  export declare function resolvePluginConfigSearchPaths(workspacePath?: string): string[];
141
+ /**
142
+ * Root searched for Agent Plugins (agent-plugins.org). Kept separate from
143
+ * {@link resolvePluginConfigSearchPaths} so the two package lanes never share a
144
+ * directory: `.agents/plugins` is the vendor-neutral location, matching the
145
+ * `.agents/skills` convention already honored by skill discovery.
146
+ *
147
+ * Discovery roots are explicitly client-defined by the specification. Cline
148
+ * only auto-discovers user-installed packages from the Hub host's home so
149
+ * opening a repository cannot activate repository-controlled MCP servers.
150
+ */
151
+ export declare function resolveAgentPluginSearchPaths(): string[];
152
+ /**
153
+ * True when `directoryPath` carries an Agent Plugin manifest at its root.
154
+ *
155
+ * Only the manifest's presence is checked here. Validating its contents
156
+ * (`$schema`, `name`, the closed field set) belongs to the Agent Plugin loader;
157
+ * discovery only needs to know that this directory belongs to the other lane
158
+ * and must not be scanned for Cline plugin modules.
159
+ */
160
+ export declare function isAgentPluginDirectory(directoryPath: string): boolean;
120
161
  export declare function isPluginModulePath(path: string): boolean;
121
162
  export declare function resolvePluginModuleEntries(directoryPath: string): string[] | null;
122
163
  /**
@@ -20,7 +20,7 @@ export declare const TeamSpawnTeammateInputSchema: z.ZodObject<{
20
20
  }, z.core.$strict>;
21
21
  export declare const TeamShutdownTeammateInputSchema: z.ZodObject<{
22
22
  agentId: z.ZodString;
23
- reason: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
23
+ reason: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
24
24
  }, z.core.$strip>;
25
25
  export declare const TeamStatusInputSchema: z.ZodObject<{}, z.core.$strip>;
26
26
  type TeamTaskAction = "create" | "list" | "claim" | "complete" | "block";
@@ -33,29 +33,29 @@ export declare const TeamTaskInputSchema: z.ZodObject<{
33
33
  complete: "complete";
34
34
  block: "block";
35
35
  }>;
36
- title: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
37
- description: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
38
- dependsOn: z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodString>>>;
39
- assignee: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
36
+ title: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
37
+ description: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
38
+ dependsOn: z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodString>>, unknown>;
39
+ assignee: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
40
40
  status: z.ZodPreprocess<z.ZodOptional<z.ZodEnum<{
41
41
  completed: "completed";
42
42
  in_progress: "in_progress";
43
43
  pending: "pending";
44
44
  blocked: "blocked";
45
- }>>>;
46
- taskId: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
47
- summary: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
48
- reason: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
45
+ }>>, unknown>;
46
+ taskId: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
47
+ summary: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
48
+ reason: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
49
49
  }, z.core.$strip>;
50
50
  export declare const TeamRunTaskInputSchema: z.ZodObject<{
51
51
  agentId: z.ZodString;
52
52
  task: z.ZodString;
53
- taskId: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
53
+ taskId: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
54
54
  runMode: z.ZodPreprocess<z.ZodOptional<z.ZodEnum<{
55
55
  sync: "sync";
56
56
  async: "async";
57
- }>>>;
58
- continueConversation: z.ZodPreprocess<z.ZodOptional<z.ZodBoolean>>;
57
+ }>>, unknown>;
58
+ continueConversation: z.ZodPreprocess<z.ZodOptional<z.ZodBoolean>, unknown>;
59
59
  }, z.core.$strip>;
60
60
  export declare const TeamListRunsInputSchema: z.ZodObject<{
61
61
  status: z.ZodPreprocess<z.ZodOptional<z.ZodEnum<{
@@ -65,30 +65,30 @@ export declare const TeamListRunsInputSchema: z.ZodObject<{
65
65
  cancelled: "cancelled";
66
66
  interrupted: "interrupted";
67
67
  queued: "queued";
68
- }>>>;
69
- agentId: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
70
- includeCompleted: z.ZodPreprocess<z.ZodOptional<z.ZodBoolean>>;
68
+ }>>, unknown>;
69
+ agentId: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
70
+ includeCompleted: z.ZodPreprocess<z.ZodOptional<z.ZodBoolean>, unknown>;
71
71
  }, z.core.$strip>;
72
72
  export declare const TeamCancelRunInputSchema: z.ZodObject<{
73
73
  runId: z.ZodString;
74
- reason: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
74
+ reason: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
75
75
  }, z.core.$strip>;
76
76
  export declare const TeamAwaitRunsInputSchema: z.ZodObject<{
77
- runId: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
77
+ runId: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
78
78
  }, z.core.$strict>;
79
79
  export declare const TeamSendMessageInputSchema: z.ZodObject<{
80
80
  toAgentId: z.ZodString;
81
81
  subject: z.ZodString;
82
82
  body: z.ZodString;
83
- taskId: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
83
+ taskId: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
84
84
  }, z.core.$strip>;
85
85
  export declare const TeamBroadcastInputSchema: z.ZodObject<{
86
86
  subject: z.ZodString;
87
87
  body: z.ZodString;
88
- taskId: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
88
+ taskId: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
89
89
  }, z.core.$strip>;
90
90
  export declare const TeamReadMailboxInputSchema: z.ZodObject<{
91
- unreadOnly: z.ZodPreprocess<z.ZodOptional<z.ZodBoolean>>;
91
+ unreadOnly: z.ZodPreprocess<z.ZodOptional<z.ZodBoolean>, unknown>;
92
92
  }, z.core.$strip>;
93
93
  export declare const TeamMissionLogInputSchema: z.ZodObject<{
94
94
  kind: z.ZodEnum<{
@@ -100,9 +100,9 @@ export declare const TeamMissionLogInputSchema: z.ZodObject<{
100
100
  decision: "decision";
101
101
  }>;
102
102
  summary: z.ZodString;
103
- taskId: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
104
- evidence: z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodString>>>;
105
- nextAction: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
103
+ taskId: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
104
+ evidence: z.ZodPreprocess<z.ZodOptional<z.ZodArray<z.ZodString>>, unknown>;
105
+ nextAction: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
106
106
  }, z.core.$strip>;
107
107
  export declare const TeamCleanupInputSchema: z.ZodObject<{}, z.core.$strip>;
108
108
  export declare const TeamCreateOutcomeInputSchema: z.ZodObject<{
@@ -112,7 +112,7 @@ export declare const TeamCreateOutcomeInputSchema: z.ZodObject<{
112
112
  export declare const TeamAttachOutcomeFragmentInputSchema: z.ZodObject<{
113
113
  outcomeId: z.ZodString;
114
114
  section: z.ZodString;
115
- sourceRunId: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
115
+ sourceRunId: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
116
116
  content: z.ZodString;
117
117
  }, z.core.$strip>;
118
118
  export declare const TeamReviewOutcomeFragmentInputSchema: z.ZodObject<{
@@ -184,8 +184,8 @@ export declare const TeamTaskListItemToolResultSchema: z.ZodObject<{
184
184
  pending: "pending";
185
185
  blocked: "blocked";
186
186
  }>;
187
- createdAt: z.ZodPreprocess<z.ZodString>;
188
- updatedAt: z.ZodPreprocess<z.ZodString>;
187
+ createdAt: z.ZodPreprocess<z.ZodString, unknown>;
188
+ updatedAt: z.ZodPreprocess<z.ZodString, unknown>;
189
189
  createdBy: z.ZodString;
190
190
  assignee: z.ZodOptional<z.ZodString>;
191
191
  dependsOn: z.ZodArray<z.ZodString>;
@@ -216,8 +216,8 @@ export declare const TeamTaskToolResultSchema: z.ZodDiscriminatedUnion<[z.ZodObj
216
216
  pending: "pending";
217
217
  blocked: "blocked";
218
218
  }>;
219
- createdAt: z.ZodPreprocess<z.ZodString>;
220
- updatedAt: z.ZodPreprocess<z.ZodString>;
219
+ createdAt: z.ZodPreprocess<z.ZodString, unknown>;
220
+ updatedAt: z.ZodPreprocess<z.ZodString, unknown>;
221
221
  createdBy: z.ZodString;
222
222
  assignee: z.ZodOptional<z.ZodString>;
223
223
  dependsOn: z.ZodArray<z.ZodString>;
@@ -302,13 +302,13 @@ export declare const TeamRunToolSummarySchema: z.ZodObject<{
302
302
  priority: z.ZodNumber;
303
303
  retryCount: z.ZodNumber;
304
304
  maxRetries: z.ZodNumber;
305
- nextAttemptAt: z.ZodOptional<z.ZodPreprocess<z.ZodString>>;
305
+ nextAttemptAt: z.ZodOptional<z.ZodPreprocess<z.ZodString, unknown>>;
306
306
  continueConversation: z.ZodOptional<z.ZodBoolean>;
307
- startedAt: z.ZodPreprocess<z.ZodString>;
308
- endedAt: z.ZodOptional<z.ZodPreprocess<z.ZodString>>;
307
+ startedAt: z.ZodPreprocess<z.ZodString, unknown>;
308
+ endedAt: z.ZodOptional<z.ZodPreprocess<z.ZodString, unknown>>;
309
309
  leaseOwner: z.ZodOptional<z.ZodString>;
310
- heartbeatAt: z.ZodOptional<z.ZodPreprocess<z.ZodString>>;
311
- lastProgressAt: z.ZodOptional<z.ZodPreprocess<z.ZodString>>;
310
+ heartbeatAt: z.ZodOptional<z.ZodPreprocess<z.ZodString, unknown>>;
311
+ lastProgressAt: z.ZodOptional<z.ZodPreprocess<z.ZodString, unknown>>;
312
312
  lastProgressMessage: z.ZodOptional<z.ZodString>;
313
313
  currentActivity: z.ZodOptional<z.ZodString>;
314
314
  error: z.ZodOptional<z.ZodString>;
@@ -334,8 +334,8 @@ export declare const TeamMailboxMessageToolResultSchema: z.ZodObject<{
334
334
  subject: z.ZodString;
335
335
  body: z.ZodString;
336
336
  taskId: z.ZodOptional<z.ZodString>;
337
- sentAt: z.ZodPreprocess<z.ZodString>;
338
- readAt: z.ZodOptional<z.ZodPreprocess<z.ZodString>>;
337
+ sentAt: z.ZodPreprocess<z.ZodString, unknown>;
338
+ readAt: z.ZodOptional<z.ZodPreprocess<z.ZodString, unknown>>;
339
339
  }, z.core.$strip>;
340
340
  export declare const TeamOutcomeToolResultSchema: z.ZodObject<{
341
341
  id: z.ZodString;
@@ -348,8 +348,8 @@ export declare const TeamOutcomeToolResultSchema: z.ZodObject<{
348
348
  }>;
349
349
  requiredSections: z.ZodArray<z.ZodString>;
350
350
  createdBy: z.ZodString;
351
- createdAt: z.ZodPreprocess<z.ZodString>;
352
- finalizedAt: z.ZodOptional<z.ZodPreprocess<z.ZodString>>;
351
+ createdAt: z.ZodPreprocess<z.ZodString, unknown>;
352
+ finalizedAt: z.ZodOptional<z.ZodPreprocess<z.ZodString, unknown>>;
353
353
  }, z.core.$strip>;
354
354
  export declare const TeamCreateOutcomeToolResultSchema: z.ZodObject<{
355
355
  outcomeId: z.ZodString;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cline/shared",
3
- "version": "0.0.81",
3
+ "version": "0.0.82-nightly.1788402687",
4
4
  "description": "Shared utilities, types, and schemas for Cline packages",
5
5
  "repository": {
6
6
  "type": "git",