@cline/shared 0.0.51 → 0.0.52-nightly.1782444026
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 +2 -0
- package/dist/connectors/platforms.d.ts +87 -0
- package/dist/hub.d.ts +1 -1
- package/dist/index.browser.d.ts +7 -4
- package/dist/index.browser.js +14 -14
- package/dist/index.d.ts +7 -4
- package/dist/index.js +50 -50
- package/dist/llms/gateway.d.ts +13 -1
- package/dist/parse/json.d.ts +1 -0
- package/dist/parse/object.d.ts +9 -0
- package/dist/parse/string.d.ts +1 -0
- package/dist/services/telemetry.d.ts +12 -0
- package/dist/storage/index.d.ts +1 -1
- package/dist/storage/index.js +1 -1
- package/dist/storage/paths.d.ts +3 -0
- package/package.json +1 -1
package/dist/agent.d.ts
CHANGED
|
@@ -49,6 +49,8 @@ export interface AgentTokenUsage {
|
|
|
49
49
|
outputTokens: number;
|
|
50
50
|
cacheReadTokens: number;
|
|
51
51
|
cacheWriteTokens: number;
|
|
52
|
+
/** Provider-reported hidden reasoning tokens, when available. */
|
|
53
|
+
reasoningTokenCount?: number;
|
|
52
54
|
}
|
|
53
55
|
/**
|
|
54
56
|
* Canonical `AgentUsage` shape for the new runtime.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
export type ConnectorCatalogEntry = {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const CONNECTOR_CATALOG: ConnectorCatalogEntry[];
|
|
6
|
+
export declare function listConnectorCatalog(): ConnectorCatalogEntry[];
|
|
7
|
+
export interface ConnectorPlatformDef {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
type: "polling" | "webhook" | "hybrid";
|
|
11
|
+
hint: string;
|
|
12
|
+
fields: ConnectorFieldDef[];
|
|
13
|
+
security?: ConnectorSecurityDef;
|
|
14
|
+
}
|
|
15
|
+
export interface ConnectorFieldDef {
|
|
16
|
+
flag: string;
|
|
17
|
+
label: string;
|
|
18
|
+
placeholder?: string;
|
|
19
|
+
required?: boolean;
|
|
20
|
+
help?: string[];
|
|
21
|
+
initialValue?: string;
|
|
22
|
+
options?: Array<{
|
|
23
|
+
value: string;
|
|
24
|
+
label: string;
|
|
25
|
+
hint?: string;
|
|
26
|
+
}>;
|
|
27
|
+
includeWhen?: ConnectorFieldCondition;
|
|
28
|
+
}
|
|
29
|
+
export type ConnectorFieldCondition = {
|
|
30
|
+
flag: string;
|
|
31
|
+
equals?: string;
|
|
32
|
+
notEquals?: string;
|
|
33
|
+
};
|
|
34
|
+
export interface ConnectorSecurityFieldDef {
|
|
35
|
+
key: string;
|
|
36
|
+
label: string;
|
|
37
|
+
placeholder?: string;
|
|
38
|
+
help?: string[];
|
|
39
|
+
requiredMessage: string;
|
|
40
|
+
validate?: (value: string) => string | undefined;
|
|
41
|
+
}
|
|
42
|
+
export interface ConnectorSecurityDef {
|
|
43
|
+
prompt: string;
|
|
44
|
+
fields: ConnectorSecurityFieldDef[];
|
|
45
|
+
buildArgs: (values: Record<string, string>) => string[];
|
|
46
|
+
}
|
|
47
|
+
export type ConnectorChannel = {
|
|
48
|
+
id: string;
|
|
49
|
+
name: string;
|
|
50
|
+
type: ConnectorPlatformDef["type"];
|
|
51
|
+
hint: string;
|
|
52
|
+
fields: ConnectorFieldDef[];
|
|
53
|
+
security?: {
|
|
54
|
+
prompt: string;
|
|
55
|
+
fields: Array<Omit<ConnectorSecurityFieldDef, "validate">>;
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
export type ActiveConnectorRecord = {
|
|
59
|
+
id: string;
|
|
60
|
+
type: string;
|
|
61
|
+
pid: number;
|
|
62
|
+
hubUrl: string;
|
|
63
|
+
startedAt?: string;
|
|
64
|
+
applicationId?: string;
|
|
65
|
+
botUsername?: string;
|
|
66
|
+
userName?: string;
|
|
67
|
+
phoneNumberId?: string;
|
|
68
|
+
port?: number;
|
|
69
|
+
baseUrl?: string;
|
|
70
|
+
connectionMode?: string;
|
|
71
|
+
};
|
|
72
|
+
export type ConfiguredConnectorRecord = {
|
|
73
|
+
id: string;
|
|
74
|
+
type: string;
|
|
75
|
+
configuredAt: string;
|
|
76
|
+
updatedAt: string;
|
|
77
|
+
};
|
|
78
|
+
export type ConnectorChannelsResponse = {
|
|
79
|
+
available: ConnectorChannel[];
|
|
80
|
+
active: ActiveConnectorRecord[];
|
|
81
|
+
configured: ConfiguredConnectorRecord[];
|
|
82
|
+
};
|
|
83
|
+
export declare function shouldIncludeConnectorField(field: ConnectorFieldDef, values: Record<string, string>): boolean;
|
|
84
|
+
export declare function connectorChannelsFromPlatforms(platforms?: ConnectorPlatformDef[]): ConnectorChannel[];
|
|
85
|
+
export declare const CONNECTOR_PLATFORMS: ConnectorPlatformDef[];
|
|
86
|
+
export declare const PLATFORMS: ConnectorPlatformDef[];
|
|
87
|
+
export declare const shouldIncludeField: typeof shouldIncludeConnectorField;
|
package/dist/hub.d.ts
CHANGED
|
@@ -256,7 +256,7 @@ export interface HubScheduleUpdateInput {
|
|
|
256
256
|
runtimeOptions?: HubSessionRuntimeOptions;
|
|
257
257
|
metadata?: Record<string, JsonValue | undefined>;
|
|
258
258
|
}
|
|
259
|
-
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.create" | "session.attach" | "session.detach" | "session.get" | "session.messages" | "session.restore" | "session.delete" | "session.update" | "session.pending_prompts" | "session.update_pending_prompt" | "session.remove_pending_prompt" | "session.fork" | "session.hook" | "run.start" | "session.send_input" | "run.abort" | "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" | "settings.list" | "settings.get" | "settings.patch" | "settings.toggle" | "cron.event.ingest" | "cron.event.list" | "cron.event.get" | "ui.notify" | "ui.show_window";
|
|
259
|
+
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.create" | "session.attach" | "session.detach" | "session.get" | "session.messages" | "session.restore" | "session.delete" | "session.update" | "session.pending_prompts" | "session.update_pending_prompt" | "session.remove_pending_prompt" | "session.fork" | "session.hook" | "run.start" | "session.send_input" | "run.abort" | "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" | "settings.list" | "settings.get" | "settings.patch" | "settings.toggle" | "connector.channels" | "connector.configure" | "connector.delete_config" | "cron.event.ingest" | "cron.event.list" | "cron.event.get" | "ui.notify" | "ui.show_window";
|
|
260
260
|
export declare const HUB_DEFAULT_COMMAND_TIMEOUT_MS = 30000;
|
|
261
261
|
export declare const HUB_COMMAND_SLOW_LOG_MS = 5000;
|
|
262
262
|
export declare function getDefaultHubCommandTimeoutMs(command: HubCommandName): number | null;
|
package/dist/index.browser.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export * from "./agents";
|
|
|
3
3
|
export type { ConnectorAuthorizationDecision, ConnectorAuthorizationRequest, ConnectorEventActor, ConnectorEventContext, ConnectorHookEvent, ConnectorHookEventName, } from "./connectors/events";
|
|
4
4
|
export { ConnectorAuthorizationDecisionSchema, ConnectorAuthorizationRequestSchema, ConnectorEventActorSchema, ConnectorEventContextSchema, ConnectorHookEventNameSchema, ConnectorHookEventSchema, } from "./connectors/events";
|
|
5
5
|
export type * from "./connectors/options";
|
|
6
|
+
export type { ActiveConnectorRecord, ConfiguredConnectorRecord, ConnectorCatalogEntry, ConnectorChannel, ConnectorChannelsResponse, ConnectorFieldCondition, ConnectorFieldDef, ConnectorPlatformDef, ConnectorSecurityDef, ConnectorSecurityFieldDef, } from "./connectors/platforms";
|
|
7
|
+
export { CONNECTOR_CATALOG, CONNECTOR_PLATFORMS, connectorChannelsFromPlatforms, listConnectorCatalog, shouldIncludeConnectorField, } from "./connectors/platforms";
|
|
6
8
|
export type { AutomationEventEnvelope } from "./cron";
|
|
7
9
|
export type { ClientContext, ClientName, ExtensionContext, UserContext, WorkspaceContext, } from "./extensions/context";
|
|
8
10
|
export type { AgentExtensionApi, AgentExtensionAutomationContext, AgentExtensionAutomationEventType, AgentExtensionCapability, AgentExtensionCommand, AgentExtensionCommandResult, AgentExtensionHooks, AgentExtensionMcpEnv, AgentExtensionMcpEnvValue, AgentExtensionMcpServer, AgentExtensionMcpSseTransport, AgentExtensionMcpStdioTransport, AgentExtensionMcpStreamableHttpTransport, AgentExtensionMcpTransport, AgentExtensionMessageBuilder, AgentExtensionProvider, AgentExtensionRegistry, AgentExtensionRule, AgentExtensionSessionContext, ContributionRegistryExtension, ContributionRegistryOptions, PluginManifest, PluginSetupContext, } from "./extensions/contribution-registry";
|
|
@@ -26,9 +28,10 @@ export { estimateTokens } from "./llms/tokens";
|
|
|
26
28
|
export type { ToolApprovalRequest, ToolApprovalResult, ToolCallRecord, ToolPolicy, } from "./llms/tools";
|
|
27
29
|
export { ToolCallRecordSchema } from "./llms/tools";
|
|
28
30
|
export { type BasicLogger, type BasicLogMetadata, noopBasicLogger, } from "./logging/logger";
|
|
29
|
-
export { parseJsonStream, safeJsonParse, safeJsonStringify, } from "./parse/json";
|
|
31
|
+
export { normalizeJsonLikeStringsForSchema, parseJsonStream, safeJsonParse, safeJsonStringify, } from "./parse/json";
|
|
32
|
+
export { type OmitUndefinedValues, omitUndefinedValues } from "./parse/object";
|
|
30
33
|
export { getDefaultShell, getShellArgs } from "./parse/shell";
|
|
31
|
-
export { maskSecret, sanitizeFileName, truncateSplit, truncateStr, } from "./parse/string";
|
|
34
|
+
export { maskSecret, sanitizeFileName, trimNonEmpty, truncateSplit, truncateStr, } from "./parse/string";
|
|
32
35
|
export { formatHumanReadableDate, formatUptime } from "./parse/time";
|
|
33
36
|
export { validateWithZod, zodToJsonSchema } from "./parse/zod";
|
|
34
37
|
export type { ClineSystemPromptOptions } from "./prompt/cline";
|
|
@@ -45,8 +48,8 @@ export type { TeamProgressCounts, TeamProgressLifecycleEvent, TeamProgressMember
|
|
|
45
48
|
export { TEAM_LIFECYCLE_EVENT_TYPE, TEAM_PROGRESS_EVENT_TYPE, } from "./rpc/team-progress";
|
|
46
49
|
export type { ClineEnvironment, ClineEnvironmentConfig, ResolveClineEnvironmentOptions, } from "./runtime/cline-environment";
|
|
47
50
|
export { CLINE_ENVIRONMENT_ENV, CLINE_ENVIRONMENT_OVERRIDE_ENV, CLINE_ENVIRONMENTS, DEFAULT_CLINE_ENVIRONMENT, getClineEnvironmentConfig, resolveClineEnvironment, } from "./runtime/cline-environment";
|
|
48
|
-
export type { CaptureSdkErrorInput, ITelemetryService, OpenTelemetryClientConfig, SdkTelemetryErrorComponent, SdkTelemetryErrorSeverity, TelemetryArray, TelemetryMetadata, TelemetryObject, TelemetryPrimitive, TelemetryProperties, TelemetryValue, } from "./services/telemetry";
|
|
49
|
-
export { buildSdkErrorProperties, captureSdkError, normalizeSdkError, SDK_ERROR_TELEMETRY_EVENT, } from "./services/telemetry";
|
|
51
|
+
export type { CaptureAgentUnexpectedReasoningTokensInput, CaptureSdkErrorInput, ITelemetryService, OpenTelemetryClientConfig, SdkTelemetryErrorComponent, SdkTelemetryErrorSeverity, TelemetryArray, TelemetryMetadata, TelemetryObject, TelemetryPrimitive, TelemetryProperties, TelemetryValue, } from "./services/telemetry";
|
|
52
|
+
export { AGENT_UNEXPECTED_REASONING_TOKENS_EVENT, buildSdkErrorProperties, captureAgentUnexpectedReasoningTokens, captureSdkError, normalizeSdkError, SDK_ERROR_TELEMETRY_EVENT, } from "./services/telemetry";
|
|
50
53
|
export type { ClineTelemetryServiceConfig } from "./services/telemetry-config";
|
|
51
54
|
export { createClineTelemetryServiceConfig, createClineTelemetryServiceMetadata, } from "./services/telemetry-config";
|
|
52
55
|
export type { HookSessionContext, HookSessionContextLookup, HookSessionContextProvider, } from "./session/hook-context";
|
package/dist/index.browser.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import{z as s}from"zod";import{z as k}from"zod";var jn=k.enum(["default","openai-responses","r1"]),De={DEFAULT:"default",OPENAI_RESPONSES:"openai-responses",R1:"r1"},hn=k.enum(["images","tools","streaming","prompt-cache","reasoning","reasoning-effort","computer-use","global-endpoint","structured_output","temperature","files"]),Cn=k.enum(["active","preview","deprecated","legacy"]),xn=k.object({input:k.number().optional(),output:k.number().optional(),cacheWrite:k.number().optional(),cacheRead:k.number().optional()}),Nn=k.object({maxBudget:k.number().optional(),outputPrice:k.number().optional(),thinkingLevel:k.enum(["low","high"]).optional()}),Sn=k.object({reasoningDefaultOn:k.boolean().optional()}).catchall(k.unknown()),rn=k.object({id:k.string(),name:k.string().optional(),description:k.string().optional(),maxTokens:k.number().optional(),contextWindow:k.number().optional(),maxInputTokens:k.number().optional(),capabilities:k.array(hn).optional(),apiFormat:jn.optional(),systemRole:k.enum(["system","developer"]).optional(),temperature:k.number().optional(),pricing:xn.optional(),thinkingConfig:Nn.optional(),status:Cn.optional(),deprecationNotice:k.string().optional(),replacedBy:k.string().optional(),releaseDate:k.string().optional(),deprecationDate:k.string().optional(),family:k.string().optional(),metadata:Sn.optional()});import{z as q}from"zod";var yn=q.object({id:q.string(),name:q.string(),input:q.unknown(),output:q.unknown(),error:q.string().optional(),durationMs:q.number(),startedAt:q.date(),endedAt:q.date()});var ke=s.enum(["completed","max_iterations","aborted","mistake_limit","error"]),ue=s.object({inputTokens:s.number(),outputTokens:s.number(),cacheReadTokens:s.number().optional(),cacheWriteTokens:s.number().optional(),totalCost:s.number().optional()}),Zd=s.object({text:s.string(),usage:ue,messages:s.array(s.custom()),toolCalls:s.array(yn),iterations:s.number(),finishReason:ke,model:s.object({id:s.string(),provider:s.string(),info:rn.optional()}),startedAt:s.date(),endedAt:s.date(),durationMs:s.number()}),Re=s.enum(["low","medium","high","xhigh"]),Jd=s.object({sessionId:s.string().optional(),providerId:s.string(),modelId:s.string(),apiKey:s.string().optional(),baseUrl:s.string().url().optional(),headers:s.record(s.string(),s.string()).optional(),knownModels:s.record(s.string(),rn).optional(),providerConfig:s.unknown().optional(),initialMessages:s.array(s.custom()).optional(),systemPrompt:s.string(),tools:s.array(s.custom()),maxIterations:s.number().positive().optional(),maxParallelToolCalls:s.number().int().positive().default(8),maxTokensPerTurn:s.number().positive().optional(),apiTimeoutMs:s.number().positive().default(180000),userFileContentLoader:s.function().input([s.string()]).output(s.promise(s.string())).optional(),toolContextMetadata:s.record(s.string(),s.unknown()).optional(),execution:s.object({maxConsecutiveMistakes:s.number().int().positive().optional(),reminderAfterIterations:s.number().nonnegative().optional(),reminderText:s.string().optional(),loopDetection:s.union([s.literal(!1),s.object({softThreshold:s.number().int().positive().optional(),hardThreshold:s.number().int().positive().optional()})]).optional()}).optional(),reasoningEffort:Re.optional(),thinkingBudgetTokens:s.number().positive().optional(),thinking:s.boolean().optional(),onEvent:s.function().input([s.custom()]).output(s.void()).optional(),hooks:s.custom().optional(),parentAgentId:s.string().optional(),extensions:s.array(s.custom()).optional(),hookErrorMode:s.enum(["ignore","throw"]).default("ignore"),toolPolicies:s.record(s.string(),s.object({enabled:s.boolean().optional(),autoApprove:s.boolean().optional()})).optional(),requestToolApproval:s.function().input([s.object({sessionId:s.string(),agentId:s.string(),conversationId:s.string(),iteration:s.number(),toolCallId:s.string(),toolName:s.string(),input:s.unknown(),policy:s.object({enabled:s.boolean().optional(),autoApprove:s.boolean().optional()}).default({})})]).output(s.union([s.object({approved:s.boolean(),reason:s.string().optional()}),s.promise(s.object({approved:s.boolean(),reason:s.string().optional()}))])).optional(),onConsecutiveMistakeLimitReached:s.function().input([s.object({iteration:s.number().int().positive(),consecutiveMistakes:s.number().int().positive(),maxConsecutiveMistakes:s.number().int().positive(),reason:s.enum(["api_error","invalid_tool_call","tool_execution_failed"]),details:s.string().optional()})]).output(s.union([s.object({action:s.literal("continue"),guidance:s.string().optional()}),s.object({action:s.literal("stop"),reason:s.string().optional()}),s.promise(s.union([s.object({action:s.literal("continue"),guidance:s.string().optional()}),s.object({action:s.literal("stop"),reason:s.string().optional()})]))])).optional(),logger:s.custom().optional(),extensionContext:s.custom().optional(),abortSignal:s.custom().optional()});import{z as I}from"zod";var an=I.enum(["connector.started","connector.stopping","session.authorize","message.received","message.denied","message.completed","message.failed","session.started","session.reused","session.reset","schedule.delivery.started","schedule.delivery.sent","schedule.delivery.failed"]),pn=I.object({id:I.string().optional(),label:I.string().optional(),role:I.string().optional(),participantKey:I.string().optional(),participantLabel:I.string().optional(),platformUserId:I.string().optional(),metadata:I.record(I.string(),I.unknown()).optional()}),vn=I.object({source:I.string(),sourceEvent:I.string(),threadId:I.string(),channelId:I.string(),isDM:I.boolean(),sessionId:I.string().optional(),workspaceRoot:I.string().optional(),metadata:I.record(I.string(),I.unknown()).optional()}),$e=I.object({actor:pn,context:vn,payload:I.record(I.string(),I.unknown()).optional()}),be=I.object({action:I.enum(["allow","deny"]).default("allow"),message:I.string().optional(),reason:I.string().optional(),metadata:I.record(I.string(),I.unknown()).optional()}),Me=I.object({adapter:I.string(),botUserName:I.string().optional(),event:an,payload:I.record(I.string(),I.unknown()),ts:I.string()});var ie=["hooks","tools","commands","rules","skills","messageBuilders","providers","automationEvents","mcp"],Le=new Set(ie);function oo(n,o){return n.name||`extension_${String(o).padStart(4,"0")}`}function zn(n){return Array.isArray(n)&&n.every((o)=>typeof o==="string")}function no(n){if(!Array.isArray(n))return;let o=n.filter((e)=>typeof e==="string").map((e)=>e.trim()).filter((e)=>e.length>0);return o.length>0?o:void 0}function eo(n){let o=no(n.providerIds),e=no(n.modelIds);return{...n,...o?{providerIds:o}:{},...e?{modelIds:e}:{}}}function me(n,o){let e=oo(n,o),d=n.manifest;if(!d||typeof d!=="object")throw Error(`Invalid manifest for extension "${e}": manifest is required`);if(!Array.isArray(d.capabilities)||d.capabilities.length===0)throw Error(`Invalid manifest for extension "${e}": capabilities must be a non-empty array`);let l=new Set;for(let y of d.capabilities){if(!Le.has(y))throw Error(`Invalid manifest for extension "${e}": unsupported capability "${String(y)}"`);l.add(y)}if(Object.hasOwn(d,"providerIds")&&!zn(d.providerIds))throw Error(`Invalid manifest for extension "${e}": providerIds must be a string array when provided`);if(Object.hasOwn(d,"modelIds")&&!zn(d.modelIds))throw Error(`Invalid manifest for extension "${e}": modelIds must be a string array when provided`);let t=l.has("hooks");if(n.hooks!==void 0&&!t)throw Error(`Invalid manifest for extension "${e}": runtime hooks require the "hooks" capability`);return{capabilities:l,raw:eo(d)}}function Fe(n,o){if(!n||typeof n!=="object")throw Error(`Invalid automation event contribution for extension "${o}": expected object`);let e=typeof n.eventType==="string"?n.eventType.trim():"",d=typeof n.source==="string"?n.source.trim():"";if(!e)throw Error(`Invalid automation event contribution for extension "${o}": eventType is required`);if(!d)throw Error(`Invalid automation event contribution for extension "${o}": source is required`);return{...n,eventType:e,source:d,examples:n.examples?[...n.examples]:void 0,metadata:n.metadata?{...n.metadata}:void 0}}class En{extensions;registry={tools:[],commands:[],rules:[],messageBuilder:[],providers:[],automationEventTypes:[],mcpServers:[]};normalized=[];phase="resolve";setupContext;constructor(n={}){this.extensions=n.extensions??[],this.setupContext=n.setupContext??{}}resolve(){if(this.phase!=="resolve")return;this.normalized=this.extensions.map((n,o)=>({extension:n,order:o,manifest:{capabilities:new Set,raw:n.manifest}})),this.phase="validate"}validate(){if(this.phase==="resolve")this.resolve();if(this.phase!=="validate")return;this.normalized=this.normalized.map((n)=>({...n,manifest:me(n.extension,n.order)})),this.phase="setup"}async setup(n={}){if(this.phase==="resolve")this.resolve();if(this.phase==="validate")this.validate();if(this.phase!=="setup")return;let o,e=[];for(let d of this.normalized){let{extension:l}=d;if(l.disabled)continue;let t=oo(l,d.order),g={tools:[],commands:[],rules:[],messageBuilder:[],providers:[],automationEventTypes:[],mcpServers:[]},y={registerTool:(w)=>g.tools.push(w),registerCommand:(w)=>g.commands.push(w),registerRule:(w)=>{if(!d.manifest.capabilities.has("rules"))throw Error(`Invalid setup for extension "${t}": registerRule requires the "rules" capability`);g.rules.push(w)},registerMessageBuilder:(w)=>g.messageBuilder.push(w),registerProvider:(w)=>g.providers.push(w),registerAutomationEventType:(w)=>{if(!d.manifest.capabilities.has("automationEvents"))throw Error(`Invalid setup for extension "${t}": registerAutomationEventType requires the "automationEvents" capability`);g.automationEventTypes.push(Fe(w,t))},registerMcpServer:(w)=>{if(!d.manifest.capabilities.has("mcp"))throw Error(`Invalid setup for extension "${t}": registerMcpServer requires the "mcp" capability`);g.mcpServers.push({...w,metadata:{...w.metadata??{},source:"plugin",plugin:t}})}},E=d.manifest.capabilities.has("automationEvents")?this.setupContext:{...this.setupContext,automation:void 0};try{await l.setup?.(y,E),e.push(g)}catch(w){if(n.tolerateSetupErrors!==!0)throw w;o??=w}}if(o&&n.tolerateSetupErrors!==!0)throw o;for(let d of e)this.registry.tools.push(...d.tools),this.registry.commands.push(...d.commands),this.registry.rules.push(...d.rules),this.registry.messageBuilder.push(...d.messageBuilder),this.registry.providers.push(...d.providers),this.registry.automationEventTypes.push(...d.automationEventTypes),this.registry.mcpServers.push(...d.mcpServers);if(this.phase="activate",o)throw o}activate(){if(this.phase==="resolve")this.resolve();if(this.phase==="validate")this.validate();if(this.phase==="setup")throw Error("Contribution registry setup must complete before activation");if(this.phase!=="activate")return;this.phase="run"}async initialize(n={}){this.resolve(),this.validate();try{await this.setup(n)}finally{if(this.phase==="activate")this.activate()}}isActivated(){return this.phase==="run"}getRegistrySnapshot(){return{tools:[...this.registry.tools],commands:[...this.registry.commands],rules:[...this.registry.rules],messageBuilder:[...this.registry.messageBuilder],providers:[...this.registry.providers],automationEventTypes:[...this.registry.automationEventTypes],mcpServers:[...this.registry.mcpServers]}}getRegisteredTools(){return[...this.registry.tools]}getRegisteredRules(){return[...this.registry.rules]}getRegisteredAutomationEventTypes(){return[...this.registry.automationEventTypes]}getRegisteredMcpServers(){return[...this.registry.mcpServers]}getValidatedExtensions(){if(this.phase==="resolve")this.resolve();if(this.phase==="validate")this.validate();return this.normalized.slice().sort((n,o)=>n.order-o.order).map(({extension:n})=>n)}}function Ye(n={}){return new En(n)}var Ue=[".js",".ts"];var ro={CLINE_PASS:"ext-cline-pass"},qe={[ro.CLINE_PASS]:!1},Ge=Object.values(ro);import{z as c}from"zod";var fo=c.enum(["agent_start","agent_resume","agent_abort","agent_end","agent_error","tool_call","tool_result","prompt_submit","pre_compact","session_shutdown"]),J=c.record(c.string(),c.string()),He=c.object({toolName:c.string(),parameters:J}),Te=c.object({toolName:c.string(),parameters:J,result:c.string(),success:c.boolean(),executionTimeMs:c.number()}),Xe=c.object({prompt:c.string(),attachments:c.array(c.string())}),Ve=c.object({taskMetadata:J}),Ze=c.object({taskMetadata:J,previousState:J}),Je=c.object({taskMetadata:J}),Qe=c.object({taskMetadata:J}),We=c.object({taskId:c.string(),ulid:c.string(),contextSize:c.number(),compactionStrategy:c.string(),previousApiReqIndex:c.number(),tokensIn:c.number(),tokensOut:c.number(),tokensInCache:c.number(),tokensOutCache:c.number(),deletedRangeStart:c.number(),deletedRangeEnd:c.number(),contextJsonPath:c.string(),contextRawPath:c.string()}),so=c.object({clineVersion:c.string(),hookName:fo,timestamp:c.string(),taskId:c.string(),sessionContext:c.object({rootSessionId:c.string().optional(),hookLogPath:c.string().optional()}).optional(),workspaceRoots:c.array(c.string()),workspaceInfo:c.custom().optional(),userId:c.string(),agent_id:c.string(),parent_agent_id:c.string().nullable(),iteration:c.number().optional(),reason:c.string().optional(),tool_call:c.object({id:c.string(),name:c.string(),input:c.unknown()}).optional(),tool_result:c.custom().optional(),turn:c.unknown().optional(),error:c.object({name:c.string(),message:c.string(),stack:c.string().optional()}).optional(),preToolUse:He.optional(),postToolUse:Te.optional(),userPromptSubmit:Xe.optional(),taskStart:Ve.optional(),taskResume:Ze.optional(),taskCancel:Je.optional(),taskComplete:Qe.optional(),preCompact:We.optional()}).passthrough();function Oe(n){let o=so.safeParse(n);if(!o.success)return;return o.data}var Sd="v1",ad="v1",pd="v1",vd=["client.register","client.list","session.create","session.list","session.get","session.run","session.abort","schedule.create","schedule.list","settings.get","settings.set"];function dn(n){let o=/^v(\d+)$/.exec(n?.trim()??"");if(!o)return;return Number.parseInt(o[1]??"",10)}function zd(n,o="v1"){let e=dn(n.protocolVersion),d=dn(o);if(e===void 0||d===void 0)return{compatible:!1,reason:"missing_protocol"};let l=dn(n.minClientProtocolVersion)??e,t=dn(n.maxClientProtocolVersion)??e;return d>=l&&d<=t?{compatible:!0}:{compatible:!1,reason:"unsupported_protocol"}}var Pe=30000,nf=5000;function Ke(n){switch(n){case"run.start":case"session.send_input":return null;default:return Pe}}function of(n,o){return o===void 0?Ke(n):o}var je=["readFile","search","bash","webFetch","editor","applyPatch","skills","askQuestion","submit"],he=new Set(je);function ef(n){return typeof n==="string"&&he.has(n)}var rf="tool_executor.",df="custom_tool.",ff="hook.",sf="compaction.compact",lf="checkpoint.create",gf="mistake_limit.decide",tf="user_instructions.snapshot";function Bn(n,o){return`<file_content path="${n}">
|
|
1
|
+
import{z as f}from"zod";import{z as A}from"zod";var Qn=A.enum(["default","openai-responses","r1"]),qe={DEFAULT:"default",OPENAI_RESPONSES:"openai-responses",R1:"r1"},jn=A.enum(["images","tools","streaming","prompt-cache","reasoning","reasoning-effort","computer-use","global-endpoint","structured_output","temperature","files"]),Nn=A.enum(["active","preview","deprecated","legacy"]),Sn=A.object({input:A.number().optional(),output:A.number().optional(),cacheWrite:A.number().optional(),cacheRead:A.number().optional()}),vn=A.object({maxBudget:A.number().optional(),outputPrice:A.number().optional(),thinkingLevel:A.enum(["low","high"]).optional()}),xn=A.object({reasoningDefaultOn:A.boolean().optional()}).catchall(A.unknown()),dn=A.object({id:A.string(),name:A.string().optional(),description:A.string().optional(),maxTokens:A.number().optional(),contextWindow:A.number().optional(),maxInputTokens:A.number().optional(),capabilities:A.array(jn).optional(),apiFormat:Qn.optional(),systemRole:A.enum(["system","developer"]).optional(),temperature:A.number().optional(),pricing:Sn.optional(),thinkingConfig:vn.optional(),status:Nn.optional(),deprecationNotice:A.string().optional(),replacedBy:A.string().optional(),releaseDate:A.string().optional(),deprecationDate:A.string().optional(),family:A.string().optional(),metadata:xn.optional()});import{z as U}from"zod";var wn=U.object({id:U.string(),name:U.string(),input:U.unknown(),output:U.unknown(),error:U.string().optional(),durationMs:U.number(),startedAt:U.date(),endedAt:U.date()});var Te=f.enum(["completed","max_iterations","aborted","mistake_limit","error"]),he=f.object({inputTokens:f.number(),outputTokens:f.number(),cacheReadTokens:f.number().optional(),cacheWriteTokens:f.number().optional(),totalCost:f.number().optional()}),rl=f.object({text:f.string(),usage:he,messages:f.array(f.custom()),toolCalls:f.array(wn),iterations:f.number(),finishReason:Te,model:f.object({id:f.string(),provider:f.string(),info:dn.optional()}),startedAt:f.date(),endedAt:f.date(),durationMs:f.number()}),$e=f.enum(["low","medium","high","xhigh"]),dl=f.object({sessionId:f.string().optional(),providerId:f.string(),modelId:f.string(),apiKey:f.string().optional(),baseUrl:f.string().url().optional(),headers:f.record(f.string(),f.string()).optional(),knownModels:f.record(f.string(),dn).optional(),providerConfig:f.unknown().optional(),initialMessages:f.array(f.custom()).optional(),systemPrompt:f.string(),tools:f.array(f.custom()),maxIterations:f.number().positive().optional(),maxParallelToolCalls:f.number().int().positive().default(8),maxTokensPerTurn:f.number().positive().optional(),apiTimeoutMs:f.number().positive().default(180000),userFileContentLoader:f.function().input([f.string()]).output(f.promise(f.string())).optional(),toolContextMetadata:f.record(f.string(),f.unknown()).optional(),execution:f.object({maxConsecutiveMistakes:f.number().int().positive().optional(),reminderAfterIterations:f.number().nonnegative().optional(),reminderText:f.string().optional(),loopDetection:f.union([f.literal(!1),f.object({softThreshold:f.number().int().positive().optional(),hardThreshold:f.number().int().positive().optional()})]).optional()}).optional(),reasoningEffort:$e.optional(),thinkingBudgetTokens:f.number().positive().optional(),thinking:f.boolean().optional(),onEvent:f.function().input([f.custom()]).output(f.void()).optional(),hooks:f.custom().optional(),parentAgentId:f.string().optional(),extensions:f.array(f.custom()).optional(),hookErrorMode:f.enum(["ignore","throw"]).default("ignore"),toolPolicies:f.record(f.string(),f.object({enabled:f.boolean().optional(),autoApprove:f.boolean().optional()})).optional(),requestToolApproval:f.function().input([f.object({sessionId:f.string(),agentId:f.string(),conversationId:f.string(),iteration:f.number(),toolCallId:f.string(),toolName:f.string(),input:f.unknown(),policy:f.object({enabled:f.boolean().optional(),autoApprove:f.boolean().optional()}).default({})})]).output(f.union([f.object({approved:f.boolean(),reason:f.string().optional()}),f.promise(f.object({approved:f.boolean(),reason:f.string().optional()}))])).optional(),onConsecutiveMistakeLimitReached:f.function().input([f.object({iteration:f.number().int().positive(),consecutiveMistakes:f.number().int().positive(),maxConsecutiveMistakes:f.number().int().positive(),reason:f.enum(["api_error","invalid_tool_call","tool_execution_failed"]),details:f.string().optional()})]).output(f.union([f.object({action:f.literal("continue"),guidance:f.string().optional()}),f.object({action:f.literal("stop"),reason:f.string().optional()}),f.promise(f.union([f.object({action:f.literal("continue"),guidance:f.string().optional()}),f.object({action:f.literal("stop"),reason:f.string().optional()})]))])).optional(),logger:f.custom().optional(),extensionContext:f.custom().optional(),abortSignal:f.custom().optional()});import{z as k}from"zod";var zn=k.enum(["connector.started","connector.stopping","session.authorize","message.received","message.denied","message.completed","message.failed","session.started","session.reused","session.reset","schedule.delivery.started","schedule.delivery.sent","schedule.delivery.failed"]),no=k.object({id:k.string().optional(),label:k.string().optional(),role:k.string().optional(),participantKey:k.string().optional(),participantLabel:k.string().optional(),platformUserId:k.string().optional(),metadata:k.record(k.string(),k.unknown()).optional()}),oo=k.object({source:k.string(),sourceEvent:k.string(),threadId:k.string(),channelId:k.string(),isDM:k.boolean(),sessionId:k.string().optional(),workspaceRoot:k.string().optional(),metadata:k.record(k.string(),k.unknown()).optional()}),Me=k.object({actor:no,context:oo,payload:k.record(k.string(),k.unknown()).optional()}),Ue=k.object({action:k.enum(["allow","deny"]).default("allow"),message:k.string().optional(),reason:k.string().optional(),metadata:k.record(k.string(),k.unknown()).optional()}),Fe=k.object({adapter:k.string(),botUserName:k.string().optional(),event:zn,payload:k.record(k.string(),k.unknown()),ts:k.string()});var eo=[{name:"discord",description:"Discord interactions and gateway bridge backed by RPC runtime sessions"},{name:"gchat",description:"Google Chat webhook bridge backed by RPC runtime sessions"},{name:"linear",description:"Linear webhook bridge backed by RPC runtime sessions"},{name:"slack",description:"Slack webhook/socket bridge backed by RPC runtime sessions"},{name:"telegram",description:"Bridge Telegram bot messages into RPC chat sessions"},{name:"whatsapp",description:"Bridge WhatsApp webhook messages into RPC chat sessions"}];function ro(){return eo.map((n)=>({...n}))}function Le(n,o){let e=n.includeWhen;if(!e)return!0;let d=o[e.flag]??"";if(e.equals!==void 0&&d!==e.equals)return!1;if(e.notEquals!==void 0&&d===e.notEquals)return!1;return!0}function Ge(n=lo){let o=new Set(ro().map((e)=>e.name));return n.filter((e)=>o.has(e.id)).map((e)=>({id:e.id,name:e.name,type:e.type,hint:e.hint,fields:e.fields.map((d)=>({flag:d.flag,label:d.label,placeholder:d.placeholder,required:d.required,help:d.help,initialValue:d.initialValue,options:d.options,includeWhen:d.includeWhen})),security:e.security?{prompt:e.security.prompt,fields:e.security.fields.map((d)=>({key:d.key,label:d.label,placeholder:d.placeholder,help:d.help,requiredMessage:d.requiredMessage}))}:void 0}))}function Ye(n){return/^\d+$/.test(n)?void 0:"Telegram user ID must contain digits only"}function Pe(n){return/^T[A-Z0-9]+$/.test(n)?void 0:"Slack workspace ID must start with T and contain uppercase letters or digits only"}function He(n){return/^[UW][A-Z0-9]+$/.test(n)?void 0:"Slack member ID must start with U or W and contain uppercase letters or digits only"}var lo=[{id:"telegram",name:"Telegram",type:"polling",hint:"Easiest to set up. No public URL needed.",fields:[{flag:"-k",label:"Bot token",placeholder:"7123456789:AAH...",required:!0,help:["Open Telegram and start a chat with @BotFather","Send /newbot and follow the prompts","BotFather gives you this after creating the bot","It looks like 7123456789:AAHxxx..."]}],security:{prompt:"By default, anyone who finds your bot can message it and run tasks on your machine. Restrict access to your Telegram user ID?",fields:[{key:"userId",label:"Your Telegram user ID",placeholder:"123456789",help:["Message @userinfobot on Telegram","It will reply with your numeric user ID"],requiredMessage:"User ID is required to restrict access",validate:Ye}],buildArgs:({userId:n})=>["--allowed-user-id",n??""]}},{id:"slack",name:"Slack",type:"hybrid",hint:"Public URL for webhook mode; leave blank for socket mode.",fields:[{flag:"--bot-token",label:"Bot token",placeholder:"xoxb-...",required:!0,help:["Go to api.slack.com/apps and create a new app","Add Bot Token Scopes: chat:write, app_mentions:read, channels:history, channels:read, im:history, im:read, im:write, users:read","Install to workspace and copy the Bot Token"]},{flag:"--base-url",label:"Public base URL",placeholder:"leave blank for socket mode",help:["Enter a publicly accessible URL for webhook mode","Leave blank to use Slack socket mode instead"]},{flag:"--signing-secret",label:"Signing secret",required:!0,help:["Found in your app's Basic Information page"],includeWhen:{flag:"--base-url",notEquals:""}},{flag:"--app-token",label:"App-level token",placeholder:"xapp-...",required:!0,help:["Enable Socket Mode in the Slack app","Generate an app-level token with the connections:write scope"],includeWhen:{flag:"--base-url",equals:""}}],security:{prompt:"Restrict which Slack users can interact with the bot?",fields:[{key:"teamId",label:"Allowed Slack workspace ID",placeholder:"T01ABC123",help:["Open your Slack workspace URL in a browser","The workspace ID is the segment after /client/, for example T01ABC123"],requiredMessage:"Workspace ID is required to restrict access",validate:Pe},{key:"userId",label:"Allowed Slack member ID",placeholder:"U01ABC123",help:["Click a user's name in Slack, then View full profile","Click ... and Copy member ID"],requiredMessage:"Member ID is required to restrict access",validate:He}],buildArgs:({teamId:n,userId:o})=>["--hook-command",`jq -r ".payload.actor.participantKey" | grep -qx "slack:team:${n}:user:${o}" && echo '{"action":"allow"}' || echo '{"action":"deny"}'`]}},{id:"discord",name:"Discord",type:"webhook",hint:"Requires a Discord app and public URL.",fields:[{flag:"--application-id",label:"Application ID",required:!0,help:["Go to discord.com/developers/applications","Create a new app, copy the Application ID"]},{flag:"--bot-token",label:"Bot token",required:!0,help:["Go to Bot section, create a bot, copy the token"]},{flag:"--public-key",label:"Public key",required:!0,help:["Found in General Information of your app"]},{flag:"--base-url",label:"Public base URL",placeholder:"https://example.com",required:!0,help:["Base URL for the connector","For Discord, set the Interactions Endpoint URL to <base-url>/api/webhooks/discord"]}]},{id:"whatsapp",name:"WhatsApp",type:"webhook",hint:"Requires Meta developer account and public URL.",fields:[{flag:"--phone-number-id",label:"Phone number ID",required:!0,help:["From your WhatsApp Business account in Meta Developer portal"]},{flag:"--access-token",label:"Access token",required:!0,help:["Generate a permanent token in Meta Developer portal"]},{flag:"--app-secret",label:"App secret",required:!0,help:["Found in App Settings > Basic"]},{flag:"--verify-token",label:"Webhook verify token",placeholder:"my-verify-token",required:!0,help:["Any string you choose, used to verify webhook setup"]},{flag:"--base-url",label:"Public base URL",placeholder:"https://example.com",required:!0}]},{id:"gchat",name:"Google Chat",type:"webhook",hint:"Requires Google Cloud project and public URL.",fields:[{flag:"--credentials-json",label:"Service account credentials JSON",required:!0,help:["Create a service account in Google Cloud Console","Download the credentials JSON file","Paste the JSON content here"]},{flag:"--base-url",label:"Public base URL",placeholder:"https://example.com",required:!0}]},{id:"linear",name:"Linear",type:"webhook",hint:"React to Linear issues and comments.",fields:[{flag:"--api-key",label:"API key",required:!0,help:["Go to Linear Settings > API > Personal API keys"]},{flag:"--webhook-secret",label:"Webhook signing secret",required:!0,help:["Go to Settings > API > Webhooks, create one","Copy the signing secret"]},{flag:"--base-url",label:"Public base URL",placeholder:"https://example.com",required:!0}]}];var Ve=["hooks","tools","commands","rules","skills","messageBuilders","providers","automationEvents","mcp"],Xe=new Set(Ve);function io(n,o){return n.name||`extension_${String(o).padStart(4,"0")}`}function so(n){return Array.isArray(n)&&n.every((o)=>typeof o==="string")}function fo(n){if(!Array.isArray(n))return;let o=n.filter((e)=>typeof e==="string").map((e)=>e.trim()).filter((e)=>e.length>0);return o.length>0?o:void 0}function co(n){let o=fo(n.providerIds),e=fo(n.modelIds);return{...n,...o?{providerIds:o}:{},...e?{modelIds:e}:{}}}function Ce(n,o){let e=io(n,o),d=n.manifest;if(!d||typeof d!=="object")throw Error(`Invalid manifest for extension "${e}": manifest is required`);if(!Array.isArray(d.capabilities)||d.capabilities.length===0)throw Error(`Invalid manifest for extension "${e}": capabilities must be a non-empty array`);let s=new Set;for(let b of d.capabilities){if(!Xe.has(b))throw Error(`Invalid manifest for extension "${e}": unsupported capability "${String(b)}"`);s.add(b)}if(Object.hasOwn(d,"providerIds")&&!so(d.providerIds))throw Error(`Invalid manifest for extension "${e}": providerIds must be a string array when provided`);if(Object.hasOwn(d,"modelIds")&&!so(d.modelIds))throw Error(`Invalid manifest for extension "${e}": modelIds must be a string array when provided`);let c=s.has("hooks");if(n.hooks!==void 0&&!c)throw Error(`Invalid manifest for extension "${e}": runtime hooks require the "hooks" capability`);return{capabilities:s,raw:co(d)}}function Ze(n,o){if(!n||typeof n!=="object")throw Error(`Invalid automation event contribution for extension "${o}": expected object`);let e=typeof n.eventType==="string"?n.eventType.trim():"",d=typeof n.source==="string"?n.source.trim():"";if(!e)throw Error(`Invalid automation event contribution for extension "${o}": eventType is required`);if(!d)throw Error(`Invalid automation event contribution for extension "${o}": source is required`);return{...n,eventType:e,source:d,examples:n.examples?[...n.examples]:void 0,metadata:n.metadata?{...n.metadata}:void 0}}class tn{extensions;registry={tools:[],commands:[],rules:[],messageBuilder:[],providers:[],automationEventTypes:[],mcpServers:[]};normalized=[];phase="resolve";setupContext;constructor(n={}){this.extensions=n.extensions??[],this.setupContext=n.setupContext??{}}resolve(){if(this.phase!=="resolve")return;this.normalized=this.extensions.map((n,o)=>({extension:n,order:o,manifest:{capabilities:new Set,raw:n.manifest}})),this.phase="validate"}validate(){if(this.phase==="resolve")this.resolve();if(this.phase!=="validate")return;this.normalized=this.normalized.map((n)=>({...n,manifest:Ce(n.extension,n.order)})),this.phase="setup"}async setup(n={}){if(this.phase==="resolve")this.resolve();if(this.phase==="validate")this.validate();if(this.phase!=="setup")return;let o,e=[];for(let d of this.normalized){let{extension:s}=d;if(s.disabled)continue;let c=io(s,d.order),i={tools:[],commands:[],rules:[],messageBuilder:[],providers:[],automationEventTypes:[],mcpServers:[]},b={registerTool:(u)=>i.tools.push(u),registerCommand:(u)=>i.commands.push(u),registerRule:(u)=>{if(!d.manifest.capabilities.has("rules"))throw Error(`Invalid setup for extension "${c}": registerRule requires the "rules" capability`);i.rules.push(u)},registerMessageBuilder:(u)=>i.messageBuilder.push(u),registerProvider:(u)=>i.providers.push(u),registerAutomationEventType:(u)=>{if(!d.manifest.capabilities.has("automationEvents"))throw Error(`Invalid setup for extension "${c}": registerAutomationEventType requires the "automationEvents" capability`);i.automationEventTypes.push(Ze(u,c))},registerMcpServer:(u)=>{if(!d.manifest.capabilities.has("mcp"))throw Error(`Invalid setup for extension "${c}": registerMcpServer requires the "mcp" capability`);i.mcpServers.push({...u,metadata:{...u.metadata??{},source:"plugin",plugin:c}})}},w=d.manifest.capabilities.has("automationEvents")?this.setupContext:{...this.setupContext,automation:void 0};try{await s.setup?.(b,w),e.push(i)}catch(u){if(n.tolerateSetupErrors!==!0)throw u;o??=u}}if(o&&n.tolerateSetupErrors!==!0)throw o;for(let d of e)this.registry.tools.push(...d.tools),this.registry.commands.push(...d.commands),this.registry.rules.push(...d.rules),this.registry.messageBuilder.push(...d.messageBuilder),this.registry.providers.push(...d.providers),this.registry.automationEventTypes.push(...d.automationEventTypes),this.registry.mcpServers.push(...d.mcpServers);if(this.phase="activate",o)throw o}activate(){if(this.phase==="resolve")this.resolve();if(this.phase==="validate")this.validate();if(this.phase==="setup")throw Error("Contribution registry setup must complete before activation");if(this.phase!=="activate")return;this.phase="run"}async initialize(n={}){this.resolve(),this.validate();try{await this.setup(n)}finally{if(this.phase==="activate")this.activate()}}isActivated(){return this.phase==="run"}getRegistrySnapshot(){return{tools:[...this.registry.tools],commands:[...this.registry.commands],rules:[...this.registry.rules],messageBuilder:[...this.registry.messageBuilder],providers:[...this.registry.providers],automationEventTypes:[...this.registry.automationEventTypes],mcpServers:[...this.registry.mcpServers]}}getRegisteredTools(){return[...this.registry.tools]}getRegisteredRules(){return[...this.registry.rules]}getRegisteredAutomationEventTypes(){return[...this.registry.automationEventTypes]}getRegisteredMcpServers(){return[...this.registry.mcpServers]}getValidatedExtensions(){if(this.phase==="resolve")this.resolve();if(this.phase==="validate")this.validate();return this.normalized.slice().sort((n,o)=>n.order-o.order).map(({extension:n})=>n)}}function We(n={}){return new tn(n)}var Je=[".js",".ts"];var go={CLINE_PASS:"ext-cline-pass"},pe={[go.CLINE_PASS]:!1},Ke=Object.values(go);import{z as g}from"zod";var uo=g.enum(["agent_start","agent_resume","agent_abort","agent_end","agent_error","tool_call","tool_result","prompt_submit","pre_compact","session_shutdown"]),V=g.record(g.string(),g.string()),Oe=g.object({toolName:g.string(),parameters:V}),Qe=g.object({toolName:g.string(),parameters:V,result:g.string(),success:g.boolean(),executionTimeMs:g.number()}),je=g.object({prompt:g.string(),attachments:g.array(g.string())}),Ne=g.object({taskMetadata:V}),Se=g.object({taskMetadata:V,previousState:V}),ve=g.object({taskMetadata:V}),xe=g.object({taskMetadata:V}),ze=g.object({taskId:g.string(),ulid:g.string(),contextSize:g.number(),compactionStrategy:g.string(),previousApiReqIndex:g.number(),tokensIn:g.number(),tokensOut:g.number(),tokensInCache:g.number(),tokensOutCache:g.number(),deletedRangeStart:g.number(),deletedRangeEnd:g.number(),contextJsonPath:g.string(),contextRawPath:g.string()}),yo=g.object({clineVersion:g.string(),hookName:uo,timestamp:g.string(),taskId:g.string(),sessionContext:g.object({rootSessionId:g.string().optional(),hookLogPath:g.string().optional()}).optional(),workspaceRoots:g.array(g.string()),workspaceInfo:g.custom().optional(),userId:g.string(),agent_id:g.string(),parent_agent_id:g.string().nullable(),iteration:g.number().optional(),reason:g.string().optional(),tool_call:g.object({id:g.string(),name:g.string(),input:g.unknown()}).optional(),tool_result:g.custom().optional(),turn:g.unknown().optional(),error:g.object({name:g.string(),message:g.string(),stack:g.string().optional()}).optional(),preToolUse:Oe.optional(),postToolUse:Qe.optional(),userPromptSubmit:je.optional(),taskStart:Ne.optional(),taskResume:Se.optional(),taskCancel:ve.optional(),taskComplete:xe.optional(),preCompact:ze.optional()}).passthrough();function nr(n){let o=yo.safeParse(n);if(!o.success)return;return o.data}var tl="v1",kl="v1",_l="v1",Al=["client.register","client.list","session.create","session.list","session.get","session.run","session.abort","schedule.create","schedule.list","settings.get","settings.set"];function ln(n){let o=/^v(\d+)$/.exec(n?.trim()??"");if(!o)return;return Number.parseInt(o[1]??"",10)}function Il(n,o="v1"){let e=ln(n.protocolVersion),d=ln(o);if(e===void 0||d===void 0)return{compatible:!1,reason:"missing_protocol"};let s=ln(n.minClientProtocolVersion)??e,c=ln(n.maxClientProtocolVersion)??e;return d>=s&&d<=c?{compatible:!0}:{compatible:!1,reason:"unsupported_protocol"}}var or=30000,El=5000;function er(n){switch(n){case"run.start":case"session.send_input":return null;default:return or}}function Rl(n,o){return o===void 0?er(n):o}var rr=["readFile","search","bash","webFetch","editor","applyPatch","skills","askQuestion","submit"],dr=new Set(rr);function ml(n){return typeof n==="string"&&dr.has(n)}var Bl="tool_executor.",Dl="custom_tool.",ql="hook.",Tl="compaction.compact",hl="checkpoint.create",$l="mistake_limit.decide",Ml="user_instructions.snapshot";function kn(n,o){return`<file_content path="${n}">
|
|
2
2
|
${o}
|
|
3
|
-
</file_content>`}function Ce(n,o="act"){return`<user_input mode="${o}">${n}</user_input>`}function xe(n,o){return`<user_command slash="${o}">${n}</user_command>`}function Ne(n,o){let e=n.trim(),d=new RegExp(`^<${o}\\b([^>]*)>([\\s\\S]*?)<\\/${o}>$`,"i").exec(e);if(!d)return;return{attrs:d[1]??"",content:d[2]??""}}function Se(n,o){return new RegExp(`${o}="([^"]+)"`,"i").exec(n)?.[1]?.trim()||void 0}function lo(n){if(!n?.trim())return;let o=Ne(n,"user_command");if(!o)return;let e=Se(o.attrs,"slash");if(!e)return;return{slash:e,content:o.content.trim()}}function go(n){if(!n?.trim())return"";let o=n.trim();for(let e of["user_input","user_command"]){let d=to(o,e);o=(d!==o?d:o.replace(new RegExp(`<${e}[^>]*>`,"g"),"")).trim()}return o}function ae(n){let o=go(n),e=lo(n);if(!e)return o;if(e.slash.toLowerCase()==="team"){let l=o.toLowerCase().startsWith("spawn a team of agents for the following task:")?o.slice(46).trim():o;return l?`/team ${l}`:"/team"}return o?`/${e.slash} ${o}`:`/${e.slash}`}function to(n,o){if(!n?.trim())return"";if(!o)return n;let e=new RegExp(`<${o}\\b[^>]*>([\\s\\S]*?)</${o}>`,"g");return n.replace(e,"$1")}var Q="[media omitted: invalid or exceeds size limit]",sn=["image/png","image/jpeg","image/gif","image/webp"],pe=5242880,H=5242880,W=6291456,ve=8388608;function ze(n){return n.length}function co(n){let o=n.endsWith("==")?2:n.endsWith("=")?1:0;return Math.floor(n.length*3/4)-o}function nr(n=5242880){return Math.floor(n*3/4)}function In(n){return Math.ceil(n/3)*4}function _o(n={}){return{maxImageEncodedBytes:n.maxImageEncodedBytes??5242880,maxImageDecodedBytes:n.maxImageDecodedBytes??6291456,maxTotalMediaBytes:n.maxTotalMediaBytes??8388608}}function ln(){return{totalEncodedBytes:0,keptImages:0,omittedImages:0,omittedReasons:{}}}function fn(n,o){n.omittedImages+=1,n.omittedReasons[o]=(n.omittedReasons[o]??0)+1}function N(n,o,e,d){let l=_o(e);if(n>l.maxImageEncodedBytes){let t={ok:!1,reason:"encoded_limit",message:`Image media exceeds the ${l.maxImageEncodedBytes} byte encoded limit`};return fn(d,t.reason),t}if(o>l.maxImageDecodedBytes){let t={ok:!1,reason:"decoded_limit",message:`Image media exceeds the ${l.maxImageDecodedBytes} byte decoded limit`};return fn(d,t.reason),t}if(d.totalEncodedBytes+n>l.maxTotalMediaBytes){let t={ok:!1,reason:"total_limit",message:`Image media exceeds the ${l.maxTotalMediaBytes} byte total media limit`};return fn(d,t.reason),t}return d.totalEncodedBytes+=n,d.keptImages+=1,null}function wo(n){return n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57||n===43||n===47}function or(n){return n.length>0&&yo(n,0,n.length)}function yo(n,o,e){let d=e-o;if(d%4!==0)return!1;let l=e;if(d>=2&&n.charCodeAt(e-2)===61&&n.charCodeAt(e-1)===61)l-=2;else if(d>=1&&n.charCodeAt(e-1)===61)l-=1;for(let t=o;t<l;t++)if(!wo(n.charCodeAt(t)))return!1;for(let t=l;t<e;t++)if(n.charCodeAt(t)!==61)return!1;return!0}function er(n,o,e){return e-o>=5&&(n.charCodeAt(o)|32)===100&&(n.charCodeAt(o+1)|32)===97&&(n.charCodeAt(o+2)|32)===116&&(n.charCodeAt(o+3)|32)===97&&n.charCodeAt(o+4)===58}function rr(n){let o=0,e=n.length;while(o<e&&/\s/.test(n[o]??""))o+=1;while(e>o&&/\s/.test(n[e-1]??""))e-=1;return{start:o,end:e}}function dr(n,o,e){if(!er(n,o,e))return;let d=o+5,l=n.indexOf(",",d);if(l===-1||l>=e)return;if(l-d>128)return;let t=n.slice(d,l).toLowerCase(),g=";base64";if(!t.endsWith(g))return;let y=t.slice(0,-g.length);if(!y||y.includes(";"))return;return{mediaType:y,base64Start:l+1,base64End:e}}function Eo(n,o,e={}){let d=e.maxEncodedBytes??5242880,l=e.maxDecodedBytes??6291456,t=new Set(e.supportedMediaTypes??sn),g=n?.toLowerCase(),y=rr(o),E=y.start,w=y.end,B=dr(o,y.start,y.end);if(B){if(g&&g!==B.mediaType)return{ok:!1,reason:"media_type_mismatch",message:`Image media type ${n} does not match data URL type ${B.mediaType}`};g=B.mediaType,E=B.base64Start,w=B.base64End}if(!g||!t.has(g))return{ok:!1,reason:"unsupported_media_type",message:`Unsupported image media type: ${n??"unknown"}`};let M=w-E;if(M===0)return{ok:!1,reason:"invalid_base64",message:"Image media must contain valid base64"};if(M>d)return{ok:!1,reason:"encoded_limit",message:`Image media exceeds the ${d} byte encoded limit`};if(!yo(o,E,w))return{ok:!1,reason:"invalid_base64",message:"Image media must contain valid base64"};let i=o.slice(E,w),L=co(i);if(L>l)return{ok:!1,reason:"decoded_limit",message:`Image media exceeds the ${l} byte decoded limit`};return{ok:!0,mediaType:g,base64:i,encodedBytes:M,decodedBytes:L}}function S(n,o,e,d){let l=Eo(n,o,{maxEncodedBytes:e.maxImageEncodedBytes,maxDecodedBytes:e.maxImageDecodedBytes});if(!l.ok)return fn(d,l.reason),l;let t=N(l.encodedBytes,l.decodedBytes,e,d);if(t)return t;return l}function F(n){return n.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,"�")}var An="ERROR: EMPTY CONTENT",fr="[image attached]";function Bo(n,o){let e=n[n.length-1];if(o.role==="tool"&&e?.role==="tool"&&Array.isArray(e.content)&&Array.isArray(o.content)){e.content.push(...o.content);return}n.push(o)}function sr(n){if(!Array.isArray(n)||n.length===0)return!1;return n.every((o)=>{if(!o||typeof o!=="object")return!1;let e=o;if(e.type==="text")return typeof e.text==="string";if(e.type==="image")return typeof e.data==="string"&&typeof e.mediaType==="string";return!1})}function O(){return{type:"text",text:Q}}function Io(n){return N(H,0,{maxImageEncodedBytes:H,maxImageDecodedBytes:W},n)===null}function lr(n){try{return new URL(n).protocol}catch{return}}function Dn(n,o){let e=S(n.mediaType,n.data,{maxImageEncodedBytes:H,maxImageDecodedBytes:W},o);if(!e.ok)return O();return{type:"image-data",data:e.base64,mediaType:e.mediaType}}function gr(n,o){if(n.image instanceof URL){if(n.image.protocol==="data:"){let g=S(n.mediaType,n.image.href,{maxImageEncodedBytes:H,maxImageDecodedBytes:W},o);if(!g.ok)return O();return{type:"image",image:`data:${g.mediaType};base64,${g.base64}`,mediaType:g.mediaType}}if(n.image.protocol!=="http:"&&n.image.protocol!=="https:")return O();if(!Io(o))return O();return{type:"image",image:n.image,mediaType:n.mediaType}}if(typeof n.image==="string"){let g=lr(n.image);if(g==="http:"||g==="https:"){if(!Io(o))return O();return{type:"image",image:n.image,mediaType:n.mediaType}}let y=g==="data:",E=S(n.mediaType??(y?void 0:"image/png"),n.image,{maxImageEncodedBytes:H,maxImageDecodedBytes:W},o);if(!E.ok)return O();return{type:"image",image:y?`data:${E.mediaType};base64,${E.base64}`:E.base64,mediaType:E.mediaType}}let e=n.image.byteLength,d=In(e),l=n.mediaType?.toLowerCase()??"image/png";if(!sn.includes(l)||N(d,e,{maxImageEncodedBytes:H,maxImageDecodedBytes:W},o))return O();return{type:"image",image:n.image,mediaType:l}}function kn(n,o,e,d=!0){if(n==null||typeof n!=="object")return{value:n,changed:!1,mediaChanged:!1};if(Array.isArray(n)){let E=[],w=!1,B=!1;for(let M of n){if(M&&typeof M==="object"){let L=M;if(L.type==="image"&&typeof L.data==="string"&&typeof L.mediaType==="string"){if(!d){E.push(Q),w=!0,B=!0;continue}let nn={type:"image",data:L.data,mediaType:L.mediaType},P=Dn(nn,e);if(P.type==="image-data")o.push({type:"image",data:P.data,mediaType:P.mediaType});else E.push(P.text);w=!0,B=!0;continue}if(L.type==="image"){E.push(Q),w=!0,B=!0;continue}if(L.type==="text"&&typeof L.text==="string"){E.push(L.text),w=!0;continue}}let i=kn(M,o,e,d);E.push(i.value),w||=i.changed,B||=i.mediaChanged}return{value:w?E:n,changed:w,mediaChanged:B}}let l=n;if(l.type==="image"){if(typeof l.data==="string"&&typeof l.mediaType==="string"){if(!d)return{value:Q,changed:!0,mediaChanged:!0};let E={type:"image",data:l.data,mediaType:l.mediaType},w=Dn(E,e);if(w.type==="image-data")return o.push({type:"image",data:w.data,mediaType:w.mediaType}),{value:fr,changed:!0,mediaChanged:!0};return{value:w.text,changed:!0,mediaChanged:!0}}return{value:Q,changed:!0,mediaChanged:!0}}let t={},g=!1,y=!1;for(let[E,w]of Object.entries(l)){let B=kn(w,o,e,d);t[E]=B.value,g||=B.changed,y||=B.mediaChanged}return{value:g?t:n,changed:g,mediaChanged:y}}function a(n){if(typeof n==="string")return F(n);if(Array.isArray(n))return n.map((o)=>a(o));if(n!==null&&typeof n==="object"){let o=n,e={};for(let[d,l]of Object.entries(o))e[d]=a(l);return e}return n}function Ao(n,o=!1,e=ln()){if(typeof n==="string")return{type:o?"error-text":"text",value:F(n)};if(!o&&sr(n))return{type:"content",value:n.map((d)=>d.type==="image"?Dn(d,e):{type:"text",text:F(d.text)})};if(n!==null&&typeof n==="object"){let d=[],l=kn(n,d,e,!o);if(!o&&d.length>0)return{type:"content",value:[{type:"text",text:typeof l.value==="string"?F(l.value):JSON.stringify(a(l.value))},...d.map((g)=>({type:"image-data",data:g.data,mediaType:g.mediaType}))]};if(l.mediaChanged)return{type:o?"error-json":"json",value:a(l.value)}}if(n===null||typeof n==="boolean"||typeof n==="number"||typeof n==="object")return{type:o?"error-json":"json",value:a(n)};return{type:o?"error-text":"text",value:F(String(n))}}function tr(n,o,e){let d=e?.assistantToolCallArgKey??"input",l=[],t=ln();if(typeof n==="string"&&n.trim().length>0||Array.isArray(n)&&n.length>0)l.push({role:"system",content:typeof n==="string"?F(n):n});for(let g of o){let y=g.content;if(typeof y==="string"){if(y.trim().length===0){l.push({role:g.role,content:[{type:"text",text:An}]});continue}l.push({role:g.role,content:F(y)});continue}let E=[],w=[];if(y.length===0){l.push({role:g.role,content:[{type:"text",text:An}]});continue}for(let B of y)switch(B.type){case"text":E.push({type:"text",text:F(B.text),...B.providerOptions?{providerOptions:B.providerOptions}:{}});break;case"reasoning":E.push({type:"reasoning",text:F(B.text),...B.providerOptions?{providerOptions:B.providerOptions}:{}});break;case"image":E.push(gr(B,t));break;case"file":E.push({type:"text",text:Bn(B.path,F(B.content))});break;case"tool-call":if(g.role==="assistant")E.push({type:"tool-call",toolCallId:B.toolCallId,toolName:B.toolName,[d]:B.input,...B.providerOptions?{providerOptions:B.providerOptions}:{}});break;case"tool-result":{w.push({type:"tool-result",toolCallId:B.toolCallId,toolName:B.toolName,output:Ao(B.output,B.isError??!1,t)});break}}if(E.length>0)Bo(l,{role:g.role,content:E});if(w.length>0)Bo(l,{role:"tool",content:w})}return l}function Do(n){return typeof n==="object"&&n!==null&&!Array.isArray(n)}function cr(n,o){if(!n&&!o)return;let e=n?.metadata,d=o?.metadata,l={...n??{},...o??{}};if(Do(e)&&Do(d))l.metadata={...e,...d};return l}var p={xhigh:0.95,high:0.8,medium:0.5,low:0.2,minimal:0.1,none:0},_r=void 0;function wr(n,o){if(typeof n==="string"&&n.toLowerCase()in p)return n.toLowerCase();return o?void 0:void 0}function ko(n,o){let e=typeof n==="string"?n.toLowerCase():void 0;if(e&&e in p)return p[e];if(o?.fallbackEffort)return p[o.fallbackEffort];return}function yr(n){let o=ko(n.effort,{fallbackEffort:n.fallbackEffort});if(o===void 0)return;if(o<=0)return 0;let e=n.minimumBudget??1;if(n.maxBudget<e)return;let d=n.scaleTokens??n.maxBudget;return Math.min(Math.max(Math.floor(d*o),e),n.maxBudget)}var Er={"HTTP-Referer":"https://cline.bot","X-Title":"Cline","X-IS-MULTIROOT":"false","X-CLIENT-TYPE":"cline-sdk"};function Br(n){return n instanceof Error?{name:n.name,message:n.message}:n}function Ir(n){return Math.max(1,Math.ceil(n/3))}var Ar={debug:()=>{},log:()=>{},error:()=>{}};class T extends Error{constructor(n,o){super(`${n} at position ${o}`);this.position=o}}function uo(n){return/^[0-9A-Fa-f]$/.test(n)}function V(n){return n>="0"&&n<="9"}function Ro(n){return n>=" "}function v(n){return`,:[]/{}()
|
|
4
|
-
+`.includes(n)}function
|
|
5
|
-
+`.includes(n)}function
|
|
6
|
-
`||n==="\r"||n==="\t"||n==="\b"||n==="\f"}function
|
|
7
|
-
`,r:"\r",t:"\t"};function
|
|
8
|
-
`)o++;return!0}return!1}function
|
|
3
|
+
</file_content>`}function lr(n,o="act"){return`<user_input mode="${o}">${n}</user_input>`}function sr(n,o){return`<user_command slash="${o}">${n}</user_command>`}function fr(n,o){let e=n.trim(),d=new RegExp(`^<${o}\\b([^>]*)>([\\s\\S]*?)<\\/${o}>$`,"i").exec(e);if(!d)return;return{attrs:d[1]??"",content:d[2]??""}}function ir(n,o){return new RegExp(`${o}="([^"]+)"`,"i").exec(n)?.[1]?.trim()||void 0}function ao(n){if(!n?.trim())return;let o=fr(n,"user_command");if(!o)return;let e=ir(o.attrs,"slash");if(!e)return;return{slash:e,content:o.content.trim()}}function bo(n){if(!n?.trim())return"";let o=n.trim();for(let e of["user_input","user_command"]){let d=wo(o,e);o=(d!==o?d:o.replace(new RegExp(`<${e}[^>]*>`,"g"),"")).trim()}return o}function cr(n){let o=bo(n),e=ao(n);if(!e)return o;if(e.slash.toLowerCase()==="team"){let s=o.toLowerCase().startsWith("spawn a team of agents for the following task:")?o.slice(46).trim():o;return s?`/team ${s}`:"/team"}return o?`/${e.slash} ${o}`:`/${e.slash}`}function wo(n,o){if(!n?.trim())return"";if(!o)return n;let e=new RegExp(`<${o}\\b[^>]*>([\\s\\S]*?)</${o}>`,"g");return n.replace(e,"$1")}var X="[media omitted: invalid or exceeds size limit]",fn=["image/png","image/jpeg","image/gif","image/webp"],gr=5242880,Y=5242880,C=6291456,ur=8388608;function yr(n){return n.length}function to(n){let o=n.endsWith("==")?2:n.endsWith("=")?1:0;return Math.floor(n.length*3/4)-o}function ar(n=5242880){return Math.floor(n*3/4)}function _n(n){return Math.ceil(n/3)*4}function ko(n={}){return{maxImageEncodedBytes:n.maxImageEncodedBytes??5242880,maxImageDecodedBytes:n.maxImageDecodedBytes??6291456,maxTotalMediaBytes:n.maxTotalMediaBytes??8388608}}function cn(){return{totalEncodedBytes:0,keptImages:0,omittedImages:0,omittedReasons:{}}}function sn(n,o){n.omittedImages+=1,n.omittedReasons[o]=(n.omittedReasons[o]??0)+1}function v(n,o,e,d){let s=ko(e);if(n>s.maxImageEncodedBytes){let c={ok:!1,reason:"encoded_limit",message:`Image media exceeds the ${s.maxImageEncodedBytes} byte encoded limit`};return sn(d,c.reason),c}if(o>s.maxImageDecodedBytes){let c={ok:!1,reason:"decoded_limit",message:`Image media exceeds the ${s.maxImageDecodedBytes} byte decoded limit`};return sn(d,c.reason),c}if(d.totalEncodedBytes+n>s.maxTotalMediaBytes){let c={ok:!1,reason:"total_limit",message:`Image media exceeds the ${s.maxTotalMediaBytes} byte total media limit`};return sn(d,c.reason),c}return d.totalEncodedBytes+=n,d.keptImages+=1,null}function _o(n){return n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57||n===43||n===47}function br(n){return n.length>0&&Ao(n,0,n.length)}function Ao(n,o,e){let d=e-o;if(d%4!==0)return!1;let s=e;if(d>=2&&n.charCodeAt(e-2)===61&&n.charCodeAt(e-1)===61)s-=2;else if(d>=1&&n.charCodeAt(e-1)===61)s-=1;for(let c=o;c<s;c++)if(!_o(n.charCodeAt(c)))return!1;for(let c=s;c<e;c++)if(n.charCodeAt(c)!==61)return!1;return!0}function wr(n,o,e){return e-o>=5&&(n.charCodeAt(o)|32)===100&&(n.charCodeAt(o+1)|32)===97&&(n.charCodeAt(o+2)|32)===116&&(n.charCodeAt(o+3)|32)===97&&n.charCodeAt(o+4)===58}function tr(n){let o=0,e=n.length;while(o<e&&/\s/.test(n[o]??""))o+=1;while(e>o&&/\s/.test(n[e-1]??""))e-=1;return{start:o,end:e}}function kr(n,o,e){if(!wr(n,o,e))return;let d=o+5,s=n.indexOf(",",d);if(s===-1||s>=e)return;if(s-d>128)return;let c=n.slice(d,s).toLowerCase(),i=";base64";if(!c.endsWith(i))return;let b=c.slice(0,-i.length);if(!b||b.includes(";"))return;return{mediaType:b,base64Start:s+1,base64End:e}}function Io(n,o,e={}){let d=e.maxEncodedBytes??5242880,s=e.maxDecodedBytes??6291456,c=new Set(e.supportedMediaTypes??fn),i=n?.toLowerCase(),b=tr(o),w=b.start,u=b.end,t=kr(o,b.start,b.end);if(t){if(i&&i!==t.mediaType)return{ok:!1,reason:"media_type_mismatch",message:`Image media type ${n} does not match data URL type ${t.mediaType}`};i=t.mediaType,w=t.base64Start,u=t.base64End}if(!i||!c.has(i))return{ok:!1,reason:"unsupported_media_type",message:`Unsupported image media type: ${n??"unknown"}`};let B=u-w;if(B===0)return{ok:!1,reason:"invalid_base64",message:"Image media must contain valid base64"};if(B>d)return{ok:!1,reason:"encoded_limit",message:`Image media exceeds the ${d} byte encoded limit`};if(!Ao(o,w,u))return{ok:!1,reason:"invalid_base64",message:"Image media must contain valid base64"};let D=o.slice(w,u),q=to(D);if(q>s)return{ok:!1,reason:"decoded_limit",message:`Image media exceeds the ${s} byte decoded limit`};return{ok:!0,mediaType:i,base64:D,encodedBytes:B,decodedBytes:q}}function x(n,o,e,d){let s=Io(n,o,{maxEncodedBytes:e.maxImageEncodedBytes,maxDecodedBytes:e.maxImageDecodedBytes});if(!s.ok)return sn(d,s.reason),s;let c=v(s.encodedBytes,s.decodedBytes,e,d);if(c)return c;return s}function h(n){return n.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,"�")}var An="ERROR: EMPTY CONTENT",_r="[image attached]";function Eo(n,o){let e=n[n.length-1];if(o.role==="tool"&&e?.role==="tool"&&Array.isArray(e.content)&&Array.isArray(o.content)){e.content.push(...o.content);return}n.push(o)}function Ar(n){if(!Array.isArray(n)||n.length===0)return!1;return n.every((o)=>{if(!o||typeof o!=="object")return!1;let e=o;if(e.type==="text")return typeof e.text==="string";if(e.type==="image")return typeof e.data==="string"&&typeof e.mediaType==="string";return!1})}function Z(){return{type:"text",text:X}}function Ro(n){return v(Y,0,{maxImageEncodedBytes:Y,maxImageDecodedBytes:C},n)===null}function Ir(n){try{return new URL(n).protocol}catch{return}}function In(n,o){let e=x(n.mediaType,n.data,{maxImageEncodedBytes:Y,maxImageDecodedBytes:C},o);if(!e.ok)return Z();return{type:"image-data",data:e.base64,mediaType:e.mediaType}}function Er(n,o){if(n.image instanceof URL){if(n.image.protocol==="data:"){let i=x(n.mediaType,n.image.href,{maxImageEncodedBytes:Y,maxImageDecodedBytes:C},o);if(!i.ok)return Z();return{type:"image",image:`data:${i.mediaType};base64,${i.base64}`,mediaType:i.mediaType}}if(n.image.protocol!=="http:"&&n.image.protocol!=="https:")return Z();if(!Ro(o))return Z();return{type:"image",image:n.image,mediaType:n.mediaType}}if(typeof n.image==="string"){let i=Ir(n.image);if(i==="http:"||i==="https:"){if(!Ro(o))return Z();return{type:"image",image:n.image,mediaType:n.mediaType}}let b=i==="data:",w=x(n.mediaType??(b?void 0:"image/png"),n.image,{maxImageEncodedBytes:Y,maxImageDecodedBytes:C},o);if(!w.ok)return Z();return{type:"image",image:b?`data:${w.mediaType};base64,${w.base64}`:w.base64,mediaType:w.mediaType}}let e=n.image.byteLength,d=_n(e),s=n.mediaType?.toLowerCase()??"image/png";if(!fn.includes(s)||v(d,e,{maxImageEncodedBytes:Y,maxImageDecodedBytes:C},o))return Z();return{type:"image",image:n.image,mediaType:s}}function En(n,o,e,d=!0){if(n==null||typeof n!=="object")return{value:n,changed:!1,mediaChanged:!1};if(Array.isArray(n)){let w=[],u=!1,t=!1;for(let B of n){if(B&&typeof B==="object"){let q=B;if(q.type==="image"&&typeof q.data==="string"&&typeof q.mediaType==="string"){if(!d){w.push(X),u=!0,t=!0;continue}let en={type:"image",data:q.data,mediaType:q.mediaType},W=In(en,e);if(W.type==="image-data")o.push({type:"image",data:W.data,mediaType:W.mediaType});else w.push(W.text);u=!0,t=!0;continue}if(q.type==="image"){w.push(X),u=!0,t=!0;continue}if(q.type==="text"&&typeof q.text==="string"){w.push(q.text),u=!0;continue}}let D=En(B,o,e,d);w.push(D.value),u||=D.changed,t||=D.mediaChanged}return{value:u?w:n,changed:u,mediaChanged:t}}let s=n;if(s.type==="image"){if(typeof s.data==="string"&&typeof s.mediaType==="string"){if(!d)return{value:X,changed:!0,mediaChanged:!0};let w={type:"image",data:s.data,mediaType:s.mediaType},u=In(w,e);if(u.type==="image-data")return o.push({type:"image",data:u.data,mediaType:u.mediaType}),{value:_r,changed:!0,mediaChanged:!0};return{value:u.text,changed:!0,mediaChanged:!0}}return{value:X,changed:!0,mediaChanged:!0}}let c={},i=!1,b=!1;for(let[w,u]of Object.entries(s)){let t=En(u,o,e,d);c[w]=t.value,i||=t.changed,b||=t.mediaChanged}return{value:i?c:n,changed:i,mediaChanged:b}}function z(n){if(typeof n==="string")return h(n);if(Array.isArray(n))return n.map((o)=>z(o));if(n!==null&&typeof n==="object"){let o=n,e={};for(let[d,s]of Object.entries(o))e[d]=z(s);return e}return n}function mo(n,o=!1,e=cn()){if(typeof n==="string")return{type:o?"error-text":"text",value:h(n)};if(!o&&Ar(n))return{type:"content",value:n.map((d)=>d.type==="image"?In(d,e):{type:"text",text:h(d.text)})};if(n!==null&&typeof n==="object"){let d=[],s=En(n,d,e,!o);if(!o&&d.length>0)return{type:"content",value:[{type:"text",text:typeof s.value==="string"?h(s.value):JSON.stringify(z(s.value))},...d.map((i)=>({type:"image-data",data:i.data,mediaType:i.mediaType}))]};if(s.mediaChanged)return{type:o?"error-json":"json",value:z(s.value)}}if(n===null||typeof n==="boolean"||typeof n==="number"||typeof n==="object")return{type:o?"error-json":"json",value:z(n)};return{type:o?"error-text":"text",value:h(String(n))}}function Rr(n,o,e){let d=e?.assistantToolCallArgKey??"input",s=[],c=cn();if(typeof n==="string"&&n.trim().length>0||Array.isArray(n)&&n.length>0)s.push({role:"system",content:typeof n==="string"?h(n):n});for(let i of o){let b=i.content;if(typeof b==="string"){if(b.trim().length===0){s.push({role:i.role,content:[{type:"text",text:An}]});continue}s.push({role:i.role,content:h(b)});continue}let w=[],u=[];if(b.length===0){s.push({role:i.role,content:[{type:"text",text:An}]});continue}for(let t of b)switch(t.type){case"text":w.push({type:"text",text:h(t.text),...t.providerOptions?{providerOptions:t.providerOptions}:{}});break;case"reasoning":w.push({type:"reasoning",text:h(t.text),...t.providerOptions?{providerOptions:t.providerOptions}:{}});break;case"image":w.push(Er(t,c));break;case"file":w.push({type:"text",text:kn(t.path,h(t.content))});break;case"tool-call":if(i.role==="assistant")w.push({type:"tool-call",toolCallId:t.toolCallId,toolName:t.toolName,[d]:t.input,...t.providerOptions?{providerOptions:t.providerOptions}:{}});break;case"tool-result":{u.push({type:"tool-result",toolCallId:t.toolCallId,toolName:t.toolName,output:mo(t.output,t.isError??!1,c)});break}}if(w.length>0)Eo(s,{role:i.role,content:w});if(u.length>0)Eo(s,{role:"tool",content:u})}return s}function Bo(n){return typeof n==="object"&&n!==null&&!Array.isArray(n)}function mr(n,o){if(!n&&!o)return;let e=n?.metadata,d=o?.metadata,s={...n??{},...o??{}};if(Bo(e)&&Bo(d))s.metadata={...e,...d};return s}var nn={xhigh:0.95,high:0.8,medium:0.5,low:0.2,minimal:0.1,none:0},Br=void 0;function Dr(n,o){if(typeof n==="string"&&n.toLowerCase()in nn)return n.toLowerCase();return o?void 0:void 0}function Do(n,o){let e=typeof n==="string"?n.toLowerCase():void 0;if(e&&e in nn)return nn[e];if(o?.fallbackEffort)return nn[o.fallbackEffort];return}function qr(n){let o=Do(n.effort,{fallbackEffort:n.fallbackEffort});if(o===void 0)return;if(o<=0)return 0;let e=n.minimumBudget??1;if(n.maxBudget<e)return;let d=n.scaleTokens??n.maxBudget;return Math.min(Math.max(Math.floor(d*o),e),n.maxBudget)}var Tr={"HTTP-Referer":"https://cline.bot","X-Title":"Cline","X-IS-MULTIROOT":"false","X-CLIENT-TYPE":"cline-sdk"};function hr(n){return n instanceof Error?{name:n.name,message:n.message}:n}function $r(n){return Math.max(1,Math.ceil(n/3))}var Mr={debug:()=>{},log:()=>{},error:()=>{}};class P extends Error{constructor(n,o){super(`${n} at position ${o}`);this.position=o}}function qo(n){return/^[0-9A-Fa-f]$/.test(n)}function L(n){return n>="0"&&n<="9"}function To(n){return n>=" "}function O(n){return`,:[]/{}()
|
|
4
|
+
+`.includes(n)}function Rn(n){return n>="a"&&n<="z"||n>="A"&&n<="Z"||n==="_"||n==="$"}function gn(n){return n>="a"&&n<="z"||n>="A"&&n<="Z"||n==="_"||n==="$"||n>="0"&&n<="9"}var mn=/^(http|https|ftp|mailto|file|data|irc):\/\/$/,Bn=/^[A-Za-z0-9-._~:/?#@!$&'()*+;=]$/;function Dn(n){return`,[]/{}
|
|
5
|
+
+`.includes(n)}function qn(n){return on(n)||Ur.test(n)}var Ur=/^[[{\w-]$/;function ho(n){return n===`
|
|
6
|
+
`||n==="\r"||n==="\t"||n==="\b"||n==="\f"}function F(n,o){let e=n.charCodeAt(o);return e===32||e===10||e===9||e===13}function $o(n,o){let e=n.charCodeAt(o);return e===32||e===9||e===13}function Mo(n,o){let e=n.charCodeAt(o);return e===160||e===6158||e>=8192&&e<=8203||e===8239||e===8287||e===12288||e===65279}function on(n){return Tn(n)||un(n)}function Tn(n){return n==='"'||n==="“"||n==="”"}function hn(n){return n==='"'}function un(n){return n==="'"||n==="‘"||n==="’"||n==="`"||n==="´"}function $n(n){return n==="'"}function Q(n,o){let e=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,d=n.lastIndexOf(o);return d!==-1?n.substring(0,d)+(e?"":n.substring(d+1)):n}function T(n,o){let e=n.length;if(!F(n,e-1))return n+o;while(F(n,e-1))e--;return n.substring(0,e)+o+n.substring(e)}function Uo(n,o,e){return n.substring(0,o)+n.substring(o+e)}function Fo(n){return/[,\n][ \t\r]*$/.test(n)}function K(n,o){let e=0;for(let d=0;d<n.length;d++)if(n.charAt(d)===o)e++;return e}function Lo(n,o){switch(o){case")":return K(n,"(")>K(n,")");case"]":return K(n,"[")>K(n,"]");case"}":return K(n,"{")>K(n,"}");default:return!1}}var Fr={"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t"},Lr={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
|
|
7
|
+
`,r:"\r",t:"\t"};function Mn(n){let o=0,e="";if(u(["```","[```","{```"]),!c())me();u(["```","```]","```}"]);let s=B(",");if(s)i();if(qn(n[o])&&Fo(e)){if(!s)e=T(e,",");ke()}else if(s)e=Q(e,",");while(n[o]==="}"||n[o]==="]")o++,i();if(o>=n.length)return e;Re();function c(){i();let y=W()||te()||J()||R()||_e()||Wn(!1)||Ae();return i(),y}function i(){let y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,a=o,_=b(y);do if(_=w(),_)_=b(y);while(_);return o>a}function b(y){let a=y?F:$o,_="";while(!0)if(a(n,o))_+=n[o],o++;else if(Mo(n,o))_+=" ",o++;else break;if(_.length>0)return e+=_,!0;return!1}function w(){if(n[o]==="/"&&n[o+1]==="*"){while(o<n.length&&!Gr(n,o))o++;return o+=2,!0}if(n[o]==="/"&&n[o+1]==="/"){while(o<n.length&&n[o]!==`
|
|
8
|
+
`)o++;return!0}return!1}function u(y){if(t(y)){if(Rn(n[o]))while(o<n.length&&gn(n[o]))o++;return i(),!0}return!1}function t(y){b(!0);for(let a of y){let _=o+a.length;if(n.slice(o,_)===a)return o=_,!0}return!1}function B(y){if(n[o]===y)return e+=n[o],o++,!0;return!1}function D(y){if(n[o]===y)return o++,!0;return!1}function q(){return D("\\")}function en(){if(i(),n[o]==="."&&n[o+1]==="."&&n[o+2]===".")return o+=3,i(),D(","),!0;return!1}function W(){if(n[o]==="{"){if(e+="{",o++,i(),D(","))i();let y=!0;while(o<n.length&&n[o]!=="}"){let a;if(!y){if(a=B(","),!a)e=T(e,",");i()}else a=!0;if(en(),!(J()||Wn(!0))){if(n[o]==="}"||n[o]==="{"||n[o]==="]"||n[o]==="["||n[o]===void 0){if(!y)e=Q(e,",")}else Be();break}i();let rn=B(":"),H=o>=n.length;if(!rn)if(qn(n[o])||H)e=T(e,":");else Kn();if(!c())if(rn||H)e+="null";else Kn();y=!1}if(n[o]==="}")e+="}",o++;else e=T(e,"}");return!0}return!1}function te(){if(n[o]==="["){if(e+="[",o++,i(),D(","))i();let y=!0;while(o<n.length&&n[o]!=="]"){if(!y){if(!B(","))e=T(e,",")}if(en(),!c()){if(!y)e=Q(e,",");break}y=!1}if(n[o]==="]")e+="]",o++;else e=T(e,"]");return!0}return!1}function ke(){let y=!0,a=!0;while(a){if(!y){if(!B(","))e=T(e,",")}else y=!1;a=c()}if(!a)e=Q(e,",");e=`[
|
|
9
9
|
${e}
|
|
10
|
-
]`}function
|
|
11
|
-
`)
|
|
10
|
+
]`}function J(){let y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,_=n[o]==="\\";if(_)o++,_=!0;if(on(n[o])){let rn=hn(n[o])?hn:$n(n[o])?$n:un(n[o])?un:Tn,H=o,S=e.length,I='"';o++;while(!0){if(o>=n.length){let m=Jn(o-1);if(!y&&O(n.charAt(m)))return o=H,e=e.substring(0,S),J(!0);return I=T(I,'"'),e+=I,!0}if(o===a)return I=T(I,'"'),e+=I,!0;if(rn(n[o])){let m=o,bn=I.length;if(I+='"',o++,e+=I,i(!1),y||o>=n.length||O(n[o])&&!Lo(I,n[o])||on(n[o])&&!Ie(o)||L(n[o]))return Zn(),!0;let G=Jn(m-1),On=n.charAt(G);if(On===",")return o=H,e=e.substring(0,S),J(!1,G);if(O(On))return o=H,e=e.substring(0,S),J(!0);e=e.substring(0,S),o=m+1,I=`${I.substring(0,bn)}\\${I.substring(bn)}`}else if(y&&Dn(n[o])){if(n[o-1]===":"&&mn.test(n.substring(H+1,o+2)))while(o<n.length&&Bn.test(n[o]))I+=n[o],o++;return I=T(I,'"'),e+=I,Zn(),!0}else if(n[o]==="\\"){let m=n.charAt(o+1);if(Lr[m]!==void 0)I+=n.slice(o,o+2),o+=2;else if(m==="u"){let G=2;while(G<6&&qo(n[o+G]))G++;if(G===6)I+=n.slice(o,o+6),o+=6;else if(o+G>=n.length)o=n.length;else De()}else if(m===`
|
|
11
|
+
`)I+="\\n",o+=2;else I+=m,o+=2}else{let m=n.charAt(o);if(m==='"'&&n[o-1]!=="\\")I+=`\\${m}`,o++;else if(ho(m))I+=Fr[m],o++;else{if(!To(m))Ee(m);I+=m,o++}}if(_)q()}}return!1}function Zn(){let y=!1;i();while(n[o]==="+"){y=!0,o++,i(),e=Q(e,'"',!0);let a=e.length;if(J())e=Uo(e,a,1);else e=T(e,'"')}return y}function R(){let y=o,a="",_=!1;if(n[o]==="-"){if(a+=n[o],o++,!L(n[o])&&pn())a+="0"}if(n[o]==="0"&&L(n[o+1]))_=!0;while(L(n[o]))a+=n[o],o++;if(n[o]==="."){if(a===""||a==="-")a+="0";if(a+=n[o],o++,!L(n[o]))a+="0";while(L(n[o]))a+=n[o],o++}if(o>y){if(n[o]==="e"||n[o]==="E"){if(a==="-")_=!0;if(a+=n[o],o++,n[o]==="-"||n[o]==="+")a+=n[o],o++;if(!L(n[o]))a+="0";while(L(n[o]))a+=n[o],o++}if(!pn())return o=y,!1;return e+=_?`"${n.substring(y,o)}"`:a,!0}return!1}function _e(){return p("true","true")||p("false","false")||p("null","null")||p("True","true")||p("False","false")||p("None","null")}function p(y,a){if(n.slice(o,o+y.length)===y&&!gn(n[o+y.length]))return e+=a,o+=y.length,!0;return!1}function Wn(y){let a=o;if(Rn(n[o])){while(o<n.length&&gn(n[o]))o++;let _=o;while(F(n,_))_++;if(n[_]==="("){if(o=_+1,c(),n[o]===")"){if(o++,n[o]===";")o++}return!0}}while(o<n.length&&!Dn(n[o])&&!on(n[o])&&(!y||n[o]!==":"))o++;if(n[o-1]===":"&&mn.test(n.substring(a,o+2)))while(o<n.length&&Bn.test(n[o]))o++;if(o>a){while(F(n,o-1)&&o>0)o--;let _=n.slice(a,o);if(e+=_==="undefined"?"null":JSON.stringify(_),n[o]==='"')o++;return!0}}function Ae(){if(n[o]==="/"){let y=o;o++;while(o<n.length&&(n[o]!=="/"||n[o-1]==="\\"))o++;return o++,e+=JSON.stringify(n.substring(y,o)),!0}}function Jn(y){let a=y;while(a>0&&F(n,a))a--;return a}function Ie(y){let a=y+1;while(a<n.length&&F(n,a))a++;return a>=n.length||O(n[a])}function pn(){return o>=n.length||O(n[o])||F(n,o)}function Ee(y){throw new P(`Invalid character ${JSON.stringify(y)}`,o)}function Re(){throw new P(`Unexpected character ${JSON.stringify(n[o])}`,o)}function me(){throw new P("Unexpected end of json string",n.length)}function Be(){throw new P("Object key expected",o)}function Kn(){throw new P("Colon expected",o)}function De(){let y=n.slice(o,o+6);throw new P(`Invalid unicode character "${y}"`,o)}}function Gr(n,o){return n[o]==="*"&&n[o+1]==="/"}var Yr=/^\{\s*"([A-Za-z0-9_.$-]+)"\s*:\s*([\s\S]+?)\s*\}$/;function Pr(n){let o=n.match(Yr);if(!o)return;let[,e,d]=o,s=d.trim();if(!s)return;let c=s[0];if(c==='"'||c==="{"||c==="["||s==="true"||s==="false"||s==="null"||Number.isFinite(Number(s)))return;return JSON.parse(`{"${e}":${JSON.stringify(s)}}`)}var Hr=[(n)=>JSON.parse(n),(n)=>JSON.parse(Mn(n)),Pr];function Vr(n){if(typeof n!=="string")return n;let o=n.trimStart();if(o[0]!=="{"&&o[0]!=="[")return n;for(let e of Hr)try{let d=e(o);if(d!==void 0)return d}catch{}return n}function Xr(n){let o=new WeakSet;try{return JSON.stringify(n,(d,s)=>{if(typeof s==="bigint")return s.toString();if(s&&typeof s==="object"){if(o.has(s))return"[Circular]";o.add(s)}return s})??"null"}catch{return String(n)}}function Cr(n){try{return JSON.parse(n)}catch{return}}function j(n){return typeof n==="object"&&n!==null&&!Array.isArray(n)}function Zr(n){let o=n.type;if(typeof o==="string")return[o];return Array.isArray(o)?o.filter((e)=>typeof e==="string"):[]}function Un(n,o){if(Zr(n).includes(o))return!0;for(let d of["anyOf","oneOf","allOf"]){let s=n[d];if(Array.isArray(s)&&s.some((c)=>j(c)&&Un(c,o)))return!0}return!1}function Wr(n,o){if(typeof n!=="string")return n;let e=n.trim(),d=Un(o,"array"),s=Un(o,"object");if((!d||!e.startsWith("["))&&(!s||!e.startsWith("{")))return n;try{let c=JSON.parse(e);if(Array.isArray(c))return d?c:n;if(j(c))return s?c:n;return n}catch{return n}}function Fn(n,o){let e=Wr(n,o);if(Array.isArray(e)){let i=o.items;if(!j(i))return e;let b=!1,w=e.map((u)=>{let t=Fn(u,i);return b||=t!==u,t});return b?w:e}if(!j(e))return e;let d=o.properties;if(!j(d))return e;let s=!1,c={...e};for(let[i,b]of Object.entries(d)){if(!(i in e)||!j(b))continue;let w=Fn(e[i],b);if(w!==e[i])c[i]=w,s=!0}return s?c:e}function Jr(n){return Object.fromEntries(Object.entries(n).filter(([,o])=>o!==void 0))}function pr(n){let o=n.replaceAll("\\","/"),e=o.lastIndexOf("/");return(e>=0?o.slice(e+1):o).toLowerCase()}function Kr(n){return n==="win32"?"powershell":"/bin/bash"}function Or(n,o){let e=pr(n);if(e==="powershell"||e==="powershell.exe"||e==="pwsh"||e==="pwsh.exe")return["-NoProfile","-NonInteractive","-Command",o];if(e==="cmd"||e==="cmd.exe")return["/d","/s","/c",o];return["-c",o]}function Qr(n){return n.toLowerCase().replace(/[^\w.-]+/g,"_")}function jr(n){let o=n?.trim();return o?o:void 0}function Go(n,o){if(n.length<=o)return n;return`${n.slice(0,o-1)}…`}function Nr(n,o="/",e=100){if(!n||n.length<=e)return n||"";let d=n.split(o)?.shift()?.trim()?.slice(0,e-1);return d?`${d}…`:Go(n,e)}function Sr(n){if(n.length<=8)return"****";return`${n.slice(0,4)}...${n.slice(-4)}`}function vr(n){if(!n)return"(unknown-date)";let o=new Date(n);if(Number.isNaN(o.getTime()))return n;return o.toLocaleString("en-US",{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!0})}function xr(n){let o=Math.max(0,Math.floor(n/1000)),e=Math.floor(o/86400),d=Math.floor(o%86400/3600),s=Math.floor(o%3600/60),c=o%60;if(e>0)return`${e}d ${d}h`;if(d>0)return`${d}h ${s}m`;if(s>0)return`${s}m ${c}s`;return`${c}s`}import{z as Yo}from"zod";function zr(n,o){let e=n.safeParse(o);if(!e.success)throw Error(Yo.prettifyError(e.error));return e.data}function Ln(n){return Yo.toJSONSchema(n)}function Gn(n){return n==="cline"||n==="cline-pass"}var Po=`You are Cline, an AI coding agent. Your primary goal is to assist users with various coding tasks by leveraging your knowledge and the tools at your disposal. Given the user's prompt, you should use the tools available to you to answer user's question.
|
|
12
12
|
|
|
13
13
|
Always gather all the necessary context before starting to work on a task. For example, if you are generating a unit test or new code, make sure you understand the requirement, the naming conventions, frameworks and libraries used and aligned in the current codebase, and the environment and commands used to run and test the code etc. Always validate the new unit test at the end including running the code if possible for live feedback.
|
|
14
14
|
Review each question carefully and answer it with detailed, accurate information.
|
|
@@ -43,7 +43,7 @@ When you have completed the task, please provide a summary of what you did and a
|
|
|
43
43
|
|
|
44
44
|
If user asked a simple question without any coding context, answer it directly without using any tools.
|
|
45
45
|
{{CLINE_RULES}}
|
|
46
|
-
{{CLINE_METADATA}}`,
|
|
46
|
+
{{CLINE_METADATA}}`,Ho=`You are Cline, a careful and helpful coding agent that works in the background.
|
|
47
47
|
You are tasked to solve an issue reported by the user who you cannot communicate with directly.
|
|
48
48
|
Your goal is to utilize the tools at your disposal to investigate and answer the question according to user's instructions with the aim to verify that the issue is resolved.
|
|
49
49
|
|
|
@@ -73,8 +73,8 @@ IMPORTANT:
|
|
|
73
73
|
- Always includes tool calls in your response until the task is completed. You should only end the task when all the requirements are met by calling the 'submit_and_exit' tool.
|
|
74
74
|
- Response without the submit_and_exit tool call will considered not completed and the task will continue.
|
|
75
75
|
{{CLINE_RULES}}
|
|
76
|
-
{{CLINE_METADATA}}`;var
|
|
77
|
-
${
|
|
78
|
-
${d}`}function
|
|
76
|
+
{{CLINE_METADATA}}`;var Yn="# Workspace Configuration";function Vo(n,o,e){if(e?.trim()?.includes(Yn))return e.trim();let d=e||JSON.stringify({workspaces:{[n]:{hint:o||n.split("/").at(-1)||n}}},null,2);return`
|
|
77
|
+
${Yn}
|
|
78
|
+
${d}`}function nd(n){let{ide:o="Terminal Shell",mode:e,platform:d="unknown",workspaceName:s,metadata:c,rules:i,overridePrompt:b,providerId:w}=n,u=n.workspaceRoot??n.rootPath??"",t=Gn(w||"");if(b?.trim()){let D=b.trim();if(t&&c?.trim()&&!D.includes(Yn))return`${D}
|
|
79
79
|
|
|
80
|
-
${qo(w,l,t)}`.trim();return i}return(e==="yolo"?Uo:Yo).replace("{{PLATFORM_NAME}}",d).replace("{{CWD}}",w).replace("{{CURRENT_DATE}}",new Date().toLocaleDateString()).replace("{{IDE_NAME}}",o).replace("{{CLINE_METADATA}}",B?qo(w,l,t):"").replace("{{CLINE_RULES}}",g||"").trim()}var Jr="remote://";import{z as f}from"zod";var Go=f.object({id:f.string(),temperature:f.number().optional(),isR1FormatRequired:f.boolean().optional(),maxTokens:f.number().optional(),contextWindow:f.number().optional(),inputPrice:f.number().optional(),outputPrice:f.number().optional(),supportsImages:f.boolean().optional()}),Ho=f.object({models:f.array(Go).optional(),openAiBaseUrl:f.string().optional(),openAiHeaders:f.record(f.string(),f.string()).optional(),azureApiVersion:f.string().optional(),azureIdentity:f.boolean().optional()}),To=f.object({id:f.string(),thinkingBudgetTokens:f.number().optional()}),Xo=f.object({name:f.string(),baseModelId:f.string(),thinkingBudgetTokens:f.number().optional()}),Vo=f.object({models:f.array(To).optional(),customModels:f.array(Xo).optional(),awsRegion:f.string().optional(),awsUseCrossRegionInference:f.boolean().optional(),awsUseGlobalInference:f.boolean().optional(),awsBedrockUsePromptCache:f.boolean().optional(),awsBedrockEndpoint:f.string().optional()}),Zo=f.object({id:f.string()}),Jo=f.object({models:f.array(Zo).optional()}),Qo=f.object({id:f.string(),thinkingBudgetTokens:f.number().optional()}),Wo=f.object({models:f.array(Qo).optional(),vertexProjectId:f.string().optional(),vertexRegion:f.string().optional()}),Oo=f.object({id:f.string(),thinkingBudgetTokens:f.number().optional(),promptCachingEnabled:f.boolean().optional()}),Po=f.object({models:f.array(Oo).optional(),baseUrl:f.string().optional()}),Ko=f.object({id:f.string(),thinkingBudgetTokens:f.number().optional()}),jo=f.object({models:f.array(Ko).optional(),baseUrl:f.string().optional()}),Qr=f.object({OpenAiCompatible:Ho.optional(),AwsBedrock:Vo.optional(),Cline:Jo.optional(),Vertex:Wo.optional(),LiteLLM:Po.optional(),Anthropic:jo.optional()}),ho=f.object({id:f.string()}),Co=f.object({name:f.string(),url:f.string(),alwaysEnabled:f.boolean().optional(),headers:f.record(f.string(),f.string()).optional()}),Tn=f.object({alwaysEnabled:f.boolean(),name:f.string(),contents:f.string()}),tn=f.object({bucket:f.string(),accessKeyId:f.string(),secretAccessKey:f.string(),region:f.string().optional(),endpoint:f.string().optional(),accountId:f.string().optional()}),xo=f.object({enabled:f.boolean().optional(),type:f.union([f.literal("s3_access_keys"),f.literal("r2_access_keys"),f.literal("azure_access_keys")]).optional(),s3AccessSettings:tn.optional(),r2AccessSettings:tn.optional(),azureAccessSettings:tn.optional()}),No=f.object({promptUploading:xo.optional()}),Wr=f.object({version:f.string(),providerSettings:Qr.optional(),telemetryEnabled:f.boolean().optional(),kanbanEnabled:f.boolean().optional(),mcpMarketplaceEnabled:f.boolean().optional(),allowedMCPServers:f.array(ho).optional(),remoteMCPServers:f.array(Co).optional(),blockPersonalRemoteMCPServers:f.boolean().optional(),yoloModeAllowed:f.boolean().optional(),openTelemetryEnabled:f.boolean().optional(),openTelemetryMetricsExporter:f.string().optional(),openTelemetryLogsExporter:f.string().optional(),openTelemetryOtlpProtocol:f.string().optional(),openTelemetryOtlpEndpoint:f.string().optional(),openTelemetryOtlpHeaders:f.record(f.string(),f.string()).optional(),openTelemetryOtlpMetricsProtocol:f.string().optional(),openTelemetryOtlpMetricsEndpoint:f.string().optional(),openTelemetryOtlpMetricsHeaders:f.record(f.string(),f.string()).optional(),openTelemetryOtlpLogsProtocol:f.string().optional(),openTelemetryOtlpLogsEndpoint:f.string().optional(),openTelemetryOtlpLogsHeaders:f.record(f.string(),f.string()).optional(),openTelemetryMetricExportInterval:f.number().optional(),openTelemetryOtlpInsecure:f.boolean().optional(),openTelemetryLogBatchSize:f.number().optional(),openTelemetryLogBatchTimeout:f.number().optional(),openTelemetryLogMaxQueueSize:f.number().optional(),enterpriseTelemetry:No.optional(),globalRules:f.array(Tn).optional(),globalWorkflows:f.array(Tn).optional()}),Or=f.record(f.string(),f.string());var Pr=4317;var Kr="127.0.0.1:4317";import Xn from"zod";var jr=Xn.enum(["reasoning","prompt-cache","tools","provider-tools","oauth","temperature","files","streaming","vision","computer-use","local-auth","popular"]),hr=Xn.enum(["anthropic","gemini","openai-chat","openai-responses","openai-r1","ai-sdk"]),Cr=Xn.enum(["anthropic","ai-sdk","ai-sdk-community","openai","openai-compatible","openai-r1","gemini","bedrock","custom","fetch","vertex"]);var xr="runtime.team.progress.v1",Nr="runtime.team.lifecycle.v1";var Sr="CLINE_ENVIRONMENT",ar="CLINE_ENVIRONMENT_OVERRIDE",Vn={production:{environment:"production",appBaseUrl:"https://app.cline.bot",apiBaseUrl:"https://api.cline.bot",mcpBaseUrl:"https://api.cline.bot/v1/mcp",workOsClientId:"client_01K3A541FN8TA3EPPHTD2325AR"},staging:{environment:"staging",appBaseUrl:"https://staging-app.cline.bot",apiBaseUrl:"https://core-api.staging.int.cline.bot",mcpBaseUrl:"https://core-api.staging.int.cline.bot/v1/mcp",workOsClientId:"client_01K3A5415VF6QBQBG3XYCW91G6"},local:{environment:"local",appBaseUrl:"http://localhost:3000",apiBaseUrl:"http://localhost:7777",mcpBaseUrl:"http://localhost:7777/v1/mcp",workOsClientId:"client_01K6XQAY7JK6T5HXVSZW2S5VYK"}},pr="production";function So(n){let o=n?.trim().toLowerCase();if(o==="production"||o==="staging"||o==="local")return o;return}function ao(){if(typeof process>"u"||!process?.env)return{};return process.env}function po(){let n=ao();return So(n.CLINE_ENVIRONMENT_OVERRIDE)??So(n.CLINE_ENVIRONMENT)??"production"}function vr(n){if(typeof n==="string")return Vn[n];return Vn[po()]}function zr(n,o){if(o.CLINE_API_BASE_URL)n={...n,apiBaseUrl:o.CLINE_API_BASE_URL,mcpBaseUrl:`${o.CLINE_API_BASE_URL}/v1/mcp`};return n}function nd(n){let o=vr(n);return zr(o,ao())}var od="sdk.error";function ed(n,o){if(!n)return;n.capture({event:o.event??"sdk.error",properties:zo(o)})}function zo(n){return{...n.context??{},component:n.component,operation:n.operation,severity:n.severity??"error",handled:n.handled??!0,...ne(n.error,n.messageLimit)}}function ne(n,o=500){let e=fd(n)?n:void 0,d=n instanceof Error?n:void 0,l=d?.message??vo(e?.message)??(typeof n==="string"?n:String(n)),t=sd(e?.code),g=Zn(e?.status)??Zn(e?.statusCode)??Zn(e?.responseStatus);return{error_type:d?.name?.trim()||vo(e?.name)||d?.constructor?.name||"Error",error_message:dd(rd(l),o),...t!==void 0?{error_code:t}:{},...g!==void 0?{error_status:g}:{}}}function rd(n){return n.replace(/(authorization=Bearer\s+)[^&\s]+/gi,"$1[redacted]").replace(/(api[_-]?key|access[_-]?token|refresh[_-]?token|authorization|password|secret)=([^&\s]+)/gi,"$1=[redacted]").replace(/(Bearer\s+)[A-Za-z0-9._~+/-]+=*/gi,"$1[redacted]").replace(/\/Users\/[^/\s]+/g,"/Users/[redacted]").replace(/\/home\/[^/\s]+/g,"/home/[redacted]").replace(/([A-Za-z]:[\\/]+Users[\\/]+)[^\\/\s]+/g,"$1[redacted]")}function dd(n,o){let e=Math.max(1,Math.floor(o));return n.length>e?n.substring(0,e):n}function fd(n){return typeof n==="object"&&n!==null}function vo(n){return typeof n==="string"&&n.trim().length>0?n:void 0}function sd(n){if(typeof n==="string"&&n.trim().length>0)return n;if(typeof n==="number"&&Number.isFinite(n))return n;return}function Zn(n){return typeof n==="number"&&Number.isFinite(n)?n:void 0}function oe(n){let o={};if(!n)return o;try{n.split(",").forEach((e)=>{let d=e.indexOf("=");if(d<=0)return;let l=decodeURIComponent(e.substring(0,d).trim()),t=decodeURIComponent(e.substring(d+1).trim());if(!l||!t)return;o[l]=t})}catch{}return o}function ld(){if(!process.env)return{enabled:!1};return{enabled:process.env.OTEL_TELEMETRY_ENABLED==="1"||process.env.OTEL_TELEMETRY_ENABLED==="true",metricsExporter:process.env.OTEL_METRICS_EXPORTER||"otlp",logsExporter:process.env.OTEL_LOGS_EXPORTER||"otlp",tracesExporter:process.env.OTEL_TRACES_EXPORTER,otlpProtocol:process.env.OTEL_EXPORTER_OTLP_PROTOCOL||"http/json",otlpEndpoint:process.env.OTEL_EXPORTER_OTLP_ENDPOINT,metricExportInterval:process.env.OTEL_METRIC_EXPORT_INTERVAL?Number.parseInt(process.env.OTEL_METRIC_EXPORT_INTERVAL,10):void 0,otlpHeaders:process.env.OTEL_EXPORTER_OTLP_HEADERS?oe(process.env.OTEL_EXPORTER_OTLP_HEADERS):void 0}}function ee(n={}){return{extension_version:"unknown",cline_type:"unknown",platform:"terminal",platform_version:process?.version||"unknown",os_type:process?.platform||"unknown",os_version:process?.platform==="win32"?process?.env?.OS??"unknown":"unknown",...n}}function gd(n={}){return{...ld(),...n,metadata:ee(n.metadata)}}function re(n){let o=n?.trim();return o?o:void 0}function td(n,o){if(!n)return;let e=typeof n==="function"?n(o):n;if(!e)return;let d=re(e.rootSessionId);if(!d)return;return{rootSessionId:d}}function cd(n){return re(n?.rootSessionId)}var _d=(n)=>crypto.getRandomValues(new Uint8Array(n)),wd=(n,o,e)=>{let d=256-256%n.length;if(d===256){let t=n.length-1;return(g=o)=>{if(!g)return"";let y="";while(!0){let E=e(g),w=g;while(w--)if(y+=n[E[w]&t],y.length>=g)return y}}}let l=Math.ceil(409.6*o/d);return(t=o)=>{if(!t)return"";let g="";while(!0){let y=e(l),E=l;while(E--)if(y[E]<d){if(g+=n[y[E]%n.length],g.length>=t)return g}}}},de=(n,o=21)=>wd(n,o|0,_d);function yd(n="",o=""){let e=de("1234567890abcdefghijklmnopqrstuvwxyz",10);return`${n}${Date.now()}_${e(5)}${o}`}var Ed=["idle","running","pending","completed","failed","cancelled"];var Jn=["rules","skills","workflows","plugins"],fe=Jn,Bd=new Set(Jn);function se(n){return typeof n==="string"&&Bd.has(n)}function Id(n){if(!Array.isArray(n))return;let o=n.map((e)=>typeof e==="string"?e.trim():"").filter(se);return[...new Set(o)]}function Ad(n,o){return new Set(n??fe).has(o)}import{z as Y}from"zod";var Dd=Y.object({rootPath:Y.string().min(1),hint:Y.string().min(1).optional(),associatedRemoteUrls:Y.array(Y.string().min(1)).optional(),latestGitCommitHash:Y.string().min(1).optional(),latestGitBranchName:Y.string().min(1).optional()}),kd=Y.object({currentWorkspacePath:Y.string().min(1).optional(),workspaces:Y.record(Y.string().min(1),Dd)});function gs(){return{workspaces:{}}}function ts(n,o){let e={...n,workspaces:{...n.workspaces,[o.rootPath]:o}};if(!e.currentWorkspacePath)e.currentWorkspacePath=o.rootPath;return kd.parse(e)}import{z as r}from"zod";var ud=["current_state","boundary_analysis","interface_proposal"],ws=3600000,ys=240,Es=400,U=r.preprocess((n)=>n instanceof Date?n.toISOString():n,r.string().datetime()),C=r.enum(["pending","in_progress","blocked","completed"]),le=r.enum(["queued","running","completed","failed","cancelled","interrupted"]),cn=r.enum(["draft","in_review","finalized"]),Rd=r.object({agentId:r.string(),role:r.enum(["lead","teammate"]),description:r.string().optional(),status:r.enum(["idle","running","stopped"])}),Bs=r.object({agentId:r.string(),rolePrompt:r.string(),modelId:r.string().optional(),maxIterations:r.number().optional()});function u(n){return r.preprocess((o)=>o===null?void 0:o,n.optional())}var Is=r.object({agentId:r.string().min(1).describe("Teammate identifier"),rolePrompt:r.string().min(1).describe("System prompt describing teammate role")}).strict(),As=r.object({agentId:r.string().min(1).describe("Teammate identifier"),reason:u(r.string().min(1)).describe("Optional shutdown reason")}),Ds=r.object({}),$d={create:["title","description"],list:[],claim:["taskId"],complete:["taskId","summary"],block:["taskId","reason"]},ks={create:["status","taskId","summary","reason"]},us=r.object({action:r.enum(["create","list","claim","complete","block"]),title:u(r.string().min(1)).describe("Task title"),description:u(r.string().min(1)).describe("Task details"),dependsOn:u(r.array(r.string().describe("Dependency task ID"))).describe("Array of dependency task IDs"),assignee:u(r.string().min(1)).describe("Optional assignee"),status:u(r.enum(["pending","in_progress","blocked","completed"])).describe("Optional task status filter"),taskId:u(r.string()).describe("Task ID"),summary:u(r.string().min(1)).describe("Completion summary"),reason:u(r.string().min(1)).describe("Blocking reason")}).superRefine((n,o)=>{for(let e of $d[n.action]){if(n[e]!==void 0)continue;o.addIssue({code:"custom",path:[e],message:`Field "${e}" is required when action=${n.action}`})}}),Rs=r.object({agentId:r.string().describe("Teammate agent ID"),task:r.string().min(1).describe("Task instructions for the teammate"),taskId:u(r.string()).describe("Optional shared task list ID"),runMode:u(r.enum(["sync","async"])).describe("Execution mode: 'sync' blocks until the teammate finishes and returns the result (default if omitted); 'async' queues the run and returns a runId immediately — use team_await_runs to collect results later."),continueConversation:u(r.boolean()).describe("If true, continue the teammate conversation; otherwise start fresh")}),$s=r.object({status:u(r.enum(["queued","running","completed","failed","cancelled","interrupted"])).describe("Optional run status filter. Omit to include all statuses."),agentId:u(r.string().min(1)).describe("Optional teammate ID filter. Omit to include all teammates."),includeCompleted:u(r.boolean()).describe("Include completed/failed runs (default true)")}),bs=r.object({runId:r.string().min(1).describe("Run ID"),reason:u(r.string().min(1)).describe("Optional cancellation reason")}),Ms=r.object({runId:u(r.string().min(1)).describe("Optional async run ID to await. Omit to wait for all active async runs.")}).strict(),is=r.object({toAgentId:r.string().min(1).describe("Recipient agent ID"),subject:r.string().min(1).describe("Message subject"),body:r.string().min(1).describe("Message body"),taskId:u(r.string().min(1)).describe("Optional task ID context")}),Ls=r.object({subject:r.string().min(1).describe("Message subject"),body:r.string().min(1).describe("Message body"),taskId:u(r.string().min(1)).describe("Optional task ID context")}),ms=r.object({unreadOnly:u(r.boolean()).describe("Only unread messages for read action (default true)")}),Fs=r.object({kind:r.enum(["progress","handoff","blocked","decision","done","error"]),summary:r.string().min(1).describe("Update summary"),taskId:u(r.string().min(1)).describe("Optional task ID context"),evidence:u(r.array(r.string().min(1))).describe("Optional evidence links/snippets"),nextAction:u(r.string().min(1)).describe("Planned next step")}),Ys=r.object({}),Us=r.object({title:r.string().describe("Outcome title"),requiredSections:r.array(r.string()).default(ud).describe("Required sections for finalization gate (defaults to current_state,boundary_analysis,interface_proposal)")}),qs=r.object({outcomeId:r.string().describe("Outcome ID"),section:r.string().describe("Section name"),sourceRunId:u(r.string()).describe("Optional source run ID"),content:r.string().describe("Section fragment content")}),Gs=r.object({fragmentId:r.string().describe("Fragment ID"),approved:r.boolean().describe("Review decision")}),Hs=r.object({outcomeId:r.string().describe("Outcome ID")}),Ts=r.object({}),Xs=r.object({teamId:r.string(),teamName:r.string(),members:r.array(Rd),taskCounts:r.record(C,r.number()),unreadMessages:r.number(),missionLogEntries:r.number(),activeRuns:r.number(),queuedRuns:r.number(),outcomeCounts:r.record(cn,r.number())}),bd=r.object({id:r.string(),title:r.string(),description:r.string(),status:C,createdAt:U,updatedAt:U,createdBy:r.string(),assignee:r.string().optional(),dependsOn:r.array(r.string()),summary:r.string().optional(),isReady:r.boolean(),blockedBy:r.array(r.string())}),Vs=r.discriminatedUnion("action",[r.object({action:r.literal("create"),taskId:r.string(),status:C,ignoredFields:r.array(r.string()).optional(),note:r.string().optional()}),r.object({action:r.literal("list"),tasks:r.array(bd)}),r.object({action:r.literal("claim"),taskId:r.string(),status:C,nextStep:r.string()}),r.object({action:r.literal("complete"),taskId:r.string(),status:C}),r.object({action:r.literal("block"),taskId:r.string(),status:C})]),Zs=r.object({agentId:r.string(),mode:r.enum(["sync","async"]),status:r.enum(["dispatched","running","queued","joined"]),dispatched:r.boolean(),message:r.string(),deduped:r.boolean().optional(),runId:r.string().optional(),text:r.string().optional(),iterations:r.number().optional()}),Md=r.object({textPreview:r.string(),iterations:r.number(),finishReason:r.string(),durationMs:r.number(),usage:r.object({inputTokens:r.number(),outputTokens:r.number(),cacheReadTokens:r.number().optional(),cacheWriteTokens:r.number().optional(),totalCost:r.number().optional()})}),Js=r.object({id:r.string(),agentId:r.string(),taskId:r.string().optional(),status:le,messagePreview:r.string(),priority:r.number(),retryCount:r.number(),maxRetries:r.number(),nextAttemptAt:U.optional(),continueConversation:r.boolean().optional(),startedAt:U,endedAt:U.optional(),leaseOwner:r.string().optional(),heartbeatAt:U.optional(),lastProgressAt:U.optional(),lastProgressMessage:r.string().optional(),currentActivity:r.string().optional(),error:r.string().optional(),resultSummary:Md.optional()}),Qs=r.object({id:r.string(),teamId:r.string(),fromAgentId:r.string(),toAgentId:r.string(),subject:r.string(),body:r.string(),taskId:r.string().optional(),sentAt:U,readAt:U.optional()}),Ws=r.object({id:r.string(),teamId:r.string(),title:r.string(),status:cn,requiredSections:r.array(r.string()),createdBy:r.string(),createdAt:U,finalizedAt:U.optional()}),Os=r.object({outcomeId:r.string(),status:cn,requiredSections:r.array(r.string())}),Ps=r.object({agentId:r.string(),status:r.string()}),Ks=r.object({runId:r.string(),status:le}),js=r.object({id:r.string(),toAgentId:r.string()}),hs=r.object({delivered:r.number()}),Cs=r.object({id:r.string()}),xs=r.object({status:r.string()}),Ns=r.object({fragmentId:r.string(),status:r.string()}),Ss=r.object({outcomeId:r.string(),status:cn});var id;(($)=>{$.TaskStart="task_start";$.TaskEnd="task_end";$.AgentEvent="agent_event";$.TeammateSpawned="teammate_spawned";$.TeammateShutdown="teammate_shutdown";$.TeamTaskUpdated="team_task_updated";$.TeamMessage="team_message";$.TeamMissionLog="team_mission_log";$.TeamTaskCompleted="team_task_completed";$.RunStarted="run_started";$.RunQueued="run_queued";$.RunProgress="run_progress";$.RunCompleted="run_completed";$.RunFailed="run_failed";$.RunCancelled="run_cancelled";$.RunInterrupted="run_interrupted";$.OutcomeCreated="outcome_created";$.OutcomeFragmentAttached="outcome_fragment_attached";$.OutcomeFragmentReviewed="outcome_fragment_reviewed";$.OutcomeFinalized="outcome_finalized"})(id||={});import{z as Ld}from"zod";function md(n){let{$schema:o,...e}=n;if(typeof e.type==="string")return e;if("properties"in e||"required"in e||"additionalProperties"in e)return{type:"object",...e};for(let d of["oneOf","anyOf","allOf"]){let l=e[d];if(!Array.isArray(l)||l.length===0)continue;if(d==="allOf"){if(l.some((y)=>y&&typeof y==="object"&&y.type==="object"))return{type:"object",...e};throw Error('Tool inputSchema must describe an object at the top level, but the schema has a top-level "allOf" with no branch that asserts type: "object". Add type: "object" to at least one allOf branch to make the object constraint explicit.')}if(l.every((g)=>g&&typeof g==="object"&&g.type==="object"))return{type:"object",...e};throw Error(`Tool inputSchema must describe an object at the top level, but the schema has a top-level "${d}" whose branches include non-object types. Pass the strict object schema as inputSchema and reserve union/coercion schemas for use inside execute().`)}return e}function Fd(n){let o=md(n.inputSchema instanceof Ld.ZodType?qn(n.inputSchema):n.inputSchema);return{name:n.name,description:n.description,inputSchema:o,lifecycle:n.lifecycle,timeoutMs:n.timeoutMs??30000,retryable:n.retryable??!0,maxRetries:n.maxRetries??3,execute:n.execute}}var ge=["401","403","unauthorized","forbidden","invalid token","expired token","authentication"];function Yd(n){let o=n instanceof Error?n.message.toLowerCase():String(n);return ge.some((e)=>o.includes(e))}export{qn as zodToJsonSchema,to as xmlTagsRemoval,Vr as validateWithZod,Eo as validateImageMedia,S as validateAndReserveImageMedia,ts as upsertWorkspaceInfo,mo as truncateStr,Gr as truncateSplit,Ao as toAiSdkToolResultOutput,Br as serializeAbortReason,F as sanitizeSurrogates,qr as sanitizeFileName,Lr as safeJsonStringify,mr as safeJsonParse,cd as resolveRootSessionId,ko as resolveReasoningEffortRatio,yr as resolveReasoningBudgetFromRatio,_o as resolveMediaBudget,of as resolveHubCommandTimeoutMs,td as resolveHookSessionContext,wr as resolveEffectiveReasoningEffort,po as resolveClineEnvironment,N as reserveImageMediaBytes,lo as parseUserCommandEnvelope,Id as parseRuntimeConfigExtensions,ir as parseJsonStream,Oe as parseHookEventPayload,go as normalizeUserInput,ne as normalizeSdkError,eo as normalizePluginManifest,Ar as noopBasicLogger,cr as mergeModelOptions,Hr as maskSecret,se as isRuntimeConfigExtensionKind,Yd as isLikelyAuthError,ef as isHubToolExecutorName,zd as isHubProtocolCompatible,Gn as isClineProvider,or as isCanonicalBase64,wo as isBase64Char,nr as imageFileMaxDecodedBytesForBase64Limit,In as imageBase64LengthForDecodedBytes,ze as imageBase64EncodedByteLength,co as imageBase64DecodedByteLength,Ad as hasRuntimeConfigExtension,Ur as getShellArgs,Yr as getDefaultShell,Ke as getDefaultHubCommandTimeoutMs,nd as getClineEnvironmentConfig,Ce as formatUserInputBlock,xe as formatUserCommandBlock,Xr as formatUptime,tr as formatMessagesForAiSdk,Tr as formatHumanReadableDate,Bn as formatFileContentBlock,ae as formatDisplayUserInput,Ir as estimateTokens,gs as emptyWorkspaceManifest,Fd as createTool,yd as createSessionId,ln as createMediaBudgetState,Ye as createContributionRegistry,ee as createClineTelemetryServiceMetadata,gd as createClineTelemetryServiceConfig,ed as captureSdkError,zo as buildSdkErrorProperties,Zr as buildClineSystemPrompt,kd as WorkspaceManifestSchema,Dd as WorkspaceInfoSchema,Wo as VertexSettingsSchema,Qo as VertexModelSchema,yn as ToolCallRecordSchema,Nn as ThinkingConfigSchema,Bs as TeamTeammateSpecSchema,Vs as TeamTaskToolResultSchema,bd as TeamTaskListItemToolResultSchema,us as TeamTaskInputSchema,Xs as TeamStatusToolResultSchema,Ds as TeamStatusInputSchema,Is as TeamSpawnTeammateInputSchema,Ps as TeamSimpleAgentStatusToolResultSchema,As as TeamShutdownTeammateInputSchema,js as TeamSendMessageToolResultSchema,is as TeamSendMessageInputSchema,Js as TeamRunToolSummarySchema,Zs as TeamRunTaskToolResultSchema,Rs as TeamRunTaskInputSchema,Md as TeamRunResultSummarySchema,Gs as TeamReviewOutcomeFragmentInputSchema,ms as TeamReadMailboxInputSchema,Ws as TeamOutcomeToolResultSchema,Ns as TeamOutcomeFragmentToolResultSchema,Cs as TeamMissionLogToolResultSchema,Fs as TeamMissionLogInputSchema,id as TeamMessageType,Qs as TeamMailboxMessageToolResultSchema,$s as TeamListRunsInputSchema,Ts as TeamListOutcomesInputSchema,Ss as TeamFinalizeOutcomeToolResultSchema,Hs as TeamFinalizeOutcomeInputSchema,Os as TeamCreateOutcomeToolResultSchema,Us as TeamCreateOutcomeInputSchema,xs as TeamCleanupToolResultSchema,Ys as TeamCleanupInputSchema,Ks as TeamCancelRunToolResultSchema,bs as TeamCancelRunInputSchema,hs as TeamBroadcastToolResultSchema,Ls as TeamBroadcastInputSchema,Ms as TeamAwaitRunsInputSchema,qs as TeamAttachOutcomeFragmentInputSchema,ks as TEAM_TASK_IGNORED_FIELDS_BY_ACTION,Es as TEAM_RUN_TEXT_PREVIEW_LIMIT,ys as TEAM_RUN_MESSAGE_PREVIEW_LIMIT,xr as TEAM_PROGRESS_EVENT_TYPE,Nr as TEAM_LIFECYCLE_EVENT_TYPE,ws as TEAM_AWAIT_TIMEOUT_MS,sn as SUPPORTED_IMAGE_MEDIA_TYPES,Ed as SESSION_STATUS_VALUES,od as SDK_ERROR_TELEMETRY_EVENT,tn as S3AccessKeySettingsSchema,Co as RemoteMCPServerSchema,Wr as RemoteConfigSchema,Re as ReasoningEffortSchema,Jn as RUNTIME_CONFIG_EXTENSION_KINDS,Jr as REMOTE_URI_SCHEME,p as REASONING_EFFORT_RATIOS,hr as ProviderProtocolSchema,Cr as ProviderClientSchema,jr as ProviderCapabilitySchema,xo as PromptUploadingSchema,Ue as PLUGIN_FILE_EXTENSIONS,Ho as OpenAiCompatibleSchema,Go as OpenAiCompatibleModelSchema,Cn as ModelStatusSchema,xn as ModelPricingSchema,Sn as ModelMetadataSchema,rn as ModelInfoSchema,hn as ModelCapabilitySchema,ad as MIN_CLIENT_HUB_PROTOCOL_VERSION,pd as MAX_CLIENT_HUB_PROTOCOL_VERSION,Po as LiteLLMSchema,Oo as LiteLLMModelSchema,Q as IMAGE_OMITTED_PLACEHOLDER,so as HookEventPayloadSchema,fo as HookEventNameSchema,tf as HUB_USER_INSTRUCTIONS_SNAPSHOT_CAPABILITY,je as HUB_TOOL_EXECUTOR_NAMES,rf as HUB_TOOL_EXECUTOR_CAPABILITY_PREFIX,gf as HUB_MISTAKE_LIMIT_CAPABILITY,ff as HUB_HOOK_CAPABILITY_PREFIX,Pe as HUB_DEFAULT_COMMAND_TIMEOUT_MS,df as HUB_CUSTOM_TOOL_CAPABILITY_PREFIX,sf as HUB_COMPACTION_CAPABILITY,nf as HUB_COMMAND_SLOW_LOG_MS,lf as HUB_CHECKPOINT_CAPABILITY,vd as HUB_CAPABILITIES,Tn as GlobalInstructionsFileSchema,qe as FeatureFlagDefaultValue,Ge as FEATURE_FLAGS,No as EnterpriseTelemetrySchema,An as EMPTY_CONTENT_TEXT,fe as DEFAULT_RUNTIME_CONFIG_EXTENSIONS,Er as DEFAULT_REQUEST_HEADERS,_r as DEFAULT_REASONING_EFFORT,ud as DEFAULT_OUTCOME_REQUIRED_SECTIONS,ve as DEFAULT_MAX_TOTAL_MEDIA_BYTES,H as DEFAULT_MAX_IMAGE_ENCODED_BYTES,W as DEFAULT_MAX_IMAGE_DECODED_BYTES,pe as DEFAULT_MAX_IMAGE_BASE64_BYTES,pr as DEFAULT_CLINE_ENVIRONMENT,En as ContributionRegistry,Me as ConnectorHookEventSchema,an as ConnectorHookEventNameSchema,vn as ConnectorEventContextSchema,pn as ConnectorEventActorSchema,$e as ConnectorAuthorizationRequestSchema,be as ConnectorAuthorizationDecisionSchema,Jo as ClineSettingsSchema,Zo as ClineModelSchema,Sd as CURRENT_HUB_PROTOCOL_VERSION,ar as CLINE_ENVIRONMENT_OVERRIDE_ENV,Sr as CLINE_ENVIRONMENT_ENV,Vn as CLINE_ENVIRONMENTS,Pr as CLINE_DEFAULT_RPC_PORT,Kr as CLINE_DEFAULT_RPC_ADDRESS,Vo as AwsBedrockSettingsSchema,To as AwsBedrockModelSchema,Xo as AwsBedrockCustomModelSchema,jn as ApiFormatSchema,De as ApiFormat,jo as AnthropicSchema,Ko as AnthropicModelSchema,ho as AllowedMCPServerSchema,ue as AgentUsageSchema,Zd as AgentResultSchema,ke as AgentFinishReasonSchema,Jd as AgentConfigSchema,ge as AUTH_ERROR_PATTERNS,Or as APIKeySchema};
|
|
80
|
+
${Vo(u,s,c)}`.trim();return D}return(e==="yolo"?Ho:Po).replace("{{PLATFORM_NAME}}",d).replace("{{CWD}}",u).replace("{{CURRENT_DATE}}",new Date().toLocaleDateString()).replace("{{IDE_NAME}}",o).replace("{{CLINE_METADATA}}",t?Vo(u,s,c):"").replace("{{CLINE_RULES}}",i||"").trim()}var od="remote://";import{z as l}from"zod";var Xo=l.object({id:l.string(),temperature:l.number().optional(),isR1FormatRequired:l.boolean().optional(),maxTokens:l.number().optional(),contextWindow:l.number().optional(),inputPrice:l.number().optional(),outputPrice:l.number().optional(),supportsImages:l.boolean().optional()}),Co=l.object({models:l.array(Xo).optional(),openAiBaseUrl:l.string().optional(),openAiHeaders:l.record(l.string(),l.string()).optional(),azureApiVersion:l.string().optional(),azureIdentity:l.boolean().optional()}),Zo=l.object({id:l.string(),thinkingBudgetTokens:l.number().optional()}),Wo=l.object({name:l.string(),baseModelId:l.string(),thinkingBudgetTokens:l.number().optional()}),Jo=l.object({models:l.array(Zo).optional(),customModels:l.array(Wo).optional(),awsRegion:l.string().optional(),awsUseCrossRegionInference:l.boolean().optional(),awsUseGlobalInference:l.boolean().optional(),awsBedrockUsePromptCache:l.boolean().optional(),awsBedrockEndpoint:l.string().optional()}),po=l.object({id:l.string()}),Ko=l.object({models:l.array(po).optional()}),Oo=l.object({id:l.string(),thinkingBudgetTokens:l.number().optional()}),Qo=l.object({models:l.array(Oo).optional(),vertexProjectId:l.string().optional(),vertexRegion:l.string().optional()}),jo=l.object({id:l.string(),thinkingBudgetTokens:l.number().optional(),promptCachingEnabled:l.boolean().optional()}),No=l.object({models:l.array(jo).optional(),baseUrl:l.string().optional()}),So=l.object({id:l.string(),thinkingBudgetTokens:l.number().optional()}),vo=l.object({models:l.array(So).optional(),baseUrl:l.string().optional()}),ed=l.object({OpenAiCompatible:Co.optional(),AwsBedrock:Jo.optional(),Cline:Ko.optional(),Vertex:Qo.optional(),LiteLLM:No.optional(),Anthropic:vo.optional()}),xo=l.object({id:l.string()}),zo=l.object({name:l.string(),url:l.string(),alwaysEnabled:l.boolean().optional(),headers:l.record(l.string(),l.string()).optional()}),Pn=l.object({alwaysEnabled:l.boolean(),name:l.string(),contents:l.string()}),yn=l.object({bucket:l.string(),accessKeyId:l.string(),secretAccessKey:l.string(),region:l.string().optional(),endpoint:l.string().optional(),accountId:l.string().optional()}),ne=l.object({enabled:l.boolean().optional(),type:l.union([l.literal("s3_access_keys"),l.literal("r2_access_keys"),l.literal("azure_access_keys")]).optional(),s3AccessSettings:yn.optional(),r2AccessSettings:yn.optional(),azureAccessSettings:yn.optional()}),oe=l.object({promptUploading:ne.optional()}),rd=l.object({version:l.string(),providerSettings:ed.optional(),telemetryEnabled:l.boolean().optional(),kanbanEnabled:l.boolean().optional(),mcpMarketplaceEnabled:l.boolean().optional(),allowedMCPServers:l.array(xo).optional(),remoteMCPServers:l.array(zo).optional(),blockPersonalRemoteMCPServers:l.boolean().optional(),yoloModeAllowed:l.boolean().optional(),openTelemetryEnabled:l.boolean().optional(),openTelemetryMetricsExporter:l.string().optional(),openTelemetryLogsExporter:l.string().optional(),openTelemetryOtlpProtocol:l.string().optional(),openTelemetryOtlpEndpoint:l.string().optional(),openTelemetryOtlpHeaders:l.record(l.string(),l.string()).optional(),openTelemetryOtlpMetricsProtocol:l.string().optional(),openTelemetryOtlpMetricsEndpoint:l.string().optional(),openTelemetryOtlpMetricsHeaders:l.record(l.string(),l.string()).optional(),openTelemetryOtlpLogsProtocol:l.string().optional(),openTelemetryOtlpLogsEndpoint:l.string().optional(),openTelemetryOtlpLogsHeaders:l.record(l.string(),l.string()).optional(),openTelemetryMetricExportInterval:l.number().optional(),openTelemetryOtlpInsecure:l.boolean().optional(),openTelemetryLogBatchSize:l.number().optional(),openTelemetryLogBatchTimeout:l.number().optional(),openTelemetryLogMaxQueueSize:l.number().optional(),enterpriseTelemetry:oe.optional(),globalRules:l.array(Pn).optional(),globalWorkflows:l.array(Pn).optional()}),dd=l.record(l.string(),l.string());var ld=4317;var sd="127.0.0.1:4317";import Hn from"zod";var fd=Hn.enum(["reasoning","prompt-cache","tools","provider-tools","oauth","temperature","files","streaming","vision","computer-use","local-auth","popular"]),id=Hn.enum(["anthropic","gemini","openai-chat","openai-responses","openai-r1","ai-sdk"]),cd=Hn.enum(["anthropic","ai-sdk","ai-sdk-community","openai","openai-compatible","openai-r1","gemini","bedrock","custom","fetch","vertex"]);var gd="runtime.team.progress.v1",ud="runtime.team.lifecycle.v1";var yd="CLINE_ENVIRONMENT",ad="CLINE_ENVIRONMENT_OVERRIDE",Vn={production:{environment:"production",appBaseUrl:"https://app.cline.bot",apiBaseUrl:"https://api.cline.bot",mcpBaseUrl:"https://api.cline.bot/v1/mcp",workOsClientId:"client_01K3A541FN8TA3EPPHTD2325AR"},staging:{environment:"staging",appBaseUrl:"https://staging-app.cline.bot",apiBaseUrl:"https://core-api.staging.int.cline.bot",mcpBaseUrl:"https://core-api.staging.int.cline.bot/v1/mcp",workOsClientId:"client_01K3A5415VF6QBQBG3XYCW91G6"},local:{environment:"local",appBaseUrl:"http://localhost:3000",apiBaseUrl:"http://localhost:7777",mcpBaseUrl:"http://localhost:7777/v1/mcp",workOsClientId:"client_01K6XQAY7JK6T5HXVSZW2S5VYK"}},bd="production";function ee(n){let o=n?.trim().toLowerCase();if(o==="production"||o==="staging"||o==="local")return o;return}function re(){if(typeof process>"u"||!process?.env)return{};return process.env}function de(){let n=re();return ee(n.CLINE_ENVIRONMENT_OVERRIDE)??ee(n.CLINE_ENVIRONMENT)??"production"}function wd(n){if(typeof n==="string")return Vn[n];return Vn[de()]}function td(n,o){if(o.CLINE_API_BASE_URL)n={...n,apiBaseUrl:o.CLINE_API_BASE_URL,mcpBaseUrl:`${o.CLINE_API_BASE_URL}/v1/mcp`};return n}function kd(n){let o=wd(n);return td(o,re())}var _d="agent.reasoning.unexpected_tokens",Ad="sdk.error";function Id(n,o){n?.capture({event:"agent.reasoning.unexpected_tokens",properties:Rd({sessionId:o.sessionId,agentId:o.agentId,runId:o.runId,iteration:o.iteration,providerId:o.providerId,modelId:o.modelId,requestedThinking:o.requestedThinking,reasoningTokenCount:o.reasoningTokenCount})})}function Ed(n,o){if(!n)return;n.capture({event:o.event??"sdk.error",properties:se(o)})}function se(n){return{...n.context??{},component:n.component,operation:n.operation,severity:n.severity??"error",handled:n.handled??!0,...fe(n.error,n.messageLimit)}}function Rd(n){let o={};for(let[e,d]of Object.entries(n))if(d!==void 0)o[e]=d;return o}function fe(n,o=500){let e=Dd(n)?n:void 0,d=n instanceof Error?n:void 0,s=d?.message??le(e?.message)??(typeof n==="string"?n:String(n)),c=qd(e?.code),i=Xn(e?.status)??Xn(e?.statusCode)??Xn(e?.responseStatus);return{error_type:d?.name?.trim()||le(e?.name)||d?.constructor?.name||"Error",error_message:Bd(md(s),o),...c!==void 0?{error_code:c}:{},...i!==void 0?{error_status:i}:{}}}function md(n){return n.replace(/(authorization=Bearer\s+)[^&\s]+/gi,"$1[redacted]").replace(/(api[_-]?key|access[_-]?token|refresh[_-]?token|authorization|password|secret)=([^&\s]+)/gi,"$1=[redacted]").replace(/(Bearer\s+)[A-Za-z0-9._~+/-]+=*/gi,"$1[redacted]").replace(/\/Users\/[^/\s]+/g,"/Users/[redacted]").replace(/\/home\/[^/\s]+/g,"/home/[redacted]").replace(/([A-Za-z]:[\\/]+Users[\\/]+)[^\\/\s]+/g,"$1[redacted]")}function Bd(n,o){let e=Math.max(1,Math.floor(o));return n.length>e?n.substring(0,e):n}function Dd(n){return typeof n==="object"&&n!==null}function le(n){return typeof n==="string"&&n.trim().length>0?n:void 0}function qd(n){if(typeof n==="string"&&n.trim().length>0)return n;if(typeof n==="number"&&Number.isFinite(n))return n;return}function Xn(n){return typeof n==="number"&&Number.isFinite(n)?n:void 0}function ie(n){let o={};if(!n)return o;try{n.split(",").forEach((e)=>{let d=e.indexOf("=");if(d<=0)return;let s=decodeURIComponent(e.substring(0,d).trim()),c=decodeURIComponent(e.substring(d+1).trim());if(!s||!c)return;o[s]=c})}catch{}return o}function Td(){if(!process.env)return{enabled:!1};return{enabled:process.env.OTEL_TELEMETRY_ENABLED==="1"||process.env.OTEL_TELEMETRY_ENABLED==="true",metricsExporter:process.env.OTEL_METRICS_EXPORTER||"otlp",logsExporter:process.env.OTEL_LOGS_EXPORTER||"otlp",tracesExporter:process.env.OTEL_TRACES_EXPORTER,otlpProtocol:process.env.OTEL_EXPORTER_OTLP_PROTOCOL||"http/json",otlpEndpoint:process.env.OTEL_EXPORTER_OTLP_ENDPOINT,metricExportInterval:process.env.OTEL_METRIC_EXPORT_INTERVAL?Number.parseInt(process.env.OTEL_METRIC_EXPORT_INTERVAL,10):void 0,otlpHeaders:process.env.OTEL_EXPORTER_OTLP_HEADERS?ie(process.env.OTEL_EXPORTER_OTLP_HEADERS):void 0}}function ce(n={}){return{extension_version:"unknown",cline_type:"unknown",platform:"terminal",platform_version:process?.version||"unknown",os_type:process?.platform||"unknown",os_version:process?.platform==="win32"?process?.env?.OS??"unknown":"unknown",...n}}function hd(n={}){return{...Td(),...n,metadata:ce(n.metadata)}}function ge(n){let o=n?.trim();return o?o:void 0}function $d(n,o){if(!n)return;let e=typeof n==="function"?n(o):n;if(!e)return;let d=ge(e.rootSessionId);if(!d)return;return{rootSessionId:d}}function Md(n){return ge(n?.rootSessionId)}var Ud=(n)=>crypto.getRandomValues(new Uint8Array(n)),Fd=(n,o,e)=>{let d=256-256%n.length;if(d===256){let c=n.length-1;return(i=o)=>{if(!i)return"";let b="";while(!0){let w=e(i),u=i;while(u--)if(b+=n[w[u]&c],b.length>=i)return b}}}let s=Math.ceil(409.6*o/d);return(c=o)=>{if(!c)return"";let i="";while(!0){let b=e(s),w=s;while(w--)if(b[w]<d){if(i+=n[b[w]%n.length],i.length>=c)return i}}}},ue=(n,o=21)=>Fd(n,o|0,Ud);function Ld(n="",o=""){let e=ue("1234567890abcdefghijklmnopqrstuvwxyz",10);return`${n}${Date.now()}_${e(5)}${o}`}var Gd=["idle","running","pending","completed","failed","cancelled"];var Cn=["rules","skills","workflows","plugins"],ye=Cn,Yd=new Set(Cn);function ae(n){return typeof n==="string"&&Yd.has(n)}function Pd(n){if(!Array.isArray(n))return;let o=n.map((e)=>typeof e==="string"?e.trim():"").filter(ae);return[...new Set(o)]}function Hd(n,o){return new Set(n??ye).has(o)}import{z as $}from"zod";var Vd=$.object({rootPath:$.string().min(1),hint:$.string().min(1).optional(),associatedRemoteUrls:$.array($.string().min(1)).optional(),latestGitCommitHash:$.string().min(1).optional(),latestGitBranchName:$.string().min(1).optional()}),Xd=$.object({currentWorkspacePath:$.string().min(1).optional(),workspaces:$.record($.string().min(1),Vd)});function $s(){return{workspaces:{}}}function Ms(n,o){let e={...n,workspaces:{...n.workspaces,[o.rootPath]:o}};if(!e.currentWorkspacePath)e.currentWorkspacePath=o.rootPath;return Xd.parse(e)}import{z as r}from"zod";var Cd=["current_state","boundary_analysis","interface_proposal"],Ls=3600000,Gs=240,Ys=400,M=r.preprocess((n)=>n instanceof Date?n.toISOString():n,r.string().datetime()),N=r.enum(["pending","in_progress","blocked","completed"]),be=r.enum(["queued","running","completed","failed","cancelled","interrupted"]),an=r.enum(["draft","in_review","finalized"]),Zd=r.object({agentId:r.string(),role:r.enum(["lead","teammate"]),description:r.string().optional(),status:r.enum(["idle","running","stopped"])}),Ps=r.object({agentId:r.string(),rolePrompt:r.string(),modelId:r.string().optional(),maxIterations:r.number().optional()});function E(n){return r.preprocess((o)=>o===null?void 0:o,n.optional())}var Hs=r.object({agentId:r.string().min(1).describe("Teammate identifier"),rolePrompt:r.string().min(1).describe("System prompt describing teammate role")}).strict(),Vs=r.object({agentId:r.string().min(1).describe("Teammate identifier"),reason:E(r.string().min(1)).describe("Optional shutdown reason")}),Xs=r.object({}),Wd={create:["title","description"],list:[],claim:["taskId"],complete:["taskId","summary"],block:["taskId","reason"]},Cs={create:["status","taskId","summary","reason"]},Zs=r.object({action:r.enum(["create","list","claim","complete","block"]),title:E(r.string().min(1)).describe("Task title"),description:E(r.string().min(1)).describe("Task details"),dependsOn:E(r.array(r.string().describe("Dependency task ID"))).describe("Array of dependency task IDs"),assignee:E(r.string().min(1)).describe("Optional assignee"),status:E(r.enum(["pending","in_progress","blocked","completed"])).describe("Optional task status filter"),taskId:E(r.string()).describe("Task ID"),summary:E(r.string().min(1)).describe("Completion summary"),reason:E(r.string().min(1)).describe("Blocking reason")}).superRefine((n,o)=>{for(let e of Wd[n.action]){if(n[e]!==void 0)continue;o.addIssue({code:"custom",path:[e],message:`Field "${e}" is required when action=${n.action}`})}}),Ws=r.object({agentId:r.string().describe("Teammate agent ID"),task:r.string().min(1).describe("Task instructions for the teammate"),taskId:E(r.string()).describe("Optional shared task list ID"),runMode:E(r.enum(["sync","async"])).describe("Execution mode: 'sync' blocks until the teammate finishes and returns the result (default if omitted); 'async' queues the run and returns a runId immediately — use team_await_runs to collect results later."),continueConversation:E(r.boolean()).describe("If true, continue the teammate conversation; otherwise start fresh")}),Js=r.object({status:E(r.enum(["queued","running","completed","failed","cancelled","interrupted"])).describe("Optional run status filter. Omit to include all statuses."),agentId:E(r.string().min(1)).describe("Optional teammate ID filter. Omit to include all teammates."),includeCompleted:E(r.boolean()).describe("Include completed/failed runs (default true)")}),ps=r.object({runId:r.string().min(1).describe("Run ID"),reason:E(r.string().min(1)).describe("Optional cancellation reason")}),Ks=r.object({runId:E(r.string().min(1)).describe("Optional async run ID to await. Omit to wait for all active async runs.")}).strict(),Os=r.object({toAgentId:r.string().min(1).describe("Recipient agent ID"),subject:r.string().min(1).describe("Message subject"),body:r.string().min(1).describe("Message body"),taskId:E(r.string().min(1)).describe("Optional task ID context")}),Qs=r.object({subject:r.string().min(1).describe("Message subject"),body:r.string().min(1).describe("Message body"),taskId:E(r.string().min(1)).describe("Optional task ID context")}),js=r.object({unreadOnly:E(r.boolean()).describe("Only unread messages for read action (default true)")}),Ns=r.object({kind:r.enum(["progress","handoff","blocked","decision","done","error"]),summary:r.string().min(1).describe("Update summary"),taskId:E(r.string().min(1)).describe("Optional task ID context"),evidence:E(r.array(r.string().min(1))).describe("Optional evidence links/snippets"),nextAction:E(r.string().min(1)).describe("Planned next step")}),Ss=r.object({}),vs=r.object({title:r.string().describe("Outcome title"),requiredSections:r.array(r.string()).default(Cd).describe("Required sections for finalization gate (defaults to current_state,boundary_analysis,interface_proposal)")}),xs=r.object({outcomeId:r.string().describe("Outcome ID"),section:r.string().describe("Section name"),sourceRunId:E(r.string()).describe("Optional source run ID"),content:r.string().describe("Section fragment content")}),zs=r.object({fragmentId:r.string().describe("Fragment ID"),approved:r.boolean().describe("Review decision")}),nf=r.object({outcomeId:r.string().describe("Outcome ID")}),of=r.object({}),ef=r.object({teamId:r.string(),teamName:r.string(),members:r.array(Zd),taskCounts:r.record(N,r.number()),unreadMessages:r.number(),missionLogEntries:r.number(),activeRuns:r.number(),queuedRuns:r.number(),outcomeCounts:r.record(an,r.number())}),Jd=r.object({id:r.string(),title:r.string(),description:r.string(),status:N,createdAt:M,updatedAt:M,createdBy:r.string(),assignee:r.string().optional(),dependsOn:r.array(r.string()),summary:r.string().optional(),isReady:r.boolean(),blockedBy:r.array(r.string())}),rf=r.discriminatedUnion("action",[r.object({action:r.literal("create"),taskId:r.string(),status:N,ignoredFields:r.array(r.string()).optional(),note:r.string().optional()}),r.object({action:r.literal("list"),tasks:r.array(Jd)}),r.object({action:r.literal("claim"),taskId:r.string(),status:N,nextStep:r.string()}),r.object({action:r.literal("complete"),taskId:r.string(),status:N}),r.object({action:r.literal("block"),taskId:r.string(),status:N})]),df=r.object({agentId:r.string(),mode:r.enum(["sync","async"]),status:r.enum(["dispatched","running","queued","joined"]),dispatched:r.boolean(),message:r.string(),deduped:r.boolean().optional(),runId:r.string().optional(),text:r.string().optional(),iterations:r.number().optional()}),pd=r.object({textPreview:r.string(),iterations:r.number(),finishReason:r.string(),durationMs:r.number(),usage:r.object({inputTokens:r.number(),outputTokens:r.number(),cacheReadTokens:r.number().optional(),cacheWriteTokens:r.number().optional(),totalCost:r.number().optional()})}),lf=r.object({id:r.string(),agentId:r.string(),taskId:r.string().optional(),status:be,messagePreview:r.string(),priority:r.number(),retryCount:r.number(),maxRetries:r.number(),nextAttemptAt:M.optional(),continueConversation:r.boolean().optional(),startedAt:M,endedAt:M.optional(),leaseOwner:r.string().optional(),heartbeatAt:M.optional(),lastProgressAt:M.optional(),lastProgressMessage:r.string().optional(),currentActivity:r.string().optional(),error:r.string().optional(),resultSummary:pd.optional()}),sf=r.object({id:r.string(),teamId:r.string(),fromAgentId:r.string(),toAgentId:r.string(),subject:r.string(),body:r.string(),taskId:r.string().optional(),sentAt:M,readAt:M.optional()}),ff=r.object({id:r.string(),teamId:r.string(),title:r.string(),status:an,requiredSections:r.array(r.string()),createdBy:r.string(),createdAt:M,finalizedAt:M.optional()}),cf=r.object({outcomeId:r.string(),status:an,requiredSections:r.array(r.string())}),gf=r.object({agentId:r.string(),status:r.string()}),uf=r.object({runId:r.string(),status:be}),yf=r.object({id:r.string(),toAgentId:r.string()}),af=r.object({delivered:r.number()}),bf=r.object({id:r.string()}),wf=r.object({status:r.string()}),tf=r.object({fragmentId:r.string(),status:r.string()}),kf=r.object({outcomeId:r.string(),status:an});var Kd;((R)=>{R.TaskStart="task_start";R.TaskEnd="task_end";R.AgentEvent="agent_event";R.TeammateSpawned="teammate_spawned";R.TeammateShutdown="teammate_shutdown";R.TeamTaskUpdated="team_task_updated";R.TeamMessage="team_message";R.TeamMissionLog="team_mission_log";R.TeamTaskCompleted="team_task_completed";R.RunStarted="run_started";R.RunQueued="run_queued";R.RunProgress="run_progress";R.RunCompleted="run_completed";R.RunFailed="run_failed";R.RunCancelled="run_cancelled";R.RunInterrupted="run_interrupted";R.OutcomeCreated="outcome_created";R.OutcomeFragmentAttached="outcome_fragment_attached";R.OutcomeFragmentReviewed="outcome_fragment_reviewed";R.OutcomeFinalized="outcome_finalized"})(Kd||={});import{z as Od}from"zod";function Qd(n){let{$schema:o,...e}=n;if(typeof e.type==="string")return e;if("properties"in e||"required"in e||"additionalProperties"in e)return{type:"object",...e};for(let d of["oneOf","anyOf","allOf"]){let s=e[d];if(!Array.isArray(s)||s.length===0)continue;if(d==="allOf"){if(s.some((b)=>b&&typeof b==="object"&&b.type==="object"))return{type:"object",...e};throw Error('Tool inputSchema must describe an object at the top level, but the schema has a top-level "allOf" with no branch that asserts type: "object". Add type: "object" to at least one allOf branch to make the object constraint explicit.')}if(s.every((i)=>i&&typeof i==="object"&&i.type==="object"))return{type:"object",...e};throw Error(`Tool inputSchema must describe an object at the top level, but the schema has a top-level "${d}" whose branches include non-object types. Pass the strict object schema as inputSchema and reserve union/coercion schemas for use inside execute().`)}return e}function jd(n){let o=Qd(n.inputSchema instanceof Od.ZodType?Ln(n.inputSchema):n.inputSchema);return{name:n.name,description:n.description,inputSchema:o,lifecycle:n.lifecycle,timeoutMs:n.timeoutMs??30000,retryable:n.retryable??!0,maxRetries:n.maxRetries??3,execute:n.execute}}var we=["401","403","unauthorized","forbidden","invalid token","expired token","authentication"];function Nd(n){let o=n instanceof Error?n.message.toLowerCase():String(n);return we.some((e)=>o.includes(e))}export{Ln as zodToJsonSchema,wo as xmlTagsRemoval,zr as validateWithZod,Io as validateImageMedia,x as validateAndReserveImageMedia,Ms as upsertWorkspaceInfo,Go as truncateStr,Nr as truncateSplit,jr as trimNonEmpty,mo as toAiSdkToolResultOutput,Le as shouldIncludeConnectorField,hr as serializeAbortReason,h as sanitizeSurrogates,Qr as sanitizeFileName,Xr as safeJsonStringify,Cr as safeJsonParse,Md as resolveRootSessionId,Do as resolveReasoningEffortRatio,qr as resolveReasoningBudgetFromRatio,ko as resolveMediaBudget,Rl as resolveHubCommandTimeoutMs,$d as resolveHookSessionContext,Dr as resolveEffectiveReasoningEffort,de as resolveClineEnvironment,v as reserveImageMediaBytes,ao as parseUserCommandEnvelope,Pd as parseRuntimeConfigExtensions,Vr as parseJsonStream,nr as parseHookEventPayload,Jr as omitUndefinedValues,bo as normalizeUserInput,fe as normalizeSdkError,co as normalizePluginManifest,Fn as normalizeJsonLikeStringsForSchema,Mr as noopBasicLogger,mr as mergeModelOptions,Sr as maskSecret,ro as listConnectorCatalog,ae as isRuntimeConfigExtensionKind,Nd as isLikelyAuthError,ml as isHubToolExecutorName,Il as isHubProtocolCompatible,Gn as isClineProvider,br as isCanonicalBase64,_o as isBase64Char,ar as imageFileMaxDecodedBytesForBase64Limit,_n as imageBase64LengthForDecodedBytes,yr as imageBase64EncodedByteLength,to as imageBase64DecodedByteLength,Hd as hasRuntimeConfigExtension,Or as getShellArgs,Kr as getDefaultShell,er as getDefaultHubCommandTimeoutMs,kd as getClineEnvironmentConfig,lr as formatUserInputBlock,sr as formatUserCommandBlock,xr as formatUptime,Rr as formatMessagesForAiSdk,vr as formatHumanReadableDate,kn as formatFileContentBlock,cr as formatDisplayUserInput,$r as estimateTokens,$s as emptyWorkspaceManifest,jd as createTool,Ld as createSessionId,cn as createMediaBudgetState,We as createContributionRegistry,ce as createClineTelemetryServiceMetadata,hd as createClineTelemetryServiceConfig,Ge as connectorChannelsFromPlatforms,Ed as captureSdkError,Id as captureAgentUnexpectedReasoningTokens,se as buildSdkErrorProperties,nd as buildClineSystemPrompt,Xd as WorkspaceManifestSchema,Vd as WorkspaceInfoSchema,Qo as VertexSettingsSchema,Oo as VertexModelSchema,wn as ToolCallRecordSchema,vn as ThinkingConfigSchema,Ps as TeamTeammateSpecSchema,rf as TeamTaskToolResultSchema,Jd as TeamTaskListItemToolResultSchema,Zs as TeamTaskInputSchema,ef as TeamStatusToolResultSchema,Xs as TeamStatusInputSchema,Hs as TeamSpawnTeammateInputSchema,gf as TeamSimpleAgentStatusToolResultSchema,Vs as TeamShutdownTeammateInputSchema,yf as TeamSendMessageToolResultSchema,Os as TeamSendMessageInputSchema,lf as TeamRunToolSummarySchema,df as TeamRunTaskToolResultSchema,Ws as TeamRunTaskInputSchema,pd as TeamRunResultSummarySchema,zs as TeamReviewOutcomeFragmentInputSchema,js as TeamReadMailboxInputSchema,ff as TeamOutcomeToolResultSchema,tf as TeamOutcomeFragmentToolResultSchema,bf as TeamMissionLogToolResultSchema,Ns as TeamMissionLogInputSchema,Kd as TeamMessageType,sf as TeamMailboxMessageToolResultSchema,Js as TeamListRunsInputSchema,of as TeamListOutcomesInputSchema,kf as TeamFinalizeOutcomeToolResultSchema,nf as TeamFinalizeOutcomeInputSchema,cf as TeamCreateOutcomeToolResultSchema,vs as TeamCreateOutcomeInputSchema,wf as TeamCleanupToolResultSchema,Ss as TeamCleanupInputSchema,uf as TeamCancelRunToolResultSchema,ps as TeamCancelRunInputSchema,af as TeamBroadcastToolResultSchema,Qs as TeamBroadcastInputSchema,Ks as TeamAwaitRunsInputSchema,xs as TeamAttachOutcomeFragmentInputSchema,Cs as TEAM_TASK_IGNORED_FIELDS_BY_ACTION,Ys as TEAM_RUN_TEXT_PREVIEW_LIMIT,Gs as TEAM_RUN_MESSAGE_PREVIEW_LIMIT,gd as TEAM_PROGRESS_EVENT_TYPE,ud as TEAM_LIFECYCLE_EVENT_TYPE,Ls as TEAM_AWAIT_TIMEOUT_MS,fn as SUPPORTED_IMAGE_MEDIA_TYPES,Gd as SESSION_STATUS_VALUES,Ad as SDK_ERROR_TELEMETRY_EVENT,yn as S3AccessKeySettingsSchema,zo as RemoteMCPServerSchema,rd as RemoteConfigSchema,$e as ReasoningEffortSchema,Cn as RUNTIME_CONFIG_EXTENSION_KINDS,od as REMOTE_URI_SCHEME,nn as REASONING_EFFORT_RATIOS,id as ProviderProtocolSchema,cd as ProviderClientSchema,fd as ProviderCapabilitySchema,ne as PromptUploadingSchema,Je as PLUGIN_FILE_EXTENSIONS,Co as OpenAiCompatibleSchema,Xo as OpenAiCompatibleModelSchema,Nn as ModelStatusSchema,Sn as ModelPricingSchema,xn as ModelMetadataSchema,dn as ModelInfoSchema,jn as ModelCapabilitySchema,kl as MIN_CLIENT_HUB_PROTOCOL_VERSION,_l as MAX_CLIENT_HUB_PROTOCOL_VERSION,No as LiteLLMSchema,jo as LiteLLMModelSchema,X as IMAGE_OMITTED_PLACEHOLDER,yo as HookEventPayloadSchema,uo as HookEventNameSchema,Ml as HUB_USER_INSTRUCTIONS_SNAPSHOT_CAPABILITY,rr as HUB_TOOL_EXECUTOR_NAMES,Bl as HUB_TOOL_EXECUTOR_CAPABILITY_PREFIX,$l as HUB_MISTAKE_LIMIT_CAPABILITY,ql as HUB_HOOK_CAPABILITY_PREFIX,or as HUB_DEFAULT_COMMAND_TIMEOUT_MS,Dl as HUB_CUSTOM_TOOL_CAPABILITY_PREFIX,Tl as HUB_COMPACTION_CAPABILITY,El as HUB_COMMAND_SLOW_LOG_MS,hl as HUB_CHECKPOINT_CAPABILITY,Al as HUB_CAPABILITIES,Pn as GlobalInstructionsFileSchema,pe as FeatureFlagDefaultValue,Ke as FEATURE_FLAGS,oe as EnterpriseTelemetrySchema,An as EMPTY_CONTENT_TEXT,ye as DEFAULT_RUNTIME_CONFIG_EXTENSIONS,Tr as DEFAULT_REQUEST_HEADERS,Br as DEFAULT_REASONING_EFFORT,Cd as DEFAULT_OUTCOME_REQUIRED_SECTIONS,ur as DEFAULT_MAX_TOTAL_MEDIA_BYTES,Y as DEFAULT_MAX_IMAGE_ENCODED_BYTES,C as DEFAULT_MAX_IMAGE_DECODED_BYTES,gr as DEFAULT_MAX_IMAGE_BASE64_BYTES,bd as DEFAULT_CLINE_ENVIRONMENT,tn as ContributionRegistry,Fe as ConnectorHookEventSchema,zn as ConnectorHookEventNameSchema,oo as ConnectorEventContextSchema,no as ConnectorEventActorSchema,Me as ConnectorAuthorizationRequestSchema,Ue as ConnectorAuthorizationDecisionSchema,Ko as ClineSettingsSchema,po as ClineModelSchema,tl as CURRENT_HUB_PROTOCOL_VERSION,lo as CONNECTOR_PLATFORMS,eo as CONNECTOR_CATALOG,ad as CLINE_ENVIRONMENT_OVERRIDE_ENV,yd as CLINE_ENVIRONMENT_ENV,Vn as CLINE_ENVIRONMENTS,ld as CLINE_DEFAULT_RPC_PORT,sd as CLINE_DEFAULT_RPC_ADDRESS,Jo as AwsBedrockSettingsSchema,Zo as AwsBedrockModelSchema,Wo as AwsBedrockCustomModelSchema,Qn as ApiFormatSchema,qe as ApiFormat,vo as AnthropicSchema,So as AnthropicModelSchema,xo as AllowedMCPServerSchema,he as AgentUsageSchema,rl as AgentResultSchema,Te as AgentFinishReasonSchema,dl as AgentConfigSchema,we as AUTH_ERROR_PATTERNS,dd as APIKeySchema,_d as AGENT_UNEXPECTED_REASONING_TOKENS_EVENT};
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export * from "./agents";
|
|
|
3
3
|
export type { ConnectorAuthorizationDecision, ConnectorAuthorizationRequest, ConnectorEventActor, ConnectorEventContext, ConnectorHookEvent, ConnectorHookEventName, } from "./connectors/events";
|
|
4
4
|
export { ConnectorAuthorizationDecisionSchema, ConnectorAuthorizationRequestSchema, ConnectorEventActorSchema, ConnectorEventContextSchema, ConnectorHookEventNameSchema, ConnectorHookEventSchema, } from "./connectors/events";
|
|
5
5
|
export type * from "./connectors/options";
|
|
6
|
+
export type { ActiveConnectorRecord, ConfiguredConnectorRecord, ConnectorCatalogEntry, ConnectorChannel, ConnectorChannelsResponse, ConnectorFieldCondition, ConnectorFieldDef, ConnectorPlatformDef, ConnectorSecurityDef, ConnectorSecurityFieldDef, } from "./connectors/platforms";
|
|
7
|
+
export { CONNECTOR_CATALOG, CONNECTOR_PLATFORMS, connectorChannelsFromPlatforms, listConnectorCatalog, shouldIncludeConnectorField, } from "./connectors/platforms";
|
|
6
8
|
export type { AutomationEventEnvelope, CronEventSpec, CronOneOffSpec, CronScheduleSpec, CronSpec, CronSpecCommonFields, CronSpecExtensionKind, CronSpecMode, CronSpecModelSelection, CronSpecParseResult, CronTriggerKind, } from "./cron";
|
|
7
9
|
export type { Disposable } from "./dispose";
|
|
8
10
|
export { disposeAll, registerDisposable } from "./dispose";
|
|
@@ -28,9 +30,10 @@ export { estimateTokens } from "./llms/tokens";
|
|
|
28
30
|
export type { ToolApprovalRequest, ToolApprovalResult, ToolCallRecord, ToolPolicy, } from "./llms/tools";
|
|
29
31
|
export { ToolCallRecordSchema } from "./llms/tools";
|
|
30
32
|
export { type BasicLogger, type BasicLogMetadata, noopBasicLogger, } from "./logging/logger";
|
|
31
|
-
export { parseJsonStream, safeJsonParse, safeJsonStringify, } from "./parse/json";
|
|
33
|
+
export { normalizeJsonLikeStringsForSchema, parseJsonStream, safeJsonParse, safeJsonStringify, } from "./parse/json";
|
|
34
|
+
export { type OmitUndefinedValues, omitUndefinedValues } from "./parse/object";
|
|
32
35
|
export { getDefaultShell, getShellArgs } from "./parse/shell";
|
|
33
|
-
export { maskSecret, sanitizeFileName, truncateSplit, truncateStr, } from "./parse/string";
|
|
36
|
+
export { maskSecret, sanitizeFileName, trimNonEmpty, truncateSplit, truncateStr, } from "./parse/string";
|
|
34
37
|
export { formatHumanReadableDate, formatUptime } from "./parse/time";
|
|
35
38
|
export { validateWithZod, zodToJsonSchema } from "./parse/zod";
|
|
36
39
|
export type { ClineSystemPromptOptions } from "./prompt/cline";
|
|
@@ -52,8 +55,8 @@ export { augmentNodeCommandForDebug, CLINE_BUILD_ENV_ENV, CLINE_DEBUG_HOST_ENV,
|
|
|
52
55
|
export type { ClineEnvironment, ClineEnvironmentConfig, ResolveClineEnvironmentOptions, } from "./runtime/cline-environment";
|
|
53
56
|
export { CLINE_ENVIRONMENT_ENV, CLINE_ENVIRONMENT_OVERRIDE_ENV, CLINE_ENVIRONMENTS, DEFAULT_CLINE_ENVIRONMENT, getClineEnvironmentConfig, resolveClineEnvironment, } from "./runtime/cline-environment";
|
|
54
57
|
export { CLINE_RUN_AS_HUB_DAEMON_ENV, isHubDaemonProcess, } from "./runtime/hub-daemon-env";
|
|
55
|
-
export type { CaptureSdkErrorInput, ITelemetryService, OpenTelemetryClientConfig, SdkTelemetryErrorComponent, SdkTelemetryErrorSeverity, TelemetryArray, TelemetryMetadata, TelemetryObject, TelemetryPrimitive, TelemetryProperties, TelemetryValue, } from "./services/telemetry";
|
|
56
|
-
export { buildSdkErrorProperties, captureSdkError, normalizeSdkError, SDK_ERROR_TELEMETRY_EVENT, } from "./services/telemetry";
|
|
58
|
+
export type { CaptureAgentUnexpectedReasoningTokensInput, CaptureSdkErrorInput, ITelemetryService, OpenTelemetryClientConfig, SdkTelemetryErrorComponent, SdkTelemetryErrorSeverity, TelemetryArray, TelemetryMetadata, TelemetryObject, TelemetryPrimitive, TelemetryProperties, TelemetryValue, } from "./services/telemetry";
|
|
59
|
+
export { AGENT_UNEXPECTED_REASONING_TOKENS_EVENT, buildSdkErrorProperties, captureAgentUnexpectedReasoningTokens, captureSdkError, normalizeSdkError, SDK_ERROR_TELEMETRY_EVENT, } from "./services/telemetry";
|
|
57
60
|
export type { ClineTelemetryServiceConfig } from "./services/telemetry-config";
|
|
58
61
|
export { createClineTelemetryServiceConfig, createClineTelemetryServiceMetadata, } from "./services/telemetry-config";
|
|
59
62
|
export type { HookSessionContext, HookSessionContextLookup, HookSessionContextProvider, } from "./session/hook-context";
|