mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-22 00:05:51 +00:00
feat(workflow): add workflow engine, /workflows panel, /ultracode skill
将 feat/sdk-backend 分支中 workflow 相关的 20 个 commit 压缩为单 commit: - 工作流引擎核心:phase / agent / parallel / pipeline 编排原语(packages/workflow-engine/) - /workflows 面板:三区焦点布局(顶部 run tabs + 左侧 phase 侧栏 + 右侧 agent 列表) - /ultracode skill:多 agent workflow 编排入口 - 进度存储 / journal / notification 系统 - WorkflowService 生命周期管理 + SentryErrorBoundary - 脚本沙箱:禁用 dynamic import()、JSON args 防御性归一化 - journal 与 named-workflow 路径统一在 projectRoot - 错误处理:parallel/pipeline hooks 错误日志、failure routing、semaphore abort - workflow 工具升级为 core 工具 + PascalCase 命名 Co-Authored-By: glm-5.1 <zai-org@claude-code-best.win>
This commit is contained in:
50
src/workflow/wiring.ts
Normal file
50
src/workflow/wiring.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
import {
|
||||
createWorkflowTool,
|
||||
type WorkflowToolDescriptor,
|
||||
} from '@claude-code-best/workflow-engine'
|
||||
import { buildTool, type Tool } from '../Tool.js'
|
||||
import { getWorkflowService } from './service.js'
|
||||
|
||||
/**
|
||||
* 把引擎自包含描述符适配为 buildTool 兼容的 Tool。
|
||||
* 描述符统一走 service 单例(共享 ports/registry/store)。
|
||||
*/
|
||||
function buildWorkflowTool(): Tool {
|
||||
const { ports } = getWorkflowService()
|
||||
const descriptor: WorkflowToolDescriptor = createWorkflowTool(ports)
|
||||
return buildTool({
|
||||
name: descriptor.name,
|
||||
maxResultSizeChars: 50_000,
|
||||
inputSchema: descriptor.inputSchema,
|
||||
isEnabled: () => descriptor.isEnabled(),
|
||||
isReadOnly: input => descriptor.isReadOnly(input),
|
||||
isConcurrencySafe: () => true,
|
||||
async description() {
|
||||
return descriptor.description()
|
||||
},
|
||||
async prompt() {
|
||||
return descriptor.prompt()
|
||||
},
|
||||
async call(input, context, canUseTool, parentMessage, onProgress) {
|
||||
const result = await descriptor.call(
|
||||
input,
|
||||
context,
|
||||
canUseTool,
|
||||
parentMessage,
|
||||
onProgress,
|
||||
)
|
||||
return { data: result.data }
|
||||
},
|
||||
renderToolUseMessage: input => descriptor.renderToolUseMessage(input),
|
||||
mapToolResultToToolResultBlockParam: (data, toolUseId) =>
|
||||
descriptor.mapToolResultToToolResultBlockParam(data, toolUseId),
|
||||
})
|
||||
}
|
||||
|
||||
// 单例:tools.ts 注册与 PermissionRequest 引用需为同一实例(switch 按引用匹配)。
|
||||
let cached: Tool | null = null
|
||||
|
||||
export function createWorkflowToolCore(): Tool {
|
||||
if (!cached) cached = buildWorkflowTool()
|
||||
return cached
|
||||
}
|
||||
Reference in New Issue
Block a user