cline 1.0.0-nightly.12 → 1.0.0-nightly.14
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/bin/cline +0 -0
- package/bin/cline-darwin-amd64 +0 -0
- package/bin/cline-darwin-arm64 +0 -0
- package/bin/cline-host +0 -0
- package/bin/cline-host-darwin-amd64 +0 -0
- package/bin/cline-host-darwin-arm64 +0 -0
- package/bin/cline-host-linux-amd64 +0 -0
- package/bin/cline-host-linux-arm64 +0 -0
- package/bin/cline-linux-amd64 +0 -0
- package/bin/cline-linux-arm64 +0 -0
- package/bin/cline-test +0 -0
- package/cline-core.js +388 -40
- package/extension/package.json +1 -1
- package/fake_node_modules/vscode/enhanced-terminal.js +11 -3
- package/package.json +60 -66
- package/proto/cline/state.proto +6 -0
package/bin/cline
CHANGED
|
Binary file
|
package/bin/cline-darwin-amd64
CHANGED
|
Binary file
|
package/bin/cline-darwin-arm64
CHANGED
|
Binary file
|
package/bin/cline-host
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/bin/cline-linux-amd64
CHANGED
|
Binary file
|
package/bin/cline-linux-arm64
CHANGED
|
Binary file
|
package/bin/cline-test
ADDED
|
Binary file
|
package/cline-core.js
CHANGED
|
@@ -49527,7 +49527,10 @@ function createBaseSettings() {
|
|
|
49527
49527
|
actModeVercelAiGatewayModelId: void 0,
|
|
49528
49528
|
actModeVercelAiGatewayModelInfo: void 0,
|
|
49529
49529
|
actModeOcaModelId: void 0,
|
|
49530
|
-
actModeOcaModelInfo: void 0
|
|
49530
|
+
actModeOcaModelInfo: void 0,
|
|
49531
|
+
maxConsecutiveMistakes: void 0,
|
|
49532
|
+
subagentsEnabled: void 0,
|
|
49533
|
+
subagentTerminalOutputLineLimit: void 0
|
|
49531
49534
|
};
|
|
49532
49535
|
}
|
|
49533
49536
|
function createBaseDictationSettings() {
|
|
@@ -49623,7 +49626,10 @@ function createBaseUpdateSettingsRequest() {
|
|
|
49623
49626
|
autoCondenseThreshold: void 0,
|
|
49624
49627
|
multiRootEnabled: void 0,
|
|
49625
49628
|
hooksEnabled: void 0,
|
|
49626
|
-
vscodeTerminalExecutionMode: void 0
|
|
49629
|
+
vscodeTerminalExecutionMode: void 0,
|
|
49630
|
+
maxConsecutiveMistakes: void 0,
|
|
49631
|
+
subagentsEnabled: void 0,
|
|
49632
|
+
subagentTerminalOutputLineLimit: void 0
|
|
49627
49633
|
};
|
|
49628
49634
|
}
|
|
49629
49635
|
function createBaseApiConfiguration() {
|
|
@@ -51039,6 +51045,15 @@ var init_state = __esm({
|
|
|
51039
51045
|
if (message.actModeOcaModelInfo !== void 0) {
|
|
51040
51046
|
OcaModelInfo.encode(message.actModeOcaModelInfo, writer.uint32(986).fork()).join();
|
|
51041
51047
|
}
|
|
51048
|
+
if (message.maxConsecutiveMistakes !== void 0) {
|
|
51049
|
+
writer.uint32(992).int32(message.maxConsecutiveMistakes);
|
|
51050
|
+
}
|
|
51051
|
+
if (message.subagentsEnabled !== void 0) {
|
|
51052
|
+
writer.uint32(1e3).bool(message.subagentsEnabled);
|
|
51053
|
+
}
|
|
51054
|
+
if (message.subagentTerminalOutputLineLimit !== void 0) {
|
|
51055
|
+
writer.uint32(1008).int32(message.subagentTerminalOutputLineLimit);
|
|
51056
|
+
}
|
|
51042
51057
|
return writer;
|
|
51043
51058
|
},
|
|
51044
51059
|
decode(input, length) {
|
|
@@ -51888,6 +51903,27 @@ var init_state = __esm({
|
|
|
51888
51903
|
message.actModeOcaModelInfo = OcaModelInfo.decode(reader, reader.uint32());
|
|
51889
51904
|
continue;
|
|
51890
51905
|
}
|
|
51906
|
+
case 124: {
|
|
51907
|
+
if (tag !== 992) {
|
|
51908
|
+
break;
|
|
51909
|
+
}
|
|
51910
|
+
message.maxConsecutiveMistakes = reader.int32();
|
|
51911
|
+
continue;
|
|
51912
|
+
}
|
|
51913
|
+
case 125: {
|
|
51914
|
+
if (tag !== 1e3) {
|
|
51915
|
+
break;
|
|
51916
|
+
}
|
|
51917
|
+
message.subagentsEnabled = reader.bool();
|
|
51918
|
+
continue;
|
|
51919
|
+
}
|
|
51920
|
+
case 126: {
|
|
51921
|
+
if (tag !== 1008) {
|
|
51922
|
+
break;
|
|
51923
|
+
}
|
|
51924
|
+
message.subagentTerminalOutputLineLimit = reader.int32();
|
|
51925
|
+
continue;
|
|
51926
|
+
}
|
|
51891
51927
|
}
|
|
51892
51928
|
if ((tag & 7) === 4 || tag === 0) {
|
|
51893
51929
|
break;
|
|
@@ -52017,7 +52053,10 @@ var init_state = __esm({
|
|
|
52017
52053
|
actModeVercelAiGatewayModelId: isSet13(object2.actModeVercelAiGatewayModelId) ? globalThis.String(object2.actModeVercelAiGatewayModelId) : void 0,
|
|
52018
52054
|
actModeVercelAiGatewayModelInfo: isSet13(object2.actModeVercelAiGatewayModelInfo) ? OpenRouterModelInfo.fromJSON(object2.actModeVercelAiGatewayModelInfo) : void 0,
|
|
52019
52055
|
actModeOcaModelId: isSet13(object2.actModeOcaModelId) ? globalThis.String(object2.actModeOcaModelId) : void 0,
|
|
52020
|
-
actModeOcaModelInfo: isSet13(object2.actModeOcaModelInfo) ? OcaModelInfo.fromJSON(object2.actModeOcaModelInfo) : void 0
|
|
52056
|
+
actModeOcaModelInfo: isSet13(object2.actModeOcaModelInfo) ? OcaModelInfo.fromJSON(object2.actModeOcaModelInfo) : void 0,
|
|
52057
|
+
maxConsecutiveMistakes: isSet13(object2.maxConsecutiveMistakes) ? globalThis.Number(object2.maxConsecutiveMistakes) : void 0,
|
|
52058
|
+
subagentsEnabled: isSet13(object2.subagentsEnabled) ? globalThis.Boolean(object2.subagentsEnabled) : void 0,
|
|
52059
|
+
subagentTerminalOutputLineLimit: isSet13(object2.subagentTerminalOutputLineLimit) ? globalThis.Number(object2.subagentTerminalOutputLineLimit) : void 0
|
|
52021
52060
|
};
|
|
52022
52061
|
},
|
|
52023
52062
|
toJSON(message) {
|
|
@@ -52382,6 +52421,15 @@ var init_state = __esm({
|
|
|
52382
52421
|
if (message.actModeOcaModelInfo !== void 0) {
|
|
52383
52422
|
obj2.actModeOcaModelInfo = OcaModelInfo.toJSON(message.actModeOcaModelInfo);
|
|
52384
52423
|
}
|
|
52424
|
+
if (message.maxConsecutiveMistakes !== void 0) {
|
|
52425
|
+
obj2.maxConsecutiveMistakes = Math.round(message.maxConsecutiveMistakes);
|
|
52426
|
+
}
|
|
52427
|
+
if (message.subagentsEnabled !== void 0) {
|
|
52428
|
+
obj2.subagentsEnabled = message.subagentsEnabled;
|
|
52429
|
+
}
|
|
52430
|
+
if (message.subagentTerminalOutputLineLimit !== void 0) {
|
|
52431
|
+
obj2.subagentTerminalOutputLineLimit = Math.round(message.subagentTerminalOutputLineLimit);
|
|
52432
|
+
}
|
|
52385
52433
|
return obj2;
|
|
52386
52434
|
},
|
|
52387
52435
|
create(base) {
|
|
@@ -52509,6 +52557,9 @@ var init_state = __esm({
|
|
|
52509
52557
|
message.actModeVercelAiGatewayModelInfo = object2.actModeVercelAiGatewayModelInfo !== void 0 && object2.actModeVercelAiGatewayModelInfo !== null ? OpenRouterModelInfo.fromPartial(object2.actModeVercelAiGatewayModelInfo) : void 0;
|
|
52510
52558
|
message.actModeOcaModelId = object2.actModeOcaModelId ?? void 0;
|
|
52511
52559
|
message.actModeOcaModelInfo = object2.actModeOcaModelInfo !== void 0 && object2.actModeOcaModelInfo !== null ? OcaModelInfo.fromPartial(object2.actModeOcaModelInfo) : void 0;
|
|
52560
|
+
message.maxConsecutiveMistakes = object2.maxConsecutiveMistakes ?? void 0;
|
|
52561
|
+
message.subagentsEnabled = object2.subagentsEnabled ?? void 0;
|
|
52562
|
+
message.subagentTerminalOutputLineLimit = object2.subagentTerminalOutputLineLimit ?? void 0;
|
|
52512
52563
|
return message;
|
|
52513
52564
|
}
|
|
52514
52565
|
};
|
|
@@ -53800,6 +53851,15 @@ var init_state = __esm({
|
|
|
53800
53851
|
if (message.vscodeTerminalExecutionMode !== void 0) {
|
|
53801
53852
|
writer.uint32(218).string(message.vscodeTerminalExecutionMode);
|
|
53802
53853
|
}
|
|
53854
|
+
if (message.maxConsecutiveMistakes !== void 0) {
|
|
53855
|
+
writer.uint32(224).int32(message.maxConsecutiveMistakes);
|
|
53856
|
+
}
|
|
53857
|
+
if (message.subagentsEnabled !== void 0) {
|
|
53858
|
+
writer.uint32(232).bool(message.subagentsEnabled);
|
|
53859
|
+
}
|
|
53860
|
+
if (message.subagentTerminalOutputLineLimit !== void 0) {
|
|
53861
|
+
writer.uint32(240).int32(message.subagentTerminalOutputLineLimit);
|
|
53862
|
+
}
|
|
53803
53863
|
return writer;
|
|
53804
53864
|
},
|
|
53805
53865
|
decode(input, length) {
|
|
@@ -53991,6 +54051,27 @@ var init_state = __esm({
|
|
|
53991
54051
|
message.vscodeTerminalExecutionMode = reader.string();
|
|
53992
54052
|
continue;
|
|
53993
54053
|
}
|
|
54054
|
+
case 28: {
|
|
54055
|
+
if (tag !== 224) {
|
|
54056
|
+
break;
|
|
54057
|
+
}
|
|
54058
|
+
message.maxConsecutiveMistakes = reader.int32();
|
|
54059
|
+
continue;
|
|
54060
|
+
}
|
|
54061
|
+
case 29: {
|
|
54062
|
+
if (tag !== 232) {
|
|
54063
|
+
break;
|
|
54064
|
+
}
|
|
54065
|
+
message.subagentsEnabled = reader.bool();
|
|
54066
|
+
continue;
|
|
54067
|
+
}
|
|
54068
|
+
case 30: {
|
|
54069
|
+
if (tag !== 240) {
|
|
54070
|
+
break;
|
|
54071
|
+
}
|
|
54072
|
+
message.subagentTerminalOutputLineLimit = reader.int32();
|
|
54073
|
+
continue;
|
|
54074
|
+
}
|
|
53994
54075
|
}
|
|
53995
54076
|
if ((tag & 7) === 4 || tag === 0) {
|
|
53996
54077
|
break;
|
|
@@ -54026,7 +54107,10 @@ var init_state = __esm({
|
|
|
54026
54107
|
autoCondenseThreshold: isSet13(object2.autoCondenseThreshold) ? globalThis.Number(object2.autoCondenseThreshold) : void 0,
|
|
54027
54108
|
multiRootEnabled: isSet13(object2.multiRootEnabled) ? globalThis.Boolean(object2.multiRootEnabled) : void 0,
|
|
54028
54109
|
hooksEnabled: isSet13(object2.hooksEnabled) ? globalThis.Boolean(object2.hooksEnabled) : void 0,
|
|
54029
|
-
vscodeTerminalExecutionMode: isSet13(object2.vscodeTerminalExecutionMode) ? globalThis.String(object2.vscodeTerminalExecutionMode) : void 0
|
|
54110
|
+
vscodeTerminalExecutionMode: isSet13(object2.vscodeTerminalExecutionMode) ? globalThis.String(object2.vscodeTerminalExecutionMode) : void 0,
|
|
54111
|
+
maxConsecutiveMistakes: isSet13(object2.maxConsecutiveMistakes) ? globalThis.Number(object2.maxConsecutiveMistakes) : void 0,
|
|
54112
|
+
subagentsEnabled: isSet13(object2.subagentsEnabled) ? globalThis.Boolean(object2.subagentsEnabled) : void 0,
|
|
54113
|
+
subagentTerminalOutputLineLimit: isSet13(object2.subagentTerminalOutputLineLimit) ? globalThis.Number(object2.subagentTerminalOutputLineLimit) : void 0
|
|
54030
54114
|
};
|
|
54031
54115
|
},
|
|
54032
54116
|
toJSON(message) {
|
|
@@ -54109,6 +54193,15 @@ var init_state = __esm({
|
|
|
54109
54193
|
if (message.vscodeTerminalExecutionMode !== void 0) {
|
|
54110
54194
|
obj2.vscodeTerminalExecutionMode = message.vscodeTerminalExecutionMode;
|
|
54111
54195
|
}
|
|
54196
|
+
if (message.maxConsecutiveMistakes !== void 0) {
|
|
54197
|
+
obj2.maxConsecutiveMistakes = Math.round(message.maxConsecutiveMistakes);
|
|
54198
|
+
}
|
|
54199
|
+
if (message.subagentsEnabled !== void 0) {
|
|
54200
|
+
obj2.subagentsEnabled = message.subagentsEnabled;
|
|
54201
|
+
}
|
|
54202
|
+
if (message.subagentTerminalOutputLineLimit !== void 0) {
|
|
54203
|
+
obj2.subagentTerminalOutputLineLimit = Math.round(message.subagentTerminalOutputLineLimit);
|
|
54204
|
+
}
|
|
54112
54205
|
return obj2;
|
|
54113
54206
|
},
|
|
54114
54207
|
create(base) {
|
|
@@ -54142,6 +54235,9 @@ var init_state = __esm({
|
|
|
54142
54235
|
message.multiRootEnabled = object2.multiRootEnabled ?? void 0;
|
|
54143
54236
|
message.hooksEnabled = object2.hooksEnabled ?? void 0;
|
|
54144
54237
|
message.vscodeTerminalExecutionMode = object2.vscodeTerminalExecutionMode ?? void 0;
|
|
54238
|
+
message.maxConsecutiveMistakes = object2.maxConsecutiveMistakes ?? void 0;
|
|
54239
|
+
message.subagentsEnabled = object2.subagentsEnabled ?? void 0;
|
|
54240
|
+
message.subagentTerminalOutputLineLimit = object2.subagentTerminalOutputLineLimit ?? void 0;
|
|
54145
54241
|
return message;
|
|
54146
54242
|
}
|
|
54147
54243
|
};
|
|
@@ -456475,6 +456571,16 @@ var init_api = __esm({
|
|
|
456475
456571
|
cacheReadsPrice: 0.3,
|
|
456476
456572
|
tiers: CLAUDE_SONNET_1M_TIERS
|
|
456477
456573
|
},
|
|
456574
|
+
"claude-haiku-4-5-20251001": {
|
|
456575
|
+
maxTokens: 8192,
|
|
456576
|
+
contextWindow: 2e5,
|
|
456577
|
+
supportsImages: true,
|
|
456578
|
+
supportsPromptCache: true,
|
|
456579
|
+
inputPrice: 1,
|
|
456580
|
+
outputPrice: 5,
|
|
456581
|
+
cacheWritesPrice: 1.25,
|
|
456582
|
+
cacheReadsPrice: 0.1
|
|
456583
|
+
},
|
|
456478
456584
|
"claude-sonnet-4-20250514": {
|
|
456479
456585
|
maxTokens: 8192,
|
|
456480
456586
|
contextWindow: 2e5,
|
|
@@ -456583,6 +456689,11 @@ var init_api = __esm({
|
|
|
456583
456689
|
supportsImages: false,
|
|
456584
456690
|
supportsPromptCache: false
|
|
456585
456691
|
},
|
|
456692
|
+
"claude-haiku-4-5-20251001": {
|
|
456693
|
+
...anthropicModels["claude-haiku-4-5-20251001"],
|
|
456694
|
+
supportsImages: false,
|
|
456695
|
+
supportsPromptCache: false
|
|
456696
|
+
},
|
|
456586
456697
|
"claude-sonnet-4-5-20250929": {
|
|
456587
456698
|
...anthropicModels["claude-sonnet-4-5-20250929"],
|
|
456588
456699
|
supportsImages: false,
|
|
@@ -456639,6 +456750,16 @@ var init_api = __esm({
|
|
|
456639
456750
|
cacheReadsPrice: 0.3,
|
|
456640
456751
|
tiers: CLAUDE_SONNET_1M_TIERS
|
|
456641
456752
|
},
|
|
456753
|
+
"anthropic.claude-haiku-4-5-20251001-v1:0": {
|
|
456754
|
+
maxTokens: 8192,
|
|
456755
|
+
contextWindow: 2e5,
|
|
456756
|
+
supportsImages: true,
|
|
456757
|
+
supportsPromptCache: true,
|
|
456758
|
+
inputPrice: 1,
|
|
456759
|
+
outputPrice: 5,
|
|
456760
|
+
cacheWritesPrice: 1.25,
|
|
456761
|
+
cacheReadsPrice: 0.1
|
|
456762
|
+
},
|
|
456642
456763
|
"anthropic.claude-sonnet-4-20250514-v1:0": {
|
|
456643
456764
|
maxTokens: 8192,
|
|
456644
456765
|
contextWindow: 2e5,
|
|
@@ -456855,6 +456976,16 @@ var init_api = __esm({
|
|
|
456855
456976
|
cacheWritesPrice: 3.75,
|
|
456856
456977
|
cacheReadsPrice: 0.3
|
|
456857
456978
|
},
|
|
456979
|
+
"claude-haiku-4-5@20251001": {
|
|
456980
|
+
maxTokens: 8192,
|
|
456981
|
+
contextWindow: 2e5,
|
|
456982
|
+
supportsImages: false,
|
|
456983
|
+
supportsPromptCache: true,
|
|
456984
|
+
inputPrice: 1,
|
|
456985
|
+
outputPrice: 5,
|
|
456986
|
+
cacheWritesPrice: 1.25,
|
|
456987
|
+
cacheReadsPrice: 0.1
|
|
456988
|
+
},
|
|
456858
456989
|
"claude-opus-4-1@20250805": {
|
|
456859
456990
|
maxTokens: 8192,
|
|
456860
456991
|
contextWindow: 2e5,
|
|
@@ -470122,6 +470253,7 @@ var init_anthropic = __esm({
|
|
|
470122
470253
|
const reasoningOn = !!((modelId.includes("3-7") || modelId.includes("4-") || modelId.includes("4-5")) && budget_tokens !== 0);
|
|
470123
470254
|
switch (modelId) {
|
|
470124
470255
|
// 'latest' alias does not support cache_control
|
|
470256
|
+
case "claude-haiku-4-5-20251001":
|
|
470125
470257
|
case "claude-sonnet-4-5-20250929":
|
|
470126
470258
|
case "claude-sonnet-4-20250514":
|
|
470127
470259
|
case "claude-3-7-sonnet-20250219":
|
|
@@ -507060,7 +507192,7 @@ var name2, version4, publisher;
|
|
|
507060
507192
|
var init_package2 = __esm({
|
|
507061
507193
|
"package.json"() {
|
|
507062
507194
|
name2 = "claude-dev";
|
|
507063
|
-
version4 = "3.32.
|
|
507195
|
+
version4 = "3.32.8";
|
|
507064
507196
|
publisher = "saoudrizwan";
|
|
507065
507197
|
}
|
|
507066
507198
|
});
|
|
@@ -507681,7 +507813,7 @@ var init_bedrock = __esm({
|
|
|
507681
507813
|
* Determines if reasoning should be enabled for Claude models
|
|
507682
507814
|
*/
|
|
507683
507815
|
shouldEnableReasoning(baseModelId, budgetTokens) {
|
|
507684
|
-
return (baseModelId.includes("3-7") || baseModelId.includes("sonnet-4") || baseModelId.includes("opus-4") || baseModelId.includes("sonnet-4-5")) && budgetTokens !== 0;
|
|
507816
|
+
return (baseModelId.includes("3-7") || baseModelId.includes("sonnet-4") || baseModelId.includes("opus-4") || baseModelId.includes("haiku-4-5") || baseModelId.includes("sonnet-4-5")) && budgetTokens !== 0;
|
|
507685
507817
|
}
|
|
507686
507818
|
/**
|
|
507687
507819
|
* Creates a message using Anthropic Claude models through AWS Bedrock Converse API
|
|
@@ -510154,7 +510286,7 @@ function isAnthropicModelId(modelId) {
|
|
|
510154
510286
|
}
|
|
510155
510287
|
function isClaude4ModelFamily(id12) {
|
|
510156
510288
|
const modelId = normalize4(id12);
|
|
510157
|
-
return modelId.includes("sonnet-4") || modelId.includes("opus-4") || modelId.includes("4-sonnet") || modelId.includes("4-opus");
|
|
510289
|
+
return modelId.includes("sonnet-4") || modelId.includes("opus-4") || modelId.includes("4-sonnet") || modelId.includes("4-opus") || modelId.includes("haiku-4") || modelId.includes("4-5-haiku") || modelId.includes("4.5-haiku");
|
|
510158
510290
|
}
|
|
510159
510291
|
function isGemini2dot5ModelFamily(id12) {
|
|
510160
510292
|
const modelId = normalize4(id12);
|
|
@@ -530145,10 +530277,10 @@ var init_schema2 = __esm({
|
|
|
530145
530277
|
});
|
|
530146
530278
|
OpenAiCompatibleSchema = external_exports.object({
|
|
530147
530279
|
// A list of the allowed models with their settings
|
|
530148
|
-
models: external_exports.array(OpenAiCompatibleModelSchema).
|
|
530280
|
+
models: external_exports.array(OpenAiCompatibleModelSchema).optional(),
|
|
530149
530281
|
// OpenAiCompatible specific settings:
|
|
530150
530282
|
openAiBaseUrl: external_exports.string().optional(),
|
|
530151
|
-
openAiHeaders: external_exports.record(external_exports.string(), external_exports.string()).
|
|
530283
|
+
openAiHeaders: external_exports.record(external_exports.string(), external_exports.string()).optional(),
|
|
530152
530284
|
azureApiVersion: external_exports.string().optional()
|
|
530153
530285
|
});
|
|
530154
530286
|
AwsBedrockModelSchema = external_exports.object({
|
|
@@ -530165,7 +530297,7 @@ var init_schema2 = __esm({
|
|
|
530165
530297
|
});
|
|
530166
530298
|
AwsBedrockSettingsSchema = external_exports.object({
|
|
530167
530299
|
// A list of the allowed models with their settings
|
|
530168
|
-
models: external_exports.array(AwsBedrockModelSchema).
|
|
530300
|
+
models: external_exports.array(AwsBedrockModelSchema).optional(),
|
|
530169
530301
|
// Custom models
|
|
530170
530302
|
customModels: external_exports.array(AwsBedrockCustomModelSchema).optional(),
|
|
530171
530303
|
// AWS Bedrock specific settings:
|
|
@@ -530615,6 +530747,8 @@ async function readGlobalStateFromDisk(context3) {
|
|
|
530615
530747
|
const terminalReuseEnabled = context3.globalState.get("terminalReuseEnabled");
|
|
530616
530748
|
const vscodeTerminalExecutionMode = context3.globalState.get("vscodeTerminalExecutionMode");
|
|
530617
530749
|
const terminalOutputLineLimit = context3.globalState.get("terminalOutputLineLimit");
|
|
530750
|
+
const maxConsecutiveMistakes = context3.globalState.get("maxConsecutiveMistakes");
|
|
530751
|
+
const subagentTerminalOutputLineLimit = context3.globalState.get("subagentTerminalOutputLineLimit");
|
|
530618
530752
|
const defaultTerminalProfile = context3.globalState.get("defaultTerminalProfile");
|
|
530619
530753
|
const sapAiCoreBaseUrl = context3.globalState.get("sapAiCoreBaseUrl");
|
|
530620
530754
|
const sapAiCoreTokenUrl = context3.globalState.get("sapAiCoreTokenUrl");
|
|
@@ -530647,6 +530781,7 @@ async function readGlobalStateFromDisk(context3) {
|
|
|
530647
530781
|
const openTelemetryLogBatchSize = context3.globalState.get("openTelemetryLogBatchSize");
|
|
530648
530782
|
const openTelemetryLogBatchTimeout = context3.globalState.get("openTelemetryLogBatchTimeout");
|
|
530649
530783
|
const openTelemetryLogMaxQueueSize = context3.globalState.get("openTelemetryLogMaxQueueSize");
|
|
530784
|
+
const subagentsEnabled = context3.globalState.get("subagentsEnabled");
|
|
530650
530785
|
const mode = context3.globalState.get("mode");
|
|
530651
530786
|
const planModeApiProvider = context3.globalState.get("planModeApiProvider");
|
|
530652
530787
|
const planModeApiModelId = context3.globalState.get("planModeApiModelId");
|
|
@@ -530872,6 +531007,8 @@ async function readGlobalStateFromDisk(context3) {
|
|
|
530872
531007
|
terminalReuseEnabled: terminalReuseEnabled ?? true,
|
|
530873
531008
|
vscodeTerminalExecutionMode: vscodeTerminalExecutionMode ?? "vscodeTerminal",
|
|
530874
531009
|
terminalOutputLineLimit: terminalOutputLineLimit ?? 500,
|
|
531010
|
+
maxConsecutiveMistakes: maxConsecutiveMistakes ?? 3,
|
|
531011
|
+
subagentTerminalOutputLineLimit: subagentTerminalOutputLineLimit ?? 2e3,
|
|
530875
531012
|
defaultTerminalProfile: defaultTerminalProfile ?? "default",
|
|
530876
531013
|
globalWorkflowToggles: globalWorkflowToggles || {},
|
|
530877
531014
|
qwenCodeOauthPath,
|
|
@@ -530880,6 +531017,7 @@ async function readGlobalStateFromDisk(context3) {
|
|
|
530880
531017
|
// default to 0.75 if not set
|
|
530881
531018
|
// Hooks require explicit user opt-in
|
|
530882
531019
|
hooksEnabled: hooksEnabled ?? false,
|
|
531020
|
+
subagentsEnabled: subagentsEnabled ?? false,
|
|
530883
531021
|
lastDismissedInfoBannerVersion: lastDismissedInfoBannerVersion ?? 0,
|
|
530884
531022
|
lastDismissedModelBannerVersion: lastDismissedModelBannerVersion ?? 0,
|
|
530885
531023
|
// Multi-root workspace support
|
|
@@ -531972,6 +532110,16 @@ async function ensureMcpServersDirectoryExists() {
|
|
|
531972
532110
|
}
|
|
531973
532111
|
return mcpServersDir;
|
|
531974
532112
|
}
|
|
532113
|
+
async function ensureHooksDirectoryExists() {
|
|
532114
|
+
const rulesDir = await ensureRulesDirectoryExists();
|
|
532115
|
+
const clineHooksDir = path17.join(rulesDir, "Hooks");
|
|
532116
|
+
try {
|
|
532117
|
+
await import_promises19.default.mkdir(clineHooksDir, { recursive: true });
|
|
532118
|
+
return clineHooksDir;
|
|
532119
|
+
} catch (_error) {
|
|
532120
|
+
return path17.join(rulesDir, "Hooks");
|
|
532121
|
+
}
|
|
532122
|
+
}
|
|
531975
532123
|
async function ensureSettingsDirectoryExists() {
|
|
531976
532124
|
return getGlobalStorageDir("settings");
|
|
531977
532125
|
}
|
|
@@ -532160,6 +532308,20 @@ async function deleteRemoteConfigFromCache(organizationId) {
|
|
|
532160
532308
|
console.error("Failed to delete remote config from cache:", error);
|
|
532161
532309
|
}
|
|
532162
532310
|
}
|
|
532311
|
+
async function getGlobalHooksDir() {
|
|
532312
|
+
const globalHooksDir = await ensureHooksDirectoryExists();
|
|
532313
|
+
return await isDirectory(globalHooksDir) ? globalHooksDir : void 0;
|
|
532314
|
+
}
|
|
532315
|
+
async function getAllHooksDirs() {
|
|
532316
|
+
const hooksDirs = [];
|
|
532317
|
+
const globalHooksDir = await getGlobalHooksDir();
|
|
532318
|
+
if (globalHooksDir) {
|
|
532319
|
+
hooksDirs.push(globalHooksDir);
|
|
532320
|
+
}
|
|
532321
|
+
const workspaceHooksDirs = await getWorkspaceHooksDirs();
|
|
532322
|
+
hooksDirs.push(...workspaceHooksDirs);
|
|
532323
|
+
return hooksDirs;
|
|
532324
|
+
}
|
|
532163
532325
|
async function getWorkspaceHooksDirs() {
|
|
532164
532326
|
const workspaceRootPaths = StateManager.get().getGlobalStateKey("workspaceRoots")?.map((root3) => root3.path) || [];
|
|
532165
532327
|
return (await Promise.all(
|
|
@@ -680105,8 +680267,10 @@ var init_TelemetryService = __esm({
|
|
|
680105
680267
|
// Browser telemetry enabled
|
|
680106
680268
|
["dictation", true],
|
|
680107
680269
|
// Dictation telemetry enabled
|
|
680108
|
-
["focus_chain", true]
|
|
680270
|
+
["focus_chain", true],
|
|
680109
680271
|
// Focus Chain telemetry enabled
|
|
680272
|
+
["subagents", true]
|
|
680273
|
+
// CLI Subagents telemetry enabled
|
|
680110
680274
|
]);
|
|
680111
680275
|
// Event constants for tracking user interactions and system events
|
|
680112
680276
|
static EVENTS = {
|
|
@@ -680223,7 +680387,12 @@ var init_TelemetryService = __esm({
|
|
|
680223
680387
|
MENTION_FAILED: "task.mention_failed",
|
|
680224
680388
|
MENTION_SEARCH_RESULTS: "task.mention_search_results",
|
|
680225
680389
|
// Multi-workspace search pattern tracking
|
|
680226
|
-
WORKSPACE_SEARCH_PATTERN: "task.workspace_search_pattern"
|
|
680390
|
+
WORKSPACE_SEARCH_PATTERN: "task.workspace_search_pattern",
|
|
680391
|
+
// CLI Subagents telemetry events
|
|
680392
|
+
SUBAGENT_ENABLED: "task.subagent_enabled",
|
|
680393
|
+
SUBAGENT_DISABLED: "task.subagent_disabled",
|
|
680394
|
+
SUBAGENT_STARTED: "task.subagent_started",
|
|
680395
|
+
SUBAGENT_COMPLETED: "task.subagent_completed"
|
|
680227
680396
|
},
|
|
680228
680397
|
// UI interaction events for tracking user engagement
|
|
680229
680398
|
UI: {
|
|
@@ -681321,6 +681490,45 @@ var init_TelemetryService = __esm({
|
|
|
681321
681490
|
}
|
|
681322
681491
|
});
|
|
681323
681492
|
}
|
|
681493
|
+
// CLI Subagents telemetry methods
|
|
681494
|
+
/**
|
|
681495
|
+
* Records when CLI subagents feature is enabled/disabled by the user
|
|
681496
|
+
* @param enabled Whether subagents was enabled (true) or disabled (false)
|
|
681497
|
+
*/
|
|
681498
|
+
captureSubagentToggle(enabled) {
|
|
681499
|
+
if (!this.isCategoryEnabled("subagents")) {
|
|
681500
|
+
return;
|
|
681501
|
+
}
|
|
681502
|
+
this.capture({
|
|
681503
|
+
event: enabled ? _TelemetryService.EVENTS.TASK.SUBAGENT_ENABLED : _TelemetryService.EVENTS.TASK.SUBAGENT_DISABLED,
|
|
681504
|
+
properties: {
|
|
681505
|
+
enabled,
|
|
681506
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
681507
|
+
}
|
|
681508
|
+
});
|
|
681509
|
+
}
|
|
681510
|
+
/**
|
|
681511
|
+
* Records when a CLI subagent is executed
|
|
681512
|
+
* @param ulid Unique identifier for the task
|
|
681513
|
+
* @param durationMs Duration of the subagent execution in milliseconds
|
|
681514
|
+
* @param outputLines Number of lines of output produced by the subagent
|
|
681515
|
+
* @param success Whether the subagent execution was successful
|
|
681516
|
+
*/
|
|
681517
|
+
captureSubagentExecution(ulid2, durationMs, outputLines, success) {
|
|
681518
|
+
if (!this.isCategoryEnabled("subagents")) {
|
|
681519
|
+
return;
|
|
681520
|
+
}
|
|
681521
|
+
this.capture({
|
|
681522
|
+
event: success ? _TelemetryService.EVENTS.TASK.SUBAGENT_COMPLETED : _TelemetryService.EVENTS.TASK.SUBAGENT_STARTED,
|
|
681523
|
+
properties: {
|
|
681524
|
+
ulid: ulid2,
|
|
681525
|
+
durationMs,
|
|
681526
|
+
outputLines,
|
|
681527
|
+
success,
|
|
681528
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
681529
|
+
}
|
|
681530
|
+
});
|
|
681531
|
+
}
|
|
681324
681532
|
/**
|
|
681325
681533
|
* Clean up resources when the service is disposed
|
|
681326
681534
|
*/
|
|
@@ -728864,6 +729072,8 @@ async function refreshOpenRouterModels(controller, _request) {
|
|
|
728864
729072
|
modelInfo.cacheWritesPrice = 3.75;
|
|
728865
729073
|
modelInfo.cacheReadsPrice = 0.3;
|
|
728866
729074
|
break;
|
|
729075
|
+
case "anthropic/claude-haiku-4.5":
|
|
729076
|
+
case "anthropic/claude-4.5-haiku":
|
|
728867
729077
|
case "anthropic/claude-3-5-haiku":
|
|
728868
729078
|
case "anthropic/claude-3-5-haiku:beta":
|
|
728869
729079
|
case "anthropic/claude-3-5-haiku-20241022":
|
|
@@ -731949,6 +732159,15 @@ async function updateSettings(controller, request5) {
|
|
|
731949
732159
|
request5.vscodeTerminalExecutionMode === "backgroundExec" ? "backgroundExec" : "vscodeTerminal"
|
|
731950
732160
|
);
|
|
731951
732161
|
}
|
|
732162
|
+
if (request5.subagentTerminalOutputLineLimit !== void 0) {
|
|
732163
|
+
controller.stateManager.setGlobalState(
|
|
732164
|
+
"subagentTerminalOutputLineLimit",
|
|
732165
|
+
Number(request5.subagentTerminalOutputLineLimit)
|
|
732166
|
+
);
|
|
732167
|
+
}
|
|
732168
|
+
if (request5.maxConsecutiveMistakes !== void 0) {
|
|
732169
|
+
controller.stateManager.setGlobalState("maxConsecutiveMistakes", Number(request5.maxConsecutiveMistakes));
|
|
732170
|
+
}
|
|
731952
732171
|
if (request5.strictPlanModeEnabled !== void 0) {
|
|
731953
732172
|
controller.stateManager.setGlobalState("strictPlanModeEnabled", request5.strictPlanModeEnabled);
|
|
731954
732173
|
}
|
|
@@ -732053,6 +732272,18 @@ async function updateSettings(controller, request5) {
|
|
|
732053
732272
|
if (request5.hooksEnabled !== void 0) {
|
|
732054
732273
|
controller.stateManager.setGlobalState("hooksEnabled", !!request5.hooksEnabled);
|
|
732055
732274
|
}
|
|
732275
|
+
if (request5.subagentsEnabled !== void 0) {
|
|
732276
|
+
const currentSettings = controller.stateManager.getGlobalSettingsKey("subagentsEnabled");
|
|
732277
|
+
const wasEnabled = currentSettings ?? false;
|
|
732278
|
+
const isEnabled = !!request5.subagentsEnabled;
|
|
732279
|
+
if (isEnabled && process.platform !== "darwin") {
|
|
732280
|
+
throw new Error("CLI subagents are only supported on macOS platforms");
|
|
732281
|
+
}
|
|
732282
|
+
controller.stateManager.setGlobalState("subagentsEnabled", isEnabled);
|
|
732283
|
+
if (wasEnabled !== isEnabled) {
|
|
732284
|
+
telemetryService.captureSubagentToggle(isEnabled);
|
|
732285
|
+
}
|
|
732286
|
+
}
|
|
732056
732287
|
await controller.postStateToWebview();
|
|
732057
732288
|
return Empty.create();
|
|
732058
732289
|
} catch (error) {
|
|
@@ -784073,6 +784304,8 @@ async function createOpenRouterStream(client, systemPrompt, messages, model, rea
|
|
|
784073
784304
|
model.id = model.id.slice(0, -CLAUDE_SONNET_1M_SUFFIX.length);
|
|
784074
784305
|
}
|
|
784075
784306
|
switch (model.id) {
|
|
784307
|
+
case "anthropic/claude-haiku-4.5":
|
|
784308
|
+
case "anthropic/claude-4.5-haiku":
|
|
784076
784309
|
case "anthropic/claude-sonnet-4.5":
|
|
784077
784310
|
case "anthropic/claude-4.5-sonnet":
|
|
784078
784311
|
// OpenRouter accidentally included this in model list for a brief moment, and users may be using this model id. And to support prompt caching, we need to add it here.
|
|
@@ -784127,6 +784360,8 @@ async function createOpenRouterStream(client, systemPrompt, messages, model, rea
|
|
|
784127
784360
|
}
|
|
784128
784361
|
let maxTokens;
|
|
784129
784362
|
switch (model.id) {
|
|
784363
|
+
case "anthropic/claude-haiku-4.5":
|
|
784364
|
+
case "anthropic/claude-4.5-haiku":
|
|
784130
784365
|
case "anthropic/claude-sonnet-4.5":
|
|
784131
784366
|
case "anthropic/claude-4.5-sonnet":
|
|
784132
784367
|
case "anthropic/claude-sonnet-4":
|
|
@@ -784157,6 +784392,8 @@ async function createOpenRouterStream(client, systemPrompt, messages, model, rea
|
|
|
784157
784392
|
}
|
|
784158
784393
|
let reasoning;
|
|
784159
784394
|
switch (model.id) {
|
|
784395
|
+
case "anthropic/claude-haiku-4.5":
|
|
784396
|
+
case "anthropic/claude-4.5-haiku":
|
|
784160
784397
|
case "anthropic/claude-sonnet-4.5":
|
|
784161
784398
|
case "anthropic/claude-4.5-sonnet":
|
|
784162
784399
|
case "anthropic/claude-sonnet-4":
|
|
@@ -885377,9 +885614,10 @@ var init_vertex = __esm({
|
|
|
885377
885614
|
}
|
|
885378
885615
|
const clientAnthropic = this.ensureAnthropicClient();
|
|
885379
885616
|
const budget_tokens = this.options.thinkingBudgetTokens || 0;
|
|
885380
|
-
const reasoningOn = !!((modelId.includes("3-7") || modelId.includes("sonnet-4") || modelId.includes("opus-4")) && budget_tokens !== 0);
|
|
885617
|
+
const reasoningOn = !!((modelId.includes("3-7") || modelId.includes("sonnet-4") || modelId.includes("opus-4") || modelId.includes("haiku-4-5")) && budget_tokens !== 0);
|
|
885381
885618
|
let stream5;
|
|
885382
885619
|
switch (modelId) {
|
|
885620
|
+
case "claude-haiku-4-5@20251001":
|
|
885383
885621
|
case "claude-sonnet-4@20250514":
|
|
885384
885622
|
case "claude-opus-4-1@20250805":
|
|
885385
885623
|
case "claude-opus-4@20250514":
|
|
@@ -910891,6 +911129,7 @@ var init_TerminalManager = __esm({
|
|
|
910891
911129
|
shellIntegrationTimeout = 4e3;
|
|
910892
911130
|
terminalReuseEnabled = true;
|
|
910893
911131
|
terminalOutputLineLimit = 500;
|
|
911132
|
+
subagentTerminalOutputLineLimit = 2e3;
|
|
910894
911133
|
defaultTerminalProfile = "default";
|
|
910895
911134
|
constructor() {
|
|
910896
911135
|
let disposable;
|
|
@@ -911084,9 +911323,13 @@ var init_TerminalManager = __esm({
|
|
|
911084
911323
|
setTerminalOutputLineLimit(limit2) {
|
|
911085
911324
|
this.terminalOutputLineLimit = limit2;
|
|
911086
911325
|
}
|
|
911087
|
-
|
|
911088
|
-
|
|
911089
|
-
|
|
911326
|
+
setSubagentTerminalOutputLineLimit(limit2) {
|
|
911327
|
+
this.subagentTerminalOutputLineLimit = limit2;
|
|
911328
|
+
}
|
|
911329
|
+
processOutput(outputLines, overrideLimit, isSubagentCommand) {
|
|
911330
|
+
const limit2 = isSubagentCommand ? overrideLimit !== void 0 ? overrideLimit : this.subagentTerminalOutputLineLimit : this.terminalOutputLineLimit;
|
|
911331
|
+
if (outputLines.length > limit2) {
|
|
911332
|
+
const halfLimit = Math.floor(limit2 / 2);
|
|
911090
911333
|
const start2 = outputLines.slice(0, halfLimit);
|
|
911091
911334
|
const end2 = outputLines.slice(outputLines.length - halfLimit);
|
|
911092
911335
|
return `${start2.join("\n")}
|
|
@@ -944827,10 +945070,12 @@ var init_hook_factory = __esm({
|
|
|
944827
945070
|
}
|
|
944828
945071
|
/**
|
|
944829
945072
|
* @returns A list of paths to scripts for the given hook name.
|
|
945073
|
+
* Includes both global hooks (from ~/Documents/Cline/Rules/Hooks/) and workspace hooks
|
|
945074
|
+
* (from .clinerules/hooks/ in each workspace root).
|
|
944830
945075
|
*/
|
|
944831
945076
|
static async findHookScripts(hookName) {
|
|
944832
945077
|
const hookScripts = [];
|
|
944833
|
-
for (const hooksDir of await
|
|
945078
|
+
for (const hooksDir of await getAllHooksDirs()) {
|
|
944834
945079
|
hookScripts.push(_HookFactory.findHookInHooksDir(hookName, hooksDir));
|
|
944835
945080
|
}
|
|
944836
945081
|
const isDefined = (scriptPath) => Boolean(scriptPath);
|
|
@@ -944848,28 +945093,24 @@ var init_hook_factory = __esm({
|
|
|
944848
945093
|
return process.platform === "win32" ? _HookFactory.findWindowsHook(hookName, hooksDir) : _HookFactory.findUnixHook(hookName, hooksDir);
|
|
944849
945094
|
}
|
|
944850
945095
|
/**
|
|
944851
|
-
* Finds a hook on Windows
|
|
944852
|
-
*
|
|
944853
|
-
*
|
|
945096
|
+
* Finds a hook on Windows using git-style hook discovery.
|
|
945097
|
+
* Like git, we look for a file with the hook name (no extension) and execute it
|
|
945098
|
+
* through the shell, which handles shebangs and script interpretation.
|
|
944854
945099
|
*
|
|
944855
945100
|
* @param hookName the name of the hook to search for
|
|
944856
|
-
* @param hooksDir the
|
|
945101
|
+
* @param hooksDir the hooks directory path to search
|
|
944857
945102
|
* @returns the path to the hook to execute, or undefined if none found
|
|
944858
945103
|
* @throws Error if an unexpected file system error occurs
|
|
944859
945104
|
*/
|
|
944860
945105
|
static async findWindowsHook(hookName, hooksDir) {
|
|
944861
|
-
const
|
|
944862
|
-
|
|
944863
|
-
const
|
|
944864
|
-
|
|
944865
|
-
|
|
944866
|
-
|
|
944867
|
-
|
|
944868
|
-
} catch (error) {
|
|
944869
|
-
_HookFactory.handleHookDiscoveryError(error, hookName, candidate);
|
|
944870
|
-
}
|
|
945106
|
+
const candidate = import_path55.default.join(hooksDir, hookName);
|
|
945107
|
+
try {
|
|
945108
|
+
const stat5 = await import_promises49.default.stat(candidate);
|
|
945109
|
+
return stat5.isFile() ? candidate : void 0;
|
|
945110
|
+
} catch (error) {
|
|
945111
|
+
_HookFactory.handleHookDiscoveryError(error, hookName, candidate);
|
|
945112
|
+
return void 0;
|
|
944871
945113
|
}
|
|
944872
|
-
return void 0;
|
|
944873
945114
|
}
|
|
944874
945115
|
/**
|
|
944875
945116
|
* Finds a hook on Unix-like systems (Linux, macOS) by checking for an executable file.
|
|
@@ -951443,6 +951684,7 @@ var init_task3 = __esm({
|
|
|
951443
951684
|
shellIntegrationTimeout,
|
|
951444
951685
|
terminalReuseEnabled,
|
|
951445
951686
|
terminalOutputLineLimit,
|
|
951687
|
+
subagentTerminalOutputLineLimit,
|
|
951446
951688
|
defaultTerminalProfile,
|
|
951447
951689
|
vscodeTerminalExecutionMode,
|
|
951448
951690
|
cwd,
|
|
@@ -951490,6 +951732,7 @@ var init_task3 = __esm({
|
|
|
951490
951732
|
this.terminalManager.setShellIntegrationTimeout(shellIntegrationTimeout);
|
|
951491
951733
|
this.terminalManager.setTerminalReuseEnabled(terminalReuseEnabled ?? true);
|
|
951492
951734
|
this.terminalManager.setTerminalOutputLineLimit(terminalOutputLineLimit);
|
|
951735
|
+
this.terminalManager.setSubagentTerminalOutputLineLimit(subagentTerminalOutputLineLimit);
|
|
951493
951736
|
this.terminalManager.setDefaultTerminalProfile(defaultTerminalProfile);
|
|
951494
951737
|
this.urlContentFetcher = new UrlContentFetcher(controller.context);
|
|
951495
951738
|
this.browserSession = new BrowserSession(stateManager);
|
|
@@ -952679,6 +952922,8 @@ Speak in ${preferredLanguage}.` : "";
|
|
|
952679
952922
|
if (content) {
|
|
952680
952923
|
content = content.replace(/<thinking>\s?/g, "");
|
|
952681
952924
|
content = content.replace(/\s?<\/thinking>/g, "");
|
|
952925
|
+
content = content.replace(/<function_calls>\s?/g, "");
|
|
952926
|
+
content = content.replace(/\s?<\/function_calls>/g, "");
|
|
952682
952927
|
const lastOpenBracketIndex = content.lastIndexOf("<");
|
|
952683
952928
|
if (lastOpenBracketIndex !== -1) {
|
|
952684
952929
|
const possibleTag = content.slice(lastOpenBracketIndex);
|
|
@@ -952744,7 +952989,7 @@ Speak in ${preferredLanguage}.` : "";
|
|
|
952744
952989
|
} catch {
|
|
952745
952990
|
}
|
|
952746
952991
|
}
|
|
952747
|
-
if (this.taskState.consecutiveMistakeCount >=
|
|
952992
|
+
if (this.taskState.consecutiveMistakeCount >= this.stateManager.getGlobalSettingsKey("maxConsecutiveMistakes")) {
|
|
952748
952993
|
const autoApprovalSettings2 = this.stateManager.getGlobalSettingsKey("autoApprovalSettings");
|
|
952749
952994
|
if (autoApprovalSettings2.enabled && autoApprovalSettings2.enableNotifications) {
|
|
952750
952995
|
showSystemNotification({
|
|
@@ -953774,6 +954019,7 @@ var init_controller = __esm({
|
|
|
953774
954019
|
const terminalReuseEnabled = this.stateManager.getGlobalStateKey("terminalReuseEnabled");
|
|
953775
954020
|
const vscodeTerminalExecutionMode = this.stateManager.getGlobalStateKey("vscodeTerminalExecutionMode");
|
|
953776
954021
|
const terminalOutputLineLimit = this.stateManager.getGlobalSettingsKey("terminalOutputLineLimit");
|
|
954022
|
+
const subagentTerminalOutputLineLimit = this.stateManager.getGlobalSettingsKey("subagentTerminalOutputLineLimit");
|
|
953777
954023
|
const defaultTerminalProfile = this.stateManager.getGlobalSettingsKey("defaultTerminalProfile");
|
|
953778
954024
|
const isNewUser = this.stateManager.getGlobalStateKey("isNewUser");
|
|
953779
954025
|
const taskHistory = this.stateManager.getGlobalStateKey("taskHistory");
|
|
@@ -953821,6 +954067,7 @@ var init_controller = __esm({
|
|
|
953821
954067
|
shellIntegrationTimeout,
|
|
953822
954068
|
terminalReuseEnabled: terminalReuseEnabled ?? true,
|
|
953823
954069
|
terminalOutputLineLimit: terminalOutputLineLimit ?? 500,
|
|
954070
|
+
subagentTerminalOutputLineLimit: subagentTerminalOutputLineLimit ?? 2e3,
|
|
953824
954071
|
defaultTerminalProfile: defaultTerminalProfile ?? "default",
|
|
953825
954072
|
vscodeTerminalExecutionMode,
|
|
953826
954073
|
cwd,
|
|
@@ -954226,9 +954473,12 @@ var init_controller = __esm({
|
|
|
954226
954473
|
const customPrompt = this.stateManager.getGlobalSettingsKey("customPrompt");
|
|
954227
954474
|
const mcpResponsesCollapsed = this.stateManager.getGlobalStateKey("mcpResponsesCollapsed");
|
|
954228
954475
|
const terminalOutputLineLimit = this.stateManager.getGlobalSettingsKey("terminalOutputLineLimit");
|
|
954476
|
+
const maxConsecutiveMistakes = this.stateManager.getGlobalSettingsKey("maxConsecutiveMistakes");
|
|
954477
|
+
const subagentTerminalOutputLineLimit = this.stateManager.getGlobalSettingsKey("subagentTerminalOutputLineLimit");
|
|
954229
954478
|
const favoritedModelIds = this.stateManager.getGlobalStateKey("favoritedModelIds");
|
|
954230
954479
|
const lastDismissedInfoBannerVersion = this.stateManager.getGlobalStateKey("lastDismissedInfoBannerVersion") || 0;
|
|
954231
954480
|
const lastDismissedModelBannerVersion = this.stateManager.getGlobalStateKey("lastDismissedModelBannerVersion") || 0;
|
|
954481
|
+
const subagentsEnabled = this.stateManager.getGlobalSettingsKey("subagentsEnabled");
|
|
954232
954482
|
const localClineRulesToggles = this.stateManager.getWorkspaceStateKey("localClineRulesToggles");
|
|
954233
954483
|
const localWindsurfRulesToggles = this.stateManager.getWorkspaceStateKey("localWindsurfRulesToggles");
|
|
954234
954484
|
const localCursorRulesToggles = this.stateManager.getWorkspaceStateKey("localCursorRulesToggles");
|
|
@@ -954290,6 +954540,8 @@ var init_controller = __esm({
|
|
|
954290
954540
|
// Can be undefined but is set to either true or false by the migration that runs on extension launch in extension.ts
|
|
954291
954541
|
mcpResponsesCollapsed,
|
|
954292
954542
|
terminalOutputLineLimit,
|
|
954543
|
+
maxConsecutiveMistakes,
|
|
954544
|
+
subagentTerminalOutputLineLimit,
|
|
954293
954545
|
customPrompt,
|
|
954294
954546
|
taskHistory: processedTaskHistory,
|
|
954295
954547
|
shouldShowAnnouncement,
|
|
@@ -954312,7 +954564,8 @@ var init_controller = __esm({
|
|
|
954312
954564
|
},
|
|
954313
954565
|
lastDismissedInfoBannerVersion,
|
|
954314
954566
|
lastDismissedModelBannerVersion,
|
|
954315
|
-
remoteConfigSettings: this.stateManager.getRemoteConfigSettings()
|
|
954567
|
+
remoteConfigSettings: this.stateManager.getRemoteConfigSettings(),
|
|
954568
|
+
subagentsEnabled
|
|
954316
954569
|
};
|
|
954317
954570
|
}
|
|
954318
954571
|
async clearTask() {
|
|
@@ -992025,7 +992278,10 @@ function createBaseSettings2() {
|
|
|
992025
992278
|
actModeVercelAiGatewayModelId: void 0,
|
|
992026
992279
|
actModeVercelAiGatewayModelInfo: void 0,
|
|
992027
992280
|
actModeOcaModelId: void 0,
|
|
992028
|
-
actModeOcaModelInfo: void 0
|
|
992281
|
+
actModeOcaModelInfo: void 0,
|
|
992282
|
+
maxConsecutiveMistakes: void 0,
|
|
992283
|
+
subagentsEnabled: void 0,
|
|
992284
|
+
subagentTerminalOutputLineLimit: void 0
|
|
992029
992285
|
};
|
|
992030
992286
|
}
|
|
992031
992287
|
var Settings3 = {
|
|
@@ -992390,6 +992646,15 @@ var Settings3 = {
|
|
|
992390
992646
|
if (message.actModeOcaModelInfo !== void 0) {
|
|
992391
992647
|
OcaModelInfo3.encode(message.actModeOcaModelInfo, writer.uint32(986).fork()).join();
|
|
992392
992648
|
}
|
|
992649
|
+
if (message.maxConsecutiveMistakes !== void 0) {
|
|
992650
|
+
writer.uint32(992).int32(message.maxConsecutiveMistakes);
|
|
992651
|
+
}
|
|
992652
|
+
if (message.subagentsEnabled !== void 0) {
|
|
992653
|
+
writer.uint32(1e3).bool(message.subagentsEnabled);
|
|
992654
|
+
}
|
|
992655
|
+
if (message.subagentTerminalOutputLineLimit !== void 0) {
|
|
992656
|
+
writer.uint32(1008).int32(message.subagentTerminalOutputLineLimit);
|
|
992657
|
+
}
|
|
992393
992658
|
return writer;
|
|
992394
992659
|
},
|
|
992395
992660
|
decode(input, length) {
|
|
@@ -993239,6 +993504,27 @@ var Settings3 = {
|
|
|
993239
993504
|
message.actModeOcaModelInfo = OcaModelInfo3.decode(reader, reader.uint32());
|
|
993240
993505
|
continue;
|
|
993241
993506
|
}
|
|
993507
|
+
case 124: {
|
|
993508
|
+
if (tag !== 992) {
|
|
993509
|
+
break;
|
|
993510
|
+
}
|
|
993511
|
+
message.maxConsecutiveMistakes = reader.int32();
|
|
993512
|
+
continue;
|
|
993513
|
+
}
|
|
993514
|
+
case 125: {
|
|
993515
|
+
if (tag !== 1e3) {
|
|
993516
|
+
break;
|
|
993517
|
+
}
|
|
993518
|
+
message.subagentsEnabled = reader.bool();
|
|
993519
|
+
continue;
|
|
993520
|
+
}
|
|
993521
|
+
case 126: {
|
|
993522
|
+
if (tag !== 1008) {
|
|
993523
|
+
break;
|
|
993524
|
+
}
|
|
993525
|
+
message.subagentTerminalOutputLineLimit = reader.int32();
|
|
993526
|
+
continue;
|
|
993527
|
+
}
|
|
993242
993528
|
}
|
|
993243
993529
|
if ((tag & 7) === 4 || tag === 0) {
|
|
993244
993530
|
break;
|
|
@@ -993368,7 +993654,10 @@ var Settings3 = {
|
|
|
993368
993654
|
actModeVercelAiGatewayModelId: isSet37(object2.actModeVercelAiGatewayModelId) ? globalThis.String(object2.actModeVercelAiGatewayModelId) : void 0,
|
|
993369
993655
|
actModeVercelAiGatewayModelInfo: isSet37(object2.actModeVercelAiGatewayModelInfo) ? OpenRouterModelInfo6.fromJSON(object2.actModeVercelAiGatewayModelInfo) : void 0,
|
|
993370
993656
|
actModeOcaModelId: isSet37(object2.actModeOcaModelId) ? globalThis.String(object2.actModeOcaModelId) : void 0,
|
|
993371
|
-
actModeOcaModelInfo: isSet37(object2.actModeOcaModelInfo) ? OcaModelInfo3.fromJSON(object2.actModeOcaModelInfo) : void 0
|
|
993657
|
+
actModeOcaModelInfo: isSet37(object2.actModeOcaModelInfo) ? OcaModelInfo3.fromJSON(object2.actModeOcaModelInfo) : void 0,
|
|
993658
|
+
maxConsecutiveMistakes: isSet37(object2.maxConsecutiveMistakes) ? globalThis.Number(object2.maxConsecutiveMistakes) : void 0,
|
|
993659
|
+
subagentsEnabled: isSet37(object2.subagentsEnabled) ? globalThis.Boolean(object2.subagentsEnabled) : void 0,
|
|
993660
|
+
subagentTerminalOutputLineLimit: isSet37(object2.subagentTerminalOutputLineLimit) ? globalThis.Number(object2.subagentTerminalOutputLineLimit) : void 0
|
|
993372
993661
|
};
|
|
993373
993662
|
},
|
|
993374
993663
|
toJSON(message) {
|
|
@@ -993733,6 +994022,15 @@ var Settings3 = {
|
|
|
993733
994022
|
if (message.actModeOcaModelInfo !== void 0) {
|
|
993734
994023
|
obj2.actModeOcaModelInfo = OcaModelInfo3.toJSON(message.actModeOcaModelInfo);
|
|
993735
994024
|
}
|
|
994025
|
+
if (message.maxConsecutiveMistakes !== void 0) {
|
|
994026
|
+
obj2.maxConsecutiveMistakes = Math.round(message.maxConsecutiveMistakes);
|
|
994027
|
+
}
|
|
994028
|
+
if (message.subagentsEnabled !== void 0) {
|
|
994029
|
+
obj2.subagentsEnabled = message.subagentsEnabled;
|
|
994030
|
+
}
|
|
994031
|
+
if (message.subagentTerminalOutputLineLimit !== void 0) {
|
|
994032
|
+
obj2.subagentTerminalOutputLineLimit = Math.round(message.subagentTerminalOutputLineLimit);
|
|
994033
|
+
}
|
|
993736
994034
|
return obj2;
|
|
993737
994035
|
},
|
|
993738
994036
|
create(base) {
|
|
@@ -993860,6 +994158,9 @@ var Settings3 = {
|
|
|
993860
994158
|
message.actModeVercelAiGatewayModelInfo = object2.actModeVercelAiGatewayModelInfo !== void 0 && object2.actModeVercelAiGatewayModelInfo !== null ? OpenRouterModelInfo6.fromPartial(object2.actModeVercelAiGatewayModelInfo) : void 0;
|
|
993861
994159
|
message.actModeOcaModelId = object2.actModeOcaModelId ?? void 0;
|
|
993862
994160
|
message.actModeOcaModelInfo = object2.actModeOcaModelInfo !== void 0 && object2.actModeOcaModelInfo !== null ? OcaModelInfo3.fromPartial(object2.actModeOcaModelInfo) : void 0;
|
|
994161
|
+
message.maxConsecutiveMistakes = object2.maxConsecutiveMistakes ?? void 0;
|
|
994162
|
+
message.subagentsEnabled = object2.subagentsEnabled ?? void 0;
|
|
994163
|
+
message.subagentTerminalOutputLineLimit = object2.subagentTerminalOutputLineLimit ?? void 0;
|
|
993863
994164
|
return message;
|
|
993864
994165
|
}
|
|
993865
994166
|
};
|
|
@@ -995164,7 +995465,10 @@ function createBaseUpdateSettingsRequest2() {
|
|
|
995164
995465
|
autoCondenseThreshold: void 0,
|
|
995165
995466
|
multiRootEnabled: void 0,
|
|
995166
995467
|
hooksEnabled: void 0,
|
|
995167
|
-
vscodeTerminalExecutionMode: void 0
|
|
995468
|
+
vscodeTerminalExecutionMode: void 0,
|
|
995469
|
+
maxConsecutiveMistakes: void 0,
|
|
995470
|
+
subagentsEnabled: void 0,
|
|
995471
|
+
subagentTerminalOutputLineLimit: void 0
|
|
995168
995472
|
};
|
|
995169
995473
|
}
|
|
995170
995474
|
var UpdateSettingsRequest3 = {
|
|
@@ -995247,6 +995551,15 @@ var UpdateSettingsRequest3 = {
|
|
|
995247
995551
|
if (message.vscodeTerminalExecutionMode !== void 0) {
|
|
995248
995552
|
writer.uint32(218).string(message.vscodeTerminalExecutionMode);
|
|
995249
995553
|
}
|
|
995554
|
+
if (message.maxConsecutiveMistakes !== void 0) {
|
|
995555
|
+
writer.uint32(224).int32(message.maxConsecutiveMistakes);
|
|
995556
|
+
}
|
|
995557
|
+
if (message.subagentsEnabled !== void 0) {
|
|
995558
|
+
writer.uint32(232).bool(message.subagentsEnabled);
|
|
995559
|
+
}
|
|
995560
|
+
if (message.subagentTerminalOutputLineLimit !== void 0) {
|
|
995561
|
+
writer.uint32(240).int32(message.subagentTerminalOutputLineLimit);
|
|
995562
|
+
}
|
|
995250
995563
|
return writer;
|
|
995251
995564
|
},
|
|
995252
995565
|
decode(input, length) {
|
|
@@ -995438,6 +995751,27 @@ var UpdateSettingsRequest3 = {
|
|
|
995438
995751
|
message.vscodeTerminalExecutionMode = reader.string();
|
|
995439
995752
|
continue;
|
|
995440
995753
|
}
|
|
995754
|
+
case 28: {
|
|
995755
|
+
if (tag !== 224) {
|
|
995756
|
+
break;
|
|
995757
|
+
}
|
|
995758
|
+
message.maxConsecutiveMistakes = reader.int32();
|
|
995759
|
+
continue;
|
|
995760
|
+
}
|
|
995761
|
+
case 29: {
|
|
995762
|
+
if (tag !== 232) {
|
|
995763
|
+
break;
|
|
995764
|
+
}
|
|
995765
|
+
message.subagentsEnabled = reader.bool();
|
|
995766
|
+
continue;
|
|
995767
|
+
}
|
|
995768
|
+
case 30: {
|
|
995769
|
+
if (tag !== 240) {
|
|
995770
|
+
break;
|
|
995771
|
+
}
|
|
995772
|
+
message.subagentTerminalOutputLineLimit = reader.int32();
|
|
995773
|
+
continue;
|
|
995774
|
+
}
|
|
995441
995775
|
}
|
|
995442
995776
|
if ((tag & 7) === 4 || tag === 0) {
|
|
995443
995777
|
break;
|
|
@@ -995473,7 +995807,10 @@ var UpdateSettingsRequest3 = {
|
|
|
995473
995807
|
autoCondenseThreshold: isSet37(object2.autoCondenseThreshold) ? globalThis.Number(object2.autoCondenseThreshold) : void 0,
|
|
995474
995808
|
multiRootEnabled: isSet37(object2.multiRootEnabled) ? globalThis.Boolean(object2.multiRootEnabled) : void 0,
|
|
995475
995809
|
hooksEnabled: isSet37(object2.hooksEnabled) ? globalThis.Boolean(object2.hooksEnabled) : void 0,
|
|
995476
|
-
vscodeTerminalExecutionMode: isSet37(object2.vscodeTerminalExecutionMode) ? globalThis.String(object2.vscodeTerminalExecutionMode) : void 0
|
|
995810
|
+
vscodeTerminalExecutionMode: isSet37(object2.vscodeTerminalExecutionMode) ? globalThis.String(object2.vscodeTerminalExecutionMode) : void 0,
|
|
995811
|
+
maxConsecutiveMistakes: isSet37(object2.maxConsecutiveMistakes) ? globalThis.Number(object2.maxConsecutiveMistakes) : void 0,
|
|
995812
|
+
subagentsEnabled: isSet37(object2.subagentsEnabled) ? globalThis.Boolean(object2.subagentsEnabled) : void 0,
|
|
995813
|
+
subagentTerminalOutputLineLimit: isSet37(object2.subagentTerminalOutputLineLimit) ? globalThis.Number(object2.subagentTerminalOutputLineLimit) : void 0
|
|
995477
995814
|
};
|
|
995478
995815
|
},
|
|
995479
995816
|
toJSON(message) {
|
|
@@ -995556,6 +995893,15 @@ var UpdateSettingsRequest3 = {
|
|
|
995556
995893
|
if (message.vscodeTerminalExecutionMode !== void 0) {
|
|
995557
995894
|
obj2.vscodeTerminalExecutionMode = message.vscodeTerminalExecutionMode;
|
|
995558
995895
|
}
|
|
995896
|
+
if (message.maxConsecutiveMistakes !== void 0) {
|
|
995897
|
+
obj2.maxConsecutiveMistakes = Math.round(message.maxConsecutiveMistakes);
|
|
995898
|
+
}
|
|
995899
|
+
if (message.subagentsEnabled !== void 0) {
|
|
995900
|
+
obj2.subagentsEnabled = message.subagentsEnabled;
|
|
995901
|
+
}
|
|
995902
|
+
if (message.subagentTerminalOutputLineLimit !== void 0) {
|
|
995903
|
+
obj2.subagentTerminalOutputLineLimit = Math.round(message.subagentTerminalOutputLineLimit);
|
|
995904
|
+
}
|
|
995559
995905
|
return obj2;
|
|
995560
995906
|
},
|
|
995561
995907
|
create(base) {
|
|
@@ -995589,6 +995935,9 @@ var UpdateSettingsRequest3 = {
|
|
|
995589
995935
|
message.multiRootEnabled = object2.multiRootEnabled ?? void 0;
|
|
995590
995936
|
message.hooksEnabled = object2.hooksEnabled ?? void 0;
|
|
995591
995937
|
message.vscodeTerminalExecutionMode = object2.vscodeTerminalExecutionMode ?? void 0;
|
|
995938
|
+
message.maxConsecutiveMistakes = object2.maxConsecutiveMistakes ?? void 0;
|
|
995939
|
+
message.subagentsEnabled = object2.subagentsEnabled ?? void 0;
|
|
995940
|
+
message.subagentTerminalOutputLineLimit = object2.subagentTerminalOutputLineLimit ?? void 0;
|
|
995592
995941
|
return message;
|
|
995593
995942
|
}
|
|
995594
995943
|
};
|
|
@@ -1006663,7 +1007012,6 @@ async function main() {
|
|
|
1006663
1007012
|
process.env.HOST_BRIDGE_ADDRESS = `127.0.0.1:${args2.hostBridgePort}`;
|
|
1006664
1007013
|
}
|
|
1006665
1007014
|
try {
|
|
1006666
|
-
log("\n\n\nStarting cline-core service...\n\n\n");
|
|
1006667
1007015
|
setupGlobalErrorHandlers();
|
|
1006668
1007016
|
const hostAddress = await waitForHostBridgeReady();
|
|
1006669
1007017
|
setupHostProvider(extensionContext, EXTENSION_DIR, DATA_DIR);
|
|
@@ -1006682,7 +1007030,7 @@ async function main() {
|
|
|
1006682
1007030
|
log(`Registered instance in SQLite locks: ${protobusAddress}`);
|
|
1006683
1007031
|
globalLockManager.cleanupOrphanedFolderLocks();
|
|
1006684
1007032
|
globalLockManager.touchInstance();
|
|
1006685
|
-
log("
|
|
1007033
|
+
log("All services started successfully");
|
|
1006686
1007034
|
} catch (err2) {
|
|
1006687
1007035
|
log(`FATAL ERROR during startup: ${err2}`);
|
|
1006688
1007036
|
log(`Cleaning up and shutting down...`);
|
package/extension/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "claude-dev",
|
|
3
3
|
"displayName": "Cline",
|
|
4
4
|
"description": "Autonomous coding agent right in your IDE, capable of creating/editing files, running commands, using the browser, and more with your permission every step of the way.",
|
|
5
|
-
"version": "3.32.
|
|
5
|
+
"version": "3.32.8",
|
|
6
6
|
"icon": "assets/icons/icon.png",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.84.0"
|
|
@@ -340,6 +340,7 @@ class StandaloneTerminalManager {
|
|
|
340
340
|
this.shellIntegrationTimeout = 4000
|
|
341
341
|
this.terminalReuseEnabled = true
|
|
342
342
|
this.terminalOutputLineLimit = 500
|
|
343
|
+
this.subagentTerminalOutputLineLimit = 2000
|
|
343
344
|
this.defaultTerminalProfile = "default"
|
|
344
345
|
}
|
|
345
346
|
|
|
@@ -436,9 +437,10 @@ class StandaloneTerminalManager {
|
|
|
436
437
|
return process ? process.isHot : false
|
|
437
438
|
}
|
|
438
439
|
|
|
439
|
-
processOutput(outputLines) {
|
|
440
|
-
|
|
441
|
-
|
|
440
|
+
processOutput(outputLines, overrideLimit, isSubagentCommand) {
|
|
441
|
+
const limit = isSubagentCommand && overrideLimit ? overrideLimit : this.terminalOutputLineLimit
|
|
442
|
+
if (outputLines.length > limit) {
|
|
443
|
+
const halfLimit = Math.floor(limit / 2)
|
|
442
444
|
const start = outputLines.slice(0, halfLimit)
|
|
443
445
|
const end = outputLines.slice(outputLines.length - halfLimit)
|
|
444
446
|
return `${start.join("\n")}\n... (output truncated) ...\n${end.join("\n")}`.trim()
|
|
@@ -484,6 +486,12 @@ class StandaloneTerminalManager {
|
|
|
484
486
|
console.log(`[StandaloneTerminalManager] Set terminal output line limit to ${limit}`)
|
|
485
487
|
}
|
|
486
488
|
|
|
489
|
+
// Set subagent terminal output line limit (compatibility method)
|
|
490
|
+
setSubagentTerminalOutputLineLimit(limit) {
|
|
491
|
+
this.subagentTerminalOutputLineLimit = limit
|
|
492
|
+
console.log(`[StandaloneTerminalManager] Set subagent terminal output line limit to ${limit}`)
|
|
493
|
+
}
|
|
494
|
+
|
|
487
495
|
// Set default terminal profile (compatibility method)
|
|
488
496
|
setDefaultTerminalProfile(profile) {
|
|
489
497
|
this.defaultTerminalProfile = profile
|
package/package.json
CHANGED
|
@@ -1,68 +1,62 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
"
|
|
62
|
-
"linux"
|
|
63
|
-
],
|
|
64
|
-
"cpu": [
|
|
65
|
-
"x64",
|
|
66
|
-
"arm64"
|
|
67
|
-
]
|
|
2
|
+
"name": "cline",
|
|
3
|
+
"version": "1.0.0-nightly.14",
|
|
4
|
+
"description": "Autonomous coding agent CLI - capable of creating/editing files, running commands, using the browser, and more",
|
|
5
|
+
"main": "cline-core.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"cline": "./bin/cline",
|
|
8
|
+
"cline-host": "./bin/cline-host"
|
|
9
|
+
},
|
|
10
|
+
"man": "./man/cline.1",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"postinstall": "node postinstall.js"
|
|
13
|
+
},
|
|
14
|
+
"bundleDependencies": [
|
|
15
|
+
"@grpc/grpc-js",
|
|
16
|
+
"@grpc/reflection",
|
|
17
|
+
"better-sqlite3",
|
|
18
|
+
"grpc-health-check",
|
|
19
|
+
"open",
|
|
20
|
+
"vscode-uri"
|
|
21
|
+
],
|
|
22
|
+
"engines": {
|
|
23
|
+
"node": ">=18.0.0"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"cline",
|
|
27
|
+
"claude",
|
|
28
|
+
"dev",
|
|
29
|
+
"mcp",
|
|
30
|
+
"openrouter",
|
|
31
|
+
"coding",
|
|
32
|
+
"agent",
|
|
33
|
+
"autonomous",
|
|
34
|
+
"chatgpt",
|
|
35
|
+
"sonnet",
|
|
36
|
+
"ai",
|
|
37
|
+
"llama",
|
|
38
|
+
"cli"
|
|
39
|
+
],
|
|
40
|
+
"author": {
|
|
41
|
+
"name": "Cline Bot Inc."
|
|
42
|
+
},
|
|
43
|
+
"license": "Apache-2.0",
|
|
44
|
+
"repository": {
|
|
45
|
+
"type": "git",
|
|
46
|
+
"url": "https://github.com/cline/cline"
|
|
47
|
+
},
|
|
48
|
+
"homepage": "https://cline.bot",
|
|
49
|
+
"bugs": {
|
|
50
|
+
"url": "https://github.com/cline/cline/issues"
|
|
51
|
+
},
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"@grpc/grpc-js": "^1.13.3",
|
|
54
|
+
"@grpc/reflection": "^1.0.4",
|
|
55
|
+
"better-sqlite3": "^12.2.0",
|
|
56
|
+
"grpc-health-check": "^2.0.2",
|
|
57
|
+
"open": "^10.1.2",
|
|
58
|
+
"vscode-uri": "^3.1.0"
|
|
59
|
+
},
|
|
60
|
+
"os": ["darwin", "linux"],
|
|
61
|
+
"cpu": ["x64", "arm64"]
|
|
68
62
|
}
|
package/proto/cline/state.proto
CHANGED
|
@@ -209,6 +209,9 @@ message Settings {
|
|
|
209
209
|
optional OpenRouterModelInfo act_mode_vercel_ai_gateway_model_info = 121;
|
|
210
210
|
optional string act_mode_oca_model_id = 122;
|
|
211
211
|
optional OcaModelInfo act_mode_oca_model_info = 123;
|
|
212
|
+
optional int32 max_consecutive_mistakes = 124;
|
|
213
|
+
optional bool subagents_enabled = 125;
|
|
214
|
+
optional int32 subagent_terminal_output_line_limit = 126;
|
|
212
215
|
}
|
|
213
216
|
|
|
214
217
|
message DictationSettings {
|
|
@@ -352,6 +355,9 @@ message UpdateSettingsRequest {
|
|
|
352
355
|
optional bool multi_root_enabled = 25;
|
|
353
356
|
optional bool hooks_enabled = 26;
|
|
354
357
|
optional string vscode_terminal_execution_mode = 27;
|
|
358
|
+
optional int32 max_consecutive_mistakes = 28;
|
|
359
|
+
optional bool subagents_enabled = 29;
|
|
360
|
+
optional int32 subagent_terminal_output_line_limit = 30;
|
|
355
361
|
}
|
|
356
362
|
|
|
357
363
|
// Complete API Configuration message
|