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,88 @@
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 SUBSCRIBE_PR_TOOL_NAME = 'SubscribePR'
const inputSchema = lazySchema(() =>
z.strictObject({
repo: z
.string()
.describe('Repository in owner/repo format.'),
pr_number: z
.number()
.describe('Pull request number to subscribe to.'),
events: z
.array(z.enum(['comment', 'review', 'ci', 'merge', 'close']))
.optional()
.describe('Event types to subscribe to. Defaults to all events.'),
}),
)
type InputSchema = ReturnType<typeof inputSchema>
type SubscribeInput = z.infer<InputSchema>
type SubscribeOutput = { subscribed: boolean; subscription_id: string }
export const SubscribePRTool = buildTool({
name: SUBSCRIBE_PR_TOOL_NAME,
searchHint: 'subscribe pull request github webhook events watch',
maxResultSizeChars: 5_000,
strict: true,
get inputSchema(): InputSchema {
return inputSchema()
},
async description() {
return 'Subscribe to pull request events via GitHub webhooks'
},
async prompt() {
return `Subscribe to events on a GitHub pull request. You'll receive notifications when selected events occur (comments, reviews, CI status changes, merge, close).
Use this to monitor PRs you've created or are reviewing. Events are delivered as messages you can act on.`
},
isConcurrencySafe() {
return true
},
isReadOnly() {
return true
},
userFacingName() {
return 'SubscribePR'
},
renderToolUseMessage(input: Partial<SubscribeInput>) {
const pr = input.repo && input.pr_number
? `${input.repo}#${input.pr_number}`
: '...'
return `Subscribe PR: ${pr}`
},
mapToolResultToToolResultBlockParam(
content: SubscribeOutput,
toolUseID: string,
): ToolResultBlockParam {
return {
tool_use_id: toolUseID,
type: 'tool_result',
content: content.subscribed
? `Subscribed to PR events (id: ${content.subscription_id})`
: 'Failed to subscribe to PR events.',
}
},
async call(_input: SubscribeInput) {
// Webhook subscription is managed by the KAIROS GitHub webhook subsystem.
// Without the KAIROS runtime, this tool is not available.
return {
data: {
subscribed: false,
subscription_id: '',
error: 'SubscribePR requires the KAIROS GitHub webhook subsystem.',
},
}
},
})