@tencent-ai/codebuddy-code 2.67.0 → 2.68.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/CHANGELOG.md +26 -0
- package/dist/codebuddy-headless.js +53 -53
- package/dist/codebuddy.js +93 -64
- package/dist/web-ui/assets/index-BoMlEqUE.js +439 -0
- package/dist/web-ui/assets/index-Dt1puyHn.css +32 -0
- package/dist/web-ui/docs/cn/cli/acp.md +152 -0
- package/dist/web-ui/docs/cn/cli/agent-teams.md +327 -0
- package/dist/web-ui/docs/cn/cli/bash-sandboxing.md +290 -0
- package/dist/web-ui/docs/cn/cli/best-practices.md +554 -0
- package/dist/web-ui/docs/cn/cli/channels-reference.md +293 -0
- package/dist/web-ui/docs/cn/cli/channels.md +215 -0
- package/dist/web-ui/docs/cn/cli/checkpointing.md +51 -0
- package/dist/web-ui/docs/cn/cli/cli-reference.md +187 -0
- package/dist/web-ui/docs/cn/cli/common-workflows.md +1013 -0
- package/dist/web-ui/docs/cn/cli/costs.md +174 -0
- package/dist/web-ui/docs/cn/cli/devcontainer.md +553 -0
- package/dist/web-ui/docs/cn/cli/env-vars.md +326 -0
- package/dist/web-ui/docs/cn/cli/gitlab-ci-cd.md +357 -0
- package/dist/web-ui/docs/cn/cli/headless.md +258 -0
- package/dist/web-ui/docs/cn/cli/hooks-guide.md +9 -0
- package/dist/web-ui/docs/cn/cli/hooks.md +805 -0
- package/dist/web-ui/docs/cn/cli/iam.md +530 -0
- package/dist/web-ui/docs/cn/cli/ide-integrations.md +92 -0
- package/dist/web-ui/docs/cn/cli/installation.md +291 -0
- package/dist/web-ui/docs/cn/cli/interactive-mode.md +233 -0
- package/dist/web-ui/docs/cn/cli/mcp.md +739 -0
- package/dist/web-ui/docs/cn/cli/memory.md +436 -0
- package/dist/web-ui/docs/cn/cli/models.md +356 -0
- package/dist/web-ui/docs/cn/cli/overview.md +100 -0
- package/dist/web-ui/docs/cn/cli/plugin-marketplaces.md +533 -0
- package/dist/web-ui/docs/cn/cli/plugins-reference.md +774 -0
- package/dist/web-ui/docs/cn/cli/plugins.md +689 -0
- package/dist/web-ui/docs/cn/cli/quickstart.md +249 -0
- package/dist/web-ui/docs/cn/cli/release-notes/README.md +199 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.10.0.md +23 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.10.1.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.11.0.md +24 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.12.0.md +21 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.13.0.md +20 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.14.0.md +22 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.14.1.md +8 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.15.0.md +18 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.15.1.md +11 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.16.0.md +20 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.17.0.md +29 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.18.0.md +17 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.19.0.md +11 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.19.1.md +14 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.19.2.md +11 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.20.0.md +23 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.20.1.md +15 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.21.0.md +13 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.22.0.md +16 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.23.0.md +20 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.23.2.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.23.3.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.23.4.md +15 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.23.5.md +11 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.24.0.md +17 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.25.0.md +18 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.25.1.md +21 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.26.0.md +18 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.27.0.md +16 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.27.1.md +16 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.27.2.md +7 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.27.3.md +15 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.28.0.md +26 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.28.1.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.29.0.md +35 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.3.1.md +16 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.30.0.md +19 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.30.1.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.31.0.md +51 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.31.1.md +11 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.31.2.md +16 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.32.0.md +19 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.33.0.md +28 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.33.1.md +7 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.36.3.md +17 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.0.md +15 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.1.md +15 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.10.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.11.md +8 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.12.md +14 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.13.md +11 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.14.md +24 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.15.md +11 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.16.md +9 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.17.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.18.md +9 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.19.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.2.md +28 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.20.md +8 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.3.md +22 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.4.md +19 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.5.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.6.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.7.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.8.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.37.9.md +8 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.38.0.md +22 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.38.1.md +6 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.38.2.md +9 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.39.0.md +18 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.4.0.md +19 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.40.0.md +20 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.40.1.md +6 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.41.0.md +15 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.41.1.md +6 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.41.2.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.41.3.md +8 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.41.4.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.41.5.md +10 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.41.6.md +9 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.41.7.md +14 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.41.8.md +18 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.42.0.md +39 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.42.1.md +8 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.42.3.md +18 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.43.0.md +27 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.43.1.md +27 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.44.0.md +11 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.44.1.md +22 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.45.0.md +34 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.45.1.md +7 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.46.0.md +12 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.47.0.md +20 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.48.0.md +32 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.48.1.md +11 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.49.0.md +26 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.49.1.md +14 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.49.2.md +39 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.49.3.md +7 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.49.5.md +11 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.49.6.md +9 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.49.7.md +7 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.5.0.md +24 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.50.0.md +25 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.50.1.md +9 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.50.2.md +11 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.50.3.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.50.4.md +17 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.50.5.md +16 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.50.6.md +15 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.50.7.md +15 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.51.0.md +24 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.51.1.md +17 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.51.2.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.52.0.md +30 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.52.1.md +28 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.52.2.md +12 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.52.3.md +13 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.52.4.md +27 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.52.5.md +21 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.52.6.md +7 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.53.0.md +29 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.54.0.md +26 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.55.0.md +21 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.55.1.md +13 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.56.0.md +20 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.56.1.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.57.0.md +32 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.57.1.md +10 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.58.0.md +34 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.59.0.md +28 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.6.0.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.6.1.md +10 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.60.0.md +20 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.61.0.md +29 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.61.1.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.61.2.md +6 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.61.3.md +13 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.62.0.md +21 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.62.1.md +11 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.63.0.md +19 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.63.1.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.63.2.md +7 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.63.3.md +6 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.63.4.md +8 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.63.5.md +6 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.64.0.md +37 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.64.1.md +6 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.64.2.md +11 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.65.0.md +19 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.65.1.md +11 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.66.0.md +15 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.66.1.md +14 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.66.2.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.67.0.md +33 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.7.0.md +16 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.8.0.md +18 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.8.1.md +17 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.8.2.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.8.3.md +14 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.8.4.md +9 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.8.5.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.8.6.md +14 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.9.0.md +5 -0
- package/dist/web-ui/docs/cn/cli/remote-control.md +247 -0
- package/dist/web-ui/docs/cn/cli/sandboxing.md +316 -0
- package/dist/web-ui/docs/cn/cli/scheduled-tasks.md +161 -0
- package/dist/web-ui/docs/cn/cli/sdk-custom-tools.md +1195 -0
- package/dist/web-ui/docs/cn/cli/sdk-demos.md +347 -0
- package/dist/web-ui/docs/cn/cli/sdk-hooks.md +803 -0
- package/dist/web-ui/docs/cn/cli/sdk-mcp.md +643 -0
- package/dist/web-ui/docs/cn/cli/sdk-permissions.md +501 -0
- package/dist/web-ui/docs/cn/cli/sdk-python.md +783 -0
- package/dist/web-ui/docs/cn/cli/sdk-sessions.md +332 -0
- package/dist/web-ui/docs/cn/cli/sdk-typescript.md +759 -0
- package/dist/web-ui/docs/cn/cli/sdk.md +1105 -0
- package/dist/web-ui/docs/cn/cli/security.md +387 -0
- package/dist/web-ui/docs/cn/cli/settings.md +602 -0
- package/dist/web-ui/docs/cn/cli/skills.md +448 -0
- package/dist/web-ui/docs/cn/cli/slash-commands.md +397 -0
- package/dist/web-ui/docs/cn/cli/statusline.md +525 -0
- package/dist/web-ui/docs/cn/cli/sub-agents.md +634 -0
- package/dist/web-ui/docs/cn/cli/terminal-config.md +77 -0
- package/dist/web-ui/docs/cn/cli/tools-reference.md +99 -0
- package/dist/web-ui/docs/cn/cli/troubleshooting.md +190 -0
- package/dist/web-ui/docs/cn/cli/web-ui.md +164 -0
- package/dist/web-ui/docs/cn/cli/wecom-bot-setup.md +274 -0
- package/dist/web-ui/docs/cn/cli/worktree.md +660 -0
- package/dist/web-ui/docs/en/cli/acp.md +126 -0
- package/dist/web-ui/docs/en/cli/agent-teams.md +327 -0
- package/dist/web-ui/docs/en/cli/bash-sandboxing.md +357 -0
- package/dist/web-ui/docs/en/cli/best-practices.md +554 -0
- package/dist/web-ui/docs/en/cli/channels-reference.md +293 -0
- package/dist/web-ui/docs/en/cli/channels.md +215 -0
- package/dist/web-ui/docs/en/cli/checkpointing.md +53 -0
- package/dist/web-ui/docs/en/cli/cli-reference.md +187 -0
- package/dist/web-ui/docs/en/cli/common-workflows.md +1011 -0
- package/dist/web-ui/docs/en/cli/costs.md +174 -0
- package/dist/web-ui/docs/en/cli/devcontainer.md +553 -0
- package/dist/web-ui/docs/en/cli/env-vars.md +326 -0
- package/dist/web-ui/docs/en/cli/gitlab-ci-cd.md +357 -0
- package/dist/web-ui/docs/en/cli/headless.md +258 -0
- package/dist/web-ui/docs/en/cli/hooks-guide.md +9 -0
- package/dist/web-ui/docs/en/cli/hooks.md +801 -0
- package/dist/web-ui/docs/en/cli/iam.md +526 -0
- package/dist/web-ui/docs/en/cli/ide-integrations.md +92 -0
- package/dist/web-ui/docs/en/cli/installation.md +266 -0
- package/dist/web-ui/docs/en/cli/interactive-mode.md +233 -0
- package/dist/web-ui/docs/en/cli/mcp.md +739 -0
- package/dist/web-ui/docs/en/cli/memory.md +436 -0
- package/dist/web-ui/docs/en/cli/models.md +355 -0
- package/dist/web-ui/docs/en/cli/overview.md +100 -0
- package/dist/web-ui/docs/en/cli/plugin-marketplaces.md +534 -0
- package/dist/web-ui/docs/en/cli/plugins-reference.md +774 -0
- package/dist/web-ui/docs/en/cli/plugins.md +688 -0
- package/dist/web-ui/docs/en/cli/quickstart.md +249 -0
- package/dist/web-ui/docs/en/cli/release-notes/README.md +193 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.10.0.md +23 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.10.1.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.11.0.md +24 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.12.0.md +21 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.13.0.md +20 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.14.0.md +22 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.14.1.md +8 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.15.0.md +18 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.15.1.md +11 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.16.0.md +20 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.17.0.md +29 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.18.0.md +17 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.19.0.md +11 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.19.1.md +14 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.19.2.md +11 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.20.0.md +23 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.20.1.md +15 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.21.0.md +13 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.22.0.md +16 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.23.0.md +41 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.23.2.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.23.3.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.23.4.md +15 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.23.5.md +11 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.24.0.md +17 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.25.0.md +18 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.25.1.md +21 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.26.0.md +18 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.27.0.md +16 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.27.1.md +16 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.27.2.md +7 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.27.3.md +15 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.28.0.md +26 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.28.1.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.29.0.md +35 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.3.1.md +16 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.30.0.md +19 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.30.1.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.31.0.md +51 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.31.1.md +11 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.31.2.md +16 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.32.0.md +19 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.33.0.md +28 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.33.1.md +7 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.34.0.md +27 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.34.1.md +7 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.35.0.md +22 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.36.0.md +23 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.36.1.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.36.2.md +22 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.36.3.md +17 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.0.md +15 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.1.md +15 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.10.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.11.md +8 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.12.md +14 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.13.md +11 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.14.md +24 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.15.md +11 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.16.md +9 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.17.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.18.md +9 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.19.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.2.md +28 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.20.md +8 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.3.md +22 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.4.md +19 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.5.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.6.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.7.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.8.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.37.9.md +8 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.38.0.md +22 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.38.1.md +6 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.38.2.md +9 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.39.0.md +18 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.4.0.md +19 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.40.0.md +20 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.40.1.md +6 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.41.0.md +15 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.41.1.md +6 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.41.2.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.41.3.md +8 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.41.4.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.41.5.md +10 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.41.6.md +9 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.41.7.md +14 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.41.8.md +18 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.42.0.md +39 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.42.1.md +8 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.42.3.md +18 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.43.0.md +27 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.43.1.md +27 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.44.0.md +11 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.44.1.md +22 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.45.0.md +34 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.45.1.md +7 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.46.0.md +12 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.47.0.md +20 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.48.0.md +32 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.48.1.md +11 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.49.0.md +26 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.49.1.md +14 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.49.2.md +39 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.49.3.md +7 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.49.5.md +11 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.49.6.md +9 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.49.7.md +7 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.5.0.md +24 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.50.0.md +25 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.50.1.md +9 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.50.2.md +11 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.50.3.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.50.4.md +17 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.50.5.md +16 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.50.6.md +15 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.50.7.md +15 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.51.0.md +24 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.51.1.md +17 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.51.2.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.52.0.md +30 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.52.1.md +28 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.52.2.md +12 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.52.3.md +13 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.52.4.md +27 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.52.5.md +21 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.52.6.md +7 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.53.0.md +29 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.54.0.md +26 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.55.0.md +21 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.55.1.md +13 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.56.0.md +20 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.56.1.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.57.0.md +32 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.57.1.md +10 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.58.0.md +34 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.59.0.md +28 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.6.0.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.6.1.md +10 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.60.0.md +20 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.61.0.md +29 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.61.1.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.61.2.md +6 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.61.3.md +13 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.62.0.md +21 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.62.1.md +11 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.63.0.md +19 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.63.1.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.63.2.md +7 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.63.3.md +6 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.63.4.md +8 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.63.5.md +6 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.64.0.md +37 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.64.1.md +6 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.64.2.md +11 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.65.0.md +19 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.65.1.md +11 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.66.0.md +15 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.66.1.md +14 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.66.2.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.67.0.md +33 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.7.0.md +16 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.8.0.md +18 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.8.1.md +17 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.8.2.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.8.3.md +14 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.8.4.md +9 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.8.5.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.8.6.md +14 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.9.0.md +5 -0
- package/dist/web-ui/docs/en/cli/remote-control.md +247 -0
- package/dist/web-ui/docs/en/cli/sandboxing.md +316 -0
- package/dist/web-ui/docs/en/cli/scheduled-tasks.md +160 -0
- package/dist/web-ui/docs/en/cli/sdk-custom-tools.md +1131 -0
- package/dist/web-ui/docs/en/cli/sdk-demos.md +347 -0
- package/dist/web-ui/docs/en/cli/sdk-hooks.md +813 -0
- package/dist/web-ui/docs/en/cli/sdk-mcp.md +645 -0
- package/dist/web-ui/docs/en/cli/sdk-permissions.md +461 -0
- package/dist/web-ui/docs/en/cli/sdk-python.md +797 -0
- package/dist/web-ui/docs/en/cli/sdk-sessions.md +340 -0
- package/dist/web-ui/docs/en/cli/sdk-typescript.md +770 -0
- package/dist/web-ui/docs/en/cli/sdk.md +1103 -0
- package/dist/web-ui/docs/en/cli/security.md +388 -0
- package/dist/web-ui/docs/en/cli/settings.md +602 -0
- package/dist/web-ui/docs/en/cli/skills.md +448 -0
- package/dist/web-ui/docs/en/cli/slash-commands.md +397 -0
- package/dist/web-ui/docs/en/cli/statusline.md +525 -0
- package/dist/web-ui/docs/en/cli/sub-agents.md +621 -0
- package/dist/web-ui/docs/en/cli/terminal-config.md +77 -0
- package/dist/web-ui/docs/en/cli/tools-reference.md +99 -0
- package/dist/web-ui/docs/en/cli/troubleshooting.md +190 -0
- package/dist/web-ui/docs/en/cli/web-ui.md +164 -0
- package/dist/web-ui/docs/en/cli/wecom-bot-setup.md +274 -0
- package/dist/web-ui/docs/en/cli/worktree.md +660 -0
- package/dist/web-ui/docs/search-index-en.json +1 -0
- package/dist/web-ui/docs/search-index-zh.json +1 -0
- package/dist/web-ui/docs/sidebar-en.json +1 -0
- package/dist/web-ui/docs/sidebar-zh.json +1 -0
- package/dist/web-ui/index.html +2 -2
- package/package.json +1 -1
- package/product.cloudhosted.json +2 -2
- package/product.internal.json +2 -2
- package/product.ioa.json +2 -2
- package/product.json +3 -3
- package/product.selfhosted.json +2 -2
- package/dist/web-ui/assets/index-BPT-qRRx.js +0 -411
- package/dist/web-ui/assets/index-f_ibHSHw.css +0 -32
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
# SDK Permission Control
|
|
2
|
+
|
|
3
|
+
> **Version Requirement**: This document is for CodeBuddy Agent SDK v0.1.0 and above.
|
|
4
|
+
|
|
5
|
+
This document explains how to implement permission control in the SDK, including permission modes, canUseTool callbacks, and tool whitelists/blacklists.
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
- [Overview](#overview)
|
|
10
|
+
- [Permission Modes](#permission-modes)
|
|
11
|
+
- [canUseTool Callback](#canusetool-callback)
|
|
12
|
+
- [Handling AskUserQuestion](#handling-askuserquestion)
|
|
13
|
+
- [Tool Whitelists/Blacklists](#tool-whitelistsblacklists)
|
|
14
|
+
- [Best Practices](#best-practices)
|
|
15
|
+
- [Related Documentation](#related-documentation)
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
CodeBuddy Agent SDK provides multiple permission control mechanisms:
|
|
20
|
+
|
|
21
|
+
| Mechanism | Description | Use Case |
|
|
22
|
+
|------|------|---------|
|
|
23
|
+
| **Permission Modes** | Global permission behavior control | Quick setup of overall policy |
|
|
24
|
+
| **canUseTool Callback** | Runtime dynamic approval | Interactive permission confirmation |
|
|
25
|
+
| **Tool Whitelists/Blacklists** | Declarative tool filtering | Static policy configuration |
|
|
26
|
+
|
|
27
|
+
## Permission Modes
|
|
28
|
+
|
|
29
|
+
Set global permission behavior through `permissionMode` (TypeScript) or `permission_mode` (Python).
|
|
30
|
+
|
|
31
|
+
### Available Modes
|
|
32
|
+
|
|
33
|
+
| Mode | Description |
|
|
34
|
+
|------|------|
|
|
35
|
+
| `default` | Default mode, all tool operations require confirmation |
|
|
36
|
+
| `acceptEdits` | Auto-approve file edits, other operations still require confirmation |
|
|
37
|
+
| `plan` | Planning mode, only read-only tools allowed |
|
|
38
|
+
| `bypassPermissions` | Skip all permission checks (use with caution) |
|
|
39
|
+
|
|
40
|
+
### Initial Configuration
|
|
41
|
+
|
|
42
|
+
::: code-group
|
|
43
|
+
|
|
44
|
+
```typescript [TypeScript]
|
|
45
|
+
import { query } from '@tencent-ai/agent-sdk';
|
|
46
|
+
|
|
47
|
+
const q = query({
|
|
48
|
+
prompt: 'Help me refactor this code',
|
|
49
|
+
options: {
|
|
50
|
+
model: 'deepseek-v3.1',
|
|
51
|
+
permissionMode: 'acceptEdits' // Auto-approve edits
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
for await (const message of q) {
|
|
56
|
+
console.log(message);
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```python [Python]
|
|
61
|
+
import asyncio
|
|
62
|
+
from codebuddy_agent_sdk import query, CodeBuddyAgentOptions
|
|
63
|
+
|
|
64
|
+
async def main():
|
|
65
|
+
options = CodeBuddyAgentOptions(
|
|
66
|
+
model="deepseek-v3.1",
|
|
67
|
+
permission_mode="acceptEdits" # Auto-approve edits
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
async for message in query(prompt="Help me refactor this code", options=options):
|
|
71
|
+
print(message)
|
|
72
|
+
|
|
73
|
+
asyncio.run(main())
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
:::
|
|
77
|
+
|
|
78
|
+
### Dynamically Modifying Permission Mode
|
|
79
|
+
|
|
80
|
+
Using Session/Client API allows you to dynamically modify permission mode at runtime:
|
|
81
|
+
|
|
82
|
+
::: code-group
|
|
83
|
+
|
|
84
|
+
```typescript [TypeScript]
|
|
85
|
+
import { unstable_v2_createSession } from '@tencent-ai/agent-sdk';
|
|
86
|
+
|
|
87
|
+
const session = unstable_v2_createSession({
|
|
88
|
+
model: 'deepseek-v3.1'
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
// Send first message
|
|
92
|
+
await session.send('Analyze this project');
|
|
93
|
+
for await (const msg of session.stream()) {
|
|
94
|
+
console.log(msg);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Dynamically switch to acceptEdits mode for faster development
|
|
98
|
+
// Note: This is an unstable API
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
```python [Python]
|
|
102
|
+
from codebuddy_agent_sdk import CodeBuddySDKClient, CodeBuddyAgentOptions
|
|
103
|
+
|
|
104
|
+
async def main():
|
|
105
|
+
options = CodeBuddyAgentOptions(model="deepseek-v3.1")
|
|
106
|
+
|
|
107
|
+
async with CodeBuddySDKClient(options=options) as client:
|
|
108
|
+
await client.query("Analyze this project")
|
|
109
|
+
async for msg in client.receive_response():
|
|
110
|
+
print(msg)
|
|
111
|
+
|
|
112
|
+
# Dynamically switch permission mode
|
|
113
|
+
await client.set_permission_mode("acceptEdits")
|
|
114
|
+
|
|
115
|
+
await client.query("Now help me modify the code")
|
|
116
|
+
async for msg in client.receive_response():
|
|
117
|
+
print(msg)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
:::
|
|
121
|
+
|
|
122
|
+
## canUseTool Callback
|
|
123
|
+
|
|
124
|
+
The `canUseTool` callback is triggered when a tool requires permission confirmation, allowing you to implement custom permission logic.
|
|
125
|
+
|
|
126
|
+
### Callback Signature
|
|
127
|
+
|
|
128
|
+
::: code-group
|
|
129
|
+
|
|
130
|
+
```typescript [TypeScript]
|
|
131
|
+
type CanUseTool = (
|
|
132
|
+
toolName: string,
|
|
133
|
+
input: Record<string, unknown>,
|
|
134
|
+
options: CanUseToolOptions
|
|
135
|
+
) => Promise<PermissionResult>;
|
|
136
|
+
|
|
137
|
+
type CanUseToolOptions = {
|
|
138
|
+
signal: AbortSignal;
|
|
139
|
+
toolUseID: string;
|
|
140
|
+
agentID?: string;
|
|
141
|
+
suggestions?: PermissionUpdate[];
|
|
142
|
+
blockedPath?: string;
|
|
143
|
+
decisionReason?: string;
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
type PermissionResult =
|
|
147
|
+
| { behavior: 'allow'; updatedInput: Record<string, unknown> }
|
|
148
|
+
| { behavior: 'deny'; message: string; interrupt?: boolean };
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
```python [Python]
|
|
152
|
+
CanUseTool = Callable[
|
|
153
|
+
[str, dict[str, Any], CanUseToolOptions],
|
|
154
|
+
Awaitable[PermissionResult],
|
|
155
|
+
]
|
|
156
|
+
|
|
157
|
+
@dataclass
|
|
158
|
+
class CanUseToolOptions:
|
|
159
|
+
tool_use_id: str
|
|
160
|
+
signal: Any | None = None
|
|
161
|
+
agent_id: str | None = None
|
|
162
|
+
suggestions: list[dict[str, Any]] | None = None
|
|
163
|
+
blocked_path: str | None = None
|
|
164
|
+
decision_reason: str | None = None
|
|
165
|
+
|
|
166
|
+
PermissionResult = PermissionResultAllow | PermissionResultDeny
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
:::
|
|
170
|
+
|
|
171
|
+
### Complete Example: Interactive Approval
|
|
172
|
+
|
|
173
|
+
::: code-group
|
|
174
|
+
|
|
175
|
+
```typescript [TypeScript]
|
|
176
|
+
import { query } from '@tencent-ai/agent-sdk';
|
|
177
|
+
|
|
178
|
+
const q = query({
|
|
179
|
+
prompt: 'Help me analyze this codebase',
|
|
180
|
+
options: {
|
|
181
|
+
model: 'deepseek-v3.1',
|
|
182
|
+
canUseTool: async (toolName, input, options) => {
|
|
183
|
+
console.log(`\n🔧 Tool request: ${toolName}`);
|
|
184
|
+
console.log(` Parameters:`, JSON.stringify(input, null, 2));
|
|
185
|
+
|
|
186
|
+
// Auto-allow read-only tools
|
|
187
|
+
const readOnlyTools = ['Read', 'Glob', 'Grep'];
|
|
188
|
+
if (readOnlyTools.includes(toolName)) {
|
|
189
|
+
return { behavior: 'allow', updatedInput: input };
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// Deny dangerous commands
|
|
193
|
+
if (toolName === 'Bash') {
|
|
194
|
+
const command = input.command as string;
|
|
195
|
+
if (command.includes('rm -rf') || command.includes('sudo')) {
|
|
196
|
+
return {
|
|
197
|
+
behavior: 'deny',
|
|
198
|
+
message: 'Dangerous command rejected',
|
|
199
|
+
interrupt: true // Interrupt the entire session
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// Other cases: simulate user confirmation
|
|
205
|
+
const approved = await promptUser(`Allow ${toolName} execution?`);
|
|
206
|
+
|
|
207
|
+
if (approved) {
|
|
208
|
+
return { behavior: 'allow', updatedInput: input };
|
|
209
|
+
} else {
|
|
210
|
+
return { behavior: 'deny', message: 'User denied' };
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
for await (const message of q) {
|
|
217
|
+
console.log(message);
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
```python [Python]
|
|
222
|
+
from codebuddy_agent_sdk import (
|
|
223
|
+
query, CodeBuddyAgentOptions,
|
|
224
|
+
CanUseToolOptions, PermissionResultAllow, PermissionResultDeny
|
|
225
|
+
)
|
|
226
|
+
|
|
227
|
+
async def can_use_tool(
|
|
228
|
+
tool_name: str,
|
|
229
|
+
input_data: dict,
|
|
230
|
+
options: CanUseToolOptions
|
|
231
|
+
):
|
|
232
|
+
print(f"\n🔧 Tool request: {tool_name}")
|
|
233
|
+
print(f" Parameters: {input_data}")
|
|
234
|
+
|
|
235
|
+
# Auto-allow read-only tools
|
|
236
|
+
read_only_tools = ["Read", "Glob", "Grep"]
|
|
237
|
+
if tool_name in read_only_tools:
|
|
238
|
+
return PermissionResultAllow(updated_input=input_data)
|
|
239
|
+
|
|
240
|
+
# Deny dangerous commands
|
|
241
|
+
if tool_name == "Bash":
|
|
242
|
+
command = input_data.get("command", "")
|
|
243
|
+
if "rm -rf" in command or "sudo" in command:
|
|
244
|
+
return PermissionResultDeny(
|
|
245
|
+
message="Dangerous command rejected",
|
|
246
|
+
interrupt=True # Interrupt the entire session
|
|
247
|
+
)
|
|
248
|
+
|
|
249
|
+
# Other cases: simulate user confirmation
|
|
250
|
+
answer = input(f"Allow {tool_name} execution? (y/n): ")
|
|
251
|
+
|
|
252
|
+
if answer.lower() == 'y':
|
|
253
|
+
return PermissionResultAllow(updated_input=input_data)
|
|
254
|
+
else:
|
|
255
|
+
return PermissionResultDeny(message="User denied")
|
|
256
|
+
|
|
257
|
+
async def main():
|
|
258
|
+
options = CodeBuddyAgentOptions(
|
|
259
|
+
model="deepseek-v3.1",
|
|
260
|
+
can_use_tool=can_use_tool
|
|
261
|
+
)
|
|
262
|
+
|
|
263
|
+
async for message in query(prompt="Help me analyze this codebase", options=options):
|
|
264
|
+
print(message)
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
:::
|
|
268
|
+
|
|
269
|
+
### Modifying Tool Input
|
|
270
|
+
|
|
271
|
+
You can modify tool input parameters in `canUseTool`:
|
|
272
|
+
|
|
273
|
+
::: code-group
|
|
274
|
+
|
|
275
|
+
```typescript [TypeScript]
|
|
276
|
+
canUseTool: async (toolName, input) => {
|
|
277
|
+
if (toolName === 'Bash') {
|
|
278
|
+
// Add safety check before command
|
|
279
|
+
return {
|
|
280
|
+
behavior: 'allow',
|
|
281
|
+
updatedInput: {
|
|
282
|
+
...input,
|
|
283
|
+
command: `set -e; ${input.command}`
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
return { behavior: 'allow', updatedInput: input };
|
|
288
|
+
}
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
```python [Python]
|
|
292
|
+
async def can_use_tool(tool_name, input_data, options):
|
|
293
|
+
if tool_name == "Bash":
|
|
294
|
+
# Add safety check before command
|
|
295
|
+
return PermissionResultAllow(
|
|
296
|
+
updated_input={
|
|
297
|
+
**input_data,
|
|
298
|
+
"command": f"set -e; {input_data.get('command', '')}"
|
|
299
|
+
}
|
|
300
|
+
)
|
|
301
|
+
return PermissionResultAllow(updated_input=input_data)
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
:::
|
|
305
|
+
|
|
306
|
+
## Handling AskUserQuestion
|
|
307
|
+
|
|
308
|
+
When AI needs to ask the user a question, it calls the `AskUserQuestion` tool. You need to handle this tool in `canUseTool`.
|
|
309
|
+
|
|
310
|
+
### Input Structure
|
|
311
|
+
|
|
312
|
+
```typescript
|
|
313
|
+
{
|
|
314
|
+
questions: [
|
|
315
|
+
{
|
|
316
|
+
question: "Which database to use?",
|
|
317
|
+
header: "Database",
|
|
318
|
+
options: [
|
|
319
|
+
{ label: "PostgreSQL", description: "Relational database" },
|
|
320
|
+
{ label: "MongoDB", description: "Document database" }
|
|
321
|
+
],
|
|
322
|
+
multiSelect: false
|
|
323
|
+
}
|
|
324
|
+
]
|
|
325
|
+
}
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### Returning Answers
|
|
329
|
+
|
|
330
|
+
::: code-group
|
|
331
|
+
|
|
332
|
+
```typescript [TypeScript]
|
|
333
|
+
canUseTool: async (toolName, input) => {
|
|
334
|
+
if (toolName === 'AskUserQuestion') {
|
|
335
|
+
const questions = input.questions as any[];
|
|
336
|
+
const answers: Record<string, string> = {};
|
|
337
|
+
|
|
338
|
+
for (const q of questions) {
|
|
339
|
+
console.log(`Question: ${q.question}`);
|
|
340
|
+
for (let i = 0; i < q.options.length; i++) {
|
|
341
|
+
console.log(` ${i + 1}. ${q.options[i].label}`);
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
// Get user input
|
|
345
|
+
const choice = await getUserChoice();
|
|
346
|
+
answers[q.question] = q.options[choice].label;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
return {
|
|
350
|
+
behavior: 'allow',
|
|
351
|
+
updatedInput: { ...input, answers }
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
return { behavior: 'allow', updatedInput: input };
|
|
356
|
+
}
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
```python [Python]
|
|
360
|
+
async def can_use_tool(tool_name, input_data, options):
|
|
361
|
+
if tool_name == "AskUserQuestion":
|
|
362
|
+
questions = input_data.get("questions", [])
|
|
363
|
+
answers = {}
|
|
364
|
+
|
|
365
|
+
for q in questions:
|
|
366
|
+
print(f"Question: {q['question']}")
|
|
367
|
+
for i, opt in enumerate(q["options"]):
|
|
368
|
+
print(f" {i + 1}. {opt['label']}")
|
|
369
|
+
|
|
370
|
+
# Get user input
|
|
371
|
+
choice = int(input("Select (1/2/...): ")) - 1
|
|
372
|
+
answers[q["question"]] = q["options"][choice]["label"]
|
|
373
|
+
|
|
374
|
+
return PermissionResultAllow(
|
|
375
|
+
updated_input={**input_data, "answers": answers}
|
|
376
|
+
)
|
|
377
|
+
|
|
378
|
+
return PermissionResultAllow(updated_input=input_data)
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
:::
|
|
382
|
+
|
|
383
|
+
## Tool Whitelists/Blacklists
|
|
384
|
+
|
|
385
|
+
Use `allowedTools` and `disallowedTools` to declaratively control tool access.
|
|
386
|
+
|
|
387
|
+
### Configuration Example
|
|
388
|
+
|
|
389
|
+
::: code-group
|
|
390
|
+
|
|
391
|
+
```typescript [TypeScript]
|
|
392
|
+
const q = query({
|
|
393
|
+
prompt: 'Analyze project structure',
|
|
394
|
+
options: {
|
|
395
|
+
model: 'deepseek-v3.1',
|
|
396
|
+
// Only allow these tools
|
|
397
|
+
allowedTools: ['Read', 'Glob', 'Grep'],
|
|
398
|
+
// Or disallow these tools
|
|
399
|
+
disallowedTools: ['Bash', 'Write', 'Edit']
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
```python [Python]
|
|
405
|
+
options = CodeBuddyAgentOptions(
|
|
406
|
+
model="deepseek-v3.1",
|
|
407
|
+
# Only allow these tools
|
|
408
|
+
allowed_tools=["Read", "Glob", "Grep"],
|
|
409
|
+
# Or disallow these tools
|
|
410
|
+
disallowed_tools=["Bash", "Write", "Edit"]
|
|
411
|
+
)
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
:::
|
|
415
|
+
|
|
416
|
+
### Common Tool Names
|
|
417
|
+
|
|
418
|
+
| Tool Name | Functionality |
|
|
419
|
+
|--------|------|
|
|
420
|
+
| `Read` | Read files |
|
|
421
|
+
| `Write` | Write files |
|
|
422
|
+
| `Edit` | Edit files |
|
|
423
|
+
| `Glob` | File pattern matching |
|
|
424
|
+
| `Grep` | Content search |
|
|
425
|
+
| `Bash` | Execute shell commands |
|
|
426
|
+
| `Task` | Sub-agent tasks |
|
|
427
|
+
| `WebFetch` | Fetch web content |
|
|
428
|
+
| `WebSearch` | Web search |
|
|
429
|
+
|
|
430
|
+
## Best Practices
|
|
431
|
+
|
|
432
|
+
1. **Use `default` mode by default**: Provides the most complete permission control
|
|
433
|
+
|
|
434
|
+
2. **Use `plan` mode for read-only tasks**:
|
|
435
|
+
```typescript
|
|
436
|
+
permissionMode: 'plan' // Only allow Read, Glob, Grep
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
3. **Combine with whitelist for precise control**:
|
|
440
|
+
```typescript
|
|
441
|
+
allowedTools: ['Read', 'Glob', 'Grep'],
|
|
442
|
+
permissionMode: 'bypassPermissions' // Allowed tools execute automatically
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
4. **Use `interrupt` for dangerous commands**:
|
|
446
|
+
```typescript
|
|
447
|
+
return {
|
|
448
|
+
behavior: 'deny',
|
|
449
|
+
message: 'Dangerous operation',
|
|
450
|
+
interrupt: true // Immediately interrupt, don't let AI retry
|
|
451
|
+
};
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
5. **Avoid `bypassPermissions` in production**: This mode skips all permission checks
|
|
455
|
+
|
|
456
|
+
## Related Documentation
|
|
457
|
+
|
|
458
|
+
- [SDK Overview](sdk.md) - Quick start and usage examples
|
|
459
|
+
- [SDK Hook System](sdk-hooks.md) - More granular tool control
|
|
460
|
+
- [TypeScript SDK Reference](sdk-typescript.md) - Complete API reference
|
|
461
|
+
- [Python SDK Reference](sdk-python.md) - Complete API reference
|