@clinebot/shared 0.0.9 → 0.0.11

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 D=Object.defineProperty;var E=(S)=>S;function F(S,g){this[S]=E.bind(null,g)}var W=(S,g)=>{for(var w in g)D(S,w,{get:g[w],enumerable:!0,configurable:!0,set:F.bind(g,w)})};import{createRequire as G}from"node:module";function J(){return new Date().toISOString()}function K(S){return S?1:0}function L(S){return typeof S==="string"?S:""}function Q(S){if(typeof S!=="string")return;let g=S.trim();return g.length>0?g:void 0}function T(S){return S===1||S===!0}function U(S){let g=G(import.meta.url);if(typeof globalThis.Bun<"u"){let{Database:j}=g("bun:sqlite"),x=new j(S,{create:!0});return{prepare:(I)=>{let k=x.query(I);return{run:(...O)=>k.run(...O),get:(...O)=>k.get(...O),all:(...O)=>k.all(...O)}},exec:(I)=>x.exec(I)}}try{let j=["node",":sqlite"].join(""),{DatabaseSync:x}=g(j),I=new x(S);return{prepare:(k)=>{let O=I.prepare(k);return{run:(...z)=>O.run(...z),get:(...z)=>O.get(...z)??null,all:(...z)=>O.all(...z)}},exec:(k)=>I.exec(k)}}catch{}let B=["better","-sqlite3"].join("");return new(g(B))(S)}function V(S,g={}){if(S.exec("PRAGMA journal_mode = WAL;"),S.exec("PRAGMA busy_timeout = 5000;"),S.exec(`
1
+ var E=Object.defineProperty;var F=(S)=>S;function G(S,g){this[S]=F.bind(null,g)}var Z=(S,g)=>{for(var z in g)E(S,z,{get:g[z],enumerable:!0,configurable:!0,set:G.bind(g,z)})};import{mkdirSync as J}from"node:fs";import{createRequire as K}from"node:module";import{dirname as L}from"node:path";function Q(){return new Date().toISOString()}function T(S){return S?1:0}function U(S){return typeof S==="string"?S:""}function V(S){if(typeof S!=="string")return;let g=S.trim();return g.length>0?g:void 0}function W(S){return S===1||S===!0}function X(S){J(L(S),{recursive:!0});let g=K(import.meta.url);if(typeof globalThis.Bun<"u"){let{Database:j}=g("bun:sqlite"),x=new j(S,{create:!0});return{prepare:(I)=>{let w=x.query(I);return{run:(...O)=>w.run(...O),get:(...O)=>w.get(...O),all:(...O)=>w.all(...O)}},exec:(I)=>x.exec(I)}}try{let j=["node",":sqlite"].join(""),{DatabaseSync:x}=g(j),I=new x(S);return{prepare:(w)=>{let O=I.prepare(w);return{run:(...A)=>O.run(...A),get:(...A)=>O.get(...A)??null,all:(...A)=>O.all(...A)}},exec:(w)=>I.exec(w)}}catch{}let B=["better","-sqlite3"].join("");return new(g(B))(S)}function Y(S,g={}){if(S.exec("PRAGMA journal_mode = WAL;"),S.exec("PRAGMA busy_timeout = 5000;"),S.exec(`
2
2
  CREATE TABLE IF NOT EXISTS sessions (
3
3
  session_id TEXT PRIMARY KEY,
4
4
  source TEXT NOT NULL,
@@ -89,4 +89,4 @@ var D=Object.defineProperty;var E=(S)=>S;function F(S,g){this[S]=E.bind(null,g)}
89
89
  `),S.exec(`
90
90
  CREATE INDEX IF NOT EXISTS idx_schedules_next_run
91
91
  ON schedules(enabled, next_run_at);
92
- `),!g.includeLegacyMigrations)return;let w=S.prepare("PRAGMA table_info(sessions);").all(),B=(x)=>w.some((I)=>I.name===x);if(!B("workspace_root"))S.exec("ALTER TABLE sessions ADD COLUMN workspace_root TEXT;"),S.exec("UPDATE sessions SET workspace_root = cwd WHERE workspace_root IS NULL OR workspace_root = '';");if(!B("parent_session_id"))S.exec("ALTER TABLE sessions ADD COLUMN parent_session_id TEXT;");if(!B("parent_agent_id"))S.exec("ALTER TABLE sessions ADD COLUMN parent_agent_id TEXT;");if(!B("agent_id"))S.exec("ALTER TABLE sessions ADD COLUMN agent_id TEXT;");if(!B("conversation_id"))S.exec("ALTER TABLE sessions ADD COLUMN conversation_id TEXT;");if(!B("is_subagent"))S.exec("ALTER TABLE sessions ADD COLUMN is_subagent INTEGER NOT NULL DEFAULT 0;");if(!B("messages_path"))S.exec("ALTER TABLE sessions ADD COLUMN messages_path TEXT;");if(!B("metadata_json"))S.exec("ALTER TABLE sessions ADD COLUMN metadata_json TEXT;");let A=S.prepare("PRAGMA table_info(schedules);").all(),j=(x)=>A.some((I)=>I.name===x);if(!j("claim_token"))S.exec("ALTER TABLE schedules ADD COLUMN claim_token TEXT;");if(!j("claim_started_at"))S.exec("ALTER TABLE schedules ADD COLUMN claim_started_at TEXT;");if(!j("claim_until_at"))S.exec("ALTER TABLE schedules ADD COLUMN claim_until_at TEXT;")}export{K as toBoolInt,J as nowIso,U as loadSqliteDb,V as ensureSessionSchema,L as asString,Q as asOptionalString,T as asBool};
92
+ `),!g.includeLegacyMigrations)return;let z=S.prepare("PRAGMA table_info(sessions);").all(),B=(x)=>z.some((I)=>I.name===x);if(!B("workspace_root"))S.exec("ALTER TABLE sessions ADD COLUMN workspace_root TEXT;"),S.exec("UPDATE sessions SET workspace_root = cwd WHERE workspace_root IS NULL OR workspace_root = '';");if(!B("parent_session_id"))S.exec("ALTER TABLE sessions ADD COLUMN parent_session_id TEXT;");if(!B("parent_agent_id"))S.exec("ALTER TABLE sessions ADD COLUMN parent_agent_id TEXT;");if(!B("agent_id"))S.exec("ALTER TABLE sessions ADD COLUMN agent_id TEXT;");if(!B("conversation_id"))S.exec("ALTER TABLE sessions ADD COLUMN conversation_id TEXT;");if(!B("is_subagent"))S.exec("ALTER TABLE sessions ADD COLUMN is_subagent INTEGER NOT NULL DEFAULT 0;");if(!B("messages_path"))S.exec("ALTER TABLE sessions ADD COLUMN messages_path TEXT;");if(!B("metadata_json"))S.exec("ALTER TABLE sessions ADD COLUMN metadata_json TEXT;");let D=S.prepare("PRAGMA table_info(schedules);").all(),j=(x)=>D.some((I)=>I.name===x);if(!j("claim_token"))S.exec("ALTER TABLE schedules ADD COLUMN claim_token TEXT;");if(!j("claim_started_at"))S.exec("ALTER TABLE schedules ADD COLUMN claim_started_at TEXT;");if(!j("claim_until_at"))S.exec("ALTER TABLE schedules ADD COLUMN claim_until_at TEXT;")}export{T as toBoolInt,Q as nowIso,X as loadSqliteDb,Y as ensureSessionSchema,U as asString,V as asOptionalString,W as asBool};
@@ -1 +1 @@
1
- export { AGENT_CONFIG_DIRECTORY_NAME, CLINE_MCP_SETTINGS_FILE_NAME, ensureHookLogDir, ensureParentDir, HOOKS_CONFIG_DIRECTORY_NAME, RULES_CONFIG_DIRECTORY_NAME, resolveAgentConfigSearchPaths, resolveAgentsConfigDirPath, resolveClineDataDir, resolveDocumentsAgentConfigDirectoryPath, resolveDocumentsClineDirectoryPath, resolveDocumentsHooksDirectoryPath, resolveDocumentsRulesDirectoryPath, resolveDocumentsWorkflowsDirectoryPath, resolveHooksConfigSearchPaths, resolveMcpSettingsPath, resolvePluginConfigSearchPaths, resolveProviderSettingsPath, resolveRulesConfigSearchPaths, resolveSessionDataDir, resolveSkillsConfigSearchPaths, resolveTeamDataDir, resolveWorkflowsConfigSearchPaths, SKILLS_CONFIG_DIRECTORY_NAME, setHomeDir, setHomeDirIfUnset, WORKFLOWS_CONFIG_DIRECTORY_NAME, } from "./paths";
1
+ export { AGENT_CONFIG_DIRECTORY_NAME, CLINE_MCP_SETTINGS_FILE_NAME, ensureHookLogDir, ensureParentDir, HOOKS_CONFIG_DIRECTORY_NAME, RULES_CONFIG_DIRECTORY_NAME, resolveAgentConfigSearchPaths, resolveAgentsConfigDirPath, resolveClineDataDir, resolveClineDir, resolveDocumentsAgentConfigDirectoryPath, resolveDocumentsClineDirectoryPath, resolveDocumentsHooksDirectoryPath, resolveDocumentsRulesDirectoryPath, resolveDocumentsWorkflowsDirectoryPath, resolveHooksConfigSearchPaths, resolveMcpSettingsPath, resolvePluginConfigSearchPaths, resolveProviderSettingsPath, resolveRulesConfigSearchPaths, resolveSessionDataDir, resolveSkillsConfigSearchPaths, resolveTeamDataDir, resolveWorkflowsConfigSearchPaths, SKILLS_CONFIG_DIRECTORY_NAME, setClineDir, setClineDirIfUnset, setHomeDir, setHomeDirIfUnset, WORKFLOWS_CONFIG_DIRECTORY_NAME, } from "./paths";
@@ -1 +1 @@
1
- var L=Object.defineProperty;var U=(o)=>o;function W(o,n){this[o]=U.bind(null,n)}var x=(o,n)=>{for(var S in n)L(o,S,{get:n[S],enumerable:!0,configurable:!0,set:W.bind(n,S)})};import{existsSync as _,mkdirSync as O}from"node:fs";import{dirname as R,join as v}from"node:path";var l="agents",E="hooks",g="skills",G="rules",I="workflows",A="plugins",y="cline_mcp_settings.json",D=process?.env?.HOME||"~",F=!1;function Y(o){let n=o.trim();if(!n)return;D=n,F=!0}function b(o){if(F)return;let n=o.trim();if(!n)return;D=n}function N(){return v(D,"Documents","Cline")}function H(){return v(N(),"Agents")}function M(){return v(N(),"Hooks")}function T(){return v(N(),"Rules")}function e(){return v(N(),"Workflows")}function C(){let o=process.env.CLINE_DATA_DIR?.trim();if(o)return o;return v(D,".cline","data")}function j(){let o=process.env.CLINE_SESSION_DATA_DIR?.trim();if(o)return o;return v(C(),"sessions")}function m(){let o=process.env.CLINE_TEAM_DATA_DIR?.trim();if(o)return o;return v(C(),"teams")}function q(){let o=process.env.CLINE_PROVIDER_SETTINGS_PATH?.trim();if(o)return o;return v(C(),"settings","providers.json")}function z(){let o=process.env.CLINE_MCP_SETTINGS_PATH?.trim();if(o)return o;return v(C(),"settings",y)}function s(o){let n=new Set,S=[];for(let u of o){if(!u||n.has(u))continue;n.add(u),S.push(u)}return S}function B(o){if(!o)return[];return[v(o,".clinerules",g),v(o,".cline",g),v(o,".claude",g),v(o,".agents",g)]}function f(){return v(C(),"settings",l)}function J(){return[H(),f()]}function Q(o){return s([o?v(o,".clinerules",E):"",M()])}function V(o){return s([...B(o),v(C(),"settings",g),v(D,".cline",g),v(D,".agents",g)])}function Z(o){return s([o?v(o,".clinerules"):"",v(C(),"settings",G),T()])}function $(o){return s([o?v(o,".clinerules","workflows"):"",v(C(),"settings",I),e()])}function X(o){return s([o?v(o,".clinerules",A):"",v(D,".cline",A),v(D,".agents",A)])}function K(o){let n=R(o);if(!_(n))O(n,{recursive:!0})}function r(o){if(o?.trim())return K(o),R(o);let n=v(C(),"hooks");if(!_(n))O(n,{recursive:!0});return n}export{b as setHomeDirIfUnset,Y as setHomeDir,$ as resolveWorkflowsConfigSearchPaths,m as resolveTeamDataDir,V as resolveSkillsConfigSearchPaths,j as resolveSessionDataDir,Z as resolveRulesConfigSearchPaths,q as resolveProviderSettingsPath,X as resolvePluginConfigSearchPaths,z as resolveMcpSettingsPath,Q as resolveHooksConfigSearchPaths,e as resolveDocumentsWorkflowsDirectoryPath,T as resolveDocumentsRulesDirectoryPath,M as resolveDocumentsHooksDirectoryPath,N as resolveDocumentsClineDirectoryPath,H as resolveDocumentsAgentConfigDirectoryPath,C as resolveClineDataDir,f as resolveAgentsConfigDirPath,J as resolveAgentConfigSearchPaths,K as ensureParentDir,r as ensureHookLogDir,I as WORKFLOWS_CONFIG_DIRECTORY_NAME,g as SKILLS_CONFIG_DIRECTORY_NAME,G as RULES_CONFIG_DIRECTORY_NAME,E as HOOKS_CONFIG_DIRECTORY_NAME,y as CLINE_MCP_SETTINGS_FILE_NAME,l as AGENT_CONFIG_DIRECTORY_NAME};
1
+ var j=Object.defineProperty;var q=(o)=>o;function z(o,v){this[o]=q.bind(null,v)}var i=(o,v)=>{for(var S in v)j(o,S,{get:v[S],enumerable:!0,configurable:!0,set:z.bind(v,S)})};import{existsSync as G,mkdirSync as e}from"node:fs";import{dirname as y,join as n}from"node:path";var F="agents",H="hooks",g="skills",M="rules",f="workflows",O="plugins",T="cline_mcp_settings.json",s=process?.env?.HOME||"~",_=!1;function B(o){let v=o.trim();if(!v)return;s=v,_=!0}function J(o){if(_)return;let v=o.trim();if(!v)return;s=v}var A,K=!1;function Q(o){let v=o.trim();if(!v)return;A=v,K=!0}function V(o){if(K)return;let v=o.trim();if(!v)return;A=v}function N(){if(A)return A;let o=process.env.CLINE_DIR?.trim();if(o)return o;return n(s,".cline")}function D(){return n(s,"Documents","Cline")}function R(){return n(D(),"Agents")}function U(){return n(D(),"Hooks")}function E(){return n(D(),"Rules")}function W(){return n(D(),"Workflows")}function C(){let o=process.env.CLINE_DATA_DIR?.trim();if(o)return o;return n(N(),"data")}function Z(){let o=process.env.CLINE_SESSION_DATA_DIR?.trim();if(o)return o;return n(C(),"sessions")}function $(){let o=process.env.CLINE_TEAM_DATA_DIR?.trim();if(o)return o;return n(C(),"teams")}function I(){let o=process.env.CLINE_PROVIDER_SETTINGS_PATH?.trim();if(o)return o;return n(C(),"settings","providers.json")}function X(){let o=process.env.CLINE_MCP_SETTINGS_PATH?.trim();if(o)return o;return n(C(),"settings",T)}function l(o){let v=new Set,S=[];for(let u of o){if(!u||v.has(u))continue;v.add(u),S.push(u)}return S}function L(o){if(!o)return[];return[n(o,".clinerules",g),n(o,".cline",g),n(o,".claude",g),n(o,".agents",g)]}function Y(){return n(C(),"settings",F)}function m(){return[R(),Y()]}function r(o){return l([o?n(o,".clinerules",H):"",U()])}function x(o){return l([...L(o),n(C(),"settings",g),n(N(),g),n(s,".agents",g)])}function k(o){return l([o?n(o,".clinerules"):"",n(C(),"settings",M),E()])}function h(o){return l([o?n(o,".clinerules","workflows"):"",n(C(),"settings",f),W()])}function P(o){return l([o?n(o,".clinerules",O):"",n(N(),O),n(s,".agents",O)])}function b(o){let v=y(o);if(!G(v))e(v,{recursive:!0})}function c(o){if(o?.trim())return b(o),y(o);let v=n(C(),"hooks");if(!G(v))e(v,{recursive:!0});return v}export{J as setHomeDirIfUnset,B as setHomeDir,V as setClineDirIfUnset,Q as setClineDir,h as resolveWorkflowsConfigSearchPaths,$ as resolveTeamDataDir,x as resolveSkillsConfigSearchPaths,Z as resolveSessionDataDir,k as resolveRulesConfigSearchPaths,I as resolveProviderSettingsPath,P as resolvePluginConfigSearchPaths,X as resolveMcpSettingsPath,r as resolveHooksConfigSearchPaths,W as resolveDocumentsWorkflowsDirectoryPath,E as resolveDocumentsRulesDirectoryPath,U as resolveDocumentsHooksDirectoryPath,D as resolveDocumentsClineDirectoryPath,R as resolveDocumentsAgentConfigDirectoryPath,N as resolveClineDir,C as resolveClineDataDir,Y as resolveAgentsConfigDirPath,m as resolveAgentConfigSearchPaths,b as ensureParentDir,c as ensureHookLogDir,f as WORKFLOWS_CONFIG_DIRECTORY_NAME,g as SKILLS_CONFIG_DIRECTORY_NAME,M as RULES_CONFIG_DIRECTORY_NAME,H as HOOKS_CONFIG_DIRECTORY_NAME,T as CLINE_MCP_SETTINGS_FILE_NAME,F as AGENT_CONFIG_DIRECTORY_NAME};
@@ -7,6 +7,9 @@ export declare const PLUGINS_DIRECTORY_NAME = "plugins";
7
7
  export declare const CLINE_MCP_SETTINGS_FILE_NAME = "cline_mcp_settings.json";
8
8
  export declare function setHomeDir(dir: string): void;
9
9
  export declare function setHomeDirIfUnset(dir: string): void;
10
+ export declare function setClineDir(dir: string): void;
11
+ export declare function setClineDirIfUnset(dir: string): void;
12
+ export declare function resolveClineDir(): string;
10
13
  export declare function resolveDocumentsClineDirectoryPath(): string;
11
14
  export declare function resolveDocumentsAgentConfigDirectoryPath(): string;
12
15
  export declare function resolveDocumentsHooksDirectoryPath(): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clinebot/shared",
3
- "version": "0.0.9",
3
+ "version": "0.0.11",
4
4
  "description": "Shared utilities, types, and schemas for Cline packages",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,4 +1,6 @@
1
+ import { mkdirSync } from "node:fs";
1
2
  import { createRequire } from "node:module";
3
+ import { dirname } from "node:path";
2
4
 
3
5
  export type SqliteStatement = {
4
6
  run: (...params: unknown[]) => { changes?: number };
@@ -56,6 +58,7 @@ export function asBool(value: unknown): boolean {
56
58
  }
57
59
 
58
60
  export function loadSqliteDb(filePath: string): SqliteDb {
61
+ mkdirSync(dirname(filePath), { recursive: true });
59
62
  const require = createRequire(import.meta.url);
60
63
  const isBunRuntime =
61
64
  typeof (globalThis as { Bun?: unknown }).Bun !== "undefined";
@@ -8,6 +8,7 @@ export {
8
8
  resolveAgentConfigSearchPaths,
9
9
  resolveAgentsConfigDirPath,
10
10
  resolveClineDataDir,
11
+ resolveClineDir,
11
12
  resolveDocumentsAgentConfigDirectoryPath,
12
13
  resolveDocumentsClineDirectoryPath,
13
14
  resolveDocumentsHooksDirectoryPath,
@@ -23,6 +24,8 @@ export {
23
24
  resolveTeamDataDir,
24
25
  resolveWorkflowsConfigSearchPaths,
25
26
  SKILLS_CONFIG_DIRECTORY_NAME,
27
+ setClineDir,
28
+ setClineDirIfUnset,
26
29
  setHomeDir,
27
30
  setHomeDirIfUnset,
28
31
  WORKFLOWS_CONFIG_DIRECTORY_NAME,
@@ -32,6 +32,40 @@ export function setHomeDirIfUnset(dir: string) {
32
32
  HOME_DIR = trimmed;
33
33
  }
34
34
 
35
+ let CLINE_DIR: string | undefined;
36
+ let CLINE_DIR_SET_EXPLICITLY = false;
37
+
38
+ export function setClineDir(dir: string): void {
39
+ const trimmed = dir.trim();
40
+ if (!trimmed) {
41
+ return;
42
+ }
43
+ CLINE_DIR = trimmed;
44
+ CLINE_DIR_SET_EXPLICITLY = true;
45
+ }
46
+
47
+ export function setClineDirIfUnset(dir: string): void {
48
+ if (CLINE_DIR_SET_EXPLICITLY) {
49
+ return;
50
+ }
51
+ const trimmed = dir.trim();
52
+ if (!trimmed) {
53
+ return;
54
+ }
55
+ CLINE_DIR = trimmed;
56
+ }
57
+
58
+ export function resolveClineDir(): string {
59
+ if (CLINE_DIR) {
60
+ return CLINE_DIR;
61
+ }
62
+ const envDir = process.env.CLINE_DIR?.trim();
63
+ if (envDir) {
64
+ return envDir;
65
+ }
66
+ return join(HOME_DIR, ".cline");
67
+ }
68
+
35
69
  export function resolveDocumentsClineDirectoryPath(): string {
36
70
  return join(HOME_DIR, "Documents", "Cline");
37
71
  }
@@ -57,7 +91,7 @@ export function resolveClineDataDir(): string {
57
91
  if (explicitDir) {
58
92
  return explicitDir;
59
93
  }
60
- return join(HOME_DIR, ".cline", "data");
94
+ return join(resolveClineDir(), "data");
61
95
  }
62
96
 
63
97
  export function resolveSessionDataDir(): string {
@@ -145,7 +179,7 @@ export function resolveSkillsConfigSearchPaths(
145
179
  return dedupePaths([
146
180
  ...getWorkspaceSkillDirectories(workspacePath),
147
181
  join(resolveClineDataDir(), "settings", SKILLS_CONFIG_DIRECTORY_NAME),
148
- join(HOME_DIR, ".cline", SKILLS_CONFIG_DIRECTORY_NAME),
182
+ join(resolveClineDir(), SKILLS_CONFIG_DIRECTORY_NAME),
149
183
  join(HOME_DIR, ".agents", SKILLS_CONFIG_DIRECTORY_NAME),
150
184
  ]);
151
185
  }
@@ -177,7 +211,7 @@ export function resolvePluginConfigSearchPaths(
177
211
  workspacePath
178
212
  ? join(workspacePath, ".clinerules", PLUGINS_DIRECTORY_NAME)
179
213
  : "",
180
- join(HOME_DIR, ".cline", PLUGINS_DIRECTORY_NAME),
214
+ join(resolveClineDir(), PLUGINS_DIRECTORY_NAME),
181
215
  join(HOME_DIR, ".agents", PLUGINS_DIRECTORY_NAME),
182
216
  ]);
183
217
  }