@tencent-ai/codebuddy-code 2.111.0 → 2.112.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tencent-ai/codebuddy-code",
3
- "version": "2.111.0",
3
+ "version": "2.112.0",
4
4
  "description": "Use CodeBuddy, Tencent's AI assistant, right from your terminal. CodeBuddy can understand your codebase, edit files, run terminal commands, and handle entire workflows for you.",
5
5
  "main": "lib/node/index.js",
6
6
  "typings": "lib/node/index.d.ts",
@@ -824,6 +824,6 @@
824
824
  "SelectImage": true,
825
825
  "SkipToolCallSupportCheck": true
826
826
  },
827
- "commit": "4eca48aec10b3fe47724b6efb47257806d00bb4b",
828
- "date": "2026-06-26T03:31:41.954Z"
827
+ "commit": "3851e20f891785418176b0753407f2d0ba7de138",
828
+ "date": "2026-06-26T06:43:21.432Z"
829
829
  }
@@ -703,6 +703,6 @@
703
703
  }
704
704
  }
705
705
  },
706
- "commit": "4eca48aec10b3fe47724b6efb47257806d00bb4b",
707
- "date": "2026-06-26T03:31:42.011Z"
706
+ "commit": "3851e20f891785418176b0753407f2d0ba7de138",
707
+ "date": "2026-06-26T06:43:21.307Z"
708
708
  }
package/product.ioa.json CHANGED
@@ -1050,10 +1050,17 @@
1050
1050
  },
1051
1051
  {
1052
1052
  "credits": "x10.00 credits",
1053
- "id": "hunyuan-video-art",
1054
- "name": "Hunyuan-Video-Art",
1053
+ "id": "kling-v3-t2v",
1054
+ "name": "Kling-V3-T2V",
1055
+ "tags": [
1056
+ "text-to-video"
1057
+ ]
1058
+ },
1059
+ {
1060
+ "credits": "x10.00 credits",
1061
+ "id": "kling-v3-i2v",
1062
+ "name": "Kling-V3-I2V",
1055
1063
  "tags": [
1056
- "text-to-video",
1057
1064
  "image-to-video"
1058
1065
  ]
1059
1066
  }
@@ -1106,6 +1113,6 @@
1106
1113
  }
1107
1114
  }
1108
1115
  },
1109
- "commit": "4eca48aec10b3fe47724b6efb47257806d00bb4b",
1110
- "date": "2026-06-26T03:31:41.943Z"
1116
+ "commit": "3851e20f891785418176b0753407f2d0ba7de138",
1117
+ "date": "2026-06-26T06:43:21.456Z"
1111
1118
  }
package/product.json CHANGED
@@ -479,10 +479,17 @@
479
479
  },
480
480
  {
481
481
  "credits": "x10.00 credits",
482
- "id": "hunyuan-video-art",
483
- "name": "Hunyuan-Video-Art",
482
+ "id": "kling-v3-t2v",
483
+ "name": "Kling-V3-T2V",
484
+ "tags": [
485
+ "text-to-video"
486
+ ]
487
+ },
488
+ {
489
+ "credits": "x10.00 credits",
490
+ "id": "kling-v3-i2v",
491
+ "name": "Kling-V3-I2V",
484
492
  "tags": [
485
- "text-to-video",
486
493
  "image-to-video"
487
494
  ]
488
495
  }
@@ -1769,6 +1776,6 @@
1769
1776
  "deferLoading": true
1770
1777
  }
1771
1778
  ],
1772
- "commit": "4eca48aec10b3fe47724b6efb47257806d00bb4b",
1773
- "date": "2026-06-26T03:31:42.022Z"
1779
+ "commit": "3851e20f891785418176b0753407f2d0ba7de138",
1780
+ "date": "2026-06-26T06:43:21.312Z"
1774
1781
  }
@@ -339,6 +339,6 @@
339
339
  "ScheduledTasks": true,
340
340
  "SkipToolCallSupportCheck": true
341
341
  },
342
- "commit": "4eca48aec10b3fe47724b6efb47257806d00bb4b",
343
- "date": "2026-06-26T03:31:41.980Z"
342
+ "commit": "3851e20f891785418176b0753407f2d0ba7de138",
343
+ "date": "2026-06-26T06:43:21.309Z"
344
344
  }
Binary file
@@ -120,10 +120,59 @@ function buildNpmCacheTmpDirs() {
120
120
  }
121
121
 
122
122
  const NPM_CACHE_TMP_DIRS = buildNpmCacheTmpDirs();
123
+ const WORKBUDDY_CONFIG_DIRS = [
124
+ process.env.WORKBUDDY_CONFIG_DIR,
125
+ process.env.CODEBUDDY_CONFIG_DIR,
126
+ ].filter(candidate => candidate && candidate.trim())
127
+ .map(candidate => normalizePathForCompare(candidate.trim()));
128
+ const NPM_CACHE_LOG_DIRS = [
129
+ PLATFORM === 'win32' && process.env.LOCALAPPDATA
130
+ ? path.join(process.env.LOCALAPPDATA, 'npm-cache', '_logs')
131
+ : null,
132
+ PLATFORM !== 'win32' && os.homedir()
133
+ ? path.join(os.homedir(), '.npm', '_logs')
134
+ : null,
135
+ ...WORKBUDDY_CONFIG_DIRS.map(configDir =>
136
+ path.join(configDir, 'binaries', 'node', 'cli-connector-cache', '_logs')
137
+ ),
138
+ ].filter(Boolean).map(root => normalizePathForCompare(root));
139
+
140
+ function isNpmCacheLogFile(absPath) {
141
+ const target = normalizePathForCompare(absPath);
142
+ const baseName = path.basename(target);
143
+ if (!baseName.toLowerCase().endsWith('.log')) return false;
144
+ const parent = normalizePathForCompare(path.dirname(target));
145
+ return NPM_CACHE_LOG_DIRS.includes(parent);
146
+ }
147
+
148
+ function isManagedNodeStagingName(name) {
149
+ const match = name.match(/^\.[^/\\]+-([A-Za-z0-9_-]{6,})$/);
150
+ return !!match && /[A-Za-z]/.test(match[1]) && /\d/.test(match[1]);
151
+ }
152
+
153
+ function isWorkBuddyManagedNodeInstallStagingPath(absPath) {
154
+ const target = normalizePathForCompare(absPath);
155
+ return WORKBUDDY_CONFIG_DIRS.some(configDir => {
156
+ const rel = path.relative(configDir, target);
157
+ if (!rel || rel === '..' || rel.startsWith(`..${path.sep}`) || path.isAbsolute(rel)) {
158
+ return false;
159
+ }
160
+
161
+ const parts = rel.split(path.sep).filter(Boolean);
162
+ if (parts[0] !== 'binaries' || parts[1] !== 'node') return false;
163
+ const nodeModulesIndex = parts.lastIndexOf('node_modules');
164
+ const stagingName = parts[nodeModulesIndex + 1];
165
+ if (nodeModulesIndex < 0 || !stagingName || !isManagedNodeStagingName(stagingName)) return false;
166
+ return (parts[2] === 'versions' && nodeModulesIndex === 4)
167
+ || parts[2] === 'cli-connector-packages';
168
+ });
169
+ }
123
170
 
124
171
  function shouldUseNativeDelete(absPath) {
125
172
  return isUnderAnyTempDir(absPath, OS_TMP_DIRS)
126
- || isUnderAnyTempDir(absPath, NPM_CACHE_TMP_DIRS);
173
+ || isUnderAnyTempDir(absPath, NPM_CACHE_TMP_DIRS)
174
+ || isNpmCacheLogFile(absPath)
175
+ || isWorkBuddyManagedNodeInstallStagingPath(absPath);
127
176
  }
128
177
 
129
178
  function recordTrash(absPath) {
@@ -475,7 +475,7 @@ if _SESSION_ID:
475
475
  return True
476
476
  return False
477
477
 
478
- def _is_pip_site_packages_backup_dir(abs_path):
478
+ def _is_pip_site_packages_temp_dir(abs_path):
479
479
  try:
480
480
  target = _path_for_compare(os.fsdecode(abs_path))
481
481
  except (TypeError, UnicodeError):
@@ -485,7 +485,7 @@ if _SESSION_ID:
485
485
  if part not in ("site-packages", "dist-packages"):
486
486
  continue
487
487
  backup_root = parts[index + 1]
488
- if backup_root.startswith("~"):
488
+ if backup_root.startswith("~") or backup_root.startswith("accesstest_deleteme"):
489
489
  return True
490
490
  return False
491
491
 
@@ -498,7 +498,7 @@ if _SESSION_ID:
498
498
  if dir_fd is not None:
499
499
  return _orig_remove(path, dir_fd=dir_fd)
500
500
  abs_path = os.path.abspath(os.fspath(path))
501
- if _is_under_os_tmp_dir(abs_path) or _is_pip_site_packages_backup_dir(abs_path):
501
+ if _is_under_os_tmp_dir(abs_path) or _is_pip_site_packages_temp_dir(abs_path):
502
502
  return _orig_remove(path)
503
503
  st = _safe_lstat(abs_path)
504
504
  if not st:
@@ -515,7 +515,7 @@ if _SESSION_ID:
515
515
  if dir_fd is not None:
516
516
  return _orig_rmdir(path, dir_fd=dir_fd)
517
517
  abs_path = os.path.abspath(os.fspath(path))
518
- if _is_under_os_tmp_dir(abs_path) or _is_pip_site_packages_backup_dir(abs_path):
518
+ if _is_under_os_tmp_dir(abs_path) or _is_pip_site_packages_temp_dir(abs_path):
519
519
  return _orig_rmdir(path)
520
520
  st = _safe_lstat(abs_path)
521
521
  if not st:
@@ -539,7 +539,7 @@ if _SESSION_ID:
539
539
  path, ignore_errors=ignore_errors, onerror=onerror, **kwargs
540
540
  )
541
541
 
542
- if _is_under_os_tmp_dir(abs_path) or _is_pip_site_packages_backup_dir(abs_path):
542
+ if _is_under_os_tmp_dir(abs_path) or _is_pip_site_packages_temp_dir(abs_path):
543
543
  return _orig_shutil_rmtree(
544
544
  path, ignore_errors=ignore_errors, onerror=onerror, **kwargs
545
545
  )
@@ -571,7 +571,7 @@ if _SESSION_ID:
571
571
 
572
572
  def _safe_path_unlink(self, missing_ok=False):
573
573
  abs_path = os.path.abspath(str(self))
574
- if _is_under_os_tmp_dir(abs_path) or _is_pip_site_packages_backup_dir(abs_path):
574
+ if _is_under_os_tmp_dir(abs_path) or _is_pip_site_packages_temp_dir(abs_path):
575
575
  return _orig_path_unlink(self, missing_ok=missing_ok)
576
576
  st = _safe_lstat(abs_path)
577
577
  if not st:
@@ -584,7 +584,7 @@ if _SESSION_ID:
584
584
 
585
585
  def _safe_path_rmdir(self):
586
586
  abs_path = os.path.abspath(str(self))
587
- if _is_under_os_tmp_dir(abs_path) or _is_pip_site_packages_backup_dir(abs_path):
587
+ if _is_under_os_tmp_dir(abs_path) or _is_pip_site_packages_temp_dir(abs_path):
588
588
  return _orig_path_rmdir(self)
589
589
  st = _safe_lstat(abs_path)
590
590
  if not st: