@cline/shared 0.0.65 → 0.0.66

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.
@@ -0,0 +1,2 @@
1
+ /** Canonical default model for the Cline provider. */
2
+ export declare const CLINE_DEFAULT_MODEL_ID = "anthropic/claude-sonnet-5";
@@ -1,2 +1,10 @@
1
1
  export declare const CLINE_RUN_AS_HUB_DAEMON_ENV = "CLINE_RUN_AS_HUB_DAEMON";
2
+ export declare const CLINE_CONNECTOR_CLI_LAUNCH_ENV = "CLINE_CONNECTOR_CLI_LAUNCH";
3
+ export interface ConnectorCliLaunchSpec {
4
+ launcher: string;
5
+ connectArgsPrefix: string[];
6
+ cwd: string;
7
+ }
2
8
  export declare function isHubDaemonProcess(env?: Record<string, string | undefined>): boolean;
9
+ export declare function setConnectorCliLaunchSpec(spec: ConnectorCliLaunchSpec, env?: Record<string, string | undefined>): void;
10
+ export declare function readConnectorCliLaunchSpec(env?: Record<string, string | undefined>): ConnectorCliLaunchSpec | undefined;
@@ -28,8 +28,35 @@ export interface CaptureAgentUnexpectedReasoningTokensInput {
28
28
  requestedThinking: false;
29
29
  reasoningTokenCount: number;
30
30
  }
31
+ export declare const TASK_PROVIDER_REQUEST_STARTED_EVENT = "task.provider_request_started";
32
+ export declare const TASK_PROVIDER_STREAM_STARTED_EVENT = "task.provider_stream_started";
33
+ export declare const TASK_FIRST_CHUNK_RECEIVED_EVENT = "task.first_chunk_received";
34
+ export declare const TASK_PROVIDER_STREAM_FAILED_EVENT = "task.provider_stream_failed";
35
+ export declare const TASK_CANCELLED_EVENT = "task.cancelled";
36
+ export interface CaptureTaskLifecycleEventInput {
37
+ event: string;
38
+ sessionId?: string;
39
+ ulid?: string;
40
+ agentId?: string;
41
+ conversationId?: string;
42
+ runId?: string;
43
+ iteration?: number;
44
+ providerId?: string;
45
+ modelId?: string;
46
+ phase?: string;
47
+ durationMs?: number;
48
+ eventType?: string;
49
+ error?: unknown;
50
+ messageLimit?: number;
51
+ }
31
52
  export interface TelemetryMetadata {
32
53
  extension_version: string;
54
+ /**
55
+ * The version of the host-side Cline distribution package: the JetBrains plugin version
56
+ * (e.g. 1.1.61) on JetBrains, the extension version on VSCode (where it matches
57
+ * `extension_version`). Absent when the host does not report one.
58
+ */
59
+ host_plugin_version?: string;
33
60
  cline_type: string;
34
61
  platform: string;
35
62
  platform_version: string;
@@ -58,6 +85,7 @@ export interface ITelemetryService {
58
85
  }
59
86
  export declare const SDK_ERROR_TELEMETRY_EVENT = "sdk.error";
60
87
  export declare function captureAgentUnexpectedReasoningTokens(telemetry: ITelemetryService | undefined, input: CaptureAgentUnexpectedReasoningTokensInput): void;
88
+ export declare function captureTaskLifecycleEvent(telemetry: ITelemetryService | undefined, input: CaptureTaskLifecycleEventInput): void;
61
89
  export declare function captureSdkError(telemetry: ITelemetryService | undefined, input: CaptureSdkErrorInput): void;
62
90
  export declare function buildSdkErrorProperties(input: CaptureSdkErrorInput): TelemetryProperties;
63
91
  export declare function normalizeSdkError(error: unknown, messageLimit?: number): TelemetryProperties;
@@ -68,7 +96,7 @@ export interface OpenTelemetryClientConfig {
68
96
  enabled: boolean;
69
97
  /**
70
98
  * Metrics exporter type(s) - can be comma-separated for multiple exporters
71
- * Examples: "console", "otlp", "prometheus", "console,otlp"
99
+ * Examples: "console", "otlp", "console,otlp"
72
100
  */
73
101
  metricsExporter?: string;
74
102
  /**
@@ -0,0 +1,10 @@
1
+ export declare const CLINE_WORKSPACES_DIRECTORY_NAME = "workspaces";
2
+ export declare const CLINE_CHAT_WORKSPACE_DIRECTORY_NAME = "chat";
3
+ /**
4
+ * Browser-safe structural check for the shared chat workspace that hosts
5
+ * sessions started without a project: `.cline/data/workspaces/chat`. Matches
6
+ * the directory itself only — project folders created inside it are regular
7
+ * workspaces. Matches the default data-dir layout; explicit `CLINE_DATA_DIR`
8
+ * overrides are not detectable from a bare path string.
9
+ */
10
+ export declare function isChatWorkspacePath(path: string): boolean;
@@ -1,2 +1,2 @@
1
1
  export { resolveExistingFilePath } from "./path-resolution";
2
- export { AGENT_CONFIG_DIRECTORY_NAME, AGENTS_RULES_FILE_NAME, CLINE_CONNECTOR_SETTINGS_FILE_NAME, CLINE_MCP_SETTINGS_FILE_NAME, type CronSpecsScope, discoverPluginModulePaths, ensureFileExists, ensureHookLogDir, ensureParentDir, HOOKS_CONFIG_DIRECTORY_NAME, isPluginModulePath, type ResolveCronSpecsDirOptions, RULES_CONFIG_DIRECTORY_NAME, resolveAgentConfigSearchPaths, resolveAgentsConfigDirPath, resolveClineDataDir, resolveClineDir, resolveConfiguredPluginModulePaths, resolveConnectorDataDir, resolveConnectorSettingsPath, resolveCronDbPath, resolveCronEventsDir, resolveCronReportsDir, resolveCronSpecsDir, resolveDbDataDir, resolveDocumentsClineDirectoryPath, resolveDocumentsExtensionPath, resolveGlobalAgentsRulesPath, resolveGlobalCronSpecsDir, resolveGlobalSettingsPath, resolveHooksConfigSearchPaths, resolveMcpSettingsPath, resolvePluginConfigSearchPaths, resolvePluginModuleEntries, resolveProviderSettingsPath, resolveRulesConfigSearchPaths, resolveSessionDataDir, resolveSkillsConfigSearchPaths, resolveTeamDataDir, resolveWorkflowsConfigSearchPaths, resolveWorkspaceCronSpecsDir, SKILLS_CONFIG_DIRECTORY_NAME, setClineDir, setClineDirIfUnset, setHomeDir, setHomeDirIfUnset, WORKFLOWS_CONFIG_DIRECTORY_NAME, } from "./paths";
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, HOOKS_CONFIG_DIRECTORY_NAME, isChatWorkspacePath, isPluginModulePath, type ResolveCronSpecsDirOptions, RULES_CONFIG_DIRECTORY_NAME, resolveAgentConfigSearchPaths, resolveAgentsConfigDirPath, resolveChatWorkspacePath, resolveClineDataDir, resolveClineDir, resolveConfiguredPluginModulePaths, resolveConnectorDataDir, resolveConnectorSettingsPath, resolveConnectorsDbPath, resolveCronDbPath, resolveCronEventsDir, resolveCronReportsDir, resolveCronSpecsDir, resolveDbDataDir, resolveDocumentsClineDirectoryPath, resolveDocumentsExtensionPath, resolveGlobalAgentsRulesPath, resolveGlobalCronSpecsDir, resolveGlobalSettingsPath, resolveHooksConfigSearchPaths, resolveMcpSettingsPath, resolvePluginConfigSearchPaths, resolvePluginModuleEntries, resolveProviderSettingsPath, resolveRulesConfigSearchPaths, resolveSessionDataDir, resolveSkillsConfigSearchPaths, resolveTeamDataDir, resolveWorkflowsConfigSearchPaths, resolveWorkspaceCronSpecsDir, SKILLS_CONFIG_DIRECTORY_NAME, setClineDir, setClineDirIfUnset, setHomeDir, setHomeDirIfUnset, WORKFLOWS_CONFIG_DIRECTORY_NAME, } from "./paths";
@@ -1 +1 @@
1
- var MC=Object.defineProperty;var OC=(C)=>C;function TC(C,S){this[C]=OC.bind(null,S)}var cC=(C,S)=>{for(var I in S)MC(C,I,{get:S[I],enumerable:!0,configurable:!0,set:TC.bind(S,I)})};import{existsSync as g,readdirSync as EC}from"node:fs";import{basename as m,dirname as f,join as l}from"node:path";var FC=/[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g,LC=" ";function y(C){return C.normalize("NFC").replace(FC," ")}function NC(C){let S=m(C),I=S.replace(/ (AM|PM)\./gi,`${LC}$1.`);return I===S?C:l(f(C),I)}function vC(C){return C.normalize("NFD")}function k(C){return C.replace(/'/g,"’")}function KC(C){let S=f(C),I=y(m(C));try{for(let _ of EC(S))if(y(_)===I)return l(S,_)}catch{}return}function gC(C){if(g(C))return C;let S=NC(C);if(S!==C&&g(S))return S;let I=vC(C);if(I!==C&&g(I))return I;let _=k(C);if(_!==C&&g(_))return _;let D=k(I);if(D!==I&&D!==_&&g(D))return D;return KC(C)}import{appendFileSync as WC,existsSync as O,mkdirSync as R,readdirSync as YC,readFileSync as qC,statSync as W}from"node:fs";import{homedir as QC}from"node:os";import{dirname as U,join as G,resolve as Y}from"node:path";var H=".clinerules",B=".cline",J=".agents",b="agents",Z="hooks",z="skills",j="rules",$="workflows",s="plugins",V="AGENTS.md",o="cline_mcp_settings.json",d="settings.json";function ZC(){let C=process?.env?.HOME?.trim();if(C&&C!=="~")return C;let S=process?.env?.USERPROFILE?.trim();if(S)return S;let I=process?.env?.HOMEDRIVE?.trim(),_=process?.env?.HOMEPATH?.trim();if(I&&_)return`${I}${_}`;let D=QC().trim();if(D&&D!=="~")return D;return"~"}var L=ZC(),p=!1;function $C(C){let S=C.trim();if(!S)return;L=S,p=!0}function zC(C){if(p)return;let S=C.trim();if(!S)return;L=S}var A,c=!1;function AC(C){let S=C.trim();if(!S)return;A=S,c=!0}function BC(C){if(c)return;let S=C.trim();if(!S)return;A=S}function T(){if(A)return A;let C=process.env.CLINE_DIR?.trim();if(C)return C;return G(L,".cline")}function P(){return G(L,"Documents","Cline")}function Q(C){return G(P(),C)}function E(){let C=process.env.CLINE_DATA_DIR?.trim();if(C)return C;return G(T(),"data")}function jC(){let C=process.env.CLINE_SESSION_DATA_DIR?.trim();if(C)return C;return G(E(),"sessions")}function XC(){let C=process.env.CLINE_TEAM_DATA_DIR?.trim();if(C)return C;return G(E(),"teams")}function h(){let C=process.env.CLINE_CONNECTOR_DATA_DIR?.trim();if(C)return C;return G(E(),"connectors")}function RC(){let C=process.env.CLINE_CONNECTOR_SETTINGS_PATH?.trim();if(C)return C;return G(h(),d)}function n(){let C=process.env.CLINE_DB_DATA_DIR?.trim();if(C)return C;return G(E(),"db")}function UC(){let C=process.env.CLINE_CRON_DB_PATH?.trim();if(C)return C;return G(n(),"cron.db")}function r(){return G(T(),"cron")}function X(C){return G(C,".cline","cron")}function x(C){if(typeof C==="string")return X(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 X(S)}return r()}function HC(C){return G(x(C),"reports")}function JC(C){return G(x(C),"events")}function bC(){let C=process.env.CLINE_PROVIDER_SETTINGS_PATH?.trim();if(C)return C;return G(E(),"settings","providers.json")}function VC(){let C=process.env.CLINE_GLOBAL_SETTINGS_PATH?.trim();if(C)return C;return G(E(),"settings","global-settings.json")}function xC(){let C=process.env.CLINE_MCP_SETTINGS_PATH?.trim();if(C)return C;return G(E(),"settings",o)}function N(C){let S=new Set,I=[];for(let _ of C){if(!_||S.has(_))continue;S.add(_),I.push(_)}return I}function uC(C){if(!C)return[];return[H,B,J].map((S)=>G(C,S,z))}function i(){return G(T(),b)}function wC(C){return N([C?G(C,B,b):"",i()])}function yC(C){let S=[Q("Hooks"),G(T(),Z)];if(C)S.push(G(C,H,Z),G(C,B,Z));return N(S)}function kC(C){return N([...uC(C),G(T(),z),G(L,J,z)])}function e(){return G(L,J,V)}function mC(C){let S=C?[G(C,H),G(C,B,j)]:[],I=C?[G(C,V)]:[];return N([...I,...S,e(),G(T(),j),Q("Rules")])}function fC(C){return N([C?G(C,".clinerules",$):"",Q("Workflows"),G(T(),$),C?G(C,".cline",$):""])}function lC(C){return N([C?G(C,".cline",s):"",G(T(),s),Q("Plugins")])}var t=new Set([".js",".ts"]),a="package.json",sC=["index.ts","index.js"];function q(C){let S=C.lastIndexOf(".");if(S===-1)return!1;return t.has(C.slice(S))}function CC(C){try{let S=JSON.parse(qC(C,"utf8"));if(!S.cline||typeof S.cline!=="object")return null;return S.cline}catch{return null}}function SC(C){let S=C?.plugins;if(!Array.isArray(S))return[];return S.flatMap((I)=>I.paths??[])}function GC(C){let S=Y(C);if(!O(S)||!W(S).isDirectory())return null;let I=G(S,a);if(O(I)){let _=CC(I),D=SC(_).map((M)=>Y(S,M)).filter((M)=>O(M)&&W(M).isFile()&&q(M));if(D.length>0)return D}for(let _ of sC){let D=G(S,_);if(O(D)&&W(D).isFile())return[D]}return null}function IC(C){let S=Y(C);if(!O(S))return[];let I=[],_=[S];while(_.length>0){let D=_.pop();if(!D)continue;let M;try{M=YC(D,{withFileTypes:!0})}catch{continue}for(let v of M){let F=G(D,v.name);if(v.isDirectory()){let u=G(F,a);if(O(u)){let DC=CC(u),w=SC(DC).map((K)=>Y(F,K)).filter((K)=>O(K)&&W(K).isFile()&&q(K));if(w.length>0){I.push(...w);continue}}_.push(F);continue}if(v.name.startsWith("."))continue;if(v.isFile()&&q(F))I.push(F)}}return I.sort((D,M)=>D.localeCompare(M))}function oC(C,S){let I=[];for(let _ of C){let D=_.trim();if(!D)continue;let M=Y(S,D);if(!O(M))throw Error(`Plugin path does not exist: ${M}`);if(W(M).isDirectory()){let F=GC(M);if(F){I.push(...F);continue}I.push(...IC(M));continue}if(!q(M))throw Error(`Plugin file must use a supported extension (${[...t].join(", ")}): ${M}`);I.push(M)}return I}function _C(C){let S=U(C);if(!O(S))R(S,{recursive:!0})}function dC(C){R(U(C),{recursive:!0}),WC(C,"")}function pC(C){if(C?.trim())return _C(C),U(C);let S=G(E(),"logs");if(!O(S))R(S,{recursive:!0});return S}export{zC as setHomeDirIfUnset,$C as setHomeDir,BC as setClineDirIfUnset,AC as setClineDir,X as resolveWorkspaceCronSpecsDir,fC as resolveWorkflowsConfigSearchPaths,XC as resolveTeamDataDir,kC as resolveSkillsConfigSearchPaths,jC as resolveSessionDataDir,mC as resolveRulesConfigSearchPaths,bC as resolveProviderSettingsPath,GC as resolvePluginModuleEntries,lC as resolvePluginConfigSearchPaths,xC as resolveMcpSettingsPath,yC as resolveHooksConfigSearchPaths,VC as resolveGlobalSettingsPath,r as resolveGlobalCronSpecsDir,e as resolveGlobalAgentsRulesPath,gC as resolveExistingFilePath,Q as resolveDocumentsExtensionPath,P as resolveDocumentsClineDirectoryPath,n as resolveDbDataDir,x as resolveCronSpecsDir,HC as resolveCronReportsDir,JC as resolveCronEventsDir,UC as resolveCronDbPath,RC as resolveConnectorSettingsPath,h as resolveConnectorDataDir,oC as resolveConfiguredPluginModulePaths,T as resolveClineDir,E as resolveClineDataDir,i as resolveAgentsConfigDirPath,wC as resolveAgentConfigSearchPaths,q as isPluginModulePath,_C as ensureParentDir,pC as ensureHookLogDir,dC as ensureFileExists,IC as discoverPluginModulePaths,$ as WORKFLOWS_CONFIG_DIRECTORY_NAME,z as SKILLS_CONFIG_DIRECTORY_NAME,j as RULES_CONFIG_DIRECTORY_NAME,Z as HOOKS_CONFIG_DIRECTORY_NAME,o as CLINE_MCP_SETTINGS_FILE_NAME,d as CLINE_CONNECTOR_SETTINGS_FILE_NAME,b as AGENT_CONFIG_DIRECTORY_NAME,V as AGENTS_RULES_FILE_NAME};
1
+ var KC=Object.defineProperty;var LC=(C)=>C;function MC(C,S){this[C]=LC.bind(null,S)}var iC=(C,S)=>{for(var _ in S)KC(C,_,{get:S[_],enumerable:!0,configurable:!0,set:MC.bind(S,_)})};import{existsSync as Y,readdirSync as vC}from"node:fs";import{basename as d,dirname as o,join as p}from"node:path";var FC=/[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g,WC=" ";function m(C){return C.normalize("NFC").replace(FC," ")}function YC(C){let S=d(C),_=S.replace(/ (AM|PM)\./gi,`${WC}$1.`);return _===S?C:p(o(C),_)}function DC(C){return C.normalize("NFD")}function l(C){return C.replace(/'/g,"’")}function RC(C){let S=o(C),_=m(d(C));try{for(let I of vC(S))if(m(I)===_)return p(S,I)}catch{}return}function qC(C){if(Y(C))return C;let S=YC(C);if(S!==C&&Y(S))return S;let _=DC(C);if(_!==C&&Y(_))return _;let I=l(C);if(I!==C&&Y(I))return I;let G=l(_);if(G!==_&&G!==I&&Y(G))return G;return RC(C)}import{appendFileSync as QC,existsSync as T,mkdirSync as J,readdirSync as ZC,readFileSync as $C,statSync as D}from"node:fs";import{homedir as AC}from"node:os";import{dirname as b,join as E,resolve as R}from"node:path";var Z="workspaces",$="chat";function s(C){let S=C.trim(),_=/^[A-Za-z]:[\\/]/.test(S)||S.startsWith("\\\\"),I=S.startsWith("/");if(!_&&!I)return!1;let G=S.split(_?/[\\/]+/:/\/+/).filter(Boolean),O=G.at(-1)??"",M=G.at(-2)??"",N=G.at(-3)??"";return(G.at(-4)??"")===".cline"&&N==="data"&&M==="workspaces"&&O==="chat"}var V=".clinerules",U=".cline",x=".agents",u="agents",A="hooks",X="skills",z="rules",B="workflows",P="plugins",k="AGENTS.md";function BC(){return E(K(),Z,$)}var c="cline_mcp_settings.json",n="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 _=process?.env?.HOMEDRIVE?.trim(),I=process?.env?.HOMEPATH?.trim();if(_&&I)return`${_}${I}`;let G=AC().trim();if(G&&G!=="~")return G;return"~"}var v=XC(),h=!1;function jC(C){let S=C.trim();if(!S)return;v=S,h=!0}function UC(C){if(h)return;let S=C.trim();if(!S)return;v=S}var j,r=!1;function gC(C){let S=C.trim();if(!S)return;j=S,r=!0}function zC(C){if(r)return;let S=C.trim();if(!S)return;j=S}function L(){if(j)return j;let C=process.env.CLINE_DIR?.trim();if(C)return C;return E(v,".cline")}function i(){return E(v,"Documents","Cline")}function Q(C){return E(i(),C)}function K(){let C=process.env.CLINE_DATA_DIR?.trim();if(C)return C;return E(L(),"data")}function HC(){let C=process.env.CLINE_SESSION_DATA_DIR?.trim();if(C)return C;return E(K(),"sessions")}function JC(){let C=process.env.CLINE_TEAM_DATA_DIR?.trim();if(C)return C;return E(K(),"teams")}function e(){let C=process.env.CLINE_CONNECTOR_DATA_DIR?.trim();if(C)return C;return E(K(),"connectors")}function bC(){let C=process.env.CLINE_CONNECTOR_SETTINGS_PATH?.trim();if(C)return C;return E(e(),n)}function y(){let C=process.env.CLINE_DB_DATA_DIR?.trim();if(C)return C;return E(K(),"db")}function VC(){let C=process.env.CLINE_CONNECTORS_DB_PATH?.trim();if(C)return C;return E(y(),"connectors.db")}function xC(){let C=process.env.CLINE_CRON_DB_PATH?.trim();if(C)return C;return E(y(),"cron.db")}function t(){return E(L(),"cron")}function H(C){return E(C,".cline","cron")}function w(C){if(typeof C==="string")return H(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 H(S)}return t()}function uC(C){return E(w(C),"reports")}function kC(C){return E(w(C),"events")}function yC(){let C=process.env.CLINE_PROVIDER_SETTINGS_PATH?.trim();if(C)return C;return E(K(),"settings","providers.json")}function wC(){let C=process.env.CLINE_GLOBAL_SETTINGS_PATH?.trim();if(C)return C;return E(K(),"settings","global-settings.json")}function fC(){let C=process.env.CLINE_MCP_SETTINGS_PATH?.trim();if(C)return C;return E(K(),"settings",c)}function F(C){let S=new Set,_=[];for(let I of C){if(!I||S.has(I))continue;S.add(I),_.push(I)}return _}function mC(C){if(!C)return[];return[V,U,x].map((S)=>E(C,S,X))}function a(){return E(L(),u)}function lC(C){return F([C?E(C,U,u):"",a()])}function dC(C){let S=[Q("Hooks"),E(L(),A)];if(C)S.push(E(C,V,A),E(C,U,A));return F(S)}function oC(C){return F([...mC(C),E(L(),X),E(v,x,X)])}function CC(){return E(v,x,k)}function pC(C){let S=C?[E(C,V),E(C,U,z)]:[],_=C?[E(C,k)]:[];return F([..._,...S,CC(),E(L(),z),Q("Rules")])}function sC(C){return F([C?E(C,".clinerules",B):"",Q("Workflows"),E(L(),B),C?E(C,".cline",B):""])}function PC(C){return F([C?E(C,".cline",P):"",E(L(),P),Q("Plugins")])}var SC=new Set([".js",".ts"]),EC="package.json",cC=["index.ts","index.js"];function q(C){let S=C.lastIndexOf(".");if(S===-1)return!1;return SC.has(C.slice(S))}function _C(C){try{let S=JSON.parse($C(C,"utf8"));if(!S.cline||typeof S.cline!=="object")return null;return S.cline}catch{return null}}function GC(C){let S=C?.plugins;if(!Array.isArray(S))return[];return S.flatMap((_)=>_.paths??[])}function IC(C){let S=R(C);if(!T(S)||!D(S).isDirectory())return null;let _=E(S,EC);if(T(_)){let I=_C(_),G=GC(I).map((O)=>R(S,O)).filter((O)=>T(O)&&D(O).isFile()&&q(O));if(G.length>0)return G}for(let I of cC){let G=E(S,I);if(T(G)&&D(G).isFile())return[G]}return null}function OC(C){let S=R(C);if(!T(S))return[];let _=[],I=[S];while(I.length>0){let G=I.pop();if(!G)continue;let O;try{O=ZC(G,{withFileTypes:!0})}catch{continue}for(let M of O){let N=E(G,M.name);if(M.isDirectory()){let g=E(N,EC);if(T(g)){let TC=_C(g),f=GC(TC).map((W)=>R(N,W)).filter((W)=>T(W)&&D(W).isFile()&&q(W));if(f.length>0){_.push(...f);continue}}I.push(N);continue}if(M.name.startsWith("."))continue;if(M.isFile()&&q(N))_.push(N)}}return _.sort((G,O)=>G.localeCompare(O))}function nC(C,S){let _=[];for(let I of C){let G=I.trim();if(!G)continue;let O=R(S,G);if(!T(O))throw Error(`Plugin path does not exist: ${O}`);if(D(O).isDirectory()){let N=IC(O);if(N){_.push(...N);continue}_.push(...OC(O));continue}if(!q(O))throw Error(`Plugin file must use a supported extension (${[...SC].join(", ")}): ${O}`);_.push(O)}return _}function NC(C){let S=b(C);if(!T(S))J(S,{recursive:!0})}function hC(C){J(b(C),{recursive:!0}),QC(C,"")}function rC(C){if(C?.trim())return NC(C),b(C);let S=E(K(),"logs");if(!T(S))J(S,{recursive:!0});return S}export{UC as setHomeDirIfUnset,jC as setHomeDir,zC as setClineDirIfUnset,gC as setClineDir,H as resolveWorkspaceCronSpecsDir,sC as resolveWorkflowsConfigSearchPaths,JC as resolveTeamDataDir,oC as resolveSkillsConfigSearchPaths,HC as resolveSessionDataDir,pC as resolveRulesConfigSearchPaths,yC as resolveProviderSettingsPath,IC as resolvePluginModuleEntries,PC as resolvePluginConfigSearchPaths,fC as resolveMcpSettingsPath,dC as resolveHooksConfigSearchPaths,wC as resolveGlobalSettingsPath,t as resolveGlobalCronSpecsDir,CC as resolveGlobalAgentsRulesPath,qC as resolveExistingFilePath,Q as resolveDocumentsExtensionPath,i as resolveDocumentsClineDirectoryPath,y as resolveDbDataDir,w as resolveCronSpecsDir,uC as resolveCronReportsDir,kC as resolveCronEventsDir,xC as resolveCronDbPath,VC as resolveConnectorsDbPath,bC as resolveConnectorSettingsPath,e as resolveConnectorDataDir,nC as resolveConfiguredPluginModulePaths,L as resolveClineDir,K as resolveClineDataDir,BC as resolveChatWorkspacePath,a as resolveAgentsConfigDirPath,lC as resolveAgentConfigSearchPaths,q as isPluginModulePath,s as isChatWorkspacePath,NC as ensureParentDir,rC as ensureHookLogDir,hC as ensureFileExists,OC as discoverPluginModulePaths,B as WORKFLOWS_CONFIG_DIRECTORY_NAME,X as SKILLS_CONFIG_DIRECTORY_NAME,z as RULES_CONFIG_DIRECTORY_NAME,A as HOOKS_CONFIG_DIRECTORY_NAME,Z as CLINE_WORKSPACES_DIRECTORY_NAME,c as CLINE_MCP_SETTINGS_FILE_NAME,n as CLINE_CONNECTOR_SETTINGS_FILE_NAME,$ as CLINE_CHAT_WORKSPACE_DIRECTORY_NAME,u as AGENT_CONFIG_DIRECTORY_NAME,k as AGENTS_RULES_FILE_NAME};
@@ -1,3 +1,4 @@
1
+ export { CLINE_CHAT_WORKSPACE_DIRECTORY_NAME, CLINE_WORKSPACES_DIRECTORY_NAME, isChatWorkspacePath, } from "./chat-workspace-paths";
1
2
  export declare const AGENT_CONFIG_DIRECTORY_NAME = "agents";
2
3
  export declare const HOOKS_CONFIG_DIRECTORY_NAME = "hooks";
3
4
  export declare const SKILLS_CONFIG_DIRECTORY_NAME = "skills";
@@ -5,6 +6,13 @@ export declare const RULES_CONFIG_DIRECTORY_NAME = "rules";
5
6
  export declare const WORKFLOWS_CONFIG_DIRECTORY_NAME = "workflows";
6
7
  export declare const PLUGINS_DIRECTORY_NAME = "plugins";
7
8
  export declare const AGENTS_RULES_FILE_NAME = "AGENTS.md";
9
+ /**
10
+ * Shared workspace for all sessions started without a `cwd`/`workspaceRoot`.
11
+ * Lives under the cline data dir (not `os.tmpdir()`) so OS temp reapers never
12
+ * delete user work, the path is private to the user on multi-user hosts, and
13
+ * the directory shares the session store's lifecycle and env overrides.
14
+ */
15
+ export declare function resolveChatWorkspacePath(): string;
8
16
  export declare const CLINE_MCP_SETTINGS_FILE_NAME = "cline_mcp_settings.json";
9
17
  export declare const CLINE_CONNECTOR_SETTINGS_FILE_NAME = "settings.json";
10
18
  export declare function setHomeDir(dir: string): void;
@@ -21,6 +29,12 @@ export declare function resolveTeamDataDir(): string;
21
29
  export declare function resolveConnectorDataDir(): string;
22
30
  export declare function resolveConnectorSettingsPath(): string;
23
31
  export declare function resolveDbDataDir(): string;
32
+ /**
33
+ * Path to the dedicated connector configuration database.
34
+ * Lives alongside `sessions.db` but is a separate file so connector
35
+ * credentials/config stay decoupled from session storage.
36
+ */
37
+ export declare function resolveConnectorsDbPath(): string;
24
38
  /**
25
39
  * Path to the dedicated cron/automation database.
26
40
  * Lives alongside `sessions.db` but is a separate file so cron lifecycle,
@@ -88,4 +102,3 @@ export declare function resolveConfiguredPluginModulePaths(pluginPaths: Readonly
88
102
  export declare function ensureParentDir(filePath: string): void;
89
103
  export declare function ensureFileExists(filePath: string): void;
90
104
  export declare function ensureHookLogDir(filePath?: string): string;
91
- export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cline/shared",
3
- "version": "0.0.65",
3
+ "version": "0.0.66",
4
4
  "description": "Shared utilities, types, and schemas for Cline packages",
5
5
  "repository": {
6
6
  "type": "git",