feat: 工具层及 mcp 大重构 (#252)

* feat: 第一版大重构

* fix: 修复类型问题

* chore: 更新版本到 1.3.2

* Add brave as alternative WebSearchTool

* fix: 修正顺序

* fix: 修复对穷鬼模式的 auto dream 和 session memory 越过

* feat: 穷鬼模式去除 session-summary

* feat: 创建 builtin-tools 包,搬运所有工具实现

将 src/tools/ 下的全部 60 个工具目录迁移至 packages/builtin-tools/src/tools/,
内部导入路径已更新为 src/ alias 模式。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: 更新 src/ 中所有工具引用至 builtin-tools 包,删除 src/tools/

- src/tools.ts 及 178 个 src/ 文件的 import 路径从 ./tools/ 改为 builtin-tools/tools/
- 删除 src/tools/ 整个目录(已迁移至 packages/builtin-tools/)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: 添加 builtin-tools 路径别名至 tsconfig,更新 bun.lock

- tsconfig.json 新增 builtin-tools/* 和 builtin-tools 路径映射
- 新增 packages/builtin-tools/src 至 include

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: 为 builtin-tools、mcp-client、agent-tools 添加 @claude-code-best 作用域前缀

所有包名及 import 路径统一添加 @claude-code-best/ 前缀:
- builtin-tools → @claude-code-best/builtin-tools
- mcp-client → @claude-code-best/mcp-client
- agent-tools → @claude-code-best/agent-tools

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: 修复 node 环境没有 bun 的问题

---------

Co-authored-by: Eric-Guo <eric.guocz@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
claude-code-best
2026-04-13 09:52:05 +08:00
committed by GitHub
parent bbb8b613a9
commit 2fb1c9dcd8
559 changed files with 9346 additions and 1837 deletions

View File

@@ -0,0 +1,84 @@
import { z } from 'zod/v4'
import type { ToolResultBlockParam } from 'src/Tool.js'
import { buildTool } from 'src/Tool.js'
import { lazySchema } from 'src/utils/lazySchema.js'
const SUGGEST_BACKGROUND_PR_TOOL_NAME = 'SuggestBackgroundPR'
const inputSchema = lazySchema(() =>
z.strictObject({
title: z
.string()
.describe('Suggested title for the background PR.'),
description: z
.string()
.describe('Description of the changes to make in the background PR.'),
branch: z
.string()
.optional()
.describe('Branch name for the PR. Auto-generated if omitted.'),
}),
)
type InputSchema = ReturnType<typeof inputSchema>
type SuggestInput = z.infer<InputSchema>
type SuggestOutput = { suggested: boolean; suggestion_id: string }
export const SuggestBackgroundPRTool = buildTool({
name: SUGGEST_BACKGROUND_PR_TOOL_NAME,
searchHint: 'suggest background pr pull request create',
maxResultSizeChars: 5_000,
strict: true,
get inputSchema(): InputSchema {
return inputSchema()
},
async description() {
return 'Suggest creating a background PR for follow-up changes'
},
async prompt() {
return `Suggest creating a pull request in the background for follow-up work. Use this when you identify improvements or cleanup that should be done but aren't part of the current task.
The suggestion is presented to the user who can approve or dismiss it. If approved, a background agent creates the PR.`
},
isConcurrencySafe() {
return true
},
isReadOnly() {
return true
},
userFacingName() {
return 'SuggestPR'
},
renderToolUseMessage(input: Partial<SuggestInput>) {
return `Suggest PR: ${input.title ?? '...'}`
},
mapToolResultToToolResultBlockParam(
content: SuggestOutput,
toolUseID: string,
): ToolResultBlockParam {
return {
tool_use_id: toolUseID,
type: 'tool_result',
content: content.suggested
? `PR suggestion recorded (id: ${content.suggestion_id})`
: 'Failed to record PR suggestion.',
}
},
async call(_input: SuggestInput) {
// Background PR suggestion requires the KAIROS runtime.
return {
data: {
suggested: false,
suggestion_id: '',
error: 'SuggestBackgroundPR requires the KAIROS runtime.',
},
}
},
})