@tencent-ai/codebuddy-code 2.127.3 → 2.128.1-dev.42c83b4.202607292236

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.
@@ -216,7 +216,7 @@ CodeBuddy Code 支持把内部 traces 通过 OTLP 协议上报到用户自有的
216
216
  | `CODEBUDDY_DISABLE_REQUEST_VALIDATION` | 设置为 `1` 关闭 Gateway 自定义请求头校验(`X-CodeBuddy-Request`)。详见 [HTTP API 安全](./http-api.md#安全) |
217
217
  | `CODEBUDDY_CODE_CORS_ORIGINS` | 额外的 CORS 允许来源(逗号分隔)。支持精确 origin、`*.domain` 子域通配和 `*` 全开。如 `https://*.example.com,https://specific.com`。未设置时,若服务绑定 `0.0.0.0`(`--host 0.0.0.0`)则自动允许所有来源 |
218
218
  | `SERVER__HOST` | `--serve` 模式监听地址(默认:`127.0.0.1`) |
219
- | `SERVER__PORT` | `--serve` 模式监听端口 |
219
+ | `SERVER__PORT` | `--serve` 模式监听端口;设为 `0` 时由内核自选端口,服务绑定后该变量会被更新为实际监听端口 |
220
220
 
221
221
  ## 企业微信集成
222
222
 
@@ -216,7 +216,7 @@ CodeBuddy Code supports reporting internal traces to your own Collector via the
216
216
  | `CODEBUDDY_DISABLE_REQUEST_VALIDATION` | Set to `1` to disable Gateway custom request header validation (`X-CodeBuddy-Request`). See [HTTP API Security](./http-api.md#security) |
217
217
  | `CODEBUDDY_CODE_CORS_ORIGINS` | Additional CORS allowed origins (comma-separated). Supports exact origins, `*.domain` subdomain wildcards, and `*` for all. E.g., `https://*.example.com,https://specific.com`. When unset, if the service is bound to `0.0.0.0` (`--host 0.0.0.0`), all origins are automatically allowed |
218
218
  | `SERVER__HOST` | Listen address for `--serve` mode (default: `127.0.0.1`) |
219
- | `SERVER__PORT` | Listen port for `--serve` mode |
219
+ | `SERVER__PORT` | Listen port for `--serve` mode; set to `0` for a kernel-assigned port — the variable is updated to the actual listening port once the server is bound |
220
220
 
221
221
  ## WeCom Integration
222
222
 
@@ -15,7 +15,7 @@
15
15
  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
16
16
  <meta name="mobile-web-app-capable" content="yes">
17
17
  <link rel="apple-touch-icon" href="/pwa-icon.svg">
18
- <script type="module" crossorigin src="/assets/index-B1eoHSk4.js"></script>
18
+ <script type="module" crossorigin src="/assets/index-Dl8Dlnne.js"></script>
19
19
  <link rel="modulepreload" crossorigin href="/assets/markdown-CP9awqWt.js">
20
20
  <link rel="modulepreload" crossorigin href="/assets/vendor-iLJwFVtf.js">
21
21
  <link rel="stylesheet" crossorigin href="/assets/index-BmV1Q3hC.css">
package/dist/web-ui/sw.js CHANGED
@@ -1 +1 @@
1
- if(!self.define){let e,s={};const o=(o,n)=>(o=new URL(o+".js",n).href,s[o]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=o,e.onload=s,document.head.appendChild(e)}else e=o,importScripts(o),s()}).then(()=>{let e=s[o];if(!e)throw new Error(`Module ${o} didn’t register its module`);return e}));self.define=(n,i)=>{const l=e||("document"in self?document.currentScript.src:"")||location.href;if(s[l])return;let r={};const t=e=>o(e,l),f={module:{uri:l},exports:r,require:t};s[l]=Promise.all(n.map(e=>f[e]||t(e))).then(e=>(i(...e),r))}}define(["./workbox-fed2bdfe"],function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"sandbox_proxy.html",revision:"e54bd087bf8b90d87d84c3cd8f2c22e9"},{url:"pwa-icon.svg",revision:"673adddf1548f59682764258005b6034"},{url:"logo.svg",revision:"269aa921a3f446f8e17843c89ed7bf35"},{url:"index.html",revision:"d7fc2675e07bd95d7b599f2888f36a9d"},{url:"assets/workbox-window.prod.es5-BBnX5xw4.js",revision:null},{url:"assets/vendor-iLJwFVtf.js",revision:null},{url:"assets/octicons-CaZ_fok2.woff2",revision:null},{url:"assets/mfixx-CpAhKOZz.woff2",revision:null},{url:"assets/markdown-CP9awqWt.js",revision:null},{url:"assets/index-DixJ0kqk.js",revision:null},{url:"assets/index-BmV1Q3hC.css",revision:null},{url:"assets/index-B1eoHSk4.js",revision:null},{url:"assets/fontawesome-B-jkhYfk.woff2",revision:null},{url:"assets/file-icons-C0jOugUK.woff2",revision:null},{url:"assets/devopicons-QN4QXivI.woff2",revision:null},{url:"logo.svg",revision:"269aa921a3f446f8e17843c89ed7bf35"},{url:"pwa-icon.svg",revision:"673adddf1548f59682764258005b6034"},{url:"manifest.webmanifest",revision:"7a003d0094122eb3e607566c757e9885"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api/,/^\/gateway/,/^\/docs\//]})),e.registerRoute(/^https:\/\/fonts\.googleapis\.com/,new e.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[]}),"GET"),e.registerRoute(/^https:\/\/fonts\.gstatic\.com/,new e.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new e.ExpirationPlugin({maxEntries:20,maxAgeSeconds:31536e3})]}),"GET")});
1
+ if(!self.define){let e,s={};const n=(n,o)=>(n=new URL(n+".js",o).href,s[n]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=s,document.head.appendChild(e)}else e=n,importScripts(n),s()}).then(()=>{let e=s[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e}));self.define=(o,i)=>{const l=e||("document"in self?document.currentScript.src:"")||location.href;if(s[l])return;let r={};const t=e=>n(e,l),f={module:{uri:l},exports:r,require:t};s[l]=Promise.all(o.map(e=>f[e]||t(e))).then(e=>(i(...e),r))}}define(["./workbox-fed2bdfe"],function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"sandbox_proxy.html",revision:"e54bd087bf8b90d87d84c3cd8f2c22e9"},{url:"pwa-icon.svg",revision:"673adddf1548f59682764258005b6034"},{url:"logo.svg",revision:"269aa921a3f446f8e17843c89ed7bf35"},{url:"index.html",revision:"384e5ef8d717460fa7e6dd3c9b11493b"},{url:"assets/workbox-window.prod.es5-BBnX5xw4.js",revision:null},{url:"assets/vendor-iLJwFVtf.js",revision:null},{url:"assets/octicons-CaZ_fok2.woff2",revision:null},{url:"assets/mfixx-CpAhKOZz.woff2",revision:null},{url:"assets/markdown-CP9awqWt.js",revision:null},{url:"assets/index-Dl8Dlnne.js",revision:null},{url:"assets/index-DixJ0kqk.js",revision:null},{url:"assets/index-BmV1Q3hC.css",revision:null},{url:"assets/fontawesome-B-jkhYfk.woff2",revision:null},{url:"assets/file-icons-C0jOugUK.woff2",revision:null},{url:"assets/devopicons-QN4QXivI.woff2",revision:null},{url:"logo.svg",revision:"269aa921a3f446f8e17843c89ed7bf35"},{url:"pwa-icon.svg",revision:"673adddf1548f59682764258005b6034"},{url:"manifest.webmanifest",revision:"7a003d0094122eb3e607566c757e9885"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api/,/^\/gateway/,/^\/docs\//]})),e.registerRoute(/^https:\/\/fonts\.googleapis\.com/,new e.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[]}),"GET"),e.registerRoute(/^https:\/\/fonts\.gstatic\.com/,new e.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new e.ExpirationPlugin({maxEntries:20,maxAgeSeconds:31536e3})]}),"GET")});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tencent-ai/codebuddy-code",
3
- "version": "2.127.3",
3
+ "version": "2.128.1-dev.42c83b4.202607292236",
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",
@@ -19,9 +19,9 @@
19
19
  "@lydell/node-pty-linux-x64": "1.2.0-beta.14",
20
20
  "@lydell/node-pty-win32-arm64": "1.2.0-beta.14",
21
21
  "@lydell/node-pty-win32-x64": "1.2.0-beta.14",
22
- "@tencent-ai/sandbox-cli-darwin-arm64": "5.4.0-beta.6",
23
- "@tencent-ai/sandbox-cli-darwin-x64": "5.4.0-beta.6",
24
- "@tencent-ai/sandbox-cli-win32-x64": "5.4.0-beta.6"
22
+ "@tencent-ai/sandbox-cli-darwin-arm64": "5.4.0-beta.9",
23
+ "@tencent-ai/sandbox-cli-darwin-x64": "5.4.0-beta.9",
24
+ "@tencent-ai/sandbox-cli-win32-x64": "5.4.0-beta.9"
25
25
  },
26
26
  "keywords": [
27
27
  "codebuddy",
@@ -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": {}
@@ -60,6 +60,8 @@
60
60
  "DelegateTool",
61
61
  "WeChatReply",
62
62
  "WeComReply",
63
+ "PushNotification",
64
+ "ReportFindings",
63
65
  "ComputerUse",
64
66
  "ListMcpResources",
65
67
  "ReadMcpResource",
@@ -830,6 +832,6 @@
830
832
  "SelectImage": true,
831
833
  "SkipToolCallSupportCheck": true
832
834
  },
833
- "commit": "04b0be91111616019aa1edadaa0a1a108c577c2c",
834
- "date": "2026-07-27T13:09:05.324Z"
835
+ "commit": "42c83b4f21b9c039516b92d106cd70eed83d5c44",
836
+ "date": "2026-07-29T14:36:13.047Z"
835
837
  }
@@ -74,6 +74,8 @@
74
74
  "DelegateTool",
75
75
  "WeChatReply",
76
76
  "WeComReply",
77
+ "PushNotification",
78
+ "ReportFindings",
77
79
  "ComputerUse",
78
80
  "ListMcpResources",
79
81
  "ReadMcpResource",
@@ -813,6 +815,6 @@
813
815
  }
814
816
  }
815
817
  },
816
- "commit": "04b0be91111616019aa1edadaa0a1a108c577c2c",
817
- "date": "2026-07-27T13:09:05.317Z"
818
+ "commit": "42c83b4f21b9c039516b92d106cd70eed83d5c44",
819
+ "date": "2026-07-29T14:36:12.982Z"
818
820
  }
package/product.ioa.json CHANGED
@@ -96,6 +96,8 @@
96
96
  "DelegateTool",
97
97
  "WeChatReply",
98
98
  "WeComReply",
99
+ "PushNotification",
100
+ "ReportFindings",
99
101
  "ComputerUse",
100
102
  "ListMcpResources",
101
103
  "ReadMcpResource",
@@ -1309,6 +1311,6 @@
1309
1311
  }
1310
1312
  }
1311
1313
  },
1312
- "commit": "04b0be91111616019aa1edadaa0a1a108c577c2c",
1313
- "date": "2026-07-27T13:09:05.320Z"
1314
+ "commit": "42c83b4f21b9c039516b92d106cd70eed83d5c44",
1315
+ "date": "2026-07-29T14:36:13.014Z"
1314
1316
  }
package/product.json CHANGED
@@ -31,7 +31,9 @@
31
31
  "copilot.tencent.com",
32
32
  "staging-copilot.tencent.com",
33
33
  "www.codebuddy.cn",
34
- "staging.codebuddy.cn"
34
+ "staging.codebuddy.cn",
35
+ "www.workbuddy.cn",
36
+ "staging.workbuddy.cn"
35
37
  ],
36
38
  "externalDomain": [
37
39
  "www.codebuddy.ai",
@@ -733,7 +735,7 @@
733
735
  },
734
736
  {
735
737
  "name": "tool-websearch-description",
736
- "template": "\n- Searches the web and uses the results to inform responses\n- Provides up-to-date information for current events and recent data\n- Returns search result information formatted as search result blocks\n- Use this tool for accessing information beyond the knowledge cutoff\n- Searches are performed automatically within a single API call\n\nUsage notes:\n - Domain filtering is supported to include or block specific websites\n - Must use the current date provided in the context for search queries.\n - Use `query_keyword_groups` when comparisons, explicit multi-topic research, or coverage-improving query variants across phrasings/languages/sub-angles are helpful; keep `query` as the main intent, max 5 groups.\n Example: \"NVIDIA stock and AI chip market latest news\" query_keyword_groups: [\"NVIDIA stock latest news\", \"AI chip market latest news\", \"英伟达 股价 AI芯片 最新动态\"]\n - Use the `topic` parameter to specify the search domain for better relevance. Supported values: general (default), news, programming, documentation, academic, finance, technology, legal, medical.\n"
738
+ "template": "\n- Searches the web and uses the results to inform responses\n- Provides up-to-date information for current events and recent data\n- Returns search result information formatted as search result blocks\n- Use this tool for accessing information beyond the knowledge cutoff\n- Searches are performed automatically within a single API call\n- You MUST use the current_time provided in the user message when searching for recent information.\n\nWhen to search:\n - For any factual question about the present-day world, you MUST search before answering; search before EVERY such question.\n - Your confidence on a topic is NOT an excuse to skip search. Present-day facts who holds a role, what something costs, whether a law still applies, what's newest in a category — cannot come from training data.\n - Even seemingly familiar questions for example asking about the price of a product or who currently leads a country — can be outdated, because prices and officeholders change frequently.\n - Proactively search instead of answering from your priors and offering to check.\n\nUsage notes:\n - The query must preserve the meaning of the user's request; keep the entity names, versions, dates and terms the user mentioned, and do not substitute or fill them in from prior knowledge.\n - Domain filtering is supported to include or block specific websites.\n"
737
739
  },
738
740
  {
739
741
  "name": "tool-enterplanmode-description",
@@ -949,7 +951,7 @@
949
951
  },
950
952
  {
951
953
  "name": "code-review-trigger-reminder",
952
- "template": "<system-reminder data-role=\"code-review-trigger\">\nThe user invoked `/code-review`{{target}} to review code for bugs and quality issues.\n{%- if fix %}\nThe user requested --fix: after the review, apply the findings to the working tree.\n{%- endif %}\n{%- if comment %}\nThe user requested --comment: after the review, post findings as inline PR comments.\n{%- endif %}\n\nReview the current diff for correctness bugs and reuse/simplification/efficiency cleanups.\n\n## Steps\n\n1. Run `git diff` (or `git diff HEAD` if there are staged changes) to see what changed. If a specific PR number or target is provided, run `gh pr diff <number>` instead.\n\n2. Analyze the changes thoroughly, looking for:\n - **Correctness bugs**: logic errors, off-by-one, null/undefined handling, race conditions, missing error handling\n - **Security issues**: injection vulnerabilities, improper input validation, exposed secrets\n - **Performance problems**: unnecessary work, N+1 patterns, missing concurrency, hot-path bloat\n - **Code quality**: duplicated code, leaky abstractions, parameter sprawl, stringly-typed code\n - **Test coverage gaps**: untested edge cases, missing error path tests\n\n3. For each finding, provide:\n - File and line number\n - Severity (critical / warning / suggestion)\n - One-line summary of the issue\n - Suggested fix\n\n4. Present findings ranked most-severe first. Group by file when multiple findings are in the same file.\n{%- if fix %}\n\nAfter the review, apply all fixable findings to the working tree directly.\n{%- endif %}\n{%- if comment %}\n\nAfter the review, post each finding as an inline PR comment using `gh api` or `gh pr review`.\n{%- endif %}\n</system-reminder>\n"
954
+ "template": "<system-reminder data-role=\"code-review-trigger\">\nThe user invoked `/code-review`{{target}} to review code for bugs and quality issues.\n{%- if fix %}\nThe user requested --fix: after the review, apply the findings to the working tree.\n{%- endif %}\n{%- if comment %}\nThe user requested --comment: after the review, post findings as inline PR comments.\n{%- endif %}\n\nReview the current diff for correctness bugs and reuse/simplification/efficiency cleanups.\n\n## Steps\n\n1. Run `git diff` (or `git diff HEAD` if there are staged changes) to see what changed. If a specific PR number or target is provided, run `gh pr diff <number>` instead.\n\n2. Analyze the changes thoroughly, looking for:\n - **Correctness bugs**: logic errors, off-by-one, null/undefined handling, race conditions, missing error handling\n - **Security issues**: injection vulnerabilities, improper input validation, exposed secrets\n - **Performance problems**: unnecessary work, N+1 patterns, missing concurrency, hot-path bloat\n - **Code quality**: duplicated code, leaky abstractions, parameter sprawl, stringly-typed code\n - **Test coverage gaps**: untested edge cases, missing error path tests\n\n3. For each finding, determine:\n - File and line number\n - Severity (critical / warning / suggestion)\n - One-line summary of the issue\n - A concrete failure scenario (how/when this would actually break or cause harm)\n - Suggested fix\n\n4. Call the `ReportFindings` tool once with all findings (most-severe first), mapping each to\n `file` (path + line), `summary` (one-line issue + suggested fix), and `failureScenario`\n (the concrete scenario from step 3). If `ReportFindings` is not available, present findings\n ranked most-severe first in prose instead, grouped by file when multiple findings share a file.\n{%- if fix %}\n\nAfter the review, apply all fixable findings to the working tree directly.\n{%- endif %}\n{%- if comment %}\n\nAfter the review, post each finding as an inline PR comment using `gh api` or `gh pr review`.\n{%- endif %}\n</system-reminder>\n"
953
955
  },
954
956
  {
955
957
  "name": "verify-trigger-reminder",
@@ -1057,7 +1059,6 @@
1057
1059
  "LSP",
1058
1060
  "ImageGen",
1059
1061
  "ImageEdit",
1060
- "ShareLink",
1061
1062
  "VideoGen",
1062
1063
  "EnterWorktree",
1063
1064
  "LeaveWorktree",
@@ -1067,6 +1068,8 @@
1067
1068
  "DelegateTool",
1068
1069
  "WeChatReply",
1069
1070
  "WeComReply",
1071
+ "PushNotification",
1072
+ "ReportFindings",
1070
1073
  "ComputerUse",
1071
1074
  "ListMcpResources",
1072
1075
  "ReadMcpResource",
@@ -1493,7 +1496,6 @@
1493
1496
  "DeferToolLoading": true,
1494
1497
  "ImageEdit": false,
1495
1498
  "VideoGen": true,
1496
- "ShareLink": true,
1497
1499
  "ScheduledTasks": true,
1498
1500
  "SkillManage": false,
1499
1501
  "SkipToolCallSupportCheck": true,
@@ -1770,12 +1772,22 @@
1770
1772
  "name": "WeComReply",
1771
1773
  "description": "Send a reply to a WeCom (企业微信) user. For text: pass text (markdown supported)."
1772
1774
  },
1775
+ {
1776
+ "name": "PushNotification",
1777
+ "description": "tool-pushnotification-description",
1778
+ "deferLoading": true
1779
+ },
1780
+ {
1781
+ "name": "ReportFindings",
1782
+ "description": "tool-reportfindings-description",
1783
+ "deferLoading": true
1784
+ },
1773
1785
  {
1774
1786
  "name": "Workflow",
1775
1787
  "description": "workflow-tool-description",
1776
1788
  "deferLoading": true
1777
1789
  }
1778
1790
  ],
1779
- "commit": "04b0be91111616019aa1edadaa0a1a108c577c2c",
1780
- "date": "2026-07-27T13:09:05.331Z"
1791
+ "commit": "42c83b4f21b9c039516b92d106cd70eed83d5c44",
1792
+ "date": "2026-07-29T14:36:13.005Z"
1781
1793
  }
@@ -53,6 +53,8 @@
53
53
  "DelegateTool",
54
54
  "WeChatReply",
55
55
  "WeComReply",
56
+ "PushNotification",
57
+ "ReportFindings",
56
58
  "ComputerUse",
57
59
  "ListMcpResources",
58
60
  "ReadMcpResource",
@@ -344,6 +346,6 @@
344
346
  "ScheduledTasks": true,
345
347
  "SkipToolCallSupportCheck": true
346
348
  },
347
- "commit": "04b0be91111616019aa1edadaa0a1a108c577c2c",
348
- "date": "2026-07-27T13:09:05.318Z"
349
+ "commit": "42c83b4f21b9c039516b92d106cd70eed83d5c44",
350
+ "date": "2026-07-29T14:36:13.032Z"
349
351
  }