@cline/core 0.0.94 → 0.0.95-nightly.1792376935

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.
@@ -8,6 +8,13 @@ type OpenTelemetryExporterKind = "console" | "otlp";
8
8
  export interface OpenTelemetryProviderOptions extends Omit<OpenTelemetryClientConfig, "enabled" | "logsExporter" | "metricsExporter" | "tracesExporter"> {
9
9
  serviceName?: string;
10
10
  serviceVersion?: string;
11
+ /**
12
+ * Extra OTel resource attributes stamped on every span, log, and metric
13
+ * this provider exports (collectors and Langfuse surface them as
14
+ * `resourceAttributes.*`). For process-level facts such as which client
15
+ * started a shared hub daemon; per-event metadata belongs on the event.
16
+ */
17
+ resourceAttributes?: Record<string, string | number | boolean>;
11
18
  enabled?: boolean;
12
19
  logsExporter?: string | OpenTelemetryExporterKind[];
13
20
  metricsExporter?: string | OpenTelemetryExporterKind[];
@@ -1 +1 @@
1
- import{existsSync as F,mkdirSync as H,readFileSync as V,writeFileSync as B}from"node:fs";import{resolve as z}from"node:path";import{resolveSessionDataDir as j}from"@cline/shared/storage";import{nanoid as W}from"nanoid";import*as q from"node-machine-id";var Y="machine-id",O,C=!1;function v(){if(!C)O=x(),C=!0;return O??R()}function f(e){let t=e?.trim();if(t)return t;let r=x();if(r)return r;return R()}function X(){let e=q;return e.machineIdSync??e.default?.machineIdSync}function x(){try{let e=X();if(!e)return;return e().trim()||void 0}catch{return}}function R(){let e=j(),t=z(e,Y);try{if(F(t)){let i=V(t,"utf8").trim();if(i.length>0)return i}}catch{}let r=`cl-${W()}`;try{H(e,{recursive:!0}),B(t,r,"utf8")}catch{}return r}import{SeverityNumber as g}from"@opentelemetry/api-logs";class y{name;metadata;meter;logger;enabled;distinctId;commonProperties;counters=new Map;histograms=new Map;gauges=new Map;gaugeValues=new Map;meterProvider;loggerProvider;constructor(e){this.name=e.name??"OpenTelemetryAdapter",this.metadata={...e.metadata},this.meterProvider=e.meterProvider,this.loggerProvider=e.loggerProvider,this.meter=e.meterProvider?.getMeter("cline")??null,this.logger=e.loggerProvider?.getLogger("cline")??null,this.enabled=e.enabled??!0,this.distinctId=e.distinctId,this.commonProperties=e.commonProperties?{...e.commonProperties}:{}}emit(e,t){if(!this.isEnabled())return;this.emitLog(e,t,!1)}emitRequired(e,t){this.emitLog(e,t,!0)}recordCounter(e,t,r,i,o=!1){if(!this.meter||!o&&!this.isEnabled())return;let s=this.counters.get(e);if(!s)s=this.meter.createCounter(e,i?{description:i}:void 0),this.counters.set(e,s);s.add(t,this.flattenProperties(this.buildAttributes(r)))}recordHistogram(e,t,r,i,o=!1){if(!this.meter||!o&&!this.isEnabled())return;let s=this.histograms.get(e);if(!s)s=this.meter.createHistogram(e,i?{description:i}:void 0),this.histograms.set(e,s);s.record(t,this.flattenProperties(this.buildAttributes(r)))}recordGauge(e,t,r,i,o=!1){if(!this.meter||!o&&!this.isEnabled())return;let s=this.buildAttributes(r),n=JSON.stringify(s),d=this.gaugeValues.get(e);if(t===null){if(d){if(d.delete(n),d.size===0)this.gaugeValues.delete(e),this.gauges.delete(e)}return}let a=d;if(!a)a=new Map,this.gaugeValues.set(e,a);if(!this.gauges.has(e)){let l=this.meter.createObservableGauge(e,i?{description:i}:void 0);l.addCallback((m)=>{for(let A of this.snapshotGaugeSeries(e))m.observe(A.value,this.flattenProperties(A.attributes))}),this.gauges.set(e,l)}a.set(n,{value:t,attributes:s})}isEnabled(){return typeof this.enabled==="function"?this.enabled():this.enabled}setDistinctId(e){this.distinctId=e}setCommonProperties(e){this.commonProperties={...e}}updateCommonProperties(e){this.commonProperties={...this.commonProperties,...e}}async flush(){await Promise.all([this.meterProvider?.forceFlush?.(),this.loggerProvider?.forceFlush?.()])}async dispose(){await Promise.all([this.meterProvider?.shutdown?.(),this.loggerProvider?.shutdown?.()])}emitLog(e,t,r){if(!this.logger)return;let i=this.flattenProperties(this.buildAttributes(t,r)),o=J(i.severity);this.logger.emit({severityText:o.text,severityNumber:o.number,body:e,attributes:i})}buildAttributes(e,t=!1){return{...this.commonProperties,...this.metadata,...e,...this.distinctId?{distinct_id:this.distinctId}:{},...t?{_required:!0}:{}}}snapshotGaugeSeries(e){let t=this.gaugeValues.get(e);if(!t)return[];return Array.from(t.values(),(r)=>({value:r.value,attributes:r.attributes?{...r.attributes}:void 0}))}flattenProperties(e,t="",r=new WeakSet,i=0){if(!e)return{};let o={},s=100,n=10;for(let[d,a]of Object.entries(e)){if(d==="__proto__"||d==="constructor"||d==="prototype")continue;let l=t?`${t}.${d}`:d;if(a===null||a===void 0){o[l]=String(a);continue}if(Array.isArray(a)){let m=a.length>s?a.slice(0,s):a;try{o[l]=JSON.stringify(m)}catch{o[l]="[UnserializableArray]"}if(a.length>s)o[`${l}_truncated`]=!0,o[`${l}_original_length`]=a.length;continue}if(typeof a==="object"){if(a instanceof Date){o[l]=a.toISOString();continue}if(a instanceof Error){o[l]=a.message;continue}if(r.has(a)){o[l]="[Circular]";continue}if(i>=n){o[l]="[MaxDepthExceeded]";continue}r.add(a),Object.assign(o,this.flattenProperties(a,l,r,i+1));continue}if(Q(a)){o[l]=a;continue}try{o[l]=JSON.stringify(a)}catch{o[l]=String(a)}}return o}}function J(e){switch(typeof e==="string"?e.toLowerCase():e){case"trace":return{text:"TRACE",number:g.TRACE};case"debug":return{text:"DEBUG",number:g.DEBUG};case"warn":case"warning":return{text:"WARN",number:g.WARN};case"error":return{text:"ERROR",number:g.ERROR};case"fatal":return{text:"FATAL",number:g.FATAL};default:return{text:"INFO",number:g.INFO}}}function Q(e){return typeof e==="string"||typeof e==="number"||typeof e==="boolean"}import{LangfuseAttributesSpanProcessor as ce}from"@cline/llms";import{markOtlpTraceRelayProvider as ue}from"@cline/shared";import{metrics as me,trace as pe}from"@opentelemetry/api";import{logs as ge}from"@opentelemetry/api-logs";import{OTLPLogExporter as fe}from"@opentelemetry/exporter-logs-otlp-http";import{OTLPMetricExporter as ye}from"@opentelemetry/exporter-metrics-otlp-http";import{OTLPTraceExporter as Te}from"@opentelemetry/exporter-trace-otlp-http";import{resourceFromAttributes as Se}from"@opentelemetry/resources";import{BatchLogRecordProcessor as ve,ConsoleLogRecordExporter as be,LoggerProvider as Ee}from"@opentelemetry/sdk-logs";import{ConsoleMetricExporter as he,MeterProvider as Pe,PeriodicExportingMetricReader as N}from"@opentelemetry/sdk-metrics";import{BatchSpanProcessor as _e,ConsoleSpanExporter as Ie,SimpleSpanProcessor as Ae}from"@opentelemetry/sdk-trace-base";import{NodeTracerProvider as Oe}from"@opentelemetry/sdk-trace-node";import{ATTR_SERVICE_NAME as Ce,ATTR_SERVICE_VERSION as xe}from"@opentelemetry/semantic-conventions";import{mkdirSync as rt,readFileSync as Z,statSync as ee,writeFileSync as it}from"node:fs";import{CONFIGURABLE_MODEL_TOOL_NAMES as te}from"@cline/shared";import{resolveGlobalSettingsPath as re}from"@cline/shared/storage";import{z as c}from"zod";import{AGENT_UNEXPECTED_REASONING_TOKENS_EVENT as Be,captureAgentUnexpectedReasoningTokens as ze,captureTaskLifecycleEvent as je,SDK_ERROR_TELEMETRY_EVENT as We,TASK_CANCELLED_EVENT as qe,TASK_FIRST_CHUNK_RECEIVED_EVENT as Ye,TASK_MAX_TOKENS_RECOVERY_EVENT as Xe,TASK_PROVIDER_REQUEST_STARTED_EVENT as $e,TASK_PROVIDER_STREAM_FAILED_EVENT as Je,TASK_PROVIDER_STREAM_STARTED_EVENT as Qe}from"@cline/shared";var b=c.preprocess((e)=>Array.isArray(e)?e.filter((t)=>typeof t==="string").map((t)=>t.trim()).filter(Boolean):void 0,c.array(c.string()).optional()).transform((e)=>{if(!e)return;let t=[...new Set(e)].sort((r,i)=>r.localeCompare(i));return t.length>0?t:void 0}),ie=c.enum(["basic","agentic"]).catch("agentic"),oe=c.partialRecord(c.enum(te),c.object({enabled:c.boolean()}).strip()).optional(),ne=c.enum(["plan","act"]),M=c.object({telemetryOptOut:c.boolean().default(!1).catch(!1),autoUpdateEnabled:c.boolean().default(!0).catch(!0),compactionStrategy:ie.optional(),compactionEnabled:c.boolean().optional().catch(void 0),planActMode:ne.optional().catch(void 0),toolAutoApprove:c.boolean().optional().catch(void 0),tuiTheme:c.string().optional().catch(void 0),disabledTools:b.optional(),tools:oe,disabledPlugins:b.optional(),disabledAgentPlugins:b.optional()}).strip().transform((e)=>{let t={autoUpdateEnabled:e.autoUpdateEnabled,telemetryOptOut:e.telemetryOptOut};if(e.compactionStrategy)t.compactionStrategy=e.compactionStrategy;if(e.compactionEnabled!==void 0)t.compactionEnabled=e.compactionEnabled;if(e.planActMode)t.planActMode=e.planActMode;if(e.toolAutoApprove!==void 0)t.toolAutoApprove=e.toolAutoApprove;if(e.tuiTheme?.trim())t.tuiTheme=e.tuiTheme.trim();if(e.disabledTools?.length)t.disabledTools=e.disabledTools;if(e.tools&&Object.keys(e.tools).length>0)t.tools=e.tools;if(e.disabledPlugins?.length)t.disabledPlugins=e.disabledPlugins;if(e.disabledAgentPlugins?.length)t.disabledAgentPlugins=e.disabledAgentPlugins;return t});function T(){return M.parse({})}var E;function se(e){if(e.disabledTools)Object.freeze(e.disabledTools);if(e.tools){for(let t of Object.values(e.tools))Object.freeze(t);Object.freeze(e.tools)}if(e.disabledPlugins)Object.freeze(e.disabledPlugins);if(e.disabledAgentPlugins)Object.freeze(e.disabledAgentPlugins);return Object.freeze(e)}function ae(e){let t;try{t=Z(e,"utf8")}catch{return{value:T(),loadFailed:!0}}try{let r=M.safeParse(JSON.parse(t));return r.success?{value:r.data,loadFailed:!1}:{value:T(),loadFailed:!0}}catch{return{value:T(),loadFailed:!0}}}function de(){let e=re(),t=ee(e,{throwIfNoEntry:!1}),r=t?.mtimeMs??0,i=t?.size??0,o=E;if(o&&o.path===e&&o.mtimeMs===r&&o.size===i)return o;let s=t?ae(e):{value:T(),loadFailed:!1},n=se(s.value);return E={path:e,mtimeMs:r,size:i,value:n,loadFailed:s.loadFailed},E}function le(){return de().value}function D(){return le().telemetryOptOut}class h{name;logger;enabled;constructor(e={}){this.name=e.name??"TelemetryLoggerSink",this.logger=e.logger,this.enabled=e.enabled??!0}emit(e,t){if(!this.isEnabled())return;this.logger?.log("telemetry.event",{telemetrySink:this.name,event:e,properties:t})}emitRequired(e,t){this.logger?.log("telemetry.required_event",{telemetrySink:this.name,severity:"warn",event:e,properties:t})}recordCounter(e,t,r,i,o){if(!o&&!this.isEnabled())return;this.logger?.debug("telemetry.metric",{telemetrySink:this.name,instrument:"counter",name:e,value:t,attributes:r,description:i,required:o===!0})}recordHistogram(e,t,r,i,o){if(!o&&!this.isEnabled())return;this.logger?.debug("telemetry.metric",{telemetrySink:this.name,instrument:"histogram",name:e,value:t,attributes:r,description:i,required:o===!0})}recordGauge(e,t,r,i,o){if(!o&&!this.isEnabled())return;this.logger?.debug("telemetry.metric",{telemetrySink:this.name,instrument:"gauge",name:e,value:t,attributes:r,description:i,required:o===!0})}isEnabled(){return typeof this.enabled==="function"?this.enabled():this.enabled}async flush(){}async dispose(){}}class S{adapters;metadata;distinctId;deviceId;commonProperties;constructor(e={}){if(this.adapters=[...e.adapters??[]],e.logger)this.adapters.push(new h({logger:e.logger}));this.metadata={...e.metadata??{}},this.distinctId=e.distinctId,this.deviceId=e.deviceId??v(),this.commonProperties={...e.commonProperties??{}}}addAdapter(e){this.adapters.push(e)}setDistinctId(e){this.distinctId=e}setMetadata(e){this.metadata={...e}}updateMetadata(e){this.metadata={...this.metadata,...e}}setCommonProperties(e){this.commonProperties={...e}}updateCommonProperties(e){this.commonProperties={...this.commonProperties,...e}}isEnabled(){return this.adapters.some((e)=>e.isEnabled())}capture(e){let t=this.buildAttributes(e.properties);for(let r of this.adapters)r.emit(e.event,t)}captureRequired(e,t){let r=this.buildAttributes(t);for(let i of this.adapters)i.emitRequired(e,r)}recordCounter(e,t,r,i,o=!1){let s=this.buildAttributes(r);for(let n of this.adapters)n.recordCounter(e,t,s,i,o)}recordHistogram(e,t,r,i,o=!1){let s=this.buildAttributes(r);for(let n of this.adapters)n.recordHistogram(e,t,s,i,o)}recordGauge(e,t,r,i,o=!1){let s=this.buildAttributes(r);for(let n of this.adapters)n.recordGauge(e,t,s,i,o)}async flush(){await Promise.all(this.adapters.map((e)=>e.flush()))}async dispose(){await Promise.all(this.adapters.map((e)=>e.dispose()))}buildAttributes(e){let t=typeof e?.distinct_id==="string"&&e.distinct_id.trim()?e.distinct_id.trim():this.distinctId,r={...this.commonProperties,...this.metadata,...e,...t?{distinct_id:t}:{},device_id:this.deviceId};return Object.fromEntries(Object.entries(r).filter(([,i])=>i!==void 0))}}class k{distinctId;metadata;commonProperties;constructor(e={}){this.distinctId=e.distinctId,this.metadata={...e.metadata??{}},this.commonProperties={...e.commonProperties??{}}}setDistinctId(e){this.distinctId=e}setMetadata(e){this.metadata={...e}}updateMetadata(e){this.metadata={...this.metadata,...e}}setCommonProperties(e){this.commonProperties={...e}}updateCommonProperties(e){this.commonProperties={...this.commonProperties,...e}}isEnabled(){return!1}capture(e){this.resolveProperties(e.properties)}captureRequired(e,t){this.resolveProperties(t)}recordCounter(){}recordHistogram(){}recordGauge(){}async flush(){}async dispose(){}resolveProperties(e){let t=typeof e?.distinct_id==="string"&&e.distinct_id.trim()?e.distinct_id.trim():this.distinctId,r={...this.commonProperties,...this.metadata,...e,...t?{distinct_id:t}:{}};return Object.fromEntries(Object.entries(r).filter(([,i])=>i!==void 0))}}class _{meterProvider;loggerProvider;tracerProvider;options;constructor(e={}){this.options=e;let t=Se({[Ce]:e.serviceName??"cline",...e.serviceVersion?{[xe]:e.serviceVersion}:{}});if(this.meterProvider=this.createMeterProvider(t),this.loggerProvider=this.createLoggerProvider(t),this.tracerProvider=this.createTracerProvider(t),this.meterProvider)me.setGlobalMeterProvider(this.meterProvider);if(this.loggerProvider)ge.setGlobalLoggerProvider(this.loggerProvider);if(this.tracerProvider)this.tracerProvider.register()}getTracer(e="cline",t){return pe.getTracer(e,t??this.options.serviceVersion)}createAdapter(e){return new y({...e,meterProvider:this.meterProvider,loggerProvider:this.loggerProvider})}createTelemetryService(e){let t=this.createAdapter({name:e.name,enabled:this.options.enabled,metadata:e.metadata});return new S({...e,adapters:[t],distinctId:f(e.distinctId)})}async forceFlush(){await Promise.all([this.meterProvider?.forceFlush?.(),this.loggerProvider?.forceFlush?.(),this.tracerProvider?.forceFlush?.()])}async dispose(){await Promise.all([this.meterProvider?.shutdown?.(),this.loggerProvider?.shutdown?.(),this.tracerProvider?.shutdown?.()])}createMeterProvider(e){let t=P(this.options.metricsExporter);if(t.length===0)return null;let r=Math.max(1000,this.options.metricExportIntervalMs??this.options.metricExportInterval??60000),i=Math.min(30000,Math.floor(r*0.8)),o=t.map((s)=>Ne(s,{endpoint:this.options.otlpEndpoint,headers:this.options.otlpHeaders,insecure:this.options.otlpInsecure??!1,protocol:"http/json",interval:r,timeout:i})).filter((s)=>s!==null);if(o.length===0)return null;return new Pe({resource:e,readers:o})}createTracerProvider(e){let t=P(this.options.tracesExporter);if(t.length===0)return null;let r=this.options.otlpTracesEndpoint??this.options.otlpEndpoint,i=this.options.otlpTracesHeaders??this.options.otlpHeaders,o=[],s=!1;for(let d of t){let a=De(d,{endpoint:r,headers:i,insecure:this.options.otlpInsecure??!1,protocol:"http/json"});if(a){if(o.push(a),d!=="console")s=!0}}if(o.length===0)return null;let n=new Oe({resource:e,spanProcessors:s?[new ce,...o]:o});if(s)ue(n);return n}createLoggerProvider(e){let t=P(this.options.logsExporter);if(t.length===0)return null;let r=t.map((i)=>{let o=Me(i,{endpoint:this.options.otlpEndpoint,headers:this.options.otlpHeaders,insecure:this.options.otlpInsecure??!1,protocol:"http/json"});if(!o)return null;return new ve(o,{maxQueueSize:this.options.logMaxQueueSize??2048,maxExportBatchSize:this.options.logBatchSize??512,scheduledDelayMillis:this.options.logBatchTimeoutMs??this.options.logBatchTimeout??5000})}).filter((i)=>i!==null);if(r.length===0)return null;return new Ee({resource:e,processors:r})}}function L(e){let t=new _(e),r=t.createTelemetryService(e),i=()=>{r.captureRequired("telemetry.provider_created",{provider:"opentelemetry",enabled:e.enabled??!0,logsExporter:Array.isArray(e.logsExporter)?e.logsExporter.join(","):e.logsExporter,metricsExporter:Array.isArray(e.metricsExporter)?e.metricsExporter.join(","):e.metricsExporter,tracesExporter:Array.isArray(e.tracesExporter)?e.tracesExporter.join(","):e.tracesExporter,otlpProtocol:e.otlpProtocol,hasOtlpEndpoint:Boolean(e.otlpEndpoint),serviceName:e.serviceName,serviceVersion:e.serviceVersion})};if(!e.deferProviderCreatedEvent)i();return{provider:t,telemetry:r,emitProviderCreated:i}}function w(e){if(D())return{telemetry:new k(e)};if(e.enabled!==!0)return{telemetry:new S({...e,distinctId:f(e.distinctId)})};return L(e)}function Re(e){let{telemetry:t,provider:r,emitProviderCreated:i}=w(e);return{telemetry:t,provider:r,flush:async()=>{let n=r;if(n&&typeof n.forceFlush==="function")try{await n.forceFlush()}catch{}},dispose:async()=>{await Promise.allSettled([t.dispose(),r?.dispose()])},...e.deferProviderCreatedEvent&&i?{emitProviderCreated:i}:{}}}function P(e){if(!e)return[];return(Array.isArray(e)?e:e.split(",")).map((r)=>r.trim()).filter((r)=>r==="console"||r==="otlp")}function Me(e,t){if(e==="console")return new be;if(!t.endpoint)return null;let r=I(t.endpoint,"/v1/logs");return new fe({url:r,headers:t.headers})}function De(e,t){if(e==="console")return new Ae(new Ie);if(!t.endpoint)return null;let r=I(t.endpoint,"/v1/traces");return new _e(new Te({url:r,headers:t.headers}))}function Ne(e,t){if(e==="console")return new N({exporter:new he,exportIntervalMillis:t.interval,exportTimeoutMillis:t.timeout});if(!t.endpoint)return null;let r=I(t.endpoint,"/v1/metrics");return new N({exporter:new ye({url:r,headers:t.headers}),exportIntervalMillis:t.interval,exportTimeoutMillis:t.timeout})}function I(e,t){let r=new URL(e),i=r.pathname.endsWith("/")?r.pathname.slice(0,-1):r.pathname;return r.pathname=i.endsWith(t)?i:`${i}${t}`,r.toString()}import{SESSION_STATUS_VALUES as Dt}from"@cline/shared";var p={CORE:"core",CLI:"cli",SUBAGENT:"subagent",DESKTOP:"desktop",KANBAN:"kanban",API:"api",WEB:"web",VSCODE:"vscode",ENTERPRISE:"enterprise",IDE:"ide",JETBRAINS:"jetbrains",NEOVIM:"neovim",UNKNOWN:"unknown"};function G(e){let t=[e?.name,e?.platform].filter((r)=>typeof r==="string").join(" ").toLowerCase();if(!t)return;if(t.includes("vscode")||t.includes("visual studio code"))return p.VSCODE;if(t.includes("jetbrains")||t.includes("webstorm")||t.includes("intellij")||t.includes("pycharm")||t.includes("goland")||t.includes("clion")||t.includes("rider")||t.includes("android studio"))return p.JETBRAINS;if(t.includes("neovim"))return p.NEOVIM;if(t.includes("kanban"))return p.KANBAN;if(t.includes("desktop"))return p.DESKTOP;if(t.includes("cline-platform"))return p.WEB;if(t.includes("cline-cli")||t.includes("cline-acp"))return p.CLI;if(t.includes("cline-sdk")||t.includes("cline-core"))return p.CORE;return}function u(e){let t=e?.trim();return t?t:void 0}function U(e){let t=e.client,r=G(t)??u(e.source),i=u(t.version),o=u(t.platform)??u(t.name),s=u(t.platformVersion)??i,n={cline_type:r,extension_version:i,platform:o,platform_version:s};if(e.user?.accountId===void 0)return n;let d=typeof e.user.accountId==="string"?u(e.user.accountId):void 0;return{...n,distinct_id:d??u(e.user.distinctId),user_id:d,account_id:d,account_email:d?u(e.user.email):void 0,organization_id:d?u(e.user.organizationId):void 0}}function K(e,t){let r={},i={},o,s=(n)=>({...t,...i,...r,...n,...o?{distinct_id:o}:{}});return{setDistinctId(n){o=u(n)},setMetadata(n){r={...n}},updateMetadata(n){r={...r,...n}},setCommonProperties(n){i={...n}},updateCommonProperties(n){i={...i,...n}},isEnabled:()=>e.isEnabled(),capture:(n)=>e.capture({event:n.event,properties:s(n.properties)}),captureRequired:(n,d)=>e.captureRequired(n,s(d)),recordCounter:(n,d,a,l,m)=>e.recordCounter(n,d,s(a),l,m),recordHistogram:(n,d,a,l,m)=>e.recordHistogram(n,d,s(a),l,m),recordGauge:(n,d,a,l,m)=>e.recordGauge(n,d,s(a),l,m),flush:()=>e.flush(),dispose:async()=>{}}}function ke(e,t){return K(e,U(t))}export{y as OpenTelemetryAdapter,_ as OpenTelemetryProvider,ke as createClientScopedTelemetryService,Re as createConfiguredTelemetryHandle,w as createConfiguredTelemetryService,L as createOpenTelemetryTelemetryService,K as createScopedTelemetryService,U as resolveClientTelemetryProperties,v as resolveCoreDeviceId,f as resolveCoreDistinctId};
1
+ import{existsSync as F,mkdirSync as H,readFileSync as V,writeFileSync as B}from"node:fs";import{resolve as z}from"node:path";import{resolveSessionDataDir as j}from"@cline/shared/storage";import{nanoid as W}from"nanoid";import*as q from"node-machine-id";var Y="machine-id",O,C=!1;function v(){if(!C)O=x(),C=!0;return O??R()}function f(e){let t=e?.trim();if(t)return t;let r=x();if(r)return r;return R()}function X(){let e=q;return e.machineIdSync??e.default?.machineIdSync}function x(){try{let e=X();if(!e)return;return e().trim()||void 0}catch{return}}function R(){let e=j(),t=z(e,Y);try{if(F(t)){let i=V(t,"utf8").trim();if(i.length>0)return i}}catch{}let r=`cl-${W()}`;try{H(e,{recursive:!0}),B(t,r,"utf8")}catch{}return r}import{SeverityNumber as g}from"@opentelemetry/api-logs";class y{name;metadata;meter;logger;enabled;distinctId;commonProperties;counters=new Map;histograms=new Map;gauges=new Map;gaugeValues=new Map;meterProvider;loggerProvider;constructor(e){this.name=e.name??"OpenTelemetryAdapter",this.metadata={...e.metadata},this.meterProvider=e.meterProvider,this.loggerProvider=e.loggerProvider,this.meter=e.meterProvider?.getMeter("cline")??null,this.logger=e.loggerProvider?.getLogger("cline")??null,this.enabled=e.enabled??!0,this.distinctId=e.distinctId,this.commonProperties=e.commonProperties?{...e.commonProperties}:{}}emit(e,t){if(!this.isEnabled())return;this.emitLog(e,t,!1)}emitRequired(e,t){this.emitLog(e,t,!0)}recordCounter(e,t,r,i,o=!1){if(!this.meter||!o&&!this.isEnabled())return;let s=this.counters.get(e);if(!s)s=this.meter.createCounter(e,i?{description:i}:void 0),this.counters.set(e,s);s.add(t,this.flattenProperties(this.buildAttributes(r)))}recordHistogram(e,t,r,i,o=!1){if(!this.meter||!o&&!this.isEnabled())return;let s=this.histograms.get(e);if(!s)s=this.meter.createHistogram(e,i?{description:i}:void 0),this.histograms.set(e,s);s.record(t,this.flattenProperties(this.buildAttributes(r)))}recordGauge(e,t,r,i,o=!1){if(!this.meter||!o&&!this.isEnabled())return;let s=this.buildAttributes(r),n=JSON.stringify(s),d=this.gaugeValues.get(e);if(t===null){if(d){if(d.delete(n),d.size===0)this.gaugeValues.delete(e),this.gauges.delete(e)}return}let a=d;if(!a)a=new Map,this.gaugeValues.set(e,a);if(!this.gauges.has(e)){let l=this.meter.createObservableGauge(e,i?{description:i}:void 0);l.addCallback((m)=>{for(let A of this.snapshotGaugeSeries(e))m.observe(A.value,this.flattenProperties(A.attributes))}),this.gauges.set(e,l)}a.set(n,{value:t,attributes:s})}isEnabled(){return typeof this.enabled==="function"?this.enabled():this.enabled}setDistinctId(e){this.distinctId=e}setCommonProperties(e){this.commonProperties={...e}}updateCommonProperties(e){this.commonProperties={...this.commonProperties,...e}}async flush(){await Promise.all([this.meterProvider?.forceFlush?.(),this.loggerProvider?.forceFlush?.()])}async dispose(){await Promise.all([this.meterProvider?.shutdown?.(),this.loggerProvider?.shutdown?.()])}emitLog(e,t,r){if(!this.logger)return;let i=this.flattenProperties(this.buildAttributes(t,r)),o=J(i.severity);this.logger.emit({severityText:o.text,severityNumber:o.number,body:e,attributes:i})}buildAttributes(e,t=!1){return{...this.commonProperties,...this.metadata,...e,...this.distinctId?{distinct_id:this.distinctId}:{},...t?{_required:!0}:{}}}snapshotGaugeSeries(e){let t=this.gaugeValues.get(e);if(!t)return[];return Array.from(t.values(),(r)=>({value:r.value,attributes:r.attributes?{...r.attributes}:void 0}))}flattenProperties(e,t="",r=new WeakSet,i=0){if(!e)return{};let o={},s=100,n=10;for(let[d,a]of Object.entries(e)){if(d==="__proto__"||d==="constructor"||d==="prototype")continue;let l=t?`${t}.${d}`:d;if(a===null||a===void 0){o[l]=String(a);continue}if(Array.isArray(a)){let m=a.length>s?a.slice(0,s):a;try{o[l]=JSON.stringify(m)}catch{o[l]="[UnserializableArray]"}if(a.length>s)o[`${l}_truncated`]=!0,o[`${l}_original_length`]=a.length;continue}if(typeof a==="object"){if(a instanceof Date){o[l]=a.toISOString();continue}if(a instanceof Error){o[l]=a.message;continue}if(r.has(a)){o[l]="[Circular]";continue}if(i>=n){o[l]="[MaxDepthExceeded]";continue}r.add(a),Object.assign(o,this.flattenProperties(a,l,r,i+1));continue}if(Q(a)){o[l]=a;continue}try{o[l]=JSON.stringify(a)}catch{o[l]=String(a)}}return o}}function J(e){switch(typeof e==="string"?e.toLowerCase():e){case"trace":return{text:"TRACE",number:g.TRACE};case"debug":return{text:"DEBUG",number:g.DEBUG};case"warn":case"warning":return{text:"WARN",number:g.WARN};case"error":return{text:"ERROR",number:g.ERROR};case"fatal":return{text:"FATAL",number:g.FATAL};default:return{text:"INFO",number:g.INFO}}}function Q(e){return typeof e==="string"||typeof e==="number"||typeof e==="boolean"}import{LangfuseAttributesSpanProcessor as ce}from"@cline/llms";import{markOtlpTraceRelayProvider as ue}from"@cline/shared";import{metrics as me,trace as pe}from"@opentelemetry/api";import{logs as ge}from"@opentelemetry/api-logs";import{OTLPLogExporter as fe}from"@opentelemetry/exporter-logs-otlp-http";import{OTLPMetricExporter as ye}from"@opentelemetry/exporter-metrics-otlp-http";import{OTLPTraceExporter as Te}from"@opentelemetry/exporter-trace-otlp-http";import{resourceFromAttributes as Se}from"@opentelemetry/resources";import{BatchLogRecordProcessor as ve,ConsoleLogRecordExporter as be,LoggerProvider as Ee}from"@opentelemetry/sdk-logs";import{ConsoleMetricExporter as he,MeterProvider as Pe,PeriodicExportingMetricReader as N}from"@opentelemetry/sdk-metrics";import{BatchSpanProcessor as _e,ConsoleSpanExporter as Ie,SimpleSpanProcessor as Ae}from"@opentelemetry/sdk-trace-base";import{NodeTracerProvider as Oe}from"@opentelemetry/sdk-trace-node";import{ATTR_SERVICE_NAME as Ce,ATTR_SERVICE_VERSION as xe}from"@opentelemetry/semantic-conventions";import{mkdirSync as rt,readFileSync as Z,statSync as ee,writeFileSync as it}from"node:fs";import{CONFIGURABLE_MODEL_TOOL_NAMES as te}from"@cline/shared";import{resolveGlobalSettingsPath as re}from"@cline/shared/storage";import{z as c}from"zod";import{AGENT_UNEXPECTED_REASONING_TOKENS_EVENT as Be,captureAgentUnexpectedReasoningTokens as ze,captureTaskLifecycleEvent as je,SDK_ERROR_TELEMETRY_EVENT as We,TASK_CANCELLED_EVENT as qe,TASK_FIRST_CHUNK_RECEIVED_EVENT as Ye,TASK_MAX_TOKENS_RECOVERY_EVENT as Xe,TASK_PROVIDER_REQUEST_STARTED_EVENT as $e,TASK_PROVIDER_STREAM_FAILED_EVENT as Je,TASK_PROVIDER_STREAM_STARTED_EVENT as Qe}from"@cline/shared";var b=c.preprocess((e)=>Array.isArray(e)?e.filter((t)=>typeof t==="string").map((t)=>t.trim()).filter(Boolean):void 0,c.array(c.string()).optional()).transform((e)=>{if(!e)return;let t=[...new Set(e)].sort((r,i)=>r.localeCompare(i));return t.length>0?t:void 0}),ie=c.enum(["basic","agentic"]).catch("agentic"),oe=c.partialRecord(c.enum(te),c.object({enabled:c.boolean()}).strip()).optional(),ne=c.enum(["plan","act"]),M=c.object({telemetryOptOut:c.boolean().default(!1).catch(!1),autoUpdateEnabled:c.boolean().default(!0).catch(!0),compactionStrategy:ie.optional(),compactionEnabled:c.boolean().optional().catch(void 0),planActMode:ne.optional().catch(void 0),toolAutoApprove:c.boolean().optional().catch(void 0),tuiTheme:c.string().optional().catch(void 0),disabledTools:b.optional(),tools:oe,disabledPlugins:b.optional(),disabledAgentPlugins:b.optional()}).strip().transform((e)=>{let t={autoUpdateEnabled:e.autoUpdateEnabled,telemetryOptOut:e.telemetryOptOut};if(e.compactionStrategy)t.compactionStrategy=e.compactionStrategy;if(e.compactionEnabled!==void 0)t.compactionEnabled=e.compactionEnabled;if(e.planActMode)t.planActMode=e.planActMode;if(e.toolAutoApprove!==void 0)t.toolAutoApprove=e.toolAutoApprove;if(e.tuiTheme?.trim())t.tuiTheme=e.tuiTheme.trim();if(e.disabledTools?.length)t.disabledTools=e.disabledTools;if(e.tools&&Object.keys(e.tools).length>0)t.tools=e.tools;if(e.disabledPlugins?.length)t.disabledPlugins=e.disabledPlugins;if(e.disabledAgentPlugins?.length)t.disabledAgentPlugins=e.disabledAgentPlugins;return t});function T(){return M.parse({})}var E;function se(e){if(e.disabledTools)Object.freeze(e.disabledTools);if(e.tools){for(let t of Object.values(e.tools))Object.freeze(t);Object.freeze(e.tools)}if(e.disabledPlugins)Object.freeze(e.disabledPlugins);if(e.disabledAgentPlugins)Object.freeze(e.disabledAgentPlugins);return Object.freeze(e)}function ae(e){let t;try{t=Z(e,"utf8")}catch{return{value:T(),loadFailed:!0}}try{let r=M.safeParse(JSON.parse(t));return r.success?{value:r.data,loadFailed:!1}:{value:T(),loadFailed:!0}}catch{return{value:T(),loadFailed:!0}}}function de(){let e=re(),t=ee(e,{throwIfNoEntry:!1}),r=t?.mtimeMs??0,i=t?.size??0,o=E;if(o&&o.path===e&&o.mtimeMs===r&&o.size===i)return o;let s=t?ae(e):{value:T(),loadFailed:!1},n=se(s.value);return E={path:e,mtimeMs:r,size:i,value:n,loadFailed:s.loadFailed},E}function le(){return de().value}function D(){return le().telemetryOptOut}class h{name;logger;enabled;constructor(e={}){this.name=e.name??"TelemetryLoggerSink",this.logger=e.logger,this.enabled=e.enabled??!0}emit(e,t){if(!this.isEnabled())return;this.logger?.log("telemetry.event",{telemetrySink:this.name,event:e,properties:t})}emitRequired(e,t){this.logger?.log("telemetry.required_event",{telemetrySink:this.name,severity:"warn",event:e,properties:t})}recordCounter(e,t,r,i,o){if(!o&&!this.isEnabled())return;this.logger?.debug("telemetry.metric",{telemetrySink:this.name,instrument:"counter",name:e,value:t,attributes:r,description:i,required:o===!0})}recordHistogram(e,t,r,i,o){if(!o&&!this.isEnabled())return;this.logger?.debug("telemetry.metric",{telemetrySink:this.name,instrument:"histogram",name:e,value:t,attributes:r,description:i,required:o===!0})}recordGauge(e,t,r,i,o){if(!o&&!this.isEnabled())return;this.logger?.debug("telemetry.metric",{telemetrySink:this.name,instrument:"gauge",name:e,value:t,attributes:r,description:i,required:o===!0})}isEnabled(){return typeof this.enabled==="function"?this.enabled():this.enabled}async flush(){}async dispose(){}}class S{adapters;metadata;distinctId;deviceId;commonProperties;constructor(e={}){if(this.adapters=[...e.adapters??[]],e.logger)this.adapters.push(new h({logger:e.logger}));this.metadata={...e.metadata??{}},this.distinctId=e.distinctId,this.deviceId=e.deviceId??v(),this.commonProperties={...e.commonProperties??{}}}addAdapter(e){this.adapters.push(e)}setDistinctId(e){this.distinctId=e}setMetadata(e){this.metadata={...e}}updateMetadata(e){this.metadata={...this.metadata,...e}}setCommonProperties(e){this.commonProperties={...e}}updateCommonProperties(e){this.commonProperties={...this.commonProperties,...e}}isEnabled(){return this.adapters.some((e)=>e.isEnabled())}capture(e){let t=this.buildAttributes(e.properties);for(let r of this.adapters)r.emit(e.event,t)}captureRequired(e,t){let r=this.buildAttributes(t);for(let i of this.adapters)i.emitRequired(e,r)}recordCounter(e,t,r,i,o=!1){let s=this.buildAttributes(r);for(let n of this.adapters)n.recordCounter(e,t,s,i,o)}recordHistogram(e,t,r,i,o=!1){let s=this.buildAttributes(r);for(let n of this.adapters)n.recordHistogram(e,t,s,i,o)}recordGauge(e,t,r,i,o=!1){let s=this.buildAttributes(r);for(let n of this.adapters)n.recordGauge(e,t,s,i,o)}async flush(){await Promise.all(this.adapters.map((e)=>e.flush()))}async dispose(){await Promise.all(this.adapters.map((e)=>e.dispose()))}buildAttributes(e){let t=typeof e?.distinct_id==="string"&&e.distinct_id.trim()?e.distinct_id.trim():this.distinctId,r={...this.commonProperties,...this.metadata,...e,...t?{distinct_id:t}:{},device_id:this.deviceId};return Object.fromEntries(Object.entries(r).filter(([,i])=>i!==void 0))}}class k{distinctId;metadata;commonProperties;constructor(e={}){this.distinctId=e.distinctId,this.metadata={...e.metadata??{}},this.commonProperties={...e.commonProperties??{}}}setDistinctId(e){this.distinctId=e}setMetadata(e){this.metadata={...e}}updateMetadata(e){this.metadata={...this.metadata,...e}}setCommonProperties(e){this.commonProperties={...e}}updateCommonProperties(e){this.commonProperties={...this.commonProperties,...e}}isEnabled(){return!1}capture(e){this.resolveProperties(e.properties)}captureRequired(e,t){this.resolveProperties(t)}recordCounter(){}recordHistogram(){}recordGauge(){}async flush(){}async dispose(){}resolveProperties(e){let t=typeof e?.distinct_id==="string"&&e.distinct_id.trim()?e.distinct_id.trim():this.distinctId,r={...this.commonProperties,...this.metadata,...e,...t?{distinct_id:t}:{}};return Object.fromEntries(Object.entries(r).filter(([,i])=>i!==void 0))}}class _{meterProvider;loggerProvider;tracerProvider;options;constructor(e={}){this.options=e;let t=Se({...e.resourceAttributes,[Ce]:e.serviceName??"cline",...e.serviceVersion?{[xe]:e.serviceVersion}:{}});if(this.meterProvider=this.createMeterProvider(t),this.loggerProvider=this.createLoggerProvider(t),this.tracerProvider=this.createTracerProvider(t),this.meterProvider)me.setGlobalMeterProvider(this.meterProvider);if(this.loggerProvider)ge.setGlobalLoggerProvider(this.loggerProvider);if(this.tracerProvider)this.tracerProvider.register()}getTracer(e="cline",t){return pe.getTracer(e,t??this.options.serviceVersion)}createAdapter(e){return new y({...e,meterProvider:this.meterProvider,loggerProvider:this.loggerProvider})}createTelemetryService(e){let t=this.createAdapter({name:e.name,enabled:this.options.enabled,metadata:e.metadata});return new S({...e,adapters:[t],distinctId:f(e.distinctId)})}async forceFlush(){await Promise.all([this.meterProvider?.forceFlush?.(),this.loggerProvider?.forceFlush?.(),this.tracerProvider?.forceFlush?.()])}async dispose(){await Promise.all([this.meterProvider?.shutdown?.(),this.loggerProvider?.shutdown?.(),this.tracerProvider?.shutdown?.()])}createMeterProvider(e){let t=P(this.options.metricsExporter);if(t.length===0)return null;let r=Math.max(1000,this.options.metricExportIntervalMs??this.options.metricExportInterval??60000),i=Math.min(30000,Math.floor(r*0.8)),o=t.map((s)=>Ne(s,{endpoint:this.options.otlpEndpoint,headers:this.options.otlpHeaders,insecure:this.options.otlpInsecure??!1,protocol:"http/json",interval:r,timeout:i})).filter((s)=>s!==null);if(o.length===0)return null;return new Pe({resource:e,readers:o})}createTracerProvider(e){let t=P(this.options.tracesExporter);if(t.length===0)return null;let r=this.options.otlpTracesEndpoint??this.options.otlpEndpoint,i=this.options.otlpTracesHeaders??this.options.otlpHeaders,o=[],s=!1;for(let d of t){let a=De(d,{endpoint:r,headers:i,insecure:this.options.otlpInsecure??!1,protocol:"http/json"});if(a){if(o.push(a),d!=="console")s=!0}}if(o.length===0)return null;let n=new Oe({resource:e,spanProcessors:s?[new ce,...o]:o});if(s)ue(n);return n}createLoggerProvider(e){let t=P(this.options.logsExporter);if(t.length===0)return null;let r=t.map((i)=>{let o=Me(i,{endpoint:this.options.otlpEndpoint,headers:this.options.otlpHeaders,insecure:this.options.otlpInsecure??!1,protocol:"http/json"});if(!o)return null;return new ve(o,{maxQueueSize:this.options.logMaxQueueSize??2048,maxExportBatchSize:this.options.logBatchSize??512,scheduledDelayMillis:this.options.logBatchTimeoutMs??this.options.logBatchTimeout??5000})}).filter((i)=>i!==null);if(r.length===0)return null;return new Ee({resource:e,processors:r})}}function L(e){let t=new _(e),r=t.createTelemetryService(e),i=()=>{r.captureRequired("telemetry.provider_created",{provider:"opentelemetry",enabled:e.enabled??!0,logsExporter:Array.isArray(e.logsExporter)?e.logsExporter.join(","):e.logsExporter,metricsExporter:Array.isArray(e.metricsExporter)?e.metricsExporter.join(","):e.metricsExporter,tracesExporter:Array.isArray(e.tracesExporter)?e.tracesExporter.join(","):e.tracesExporter,otlpProtocol:e.otlpProtocol,hasOtlpEndpoint:Boolean(e.otlpEndpoint),serviceName:e.serviceName,serviceVersion:e.serviceVersion})};if(!e.deferProviderCreatedEvent)i();return{provider:t,telemetry:r,emitProviderCreated:i}}function w(e){if(D())return{telemetry:new k(e)};if(e.enabled!==!0)return{telemetry:new S({...e,distinctId:f(e.distinctId)})};return L(e)}function Re(e){let{telemetry:t,provider:r,emitProviderCreated:i}=w(e);return{telemetry:t,provider:r,flush:async()=>{let n=r;if(n&&typeof n.forceFlush==="function")try{await n.forceFlush()}catch{}},dispose:async()=>{await Promise.allSettled([t.dispose(),r?.dispose()])},...e.deferProviderCreatedEvent&&i?{emitProviderCreated:i}:{}}}function P(e){if(!e)return[];return(Array.isArray(e)?e:e.split(",")).map((r)=>r.trim()).filter((r)=>r==="console"||r==="otlp")}function Me(e,t){if(e==="console")return new be;if(!t.endpoint)return null;let r=I(t.endpoint,"/v1/logs");return new fe({url:r,headers:t.headers})}function De(e,t){if(e==="console")return new Ae(new Ie);if(!t.endpoint)return null;let r=I(t.endpoint,"/v1/traces");return new _e(new Te({url:r,headers:t.headers}))}function Ne(e,t){if(e==="console")return new N({exporter:new he,exportIntervalMillis:t.interval,exportTimeoutMillis:t.timeout});if(!t.endpoint)return null;let r=I(t.endpoint,"/v1/metrics");return new N({exporter:new ye({url:r,headers:t.headers}),exportIntervalMillis:t.interval,exportTimeoutMillis:t.timeout})}function I(e,t){let r=new URL(e),i=r.pathname.endsWith("/")?r.pathname.slice(0,-1):r.pathname;return r.pathname=i.endsWith(t)?i:`${i}${t}`,r.toString()}import{SESSION_STATUS_VALUES as Dt}from"@cline/shared";var p={CORE:"core",CLI:"cli",SUBAGENT:"subagent",DESKTOP:"desktop",KANBAN:"kanban",API:"api",WEB:"web",VSCODE:"vscode",ENTERPRISE:"enterprise",IDE:"ide",JETBRAINS:"jetbrains",NEOVIM:"neovim",UNKNOWN:"unknown"};function G(e){let t=[e?.name,e?.platform].filter((r)=>typeof r==="string").join(" ").toLowerCase();if(!t)return;if(t.includes("vscode")||t.includes("visual studio code"))return p.VSCODE;if(t.includes("jetbrains")||t.includes("webstorm")||t.includes("intellij")||t.includes("pycharm")||t.includes("goland")||t.includes("clion")||t.includes("rider")||t.includes("android studio"))return p.JETBRAINS;if(t.includes("neovim"))return p.NEOVIM;if(t.includes("kanban"))return p.KANBAN;if(t.includes("desktop"))return p.DESKTOP;if(t.includes("cline-platform"))return p.WEB;if(t.includes("cline-cli")||t.includes("cline-acp"))return p.CLI;if(t.includes("cline-sdk")||t.includes("cline-core"))return p.CORE;return}function u(e){let t=e?.trim();return t?t:void 0}function U(e){let t=e.client,r=G(t)??u(e.source),i=u(t.version),o=u(t.platform)??u(t.name),s=u(t.platformVersion)??i,n={cline_type:r,extension_version:i,platform:o,platform_version:s};if(e.user?.accountId===void 0)return n;let d=typeof e.user.accountId==="string"?u(e.user.accountId):void 0;return{...n,distinct_id:d??u(e.user.distinctId),user_id:d,account_id:d,account_email:d?u(e.user.email):void 0,organization_id:d?u(e.user.organizationId):void 0}}function K(e,t){let r={},i={},o,s=(n)=>({...t,...i,...r,...n,...o?{distinct_id:o}:{}});return{setDistinctId(n){o=u(n)},setMetadata(n){r={...n}},updateMetadata(n){r={...r,...n}},setCommonProperties(n){i={...n}},updateCommonProperties(n){i={...i,...n}},isEnabled:()=>e.isEnabled(),capture:(n)=>e.capture({event:n.event,properties:s(n.properties)}),captureRequired:(n,d)=>e.captureRequired(n,s(d)),recordCounter:(n,d,a,l,m)=>e.recordCounter(n,d,s(a),l,m),recordHistogram:(n,d,a,l,m)=>e.recordHistogram(n,d,s(a),l,m),recordGauge:(n,d,a,l,m)=>e.recordGauge(n,d,s(a),l,m),flush:()=>e.flush(),dispose:async()=>{}}}function ke(e,t){return K(e,U(t))}export{y as OpenTelemetryAdapter,_ as OpenTelemetryProvider,ke as createClientScopedTelemetryService,Re as createConfiguredTelemetryHandle,w as createConfiguredTelemetryService,L as createOpenTelemetryTelemetryService,K as createScopedTelemetryService,U as resolveClientTelemetryProperties,v as resolveCoreDeviceId,f as resolveCoreDistinctId};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cline/core",
3
3
  "description": "Cline Core SDK for Node Runtime",
4
- "version": "0.0.94",
4
+ "version": "0.0.95-nightly.1792376935",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/cline/cline",
@@ -53,9 +53,9 @@
53
53
  "test:watch": "vitest --config vitest.config.ts"
54
54
  },
55
55
  "dependencies": {
56
- "@cline/agents": "0.0.94",
57
- "@cline/shared": "0.0.94",
58
- "@cline/llms": "0.0.94",
56
+ "@cline/agents": "0.0.95-nightly.1792376935",
57
+ "@cline/shared": "0.0.95-nightly.1792376935",
58
+ "@cline/llms": "0.0.95-nightly.1792376935",
59
59
  "@modelcontextprotocol/sdk": "^1.29.0",
60
60
  "@opentelemetry/api": "^1.9.0",
61
61
  "@opentelemetry/api-logs": "^0.214.0",