@tencent-ai/codebuddy-code 2.137.0 → 2.137.1-dev.1af6537.202608210308

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.137.0",
3
+ "version": "2.137.1-dev.1af6537.202608210308",
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",
@@ -43,7 +43,8 @@
43
43
  "url": "https://cnb.cool/codebuddy/codebuddy-code/-/issues"
44
44
  },
45
45
  "publishConfig": {
46
- "access": "public"
46
+ "access": "public",
47
+ "tag": "dev"
47
48
  },
48
49
  "scripts": {},
49
50
  "devDependencies": {}
@@ -470,7 +470,7 @@
470
470
  }
471
471
  },
472
472
  {
473
- "credits": "x0.16 credits",
473
+ "credits": "x0.25 credits",
474
474
  "id": "deepseek-v4-pro",
475
475
  "name": "Deepseek-V4-Pro",
476
476
  "vendor": "f",
@@ -494,7 +494,7 @@
494
494
  }
495
495
  },
496
496
  {
497
- "credits": "x0.05 credits",
497
+ "credits": "x0.08 credits",
498
498
  "id": "deepseek-v4-flash",
499
499
  "name": "Deepseek-V4-Flash",
500
500
  "vendor": "f",
@@ -734,7 +734,7 @@
734
734
  }
735
735
  },
736
736
  {
737
- "credits": "x0.16 credits",
737
+ "credits": "x0.25 credits",
738
738
  "id": "deepseek-v4-pro-exclusive",
739
739
  "name": "Deepseek-V4-Pro",
740
740
  "vendor": "f",
@@ -816,6 +816,6 @@
816
816
  "SelectImage": true,
817
817
  "SkipToolCallSupportCheck": true
818
818
  },
819
- "commit": "ed22bc24b734b6b197983588cb38277d3a4a17dd",
820
- "date": "2026-08-15T16:05:01.601Z"
819
+ "commit": "1af6537b9e72954f85efb29af76c847b16368e6b",
820
+ "date": "2026-08-20T19:07:46.055Z"
821
821
  }
@@ -823,6 +823,6 @@
823
823
  }
824
824
  }
825
825
  },
826
- "commit": "ed22bc24b734b6b197983588cb38277d3a4a17dd",
827
- "date": "2026-08-15T16:05:01.664Z"
826
+ "commit": "1af6537b9e72954f85efb29af76c847b16368e6b",
827
+ "date": "2026-08-20T19:07:46.175Z"
828
828
  }
package/product.ioa.json CHANGED
@@ -1319,6 +1319,6 @@
1319
1319
  }
1320
1320
  }
1321
1321
  },
1322
- "commit": "ed22bc24b734b6b197983588cb38277d3a4a17dd",
1323
- "date": "2026-08-15T16:05:01.600Z"
1322
+ "commit": "1af6537b9e72954f85efb29af76c847b16368e6b",
1323
+ "date": "2026-08-20T19:07:46.094Z"
1324
1324
  }
package/product.json CHANGED
@@ -1559,16 +1559,8 @@
1559
1559
  ],
1560
1560
  "builtInMarketplaces": {
1561
1561
  "codebuddy-plugins-official": {
1562
- "source": "zip",
1563
- "url": "https://download.codebuddy.cn/plugin-marketplace/codebuddy-plugins-official.zip",
1564
- "metaUrl": "https://download.codebuddy.cn/plugin-marketplace/codebuddy-plugins-official.json",
1565
- "versionUrl": "https://download.codebuddy.cn/plugin-marketplace/version/codebuddy-plugins-official.txt"
1566
- },
1567
- "cb_teams_marketplace": {
1568
- "source": "zip",
1569
- "url": "https://download.codebuddy.cn/plugin-marketplace/cb_teams_marketplace.zip",
1570
- "metaUrl": "https://download.codebuddy.cn/plugin-marketplace/cb_teams_marketplace.json",
1571
- "versionUrl": "https://download.codebuddy.cn/plugin-marketplace/version/cb_teams_marketplace.txt"
1562
+ "source": "git",
1563
+ "url": "https://cnb.cool/codebuddy/marketplace"
1572
1564
  }
1573
1565
  },
1574
1566
  "deploymentType": "SaaS",
@@ -1832,6 +1824,6 @@
1832
1824
  "description": "tool-repl-description"
1833
1825
  }
1834
1826
  ],
1835
- "commit": "ed22bc24b734b6b197983588cb38277d3a4a17dd",
1836
- "date": "2026-08-15T16:05:01.660Z"
1827
+ "commit": "1af6537b9e72954f85efb29af76c847b16368e6b",
1828
+ "date": "2026-08-20T19:07:46.063Z"
1837
1829
  }
@@ -353,6 +353,6 @@
353
353
  "ScheduledTasks": true,
354
354
  "SkipToolCallSupportCheck": true
355
355
  },
356
- "commit": "ed22bc24b734b6b197983588cb38277d3a4a17dd",
357
- "date": "2026-08-15T16:05:01.610Z"
356
+ "commit": "1af6537b9e72954f85efb29af76c847b16368e6b",
357
+ "date": "2026-08-20T19:07:46.102Z"
358
358
  }
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Shared brokered Program Blacklist check for command shims.
3
+ *
4
+ * CLI contract: `node broker-program-policy-check.cjs <program> [runtime] [brokerClientPath]`
5
+ * Exit codes: 0 = allowed/not configured, 126 = forbidden program,
6
+ * 13 = policy check unavailable or otherwise denied.
7
+ */
8
+
9
+ 'use strict';
10
+
11
+ const fs = require('fs');
12
+ const path = require('path');
13
+
14
+ function checkProgramPolicy(program, runtime = 'brokered-program-policy', options = {}) {
15
+ const command = options.command || process.env.CODEBUDDY_SANDBOX_PROGRAM_POLICY_COMMAND;
16
+ if (!command) {
17
+ return { code: 0 };
18
+ }
19
+
20
+ const socketPath = options.socketPath || process.env.CODEBUDDY_SANDBOX_BROKER_IPC_ADDRESS;
21
+ const sessionId = options.sessionId || process.env.CODEBUDDY_SANDBOX_BROKER_SESSION_ID;
22
+ const brokerClientPath = options.brokerClientPath || path.join(__dirname, 'broker-ipc-client.cjs');
23
+ if (!program || !socketPath || !sessionId || !fs.existsSync(brokerClientPath)) {
24
+ return { code: 13, error: 'Brokered program policy check unavailable' };
25
+ }
26
+
27
+ try {
28
+ const { sendBrokerRequestSync } = require(brokerClientPath);
29
+ const response = sendBrokerRequestSync({
30
+ command,
31
+ program,
32
+ sessionId,
33
+ toolCallId: options.toolCallId || process.env.CODEBUDDY_SANDBOX_BROKER_TOOL_CALL_ID,
34
+ brokerTraceId: options.brokerTraceId || process.env.CODEBUDDY_SANDBOX_BROKER_TRACE_ID,
35
+ runtime,
36
+ });
37
+ if (response && response.ok === true && response.decision === 'allow') {
38
+ return { code: 0, response };
39
+ }
40
+ return {
41
+ code: response && response.reason === 'forbidden_program' ? 126 : 13,
42
+ error: response && response.error
43
+ ? response.error
44
+ : `Brokered program policy denied "${program}"`,
45
+ response,
46
+ };
47
+ } catch (_) {
48
+ return { code: 13, error: 'Brokered program policy check unavailable' };
49
+ }
50
+ }
51
+
52
+ function runCli(argv = process.argv.slice(2)) {
53
+ const [program, runtime, brokerClientPath] = argv;
54
+ const result = checkProgramPolicy(program, runtime || 'brokered-program-policy', { brokerClientPath });
55
+ if (result.error) {
56
+ process.stderr.write(result.error);
57
+ }
58
+ return result.code;
59
+ }
60
+
61
+ module.exports = {
62
+ checkProgramPolicy,
63
+ runCli,
64
+ };
65
+
66
+ if (require.main === module) {
67
+ process.exit(runCli());
68
+ }
@@ -4,6 +4,7 @@ __cb_app="${0##*/}"
4
4
  __cb_toybox="${CODEBUDDY_TOYBOX_BIN:-}"
5
5
  __cb_brokered_dir="${CODEBUDDY_BROKERED_BIN_DIR:-${0%/*}}"
6
6
  __cb_broker_client="${CODEBUDDY_BROKER_IPC_CLIENT:-${__cb_brokered_dir%/brokered-bin}/broker-ipc-client.cjs}"
7
+ __cb_program_policy_helper="${__cb_brokered_dir%/brokered-bin}/broker-program-policy-check.cjs"
7
8
 
8
9
  __cb_cleanup() { /bin/rm -f "$__cb_err" 2>/dev/null || true; }
9
10
 
@@ -13,28 +14,13 @@ __cb_check_program_policy() {
13
14
  [ -n "${CODEBUDDY_SANDBOX_PROGRAM_POLICY_COMMAND:-}" ] || return 0
14
15
  if [ -z "${CODEBUDDY_SANDBOX_BROKER_IPC_ADDRESS:-}" ] \
15
16
  || [ -z "${CODEBUDDY_SANDBOX_BROKER_SESSION_ID:-}" ] \
16
- || [ ! -f "$__cb_broker_client" ]; then
17
+ || [ ! -f "$__cb_broker_client" ] \
18
+ || [ ! -f "$__cb_program_policy_helper" ]; then
17
19
  printf '%s' 'Brokered program policy check unavailable' >&2
18
20
  return 13
19
21
  fi
20
-
21
- NODE_OPTIONS= "${CODEBUDDY_NODE_BIN:-node}" - "$__cb_broker_client" "$1" <<'NODE'
22
- const { sendBrokerRequestSync } = require(process.argv[2]);
23
- const program = process.argv[3];
24
- const response = sendBrokerRequestSync({
25
- command: process.env.CODEBUDDY_SANDBOX_PROGRAM_POLICY_COMMAND,
26
- program,
27
- sessionId: process.env.CODEBUDDY_SANDBOX_BROKER_SESSION_ID,
28
- toolCallId: process.env.CODEBUDDY_SANDBOX_BROKER_TOOL_CALL_ID,
29
- brokerTraceId: process.env.CODEBUDDY_SANDBOX_BROKER_TRACE_ID,
30
- runtime: 'toybox-dispatch',
31
- });
32
- if (response && response.ok === true && response.decision === 'allow') {
33
- process.exit(0);
34
- }
35
- process.stderr.write(response && response.error ? response.error : `Brokered program policy denied "${program}"`);
36
- process.exit(response && response.reason === 'forbidden_program' ? 126 : 13);
37
- NODE
22
+ NODE_OPTIONS= "${CODEBUDDY_NODE_BIN:-node}" \
23
+ "$__cb_program_policy_helper" "$1" toybox-dispatch "$__cb_broker_client"
38
24
  }
39
25
 
40
26
  __cb_check_program_policy "$__cb_app"
@@ -459,6 +459,24 @@ trash_one() {
459
459
  esac
460
460
  }
461
461
 
462
+ safe_delete_check_program_policy() {
463
+ local program="$1"
464
+ [ -n "${CODEBUDDY_SANDBOX_PROGRAM_POLICY_COMMAND:-}" ] || return 0
465
+
466
+ local helper="${SAFE_DELETE_BIN_DIR%/safe-bin}/broker-program-policy-check.cjs"
467
+ local broker_client="${SAFE_DELETE_BIN_DIR%/safe-bin}/broker-ipc-client.cjs"
468
+ local node_bin="${CODEBUDDY_NODE_BIN:-node}"
469
+ if [ -z "${CODEBUDDY_SANDBOX_BROKER_IPC_ADDRESS:-}" ] \
470
+ || [ -z "${CODEBUDDY_SANDBOX_BROKER_SESSION_ID:-}" ] \
471
+ || [ ! -f "$broker_client" ] \
472
+ || [ ! -f "$helper" ]; then
473
+ printf '%s' 'Brokered program policy check unavailable' >&2
474
+ return 13
475
+ fi
476
+
477
+ NODE_OPTIONS= "$node_bin" "$helper" "$program" safe-delete "$broker_client"
478
+ }
479
+
462
480
  try_broker_delete() {
463
481
  local abs="$1"
464
482
  local recursive="${2:-false}"
@@ -733,6 +751,9 @@ safe_delete_rmdir() {
733
751
  safe_delete_main() {
734
752
  local mode="$1"
735
753
  shift
754
+ safe_delete_check_program_policy "$mode"
755
+ local program_policy_rc=$?
756
+ [ $program_policy_rc -eq 0 ] || return $program_policy_rc
736
757
  case "$mode" in
737
758
  rm) safe_delete_rm "$@"; return $? ;;
738
759
  unlink) safe_delete_unlink "$@"; return $? ;;
@@ -932,21 +932,24 @@ if _SESSION_ID:
932
932
  except Exception:
933
933
  return "unavailable"
934
934
 
935
+ def _emit_safe_delete_fail_closed(abs_path, reason, detail=None):
936
+ payload = {
937
+ "target": abs_path,
938
+ "reason": reason,
939
+ }
940
+ if detail:
941
+ payload["detail"] = detail
942
+ message = (
943
+ "[safe-delete][SAFE_DELETE_FAIL_CLOSED] "
944
+ + json.dumps(payload, ensure_ascii=False)
945
+ )
946
+ try:
947
+ sys.stderr.write(message + "\n")
948
+ sys.stderr.flush()
949
+ except Exception:
950
+ pass
951
+
935
952
  def _try_trash(abs_path, recursive=False, force=False):
936
- if sys.platform == "win32" and _IN_SANDBOX:
937
- message = (
938
- "[safe-delete][SAFE_DELETE_FAIL_CLOSED] "
939
- + json.dumps({
940
- "target": abs_path,
941
- "reason": "windows-sandbox-recycle-bin-unavailable",
942
- }, ensure_ascii=False)
943
- )
944
- try:
945
- sys.stderr.write(message + "\n")
946
- sys.stderr.flush()
947
- except Exception:
948
- pass
949
- raise OSError(message)
950
953
  _check_bulk_delete_guard(abs_path)
951
954
 
952
955
  broker_result = _try_broker_delete(abs_path, recursive=recursive, force=force)
@@ -957,10 +960,14 @@ if _SESSION_ID:
957
960
  "[safe-delete] broker denied delete: path=%s" % abs_path
958
961
  )
959
962
 
960
- if _try_trash_via_binary(abs_path):
961
- _record_trash(abs_path)
962
- return True
963
- _platform_trash(abs_path)
963
+ try:
964
+ if _try_trash_via_binary(abs_path):
965
+ _record_trash(abs_path)
966
+ return True
967
+ _platform_trash(abs_path)
968
+ except Exception as e:
969
+ _emit_safe_delete_fail_closed(abs_path, "trash-failed", str(e))
970
+ raise
964
971
  _record_trash(abs_path)
965
972
  return True
966
973