@cline/shared 0.0.83 → 0.0.84-nightly.1790044161
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/agent.d.ts +25 -1
- package/dist/agents/types.d.ts +7 -0
- package/dist/db/index.js +13 -13
- package/dist/feature-flags.d.ts +6 -0
- package/dist/hub.d.ts +1 -1
- package/dist/index.browser.d.ts +2 -0
- package/dist/index.browser.js +17 -17
- package/dist/index.d.ts +5 -2
- package/dist/index.js +41 -41
- package/dist/runtime/cline-client-identity.d.ts +8 -0
- package/dist/runtime/windows-exe-path.d.ts +26 -0
- package/dist/services/telemetry.d.ts +13 -0
- package/dist/storage/index.d.ts +1 -1
- package/dist/storage/index.js +1 -1
- package/dist/storage/paths.d.ts +14 -0
- package/dist/tools/create.d.ts +2 -0
- package/package.json +1 -1
package/dist/agent.d.ts
CHANGED
|
@@ -142,6 +142,8 @@ export interface AgentToolContext {
|
|
|
142
142
|
emitUpdate?: (update: unknown) => void;
|
|
143
143
|
}
|
|
144
144
|
export interface AgentTool<TInput = unknown, TOutput = unknown> extends AgentToolDefinition {
|
|
145
|
+
/** Override the runtime execution mode. Adjacent parallel calls may overlap; sequential calls form ordering boundaries. */
|
|
146
|
+
executionMode?: "sequential" | "parallel";
|
|
145
147
|
timeoutMs?: number;
|
|
146
148
|
retryable?: boolean;
|
|
147
149
|
maxRetries?: number;
|
|
@@ -176,6 +178,13 @@ export interface AgentRuntimePrepareTurnContext {
|
|
|
176
178
|
* compaction rather than trust its token estimates.
|
|
177
179
|
*/
|
|
178
180
|
overflowRecovery?: boolean;
|
|
181
|
+
/**
|
|
182
|
+
* Input tokens the provider actually counted for the previous request this
|
|
183
|
+
* run, when available. Compaction uses it as a floor on its char-based
|
|
184
|
+
* estimate, which under-counts dense content (disassembly, image dumps) and
|
|
185
|
+
* can otherwise let the real context grow past the window without triggering.
|
|
186
|
+
*/
|
|
187
|
+
previousRequestInputTokens?: number;
|
|
179
188
|
emitStatusNotice?: (message: string, metadata?: Record<string, unknown>) => void;
|
|
180
189
|
}
|
|
181
190
|
export interface AgentRuntimePrepareTurnResult {
|
|
@@ -232,6 +241,8 @@ export type AgentModelEvent = {
|
|
|
232
241
|
} | {
|
|
233
242
|
type: "finish";
|
|
234
243
|
reason: AgentModelFinishReason;
|
|
244
|
+
/** HTTP X-Request-ID of the surfaced response, not the provider's generation ID. */
|
|
245
|
+
requestId?: string;
|
|
235
246
|
error?: string;
|
|
236
247
|
errorClass?: ProviderErrorClass;
|
|
237
248
|
/**
|
|
@@ -263,6 +274,17 @@ export interface AgentStopControl {
|
|
|
263
274
|
stop?: boolean;
|
|
264
275
|
reason?: string;
|
|
265
276
|
}
|
|
277
|
+
export interface AgentRunStartResult {
|
|
278
|
+
stop?: boolean;
|
|
279
|
+
reason?: string;
|
|
280
|
+
/**
|
|
281
|
+
* Text to inject into the conversation as hook context (e.g. a hook's
|
|
282
|
+
* `contextModification`). Collected across hooks and appended after the
|
|
283
|
+
* run's input messages as a `<hook_context>` user message, so the model
|
|
284
|
+
* sees it on the run's first request.
|
|
285
|
+
*/
|
|
286
|
+
appendContext?: string;
|
|
287
|
+
}
|
|
266
288
|
export interface AgentBeforeModelResult {
|
|
267
289
|
stop?: boolean;
|
|
268
290
|
reason?: string;
|
|
@@ -274,6 +296,8 @@ export interface AgentAfterModelContext {
|
|
|
274
296
|
snapshot: AgentRuntimeStateSnapshot;
|
|
275
297
|
assistantMessage: AgentMessage;
|
|
276
298
|
finishReason: AgentModelFinishReason;
|
|
299
|
+
/** HTTP X-Request-ID when exposed by the model adapter; hidden retry IDs are not included. */
|
|
300
|
+
requestId?: string;
|
|
277
301
|
}
|
|
278
302
|
export interface AgentBeforeToolContext {
|
|
279
303
|
snapshot: AgentRuntimeStateSnapshot;
|
|
@@ -324,7 +348,7 @@ export interface AgentRunLifecycleContext {
|
|
|
324
348
|
* 7-callback hook bag consumed by `AgentRuntime`.
|
|
325
349
|
*/
|
|
326
350
|
export interface AgentRuntimeHooks {
|
|
327
|
-
beforeRun?: (context: AgentRunLifecycleContext) =>
|
|
351
|
+
beforeRun?: (context: AgentRunLifecycleContext) => AgentRunStartResult | undefined | Promise<AgentRunStartResult | undefined>;
|
|
328
352
|
afterRun?: (context: AgentRunLifecycleContext & {
|
|
329
353
|
result: AgentRunResult;
|
|
330
354
|
}) => void | Promise<void>;
|
package/dist/agents/types.d.ts
CHANGED
|
@@ -488,6 +488,13 @@ export interface AgentPrepareTurnContext {
|
|
|
488
488
|
* compaction rather than trust its token estimates.
|
|
489
489
|
*/
|
|
490
490
|
overflowRecovery?: boolean;
|
|
491
|
+
/**
|
|
492
|
+
* Input tokens the provider actually counted for the previous request this
|
|
493
|
+
* run, when available. Compaction uses it as a floor on its own char-based
|
|
494
|
+
* estimate, which under-counts dense content (disassembly, pixel dumps) and
|
|
495
|
+
* can otherwise let the real context grow past the window without triggering.
|
|
496
|
+
*/
|
|
497
|
+
previousRequestInputTokens?: number;
|
|
491
498
|
emitStatusNotice?: (message: string, metadata?: Record<string, unknown>) => void;
|
|
492
499
|
}
|
|
493
500
|
export interface AgentPrepareTurnResult {
|
package/dist/db/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var
|
|
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 (
|
|
2
2
|
session_id TEXT PRIMARY KEY,
|
|
3
3
|
source TEXT NOT NULL,
|
|
4
4
|
pid INTEGER NOT NULL,
|
|
@@ -77,7 +77,7 @@ var GZ=Object.defineProperty;var YZ=(Z)=>Z;function OZ(Z,$){this[Z]=YZ.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);`]
|
|
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 (
|
|
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 GZ=Object.defineProperty;var YZ=(Z)=>Z;function OZ(Z,$){this[Z]=YZ.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
|
-
);`,
|
|
88
|
+
);`,VZ=`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 GZ=Object.defineProperty;var YZ=(Z)=>Z;function OZ(Z,$){this[Z]=YZ.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
|
|
98
|
-
WHERE channel = ? AND instance_id = ?`).get(Z
|
|
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
|
|
99
99
|
WHERE channel = ?
|
|
100
|
-
ORDER BY instance_id ASC`).all(
|
|
101
|
-
ORDER BY channel ASC, instance_id ASC`).all()).map(l)}upsertConfig(
|
|
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 (
|
|
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 GZ=Object.defineProperty;var YZ=(Z)=>Z;function OZ(Z,$){this[Z]=YZ.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(
|
|
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
|
|
112
112
|
SET connect_args_json = ?, updated_at = ?
|
|
113
|
-
WHERE channel = ? AND instance_id = ?`).run(JSON.stringify(
|
|
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 (
|
|
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 GZ=Object.defineProperty;var YZ=(Z)=>Z;function OZ(Z,$){this[Z]=YZ.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(Z
|
|
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
|
|
123
123
|
SET enabled = ?, updated_at = ?
|
|
124
|
-
WHERE channel = ? AND instance_id = ?`).run(
|
|
124
|
+
WHERE channel = ? AND instance_id = ?`).run(E(Z),J(),X,$);return}this.getRawDb().prepare(`UPDATE connector_connections
|
|
125
125
|
SET enabled = ?, updated_at = ?
|
|
126
|
-
WHERE channel = ?`).run(
|
|
127
|
-
WHERE channel = ? AND instance_id = ?`).run(Z
|
|
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};
|
package/dist/feature-flags.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export declare const FeatureFlag: {
|
|
|
5
5
|
readonly CODE_CLOUD_AGENTS: "code-cloud-agents";
|
|
6
6
|
/** Shows the GitHub integration step in the desktop app */
|
|
7
7
|
readonly CODE_ONBOARDING_GITHUB: "code-onboarding-github";
|
|
8
|
+
/** Enables Composio connectors for the signed-in Cline account. */
|
|
9
|
+
readonly CLINE_COMPOSIO_BETA: "CLINE_COMPOSIO_BETA";
|
|
8
10
|
};
|
|
9
11
|
export type KnownFeatureFlag = (typeof FeatureFlag)[keyof typeof FeatureFlag];
|
|
10
12
|
export type FeatureFlag = KnownFeatureFlag | (string & {});
|
|
@@ -21,6 +23,10 @@ export interface FeatureFlagsContext {
|
|
|
21
23
|
distinctId?: string;
|
|
22
24
|
/** Authenticated Cline account/user ID, when available. */
|
|
23
25
|
userId?: string | null;
|
|
26
|
+
/**
|
|
27
|
+
* Authenticated account email, when available. Providers do not send it anywhere.
|
|
28
|
+
*/
|
|
29
|
+
email?: string | null;
|
|
24
30
|
/** Optional SDK consumer name, e.g. `my-production-app`. */
|
|
25
31
|
clientName?: string;
|
|
26
32
|
}
|
package/dist/hub.d.ts
CHANGED
|
@@ -353,7 +353,7 @@ export interface HubCommandOutputMap {
|
|
|
353
353
|
export type HubTypedCommandName = keyof HubCommandInputMap & HubCommandName;
|
|
354
354
|
export type HubCommandInput<TCommand extends HubTypedCommandName> = HubCommandInputMap[TCommand];
|
|
355
355
|
export type HubCommandOutput<TCommand extends HubTypedCommandName> = HubCommandOutputMap[TCommand];
|
|
356
|
-
export type HubCommandName = "client.register" | "client.update" | "client.unregister" | "client.list" | "cline.account.get_current" | "prompt_commands.list" | "prompt_commands.execute" | "mention_files.search" | "catalog.list" | "session.list" | "session.search" | "session.create" | "session.attach" | "session.detach" | "session.get" | "session.messages" | "session.restore" | "session.delete" | "session.update" | "session.update_connection" | "session.compaction.get" | "session.compaction.update" | "session.pending_prompts" | "session.update_pending_prompt" | "session.remove_pending_prompt" | "session.fork" | "session.hook" | "run.start" | "session.send_input" | "run.enqueue" | "run.list" | "run.abort" | "run.proceed_while_running" | "hub.drain" | "hub.status" | "approval.request" | "approval.respond" | "capability.request" | "capability.progress" | "capability.respond" | "peer.register" | "peer.list_sessions" | "peer.attach_session" | "peer.detach_session" | "peer.proxy_command" | "schedule.create" | "schedule.list" | "schedule.get" | "schedule.update" | "schedule.delete" | "schedule.enable" | "schedule.disable" | "schedule.trigger" | "schedule.list_executions" | "schedule.stats" | "schedule.active" | "schedule.upcoming" | "task.create" | "task.list" | "task.get" | "task.update" | "task.approve" | "task.cancel" | "task.run" | "task.automation.get" | "task.automation.set" | "settings.list" | "settings.get" | "settings.patch" | "settings.toggle" | "connector.channels" | "connector.configure" | "connector.delete_config" | "connector.start" | "connector.stop" | "connector.supervised" | "cron.event.ingest" | "cron.event.list" | "cron.event.get" | "ui.notify" | "ui.show_window";
|
|
356
|
+
export type HubCommandName = "client.register" | "client.update" | "client.unregister" | "client.list" | "cline.account.get_current" | "prompt_commands.list" | "prompt_commands.execute" | "mention_files.search" | "catalog.list" | "session.list" | "session.search" | "session.create" | "session.attach" | "session.detach" | "session.get" | "session.messages" | "session.restore" | "session.delete" | "session.update" | "session.update_connection" | "session.compaction.get" | "session.compaction.update" | "session.pending_prompts" | "session.steer_first_pending_prompt" | "session.update_pending_prompt" | "session.remove_pending_prompt" | "session.fork" | "session.hook" | "run.start" | "session.send_input" | "run.enqueue" | "run.list" | "run.abort" | "run.proceed_while_running" | "hub.drain" | "hub.status" | "approval.request" | "approval.respond" | "capability.request" | "capability.progress" | "capability.respond" | "peer.register" | "peer.list_sessions" | "peer.attach_session" | "peer.detach_session" | "peer.proxy_command" | "schedule.create" | "schedule.list" | "schedule.get" | "schedule.update" | "schedule.delete" | "schedule.enable" | "schedule.disable" | "schedule.trigger" | "schedule.list_executions" | "schedule.stats" | "schedule.active" | "schedule.upcoming" | "task.create" | "task.list" | "task.get" | "task.update" | "task.approve" | "task.cancel" | "task.run" | "task.automation.get" | "task.automation.set" | "settings.list" | "settings.get" | "settings.patch" | "settings.toggle" | "connector.channels" | "connector.configure" | "connector.delete_config" | "connector.start" | "connector.stop" | "connector.supervised" | "cron.event.ingest" | "cron.event.list" | "cron.event.get" | "ui.notify" | "ui.show_window";
|
|
357
357
|
export declare const HUB_DEFAULT_COMMAND_TIMEOUT_MS = 30000;
|
|
358
358
|
export declare const HUB_COMMAND_SLOW_LOG_MS = 5000;
|
|
359
359
|
export declare function getDefaultHubCommandTimeoutMs(command: HubCommandName): number | null;
|
package/dist/index.browser.d.ts
CHANGED
|
@@ -53,6 +53,8 @@ export type { AddProviderActionRequest, ChatAttachmentFile, ChatAttachments, Cha
|
|
|
53
53
|
export { ProviderCapabilitySchema, ProviderClientSchema, ProviderProtocolSchema, } from "./rpc/runtime";
|
|
54
54
|
export type { TeamProgressCounts, TeamProgressLifecycleEvent, TeamProgressMemberRole, TeamProgressMemberStatus, TeamProgressOutcomeFragmentStatus, TeamProgressOutcomeStatus, TeamProgressProjectionEvent, TeamProgressRunStatus, TeamProgressSummary, TeamProgressTaskStatus, } from "./rpc/team-progress";
|
|
55
55
|
export { TEAM_LIFECYCLE_EVENT_TYPE, TEAM_PROGRESS_EVENT_TYPE, } from "./rpc/team-progress";
|
|
56
|
+
export type { ClineClientIdentity } from "./runtime/cline-client-identity";
|
|
57
|
+
export { getClineClientIdentity, setClineClientIdentity, } from "./runtime/cline-client-identity";
|
|
56
58
|
export type { ClineEnvironment, ClineEnvironmentConfig, ResolveClineEnvironmentOptions, } from "./runtime/cline-environment";
|
|
57
59
|
export { CLINE_ENVIRONMENT_ENV, CLINE_ENVIRONMENT_OVERRIDE_ENV, CLINE_ENVIRONMENTS, DEFAULT_CLINE_ENVIRONMENT, getClineEnvironmentConfig, resolveClineEnvironment, } from "./runtime/cline-environment";
|
|
58
60
|
export type { CaptureAgentUnexpectedReasoningTokensInput, CaptureSdkErrorInput, CaptureTaskLifecycleEventInput, ITelemetryService, OpenTelemetryClientConfig, SdkTelemetryErrorComponent, SdkTelemetryErrorSeverity, TelemetryArray, TelemetryMetadata, TelemetryObject, TelemetryPrimitive, TelemetryProperties, TelemetryValue, } from "./services/telemetry";
|