refactor(tools): static import → require() 迁移 + 兜底修复
Codex 完成:
- tools.ts: 7 个 static import (指向空壳 stub) → require("@claude-code-best/builtin-tools/...")
涉及: SleepTool, CronTools, RemoteTriggerTool, MonitorTool, SendUserFileTool,
PushNotificationTool, TeamCreateTool, TeamDeleteTool, SendMessageTool, WorkflowTool
- PermissionRequest.tsx: MonitorTool require() 指向 builtin-tools
- TeamCreateTool/DeleteTool/SendMessageTool 用 lazy require() 打破循环依赖
兜底修复:
- defines.ts: 保持 MONITOR_TOOL + WORKFLOW_SCRIPTS 禁用
原因: builtin-tools 里的真工具 import "src/..." 产生跨包循环引用
在 splitting:true 下触发 chunk 间死锁,在 splitting:false 下触发 ESM 初始化死锁
这是逆向工程的结构性限制,非简单修复能解决
验证: --version / -p / --print / 源码模式 全部通过
This commit is contained in:
parent
0e9d6955f0
commit
98bb25636b
|
|
@ -59,10 +59,10 @@ export const DEFAULT_BUILD_FEATURES = [
|
|||
'PROACTIVE', // 主动自主代理模式(SleepTool 控制 tick 节奏,省 token)
|
||||
'DAEMON', // 守护进程模式,长驻 supervisor 管理后台 worker(非 GB 级主因)
|
||||
'ACP', // ACP 代理协议,支持外部 agent 接入
|
||||
// 'WORKFLOW_SCRIPTS', // 已禁用:stub 空壳,启用后 __esm() 循环初始化导致构建产物 hang
|
||||
// 'WORKFLOW_SCRIPTS', // 已禁用:stub 空壳 + builtin-tools 跨包 import 'src/...' → __esm() 循环初始化死锁
|
||||
// 'HISTORY_SNIP', // 已禁用:snip 功能暂时关闭
|
||||
// 'CONTEXT_COLLAPSE', // 已禁用:实现是空壳 stub,启用后会抑制 auto compact 导致上下文管理完全失效
|
||||
// 'MONITOR_TOOL', // 已禁用:stub 空壳,启用后 __esm() 循环初始化导致构建产物 hang
|
||||
// 'MONITOR_TOOL', // 已禁用:stub 空壳 + builtin-tools 跨包 import 'src/...' → __esm() 循环初始化死锁
|
||||
// 'FORK_SUBAGENT', // 已禁用:通过 Agent tool 的特殊方式实现了等效功能,无需再开
|
||||
'KAIROS', // Kairos 定时任务系统核心
|
||||
'COORDINATOR_MODE', // 多 worker 编排模式(AgentSummary 泄露已在 52b61c2c 修复)
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ const WorkflowPermissionRequest = feature('WORKFLOW_SCRIPTS')
|
|||
|
||||
const MonitorTool = feature('MONITOR_TOOL')
|
||||
? (
|
||||
require('../../tools/MonitorTool/MonitorTool.js') as typeof import('../../tools/MonitorTool/MonitorTool.js')
|
||||
require('@claude-code-best/builtin-tools/tools/MonitorTool/MonitorTool.js') as typeof import('@claude-code-best/builtin-tools/tools/MonitorTool/MonitorTool.js')
|
||||
).MonitorTool
|
||||
: null
|
||||
|
||||
|
|
|
|||
59
src/tools.ts
59
src/tools.ts
|
|
@ -11,19 +11,6 @@ import { NotebookEditTool } from './tools/NotebookEditTool/NotebookEditTool.js'
|
|||
import { WebFetchTool } from './tools/WebFetchTool/WebFetchTool.js'
|
||||
import { TaskStopTool } from './tools/TaskStopTool/TaskStopTool.js'
|
||||
import { BriefTool } from './tools/BriefTool/BriefTool.js'
|
||||
import { SleepTool as SleepToolValue } from './tools/SleepTool/SleepTool.js'
|
||||
import { CronCreateTool } from './tools/ScheduleCronTool/CronCreateTool.js'
|
||||
import { CronDeleteTool } from './tools/ScheduleCronTool/CronDeleteTool.js'
|
||||
import { CronListTool } from './tools/ScheduleCronTool/CronListTool.js'
|
||||
import { RemoteTriggerTool as RemoteTriggerToolValue } from './tools/RemoteTriggerTool/RemoteTriggerTool.js'
|
||||
import { MonitorTool as MonitorToolValue } from './tools/MonitorTool/MonitorTool.js'
|
||||
import { SendUserFileTool as SendUserFileToolValue } from './tools/SendUserFileTool/SendUserFileTool.js'
|
||||
import { PushNotificationTool as PushNotificationToolValue } from './tools/PushNotificationTool/PushNotificationTool.js'
|
||||
import { TeamCreateTool as TeamCreateToolValue } from './tools/TeamCreateTool/TeamCreateTool.js'
|
||||
import { TeamDeleteTool as TeamDeleteToolValue } from './tools/TeamDeleteTool/TeamDeleteTool.js'
|
||||
import { SendMessageTool as SendMessageToolValue } from './tools/SendMessageTool/SendMessageTool.js'
|
||||
import { initBundledWorkflows } from './tools/WorkflowTool/bundled/index.js'
|
||||
import { WorkflowTool as WorkflowToolValue } from './tools/WorkflowTool/WorkflowTool.js'
|
||||
import * as coordinatorModeModuleValue from './coordinator/coordinatorMode.js'
|
||||
// Dead code elimination: conditional import for ant-only tools
|
||||
/* eslint-disable custom-rules/no-process-env-top-level, @typescript-eslint/no-require-imports */
|
||||
|
|
@ -37,20 +24,34 @@ const SuggestBackgroundPRTool =
|
|||
.SuggestBackgroundPRTool
|
||||
: null
|
||||
const SleepTool =
|
||||
feature('PROACTIVE') || feature('KAIROS') ? SleepToolValue : null
|
||||
const cronTools = [CronCreateTool, CronDeleteTool, CronListTool]
|
||||
feature('PROACTIVE') || feature('KAIROS')
|
||||
? require('@claude-code-best/builtin-tools/tools/SleepTool/SleepTool.js')
|
||||
.SleepTool
|
||||
: null
|
||||
const cronTools = [
|
||||
require('@claude-code-best/builtin-tools/tools/ScheduleCronTool/CronCreateTool.js')
|
||||
.CronCreateTool,
|
||||
require('@claude-code-best/builtin-tools/tools/ScheduleCronTool/CronDeleteTool.js')
|
||||
.CronDeleteTool,
|
||||
require('@claude-code-best/builtin-tools/tools/ScheduleCronTool/CronListTool.js')
|
||||
.CronListTool,
|
||||
]
|
||||
const RemoteTriggerTool = feature('AGENT_TRIGGERS_REMOTE')
|
||||
? RemoteTriggerToolValue
|
||||
? require('@claude-code-best/builtin-tools/tools/RemoteTriggerTool/RemoteTriggerTool.js')
|
||||
.RemoteTriggerTool
|
||||
: null
|
||||
const MonitorTool = feature('MONITOR_TOOL')
|
||||
? MonitorToolValue
|
||||
? require('@claude-code-best/builtin-tools/tools/MonitorTool/MonitorTool.js')
|
||||
.MonitorTool
|
||||
: null
|
||||
const SendUserFileTool = feature('KAIROS')
|
||||
? SendUserFileToolValue
|
||||
? require('@claude-code-best/builtin-tools/tools/SendUserFileTool/SendUserFileTool.js')
|
||||
.SendUserFileTool
|
||||
: null
|
||||
const PushNotificationTool =
|
||||
feature('KAIROS') || feature('KAIROS_PUSH_NOTIFICATION')
|
||||
? PushNotificationToolValue
|
||||
? require('@claude-code-best/builtin-tools/tools/PushNotificationTool/PushNotificationTool.js')
|
||||
.PushNotificationTool
|
||||
: null
|
||||
const SubscribePRTool = feature('KAIROS_GITHUB_WEBHOOKS')
|
||||
? require('./tools/SubscribePRTool/SubscribePRTool.js').SubscribePRTool
|
||||
|
|
@ -63,9 +64,18 @@ import { ExitPlanModeV2Tool } from './tools/ExitPlanModeTool/ExitPlanModeV2Tool.
|
|||
import { TestingPermissionTool } from './tools/testing/TestingPermissionTool.js'
|
||||
import { GrepTool } from './tools/GrepTool/GrepTool.js'
|
||||
import { TungstenTool } from './tools/TungstenTool/TungstenTool.js'
|
||||
const getTeamCreateTool = () => TeamCreateToolValue
|
||||
const getTeamDeleteTool = () => TeamDeleteToolValue
|
||||
const getSendMessageTool = () => SendMessageToolValue
|
||||
// Lazy require to break circular dependency: tools.ts -> TeamCreateTool/TeamDeleteTool -> ... -> tools.ts
|
||||
/* eslint-disable @typescript-eslint/no-require-imports */
|
||||
const getTeamCreateTool = () =>
|
||||
require('@claude-code-best/builtin-tools/tools/TeamCreateTool/TeamCreateTool.js')
|
||||
.TeamCreateTool as typeof import('@claude-code-best/builtin-tools/tools/TeamCreateTool/TeamCreateTool.js').TeamCreateTool
|
||||
const getTeamDeleteTool = () =>
|
||||
require('@claude-code-best/builtin-tools/tools/TeamDeleteTool/TeamDeleteTool.js')
|
||||
.TeamDeleteTool as typeof import('@claude-code-best/builtin-tools/tools/TeamDeleteTool/TeamDeleteTool.js').TeamDeleteTool
|
||||
const getSendMessageTool = () =>
|
||||
require('@claude-code-best/builtin-tools/tools/SendMessageTool/SendMessageTool.js')
|
||||
.SendMessageTool as typeof import('@claude-code-best/builtin-tools/tools/SendMessageTool/SendMessageTool.js').SendMessageTool
|
||||
/* eslint-enable @typescript-eslint/no-require-imports */
|
||||
import { AskUserQuestionTool } from './tools/AskUserQuestionTool/AskUserQuestionTool.js'
|
||||
import { LSPTool } from './tools/LSPTool/LSPTool.js'
|
||||
import { ListMcpResourcesTool } from './tools/ListMcpResourcesTool/ListMcpResourcesTool.js'
|
||||
|
|
@ -124,8 +134,9 @@ const ListPeersTool = feature('UDS_INBOX')
|
|||
: null
|
||||
const WorkflowTool = feature('WORKFLOW_SCRIPTS')
|
||||
? (() => {
|
||||
initBundledWorkflows()
|
||||
return WorkflowToolValue
|
||||
require('@claude-code-best/builtin-tools/tools/WorkflowTool/bundled/index.js').initBundledWorkflows()
|
||||
return require('@claude-code-best/builtin-tools/tools/WorkflowTool/WorkflowTool.js')
|
||||
.WorkflowTool
|
||||
})()
|
||||
: null
|
||||
/* eslint-enable custom-rules/no-process-env-top-level, @typescript-eslint/no-require-imports */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user