@tencent-ai/agent-sdk 0.3.157 → 0.3.158

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 (59) hide show
  1. package/cli/CHANGELOG.md +24 -0
  2. package/cli/dist/codebuddy-headless.js +214 -209
  3. package/cli/dist/web-ui/assets/index-C5x-jWxM.css +32 -0
  4. package/cli/dist/web-ui/assets/{index-bVNRRvKC.js → index-CU_ExRgj.js} +179 -167
  5. package/cli/dist/web-ui/assets/workbox-window.prod.es5-BBnX5xw4.js +2 -0
  6. package/cli/dist/web-ui/docs/cn/cli/goal.md +161 -0
  7. package/cli/dist/web-ui/docs/cn/cli/hooks.md +12 -4
  8. package/cli/dist/web-ui/docs/cn/cli/release-notes/README.md +2 -0
  9. package/cli/dist/web-ui/docs/cn/cli/release-notes/v2.98.0.md +48 -0
  10. package/cli/dist/web-ui/docs/cn/cli/release-notes/v2.98.1.md +19 -0
  11. package/cli/dist/web-ui/docs/cn/cli/slash-commands.md +1 -0
  12. package/cli/dist/web-ui/docs/en/cli/goal.md +161 -0
  13. package/cli/dist/web-ui/docs/en/cli/hooks.md +10 -2
  14. package/cli/dist/web-ui/docs/en/cli/release-notes/README.md +2 -0
  15. package/cli/dist/web-ui/docs/en/cli/release-notes/v2.98.0.md +48 -0
  16. package/cli/dist/web-ui/docs/en/cli/release-notes/v2.98.1.md +19 -0
  17. package/cli/dist/web-ui/docs/en/cli/slash-commands.md +1 -0
  18. package/cli/dist/web-ui/docs/search-index-en.json +1 -1
  19. package/cli/dist/web-ui/docs/search-index-zh.json +1 -1
  20. package/cli/dist/web-ui/docs/sidebar-en.json +1 -1
  21. package/cli/dist/web-ui/docs/sidebar-zh.json +1 -1
  22. package/cli/dist/web-ui/index.html +2 -2
  23. package/cli/dist/web-ui/sw.js +1 -1
  24. package/cli/dist/web-ui/{workbox-e082a648.js → workbox-fed2bdfe.js} +1 -1
  25. package/cli/package.json +1 -1
  26. package/cli/product.cloudhosted.json +4 -3
  27. package/cli/product.internal.json +4 -3
  28. package/cli/product.ioa.json +25 -3
  29. package/cli/product.json +27 -5
  30. package/cli/product.selfhosted.json +4 -3
  31. package/lib/auth.js +3 -2
  32. package/lib/auth.js.map +1 -1
  33. package/lib/connect.js +3 -2
  34. package/lib/connect.js.map +1 -1
  35. package/lib/index.js +1 -1
  36. package/lib/mcp/create-sdk-mcp-server.js +3 -2
  37. package/lib/mcp/create-sdk-mcp-server.js.map +1 -1
  38. package/lib/plugin.js +13 -22
  39. package/lib/plugin.js.map +1 -1
  40. package/lib/query.d.ts.map +1 -1
  41. package/lib/query.js +2 -2
  42. package/lib/query.js.map +1 -1
  43. package/lib/session.js +4 -4
  44. package/lib/session.js.map +1 -1
  45. package/lib/transport/index.js +2 -2
  46. package/lib/transport/index.js.map +1 -1
  47. package/lib/transport/process-transport.js +7 -17
  48. package/lib/transport/process-transport.js.map +1 -1
  49. package/lib/utils/cli-resolver.js +6 -6
  50. package/lib/utils/cli-resolver.js.map +1 -1
  51. package/lib/utils/env-utils.js +2 -1
  52. package/lib/utils/env-utils.js.map +1 -1
  53. package/lib/utils/process.js +2 -1
  54. package/lib/utils/process.js.map +1 -1
  55. package/lib/utils/type-guards.js +2 -1
  56. package/lib/utils/type-guards.js.map +1 -1
  57. package/package.json +1 -1
  58. package/cli/dist/web-ui/assets/index-CY6b2fbj.css +0 -32
  59. package/cli/dist/web-ui/assets/workbox-window.prod.es5-BIl4cyR9.js +0 -2
@@ -1 +1 @@
1
- [{"text":"Getting Started","collapsed":false,"items":[{"text":"Overview","link":"/cli/overview"},{"text":"Quickstart","link":"/cli/quickstart"},{"text":"Installation","link":"/cli/installation"},{"text":"Common Workflows","link":"/cli/common-workflows"},{"text":"Interactive Mode","link":"/cli/interactive-mode"},{"text":"Headless Mode","link":"/cli/headless"},{"text":"Troubleshooting","link":"/cli/troubleshooting"},{"text":"Best Practices","link":"/cli/best-practices"}]},{"text":"Configuration","collapsed":false,"items":[{"text":"Settings","link":"/cli/settings"},{"text":"Models","link":"/cli/models"},{"text":"Memory","link":"/cli/memory"},{"text":"Status Line","link":"/cli/statusline"},{"text":"Environment Variables","link":"/cli/env-vars"},{"text":".codebuddy Directory Structure","link":"/cli/codebuddy-dir"},{"text":"Monitoring","link":"/cli/monitoring"},{"text":"Terminal Configuration","link":"/cli/terminal-config"},{"text":"IDE Integrations","link":"/cli/ide-integrations"},{"text":"ACP Protocol","link":"/cli/acp"},{"text":"GitLab CI/CD","link":"/cli/gitlab-ci-cd"},{"text":"Dev Container","link":"/cli/devcontainer"},{"text":"MCP","link":"/cli/mcp"},{"text":"Slash Commands","link":"/cli/slash-commands"},{"text":"Custom Keybindings","link":"/cli/keybindings"}]},{"text":"Features","collapsed":false,"items":[{"text":"Sub-Agents","link":"/cli/sub-agents"},{"text":"Agent Teams","link":"/cli/agent-teams"},{"text":"Skills","link":"/cli/skills"},{"text":"Hooks Guide","link":"/cli/hooks-guide"},{"text":"Plugins","link":"/cli/plugins"},{"text":"Plugin Marketplaces","link":"/cli/plugin-marketplaces"},{"text":"Checkpointing","link":"/cli/checkpointing"},{"text":"Git Worktree","link":"/cli/worktree"},{"text":"Remote Control","link":"/cli/remote-control"},{"text":"Web UI","link":"/cli/web-ui"},{"text":"Scheduled Tasks","link":"/cli/scheduled-tasks"},{"text":"WeCom Bot Setup (WebSocket)","link":"/cli/wecom-bot-setup"},{"text":"Channels [Beta]","link":"/cli/channels"},{"text":"Daemon Mode","link":"/cli/daemon"}]},{"text":"Security","collapsed":false,"items":[{"text":"Security Overview","link":"/cli/security"},{"text":"Identity and Access Management","link":"/cli/iam"},{"text":"Bash Sandboxing","link":"/cli/bash-sandboxing"}]},{"text":"Reference","collapsed":false,"items":[{"text":"CLI Reference","link":"/cli/cli-reference"},{"text":"Hooks Reference","link":"/cli/hooks"},{"text":"Plugins Reference","link":"/cli/plugins-reference"},{"text":"Cost Management","link":"/cli/costs"},{"text":"Tools Reference","link":"/cli/tools-reference"},{"text":"Channels Reference [Beta]","link":"/cli/channels-reference"},{"text":"HTTP API (Beta)","link":"/cli/http-api"}]},{"text":"SDK","collapsed":false,"items":[{"text":"Quickstart","link":"/cli/sdk"},{"text":"Python SDK Reference","link":"/cli/sdk-python"},{"text":"TypeScript SDK Reference","link":"/cli/sdk-typescript"},{"text":"Hook System","link":"/cli/sdk-hooks"},{"text":"Permission Control","link":"/cli/sdk-permissions"},{"text":"Session Management","link":"/cli/sdk-sessions"},{"text":"SDK Custom Tools","link":"/cli/sdk-custom-tools"},{"text":"SDK MCP Integration","link":"/cli/sdk-mcp"},{"text":"SDK Demo Projects","link":"/cli/sdk-demos"}]},{"text":"Release Notes","collapsed":true,"items":[{"text":"Overview","link":"/cli/release-notes/README"},{"text":"v2.97.5","link":"/cli/release-notes/v2.97.5"},{"text":"v2.97.4","link":"/cli/release-notes/v2.97.4"},{"text":"v2.97.3","link":"/cli/release-notes/v2.97.3"},{"text":"v2.97.2","link":"/cli/release-notes/v2.97.2"},{"text":"v2.97.1","link":"/cli/release-notes/v2.97.1"},{"text":"v2.97.0","link":"/cli/release-notes/v2.97.0"},{"text":"v2.96.1","link":"/cli/release-notes/v2.96.1"},{"text":"v2.96.0","link":"/cli/release-notes/v2.96.0"},{"text":"v2.95.1","link":"/cli/release-notes/v2.95.1"},{"text":"v2.95.0","link":"/cli/release-notes/v2.95.0"},{"text":"v2.94.4","link":"/cli/release-notes/v2.94.4"},{"text":"v2.94.3","link":"/cli/release-notes/v2.94.3"},{"text":"v2.94.2","link":"/cli/release-notes/v2.94.2"},{"text":"v2.94.1","link":"/cli/release-notes/v2.94.1"},{"text":"v2.94.0","link":"/cli/release-notes/v2.94.0"},{"text":"v2.93.7","link":"/cli/release-notes/v2.93.7"},{"text":"v2.93.6","link":"/cli/release-notes/v2.93.6"},{"text":"v2.93.5","link":"/cli/release-notes/v2.93.5"},{"text":"v2.93.4","link":"/cli/release-notes/v2.93.4"},{"text":"v2.93.3","link":"/cli/release-notes/v2.93.3"},{"text":"v2.93.2","link":"/cli/release-notes/v2.93.2"},{"text":"v2.93.1","link":"/cli/release-notes/v2.93.1"},{"text":"v2.93.0","link":"/cli/release-notes/v2.93.0"},{"text":"v2.92.0","link":"/cli/release-notes/v2.92.0"},{"text":"v2.91.0","link":"/cli/release-notes/v2.91.0"},{"text":"v2.90.0","link":"/cli/release-notes/v2.90.0"},{"text":"v2.89.0","link":"/cli/release-notes/v2.89.0"},{"text":"v2.88.0","link":"/cli/release-notes/v2.88.0"},{"text":"v2.87.0","link":"/cli/release-notes/v2.87.0"},{"text":"v2.86.0","link":"/cli/release-notes/v2.86.0"},{"text":"v2.85.0","link":"/cli/release-notes/v2.85.0"},{"text":"v2.84.0","link":"/cli/release-notes/v2.84.0"},{"text":"v2.83.1","link":"/cli/release-notes/v2.83.1"},{"text":"v2.83.0","link":"/cli/release-notes/v2.83.0"},{"text":"v2.82.0","link":"/cli/release-notes/v2.82.0"},{"text":"v2.81.2","link":"/cli/release-notes/v2.81.2"},{"text":"v2.81.1","link":"/cli/release-notes/v2.81.1"},{"text":"v2.81.0","link":"/cli/release-notes/v2.81.0"},{"text":"v2.80.0","link":"/cli/release-notes/v2.80.0"},{"text":"v2.79.1","link":"/cli/release-notes/v2.79.1"},{"text":"v2.79.0","link":"/cli/release-notes/v2.79.0"},{"text":"v2.78.1","link":"/cli/release-notes/v2.78.1"},{"text":"v2.78.0","link":"/cli/release-notes/v2.78.0"},{"text":"v2.77.1","link":"/cli/release-notes/v2.77.1"},{"text":"v2.77.0","link":"/cli/release-notes/v2.77.0"},{"text":"v2.76.0","link":"/cli/release-notes/v2.76.0"},{"text":"v2.75.0","link":"/cli/release-notes/v2.75.0"},{"text":"v2.74.0","link":"/cli/release-notes/v2.74.0"},{"text":"v2.73.0","link":"/cli/release-notes/v2.73.0"},{"text":"v2.72.0","link":"/cli/release-notes/v2.72.0"},{"text":"v2.71.1","link":"/cli/release-notes/v2.71.1"},{"text":"v2.71.0","link":"/cli/release-notes/v2.71.0"},{"text":"v2.70.1","link":"/cli/release-notes/v2.70.1"},{"text":"v2.70.0","link":"/cli/release-notes/v2.70.0"},{"text":"v2.69.0","link":"/cli/release-notes/v2.69.0"},{"text":"v2.68.0","link":"/cli/release-notes/v2.68.0"},{"text":"v2.67.0","link":"/cli/release-notes/v2.67.0"},{"text":"v2.66.2","link":"/cli/release-notes/v2.66.2"},{"text":"v2.66.1","link":"/cli/release-notes/v2.66.1"},{"text":"v2.66.0","link":"/cli/release-notes/v2.66.0"},{"text":"v2.65.1","link":"/cli/release-notes/v2.65.1"},{"text":"v2.65.0","link":"/cli/release-notes/v2.65.0"},{"text":"v2.64.2","link":"/cli/release-notes/v2.64.2"},{"text":"v2.64.1","link":"/cli/release-notes/v2.64.1"},{"text":"v2.64.0","link":"/cli/release-notes/v2.64.0"},{"text":"v2.63.5","link":"/cli/release-notes/v2.63.5"},{"text":"v2.63.4","link":"/cli/release-notes/v2.63.4"},{"text":"v2.63.3","link":"/cli/release-notes/v2.63.3"},{"text":"v2.63.2","link":"/cli/release-notes/v2.63.2"},{"text":"v2.63.1","link":"/cli/release-notes/v2.63.1"},{"text":"v2.63.0","link":"/cli/release-notes/v2.63.0"},{"text":"v2.62.1","link":"/cli/release-notes/v2.62.1"},{"text":"v2.62.0","link":"/cli/release-notes/v2.62.0"},{"text":"v2.61.3","link":"/cli/release-notes/v2.61.3"},{"text":"v2.61.2","link":"/cli/release-notes/v2.61.2"},{"text":"v2.61.1","link":"/cli/release-notes/v2.61.1"},{"text":"v2.61.0","link":"/cli/release-notes/v2.61.0"},{"text":"v2.60.0","link":"/cli/release-notes/v2.60.0"},{"text":"v2.59.0","link":"/cli/release-notes/v2.59.0"},{"text":"v2.58.0","link":"/cli/release-notes/v2.58.0"},{"text":"v2.57.1","link":"/cli/release-notes/v2.57.1"},{"text":"v2.57.0","link":"/cli/release-notes/v2.57.0"},{"text":"v2.56.1","link":"/cli/release-notes/v2.56.1"},{"text":"v2.56.0","link":"/cli/release-notes/v2.56.0"},{"text":"v2.55.1","link":"/cli/release-notes/v2.55.1"},{"text":"v2.55.0","link":"/cli/release-notes/v2.55.0"},{"text":"v2.54.0","link":"/cli/release-notes/v2.54.0"},{"text":"v2.53.0","link":"/cli/release-notes/v2.53.0"},{"text":"v2.52.6","link":"/cli/release-notes/v2.52.6"},{"text":"v2.52.5","link":"/cli/release-notes/v2.52.5"},{"text":"v2.52.4","link":"/cli/release-notes/v2.52.4"},{"text":"v2.52.3","link":"/cli/release-notes/v2.52.3"},{"text":"v2.52.2","link":"/cli/release-notes/v2.52.2"},{"text":"v2.52.1","link":"/cli/release-notes/v2.52.1"},{"text":"v2.52.0","link":"/cli/release-notes/v2.52.0"},{"text":"v2.51.2","link":"/cli/release-notes/v2.51.2"},{"text":"v2.51.1","link":"/cli/release-notes/v2.51.1"},{"text":"v2.51.0","link":"/cli/release-notes/v2.51.0"},{"text":"v2.50.7","link":"/cli/release-notes/v2.50.7"},{"text":"v2.50.6","link":"/cli/release-notes/v2.50.6"},{"text":"v2.50.5","link":"/cli/release-notes/v2.50.5"},{"text":"v2.50.4","link":"/cli/release-notes/v2.50.4"},{"text":"v2.50.3","link":"/cli/release-notes/v2.50.3"},{"text":"v2.50.2","link":"/cli/release-notes/v2.50.2"},{"text":"v2.50.1","link":"/cli/release-notes/v2.50.1"},{"text":"v2.50.0","link":"/cli/release-notes/v2.50.0"},{"text":"v2.49.7","link":"/cli/release-notes/v2.49.7"},{"text":"v2.49.6","link":"/cli/release-notes/v2.49.6"},{"text":"v2.49.5","link":"/cli/release-notes/v2.49.5"},{"text":"v2.49.3","link":"/cli/release-notes/v2.49.3"},{"text":"v2.49.2","link":"/cli/release-notes/v2.49.2"},{"text":"v2.49.1","link":"/cli/release-notes/v2.49.1"},{"text":"v2.49.0","link":"/cli/release-notes/v2.49.0"},{"text":"v2.48.1","link":"/cli/release-notes/v2.48.1"},{"text":"v2.48.0","link":"/cli/release-notes/v2.48.0"},{"text":"v2.47.0","link":"/cli/release-notes/v2.47.0"},{"text":"v2.46.0","link":"/cli/release-notes/v2.46.0"},{"text":"v2.45.1","link":"/cli/release-notes/v2.45.1"},{"text":"v2.45.0","link":"/cli/release-notes/v2.45.0"},{"text":"v2.44.1","link":"/cli/release-notes/v2.44.1"},{"text":"v2.44.0","link":"/cli/release-notes/v2.44.0"},{"text":"v2.43.1","link":"/cli/release-notes/v2.43.1"},{"text":"v2.43.0","link":"/cli/release-notes/v2.43.0"},{"text":"v2.42.3","link":"/cli/release-notes/v2.42.3"},{"text":"v2.42.1","link":"/cli/release-notes/v2.42.1"},{"text":"v2.42.0","link":"/cli/release-notes/v2.42.0"},{"text":"v2.41.8","link":"/cli/release-notes/v2.41.8"},{"text":"v2.41.7","link":"/cli/release-notes/v2.41.7"},{"text":"v2.41.6","link":"/cli/release-notes/v2.41.6"},{"text":"v2.41.5","link":"/cli/release-notes/v2.41.5"},{"text":"v2.41.4","link":"/cli/release-notes/v2.41.4"},{"text":"v2.41.3","link":"/cli/release-notes/v2.41.3"},{"text":"v2.41.2","link":"/cli/release-notes/v2.41.2"},{"text":"v2.41.1","link":"/cli/release-notes/v2.41.1"},{"text":"v2.41.0","link":"/cli/release-notes/v2.41.0"},{"text":"v2.40.1","link":"/cli/release-notes/v2.40.1"},{"text":"v2.40.0","link":"/cli/release-notes/v2.40.0"},{"text":"v2.39.0","link":"/cli/release-notes/v2.39.0"},{"text":"v2.38.2","link":"/cli/release-notes/v2.38.2"},{"text":"v2.38.1","link":"/cli/release-notes/v2.38.1"},{"text":"v2.38.0","link":"/cli/release-notes/v2.38.0"},{"text":"🚀 CodeBuddy Code v2.37.20 Release","link":"/cli/release-notes/v2.37.20"},{"text":"v2.37.19","link":"/cli/release-notes/v2.37.19"},{"text":"v2.37.18","link":"/cli/release-notes/v2.37.18"},{"text":"v2.37.17","link":"/cli/release-notes/v2.37.17"},{"text":"v2.37.16","link":"/cli/release-notes/v2.37.16"},{"text":"v2.37.15","link":"/cli/release-notes/v2.37.15"},{"text":"v2.37.14","link":"/cli/release-notes/v2.37.14"},{"text":"v2.37.13","link":"/cli/release-notes/v2.37.13"},{"text":"v2.37.12","link":"/cli/release-notes/v2.37.12"},{"text":"v2.37.11","link":"/cli/release-notes/v2.37.11"},{"text":"v2.37.10","link":"/cli/release-notes/v2.37.10"},{"text":"v2.37.9","link":"/cli/release-notes/v2.37.9"},{"text":"v2.37.8","link":"/cli/release-notes/v2.37.8"},{"text":"v2.37.7","link":"/cli/release-notes/v2.37.7"},{"text":"v2.37.6","link":"/cli/release-notes/v2.37.6"},{"text":"v2.37.5","link":"/cli/release-notes/v2.37.5"},{"text":"v2.37.4","link":"/cli/release-notes/v2.37.4"},{"text":"v2.37.3","link":"/cli/release-notes/v2.37.3"},{"text":"v2.37.2","link":"/cli/release-notes/v2.37.2"},{"text":"v2.37.1","link":"/cli/release-notes/v2.37.1"},{"text":"v2.37.0","link":"/cli/release-notes/v2.37.0"},{"text":"v2.36.3","link":"/cli/release-notes/v2.36.3"},{"text":"v2.36.2","link":"/cli/release-notes/v2.36.2"},{"text":"v2.36.1","link":"/cli/release-notes/v2.36.1"},{"text":"v2.36.0","link":"/cli/release-notes/v2.36.0"},{"text":"v2.35.0","link":"/cli/release-notes/v2.35.0"},{"text":"v2.34.1","link":"/cli/release-notes/v2.34.1"},{"text":"v2.34.0","link":"/cli/release-notes/v2.34.0"},{"text":"v2.33.1","link":"/cli/release-notes/v2.33.1"},{"text":"v2.33.0","link":"/cli/release-notes/v2.33.0"},{"text":"v2.32.0","link":"/cli/release-notes/v2.32.0"},{"text":"v2.31.2","link":"/cli/release-notes/v2.31.2"},{"text":"v2.31.1","link":"/cli/release-notes/v2.31.1"},{"text":"v2.31.0","link":"/cli/release-notes/v2.31.0"},{"text":"v2.30.1","link":"/cli/release-notes/v2.30.1"},{"text":"v2.30.0","link":"/cli/release-notes/v2.30.0"},{"text":"v2.29.0","link":"/cli/release-notes/v2.29.0"},{"text":"v2.28.1","link":"/cli/release-notes/v2.28.1"},{"text":"v2.28.0","link":"/cli/release-notes/v2.28.0"},{"text":"v2.27.3","link":"/cli/release-notes/v2.27.3"},{"text":"v2.27.2","link":"/cli/release-notes/v2.27.2"},{"text":"v2.27.1","link":"/cli/release-notes/v2.27.1"},{"text":"v2.27.0","link":"/cli/release-notes/v2.27.0"},{"text":"v2.26.0","link":"/cli/release-notes/v2.26.0"},{"text":"v2.25.1","link":"/cli/release-notes/v2.25.1"},{"text":"v2.25.0","link":"/cli/release-notes/v2.25.0"},{"text":"v2.24.0","link":"/cli/release-notes/v2.24.0"},{"text":"v2.23.5","link":"/cli/release-notes/v2.23.5"},{"text":"v2.23.0","link":"/cli/release-notes/v2.23.0"},{"text":"v2.23.4","link":"/cli/release-notes/v2.23.4"},{"text":"v2.23.3","link":"/cli/release-notes/v2.23.3"},{"text":"v2.23.2","link":"/cli/release-notes/v2.23.2"},{"text":"v2.22.0","link":"/cli/release-notes/v2.22.0"},{"text":"v2.21.0","link":"/cli/release-notes/v2.21.0"},{"text":"v2.20.1","link":"/cli/release-notes/v2.20.1"},{"text":"v2.20.0","link":"/cli/release-notes/v2.20.0"},{"text":"v2.19.2","link":"/cli/release-notes/v2.19.2"},{"text":"v2.19.1","link":"/cli/release-notes/v2.19.1"},{"text":"v2.19.0","link":"/cli/release-notes/v2.19.0"},{"text":"v2.18.0","link":"/cli/release-notes/v2.18.0"},{"text":"v2.17.0","link":"/cli/release-notes/v2.17.0"},{"text":"v2.16.0","link":"/cli/release-notes/v2.16.0"},{"text":"v2.15.1","link":"/cli/release-notes/v2.15.1"},{"text":"v2.15.0","link":"/cli/release-notes/v2.15.0"},{"text":"v2.14.1","link":"/cli/release-notes/v2.14.1"},{"text":"v2.14.0","link":"/cli/release-notes/v2.14.0"},{"text":"v2.13.0","link":"/cli/release-notes/v2.13.0"},{"text":"v2.12.0","link":"/cli/release-notes/v2.12.0"},{"text":"v2.11.0","link":"/cli/release-notes/v2.11.0"},{"text":"v2.10.1","link":"/cli/release-notes/v2.10.1"},{"text":"v2.10.0","link":"/cli/release-notes/v2.10.0"},{"text":"v2.9.0","link":"/cli/release-notes/v2.9.0"},{"text":"v2.8.6","link":"/cli/release-notes/v2.8.6"},{"text":"v2.8.5","link":"/cli/release-notes/v2.8.5"},{"text":"v2.8.4","link":"/cli/release-notes/v2.8.4"},{"text":"v2.8.3","link":"/cli/release-notes/v2.8.3"},{"text":"v2.8.2","link":"/cli/release-notes/v2.8.2"},{"text":"v2.8.1","link":"/cli/release-notes/v2.8.1"},{"text":"v2.8.0","link":"/cli/release-notes/v2.8.0"},{"text":"v2.7.0","link":"/cli/release-notes/v2.7.0"},{"text":"v2.6.1","link":"/cli/release-notes/v2.6.1"},{"text":"v2.6.0","link":"/cli/release-notes/v2.6.0"},{"text":"v2.5.0","link":"/cli/release-notes/v2.5.0"},{"text":"v2.4.0","link":"/cli/release-notes/v2.4.0"},{"text":"v2.3.1","link":"/cli/release-notes/v2.3.1"}]}]
1
+ [{"text":"Getting Started","collapsed":false,"items":[{"text":"Overview","link":"/cli/overview"},{"text":"Quickstart","link":"/cli/quickstart"},{"text":"Installation","link":"/cli/installation"},{"text":"Common Workflows","link":"/cli/common-workflows"},{"text":"Interactive Mode","link":"/cli/interactive-mode"},{"text":"Headless Mode","link":"/cli/headless"},{"text":"Troubleshooting","link":"/cli/troubleshooting"},{"text":"Best Practices","link":"/cli/best-practices"}]},{"text":"Configuration","collapsed":false,"items":[{"text":"Settings","link":"/cli/settings"},{"text":"Models","link":"/cli/models"},{"text":"Memory","link":"/cli/memory"},{"text":"Status Line","link":"/cli/statusline"},{"text":"Environment Variables","link":"/cli/env-vars"},{"text":"Directory Structure","link":"/cli/codebuddy-dir"},{"text":"Monitoring","link":"/cli/monitoring"},{"text":"Terminal Configuration","link":"/cli/terminal-config"},{"text":"IDE Integrations","link":"/cli/ide-integrations"},{"text":"ACP Protocol","link":"/cli/acp"},{"text":"GitLab CI/CD","link":"/cli/gitlab-ci-cd"},{"text":"Dev Container","link":"/cli/devcontainer"},{"text":"MCP","link":"/cli/mcp"},{"text":"Slash Commands","link":"/cli/slash-commands"},{"text":"Custom Keybindings","link":"/cli/keybindings"}]},{"text":"Features","collapsed":false,"items":[{"text":"Sub-Agents","link":"/cli/sub-agents"},{"text":"Agent Teams","link":"/cli/agent-teams"},{"text":"Skills","link":"/cli/skills"},{"text":"Hooks Guide","link":"/cli/hooks-guide"},{"text":"Plugins","link":"/cli/plugins"},{"text":"Plugin Marketplaces","link":"/cli/plugin-marketplaces"},{"text":"Checkpointing","link":"/cli/checkpointing"},{"text":"Git Worktree","link":"/cli/worktree"},{"text":"Remote Control","link":"/cli/remote-control"},{"text":"Web UI","link":"/cli/web-ui"},{"text":"WeCom Bot Setup (WebSocket)","link":"/cli/wecom-bot-setup"},{"text":"Daemon Mode","link":"/cli/daemon"}]},{"text":"Automation","collapsed":false,"items":[{"text":"Goal","link":"/cli/goal"},{"text":"Scheduled Tasks","link":"/cli/scheduled-tasks"},{"text":"Channels [Beta]","link":"/cli/channels"}]},{"text":"Security","collapsed":false,"items":[{"text":"Security Overview","link":"/cli/security"},{"text":"Identity and Access Management","link":"/cli/iam"},{"text":"Bash Sandboxing","link":"/cli/bash-sandboxing"}]},{"text":"Reference","collapsed":false,"items":[{"text":"CLI Reference","link":"/cli/cli-reference"},{"text":"Hooks Reference","link":"/cli/hooks"},{"text":"Plugins Reference","link":"/cli/plugins-reference"},{"text":"Cost Management","link":"/cli/costs"},{"text":"Tools Reference","link":"/cli/tools-reference"},{"text":"Channels Reference [Beta]","link":"/cli/channels-reference"},{"text":"HTTP API (Beta)","link":"/cli/http-api"}]},{"text":"SDK","collapsed":false,"items":[{"text":"Quickstart","link":"/cli/sdk"},{"text":"Python SDK Reference","link":"/cli/sdk-python"},{"text":"TypeScript SDK Reference","link":"/cli/sdk-typescript"},{"text":"Hook System","link":"/cli/sdk-hooks"},{"text":"Permission Control","link":"/cli/sdk-permissions"},{"text":"Session Management","link":"/cli/sdk-sessions"},{"text":"SDK Custom Tools","link":"/cli/sdk-custom-tools"},{"text":"SDK MCP Integration","link":"/cli/sdk-mcp"},{"text":"SDK Demo Projects","link":"/cli/sdk-demos"}]},{"text":"Release Notes","collapsed":true,"items":[{"text":"Overview","link":"/cli/release-notes/README"},{"text":"v2.98.1","link":"/cli/release-notes/v2.98.1"},{"text":"v2.98.0","link":"/cli/release-notes/v2.98.0"},{"text":"v2.97.5","link":"/cli/release-notes/v2.97.5"},{"text":"v2.97.4","link":"/cli/release-notes/v2.97.4"},{"text":"v2.97.3","link":"/cli/release-notes/v2.97.3"},{"text":"v2.97.2","link":"/cli/release-notes/v2.97.2"},{"text":"v2.97.1","link":"/cli/release-notes/v2.97.1"},{"text":"v2.97.0","link":"/cli/release-notes/v2.97.0"},{"text":"v2.96.1","link":"/cli/release-notes/v2.96.1"},{"text":"v2.96.0","link":"/cli/release-notes/v2.96.0"},{"text":"v2.95.1","link":"/cli/release-notes/v2.95.1"},{"text":"v2.95.0","link":"/cli/release-notes/v2.95.0"},{"text":"v2.94.4","link":"/cli/release-notes/v2.94.4"},{"text":"v2.94.3","link":"/cli/release-notes/v2.94.3"},{"text":"v2.94.2","link":"/cli/release-notes/v2.94.2"},{"text":"v2.94.1","link":"/cli/release-notes/v2.94.1"},{"text":"v2.94.0","link":"/cli/release-notes/v2.94.0"},{"text":"v2.93.7","link":"/cli/release-notes/v2.93.7"},{"text":"v2.93.6","link":"/cli/release-notes/v2.93.6"},{"text":"v2.93.5","link":"/cli/release-notes/v2.93.5"},{"text":"v2.93.4","link":"/cli/release-notes/v2.93.4"},{"text":"v2.93.3","link":"/cli/release-notes/v2.93.3"},{"text":"v2.93.2","link":"/cli/release-notes/v2.93.2"},{"text":"v2.93.1","link":"/cli/release-notes/v2.93.1"},{"text":"v2.93.0","link":"/cli/release-notes/v2.93.0"},{"text":"v2.92.0","link":"/cli/release-notes/v2.92.0"},{"text":"v2.91.0","link":"/cli/release-notes/v2.91.0"},{"text":"v2.90.0","link":"/cli/release-notes/v2.90.0"},{"text":"v2.89.0","link":"/cli/release-notes/v2.89.0"},{"text":"v2.88.0","link":"/cli/release-notes/v2.88.0"},{"text":"v2.87.0","link":"/cli/release-notes/v2.87.0"},{"text":"v2.86.0","link":"/cli/release-notes/v2.86.0"},{"text":"v2.85.0","link":"/cli/release-notes/v2.85.0"},{"text":"v2.84.0","link":"/cli/release-notes/v2.84.0"},{"text":"v2.83.1","link":"/cli/release-notes/v2.83.1"},{"text":"v2.83.0","link":"/cli/release-notes/v2.83.0"},{"text":"v2.82.0","link":"/cli/release-notes/v2.82.0"},{"text":"v2.81.2","link":"/cli/release-notes/v2.81.2"},{"text":"v2.81.1","link":"/cli/release-notes/v2.81.1"},{"text":"v2.81.0","link":"/cli/release-notes/v2.81.0"},{"text":"v2.80.0","link":"/cli/release-notes/v2.80.0"},{"text":"v2.79.1","link":"/cli/release-notes/v2.79.1"},{"text":"v2.79.0","link":"/cli/release-notes/v2.79.0"},{"text":"v2.78.1","link":"/cli/release-notes/v2.78.1"},{"text":"v2.78.0","link":"/cli/release-notes/v2.78.0"},{"text":"v2.77.1","link":"/cli/release-notes/v2.77.1"},{"text":"v2.77.0","link":"/cli/release-notes/v2.77.0"},{"text":"v2.76.0","link":"/cli/release-notes/v2.76.0"},{"text":"v2.75.0","link":"/cli/release-notes/v2.75.0"},{"text":"v2.74.0","link":"/cli/release-notes/v2.74.0"},{"text":"v2.73.0","link":"/cli/release-notes/v2.73.0"},{"text":"v2.72.0","link":"/cli/release-notes/v2.72.0"},{"text":"v2.71.1","link":"/cli/release-notes/v2.71.1"},{"text":"v2.71.0","link":"/cli/release-notes/v2.71.0"},{"text":"v2.70.1","link":"/cli/release-notes/v2.70.1"},{"text":"v2.70.0","link":"/cli/release-notes/v2.70.0"},{"text":"v2.69.0","link":"/cli/release-notes/v2.69.0"},{"text":"v2.68.0","link":"/cli/release-notes/v2.68.0"},{"text":"v2.67.0","link":"/cli/release-notes/v2.67.0"},{"text":"v2.66.2","link":"/cli/release-notes/v2.66.2"},{"text":"v2.66.1","link":"/cli/release-notes/v2.66.1"},{"text":"v2.66.0","link":"/cli/release-notes/v2.66.0"},{"text":"v2.65.1","link":"/cli/release-notes/v2.65.1"},{"text":"v2.65.0","link":"/cli/release-notes/v2.65.0"},{"text":"v2.64.2","link":"/cli/release-notes/v2.64.2"},{"text":"v2.64.1","link":"/cli/release-notes/v2.64.1"},{"text":"v2.64.0","link":"/cli/release-notes/v2.64.0"},{"text":"v2.63.5","link":"/cli/release-notes/v2.63.5"},{"text":"v2.63.4","link":"/cli/release-notes/v2.63.4"},{"text":"v2.63.3","link":"/cli/release-notes/v2.63.3"},{"text":"v2.63.2","link":"/cli/release-notes/v2.63.2"},{"text":"v2.63.1","link":"/cli/release-notes/v2.63.1"},{"text":"v2.63.0","link":"/cli/release-notes/v2.63.0"},{"text":"v2.62.1","link":"/cli/release-notes/v2.62.1"},{"text":"v2.62.0","link":"/cli/release-notes/v2.62.0"},{"text":"v2.61.3","link":"/cli/release-notes/v2.61.3"},{"text":"v2.61.2","link":"/cli/release-notes/v2.61.2"},{"text":"v2.61.1","link":"/cli/release-notes/v2.61.1"},{"text":"v2.61.0","link":"/cli/release-notes/v2.61.0"},{"text":"v2.60.0","link":"/cli/release-notes/v2.60.0"},{"text":"v2.59.0","link":"/cli/release-notes/v2.59.0"},{"text":"v2.58.0","link":"/cli/release-notes/v2.58.0"},{"text":"v2.57.1","link":"/cli/release-notes/v2.57.1"},{"text":"v2.57.0","link":"/cli/release-notes/v2.57.0"},{"text":"v2.56.1","link":"/cli/release-notes/v2.56.1"},{"text":"v2.56.0","link":"/cli/release-notes/v2.56.0"},{"text":"v2.55.1","link":"/cli/release-notes/v2.55.1"},{"text":"v2.55.0","link":"/cli/release-notes/v2.55.0"},{"text":"v2.54.0","link":"/cli/release-notes/v2.54.0"},{"text":"v2.53.0","link":"/cli/release-notes/v2.53.0"},{"text":"v2.52.6","link":"/cli/release-notes/v2.52.6"},{"text":"v2.52.5","link":"/cli/release-notes/v2.52.5"},{"text":"v2.52.4","link":"/cli/release-notes/v2.52.4"},{"text":"v2.52.3","link":"/cli/release-notes/v2.52.3"},{"text":"v2.52.2","link":"/cli/release-notes/v2.52.2"},{"text":"v2.52.1","link":"/cli/release-notes/v2.52.1"},{"text":"v2.52.0","link":"/cli/release-notes/v2.52.0"},{"text":"v2.51.2","link":"/cli/release-notes/v2.51.2"},{"text":"v2.51.1","link":"/cli/release-notes/v2.51.1"},{"text":"v2.51.0","link":"/cli/release-notes/v2.51.0"},{"text":"v2.50.7","link":"/cli/release-notes/v2.50.7"},{"text":"v2.50.6","link":"/cli/release-notes/v2.50.6"},{"text":"v2.50.5","link":"/cli/release-notes/v2.50.5"},{"text":"v2.50.4","link":"/cli/release-notes/v2.50.4"},{"text":"v2.50.3","link":"/cli/release-notes/v2.50.3"},{"text":"v2.50.2","link":"/cli/release-notes/v2.50.2"},{"text":"v2.50.1","link":"/cli/release-notes/v2.50.1"},{"text":"v2.50.0","link":"/cli/release-notes/v2.50.0"},{"text":"v2.49.7","link":"/cli/release-notes/v2.49.7"},{"text":"v2.49.6","link":"/cli/release-notes/v2.49.6"},{"text":"v2.49.5","link":"/cli/release-notes/v2.49.5"},{"text":"v2.49.3","link":"/cli/release-notes/v2.49.3"},{"text":"v2.49.2","link":"/cli/release-notes/v2.49.2"},{"text":"v2.49.1","link":"/cli/release-notes/v2.49.1"},{"text":"v2.49.0","link":"/cli/release-notes/v2.49.0"},{"text":"v2.48.1","link":"/cli/release-notes/v2.48.1"},{"text":"v2.48.0","link":"/cli/release-notes/v2.48.0"},{"text":"v2.47.0","link":"/cli/release-notes/v2.47.0"},{"text":"v2.46.0","link":"/cli/release-notes/v2.46.0"},{"text":"v2.45.1","link":"/cli/release-notes/v2.45.1"},{"text":"v2.45.0","link":"/cli/release-notes/v2.45.0"},{"text":"v2.44.1","link":"/cli/release-notes/v2.44.1"},{"text":"v2.44.0","link":"/cli/release-notes/v2.44.0"},{"text":"v2.43.1","link":"/cli/release-notes/v2.43.1"},{"text":"v2.43.0","link":"/cli/release-notes/v2.43.0"},{"text":"v2.42.3","link":"/cli/release-notes/v2.42.3"},{"text":"v2.42.1","link":"/cli/release-notes/v2.42.1"},{"text":"v2.42.0","link":"/cli/release-notes/v2.42.0"},{"text":"v2.41.8","link":"/cli/release-notes/v2.41.8"},{"text":"v2.41.7","link":"/cli/release-notes/v2.41.7"},{"text":"v2.41.6","link":"/cli/release-notes/v2.41.6"},{"text":"v2.41.5","link":"/cli/release-notes/v2.41.5"},{"text":"v2.41.4","link":"/cli/release-notes/v2.41.4"},{"text":"v2.41.3","link":"/cli/release-notes/v2.41.3"},{"text":"v2.41.2","link":"/cli/release-notes/v2.41.2"},{"text":"v2.41.1","link":"/cli/release-notes/v2.41.1"},{"text":"v2.41.0","link":"/cli/release-notes/v2.41.0"},{"text":"v2.40.1","link":"/cli/release-notes/v2.40.1"},{"text":"v2.40.0","link":"/cli/release-notes/v2.40.0"},{"text":"v2.39.0","link":"/cli/release-notes/v2.39.0"},{"text":"v2.38.2","link":"/cli/release-notes/v2.38.2"},{"text":"v2.38.1","link":"/cli/release-notes/v2.38.1"},{"text":"v2.38.0","link":"/cli/release-notes/v2.38.0"},{"text":"🚀 CodeBuddy Code v2.37.20 Release","link":"/cli/release-notes/v2.37.20"},{"text":"v2.37.19","link":"/cli/release-notes/v2.37.19"},{"text":"v2.37.18","link":"/cli/release-notes/v2.37.18"},{"text":"v2.37.17","link":"/cli/release-notes/v2.37.17"},{"text":"v2.37.16","link":"/cli/release-notes/v2.37.16"},{"text":"v2.37.15","link":"/cli/release-notes/v2.37.15"},{"text":"v2.37.14","link":"/cli/release-notes/v2.37.14"},{"text":"v2.37.13","link":"/cli/release-notes/v2.37.13"},{"text":"v2.37.12","link":"/cli/release-notes/v2.37.12"},{"text":"v2.37.11","link":"/cli/release-notes/v2.37.11"},{"text":"v2.37.10","link":"/cli/release-notes/v2.37.10"},{"text":"v2.37.9","link":"/cli/release-notes/v2.37.9"},{"text":"v2.37.8","link":"/cli/release-notes/v2.37.8"},{"text":"v2.37.7","link":"/cli/release-notes/v2.37.7"},{"text":"v2.37.6","link":"/cli/release-notes/v2.37.6"},{"text":"v2.37.5","link":"/cli/release-notes/v2.37.5"},{"text":"v2.37.4","link":"/cli/release-notes/v2.37.4"},{"text":"v2.37.3","link":"/cli/release-notes/v2.37.3"},{"text":"v2.37.2","link":"/cli/release-notes/v2.37.2"},{"text":"v2.37.1","link":"/cli/release-notes/v2.37.1"},{"text":"v2.37.0","link":"/cli/release-notes/v2.37.0"},{"text":"v2.36.3","link":"/cli/release-notes/v2.36.3"},{"text":"v2.36.2","link":"/cli/release-notes/v2.36.2"},{"text":"v2.36.1","link":"/cli/release-notes/v2.36.1"},{"text":"v2.36.0","link":"/cli/release-notes/v2.36.0"},{"text":"v2.35.0","link":"/cli/release-notes/v2.35.0"},{"text":"v2.34.1","link":"/cli/release-notes/v2.34.1"},{"text":"v2.34.0","link":"/cli/release-notes/v2.34.0"},{"text":"v2.33.1","link":"/cli/release-notes/v2.33.1"},{"text":"v2.33.0","link":"/cli/release-notes/v2.33.0"},{"text":"v2.32.0","link":"/cli/release-notes/v2.32.0"},{"text":"v2.31.2","link":"/cli/release-notes/v2.31.2"},{"text":"v2.31.1","link":"/cli/release-notes/v2.31.1"},{"text":"v2.31.0","link":"/cli/release-notes/v2.31.0"},{"text":"v2.30.1","link":"/cli/release-notes/v2.30.1"},{"text":"v2.30.0","link":"/cli/release-notes/v2.30.0"},{"text":"v2.29.0","link":"/cli/release-notes/v2.29.0"},{"text":"v2.28.1","link":"/cli/release-notes/v2.28.1"},{"text":"v2.28.0","link":"/cli/release-notes/v2.28.0"},{"text":"v2.27.3","link":"/cli/release-notes/v2.27.3"},{"text":"v2.27.2","link":"/cli/release-notes/v2.27.2"},{"text":"v2.27.1","link":"/cli/release-notes/v2.27.1"},{"text":"v2.27.0","link":"/cli/release-notes/v2.27.0"},{"text":"v2.26.0","link":"/cli/release-notes/v2.26.0"},{"text":"v2.25.1","link":"/cli/release-notes/v2.25.1"},{"text":"v2.25.0","link":"/cli/release-notes/v2.25.0"},{"text":"v2.24.0","link":"/cli/release-notes/v2.24.0"},{"text":"v2.23.5","link":"/cli/release-notes/v2.23.5"},{"text":"v2.23.0","link":"/cli/release-notes/v2.23.0"},{"text":"v2.23.4","link":"/cli/release-notes/v2.23.4"},{"text":"v2.23.3","link":"/cli/release-notes/v2.23.3"},{"text":"v2.23.2","link":"/cli/release-notes/v2.23.2"},{"text":"v2.22.0","link":"/cli/release-notes/v2.22.0"},{"text":"v2.21.0","link":"/cli/release-notes/v2.21.0"},{"text":"v2.20.1","link":"/cli/release-notes/v2.20.1"},{"text":"v2.20.0","link":"/cli/release-notes/v2.20.0"},{"text":"v2.19.2","link":"/cli/release-notes/v2.19.2"},{"text":"v2.19.1","link":"/cli/release-notes/v2.19.1"},{"text":"v2.19.0","link":"/cli/release-notes/v2.19.0"},{"text":"v2.18.0","link":"/cli/release-notes/v2.18.0"},{"text":"v2.17.0","link":"/cli/release-notes/v2.17.0"},{"text":"v2.16.0","link":"/cli/release-notes/v2.16.0"},{"text":"v2.15.1","link":"/cli/release-notes/v2.15.1"},{"text":"v2.15.0","link":"/cli/release-notes/v2.15.0"},{"text":"v2.14.1","link":"/cli/release-notes/v2.14.1"},{"text":"v2.14.0","link":"/cli/release-notes/v2.14.0"},{"text":"v2.13.0","link":"/cli/release-notes/v2.13.0"},{"text":"v2.12.0","link":"/cli/release-notes/v2.12.0"},{"text":"v2.11.0","link":"/cli/release-notes/v2.11.0"},{"text":"v2.10.1","link":"/cli/release-notes/v2.10.1"},{"text":"v2.10.0","link":"/cli/release-notes/v2.10.0"},{"text":"v2.9.0","link":"/cli/release-notes/v2.9.0"},{"text":"v2.8.6","link":"/cli/release-notes/v2.8.6"},{"text":"v2.8.5","link":"/cli/release-notes/v2.8.5"},{"text":"v2.8.4","link":"/cli/release-notes/v2.8.4"},{"text":"v2.8.3","link":"/cli/release-notes/v2.8.3"},{"text":"v2.8.2","link":"/cli/release-notes/v2.8.2"},{"text":"v2.8.1","link":"/cli/release-notes/v2.8.1"},{"text":"v2.8.0","link":"/cli/release-notes/v2.8.0"},{"text":"v2.7.0","link":"/cli/release-notes/v2.7.0"},{"text":"v2.6.1","link":"/cli/release-notes/v2.6.1"},{"text":"v2.6.0","link":"/cli/release-notes/v2.6.0"},{"text":"v2.5.0","link":"/cli/release-notes/v2.5.0"},{"text":"v2.4.0","link":"/cli/release-notes/v2.4.0"},{"text":"v2.3.1","link":"/cli/release-notes/v2.3.1"}]}]
@@ -1 +1 @@
1
- [{"text":"入门指南","collapsed":false,"items":[{"text":"概述","link":"/cli/overview"},{"text":"快速开始","link":"/cli/quickstart"},{"text":"安装指南","link":"/cli/installation"},{"text":"常见工作流","link":"/cli/common-workflows"},{"text":"交互模式","link":"/cli/interactive-mode"},{"text":"无头模式","link":"/cli/headless"},{"text":"故障排除","link":"/cli/troubleshooting"},{"text":"最佳实践","link":"/cli/best-practices"}]},{"text":"配置","collapsed":false,"items":[{"text":"设置","link":"/cli/settings"},{"text":"模型配置","link":"/cli/models"},{"text":"记忆","link":"/cli/memory"},{"text":"状态行配置","link":"/cli/statusline"},{"text":"终端配置","link":"/cli/terminal-config"},{"text":"环境变量","link":"/cli/env-vars"},{"text":".codebuddy 目录结构说明","link":"/cli/codebuddy-dir"},{"text":"监控","link":"/cli/monitoring"},{"text":"IDE 集成","link":"/cli/ide-integrations"},{"text":"ACP 协议集成","link":"/cli/acp"},{"text":"GitLab CI/CD 集成","link":"/cli/gitlab-ci-cd"},{"text":"开发容器","link":"/cli/devcontainer"},{"text":"MCP 使用文档","link":"/cli/mcp"},{"text":"斜杠命令","link":"/cli/slash-commands"},{"text":"自定义快捷键","link":"/cli/keybindings"}]},{"text":"高级功能","collapsed":false,"items":[{"text":"子代理","link":"/cli/sub-agents"},{"text":"Agent Teams","link":"/cli/agent-teams"},{"text":"Skills 功能","link":"/cli/skills"},{"text":"Hooks 使用指南","link":"/cli/hooks-guide"},{"text":"插件系统","link":"/cli/plugins"},{"text":"插件市场","link":"/cli/plugin-marketplaces"},{"text":"检查点","link":"/cli/checkpointing"},{"text":"Git Worktree 支持","link":"/cli/worktree"},{"text":"远程控制","link":"/cli/remote-control"},{"text":"Web UI","link":"/cli/web-ui"},{"text":"定时任务","link":"/cli/scheduled-tasks"},{"text":"企业微信智能机器人接入","link":"/cli/wecom-bot-setup"},{"text":"Channels [Beta]","link":"/cli/channels"},{"text":"Daemon 模式","link":"/cli/daemon"}]},{"text":"安全","collapsed":false,"items":[{"text":"安全概述","link":"/cli/security"},{"text":"身份和访问管理","link":"/cli/iam"},{"text":"Bash 沙箱","link":"/cli/bash-sandboxing"}]},{"text":"参考文档","collapsed":false,"items":[{"text":"CLI 命令参考","link":"/cli/cli-reference"},{"text":"Hooks 配置参考","link":"/cli/hooks"},{"text":"插件 API 参考","link":"/cli/plugins-reference"},{"text":"成本管理","link":"/cli/costs"},{"text":"工具参考","link":"/cli/tools-reference"},{"text":"Channels 参考 [Beta]","link":"/cli/channels-reference"},{"text":"HTTP API (Beta)","link":"/cli/http-api"}]},{"text":"SDK","collapsed":false,"items":[{"text":"快速开始","link":"/cli/sdk"},{"text":"Python SDK 参考","link":"/cli/sdk-python"},{"text":"TypeScript SDK 参考","link":"/cli/sdk-typescript"},{"text":"Hook 系统","link":"/cli/sdk-hooks"},{"text":"权限控制","link":"/cli/sdk-permissions"},{"text":"会话管理","link":"/cli/sdk-sessions"},{"text":"SDK 自定义工具","link":"/cli/sdk-custom-tools"},{"text":"SDK MCP 集成","link":"/cli/sdk-mcp"},{"text":"SDK 示例项目","link":"/cli/sdk-demos"}]},{"text":"版本发布","collapsed":true,"items":[{"text":"概览","link":"/cli/release-notes/README"},{"text":"v2.97.5","link":"/cli/release-notes/v2.97.5"},{"text":"v2.97.4","link":"/cli/release-notes/v2.97.4"},{"text":"v2.97.3","link":"/cli/release-notes/v2.97.3"},{"text":"v2.97.2","link":"/cli/release-notes/v2.97.2"},{"text":"v2.97.1","link":"/cli/release-notes/v2.97.1"},{"text":"v2.97.0","link":"/cli/release-notes/v2.97.0"},{"text":"v2.96.1","link":"/cli/release-notes/v2.96.1"},{"text":"v2.96.0","link":"/cli/release-notes/v2.96.0"},{"text":"v2.95.1","link":"/cli/release-notes/v2.95.1"},{"text":"v2.95.0","link":"/cli/release-notes/v2.95.0"},{"text":"v2.94.4","link":"/cli/release-notes/v2.94.4"},{"text":"v2.94.3","link":"/cli/release-notes/v2.94.3"},{"text":"v2.94.2","link":"/cli/release-notes/v2.94.2"},{"text":"v2.94.1","link":"/cli/release-notes/v2.94.1"},{"text":"v2.94.0","link":"/cli/release-notes/v2.94.0"},{"text":"v2.93.7","link":"/cli/release-notes/v2.93.7"},{"text":"v2.93.6","link":"/cli/release-notes/v2.93.6"},{"text":"v2.93.5","link":"/cli/release-notes/v2.93.5"},{"text":"v2.93.4","link":"/cli/release-notes/v2.93.4"},{"text":"v2.93.3","link":"/cli/release-notes/v2.93.3"},{"text":"v2.93.2","link":"/cli/release-notes/v2.93.2"},{"text":"v2.93.1","link":"/cli/release-notes/v2.93.1"},{"text":"v2.93.0","link":"/cli/release-notes/v2.93.0"},{"text":"v2.92.0","link":"/cli/release-notes/v2.92.0"},{"text":"v2.91.0","link":"/cli/release-notes/v2.91.0"},{"text":"v2.90.0","link":"/cli/release-notes/v2.90.0"},{"text":"v2.89.0","link":"/cli/release-notes/v2.89.0"},{"text":"v2.88.0","link":"/cli/release-notes/v2.88.0"},{"text":"v2.87.0","link":"/cli/release-notes/v2.87.0"},{"text":"v2.86.0","link":"/cli/release-notes/v2.86.0"},{"text":"v2.85.0","link":"/cli/release-notes/v2.85.0"},{"text":"v2.84.0","link":"/cli/release-notes/v2.84.0"},{"text":"v2.83.1","link":"/cli/release-notes/v2.83.1"},{"text":"v2.83.0","link":"/cli/release-notes/v2.83.0"},{"text":"v2.82.0","link":"/cli/release-notes/v2.82.0"},{"text":"v2.81.2","link":"/cli/release-notes/v2.81.2"},{"text":"v2.81.1","link":"/cli/release-notes/v2.81.1"},{"text":"v2.81.0","link":"/cli/release-notes/v2.81.0"},{"text":"v2.80.0","link":"/cli/release-notes/v2.80.0"},{"text":"v2.79.1","link":"/cli/release-notes/v2.79.1"},{"text":"v2.79.0","link":"/cli/release-notes/v2.79.0"},{"text":"v2.78.1","link":"/cli/release-notes/v2.78.1"},{"text":"v2.78.0","link":"/cli/release-notes/v2.78.0"},{"text":"v2.77.1","link":"/cli/release-notes/v2.77.1"},{"text":"v2.77.0","link":"/cli/release-notes/v2.77.0"},{"text":"v2.76.0","link":"/cli/release-notes/v2.76.0"},{"text":"v2.75.0","link":"/cli/release-notes/v2.75.0"},{"text":"v2.74.0","link":"/cli/release-notes/v2.74.0"},{"text":"v2.73.0","link":"/cli/release-notes/v2.73.0"},{"text":"v2.72.0","link":"/cli/release-notes/v2.72.0"},{"text":"v2.71.1","link":"/cli/release-notes/v2.71.1"},{"text":"v2.71.0","link":"/cli/release-notes/v2.71.0"},{"text":"v2.70.1","link":"/cli/release-notes/v2.70.1"},{"text":"v2.70.0","link":"/cli/release-notes/v2.70.0"},{"text":"v2.69.0","link":"/cli/release-notes/v2.69.0"},{"text":"v2.68.0","link":"/cli/release-notes/v2.68.0"},{"text":"v2.67.0","link":"/cli/release-notes/v2.67.0"},{"text":"v2.66.2","link":"/cli/release-notes/v2.66.2"},{"text":"v2.66.1","link":"/cli/release-notes/v2.66.1"},{"text":"v2.66.0","link":"/cli/release-notes/v2.66.0"},{"text":"v2.65.1","link":"/cli/release-notes/v2.65.1"},{"text":"v2.65.0","link":"/cli/release-notes/v2.65.0"},{"text":"v2.64.2","link":"/cli/release-notes/v2.64.2"},{"text":"v2.64.1","link":"/cli/release-notes/v2.64.1"},{"text":"v2.64.0","link":"/cli/release-notes/v2.64.0"},{"text":"v2.63.5","link":"/cli/release-notes/v2.63.5"},{"text":"v2.63.4","link":"/cli/release-notes/v2.63.4"},{"text":"v2.63.3","link":"/cli/release-notes/v2.63.3"},{"text":"v2.63.2","link":"/cli/release-notes/v2.63.2"},{"text":"v2.63.1","link":"/cli/release-notes/v2.63.1"},{"text":"v2.63.0","link":"/cli/release-notes/v2.63.0"},{"text":"v2.62.1","link":"/cli/release-notes/v2.62.1"},{"text":"v2.62.0","link":"/cli/release-notes/v2.62.0"},{"text":"v2.61.3","link":"/cli/release-notes/v2.61.3"},{"text":"v2.61.2","link":"/cli/release-notes/v2.61.2"},{"text":"v2.61.1","link":"/cli/release-notes/v2.61.1"},{"text":"v2.61.0","link":"/cli/release-notes/v2.61.0"},{"text":"v2.60.0","link":"/cli/release-notes/v2.60.0"},{"text":"v2.59.0","link":"/cli/release-notes/v2.59.0"},{"text":"v2.58.0","link":"/cli/release-notes/v2.58.0"},{"text":"v2.57.1","link":"/cli/release-notes/v2.57.1"},{"text":"v2.57.0","link":"/cli/release-notes/v2.57.0"},{"text":"v2.56.1","link":"/cli/release-notes/v2.56.1"},{"text":"v2.56.0","link":"/cli/release-notes/v2.56.0"},{"text":"v2.55.1","link":"/cli/release-notes/v2.55.1"},{"text":"v2.55.0","link":"/cli/release-notes/v2.55.0"},{"text":"v2.54.0","link":"/cli/release-notes/v2.54.0"},{"text":"v2.53.0","link":"/cli/release-notes/v2.53.0"},{"text":"v2.52.6","link":"/cli/release-notes/v2.52.6"},{"text":"v2.52.5","link":"/cli/release-notes/v2.52.5"},{"text":"v2.52.4","link":"/cli/release-notes/v2.52.4"},{"text":"v2.52.3","link":"/cli/release-notes/v2.52.3"},{"text":"v2.52.2","link":"/cli/release-notes/v2.52.2"},{"text":"v2.52.1","link":"/cli/release-notes/v2.52.1"},{"text":"v2.52.0","link":"/cli/release-notes/v2.52.0"},{"text":"v2.51.2","link":"/cli/release-notes/v2.51.2"},{"text":"v2.51.1","link":"/cli/release-notes/v2.51.1"},{"text":"v2.51.0","link":"/cli/release-notes/v2.51.0"},{"text":"v2.50.7","link":"/cli/release-notes/v2.50.7"},{"text":"v2.50.6","link":"/cli/release-notes/v2.50.6"},{"text":"v2.50.5","link":"/cli/release-notes/v2.50.5"},{"text":"v2.50.4","link":"/cli/release-notes/v2.50.4"},{"text":"v2.50.3","link":"/cli/release-notes/v2.50.3"},{"text":"v2.50.2","link":"/cli/release-notes/v2.50.2"},{"text":"v2.50.1","link":"/cli/release-notes/v2.50.1"},{"text":"v2.50.0","link":"/cli/release-notes/v2.50.0"},{"text":"v2.49.7","link":"/cli/release-notes/v2.49.7"},{"text":"v2.49.6","link":"/cli/release-notes/v2.49.6"},{"text":"v2.49.5","link":"/cli/release-notes/v2.49.5"},{"text":"v2.49.3","link":"/cli/release-notes/v2.49.3"},{"text":"v2.49.2","link":"/cli/release-notes/v2.49.2"},{"text":"v2.49.1","link":"/cli/release-notes/v2.49.1"},{"text":"v2.49.0","link":"/cli/release-notes/v2.49.0"},{"text":"v2.48.1","link":"/cli/release-notes/v2.48.1"},{"text":"v2.48.0","link":"/cli/release-notes/v2.48.0"},{"text":"v2.47.0","link":"/cli/release-notes/v2.47.0"},{"text":"v2.46.0","link":"/cli/release-notes/v2.46.0"},{"text":"v2.45.1","link":"/cli/release-notes/v2.45.1"},{"text":"v2.45.0","link":"/cli/release-notes/v2.45.0"},{"text":"v2.44.1","link":"/cli/release-notes/v2.44.1"},{"text":"v2.44.0","link":"/cli/release-notes/v2.44.0"},{"text":"v2.43.1","link":"/cli/release-notes/v2.43.1"},{"text":"v2.43.0","link":"/cli/release-notes/v2.43.0"},{"text":"v2.42.3","link":"/cli/release-notes/v2.42.3"},{"text":"v2.42.1","link":"/cli/release-notes/v2.42.1"},{"text":"v2.42.0","link":"/cli/release-notes/v2.42.0"},{"text":"v2.41.8","link":"/cli/release-notes/v2.41.8"},{"text":"v2.41.7","link":"/cli/release-notes/v2.41.7"},{"text":"v2.41.6","link":"/cli/release-notes/v2.41.6"},{"text":"v2.41.5","link":"/cli/release-notes/v2.41.5"},{"text":"v2.41.4","link":"/cli/release-notes/v2.41.4"},{"text":"v2.41.3","link":"/cli/release-notes/v2.41.3"},{"text":"v2.41.2","link":"/cli/release-notes/v2.41.2"},{"text":"v2.41.1","link":"/cli/release-notes/v2.41.1"},{"text":"v2.41.0","link":"/cli/release-notes/v2.41.0"},{"text":"v2.40.1","link":"/cli/release-notes/v2.40.1"},{"text":"v2.40.0","link":"/cli/release-notes/v2.40.0"},{"text":"v2.39.0","link":"/cli/release-notes/v2.39.0"},{"text":"v2.38.2","link":"/cli/release-notes/v2.38.2"},{"text":"v2.38.1","link":"/cli/release-notes/v2.38.1"},{"text":"v2.38.0","link":"/cli/release-notes/v2.38.0"},{"text":"🚀 CodeBuddy Code v2.37.20 发布","link":"/cli/release-notes/v2.37.20"},{"text":"v2.37.19","link":"/cli/release-notes/v2.37.19"},{"text":"v2.37.18","link":"/cli/release-notes/v2.37.18"},{"text":"v2.37.17","link":"/cli/release-notes/v2.37.17"},{"text":"v2.37.16","link":"/cli/release-notes/v2.37.16"},{"text":"v2.37.15","link":"/cli/release-notes/v2.37.15"},{"text":"v2.37.14","link":"/cli/release-notes/v2.37.14"},{"text":"v2.37.13","link":"/cli/release-notes/v2.37.13"},{"text":"v2.37.12","link":"/cli/release-notes/v2.37.12"},{"text":"v2.37.11","link":"/cli/release-notes/v2.37.11"},{"text":"v2.37.10","link":"/cli/release-notes/v2.37.10"},{"text":"v2.37.9","link":"/cli/release-notes/v2.37.9"},{"text":"v2.37.8","link":"/cli/release-notes/v2.37.8"},{"text":"v2.37.7","link":"/cli/release-notes/v2.37.7"},{"text":"v2.37.6","link":"/cli/release-notes/v2.37.6"},{"text":"v2.37.5","link":"/cli/release-notes/v2.37.5"},{"text":"v2.37.4","link":"/cli/release-notes/v2.37.4"},{"text":"v2.37.3","link":"/cli/release-notes/v2.37.3"},{"text":"v2.37.2","link":"/cli/release-notes/v2.37.2"},{"text":"v2.37.1","link":"/cli/release-notes/v2.37.1"},{"text":"v2.37.0","link":"/cli/release-notes/v2.37.0"},{"text":"v2.36.3","link":"/cli/release-notes/v2.36.3"},{"text":"v2.33.1","link":"/cli/release-notes/v2.33.1"},{"text":"v2.33.0","link":"/cli/release-notes/v2.33.0"},{"text":"v2.32.0","link":"/cli/release-notes/v2.32.0"},{"text":"v2.31.2","link":"/cli/release-notes/v2.31.2"},{"text":"v2.31.1","link":"/cli/release-notes/v2.31.1"},{"text":"v2.31.0","link":"/cli/release-notes/v2.31.0"},{"text":"v2.30.1","link":"/cli/release-notes/v2.30.1"},{"text":"v2.30.0","link":"/cli/release-notes/v2.30.0"},{"text":"v2.29.0","link":"/cli/release-notes/v2.29.0"},{"text":"v2.28.1","link":"/cli/release-notes/v2.28.1"},{"text":"v2.28.0","link":"/cli/release-notes/v2.28.0"},{"text":"v2.27.3","link":"/cli/release-notes/v2.27.3"},{"text":"v2.27.2","link":"/cli/release-notes/v2.27.2"},{"text":"v2.27.1","link":"/cli/release-notes/v2.27.1"},{"text":"v2.27.0","link":"/cli/release-notes/v2.27.0"},{"text":"v2.26.0","link":"/cli/release-notes/v2.26.0"},{"text":"v2.25.1","link":"/cli/release-notes/v2.25.1"},{"text":"v2.25.0","link":"/cli/release-notes/v2.25.0"},{"text":"v2.24.0","link":"/cli/release-notes/v2.24.0"},{"text":"v2.23.5","link":"/cli/release-notes/v2.23.5"},{"text":"v2.23.0","link":"/cli/release-notes/v2.23.0"},{"text":"v2.23.4","link":"/cli/release-notes/v2.23.4"},{"text":"v2.23.3","link":"/cli/release-notes/v2.23.3"},{"text":"v2.23.2","link":"/cli/release-notes/v2.23.2"},{"text":"v2.22.0","link":"/cli/release-notes/v2.22.0"},{"text":"v2.21.0","link":"/cli/release-notes/v2.21.0"},{"text":"v2.20.1","link":"/cli/release-notes/v2.20.1"},{"text":"v2.20.0","link":"/cli/release-notes/v2.20.0"},{"text":"v2.19.2","link":"/cli/release-notes/v2.19.2"},{"text":"v2.19.1","link":"/cli/release-notes/v2.19.1"},{"text":"v2.19.0","link":"/cli/release-notes/v2.19.0"},{"text":"v2.18.0","link":"/cli/release-notes/v2.18.0"},{"text":"v2.17.0","link":"/cli/release-notes/v2.17.0"},{"text":"v2.16.0","link":"/cli/release-notes/v2.16.0"},{"text":"v2.15.1","link":"/cli/release-notes/v2.15.1"},{"text":"v2.15.0","link":"/cli/release-notes/v2.15.0"},{"text":"v2.14.1","link":"/cli/release-notes/v2.14.1"},{"text":"v2.14.0","link":"/cli/release-notes/v2.14.0"},{"text":"v2.13.0","link":"/cli/release-notes/v2.13.0"},{"text":"v2.12.0","link":"/cli/release-notes/v2.12.0"},{"text":"v2.11.0","link":"/cli/release-notes/v2.11.0"},{"text":"v2.10.1","link":"/cli/release-notes/v2.10.1"},{"text":"v2.10.0","link":"/cli/release-notes/v2.10.0"},{"text":"v2.9.0","link":"/cli/release-notes/v2.9.0"},{"text":"v2.8.6","link":"/cli/release-notes/v2.8.6"},{"text":"v2.8.5","link":"/cli/release-notes/v2.8.5"},{"text":"v2.8.4","link":"/cli/release-notes/v2.8.4"},{"text":"v2.8.3","link":"/cli/release-notes/v2.8.3"},{"text":"v2.8.2","link":"/cli/release-notes/v2.8.2"},{"text":"v2.8.1","link":"/cli/release-notes/v2.8.1"},{"text":"v2.8.0","link":"/cli/release-notes/v2.8.0"},{"text":"v2.7.0","link":"/cli/release-notes/v2.7.0"},{"text":"v2.6.1","link":"/cli/release-notes/v2.6.1"},{"text":"v2.6.0","link":"/cli/release-notes/v2.6.0"},{"text":"v2.5.0","link":"/cli/release-notes/v2.5.0"},{"text":"v2.4.0","link":"/cli/release-notes/v2.4.0"},{"text":"v2.3.1","link":"/cli/release-notes/v2.3.1"}]}]
1
+ [{"text":"入门指南","collapsed":false,"items":[{"text":"概述","link":"/cli/overview"},{"text":"快速开始","link":"/cli/quickstart"},{"text":"安装指南","link":"/cli/installation"},{"text":"常见工作流","link":"/cli/common-workflows"},{"text":"交互模式","link":"/cli/interactive-mode"},{"text":"无头模式","link":"/cli/headless"},{"text":"故障排除","link":"/cli/troubleshooting"},{"text":"最佳实践","link":"/cli/best-practices"}]},{"text":"配置","collapsed":false,"items":[{"text":"设置","link":"/cli/settings"},{"text":"模型配置","link":"/cli/models"},{"text":"记忆","link":"/cli/memory"},{"text":"状态行配置","link":"/cli/statusline"},{"text":"终端配置","link":"/cli/terminal-config"},{"text":"环境变量","link":"/cli/env-vars"},{"text":"目录结构说明","link":"/cli/codebuddy-dir"},{"text":"监控","link":"/cli/monitoring"},{"text":"IDE 集成","link":"/cli/ide-integrations"},{"text":"ACP 协议集成","link":"/cli/acp"},{"text":"GitLab CI/CD 集成","link":"/cli/gitlab-ci-cd"},{"text":"开发容器","link":"/cli/devcontainer"},{"text":"MCP 使用文档","link":"/cli/mcp"},{"text":"斜杠命令","link":"/cli/slash-commands"},{"text":"自定义快捷键","link":"/cli/keybindings"}]},{"text":"高级功能","collapsed":false,"items":[{"text":"子代理","link":"/cli/sub-agents"},{"text":"Agent Teams","link":"/cli/agent-teams"},{"text":"Skills 功能","link":"/cli/skills"},{"text":"Hooks 使用指南","link":"/cli/hooks-guide"},{"text":"插件系统","link":"/cli/plugins"},{"text":"插件市场","link":"/cli/plugin-marketplaces"},{"text":"检查点","link":"/cli/checkpointing"},{"text":"Git Worktree 支持","link":"/cli/worktree"},{"text":"远程控制","link":"/cli/remote-control"},{"text":"Web UI","link":"/cli/web-ui"},{"text":"企业微信智能机器人接入","link":"/cli/wecom-bot-setup"},{"text":"Daemon 模式","link":"/cli/daemon"}]},{"text":"自动化","collapsed":false,"items":[{"text":"Goal","link":"/cli/goal"},{"text":"定时任务","link":"/cli/scheduled-tasks"},{"text":"Channels [Beta]","link":"/cli/channels"}]},{"text":"安全","collapsed":false,"items":[{"text":"安全概述","link":"/cli/security"},{"text":"身份和访问管理","link":"/cli/iam"},{"text":"Bash 沙箱","link":"/cli/bash-sandboxing"}]},{"text":"参考文档","collapsed":false,"items":[{"text":"CLI 命令参考","link":"/cli/cli-reference"},{"text":"Hooks 配置参考","link":"/cli/hooks"},{"text":"插件 API 参考","link":"/cli/plugins-reference"},{"text":"成本管理","link":"/cli/costs"},{"text":"工具参考","link":"/cli/tools-reference"},{"text":"Channels 参考 [Beta]","link":"/cli/channels-reference"},{"text":"HTTP API (Beta)","link":"/cli/http-api"}]},{"text":"SDK","collapsed":false,"items":[{"text":"快速开始","link":"/cli/sdk"},{"text":"Python SDK 参考","link":"/cli/sdk-python"},{"text":"TypeScript SDK 参考","link":"/cli/sdk-typescript"},{"text":"Hook 系统","link":"/cli/sdk-hooks"},{"text":"权限控制","link":"/cli/sdk-permissions"},{"text":"会话管理","link":"/cli/sdk-sessions"},{"text":"SDK 自定义工具","link":"/cli/sdk-custom-tools"},{"text":"SDK MCP 集成","link":"/cli/sdk-mcp"},{"text":"SDK 示例项目","link":"/cli/sdk-demos"}]},{"text":"版本发布","collapsed":true,"items":[{"text":"概览","link":"/cli/release-notes/README"},{"text":"v2.98.1","link":"/cli/release-notes/v2.98.1"},{"text":"v2.98.0","link":"/cli/release-notes/v2.98.0"},{"text":"v2.97.5","link":"/cli/release-notes/v2.97.5"},{"text":"v2.97.4","link":"/cli/release-notes/v2.97.4"},{"text":"v2.97.3","link":"/cli/release-notes/v2.97.3"},{"text":"v2.97.2","link":"/cli/release-notes/v2.97.2"},{"text":"v2.97.1","link":"/cli/release-notes/v2.97.1"},{"text":"v2.97.0","link":"/cli/release-notes/v2.97.0"},{"text":"v2.96.1","link":"/cli/release-notes/v2.96.1"},{"text":"v2.96.0","link":"/cli/release-notes/v2.96.0"},{"text":"v2.95.1","link":"/cli/release-notes/v2.95.1"},{"text":"v2.95.0","link":"/cli/release-notes/v2.95.0"},{"text":"v2.94.4","link":"/cli/release-notes/v2.94.4"},{"text":"v2.94.3","link":"/cli/release-notes/v2.94.3"},{"text":"v2.94.2","link":"/cli/release-notes/v2.94.2"},{"text":"v2.94.1","link":"/cli/release-notes/v2.94.1"},{"text":"v2.94.0","link":"/cli/release-notes/v2.94.0"},{"text":"v2.93.7","link":"/cli/release-notes/v2.93.7"},{"text":"v2.93.6","link":"/cli/release-notes/v2.93.6"},{"text":"v2.93.5","link":"/cli/release-notes/v2.93.5"},{"text":"v2.93.4","link":"/cli/release-notes/v2.93.4"},{"text":"v2.93.3","link":"/cli/release-notes/v2.93.3"},{"text":"v2.93.2","link":"/cli/release-notes/v2.93.2"},{"text":"v2.93.1","link":"/cli/release-notes/v2.93.1"},{"text":"v2.93.0","link":"/cli/release-notes/v2.93.0"},{"text":"v2.92.0","link":"/cli/release-notes/v2.92.0"},{"text":"v2.91.0","link":"/cli/release-notes/v2.91.0"},{"text":"v2.90.0","link":"/cli/release-notes/v2.90.0"},{"text":"v2.89.0","link":"/cli/release-notes/v2.89.0"},{"text":"v2.88.0","link":"/cli/release-notes/v2.88.0"},{"text":"v2.87.0","link":"/cli/release-notes/v2.87.0"},{"text":"v2.86.0","link":"/cli/release-notes/v2.86.0"},{"text":"v2.85.0","link":"/cli/release-notes/v2.85.0"},{"text":"v2.84.0","link":"/cli/release-notes/v2.84.0"},{"text":"v2.83.1","link":"/cli/release-notes/v2.83.1"},{"text":"v2.83.0","link":"/cli/release-notes/v2.83.0"},{"text":"v2.82.0","link":"/cli/release-notes/v2.82.0"},{"text":"v2.81.2","link":"/cli/release-notes/v2.81.2"},{"text":"v2.81.1","link":"/cli/release-notes/v2.81.1"},{"text":"v2.81.0","link":"/cli/release-notes/v2.81.0"},{"text":"v2.80.0","link":"/cli/release-notes/v2.80.0"},{"text":"v2.79.1","link":"/cli/release-notes/v2.79.1"},{"text":"v2.79.0","link":"/cli/release-notes/v2.79.0"},{"text":"v2.78.1","link":"/cli/release-notes/v2.78.1"},{"text":"v2.78.0","link":"/cli/release-notes/v2.78.0"},{"text":"v2.77.1","link":"/cli/release-notes/v2.77.1"},{"text":"v2.77.0","link":"/cli/release-notes/v2.77.0"},{"text":"v2.76.0","link":"/cli/release-notes/v2.76.0"},{"text":"v2.75.0","link":"/cli/release-notes/v2.75.0"},{"text":"v2.74.0","link":"/cli/release-notes/v2.74.0"},{"text":"v2.73.0","link":"/cli/release-notes/v2.73.0"},{"text":"v2.72.0","link":"/cli/release-notes/v2.72.0"},{"text":"v2.71.1","link":"/cli/release-notes/v2.71.1"},{"text":"v2.71.0","link":"/cli/release-notes/v2.71.0"},{"text":"v2.70.1","link":"/cli/release-notes/v2.70.1"},{"text":"v2.70.0","link":"/cli/release-notes/v2.70.0"},{"text":"v2.69.0","link":"/cli/release-notes/v2.69.0"},{"text":"v2.68.0","link":"/cli/release-notes/v2.68.0"},{"text":"v2.67.0","link":"/cli/release-notes/v2.67.0"},{"text":"v2.66.2","link":"/cli/release-notes/v2.66.2"},{"text":"v2.66.1","link":"/cli/release-notes/v2.66.1"},{"text":"v2.66.0","link":"/cli/release-notes/v2.66.0"},{"text":"v2.65.1","link":"/cli/release-notes/v2.65.1"},{"text":"v2.65.0","link":"/cli/release-notes/v2.65.0"},{"text":"v2.64.2","link":"/cli/release-notes/v2.64.2"},{"text":"v2.64.1","link":"/cli/release-notes/v2.64.1"},{"text":"v2.64.0","link":"/cli/release-notes/v2.64.0"},{"text":"v2.63.5","link":"/cli/release-notes/v2.63.5"},{"text":"v2.63.4","link":"/cli/release-notes/v2.63.4"},{"text":"v2.63.3","link":"/cli/release-notes/v2.63.3"},{"text":"v2.63.2","link":"/cli/release-notes/v2.63.2"},{"text":"v2.63.1","link":"/cli/release-notes/v2.63.1"},{"text":"v2.63.0","link":"/cli/release-notes/v2.63.0"},{"text":"v2.62.1","link":"/cli/release-notes/v2.62.1"},{"text":"v2.62.0","link":"/cli/release-notes/v2.62.0"},{"text":"v2.61.3","link":"/cli/release-notes/v2.61.3"},{"text":"v2.61.2","link":"/cli/release-notes/v2.61.2"},{"text":"v2.61.1","link":"/cli/release-notes/v2.61.1"},{"text":"v2.61.0","link":"/cli/release-notes/v2.61.0"},{"text":"v2.60.0","link":"/cli/release-notes/v2.60.0"},{"text":"v2.59.0","link":"/cli/release-notes/v2.59.0"},{"text":"v2.58.0","link":"/cli/release-notes/v2.58.0"},{"text":"v2.57.1","link":"/cli/release-notes/v2.57.1"},{"text":"v2.57.0","link":"/cli/release-notes/v2.57.0"},{"text":"v2.56.1","link":"/cli/release-notes/v2.56.1"},{"text":"v2.56.0","link":"/cli/release-notes/v2.56.0"},{"text":"v2.55.1","link":"/cli/release-notes/v2.55.1"},{"text":"v2.55.0","link":"/cli/release-notes/v2.55.0"},{"text":"v2.54.0","link":"/cli/release-notes/v2.54.0"},{"text":"v2.53.0","link":"/cli/release-notes/v2.53.0"},{"text":"v2.52.6","link":"/cli/release-notes/v2.52.6"},{"text":"v2.52.5","link":"/cli/release-notes/v2.52.5"},{"text":"v2.52.4","link":"/cli/release-notes/v2.52.4"},{"text":"v2.52.3","link":"/cli/release-notes/v2.52.3"},{"text":"v2.52.2","link":"/cli/release-notes/v2.52.2"},{"text":"v2.52.1","link":"/cli/release-notes/v2.52.1"},{"text":"v2.52.0","link":"/cli/release-notes/v2.52.0"},{"text":"v2.51.2","link":"/cli/release-notes/v2.51.2"},{"text":"v2.51.1","link":"/cli/release-notes/v2.51.1"},{"text":"v2.51.0","link":"/cli/release-notes/v2.51.0"},{"text":"v2.50.7","link":"/cli/release-notes/v2.50.7"},{"text":"v2.50.6","link":"/cli/release-notes/v2.50.6"},{"text":"v2.50.5","link":"/cli/release-notes/v2.50.5"},{"text":"v2.50.4","link":"/cli/release-notes/v2.50.4"},{"text":"v2.50.3","link":"/cli/release-notes/v2.50.3"},{"text":"v2.50.2","link":"/cli/release-notes/v2.50.2"},{"text":"v2.50.1","link":"/cli/release-notes/v2.50.1"},{"text":"v2.50.0","link":"/cli/release-notes/v2.50.0"},{"text":"v2.49.7","link":"/cli/release-notes/v2.49.7"},{"text":"v2.49.6","link":"/cli/release-notes/v2.49.6"},{"text":"v2.49.5","link":"/cli/release-notes/v2.49.5"},{"text":"v2.49.3","link":"/cli/release-notes/v2.49.3"},{"text":"v2.49.2","link":"/cli/release-notes/v2.49.2"},{"text":"v2.49.1","link":"/cli/release-notes/v2.49.1"},{"text":"v2.49.0","link":"/cli/release-notes/v2.49.0"},{"text":"v2.48.1","link":"/cli/release-notes/v2.48.1"},{"text":"v2.48.0","link":"/cli/release-notes/v2.48.0"},{"text":"v2.47.0","link":"/cli/release-notes/v2.47.0"},{"text":"v2.46.0","link":"/cli/release-notes/v2.46.0"},{"text":"v2.45.1","link":"/cli/release-notes/v2.45.1"},{"text":"v2.45.0","link":"/cli/release-notes/v2.45.0"},{"text":"v2.44.1","link":"/cli/release-notes/v2.44.1"},{"text":"v2.44.0","link":"/cli/release-notes/v2.44.0"},{"text":"v2.43.1","link":"/cli/release-notes/v2.43.1"},{"text":"v2.43.0","link":"/cli/release-notes/v2.43.0"},{"text":"v2.42.3","link":"/cli/release-notes/v2.42.3"},{"text":"v2.42.1","link":"/cli/release-notes/v2.42.1"},{"text":"v2.42.0","link":"/cli/release-notes/v2.42.0"},{"text":"v2.41.8","link":"/cli/release-notes/v2.41.8"},{"text":"v2.41.7","link":"/cli/release-notes/v2.41.7"},{"text":"v2.41.6","link":"/cli/release-notes/v2.41.6"},{"text":"v2.41.5","link":"/cli/release-notes/v2.41.5"},{"text":"v2.41.4","link":"/cli/release-notes/v2.41.4"},{"text":"v2.41.3","link":"/cli/release-notes/v2.41.3"},{"text":"v2.41.2","link":"/cli/release-notes/v2.41.2"},{"text":"v2.41.1","link":"/cli/release-notes/v2.41.1"},{"text":"v2.41.0","link":"/cli/release-notes/v2.41.0"},{"text":"v2.40.1","link":"/cli/release-notes/v2.40.1"},{"text":"v2.40.0","link":"/cli/release-notes/v2.40.0"},{"text":"v2.39.0","link":"/cli/release-notes/v2.39.0"},{"text":"v2.38.2","link":"/cli/release-notes/v2.38.2"},{"text":"v2.38.1","link":"/cli/release-notes/v2.38.1"},{"text":"v2.38.0","link":"/cli/release-notes/v2.38.0"},{"text":"🚀 CodeBuddy Code v2.37.20 发布","link":"/cli/release-notes/v2.37.20"},{"text":"v2.37.19","link":"/cli/release-notes/v2.37.19"},{"text":"v2.37.18","link":"/cli/release-notes/v2.37.18"},{"text":"v2.37.17","link":"/cli/release-notes/v2.37.17"},{"text":"v2.37.16","link":"/cli/release-notes/v2.37.16"},{"text":"v2.37.15","link":"/cli/release-notes/v2.37.15"},{"text":"v2.37.14","link":"/cli/release-notes/v2.37.14"},{"text":"v2.37.13","link":"/cli/release-notes/v2.37.13"},{"text":"v2.37.12","link":"/cli/release-notes/v2.37.12"},{"text":"v2.37.11","link":"/cli/release-notes/v2.37.11"},{"text":"v2.37.10","link":"/cli/release-notes/v2.37.10"},{"text":"v2.37.9","link":"/cli/release-notes/v2.37.9"},{"text":"v2.37.8","link":"/cli/release-notes/v2.37.8"},{"text":"v2.37.7","link":"/cli/release-notes/v2.37.7"},{"text":"v2.37.6","link":"/cli/release-notes/v2.37.6"},{"text":"v2.37.5","link":"/cli/release-notes/v2.37.5"},{"text":"v2.37.4","link":"/cli/release-notes/v2.37.4"},{"text":"v2.37.3","link":"/cli/release-notes/v2.37.3"},{"text":"v2.37.2","link":"/cli/release-notes/v2.37.2"},{"text":"v2.37.1","link":"/cli/release-notes/v2.37.1"},{"text":"v2.37.0","link":"/cli/release-notes/v2.37.0"},{"text":"v2.36.3","link":"/cli/release-notes/v2.36.3"},{"text":"v2.33.1","link":"/cli/release-notes/v2.33.1"},{"text":"v2.33.0","link":"/cli/release-notes/v2.33.0"},{"text":"v2.32.0","link":"/cli/release-notes/v2.32.0"},{"text":"v2.31.2","link":"/cli/release-notes/v2.31.2"},{"text":"v2.31.1","link":"/cli/release-notes/v2.31.1"},{"text":"v2.31.0","link":"/cli/release-notes/v2.31.0"},{"text":"v2.30.1","link":"/cli/release-notes/v2.30.1"},{"text":"v2.30.0","link":"/cli/release-notes/v2.30.0"},{"text":"v2.29.0","link":"/cli/release-notes/v2.29.0"},{"text":"v2.28.1","link":"/cli/release-notes/v2.28.1"},{"text":"v2.28.0","link":"/cli/release-notes/v2.28.0"},{"text":"v2.27.3","link":"/cli/release-notes/v2.27.3"},{"text":"v2.27.2","link":"/cli/release-notes/v2.27.2"},{"text":"v2.27.1","link":"/cli/release-notes/v2.27.1"},{"text":"v2.27.0","link":"/cli/release-notes/v2.27.0"},{"text":"v2.26.0","link":"/cli/release-notes/v2.26.0"},{"text":"v2.25.1","link":"/cli/release-notes/v2.25.1"},{"text":"v2.25.0","link":"/cli/release-notes/v2.25.0"},{"text":"v2.24.0","link":"/cli/release-notes/v2.24.0"},{"text":"v2.23.5","link":"/cli/release-notes/v2.23.5"},{"text":"v2.23.0","link":"/cli/release-notes/v2.23.0"},{"text":"v2.23.4","link":"/cli/release-notes/v2.23.4"},{"text":"v2.23.3","link":"/cli/release-notes/v2.23.3"},{"text":"v2.23.2","link":"/cli/release-notes/v2.23.2"},{"text":"v2.22.0","link":"/cli/release-notes/v2.22.0"},{"text":"v2.21.0","link":"/cli/release-notes/v2.21.0"},{"text":"v2.20.1","link":"/cli/release-notes/v2.20.1"},{"text":"v2.20.0","link":"/cli/release-notes/v2.20.0"},{"text":"v2.19.2","link":"/cli/release-notes/v2.19.2"},{"text":"v2.19.1","link":"/cli/release-notes/v2.19.1"},{"text":"v2.19.0","link":"/cli/release-notes/v2.19.0"},{"text":"v2.18.0","link":"/cli/release-notes/v2.18.0"},{"text":"v2.17.0","link":"/cli/release-notes/v2.17.0"},{"text":"v2.16.0","link":"/cli/release-notes/v2.16.0"},{"text":"v2.15.1","link":"/cli/release-notes/v2.15.1"},{"text":"v2.15.0","link":"/cli/release-notes/v2.15.0"},{"text":"v2.14.1","link":"/cli/release-notes/v2.14.1"},{"text":"v2.14.0","link":"/cli/release-notes/v2.14.0"},{"text":"v2.13.0","link":"/cli/release-notes/v2.13.0"},{"text":"v2.12.0","link":"/cli/release-notes/v2.12.0"},{"text":"v2.11.0","link":"/cli/release-notes/v2.11.0"},{"text":"v2.10.1","link":"/cli/release-notes/v2.10.1"},{"text":"v2.10.0","link":"/cli/release-notes/v2.10.0"},{"text":"v2.9.0","link":"/cli/release-notes/v2.9.0"},{"text":"v2.8.6","link":"/cli/release-notes/v2.8.6"},{"text":"v2.8.5","link":"/cli/release-notes/v2.8.5"},{"text":"v2.8.4","link":"/cli/release-notes/v2.8.4"},{"text":"v2.8.3","link":"/cli/release-notes/v2.8.3"},{"text":"v2.8.2","link":"/cli/release-notes/v2.8.2"},{"text":"v2.8.1","link":"/cli/release-notes/v2.8.1"},{"text":"v2.8.0","link":"/cli/release-notes/v2.8.0"},{"text":"v2.7.0","link":"/cli/release-notes/v2.7.0"},{"text":"v2.6.1","link":"/cli/release-notes/v2.6.1"},{"text":"v2.6.0","link":"/cli/release-notes/v2.6.0"},{"text":"v2.5.0","link":"/cli/release-notes/v2.5.0"},{"text":"v2.4.0","link":"/cli/release-notes/v2.4.0"},{"text":"v2.3.1","link":"/cli/release-notes/v2.3.1"}]}]
@@ -19,10 +19,10 @@
19
19
  <link rel="preconnect" href="https://fonts.googleapis.com">
20
20
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
21
21
  <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap" rel="stylesheet">
22
- <script type="module" crossorigin src="/assets/index-bVNRRvKC.js"></script>
22
+ <script type="module" crossorigin src="/assets/index-CU_ExRgj.js"></script>
23
23
  <link rel="modulepreload" crossorigin href="/assets/markdown-Ce2Umeb2.js">
24
24
  <link rel="modulepreload" crossorigin href="/assets/vendor-DpYitQz5.js">
25
- <link rel="stylesheet" crossorigin href="/assets/index-CY6b2fbj.css">
25
+ <link rel="stylesheet" crossorigin href="/assets/index-C5x-jWxM.css">
26
26
  <link rel="manifest" href="/manifest.webmanifest"></head>
27
27
  <body class="bg-bg-primary text-text-primary min-h-screen overscroll-none">
28
28
  <div id="root"></div>
@@ -1 +1 @@
1
- if(!self.define){let s,e={};const o=(o,n)=>(o=new URL(o+".js",n).href,e[o]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=o,s.onload=e,document.head.appendChild(s)}else s=o,importScripts(o),e()}).then(()=>{let s=e[o];if(!s)throw new Error(`Module ${o} didn’t register its module`);return s}));self.define=(n,i)=>{const l=s||("document"in self?document.currentScript.src:"")||location.href;if(e[l])return;let t={};const r=s=>o(s,l),u={module:{uri:l},exports:t,require:r};e[l]=Promise.all(n.map(s=>u[s]||r(s))).then(s=>(i(...s),t))}}define(["./workbox-e082a648"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"logo.svg",revision:"6165db837a6039880af9705aa09be574"},{url:"index.html",revision:"86d40d225040a50e3f0854e1294e2435"},{url:"assets/workbox-window.prod.es5-BIl4cyR9.js",revision:null},{url:"assets/vendor-DpYitQz5.js",revision:null},{url:"assets/octicons-CaZ_fok2.woff2",revision:null},{url:"assets/mfixx-CpAhKOZz.woff2",revision:null},{url:"assets/markdown-Ce2Umeb2.js",revision:null},{url:"assets/logo-iZVLr450.svg",revision:null},{url:"assets/index-bVNRRvKC.js",revision:null},{url:"assets/index-DixJ0kqk.js",revision:null},{url:"assets/index-CY6b2fbj.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:"6165db837a6039880af9705aa09be574"},{url:"manifest.webmanifest",revision:"ed76a251c8eb35918791b0d0a060a0c2"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api/,/^\/gateway/,/^\/docs\//]})),s.registerRoute(/^https:\/\/fonts\.googleapis\.com/,new s.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[]}),"GET"),s.registerRoute(/^https:\/\/fonts\.gstatic\.com/,new s.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new s.ExpirationPlugin({maxEntries:20,maxAgeSeconds:31536e3})]}),"GET")});
1
+ if(!self.define){let s,e={};const o=(o,n)=>(o=new URL(o+".js",n).href,e[o]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=o,s.onload=e,document.head.appendChild(s)}else s=o,importScripts(o),e()}).then(()=>{let s=e[o];if(!s)throw new Error(`Module ${o} didn’t register its module`);return s}));self.define=(n,i)=>{const l=s||("document"in self?document.currentScript.src:"")||location.href;if(e[l])return;let t={};const r=s=>o(s,l),u={module:{uri:l},exports:t,require:r};e[l]=Promise.all(n.map(s=>u[s]||r(s))).then(s=>(i(...s),t))}}define(["./workbox-fed2bdfe"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"logo.svg",revision:"6165db837a6039880af9705aa09be574"},{url:"index.html",revision:"6fc50b3c148d92f4625858be64a11870"},{url:"assets/workbox-window.prod.es5-BBnX5xw4.js",revision:null},{url:"assets/vendor-DpYitQz5.js",revision:null},{url:"assets/octicons-CaZ_fok2.woff2",revision:null},{url:"assets/mfixx-CpAhKOZz.woff2",revision:null},{url:"assets/markdown-Ce2Umeb2.js",revision:null},{url:"assets/logo-iZVLr450.svg",revision:null},{url:"assets/index-DixJ0kqk.js",revision:null},{url:"assets/index-CU_ExRgj.js",revision:null},{url:"assets/index-C5x-jWxM.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:"6165db837a6039880af9705aa09be574"},{url:"manifest.webmanifest",revision:"ed76a251c8eb35918791b0d0a060a0c2"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api/,/^\/gateway/,/^\/docs\//]})),s.registerRoute(/^https:\/\/fonts\.googleapis\.com/,new s.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[]}),"GET"),s.registerRoute(/^https:\/\/fonts\.gstatic\.com/,new s.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new s.ExpirationPlugin({maxEntries:20,maxAgeSeconds:31536e3})]}),"GET")});
@@ -1 +1 @@
1
- define(["exports"],function(t){"use strict";try{self["workbox:core:7.3.0"]&&_()}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}try{self["workbox:routing:7.3.0"]&&_()}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class r{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s}setCatchHandler(t){this.catchHandler=n(t)}}class i extends r{constructor(t,e,s){super(({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1)},e,s)}}class a{constructor(){this.t=new Map,this.i=new Map}get routes(){return this.t}addFetchListener(){self.addEventListener("fetch",t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s)})}addCacheListener(){self.addEventListener("message",t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map(e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t})}));t.waitUntil(s),t.ports&&t.ports[0]&&s.then(()=>t.ports[0].postMessage(!0))}})}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:r,route:i}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let a=i&&i.handler;const o=t.method;if(!a&&this.i.has(o)&&(a=this.i.get(o)),!a)return;let c;try{c=a.handle({url:s,request:t,event:e,params:r})}catch(t){c=Promise.reject(t)}const h=i&&i.catchHandler;return c instanceof Promise&&(this.o||h)&&(c=c.catch(async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:r})}catch(t){t instanceof Error&&(n=t)}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n})),c}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const r=this.t.get(s.method)||[];for(const i of r){let r;const a=i.match({url:t,sameOrigin:e,request:s,event:n});if(a)return r=a,(Array.isArray(r)&&0===r.length||a.constructor===Object&&0===Object.keys(a).length||"boolean"==typeof a)&&(r=void 0),{route:i,params:r}}return{}}setDefaultHandler(t,e="GET"){this.i.set(e,n(t))}setCatchHandler(t){this.o=n(t)}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t)}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1)}}let o;const c=()=>(o||(o=new a,o.addFetchListener(),o.addCacheListener()),o);function h(t,e,n){let a;if("string"==typeof t){const s=new URL(t,location.href);a=new r(({url:t})=>t.href===s.href,e,n)}else if(t instanceof RegExp)a=new i(t,e,n);else if("function"==typeof t)a=new r(t,e,n);else{if(!(t instanceof r))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});a=t}return c().registerRoute(a),a}try{self["workbox:strategies:7.3.0"]&&_()}catch(t){}const u={cacheWillUpdate:async({response:t})=>200===t.status||0===t.status?t:null},l={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},f=t=>[l.prefix,t,l.suffix].filter(t=>t&&t.length>0).join("-"),w=t=>t||f(l.precache),d=t=>t||f(l.runtime);function p(t,e){const s=new URL(t);for(const t of e)s.searchParams.delete(t);return s.href}class y{constructor(){this.promise=new Promise((t,e)=>{this.resolve=t,this.reject=e})}}const m=new Set;function g(t){return"string"==typeof t?new Request(t):t}class R{constructor(t,e){this.h={},Object.assign(this,e),this.event=e.event,this.u=t,this.l=new y,this.p=[],this.m=[...t.plugins],this.R=new Map;for(const t of this.m)this.R.set(t,{});this.event.waitUntil(this.l.promise)}async fetch(t){const{event:e}=this;let n=g(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const r=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message})}const i=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this.u.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:i,response:t});return t}catch(t){throw r&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:r.clone(),request:i.clone()}),t}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e}async cacheMatch(t){const e=g(t);let s;const{cacheName:n,matchOptions:r}=this.u,i=await this.getCacheKey(e,"read"),a=Object.assign(Object.assign({},r),{cacheName:n});s=await caches.match(i,a);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:r,cachedResponse:s,request:i,event:this.event})||void 0;return s}async cachePut(t,e){const n=g(t);var r;await(r=0,new Promise(t=>setTimeout(t,r)));const i=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(a=i.url,new URL(String(a),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var a;const o=await this.v(e);if(!o)return!1;const{cacheName:c,matchOptions:h}=this.u,u=await self.caches.open(c),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const r=p(e.url,s);if(e.url===r)return t.match(e,n);const i=Object.assign(Object.assign({},n),{ignoreSearch:!0}),a=await t.keys(e,i);for(const e of a)if(r===p(e.url,s))return t.match(e,n)}(u,i.clone(),["__WB_REVISION__"],h):null;try{await u.put(i,l?o.clone():o)}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of m)await t()}(),t}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:c,oldResponse:f,newResponse:o.clone(),request:i,event:this.event});return!0}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.h[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=g(await t({mode:e,request:n,event:this.event,params:this.params}));this.h[s]=n}return this.h[s]}hasCallback(t){for(const e of this.u.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e)}*iterateCallbacks(t){for(const e of this.u.plugins)if("function"==typeof e[t]){const s=this.R.get(e),n=n=>{const r=Object.assign(Object.assign({},n),{state:s});return e[t](r)};yield n}}waitUntil(t){return this.p.push(t),t}async doneWaiting(){for(;this.p.length;){const t=this.p.splice(0),e=(await Promise.allSettled(t)).find(t=>"rejected"===t.status);if(e)throw e.reason}}destroy(){this.l.resolve(null)}async v(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e}}class v{constructor(t={}){this.cacheName=d(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,r=new R(this,{event:e,request:s,params:n}),i=this.q(r,s,e);return[i,this.D(i,r,s,e)]}async q(t,e,n){let r;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(r=await this.U(e,t),!r||"error"===r.type)throw new s("no-response",{url:e.url})}catch(s){if(s instanceof Error)for(const i of t.iterateCallbacks("handlerDidError"))if(r=await i({error:s,event:n,request:e}),r)break;if(!r)throw s}for(const s of t.iterateCallbacks("handlerWillRespond"))r=await s({event:n,request:e,response:r});return r}async D(t,e,s,n){let r,i;try{r=await t}catch(i){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:r}),await e.doneWaiting()}catch(t){t instanceof Error&&(i=t)}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:r,error:i}),e.destroy(),i)throw i}}function b(t){t.then(()=>{})}function q(){return q=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var s=arguments[e];for(var n in s)({}).hasOwnProperty.call(s,n)&&(t[n]=s[n])}return t},q.apply(null,arguments)}let D,U;const x=new WeakMap,L=new WeakMap,E=new WeakMap,I=new WeakMap,C=new WeakMap;let N={get(t,e,s){if(t instanceof IDBTransaction){if("done"===e)return L.get(t);if("objectStoreNames"===e)return t.objectStoreNames||E.get(t);if("store"===e)return s.objectStoreNames[1]?void 0:s.objectStore(s.objectStoreNames[0])}return k(t[e])},set:(t,e,s)=>(t[e]=s,!0),has:(t,e)=>t instanceof IDBTransaction&&("done"===e||"store"===e)||e in t};function O(t){return t!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(U||(U=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(t)?function(...e){return t.apply(M(this),e),k(x.get(this))}:function(...e){return k(t.apply(M(this),e))}:function(e,...s){const n=t.call(M(this),e,...s);return E.set(n,e.sort?e.sort():[e]),k(n)}}function B(t){return"function"==typeof t?O(t):(t instanceof IDBTransaction&&function(t){if(L.has(t))return;const e=new Promise((e,s)=>{const n=()=>{t.removeEventListener("complete",r),t.removeEventListener("error",i),t.removeEventListener("abort",i)},r=()=>{e(),n()},i=()=>{s(t.error||new DOMException("AbortError","AbortError")),n()};t.addEventListener("complete",r),t.addEventListener("error",i),t.addEventListener("abort",i)});L.set(t,e)}(t),e=t,(D||(D=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])).some(t=>e instanceof t)?new Proxy(t,N):t);var e}function k(t){if(t instanceof IDBRequest)return function(t){const e=new Promise((e,s)=>{const n=()=>{t.removeEventListener("success",r),t.removeEventListener("error",i)},r=()=>{e(k(t.result)),n()},i=()=>{s(t.error),n()};t.addEventListener("success",r),t.addEventListener("error",i)});return e.then(e=>{e instanceof IDBCursor&&x.set(e,t)}).catch(()=>{}),C.set(e,t),e}(t);if(I.has(t))return I.get(t);const e=B(t);return e!==t&&(I.set(t,e),C.set(e,t)),e}const M=t=>C.get(t);const T=["get","getKey","getAll","getAllKeys","count"],W=["put","add","delete","clear"],j=new Map;function P(t,e){if(!(t instanceof IDBDatabase)||e in t||"string"!=typeof e)return;if(j.get(e))return j.get(e);const s=e.replace(/FromIndex$/,""),n=e!==s,r=W.includes(s);if(!(s in(n?IDBIndex:IDBObjectStore).prototype)||!r&&!T.includes(s))return;const i=async function(t,...e){const i=this.transaction(t,r?"readwrite":"readonly");let a=i.store;return n&&(a=a.index(e.shift())),(await Promise.all([a[s](...e),r&&i.done]))[0]};return j.set(e,i),i}N=(t=>q({},t,{get:(e,s,n)=>P(e,s)||t.get(e,s,n),has:(e,s)=>!!P(e,s)||t.has(e,s)}))(N);try{self["workbox:expiration:7.3.0"]&&_()}catch(t){}const S="cache-entries",K=t=>{const e=new URL(t,location.href);return e.hash="",e.href};class A{constructor(t){this._=null,this.L=t}I(t){const e=t.createObjectStore(S,{keyPath:"id"});e.createIndex("cacheName","cacheName",{unique:!1}),e.createIndex("timestamp","timestamp",{unique:!1})}C(t){this.I(t),this.L&&function(t,{blocked:e}={}){const s=indexedDB.deleteDatabase(t);e&&s.addEventListener("blocked",t=>e(t.oldVersion,t)),k(s).then(()=>{})}(this.L)}async setTimestamp(t,e){const s={url:t=K(t),timestamp:e,cacheName:this.L,id:this.N(t)},n=(await this.getDb()).transaction(S,"readwrite",{durability:"relaxed"});await n.store.put(s),await n.done}async getTimestamp(t){const e=await this.getDb(),s=await e.get(S,this.N(t));return null==s?void 0:s.timestamp}async expireEntries(t,e){const s=await this.getDb();let n=await s.transaction(S).store.index("timestamp").openCursor(null,"prev");const r=[];let i=0;for(;n;){const s=n.value;s.cacheName===this.L&&(t&&s.timestamp<t||e&&i>=e?r.push(n.value):i++),n=await n.continue()}const a=[];for(const t of r)await s.delete(S,t.id),a.push(t.url);return a}N(t){return this.L+"|"+K(t)}async getDb(){return this._||(this._=await function(t,e,{blocked:s,upgrade:n,blocking:r,terminated:i}={}){const a=indexedDB.open(t,e),o=k(a);return n&&a.addEventListener("upgradeneeded",t=>{n(k(a.result),t.oldVersion,t.newVersion,k(a.transaction),t)}),s&&a.addEventListener("blocked",t=>s(t.oldVersion,t.newVersion,t)),o.then(t=>{i&&t.addEventListener("close",()=>i()),r&&t.addEventListener("versionchange",t=>r(t.oldVersion,t.newVersion,t))}).catch(()=>{}),o}("workbox-expiration",1,{upgrade:this.C.bind(this)})),this._}}class F{constructor(t,e={}){this.O=!1,this.B=!1,this.k=e.maxEntries,this.M=e.maxAgeSeconds,this.T=e.matchOptions,this.L=t,this.W=new A(t)}async expireEntries(){if(this.O)return void(this.B=!0);this.O=!0;const t=this.M?Date.now()-1e3*this.M:0,e=await this.W.expireEntries(t,this.k),s=await self.caches.open(this.L);for(const t of e)await s.delete(t,this.T);this.O=!1,this.B&&(this.B=!1,b(this.expireEntries()))}async updateTimestamp(t){await this.W.setTimestamp(t,Date.now())}async isURLExpired(t){if(this.M){const e=await this.W.getTimestamp(t),s=Date.now()-1e3*this.M;return void 0===e||e<s}return!1}async delete(){this.B=!1,await this.W.expireEntries(1/0)}}function H(t,e){const s=e();return t.waitUntil(s),s}try{self["workbox:precaching:7.3.0"]&&_()}catch(t){}function $(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href}}const r=new URL(n,location.href),i=new URL(n,location.href);return r.searchParams.set("__WB_REVISION__",e),{cacheKey:r.href,url:i.href}}class G{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t)},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t)}return s}}}class V{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.j.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t},this.j=t}}let J,Q;async function z(t,e){let n=null;if(t.url){n=new URL(t.url).origin}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const r=t.clone(),i={headers:new Headers(r.headers),status:r.status,statusText:r.statusText},a=e?e(i):i,o=function(){if(void 0===J){const t=new Response("");if("body"in t)try{new Response(t.body),J=!0}catch(t){J=!1}J=!1}return J}()?r.body:await r.blob();return new Response(o,a)}class X extends v{constructor(t={}){t.cacheName=w(t.cacheName),super(t),this.P=!1!==t.fallbackToNetwork,this.plugins.push(X.copyRedirectedCacheableResponsesPlugin)}async U(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.S(t,e):await this.K(t,e))}async K(t,e){let n;const r=e.params||{};if(!this.P)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=r.integrity,i=t.integrity,a=!i||i===s;n=await e.fetch(new Request(t,{integrity:"no-cors"!==t.mode?i||s:void 0})),s&&a&&"no-cors"!==t.mode&&(this.A(),await e.cachePut(t,n.clone()))}return n}async S(t,e){this.A();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n}A(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==X.copyRedirectedCacheableResponsesPlugin&&(n===X.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(X.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}X.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},X.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await z(t):t};class Y{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.F=new Map,this.H=new Map,this.$=new Map,this.u=new X({cacheName:w(t),plugins:[...e,new V({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this.u}precache(t){this.addToCacheList(t),this.G||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.G=!0)}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:r}=$(n),i="string"!=typeof n&&n.revision?"reload":"default";if(this.F.has(r)&&this.F.get(r)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.F.get(r),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.$.has(t)&&this.$.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:r});this.$.set(t,n.integrity)}if(this.F.set(r,t),this.H.set(r,i),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t)}}}install(t){return H(t,async()=>{const e=new G;this.strategy.plugins.push(e);for(const[e,s]of this.F){const n=this.$.get(s),r=this.H.get(e),i=new Request(e,{integrity:n,cache:r,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:i,event:t}))}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n}})}activate(t){return H(t,async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.F.values()),n=[];for(const r of e)s.has(r.url)||(await t.delete(r),n.push(r.url));return{deletedURLs:n}})}getURLsToCacheKeys(){return this.F}getCachedURLs(){return[...this.F.keys()]}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.F.get(e.href)}getIntegrityForCacheKey(t){return this.$.get(t)}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s))}}const Z=()=>(Q||(Q=new Y),Q);class tt extends r{constructor(t,e){super(({request:s})=>{const n=t.getURLsToCacheKeys();for(const r of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:r}={}){const i=new URL(t,location.href);i.hash="",yield i.href;const a=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some(t=>t.test(s))&&t.searchParams.delete(s);return t}(i,e);if(yield a.href,s&&a.pathname.endsWith("/")){const t=new URL(a.href);t.pathname+=s,yield t.href}if(n){const t=new URL(a.href);t.pathname+=".html",yield t.href}if(r){const t=r({url:i});for(const e of t)yield e.href}}(s.url,e)){const e=n.get(r);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)}}}},t.strategy)}}t.CacheFirst=class extends v{async U(t,e){let n,r=await e.cacheMatch(t);if(!r)try{r=await e.fetchAndCachePut(t)}catch(t){t instanceof Error&&(n=t)}if(!r)throw new s("no-response",{url:t.url,error:n});return r}},t.ExpirationPlugin=class{constructor(t={}){this.cachedResponseWillBeUsed=async({event:t,request:e,cacheName:s,cachedResponse:n})=>{if(!n)return null;const r=this.V(n),i=this.J(s);b(i.expireEntries());const a=i.updateTimestamp(e.url);if(t)try{t.waitUntil(a)}catch(t){}return r?n:null},this.cacheDidUpdate=async({cacheName:t,request:e})=>{const s=this.J(t);await s.updateTimestamp(e.url),await s.expireEntries()},this.X=t,this.M=t.maxAgeSeconds,this.Y=new Map,t.purgeOnQuotaError&&function(t){m.add(t)}(()=>this.deleteCacheAndMetadata())}J(t){if(t===d())throw new s("expire-custom-caches-only");let e=this.Y.get(t);return e||(e=new F(t,this.X),this.Y.set(t,e)),e}V(t){if(!this.M)return!0;const e=this.Z(t);if(null===e)return!0;return e>=Date.now()-1e3*this.M}Z(t){if(!t.headers.has("date"))return null;const e=t.headers.get("date"),s=new Date(e).getTime();return isNaN(s)?null:s}async deleteCacheAndMetadata(){for(const[t,e]of this.Y)await self.caches.delete(t),await e.delete();this.Y=new Map}},t.NavigationRoute=class extends r{constructor(t,{allowlist:e=[/./],denylist:s=[]}={}){super(t=>this.tt(t),t),this.et=e,this.st=s}tt({url:t,request:e}){if(e&&"navigate"!==e.mode)return!1;const s=t.pathname+t.search;for(const t of this.st)if(t.test(s))return!1;return!!this.et.some(t=>t.test(s))}},t.StaleWhileRevalidate=class extends v{constructor(t={}){super(t),this.plugins.some(t=>"cacheWillUpdate"in t)||this.plugins.unshift(u)}async U(t,e){const n=e.fetchAndCachePut(t).catch(()=>{});e.waitUntil(n);let r,i=await e.cacheMatch(t);if(i);else try{i=await n}catch(t){t instanceof Error&&(r=t)}if(!i)throw new s("no-response",{url:t.url,error:r});return i}},t.cleanupOutdatedCaches=function(){self.addEventListener("activate",t=>{const e=w();t.waitUntil((async(t,e="-precache-")=>{const s=(await self.caches.keys()).filter(s=>s.includes(e)&&s.includes(self.registration.scope)&&s!==t);return await Promise.all(s.map(t=>self.caches.delete(t))),s})(e).then(t=>{}))})},t.clientsClaim=function(){self.addEventListener("activate",()=>self.clients.claim())},t.createHandlerBoundToURL=function(t){return Z().createHandlerBoundToURL(t)},t.precacheAndRoute=function(t,e){!function(t){Z().precache(t)}(t),function(t){const e=Z();h(new tt(e,t))}(e)},t.registerRoute=h});
1
+ define(["exports"],function(t){"use strict";try{self["workbox:core:7.4.0"]&&_()}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}try{self["workbox:routing:7.4.0"]&&_()}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class r{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s}setCatchHandler(t){this.catchHandler=n(t)}}class i extends r{constructor(t,e,s){super(({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1)},e,s)}}class a{constructor(){this.t=new Map,this.i=new Map}get routes(){return this.t}addFetchListener(){self.addEventListener("fetch",t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s)})}addCacheListener(){self.addEventListener("message",t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map(e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t})}));t.waitUntil(s),t.ports&&t.ports[0]&&s.then(()=>t.ports[0].postMessage(!0))}})}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:r,route:i}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let a=i&&i.handler;const o=t.method;if(!a&&this.i.has(o)&&(a=this.i.get(o)),!a)return;let c;try{c=a.handle({url:s,request:t,event:e,params:r})}catch(t){c=Promise.reject(t)}const h=i&&i.catchHandler;return c instanceof Promise&&(this.o||h)&&(c=c.catch(async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:r})}catch(t){t instanceof Error&&(n=t)}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n})),c}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const r=this.t.get(s.method)||[];for(const i of r){let r;const a=i.match({url:t,sameOrigin:e,request:s,event:n});if(a)return r=a,(Array.isArray(r)&&0===r.length||a.constructor===Object&&0===Object.keys(a).length||"boolean"==typeof a)&&(r=void 0),{route:i,params:r}}return{}}setDefaultHandler(t,e="GET"){this.i.set(e,n(t))}setCatchHandler(t){this.o=n(t)}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t)}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1)}}let o;const c=()=>(o||(o=new a,o.addFetchListener(),o.addCacheListener()),o);function h(t,e,n){let a;if("string"==typeof t){const s=new URL(t,location.href);a=new r(({url:t})=>t.href===s.href,e,n)}else if(t instanceof RegExp)a=new i(t,e,n);else if("function"==typeof t)a=new r(t,e,n);else{if(!(t instanceof r))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});a=t}return c().registerRoute(a),a}try{self["workbox:strategies:7.4.0"]&&_()}catch(t){}const u={cacheWillUpdate:async({response:t})=>200===t.status||0===t.status?t:null},l={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},f=t=>[l.prefix,t,l.suffix].filter(t=>t&&t.length>0).join("-"),w=t=>t||f(l.precache),d=t=>t||f(l.runtime);function p(t,e){const s=new URL(t);for(const t of e)s.searchParams.delete(t);return s.href}class y{constructor(){this.promise=new Promise((t,e)=>{this.resolve=t,this.reject=e})}}const m=new Set;function g(t){return"string"==typeof t?new Request(t):t}class R{constructor(t,e){this.h={},Object.assign(this,e),this.event=e.event,this.u=t,this.l=new y,this.p=[],this.m=[...t.plugins],this.R=new Map;for(const t of this.m)this.R.set(t,{});this.event.waitUntil(this.l.promise)}async fetch(t){const{event:e}=this;let n=g(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const r=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message})}const i=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this.u.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:i,response:t});return t}catch(t){throw r&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:r.clone(),request:i.clone()}),t}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e}async cacheMatch(t){const e=g(t);let s;const{cacheName:n,matchOptions:r}=this.u,i=await this.getCacheKey(e,"read"),a=Object.assign(Object.assign({},r),{cacheName:n});s=await caches.match(i,a);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:r,cachedResponse:s,request:i,event:this.event})||void 0;return s}async cachePut(t,e){const n=g(t);var r;await(r=0,new Promise(t=>setTimeout(t,r)));const i=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(a=i.url,new URL(String(a),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var a;const o=await this.v(e);if(!o)return!1;const{cacheName:c,matchOptions:h}=this.u,u=await self.caches.open(c),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const r=p(e.url,s);if(e.url===r)return t.match(e,n);const i=Object.assign(Object.assign({},n),{ignoreSearch:!0}),a=await t.keys(e,i);for(const e of a)if(r===p(e.url,s))return t.match(e,n)}(u,i.clone(),["__WB_REVISION__"],h):null;try{await u.put(i,l?o.clone():o)}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of m)await t()}(),t}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:c,oldResponse:f,newResponse:o.clone(),request:i,event:this.event});return!0}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.h[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=g(await t({mode:e,request:n,event:this.event,params:this.params}));this.h[s]=n}return this.h[s]}hasCallback(t){for(const e of this.u.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e)}*iterateCallbacks(t){for(const e of this.u.plugins)if("function"==typeof e[t]){const s=this.R.get(e),n=n=>{const r=Object.assign(Object.assign({},n),{state:s});return e[t](r)};yield n}}waitUntil(t){return this.p.push(t),t}async doneWaiting(){for(;this.p.length;){const t=this.p.splice(0),e=(await Promise.allSettled(t)).find(t=>"rejected"===t.status);if(e)throw e.reason}}destroy(){this.l.resolve(null)}async v(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e}}class v{constructor(t={}){this.cacheName=d(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,r=new R(this,{event:e,request:s,params:n}),i=this.q(r,s,e);return[i,this.D(i,r,s,e)]}async q(t,e,n){let r;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(r=await this.U(e,t),!r||"error"===r.type)throw new s("no-response",{url:e.url})}catch(s){if(s instanceof Error)for(const i of t.iterateCallbacks("handlerDidError"))if(r=await i({error:s,event:n,request:e}),r)break;if(!r)throw s}for(const s of t.iterateCallbacks("handlerWillRespond"))r=await s({event:n,request:e,response:r});return r}async D(t,e,s,n){let r,i;try{r=await t}catch(i){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:r}),await e.doneWaiting()}catch(t){t instanceof Error&&(i=t)}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:r,error:i}),e.destroy(),i)throw i}}function b(t){t.then(()=>{})}function q(){return q=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var s=arguments[e];for(var n in s)({}).hasOwnProperty.call(s,n)&&(t[n]=s[n])}return t},q.apply(null,arguments)}let D,U;const x=new WeakMap,L=new WeakMap,E=new WeakMap,I=new WeakMap,C=new WeakMap;let N={get(t,e,s){if(t instanceof IDBTransaction){if("done"===e)return L.get(t);if("objectStoreNames"===e)return t.objectStoreNames||E.get(t);if("store"===e)return s.objectStoreNames[1]?void 0:s.objectStore(s.objectStoreNames[0])}return k(t[e])},set:(t,e,s)=>(t[e]=s,!0),has:(t,e)=>t instanceof IDBTransaction&&("done"===e||"store"===e)||e in t};function O(t){return t!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(U||(U=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(t)?function(...e){return t.apply(M(this),e),k(x.get(this))}:function(...e){return k(t.apply(M(this),e))}:function(e,...s){const n=t.call(M(this),e,...s);return E.set(n,e.sort?e.sort():[e]),k(n)}}function B(t){return"function"==typeof t?O(t):(t instanceof IDBTransaction&&function(t){if(L.has(t))return;const e=new Promise((e,s)=>{const n=()=>{t.removeEventListener("complete",r),t.removeEventListener("error",i),t.removeEventListener("abort",i)},r=()=>{e(),n()},i=()=>{s(t.error||new DOMException("AbortError","AbortError")),n()};t.addEventListener("complete",r),t.addEventListener("error",i),t.addEventListener("abort",i)});L.set(t,e)}(t),e=t,(D||(D=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])).some(t=>e instanceof t)?new Proxy(t,N):t);var e}function k(t){if(t instanceof IDBRequest)return function(t){const e=new Promise((e,s)=>{const n=()=>{t.removeEventListener("success",r),t.removeEventListener("error",i)},r=()=>{e(k(t.result)),n()},i=()=>{s(t.error),n()};t.addEventListener("success",r),t.addEventListener("error",i)});return e.then(e=>{e instanceof IDBCursor&&x.set(e,t)}).catch(()=>{}),C.set(e,t),e}(t);if(I.has(t))return I.get(t);const e=B(t);return e!==t&&(I.set(t,e),C.set(e,t)),e}const M=t=>C.get(t);const T=["get","getKey","getAll","getAllKeys","count"],W=["put","add","delete","clear"],j=new Map;function P(t,e){if(!(t instanceof IDBDatabase)||e in t||"string"!=typeof e)return;if(j.get(e))return j.get(e);const s=e.replace(/FromIndex$/,""),n=e!==s,r=W.includes(s);if(!(s in(n?IDBIndex:IDBObjectStore).prototype)||!r&&!T.includes(s))return;const i=async function(t,...e){const i=this.transaction(t,r?"readwrite":"readonly");let a=i.store;return n&&(a=a.index(e.shift())),(await Promise.all([a[s](...e),r&&i.done]))[0]};return j.set(e,i),i}N=(t=>q({},t,{get:(e,s,n)=>P(e,s)||t.get(e,s,n),has:(e,s)=>!!P(e,s)||t.has(e,s)}))(N);try{self["workbox:expiration:7.4.0"]&&_()}catch(t){}const S="cache-entries",K=t=>{const e=new URL(t,location.href);return e.hash="",e.href};class A{constructor(t){this._=null,this.L=t}I(t){const e=t.createObjectStore(S,{keyPath:"id"});e.createIndex("cacheName","cacheName",{unique:!1}),e.createIndex("timestamp","timestamp",{unique:!1})}C(t){this.I(t),this.L&&function(t,{blocked:e}={}){const s=indexedDB.deleteDatabase(t);e&&s.addEventListener("blocked",t=>e(t.oldVersion,t)),k(s).then(()=>{})}(this.L)}async setTimestamp(t,e){const s={url:t=K(t),timestamp:e,cacheName:this.L,id:this.N(t)},n=(await this.getDb()).transaction(S,"readwrite",{durability:"relaxed"});await n.store.put(s),await n.done}async getTimestamp(t){const e=await this.getDb(),s=await e.get(S,this.N(t));return null==s?void 0:s.timestamp}async expireEntries(t,e){const s=await this.getDb();let n=await s.transaction(S).store.index("timestamp").openCursor(null,"prev");const r=[];let i=0;for(;n;){const s=n.value;s.cacheName===this.L&&(t&&s.timestamp<t||e&&i>=e?r.push(n.value):i++),n=await n.continue()}const a=[];for(const t of r)await s.delete(S,t.id),a.push(t.url);return a}N(t){return this.L+"|"+K(t)}async getDb(){return this._||(this._=await function(t,e,{blocked:s,upgrade:n,blocking:r,terminated:i}={}){const a=indexedDB.open(t,e),o=k(a);return n&&a.addEventListener("upgradeneeded",t=>{n(k(a.result),t.oldVersion,t.newVersion,k(a.transaction),t)}),s&&a.addEventListener("blocked",t=>s(t.oldVersion,t.newVersion,t)),o.then(t=>{i&&t.addEventListener("close",()=>i()),r&&t.addEventListener("versionchange",t=>r(t.oldVersion,t.newVersion,t))}).catch(()=>{}),o}("workbox-expiration",1,{upgrade:this.C.bind(this)})),this._}}class F{constructor(t,e={}){this.O=!1,this.B=!1,this.k=e.maxEntries,this.M=e.maxAgeSeconds,this.T=e.matchOptions,this.L=t,this.W=new A(t)}async expireEntries(){if(this.O)return void(this.B=!0);this.O=!0;const t=this.M?Date.now()-1e3*this.M:0,e=await this.W.expireEntries(t,this.k),s=await self.caches.open(this.L);for(const t of e)await s.delete(t,this.T);this.O=!1,this.B&&(this.B=!1,b(this.expireEntries()))}async updateTimestamp(t){await this.W.setTimestamp(t,Date.now())}async isURLExpired(t){if(this.M){const e=await this.W.getTimestamp(t),s=Date.now()-1e3*this.M;return void 0===e||e<s}return!1}async delete(){this.B=!1,await this.W.expireEntries(1/0)}}function H(t,e){const s=e();return t.waitUntil(s),s}try{self["workbox:precaching:7.4.0"]&&_()}catch(t){}function $(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href}}const r=new URL(n,location.href),i=new URL(n,location.href);return r.searchParams.set("__WB_REVISION__",e),{cacheKey:r.href,url:i.href}}class G{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t)},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t)}return s}}}class V{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.j.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t},this.j=t}}let J,Q;async function z(t,e){let n=null;if(t.url){n=new URL(t.url).origin}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const r=t.clone(),i={headers:new Headers(r.headers),status:r.status,statusText:r.statusText},a=function(){if(void 0===J){const t=new Response("");if("body"in t)try{new Response(t.body),J=!0}catch(t){J=!1}J=!1}return J}()?r.body:await r.blob();return new Response(a,i)}class X extends v{constructor(t={}){t.cacheName=w(t.cacheName),super(t),this.P=!1!==t.fallbackToNetwork,this.plugins.push(X.copyRedirectedCacheableResponsesPlugin)}async U(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.S(t,e):await this.K(t,e))}async K(t,e){let n;const r=e.params||{};if(!this.P)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=r.integrity,i=t.integrity,a=!i||i===s;n=await e.fetch(new Request(t,{integrity:"no-cors"!==t.mode?i||s:void 0})),s&&a&&"no-cors"!==t.mode&&(this.A(),await e.cachePut(t,n.clone()))}return n}async S(t,e){this.A();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n}A(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==X.copyRedirectedCacheableResponsesPlugin&&(n===X.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(X.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}X.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},X.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await z(t):t};class Y{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.F=new Map,this.H=new Map,this.$=new Map,this.u=new X({cacheName:w(t),plugins:[...e,new V({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this.u}precache(t){this.addToCacheList(t),this.G||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.G=!0)}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:r}=$(n),i="string"!=typeof n&&n.revision?"reload":"default";if(this.F.has(r)&&this.F.get(r)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.F.get(r),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.$.has(t)&&this.$.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:r});this.$.set(t,n.integrity)}if(this.F.set(r,t),this.H.set(r,i),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t)}}}install(t){return H(t,async()=>{const e=new G;this.strategy.plugins.push(e);for(const[e,s]of this.F){const n=this.$.get(s),r=this.H.get(e),i=new Request(e,{integrity:n,cache:r,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:i,event:t}))}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n}})}activate(t){return H(t,async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.F.values()),n=[];for(const r of e)s.has(r.url)||(await t.delete(r),n.push(r.url));return{deletedURLs:n}})}getURLsToCacheKeys(){return this.F}getCachedURLs(){return[...this.F.keys()]}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.F.get(e.href)}getIntegrityForCacheKey(t){return this.$.get(t)}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s))}}const Z=()=>(Q||(Q=new Y),Q);class tt extends r{constructor(t,e){super(({request:s})=>{const n=t.getURLsToCacheKeys();for(const r of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:r}={}){const i=new URL(t,location.href);i.hash="",yield i.href;const a=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some(t=>t.test(s))&&t.searchParams.delete(s);return t}(i,e);if(yield a.href,s&&a.pathname.endsWith("/")){const t=new URL(a.href);t.pathname+=s,yield t.href}if(n){const t=new URL(a.href);t.pathname+=".html",yield t.href}if(r){const t=r({url:i});for(const e of t)yield e.href}}(s.url,e)){const e=n.get(r);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)}}}},t.strategy)}}t.CacheFirst=class extends v{async U(t,e){let n,r=await e.cacheMatch(t);if(!r)try{r=await e.fetchAndCachePut(t)}catch(t){t instanceof Error&&(n=t)}if(!r)throw new s("no-response",{url:t.url,error:n});return r}},t.ExpirationPlugin=class{constructor(t={}){this.cachedResponseWillBeUsed=async({event:t,request:e,cacheName:s,cachedResponse:n})=>{if(!n)return null;const r=this.V(n),i=this.J(s);b(i.expireEntries());const a=i.updateTimestamp(e.url);if(t)try{t.waitUntil(a)}catch(t){}return r?n:null},this.cacheDidUpdate=async({cacheName:t,request:e})=>{const s=this.J(t);await s.updateTimestamp(e.url),await s.expireEntries()},this.X=t,this.M=t.maxAgeSeconds,this.Y=new Map,t.purgeOnQuotaError&&function(t){m.add(t)}(()=>this.deleteCacheAndMetadata())}J(t){if(t===d())throw new s("expire-custom-caches-only");let e=this.Y.get(t);return e||(e=new F(t,this.X),this.Y.set(t,e)),e}V(t){if(!this.M)return!0;const e=this.Z(t);if(null===e)return!0;return e>=Date.now()-1e3*this.M}Z(t){if(!t.headers.has("date"))return null;const e=t.headers.get("date"),s=new Date(e).getTime();return isNaN(s)?null:s}async deleteCacheAndMetadata(){for(const[t,e]of this.Y)await self.caches.delete(t),await e.delete();this.Y=new Map}},t.NavigationRoute=class extends r{constructor(t,{allowlist:e=[/./],denylist:s=[]}={}){super(t=>this.tt(t),t),this.et=e,this.st=s}tt({url:t,request:e}){if(e&&"navigate"!==e.mode)return!1;const s=t.pathname+t.search;for(const t of this.st)if(t.test(s))return!1;return!!this.et.some(t=>t.test(s))}},t.StaleWhileRevalidate=class extends v{constructor(t={}){super(t),this.plugins.some(t=>"cacheWillUpdate"in t)||this.plugins.unshift(u)}async U(t,e){const n=e.fetchAndCachePut(t).catch(()=>{});e.waitUntil(n);let r,i=await e.cacheMatch(t);if(i);else try{i=await n}catch(t){t instanceof Error&&(r=t)}if(!i)throw new s("no-response",{url:t.url,error:r});return i}},t.cleanupOutdatedCaches=function(){self.addEventListener("activate",t=>{const e=w();t.waitUntil((async(t,e="-precache-")=>{const s=(await self.caches.keys()).filter(s=>s.includes(e)&&s.includes(self.registration.scope)&&s!==t);return await Promise.all(s.map(t=>self.caches.delete(t))),s})(e).then(t=>{}))})},t.clientsClaim=function(){self.addEventListener("activate",()=>self.clients.claim())},t.createHandlerBoundToURL=function(t){return Z().createHandlerBoundToURL(t)},t.precacheAndRoute=function(t,e){!function(t){Z().precache(t)}(t),function(t){const e=Z();h(new tt(e,t))}(e)},t.registerRoute=h});
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tencent-ai/codebuddy-code",
3
- "version": "2.98.1",
3
+ "version": "2.99.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",
@@ -692,8 +692,9 @@
692
692
  "ImageGen": true,
693
693
  "ScheduledTasks": true,
694
694
  "SkillManage": false,
695
- "SelectImage": true
695
+ "SelectImage": true,
696
+ "SkipToolCallSupportCheck": true
696
697
  },
697
- "commit": "978634380414a6d62c3f29fbc49a95d27f2672a4",
698
- "date": "2026-05-25T16:07:50.336Z"
698
+ "commit": "3d93a955410d5de3b1b816f3916412b327eb73a7",
699
+ "date": "2026-05-27T13:28:16.139Z"
699
700
  }
@@ -619,7 +619,8 @@
619
619
  "ImageGen": true,
620
620
  "RequestBodyGzip": true,
621
621
  "ScheduledTasks": true,
622
- "SkillManage": false
622
+ "SkillManage": false,
623
+ "SkipToolCallSupportCheck": true
623
624
  },
624
625
  "config": {
625
626
  "creditPurchaseActions": {
@@ -643,6 +644,6 @@
643
644
  }
644
645
  }
645
646
  },
646
- "commit": "978634380414a6d62c3f29fbc49a95d27f2672a4",
647
- "date": "2026-05-25T16:07:50.337Z"
647
+ "commit": "3d93a955410d5de3b1b816f3916412b327eb73a7",
648
+ "date": "2026-05-27T13:28:16.139Z"
648
649
  }
@@ -22,6 +22,7 @@
22
22
  "claude-haiku-4.5",
23
23
  "gemini-3.1-pro",
24
24
  "gemini-3.0-flash",
25
+ "gemini-3.5-flash",
25
26
  "gemini-2.5-pro",
26
27
  "gemini-3.1-flash-lite",
27
28
  "gpt-5.5",
@@ -835,6 +836,26 @@
835
836
  "reasoning": "claude-opus-4.5"
836
837
  }
837
838
  },
839
+ {
840
+ "credits": "x0.99 credits",
841
+ "id": "gemini-3.5-flash",
842
+ "name": "Gemini-3.5-Flash",
843
+ "vendor": "e",
844
+ "maxOutputTokens": 65536,
845
+ "maxInputTokens": 1000000,
846
+ "supportsToolCall": true,
847
+ "supportsImages": true,
848
+ "maxAllowedSize": 1000000,
849
+ "supportsReasoning": true,
850
+ "onlyReasoning": true,
851
+ "temperature": 1,
852
+ "reasoning": {
853
+ "effort": "medium",
854
+ "summary": "auto"
855
+ },
856
+ "descriptionEn": "Well-rounded model for everyday use",
857
+ "descriptionZh": "能力均衡,适合日常使用"
858
+ },
838
859
  {
839
860
  "credits": "x0.90 credits",
840
861
  "id": "gemini-2.5-pro",
@@ -928,7 +949,8 @@
928
949
  "RequestBodyGzip": true,
929
950
  "RemoteControl": true,
930
951
  "ScheduledTasks": true,
931
- "SkillManage": false
952
+ "SkillManage": false,
953
+ "SkipToolCallSupportCheck": true
932
954
  },
933
955
  "config": {
934
956
  "creditPurchaseActions": {
@@ -952,6 +974,6 @@
952
974
  }
953
975
  }
954
976
  },
955
- "commit": "978634380414a6d62c3f29fbc49a95d27f2672a4",
956
- "date": "2026-05-25T16:07:50.337Z"
977
+ "commit": "3d93a955410d5de3b1b816f3916412b327eb73a7",
978
+ "date": "2026-05-27T13:28:16.140Z"
957
979
  }