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)
|
'PROACTIVE', // 主动自主代理模式(SleepTool 控制 tick 节奏,省 token)
|
||||||
'DAEMON', // 守护进程模式,长驻 supervisor 管理后台 worker(非 GB 级主因)
|
'DAEMON', // 守护进程模式,长驻 supervisor 管理后台 worker(非 GB 级主因)
|
||||||
'ACP', // ACP 代理协议,支持外部 agent 接入
|
'ACP', // ACP 代理协议,支持外部 agent 接入
|
||||||
// 'WORKFLOW_SCRIPTS', // 已禁用:stub 空壳,启用后 __esm() 循环初始化导致构建产物 hang
|
// 'WORKFLOW_SCRIPTS', // 已禁用:stub 空壳 + builtin-tools 跨包 import 'src/...' → __esm() 循环初始化死锁
|
||||||
// 'HISTORY_SNIP', // 已禁用:snip 功能暂时关闭
|
// 'HISTORY_SNIP', // 已禁用:snip 功能暂时关闭
|
||||||
// 'CONTEXT_COLLAPSE', // 已禁用:实现是空壳 stub,启用后会抑制 auto compact 导致上下文管理完全失效
|
// 'CONTEXT_COLLAPSE', // 已禁用:实现是空壳 stub,启用后会抑制 auto compact 导致上下文管理完全失效
|
||||||
// 'MONITOR_TOOL', // 已禁用:stub 空壳,启用后 __esm() 循环初始化导致构建产物 hang
|
// 'MONITOR_TOOL', // 已禁用:stub 空壳 + builtin-tools 跨包 import 'src/...' → __esm() 循环初始化死锁
|
||||||
// 'FORK_SUBAGENT', // 已禁用:通过 Agent tool 的特殊方式实现了等效功能,无需再开
|
// 'FORK_SUBAGENT', // 已禁用:通过 Agent tool 的特殊方式实现了等效功能,无需再开
|
||||||
'KAIROS', // Kairos 定时任务系统核心
|
'KAIROS', // Kairos 定时任务系统核心
|
||||||
'COORDINATOR_MODE', // 多 worker 编排模式(AgentSummary 泄露已在 52b61c2c 修复)
|
'COORDINATOR_MODE', // 多 worker 编排模式(AgentSummary 泄露已在 52b61c2c 修复)
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ const WorkflowPermissionRequest = feature('WORKFLOW_SCRIPTS')
|
||||||
|
|
||||||
const MonitorTool = feature('MONITOR_TOOL')
|
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
|
).MonitorTool
|
||||||
: null
|
: 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 { WebFetchTool } from './tools/WebFetchTool/WebFetchTool.js'
|
||||||
import { TaskStopTool } from './tools/TaskStopTool/TaskStopTool.js'
|
import { TaskStopTool } from './tools/TaskStopTool/TaskStopTool.js'
|
||||||
import { BriefTool } from './tools/BriefTool/BriefTool.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'
|
import * as coordinatorModeModuleValue from './coordinator/coordinatorMode.js'
|
||||||
// Dead code elimination: conditional import for ant-only tools
|
// Dead code elimination: conditional import for ant-only tools
|
||||||
/* eslint-disable custom-rules/no-process-env-top-level, @typescript-eslint/no-require-imports */
|
/* eslint-disable custom-rules/no-process-env-top-level, @typescript-eslint/no-require-imports */
|
||||||
|
|
@ -37,20 +24,34 @@ const SuggestBackgroundPRTool =
|
||||||
.SuggestBackgroundPRTool
|
.SuggestBackgroundPRTool
|
||||||
: null
|
: null
|
||||||
const SleepTool =
|
const SleepTool =
|
||||||
feature('PROACTIVE') || feature('KAIROS') ? SleepToolValue : null
|
feature('PROACTIVE') || feature('KAIROS')
|
||||||
const cronTools = [CronCreateTool, CronDeleteTool, CronListTool]
|
? 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')
|
const RemoteTriggerTool = feature('AGENT_TRIGGERS_REMOTE')
|
||||||
? RemoteTriggerToolValue
|
? require('@claude-code-best/builtin-tools/tools/RemoteTriggerTool/RemoteTriggerTool.js')
|
||||||
|
.RemoteTriggerTool
|
||||||
: null
|
: null
|
||||||
const MonitorTool = feature('MONITOR_TOOL')
|
const MonitorTool = feature('MONITOR_TOOL')
|
||||||
? MonitorToolValue
|
? require('@claude-code-best/builtin-tools/tools/MonitorTool/MonitorTool.js')
|
||||||
|
.MonitorTool
|
||||||
: null
|
: null
|
||||||
const SendUserFileTool = feature('KAIROS')
|
const SendUserFileTool = feature('KAIROS')
|
||||||
? SendUserFileToolValue
|
? require('@claude-code-best/builtin-tools/tools/SendUserFileTool/SendUserFileTool.js')
|
||||||
|
.SendUserFileTool
|
||||||
: null
|
: null
|
||||||
const PushNotificationTool =
|
const PushNotificationTool =
|
||||||
feature('KAIROS') || feature('KAIROS_PUSH_NOTIFICATION')
|
feature('KAIROS') || feature('KAIROS_PUSH_NOTIFICATION')
|
||||||
? PushNotificationToolValue
|
? require('@claude-code-best/builtin-tools/tools/PushNotificationTool/PushNotificationTool.js')
|
||||||
|
.PushNotificationTool
|
||||||
: null
|
: null
|
||||||
const SubscribePRTool = feature('KAIROS_GITHUB_WEBHOOKS')
|
const SubscribePRTool = feature('KAIROS_GITHUB_WEBHOOKS')
|
||||||
? require('./tools/SubscribePRTool/SubscribePRTool.js').SubscribePRTool
|
? require('./tools/SubscribePRTool/SubscribePRTool.js').SubscribePRTool
|
||||||
|
|
@ -63,9 +64,18 @@ import { ExitPlanModeV2Tool } from './tools/ExitPlanModeTool/ExitPlanModeV2Tool.
|
||||||
import { TestingPermissionTool } from './tools/testing/TestingPermissionTool.js'
|
import { TestingPermissionTool } from './tools/testing/TestingPermissionTool.js'
|
||||||
import { GrepTool } from './tools/GrepTool/GrepTool.js'
|
import { GrepTool } from './tools/GrepTool/GrepTool.js'
|
||||||
import { TungstenTool } from './tools/TungstenTool/TungstenTool.js'
|
import { TungstenTool } from './tools/TungstenTool/TungstenTool.js'
|
||||||
const getTeamCreateTool = () => TeamCreateToolValue
|
// Lazy require to break circular dependency: tools.ts -> TeamCreateTool/TeamDeleteTool -> ... -> tools.ts
|
||||||
const getTeamDeleteTool = () => TeamDeleteToolValue
|
/* eslint-disable @typescript-eslint/no-require-imports */
|
||||||
const getSendMessageTool = () => SendMessageToolValue
|
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 { AskUserQuestionTool } from './tools/AskUserQuestionTool/AskUserQuestionTool.js'
|
||||||
import { LSPTool } from './tools/LSPTool/LSPTool.js'
|
import { LSPTool } from './tools/LSPTool/LSPTool.js'
|
||||||
import { ListMcpResourcesTool } from './tools/ListMcpResourcesTool/ListMcpResourcesTool.js'
|
import { ListMcpResourcesTool } from './tools/ListMcpResourcesTool/ListMcpResourcesTool.js'
|
||||||
|
|
@ -124,8 +134,9 @@ const ListPeersTool = feature('UDS_INBOX')
|
||||||
: null
|
: null
|
||||||
const WorkflowTool = feature('WORKFLOW_SCRIPTS')
|
const WorkflowTool = feature('WORKFLOW_SCRIPTS')
|
||||||
? (() => {
|
? (() => {
|
||||||
initBundledWorkflows()
|
require('@claude-code-best/builtin-tools/tools/WorkflowTool/bundled/index.js').initBundledWorkflows()
|
||||||
return WorkflowToolValue
|
return require('@claude-code-best/builtin-tools/tools/WorkflowTool/WorkflowTool.js')
|
||||||
|
.WorkflowTool
|
||||||
})()
|
})()
|
||||||
: null
|
: null
|
||||||
/* eslint-enable custom-rules/no-process-env-top-level, @typescript-eslint/no-require-imports */
|
/* eslint-enable custom-rules/no-process-env-top-level, @typescript-eslint/no-require-imports */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user