cline 1.0.6 → 1.0.7

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.
@@ -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.37.0",
5
+ "version": "3.38.3",
6
6
  "icon": "assets/icons/icon.png",
7
7
  "engines": {
8
8
  "vscode": "^1.84.0"
@@ -46,6 +46,15 @@
46
46
  ],
47
47
  "main": "./dist/extension.js",
48
48
  "contributes": {
49
+ "icons": {
50
+ "cline-icon": {
51
+ "description": "cline",
52
+ "default": {
53
+ "fontPath": "assets/icons/cline-bot.woff",
54
+ "fontCharacter": "\\e900"
55
+ }
56
+ }
57
+ },
49
58
  "walkthroughs": [
50
59
  {
51
60
  "id": "ClineWalkthrough",
@@ -174,10 +183,7 @@
174
183
  "command": "cline.generateGitCommitMessage",
175
184
  "title": "Generate Commit Message with Cline",
176
185
  "category": "Cline",
177
- "icon": {
178
- "light": "assets/icons/robot_panel_light.png",
179
- "dark": "assets/icons/robot_panel_dark.png"
180
- }
186
+ "icon": "$(cline-icon)"
181
187
  },
182
188
  {
183
189
  "command": "cline.abortGitCommitMessage",
@@ -359,7 +365,8 @@
359
365
  "docs": "cd docs && npm run dev",
360
366
  "docs:check-links": "cd docs && npm run check",
361
367
  "docs:rename-file": "cd docs && npm run rename",
362
- "report-issue": "node scripts/report-issue.js"
368
+ "report-issue": "node scripts/report-issue.js",
369
+ "storybook": "cd webview-ui && npm run storybook"
363
370
  },
364
371
  "lint-staged": {
365
372
  "*": [
@@ -417,7 +424,7 @@
417
424
  "@bufbuild/protobuf": "^2.2.5",
418
425
  "@cerebras/cerebras_cloud_sdk": "^1.35.0",
419
426
  "@google-cloud/vertexai": "^1.9.3",
420
- "@google/genai": "^1.11.0",
427
+ "@google/genai": "^1.30.0",
421
428
  "@grpc/grpc-js": "^1.9.15",
422
429
  "@grpc/reflection": "^1.0.4",
423
430
  "@mistralai/mistralai": "^1.5.0",
@@ -442,8 +449,8 @@
442
449
  "@opentelemetry/sdk-trace-node": "^1.30.1",
443
450
  "@opentelemetry/semantic-conventions": "^1.37.0",
444
451
  "@playwright/test": "^1.55.1",
445
- "@sap-ai-sdk/ai-api": "^1.17.0",
446
- "@sap-ai-sdk/orchestration": "^1.17.0",
452
+ "@sap-ai-sdk/ai-api": "^2.1.0",
453
+ "@sap-ai-sdk/orchestration": "^2.1.0",
447
454
  "@sentry/browser": "^9.12.0",
448
455
  "@streamparser/json": "^0.0.22",
449
456
  "@tailwindcss/vite": "^4.1.14",
@@ -461,7 +468,6 @@
461
468
  "exceljs": "^4.4.0",
462
469
  "execa": "^9.5.2",
463
470
  "fast-deep-equal": "^3.1.3",
464
- "firebase": "^11.2.0",
465
471
  "fzf": "^0.5.2",
466
472
  "get-folder-size": "^5.0.0",
467
473
  "globby": "^14.0.2",
@@ -471,7 +477,6 @@
471
477
  "image-size": "^2.0.2",
472
478
  "isbinaryfile": "^5.0.2",
473
479
  "jschardet": "^3.1.4",
474
- "jwt-decode": "^4.0.0",
475
480
  "mammoth": "^1.11.0",
476
481
  "nanoid": "^5.1.6",
477
482
  "nice-grpc": "^2.1.12",
@@ -479,7 +484,7 @@
479
484
  "ollama": "^0.5.13",
480
485
  "open": "^10.1.2",
481
486
  "open-graph-scraper": "^6.9.0",
482
- "openai": "^4.83.0",
487
+ "openai": "^6.9.0",
483
488
  "os-name": "^6.0.0",
484
489
  "p-mutex": "^1.0.0",
485
490
  "p-timeout": "^6.1.4",
@@ -504,7 +509,10 @@
504
509
  "zod": "^3.24.2"
505
510
  },
506
511
  "overrides": {
507
- "tar-fs": ">=3.1.1"
512
+ "tar-fs": ">=3.1.1",
513
+ "tar": "^7.5.2",
514
+ "vite": "^7.1.11",
515
+ "js-yaml": "^4.1.1"
508
516
  },
509
517
  "c8": {
510
518
  "reporter": [
@@ -210,17 +210,38 @@ class StandaloneTerminalProcess extends EventEmitter {
210
210
 
211
211
  // Terminate the process if it's still running
212
212
  terminate() {
213
- if (this.childProcess && !this.isCompleted) {
214
- console.log(`[StandaloneTerminal] Terminating process ${this.childProcess.pid}`)
213
+ if (!this.childProcess || this.isCompleted) {
214
+ console.log(`[StandaloneTerminal] Process already completed or doesn't exist, skipping termination`)
215
+ return
216
+ }
217
+
218
+ const pid = this.childProcess.pid
219
+ console.log(`[StandaloneTerminal] Terminating process ${pid} with SIGTERM`)
220
+
221
+ try {
215
222
  this.childProcess.kill("SIGTERM")
216
223
 
217
- // Force kill after timeout
224
+ // Force kill after timeout if process doesn't exit gracefully
218
225
  setTimeout(() => {
219
- if (!this.isCompleted) {
220
- console.log(`[StandaloneTerminal] Force killing process ${this.childProcess.pid}`)
221
- this.childProcess.kill("SIGKILL")
226
+ if (!this.isCompleted && this.childProcess) {
227
+ console.log(`[StandaloneTerminal] Process ${pid} did not exit gracefully, force killing with SIGKILL`)
228
+ try {
229
+ this.childProcess.kill("SIGKILL")
230
+ } catch (killError) {
231
+ console.error(`[StandaloneTerminal] Failed to force kill process ${pid}:`, killError)
232
+ }
233
+ } else {
234
+ console.log(`[StandaloneTerminal] Process ${pid} exited gracefully`)
222
235
  }
223
236
  }, 5000)
237
+ } catch (error) {
238
+ console.error(`[StandaloneTerminal] Failed to send SIGTERM to process ${pid}:`, error)
239
+ // Try SIGKILL immediately if SIGTERM fails
240
+ try {
241
+ this.childProcess.kill("SIGKILL")
242
+ } catch (killError) {
243
+ console.error(`[StandaloneTerminal] Failed to send SIGKILL to process ${pid}:`, killError)
244
+ }
224
245
  }
225
246
  }
226
247
  }
@@ -521,6 +542,17 @@ class StandaloneTerminalManager {
521
542
  }
522
543
  }
523
544
 
545
+ // Ensure terminate() is accessible on the merged promise
546
+ // This allows Task.cancelBackgroundCommand() to kill the process
547
+ if (process.terminate && typeof process.terminate === "function") {
548
+ Object.defineProperty(process, "terminate", {
549
+ value: process.terminate.bind(process),
550
+ writable: false,
551
+ enumerable: false,
552
+ configurable: false,
553
+ })
554
+ }
555
+
524
556
  return process
525
557
  }
526
558
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cline",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "description": "Autonomous coding agent CLI - capable of creating/editing files, running commands, using the browser, and more",
5
5
  "main": "cline-core.js",
6
6
  "bin": {
@@ -69,6 +69,18 @@ service FileService {
69
69
 
70
70
  // Opens or creates a focus chain checklist markdown file for editing
71
71
  rpc openFocusChainFile(StringRequest) returns (Empty);
72
+
73
+ // Refreshes all hook toggles (discovers hooks and their enabled state)
74
+ rpc refreshHooks(EmptyRequest) returns (HooksToggles);
75
+
76
+ // Toggles a hook on or off via chmod +x/-x
77
+ rpc toggleHook(ToggleHookRequest) returns (ToggleHookResponse);
78
+
79
+ // Creates a new hook from template
80
+ rpc createHook(CreateHookRequest) returns (CreateHookResponse);
81
+
82
+ // Deletes an existing hook file
83
+ rpc deleteHook(DeleteHookRequest) returns (DeleteHookResponse);
72
84
  }
73
85
 
74
86
  // Response for refreshRules operation
@@ -208,3 +220,61 @@ message ToggleWorkflowRequest {
208
220
  bool enabled = 3;
209
221
  RuleScope scope = 4; // Scope of the workflow (local, global, or remote)
210
222
  }
223
+
224
+ // Maps from hook name to enabled/disabled status
225
+ message HookInfo {
226
+ string name = 1;
227
+ bool enabled = 2;
228
+ string absolute_path = 3;
229
+ }
230
+
231
+ message WorkspaceHooks {
232
+ string workspace_name = 1;
233
+ repeated HookInfo hooks = 2;
234
+ }
235
+
236
+ message HooksToggles {
237
+ repeated HookInfo global_hooks = 1;
238
+ repeated WorkspaceHooks workspace_hooks = 2;
239
+ bool is_windows = 3; // Whether the system is Windows (toggles disabled)
240
+ }
241
+
242
+ // Request to toggle a hook
243
+ message ToggleHookRequest {
244
+ Metadata metadata = 1;
245
+ string hook_name = 2; // Name of the hook (e.g., "TaskStart")
246
+ bool is_global = 3; // Whether this is a global or workspace hook
247
+ bool enabled = 4; // Whether to enable (chmod +x) or disable (chmod -x)
248
+ optional string workspace_name = 5; // For multi-root workspaces, specifies which workspace
249
+ }
250
+
251
+ // Response for toggleHook operation
252
+ message ToggleHookResponse {
253
+ HooksToggles hooks_toggles = 1;
254
+ }
255
+
256
+ // Request to create a hook
257
+ message CreateHookRequest {
258
+ Metadata metadata = 1;
259
+ string hook_name = 2; // Name of the hook to create
260
+ bool is_global = 3; // Whether to create in global or workspace hooks directory
261
+ optional string workspace_name = 4; // For multi-root workspaces, specifies which workspace
262
+ }
263
+
264
+ // Response for createHook operation
265
+ message CreateHookResponse {
266
+ HooksToggles hooks_toggles = 1;
267
+ }
268
+
269
+ // Request to delete a hook
270
+ message DeleteHookRequest {
271
+ Metadata metadata = 1;
272
+ string hook_name = 2; // Name of the hook to delete
273
+ bool is_global = 3; // Whether this is a global or workspace hook
274
+ optional string workspace_name = 4; // For multi-root workspaces, specifies which workspace
275
+ }
276
+
277
+ // Response for deleteHook operation
278
+ message DeleteHookResponse {
279
+ HooksToggles hooks_toggles = 1;
280
+ }
@@ -27,8 +27,12 @@ service ModelsService {
27
27
  rpc refreshRequestyModels(EmptyRequest) returns (OpenRouterCompatibleModelInfo);
28
28
  // Refreshes and returns Hicap models
29
29
  rpc refreshHicapModels(EmptyRequest) returns (OpenRouterCompatibleModelInfo);
30
+ // Refreshes and returns LiteLLM models
31
+ rpc refreshLiteLlmModelsRpc(EmptyRequest) returns (OpenRouterCompatibleModelInfo);
30
32
  // Subscribe to OpenRouter models updates
31
33
  rpc subscribeToOpenRouterModels(EmptyRequest) returns (stream OpenRouterCompatibleModelInfo);
34
+ // Subscribe to LiteLLM models updates
35
+ rpc subscribeToLiteLlmModels(EmptyRequest) returns (stream OpenRouterCompatibleModelInfo);
32
36
  // Updates API configuration (legacy - uses combined configuration)
33
37
  rpc updateApiConfigurationProto(UpdateApiConfigurationRequest) returns (Empty);
34
38
  // Updates API configuration (new - uses separate options and secrets)
@@ -97,6 +101,8 @@ message OpenRouterModelInfo {
97
101
  optional bool supports_global_endpoint = 11;
98
102
  repeated ModelTier tiers = 12;
99
103
  optional string name = 13;
104
+ optional double temperature = 14;
105
+ optional bool supports_reasoning = 15;
100
106
  }
101
107
 
102
108
  // Shared response message for model information
@@ -588,6 +594,7 @@ message ModelsApiConfiguration {
588
594
  optional string plan_mode_aihubmix_model_id = 135;
589
595
  optional OpenAiCompatibleModelInfo plan_mode_aihubmix_model_info = 136;
590
596
  optional string plan_mode_nous_research_model_id = 137;
597
+ optional string gemini_plan_mode_thinking_level = 138;
591
598
 
592
599
  // Act mode configurations
593
600
  optional ApiProvider act_mode_api_provider = 200;
@@ -628,4 +635,5 @@ message ModelsApiConfiguration {
628
635
  optional string act_mode_aihubmix_model_id = 235;
629
636
  optional OpenAiCompatibleModelInfo act_mode_aihubmix_model_info = 236;
630
637
  optional string act_mode_nous_research_model_id = 237;
638
+ optional string gemini_act_mode_thinking_level = 238;
631
639
  }
@@ -362,7 +362,7 @@ message UpdateSettingsRequest {
362
362
  optional int32 subagent_terminal_output_line_limit = 30;
363
363
  optional string cline_env = 31;
364
364
  optional bool native_tool_call_enabled = 32;
365
- optional bool show_onboarding_flow = 33;
365
+ optional OnboardingModelGroup onboarding_models = 33;
366
366
  }
367
367
 
368
368
  message UpdateTerminalConnectionTimeoutRequest {
@@ -390,3 +390,17 @@ message OnboardingProgressRequest {
390
390
  optional bool completed = 3;
391
391
  optional string model_selected = 4;
392
392
  }
393
+
394
+ message OnboardingModelGroup {
395
+ repeated OnboardingModel models = 1;
396
+ }
397
+
398
+ message OnboardingModel {
399
+ string id = 1;
400
+ string name = 2;
401
+ int32 score = 3;
402
+ int32 latency = 4;
403
+ string badge = 5;
404
+ string group = 6;
405
+ OpenRouterModelInfo info = 7;
406
+ }
Binary file