@tencent-ai/codebuddy-code 2.97.0-next.03ca7ec.20260514 → 2.97.0-next.bcf636d.20260514

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.
Files changed (33) hide show
  1. package/dist/codebuddy-headless.js +39 -35
  2. package/dist/codebuddy.js +40 -36
  3. package/dist/web-ui/docs/cn/cli/cli-reference.md +7 -6
  4. package/dist/web-ui/docs/cn/cli/env-vars.md +2 -2
  5. package/dist/web-ui/docs/cn/cli/hooks-guide.md +52 -0
  6. package/dist/web-ui/docs/cn/cli/hooks.md +50 -5
  7. package/dist/web-ui/docs/cn/cli/plugins-reference.md +11 -0
  8. package/dist/web-ui/docs/cn/cli/plugins.md +4 -0
  9. package/dist/web-ui/docs/cn/cli/release-notes/README.md +2 -0
  10. package/dist/web-ui/docs/cn/cli/release-notes/v2.95.1.md +27 -0
  11. package/dist/web-ui/docs/cn/cli/release-notes/v2.96.0.md +21 -0
  12. package/dist/web-ui/docs/cn/cli/skills.md +91 -0
  13. package/dist/web-ui/docs/en/cli/cli-reference.md +1 -0
  14. package/dist/web-ui/docs/en/cli/env-vars.md +2 -2
  15. package/dist/web-ui/docs/en/cli/hooks-guide.md +52 -0
  16. package/dist/web-ui/docs/en/cli/hooks.md +61 -14
  17. package/dist/web-ui/docs/en/cli/plugins-reference.md +11 -0
  18. package/dist/web-ui/docs/en/cli/plugins.md +337 -457
  19. package/dist/web-ui/docs/en/cli/release-notes/README.md +2 -0
  20. package/dist/web-ui/docs/en/cli/release-notes/v2.95.1.md +27 -0
  21. package/dist/web-ui/docs/en/cli/release-notes/v2.96.0.md +21 -0
  22. package/dist/web-ui/docs/en/cli/skills.md +91 -0
  23. package/dist/web-ui/docs/search-index-en.json +1 -1
  24. package/dist/web-ui/docs/search-index-zh.json +1 -1
  25. package/dist/web-ui/docs/sidebar-en.json +1 -1
  26. package/dist/web-ui/docs/sidebar-zh.json +1 -1
  27. package/package.json +1 -1
  28. package/product.cloudhosted.json +2 -2
  29. package/product.internal.json +2 -2
  30. package/product.ioa.json +2 -2
  31. package/product.json +2 -2
  32. package/product.selfhosted.json +2 -2
  33. package/vendor/sandbox/sandbox-cli +0 -0
@@ -17,6 +17,8 @@ Difference from CHANGELOG.md:
17
17
 
18
18
  <!-- New versions are automatically added here -->
19
19
 
20
+ - [v2.96.0](./v2.96.0.md) - 2026-05-11
21
+ - [v2.95.1](./v2.95.1.md) - 2026-05-07
20
22
  - [v2.95.0](./v2.95.0.md) - 2026-05-01
21
23
  - [v2.94.4](./v2.94.4.md) - 2026-05-01
22
24
  - [v2.94.3](./v2.94.3.md) - 2026-04-29
@@ -0,0 +1,27 @@
1
+ # 🚀 CodeBuddy Code v2.95.1 Release
2
+
3
+ ## ✨ New Features
4
+
5
+ ### General-Purpose Agent Supports Image Generation and Editing
6
+
7
+ The general-purpose sub-agent's tool list now includes ImageGen and ImageEdit, enabling images to be generated directly within sub-tasks or edited based on existing images. Availability is still determined by the model's capability tags.
8
+
9
+ ## 🔧 Improvements
10
+
11
+ - **Skill Tool Description Truncation**: Adopts a three-stage balanced truncation strategy. In scenarios with many skills, tool descriptions automatically converge within the character budget instead of growing unbounded. Adds a new env `CODEBUDDY_SKILL_TOOL_CHAR_BUDGET` to independently control the Skill tool description budget (default 8000). ⚠️ **Breaking change**: The default character budget for the SlashCommand tool has been changed from 15000 to 8000. Set `SLASH_COMMAND_TOOL_CHAR_BUDGET=15000` to restore.
12
+ - **MCP Large Response Handling**: When MCP tool responses exceed the token limit, the session is no longer interrupted with an error. Instead, the full content is saved to the session directory and a read guide is returned, allowing the model to read in segments via offset/limit. Set `CODEBUDDY_DISABLE_MCP_LARGE_OUTPUT_FILES=1` to always fall back to truncation.
13
+ - **Streaming Response Timeouts**: Increased the default timeouts for first-token wait and inter-stream silence from 10 minutes to 20 minutes, preventing long-context requests or slow-response models from being incorrectly judged as connection-lost during the first-token phase.
14
+ - **Windows Paste Experience**: Improved the stability of pasting large blocks of text and clipboard content in Windows terminals, reducing input flickering and content fragmentation issues.
15
+ - **Unified Cancel Cleanup Orchestrator**: When a cancel signal is received, session runtime state is uniformly cleaned up across six dimensions (interaction, mode, Todo, tool broadcast, compaction state flags, UI progress signals), thoroughly eliminating bugs like "dirty state from cancellation persisting into the next prompt" and "compaction loading banner not disappearing after cancel".
16
+ - **Internal Generator Agent Optimization**: Internal-task agents (context compaction, title generation, summary generation, etc.) no longer auto-inject the SendMessage tool, saving prompt tokens and avoiding pollution of structured output.
17
+
18
+ ## 🐛 Bug Fixes
19
+
20
+ - **UI State Display After Compaction Cancel**: Fixed an issue where clicking the cancel button during streaming compaction did not properly reflect the "cancelled" semantics on the divider UI — previously it would incorrectly display "Context compacted ✓" or continue to show the "Compacting..." shimmer. Both auto-compact and manual `/compact` paths are covered.
21
+ - **ACP Auto-Compaction Silent Semantics**: Internal abort/error events triggered during auto-compaction no longer expose `stopReason='cancelled'` to ACP clients. External consumers (IDE/Web UI/Desktop) no longer see a meaningless "cancelled" flash. User-initiated Ctrl-C / ACP cancel still emits cancel signals normally.
22
+ - **Desktop Operation Tool Visibility**: Desktop operation tools no longer appear in tool search descriptions when not enabled or on non-macOS platforms, preventing the model from attempting to call them only to be rejected.
23
+
24
+ ## 📝 Documentation Updates
25
+
26
+ - **CLI Documentation Sync**: Synchronously updated bash-sandboxing, env-vars, hooks, interactive-mode, mcp, plugins-reference, settings, skills, and other multilingual versions (cn/en/zh).
27
+ - **Historical Release Notes Backfill**: Published release notes documents for historical versions v2.94.0~v2.94.4.
@@ -0,0 +1,21 @@
1
+ # 🚀 CodeBuddy Code v2.96.0 Release
2
+
3
+ ## ✨ New Features
4
+
5
+ ### SDK Custom Sub-Agent Support
6
+
7
+ The `agents` / `systemPrompt` / `appendSystemPrompt` parameters passed to SDK `initialize` are now correctly injected into the product configuration, taking effect equivalently to the CLI's `--agents` / `--system-prompt` / `--append-system-prompt`. SDK users can now conveniently customize sub-agents and system prompts.
8
+
9
+ ### Sub-Agent Tool Blacklist
10
+
11
+ `AgentDefinition` adds a new `disallowedTools` field, allowing a disabled tool list to be configured for individual sub-agents. It is automatically combined with the session-level `--disallowedTools` (taking the union), enabling more fine-grained control over sub-agent capability boundaries.
12
+
13
+ ## 🔧 Improvements
14
+
15
+ - **Session Title Internationalization**: AI-generated session titles now follow the user's language settings — Chinese environments produce Chinese titles, instead of always outputting English.
16
+
17
+ ## 🐛 Bug Fixes
18
+
19
+ - **Web UI Refresh Loses Session Title**: When restoring an existing session, the top title now immediately displays the original title, no longer briefly falling back to "New Conversation".
20
+ - **MCP List Cache**: Fixed an issue where, after `list()` returned an empty result, calling `add()` would not show the new server in the cache.
21
+ - **Streaming Output Model Display**: `stream-json` output now prefers the model id actually reported by the provider, avoiding the parent agent's configuration id from being displayed when forwarding sub-agent events, improving observability.
@@ -79,6 +79,8 @@ Available tools:
79
79
  | `user-invocable` | No | When set to `false`, the Skill is hidden from the `/` menu and is only available for internal AI invocation or reference by other Skills, defaults to `true` | `false` |
80
80
  | `context` | No | When set to `fork`, the Skill executes in an isolated subagent context | `fork` |
81
81
  | `agent` | No | Specifies the subagent type, only effective when `context: fork` | `Explore` |
82
+ | `model` | No | Specifies the model used when the Skill executes (only effective when `context: fork`; falls back to the agent's default model when not configured) | `claude-sonnet-4` |
83
+ | `hooks` | No | Declares Skill-specific hooks in SKILL.md. Only effective when `context: fork`. See [Configuring Hooks in a Skill](#configuring-hooks-in-a-skill) | See below |
82
84
 
83
85
  ## Variable Placeholders
84
86
 
@@ -201,6 +203,95 @@ Such Skills are loaded into the AI's context but cannot be directly invoked by u
201
203
 
202
204
  > **Note**: `context: fork` is only suitable for Skills that contain specific tasks. Skills with only guidelines and no concrete tasks will not produce meaningful output.
203
205
 
206
+ ## Configuring Hooks in a Skill
207
+
208
+ > **Version requirement**: The Skill frontmatter `hooks` field requires a version of CodeBuddy Code that supports Frontmatter Hooks (Beta).
209
+
210
+ In addition to globally configuring hooks in `~/.codebuddy/settings.json`, a Skill can also declare a `hooks` field directly in the SKILL.md frontmatter, packaging the hook together with the Skill itself. This is especially useful for fork-style Skills — you can add guards, logs, and callbacks inside the fork subagent without polluting the main session.
211
+
212
+ ### Applicability
213
+
214
+ - **Only effective when `context: fork`**: Skills using the injection path (the default inline mode) do not have clear lifecycle boundaries; frontmatter hooks will be parsed but not registered with the runtime.
215
+ - **Lifecycle bound to the fork subagent**: Hooks are registered when the fork subagent starts and automatically cleaned up when it ends, without affecting the main session or other Skills.
216
+ - **`Stop` is automatically converted to `SubagentStop`**: Writing the `Stop` event in frontmatter is automatically rewritten to `SubagentStop` to align with the actual event of subagent completion.
217
+
218
+ ### Field Format
219
+
220
+ The structure of the `hooks` field is identical to `hooks` in `settings.json` — grouped by event name, with each entry supporting a `matcher` and a `hooks[]` array:
221
+
222
+ ```yaml
223
+ ---
224
+ name: secure-reviewer
225
+ description: Code review Skill that checks file allowlist before execution
226
+ context: fork
227
+ agent: Explore
228
+ hooks:
229
+ PreToolUse:
230
+ - matcher: "Read|Glob|Grep"
231
+ hooks:
232
+ - type: command
233
+ command: ${CODEBUDDY_SKILL_DIR}/scripts/check-paths.sh
234
+ timeout: 10
235
+ PostToolUse:
236
+ - matcher: "Bash"
237
+ hooks:
238
+ - type: prompt
239
+ prompt: "Check whether the Bash output contains sensitive information; if so, explain it in the reason field."
240
+ Stop: # Automatically rewritten to SubagentStop
241
+ - hooks:
242
+ - type: command
243
+ command: echo "review skill finished" >> ${CODEBUDDY_PROJECT_DIR}/.cbc-review.log
244
+ ---
245
+
246
+ Please review the files mentioned in $ARGUMENTS...
247
+ ```
248
+
249
+ Supported hook `type`s:
250
+
251
+ - `command`: Executes a Shell command (with optional fields like `shell: bash | powershell`, `timeout`, `if`, `once`, `async`)
252
+ - `prompt`: Hands off to a small model (default Haiku-class) for semantic decisions
253
+ - `agent`: Spins up a subagent for more complex decisions, with optional `agentType` / `model`
254
+ - `http`: Sends the event payload via POST/PUT/PATCH to the specified URL
255
+
256
+ For complete field semantics, see the [Hook Reference Guide](./hooks.md).
257
+
258
+ ### Security Gate: admin-trusted
259
+
260
+ For security reasons, **frontmatter hooks from Skills sourced from non-built-in origins are not registered by default**. Currently, all Skills loaded from `.codebuddy/skills/`, project-local sources, or plugin marketplaces are considered "untrusted sources" — they can silently trigger Shell commands, so explicit user consent is required.
261
+
262
+ To enable, set the following in `~/.codebuddy/settings.json`:
263
+
264
+ ```json
265
+ {
266
+ "allowUntrustedFrontmatterHooks": true
267
+ }
268
+ ```
269
+
270
+ Once enabled, frontmatter hooks from Skills/Agents of all sources will be registered; otherwise, the CLI will print a warning like the following and skip the Skill's hooks:
271
+
272
+ ```
273
+ [AgentTask] Frontmatter hooks from skill 'secure-reviewer' skipped
274
+ (source not admin-trusted; enable `allowUntrustedFrontmatterHooks` in settings to allow)
275
+ ```
276
+
277
+ > Built-in product-bundled Skills are not subject to this gate and are automatically allowed. Hooks configured by plugins via `hooks/hooks.json` go through a different path and are **not** controlled by this gate.
278
+
279
+ ### Merging with Global Hooks
280
+
281
+ Skill frontmatter hooks and global hooks in `settings.json` are in an **additive merge** relationship — for the same event, all matching hooks from both sides are triggered in parallel; there is no override. The differences are:
282
+
283
+ | Source | Scope | Subject to admin-trusted gate |
284
+ | --- | --- | --- |
285
+ | `settings.json` (global/project/local) | Entire session | No |
286
+ | Plugin `hooks/hooks.json` | Entire session (when plugin is enabled) | No |
287
+ | Agent `.md` frontmatter | The subagent's lifecycle | Yes |
288
+ | Skill `SKILL.md` frontmatter (fork only) | The fork subagent's lifecycle | Yes |
289
+
290
+ ### Debugging
291
+
292
+ - Set `CODEBUDDY_DEBUG=1` at startup to see registration lines like `[ScopedHookRegistry] registered N hook config(s) for scope ...` in the logs.
293
+ - Invalid hook definitions in the frontmatter are silently dropped, but a `[parseFrontmatterHooks] skill 'xxx': event 'YYY' invalid: ...` message is emitted in the log — check the logs to locate issues.
294
+
204
295
  ## Usage Examples
205
296
 
206
297
  ### Example 1: PDF Processing Skill