@cline/core 0.0.86 → 0.0.88-nightly.1790735522

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.
Files changed (36) hide show
  1. package/dist/cloud/api.d.ts +32 -5
  2. package/dist/cloud/controller.d.ts +32 -4
  3. package/dist/cloud/index.d.ts +3 -1
  4. package/dist/cloud/index.js +21 -11
  5. package/dist/cloud/models.d.ts +9 -0
  6. package/dist/cloud/types.d.ts +11 -1
  7. package/dist/extensions/plugin-sandbox-bootstrap.js +1 -1
  8. package/dist/extensions/tools/executors/bash.d.ts +26 -0
  9. package/dist/extensions/tools/executors/index.d.ts +1 -1
  10. package/dist/extensions/tools/index.d.ts +1 -1
  11. package/dist/hub/client/index.d.ts +4 -0
  12. package/dist/hub/client/session-client.d.ts +0 -3
  13. package/dist/hub/daemon/bind-diagnostics.d.ts +16 -0
  14. package/dist/hub/daemon/entry.js +304 -304
  15. package/dist/hub/daemon/index.d.ts +8 -0
  16. package/dist/hub/discovery/index.d.ts +1 -0
  17. package/dist/hub/index.js +293 -294
  18. package/dist/index.d.ts +5 -3
  19. package/dist/index.js +339 -334
  20. package/dist/remote/remote-helper-entry.js +4 -4
  21. package/dist/remote/remote-helper.js +4 -4
  22. package/dist/services/agent-events.d.ts +1 -0
  23. package/dist/services/cloud-handoff/git-preflight.d.ts +24 -0
  24. package/dist/services/cloud-handoff/index.d.ts +4 -0
  25. package/dist/services/cloud-handoff/metadata.d.ts +7 -0
  26. package/dist/services/cloud-handoff/transcript.d.ts +5 -0
  27. package/dist/services/cloud-handoff/types.d.ts +35 -0
  28. package/dist/services/feature-flags/posthog.js +1 -1
  29. package/dist/services/telemetry/core-events.d.ts +3 -0
  30. package/dist/services/telemetry/index.js +1 -1
  31. package/dist/services/workspace/workspace-manifest.d.ts +34 -0
  32. package/dist/session/fork-metadata.d.ts +7 -0
  33. package/dist/session/services/persistence-service.d.ts +1 -0
  34. package/dist/types/chat-schema.d.ts +2 -2
  35. package/dist/types/provider-settings.d.ts +11 -0
  36. package/package.json +4 -4
@@ -1 +1 @@
1
- import{existsSync as v,mkdirSync as u,readFileSync as c,writeFileSync as m}from"node:fs";import{resolve as d}from"node:path";import{resolveSessionDataDir as l}from"@cline/shared/storage";import{nanoid as r}from"nanoid";import*as p from"node-machine-id";var n="machine-id",M,w=!1;function Q(){if(!w)M=h(),w=!0;return M??q()}function P(f){let T=f?.trim();if(T)return T;let A=h();if(A)return A;return q()}function a(){let f=p;return f.machineIdSync??f.default?.machineIdSync}function h(){try{let f=a();if(!f)return;return f().trim()||void 0}catch{return}}function q(){let f=l(),T=d(f,n);try{if(v(T)){let O=c(T,"utf8").trim();if(O.length>0)return O}}catch{}let A=`cl-${r()}`;try{u(f,{recursive:!0}),m(T,A,"utf8")}catch{}return A}class X{name;metadata;meter;logger;enabled;distinctId;commonProperties;counters=new Map;histograms=new Map;gauges=new Map;gaugeValues=new Map;meterProvider;loggerProvider;constructor(f){this.name=f.name??"OpenTelemetryAdapter",this.metadata={...f.metadata},this.meterProvider=f.meterProvider,this.loggerProvider=f.loggerProvider,this.meter=f.meterProvider?.getMeter("cline")??null,this.logger=f.loggerProvider?.getLogger("cline")??null,this.enabled=f.enabled??!0,this.distinctId=f.distinctId,this.commonProperties=f.commonProperties?{...f.commonProperties}:{}}emit(f,T){if(!this.isEnabled())return;this.emitLog(f,T,!1)}emitRequired(f,T){this.emitLog(f,T,!0)}recordCounter(f,T,A,O,j=!1){if(!this.meter||!j&&!this.isEnabled())return;let J=this.counters.get(f);if(!J)J=this.meter.createCounter(f,O?{description:O}:void 0),this.counters.set(f,J);J.add(T,this.flattenProperties(this.buildAttributes(A)))}recordHistogram(f,T,A,O,j=!1){if(!this.meter||!j&&!this.isEnabled())return;let J=this.histograms.get(f);if(!J)J=this.meter.createHistogram(f,O?{description:O}:void 0),this.histograms.set(f,J);J.record(T,this.flattenProperties(this.buildAttributes(A)))}recordGauge(f,T,A,O,j=!1){if(!this.meter||!j&&!this.isEnabled())return;let J=this.buildAttributes(A),_=JSON.stringify(J),W=this.gaugeValues.get(f);if(T===null){if(W){if(W.delete(_),W.size===0)this.gaugeValues.delete(f),this.gauges.delete(f)}return}let K=W;if(!K)K=new Map,this.gaugeValues.set(f,K);if(!this.gauges.has(f)){let $=this.meter.createObservableGauge(f,O?{description:O}:void 0);$.addCallback((U)=>{for(let C of this.snapshotGaugeSeries(f))U.observe(C.value,this.flattenProperties(C.attributes))}),this.gauges.set(f,$)}K.set(_,{value:T,attributes:J})}isEnabled(){return typeof this.enabled==="function"?this.enabled():this.enabled}setDistinctId(f){this.distinctId=f}setCommonProperties(f){this.commonProperties={...f}}updateCommonProperties(f){this.commonProperties={...this.commonProperties,...f}}async flush(){await Promise.all([this.meterProvider?.forceFlush?.(),this.loggerProvider?.forceFlush?.()])}async dispose(){await Promise.all([this.meterProvider?.shutdown?.(),this.loggerProvider?.shutdown?.()])}emitLog(f,T,A){if(!this.logger)return;let O=this.flattenProperties(this.buildAttributes(T,A));this.logger.emit({severityText:"INFO",body:f,attributes:O})}buildAttributes(f,T=!1){return{...this.commonProperties,...this.metadata,...f,...this.distinctId?{distinct_id:this.distinctId}:{},...T?{_required:!0}:{}}}snapshotGaugeSeries(f){let T=this.gaugeValues.get(f);if(!T)return[];return Array.from(T.values(),(A)=>({value:A.value,attributes:A.attributes?{...A.attributes}:void 0}))}flattenProperties(f,T="",A=new WeakSet,O=0){if(!f)return{};let j={},J=100,_=10;for(let[W,K]of Object.entries(f)){if(W==="__proto__"||W==="constructor"||W==="prototype")continue;let $=T?`${T}.${W}`:W;if(K===null||K===void 0){j[$]=String(K);continue}if(Array.isArray(K)){let U=K.length>J?K.slice(0,J):K;try{j[$]=JSON.stringify(U)}catch{j[$]="[UnserializableArray]"}if(K.length>J)j[`${$}_truncated`]=!0,j[`${$}_original_length`]=K.length;continue}if(typeof K==="object"){if(K instanceof Date){j[$]=K.toISOString();continue}if(K instanceof Error){j[$]=K.message;continue}if(A.has(K)){j[$]="[Circular]";continue}if(O>=_){j[$]="[MaxDepthExceeded]";continue}A.add(K),Object.assign(j,this.flattenProperties(K,$,A,O+1));continue}if(s(K)){j[$]=K;continue}try{j[$]=JSON.stringify(K)}catch{j[$]=String(K)}}return j}}function s(f){return typeof f==="string"||typeof f==="number"||typeof f==="boolean"}import{LangfuseAttributesSpanProcessor as Kf}from"@cline/llms";import{markOtlpTraceRelayProvider as Wf}from"@cline/shared";import{metrics as $f,trace as Bf}from"@opentelemetry/api";import{logs as Rf}from"@opentelemetry/api-logs";import{OTLPLogExporter as Uf}from"@opentelemetry/exporter-logs-otlp-http";import{OTLPMetricExporter as Hf}from"@opentelemetry/exporter-metrics-otlp-http";import{OTLPTraceExporter as Pf}from"@opentelemetry/exporter-trace-otlp-http";import{resourceFromAttributes as Xf}from"@opentelemetry/resources";import{BatchLogRecordProcessor as Yf,ConsoleLogRecordExporter as Zf,LoggerProvider as Qf}from"@opentelemetry/sdk-logs";import{ConsoleMetricExporter as Sf,MeterProvider as Vf,PeriodicExportingMetricReader as z}from"@opentelemetry/sdk-metrics";import{BatchSpanProcessor as Lf,ConsoleSpanExporter as Ff,SimpleSpanProcessor as kf}from"@opentelemetry/sdk-trace-base";import{NodeTracerProvider as Ef}from"@opentelemetry/sdk-trace-node";import{ATTR_SERVICE_NAME as Cf,ATTR_SERVICE_VERSION as Mf}from"@opentelemetry/semantic-conventions";import{mkdirSync as ef,readFileSync as i,statSync as o,writeFileSync as fT}from"node:fs";import{CONFIGURABLE_MODEL_TOOL_NAMES as t}from"@cline/shared";import{resolveGlobalSettingsPath as e}from"@cline/shared/storage";import{z as B}from"zod";import{AGENT_UNEXPECTED_REASONING_TOKENS_EVENT as vf,captureAgentUnexpectedReasoningTokens as uf,captureTaskLifecycleEvent as cf,SDK_ERROR_TELEMETRY_EVENT as mf,TASK_CANCELLED_EVENT as df,TASK_FIRST_CHUNK_RECEIVED_EVENT as lf,TASK_MAX_TOKENS_RECOVERY_EVENT as rf,TASK_PROVIDER_REQUEST_STARTED_EVENT as pf,TASK_PROVIDER_STREAM_FAILED_EVENT as nf,TASK_PROVIDER_STREAM_STARTED_EVENT as af}from"@cline/shared";var S=B.preprocess((f)=>Array.isArray(f)?f.filter((T)=>typeof T==="string").map((T)=>T.trim()).filter(Boolean):void 0,B.array(B.string()).optional()).transform((f)=>{if(!f)return;let T=[...new Set(f)].sort((A,O)=>A.localeCompare(O));return T.length>0?T:void 0}),ff=B.enum(["basic","agentic"]).catch("agentic"),Tf=B.partialRecord(B.enum(t),B.object({enabled:B.boolean()}).strip()).optional(),Af=B.enum(["plan","act"]),I=B.object({telemetryOptOut:B.boolean().default(!1).catch(!1),autoUpdateEnabled:B.boolean().default(!0).catch(!0),compactionStrategy:ff.optional(),compactionEnabled:B.boolean().optional().catch(void 0),planActMode:Af.optional().catch(void 0),toolAutoApprove:B.boolean().optional().catch(void 0),tuiTheme:B.string().optional().catch(void 0),disabledTools:S.optional(),tools:Tf,disabledPlugins:S.optional(),disabledAgentPlugins:S.optional()}).strip().transform((f)=>{let T={autoUpdateEnabled:f.autoUpdateEnabled,telemetryOptOut:f.telemetryOptOut};if(f.compactionStrategy)T.compactionStrategy=f.compactionStrategy;if(f.compactionEnabled!==void 0)T.compactionEnabled=f.compactionEnabled;if(f.planActMode)T.planActMode=f.planActMode;if(f.toolAutoApprove!==void 0)T.toolAutoApprove=f.toolAutoApprove;if(f.tuiTheme?.trim())T.tuiTheme=f.tuiTheme.trim();if(f.disabledTools?.length)T.disabledTools=f.disabledTools;if(f.tools&&Object.keys(f.tools).length>0)T.tools=f.tools;if(f.disabledPlugins?.length)T.disabledPlugins=f.disabledPlugins;if(f.disabledAgentPlugins?.length)T.disabledAgentPlugins=f.disabledAgentPlugins;return T});function Y(){return I.parse({})}var V;function Of(f){if(f.disabledTools)Object.freeze(f.disabledTools);if(f.tools){for(let T of Object.values(f.tools))Object.freeze(T);Object.freeze(f.tools)}if(f.disabledPlugins)Object.freeze(f.disabledPlugins);if(f.disabledAgentPlugins)Object.freeze(f.disabledAgentPlugins);return Object.freeze(f)}function jf(f){let T;try{T=i(f,"utf8")}catch{return{value:Y(),loadFailed:!0}}try{let A=I.safeParse(JSON.parse(T));return A.success?{value:A.data,loadFailed:!1}:{value:Y(),loadFailed:!0}}catch{return{value:Y(),loadFailed:!0}}}function _f(){let f=e(),T=o(f,{throwIfNoEntry:!1}),A=T?.mtimeMs??0,O=T?.size??0,j=V;if(j&&j.path===f&&j.mtimeMs===A&&j.size===O)return j;let J=T?jf(f):{value:Y(),loadFailed:!1},_=Of(J.value);return V={path:f,mtimeMs:A,size:O,value:_,loadFailed:J.loadFailed},V}function Jf(){return _f().value}function N(){return Jf().telemetryOptOut}class L{name;logger;enabled;constructor(f={}){this.name=f.name??"TelemetryLoggerSink",this.logger=f.logger,this.enabled=f.enabled??!0}emit(f,T){if(!this.isEnabled())return;this.logger?.log("telemetry.event",{telemetrySink:this.name,event:f,properties:T})}emitRequired(f,T){this.logger?.log("telemetry.required_event",{telemetrySink:this.name,severity:"warn",event:f,properties:T})}recordCounter(f,T,A,O,j){if(!j&&!this.isEnabled())return;this.logger?.debug("telemetry.metric",{telemetrySink:this.name,instrument:"counter",name:f,value:T,attributes:A,description:O,required:j===!0})}recordHistogram(f,T,A,O,j){if(!j&&!this.isEnabled())return;this.logger?.debug("telemetry.metric",{telemetrySink:this.name,instrument:"histogram",name:f,value:T,attributes:A,description:O,required:j===!0})}recordGauge(f,T,A,O,j){if(!j&&!this.isEnabled())return;this.logger?.debug("telemetry.metric",{telemetrySink:this.name,instrument:"gauge",name:f,value:T,attributes:A,description:O,required:j===!0})}isEnabled(){return typeof this.enabled==="function"?this.enabled():this.enabled}async flush(){}async dispose(){}}class Z{adapters;metadata;distinctId;deviceId;commonProperties;constructor(f={}){if(this.adapters=[...f.adapters??[]],f.logger)this.adapters.push(new L({logger:f.logger}));this.metadata={...f.metadata??{}},this.distinctId=f.distinctId,this.deviceId=f.deviceId??Q(),this.commonProperties={...f.commonProperties??{}}}addAdapter(f){this.adapters.push(f)}setDistinctId(f){this.distinctId=f}setMetadata(f){this.metadata={...f}}updateMetadata(f){this.metadata={...this.metadata,...f}}setCommonProperties(f){this.commonProperties={...f}}updateCommonProperties(f){this.commonProperties={...this.commonProperties,...f}}isEnabled(){return this.adapters.some((f)=>f.isEnabled())}capture(f){let T=this.buildAttributes(f.properties);for(let A of this.adapters)A.emit(f.event,T)}captureRequired(f,T){let A=this.buildAttributes(T);for(let O of this.adapters)O.emitRequired(f,A)}recordCounter(f,T,A,O,j=!1){let J=this.buildAttributes(A);for(let _ of this.adapters)_.recordCounter(f,T,J,O,j)}recordHistogram(f,T,A,O,j=!1){let J=this.buildAttributes(A);for(let _ of this.adapters)_.recordHistogram(f,T,J,O,j)}recordGauge(f,T,A,O,j=!1){let J=this.buildAttributes(A);for(let _ of this.adapters)_.recordGauge(f,T,J,O,j)}async flush(){await Promise.all(this.adapters.map((f)=>f.flush()))}async dispose(){await Promise.all(this.adapters.map((f)=>f.dispose()))}buildAttributes(f){let T=typeof f?.distinct_id==="string"&&f.distinct_id.trim()?f.distinct_id.trim():this.distinctId,A={...this.commonProperties,...this.metadata,...f,...T?{distinct_id:T}:{},device_id:this.deviceId};return Object.fromEntries(Object.entries(A).filter(([,O])=>O!==void 0))}}class D{distinctId;metadata;commonProperties;constructor(f={}){this.distinctId=f.distinctId,this.metadata={...f.metadata??{}},this.commonProperties={...f.commonProperties??{}}}setDistinctId(f){this.distinctId=f}setMetadata(f){this.metadata={...f}}updateMetadata(f){this.metadata={...this.metadata,...f}}setCommonProperties(f){this.commonProperties={...f}}updateCommonProperties(f){this.commonProperties={...this.commonProperties,...f}}isEnabled(){return!1}capture(f){this.resolveProperties(f.properties)}captureRequired(f,T){this.resolveProperties(T)}recordCounter(){}recordHistogram(){}recordGauge(){}async flush(){}async dispose(){}resolveProperties(f){let T=typeof f?.distinct_id==="string"&&f.distinct_id.trim()?f.distinct_id.trim():this.distinctId,A={...this.commonProperties,...this.metadata,...f,...T?{distinct_id:T}:{}};return Object.fromEntries(Object.entries(A).filter(([,O])=>O!==void 0))}}class k{meterProvider;loggerProvider;tracerProvider;options;constructor(f={}){this.options=f;let T=Xf({[Cf]:f.serviceName??"cline",...f.serviceVersion?{[Mf]:f.serviceVersion}:{}});if(this.meterProvider=this.createMeterProvider(T),this.loggerProvider=this.createLoggerProvider(T),this.tracerProvider=this.createTracerProvider(T),this.meterProvider)$f.setGlobalMeterProvider(this.meterProvider);if(this.loggerProvider)Rf.setGlobalLoggerProvider(this.loggerProvider);if(this.tracerProvider)this.tracerProvider.register()}getTracer(f="cline",T){return Bf.getTracer(f,T??this.options.serviceVersion)}createAdapter(f){return new X({...f,meterProvider:this.meterProvider,loggerProvider:this.loggerProvider})}createTelemetryService(f){let T=this.createAdapter({name:f.name,enabled:this.options.enabled,metadata:f.metadata});return new Z({...f,adapters:[T],distinctId:P(f.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(f){let T=F(this.options.metricsExporter);if(T.length===0)return null;let A=Math.max(1000,this.options.metricExportIntervalMs??this.options.metricExportInterval??60000),O=Math.min(30000,Math.floor(A*0.8)),j=T.map((J)=>If(J,{endpoint:this.options.otlpEndpoint,headers:this.options.otlpHeaders,insecure:this.options.otlpInsecure??!1,protocol:"http/json",interval:A,timeout:O})).filter((J)=>J!==null);if(j.length===0)return null;return new Vf({resource:f,readers:j})}createTracerProvider(f){let T=F(this.options.tracesExporter);if(T.length===0)return null;let A=this.options.otlpTracesEndpoint??this.options.otlpEndpoint,O=this.options.otlpTracesHeaders??this.options.otlpHeaders,j=[],J=!1;for(let W of T){let K=qf(W,{endpoint:A,headers:O,insecure:this.options.otlpInsecure??!1,protocol:"http/json"});if(K){if(j.push(K),W!=="console")J=!0}}if(j.length===0)return null;let _=new Ef({resource:f,spanProcessors:J?[new Kf,...j]:j});if(J)Wf(_);return _}createLoggerProvider(f){let T=F(this.options.logsExporter);if(T.length===0)return null;let A=T.map((O)=>{let j=hf(O,{endpoint:this.options.otlpEndpoint,headers:this.options.otlpHeaders,insecure:this.options.otlpInsecure??!1,protocol:"http/json"});if(!j)return null;return new Yf(j,{maxQueueSize:this.options.logMaxQueueSize??2048,maxExportBatchSize:this.options.logBatchSize??512,scheduledDelayMillis:this.options.logBatchTimeoutMs??this.options.logBatchTimeout??5000})}).filter((O)=>O!==null);if(A.length===0)return null;return new Qf({resource:f,processors:A})}}function x(f){let T=new k(f),A=T.createTelemetryService(f),O=()=>{A.captureRequired("telemetry.provider_created",{provider:"opentelemetry",enabled:f.enabled??!0,logsExporter:Array.isArray(f.logsExporter)?f.logsExporter.join(","):f.logsExporter,metricsExporter:Array.isArray(f.metricsExporter)?f.metricsExporter.join(","):f.metricsExporter,tracesExporter:Array.isArray(f.tracesExporter)?f.tracesExporter.join(","):f.tracesExporter,otlpProtocol:f.otlpProtocol,hasOtlpEndpoint:Boolean(f.otlpEndpoint),serviceName:f.serviceName,serviceVersion:f.serviceVersion})};if(!f.deferProviderCreatedEvent)O();return{provider:T,telemetry:A,emitProviderCreated:O}}function G(f){if(N())return{telemetry:new D(f)};if(f.enabled!==!0)return{telemetry:new Z({...f,distinctId:P(f.distinctId)})};return x(f)}function wf(f){let{telemetry:T,provider:A,emitProviderCreated:O}=G(f);return{telemetry:T,provider:A,flush:async()=>{let _=A;if(_&&typeof _.forceFlush==="function")try{await _.forceFlush()}catch{}},dispose:async()=>{await Promise.allSettled([T.dispose(),A?.dispose()])},...f.deferProviderCreatedEvent&&O?{emitProviderCreated:O}:{}}}function F(f){if(!f)return[];return(Array.isArray(f)?f:f.split(",")).map((A)=>A.trim()).filter((A)=>A==="console"||A==="otlp")}function hf(f,T){if(f==="console")return new Zf;if(!T.endpoint)return null;let A=E(T.endpoint,"/v1/logs");return new Uf({url:A,headers:T.headers})}function qf(f,T){if(f==="console")return new kf(new Ff);if(!T.endpoint)return null;let A=E(T.endpoint,"/v1/traces");return new Lf(new Pf({url:A,headers:T.headers}))}function If(f,T){if(f==="console")return new z({exporter:new Sf,exportIntervalMillis:T.interval,exportTimeoutMillis:T.timeout});if(!T.endpoint)return null;let A=E(T.endpoint,"/v1/metrics");return new z({exporter:new Hf({url:A,headers:T.headers}),exportIntervalMillis:T.interval,exportTimeoutMillis:T.timeout})}function E(f,T){let A=new URL(f),O=A.pathname.endsWith("/")?A.pathname.slice(0,-1):A.pathname;return A.pathname=O.endsWith(T)?O:`${O}${T}`,A.toString()}import{SESSION_STATUS_VALUES as qT}from"@cline/shared";var H={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 y(f){let T=[f?.name,f?.platform].filter((A)=>typeof A==="string").join(" ").toLowerCase();if(!T)return;if(T.includes("vscode")||T.includes("visual studio code"))return H.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 H.JETBRAINS;if(T.includes("neovim"))return H.NEOVIM;if(T.includes("kanban"))return H.KANBAN;if(T.includes("desktop"))return H.DESKTOP;if(T.includes("cline-platform"))return H.WEB;if(T.includes("cline-cli")||T.includes("cline-acp"))return H.CLI;if(T.includes("cline-sdk")||T.includes("cline-core"))return H.CORE;return}function R(f){let T=f?.trim();return T?T:void 0}function b(f){let T=f.client,A=y(T)??R(f.source),O=R(T.version),j=R(T.platform)??R(T.name),J=R(T.platformVersion)??O,_={cline_type:A,extension_version:O,platform:j,platform_version:J};if(f.user?.accountId===void 0)return _;let W=typeof f.user.accountId==="string"?R(f.user.accountId):void 0;return{..._,distinct_id:W??R(f.user.distinctId),user_id:W,account_id:W,account_email:W?R(f.user.email):void 0,organization_id:W?R(f.user.organizationId):void 0}}function g(f,T){let A={},O={},j,J=(_)=>({...T,...O,...A,..._,...j?{distinct_id:j}:{}});return{setDistinctId(_){j=R(_)},setMetadata(_){A={..._}},updateMetadata(_){A={...A,..._}},setCommonProperties(_){O={..._}},updateCommonProperties(_){O={...O,..._}},isEnabled:()=>f.isEnabled(),capture:(_)=>f.capture({event:_.event,properties:J(_.properties)}),captureRequired:(_,W)=>f.captureRequired(_,J(W)),recordCounter:(_,W,K,$,U)=>f.recordCounter(_,W,J(K),$,U),recordHistogram:(_,W,K,$,U)=>f.recordHistogram(_,W,J(K),$,U),recordGauge:(_,W,K,$,U)=>f.recordGauge(_,W,J(K),$,U),flush:()=>f.flush(),dispose:async()=>{}}}function Nf(f,T){return g(f,b(T))}export{P as resolveCoreDistinctId,Q as resolveCoreDeviceId,b as resolveClientTelemetryProperties,g as createScopedTelemetryService,x as createOpenTelemetryTelemetryService,G as createConfiguredTelemetryService,wf as createConfiguredTelemetryHandle,Nf as createClientScopedTelemetryService,k as OpenTelemetryProvider,X as OpenTelemetryAdapter};
1
+ import{existsSync as K,mkdirSync as H,readFileSync as F,writeFileSync as V}from"node:fs";import{resolve as z}from"node:path";import{resolveSessionDataDir as B}from"@cline/shared/storage";import{nanoid as j}from"nanoid";import*as W from"node-machine-id";var q="machine-id",A,O=!1;function S(){if(!O)A=C(),O=!0;return A??x()}function g(e){let t=e?.trim();if(t)return t;let r=C();if(r)return r;return x()}function Y(){let e=W;return e.machineIdSync??e.default?.machineIdSync}function C(){try{let e=Y();if(!e)return;return e().trim()||void 0}catch{return}}function x(){let e=B(),t=z(e,q);try{if(K(t)){let i=F(t,"utf8").trim();if(i.length>0)return i}}catch{}let r=`cl-${j()}`;try{H(e,{recursive:!0}),V(t,r,"utf8")}catch{}return r}class f{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 I of this.snapshotGaugeSeries(e))m.observe(I.value,this.flattenProperties(I.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));this.logger.emit({severityText:"INFO",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(X(a)){o[l]=a;continue}try{o[l]=JSON.stringify(a)}catch{o[l]=String(a)}}return o}}function X(e){return typeof e==="string"||typeof e==="number"||typeof e==="boolean"}import{LangfuseAttributesSpanProcessor as de}from"@cline/llms";import{markOtlpTraceRelayProvider as le}from"@cline/shared";import{metrics as ce,trace as ue}from"@opentelemetry/api";import{logs as me}from"@opentelemetry/api-logs";import{OTLPLogExporter as pe}from"@opentelemetry/exporter-logs-otlp-http";import{OTLPMetricExporter as ge}from"@opentelemetry/exporter-metrics-otlp-http";import{OTLPTraceExporter as fe}from"@opentelemetry/exporter-trace-otlp-http";import{resourceFromAttributes as ye}from"@opentelemetry/resources";import{BatchLogRecordProcessor as Te,ConsoleLogRecordExporter as Se,LoggerProvider as ve}from"@opentelemetry/sdk-logs";import{ConsoleMetricExporter as Ee,MeterProvider as be,PeriodicExportingMetricReader as D}from"@opentelemetry/sdk-metrics";import{BatchSpanProcessor as he,ConsoleSpanExporter as Pe,SimpleSpanProcessor as _e}from"@opentelemetry/sdk-trace-base";import{NodeTracerProvider as Ie}from"@opentelemetry/sdk-trace-node";import{ATTR_SERVICE_NAME as Ae,ATTR_SERVICE_VERSION as Oe}from"@opentelemetry/semantic-conventions";import{mkdirSync as Ze,readFileSync as J,statSync as Q,writeFileSync as et}from"node:fs";import{CONFIGURABLE_MODEL_TOOL_NAMES as Z}from"@cline/shared";import{resolveGlobalSettingsPath as ee}from"@cline/shared/storage";import{z as c}from"zod";import{AGENT_UNEXPECTED_REASONING_TOKENS_EVENT as He,captureAgentUnexpectedReasoningTokens as Fe,captureTaskLifecycleEvent as Ve,SDK_ERROR_TELEMETRY_EVENT as ze,TASK_CANCELLED_EVENT as Be,TASK_FIRST_CHUNK_RECEIVED_EVENT as je,TASK_MAX_TOKENS_RECOVERY_EVENT as We,TASK_PROVIDER_REQUEST_STARTED_EVENT as qe,TASK_PROVIDER_STREAM_FAILED_EVENT as Ye,TASK_PROVIDER_STREAM_STARTED_EVENT as Xe}from"@cline/shared";var v=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}),te=c.enum(["basic","agentic"]).catch("agentic"),re=c.partialRecord(c.enum(Z),c.object({enabled:c.boolean()}).strip()).optional(),ie=c.enum(["plan","act"]),R=c.object({telemetryOptOut:c.boolean().default(!1).catch(!1),autoUpdateEnabled:c.boolean().default(!0).catch(!0),compactionStrategy:te.optional(),compactionEnabled:c.boolean().optional().catch(void 0),planActMode:ie.optional().catch(void 0),toolAutoApprove:c.boolean().optional().catch(void 0),tuiTheme:c.string().optional().catch(void 0),disabledTools:v.optional(),tools:re,disabledPlugins:v.optional(),disabledAgentPlugins:v.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 y(){return R.parse({})}var E;function oe(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 ne(e){let t;try{t=J(e,"utf8")}catch{return{value:y(),loadFailed:!0}}try{let r=R.safeParse(JSON.parse(t));return r.success?{value:r.data,loadFailed:!1}:{value:y(),loadFailed:!0}}catch{return{value:y(),loadFailed:!0}}}function se(){let e=ee(),t=Q(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?ne(e):{value:y(),loadFailed:!1},n=oe(s.value);return E={path:e,mtimeMs:r,size:i,value:n,loadFailed:s.loadFailed},E}function ae(){return se().value}function M(){return ae().telemetryOptOut}class b{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 T{adapters;metadata;distinctId;deviceId;commonProperties;constructor(e={}){if(this.adapters=[...e.adapters??[]],e.logger)this.adapters.push(new b({logger:e.logger}));this.metadata={...e.metadata??{}},this.distinctId=e.distinctId,this.deviceId=e.deviceId??S(),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 N{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 P{meterProvider;loggerProvider;tracerProvider;options;constructor(e={}){this.options=e;let t=ye({[Ae]:e.serviceName??"cline",...e.serviceVersion?{[Oe]:e.serviceVersion}:{}});if(this.meterProvider=this.createMeterProvider(t),this.loggerProvider=this.createLoggerProvider(t),this.tracerProvider=this.createTracerProvider(t),this.meterProvider)ce.setGlobalMeterProvider(this.meterProvider);if(this.loggerProvider)me.setGlobalLoggerProvider(this.loggerProvider);if(this.tracerProvider)this.tracerProvider.register()}getTracer(e="cline",t){return ue.getTracer(e,t??this.options.serviceVersion)}createAdapter(e){return new f({...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 T({...e,adapters:[t],distinctId:g(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=h(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)=>Me(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 be({resource:e,readers:o})}createTracerProvider(e){let t=h(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=Re(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 Ie({resource:e,spanProcessors:s?[new de,...o]:o});if(s)le(n);return n}createLoggerProvider(e){let t=h(this.options.logsExporter);if(t.length===0)return null;let r=t.map((i)=>{let o=xe(i,{endpoint:this.options.otlpEndpoint,headers:this.options.otlpHeaders,insecure:this.options.otlpInsecure??!1,protocol:"http/json"});if(!o)return null;return new Te(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 ve({resource:e,processors:r})}}function k(e){let t=new P(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 L(e){if(M())return{telemetry:new N(e)};if(e.enabled!==!0)return{telemetry:new T({...e,distinctId:g(e.distinctId)})};return k(e)}function Ce(e){let{telemetry:t,provider:r,emitProviderCreated:i}=L(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 h(e){if(!e)return[];return(Array.isArray(e)?e:e.split(",")).map((r)=>r.trim()).filter((r)=>r==="console"||r==="otlp")}function xe(e,t){if(e==="console")return new Se;if(!t.endpoint)return null;let r=_(t.endpoint,"/v1/logs");return new pe({url:r,headers:t.headers})}function Re(e,t){if(e==="console")return new _e(new Pe);if(!t.endpoint)return null;let r=_(t.endpoint,"/v1/traces");return new he(new fe({url:r,headers:t.headers}))}function Me(e,t){if(e==="console")return new D({exporter:new Ee,exportIntervalMillis:t.interval,exportTimeoutMillis:t.timeout});if(!t.endpoint)return null;let r=_(t.endpoint,"/v1/metrics");return new D({exporter:new ge({url:r,headers:t.headers}),exportIntervalMillis:t.interval,exportTimeoutMillis:t.timeout})}function _(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 xt}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 w(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 G(e){let t=e.client,r=w(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 U(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 De(e,t){return U(e,G(t))}export{f as OpenTelemetryAdapter,P as OpenTelemetryProvider,De as createClientScopedTelemetryService,Ce as createConfiguredTelemetryHandle,L as createConfiguredTelemetryService,k as createOpenTelemetryTelemetryService,U as createScopedTelemetryService,G as resolveClientTelemetryProperties,S as resolveCoreDeviceId,g as resolveCoreDistinctId};
@@ -1,4 +1,38 @@
1
1
  import type { WorkspaceInfo } from "@cline/shared";
2
+ export type GitCommand = (args: readonly string[], options: {
3
+ cwd: string;
4
+ signal?: AbortSignal;
5
+ }) => Promise<{
6
+ stdout: string;
7
+ stderr?: string;
8
+ }>;
9
+ export declare function gitCommandErrorMessage(error: unknown): string;
10
+ export declare function gitCommandExitCode(error: unknown): number | undefined;
11
+ /**
12
+ * Shared Git queries, without metadata fallback or cloud-handoff policy.
13
+ * Display branches retain simple-git's detached/unborn semantics; symbolic
14
+ * branches are strict and preserve Git exit codes for callers that require one.
15
+ * Commands are lazy so metadata reads never collect status or contact a remote.
16
+ * Structured display queries use simple-git; raw queries use the injectable
17
+ * runner to retain exit codes, timeouts, and cancellation for strict checks.
18
+ */
19
+ export declare function createWorkspaceGitReader(input: {
20
+ cwd: string;
21
+ git?: GitCommand;
22
+ signal?: AbortSignal;
23
+ }): {
24
+ isInsideWorkTree(): Promise<boolean>;
25
+ remotes: () => import("simple-git").Response<import("simple-git").RemoteWithRefs[]>;
26
+ displayBranch: () => Promise<string>;
27
+ symbolicBranch: () => Promise<string>;
28
+ headSha: () => Promise<string>;
29
+ workspacePrefix: () => Promise<string>;
30
+ worktreeStatus: () => Promise<string>;
31
+ branchRemote: (branch: string) => Promise<string>;
32
+ branchMergeRef: (branch: string) => Promise<string>;
33
+ remoteUrl: (remote: string) => Promise<string>;
34
+ remoteRefs: (remote: string, ref: string) => Promise<string>;
35
+ };
2
36
  export interface WorkspaceInfoDiagnostics {
3
37
  info: WorkspaceInfo;
4
38
  vcsType: "git" | "none";
@@ -0,0 +1,7 @@
1
+ export declare function createForkSessionMetadata(input: {
2
+ metadata?: Record<string, unknown> | null;
3
+ forkedFromSessionId: string;
4
+ forkedAt: string;
5
+ source: string;
6
+ beforeRunCount?: number;
7
+ }): Record<string, unknown>;
@@ -34,6 +34,7 @@ export declare class UnifiedSessionPersistenceService {
34
34
  title?: string | null;
35
35
  }): Promise<{
36
36
  updated: boolean;
37
+ metadata?: Record<string, unknown> | null;
37
38
  }>;
38
39
  queueSpawnRequest(event: HookEventPayload): Promise<void>;
39
40
  upsertSubagentSession(input: import("../models/session-row").UpsertSubagentInput): Promise<string | undefined>;
@@ -73,8 +73,8 @@ export declare const ChatMessageSchema: z.ZodObject<{
73
73
  createdAt: z.ZodNumber;
74
74
  meta: z.ZodOptional<z.ZodObject<{
75
75
  stream: z.ZodOptional<z.ZodEnum<{
76
- stdout: "stdout";
77
76
  stderr: "stderr";
77
+ stdout: "stdout";
78
78
  }>>;
79
79
  toolName: z.ZodOptional<z.ZodString>;
80
80
  iteration: z.ZodOptional<z.ZodNumber>;
@@ -157,8 +157,8 @@ export declare const ChatViewStateSchema: z.ZodObject<{
157
157
  createdAt: z.ZodNumber;
158
158
  meta: z.ZodOptional<z.ZodObject<{
159
159
  stream: z.ZodOptional<z.ZodEnum<{
160
- stdout: "stdout";
161
160
  stderr: "stderr";
161
+ stdout: "stdout";
162
162
  }>>;
163
163
  toolName: z.ZodOptional<z.ZodString>;
164
164
  iteration: z.ZodOptional<z.ZodNumber>;
@@ -17,13 +17,24 @@ export interface StoredProviderSettingsEntry {
17
17
  updatedAt: string;
18
18
  tokenSource: ProviderTokenSource;
19
19
  }
20
+ /**
21
+ * One-shot repairs the legacy migration has already applied to this file.
22
+ * A repair reads legacy state that stays on disk forever, so without a marker
23
+ * it would re-apply on every launch and fight a user who undoes it.
24
+ */
25
+ export interface StoredProviderRepairs {
26
+ /** Restored a bare legacy `awsProfile` onto an already-migrated entry. */
27
+ bedrockProfile?: boolean;
28
+ }
20
29
  export interface StoredProviderSettings {
21
30
  version: 1;
22
31
  lastUsedProvider?: string;
23
32
  modes: StoredProviderModes;
33
+ repairs?: StoredProviderRepairs;
24
34
  providers: Record<string, StoredProviderSettingsEntry>;
25
35
  }
26
36
  export declare const StoredProviderModesSchema: z.ZodType<StoredProviderModes>;
37
+ export declare const StoredProviderRepairsSchema: z.ZodType<StoredProviderRepairs>;
27
38
  export declare const StoredProviderSettingsEntrySchema: z.ZodType<StoredProviderSettingsEntry>;
28
39
  export declare const StoredProviderSettingsSchema: z.ZodType<StoredProviderSettings>;
29
40
  export declare function emptyStoredProviderSettings(): StoredProviderSettings;
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.86",
4
+ "version": "0.0.88-nightly.1790735522",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/cline/cline",
@@ -61,9 +61,9 @@
61
61
  "test:watch": "vitest --config vitest.config.ts"
62
62
  },
63
63
  "dependencies": {
64
- "@cline/agents": "0.0.86",
65
- "@cline/shared": "0.0.86",
66
- "@cline/llms": "0.0.86",
64
+ "@cline/agents": "0.0.88-nightly.1790735522",
65
+ "@cline/shared": "0.0.88-nightly.1790735522",
66
+ "@cline/llms": "0.0.88-nightly.1790735522",
67
67
  "@modelcontextprotocol/sdk": "^1.29.0",
68
68
  "@opentelemetry/api": "^1.9.0",
69
69
  "@opentelemetry/api-logs": "^0.214.0",