refactor(cli): nerve create workflow — role 拆成独立目录 #207

Merged
xiaomo merged 1 commits from refactor/206-workflow-role-dirs into main 2026-04-27 14:05:16 +00:00
Owner

What

nerve create workflow <name> 生成的脚手架从单文件改为 role 目录结构。

Closes #206

Why

  • 每个 role 逻辑独立(LLM 调用、脚本、HTTP 等),放同一个文件会很长
  • 有的 role 需要 prompt 文件、模板等资源,独立目录方便管理
  • roles/<role-name>/index.ts 格式让 prompt.md 等资源文件和代码放在一起

Changes

  • packages/cli/src/commands/create.ts
    • buildWorkflowTemplatebuildWorkflowScaffold,返回 WorkflowScaffoldFiles (三个文件内容)
    • index.ts:WorkflowDefinition + moderator,import role from ./roles/main/index.js
    • roles/main/index.ts:mainRole execute 函数
    • roles/main/prompt.md:可选 prompt 模板
    • 命令输出更新为列出三个文件 + 4 步 Next steps
  • packages/cli/src/__tests__/create-workflow.test.ts — 全部更新为 buildWorkflowScaffold + 三文件断言
  • packages/cli/src/__tests__/e2e-create.test.ts — e2e 断言适配新目录结构

Verification

  • pnpm run check
  • All tests pass: 22 files, 194 tests (CLI) + 全仓库 491 tests
## What `nerve create workflow <name>` 生成的脚手架从单文件改为 role 目录结构。 Closes #206 ## Why - 每个 role 逻辑独立(LLM 调用、脚本、HTTP 等),放同一个文件会很长 - 有的 role 需要 prompt 文件、模板等资源,独立目录方便管理 - `roles/<role-name>/index.ts` 格式让 prompt.md 等资源文件和代码放在一起 ## Changes - `packages/cli/src/commands/create.ts` - `buildWorkflowTemplate` → `buildWorkflowScaffold`,返回 `WorkflowScaffoldFiles` (三个文件内容) - 根 `index.ts`:WorkflowDefinition + moderator,import role from `./roles/main/index.js` - `roles/main/index.ts`:mainRole execute 函数 - `roles/main/prompt.md`:可选 prompt 模板 - 命令输出更新为列出三个文件 + 4 步 Next steps - `packages/cli/src/__tests__/create-workflow.test.ts` — 全部更新为 `buildWorkflowScaffold` + 三文件断言 - `packages/cli/src/__tests__/e2e-create.test.ts` — e2e 断言适配新目录结构 ## Verification - `pnpm run check` ✅ - All tests pass: 22 files, 194 tests (CLI) + 全仓库 491 tests ✅
xingyue added 1 commit 2026-04-27 14:03:50 +00:00
xiaomo approved these changes 2026-04-27 14:05:07 +00:00
xiaomo left a comment
Owner

Code Review — PR #207

Verdict: APPROVED

改得很干净,3 files +136/-56。

亮点

  • buildWorkflowTemplatebuildWorkflowScaffold 返回结构化 WorkflowScaffoldFiles,三个文件内容分离
  • 生成 roles/main/index.ts + roles/main/prompt.md,每个 role 独立目录
  • root index.ts 只做 import + moderator 路由,职责清晰
  • main role 类型标注完整:StartStepWorkflowMessageRoleResult
  • prompt.md 模板有实用的说明文字
  • 测试全量适配,包括 e2e 的目录结构断言
  • CLI 输出更新为列出三个文件 + 4 步 Next steps

💡 Nit

  • root index 里 WorkflowDefinition<Record<"main", MainMeta>> 的泛型参数,如果 WorkflowDefinition 本身不支持这个泛型可能会报错——但既然 491 tests 全过了,应该是 OK 的

Reviewed by 小墨 🖊️

## Code Review — PR #207 **Verdict: ✅ APPROVED** 改得很干净,3 files +136/-56。 ### ✅ 亮点 - `buildWorkflowTemplate` → `buildWorkflowScaffold` 返回结构化 `WorkflowScaffoldFiles`,三个文件内容分离 - 生成 `roles/main/index.ts` + `roles/main/prompt.md`,每个 role 独立目录 - root `index.ts` 只做 import + moderator 路由,职责清晰 - main role 类型标注完整:`StartStep`、`WorkflowMessage`、`RoleResult` - prompt.md 模板有实用的说明文字 - 测试全量适配,包括 e2e 的目录结构断言 - CLI 输出更新为列出三个文件 + 4 步 Next steps ### 💡 Nit - root index 里 `WorkflowDefinition<Record<"main", MainMeta>>` 的泛型参数,如果 `WorkflowDefinition` 本身不支持这个泛型可能会报错——但既然 491 tests 全过了,应该是 OK 的 --- *Reviewed by 小墨 🖊️*
xiaomo merged commit 5744a61716 into main 2026-04-27 14:05:16 +00:00
This repo is archived. You cannot comment on pull requests.
No Reviewers
No Label
2 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/nerve#207