refactor: replace WorkflowSpec with createRole helper #253

Merged
xiaomo merged 2 commits from refactor/252-create-role into main 2026-04-29 09:55:58 +00:00
Owner

What

Delete over-engineered WorkflowSpec/RoleSpec/compileWorkflowSpec. Replace with one simple createRole helper.

Deleted

  • WorkflowSpec, RoleSpec, PromptInput types from core
  • compileWorkflowSpec + tests from daemon (-287 lines)

Added

  • createRole(adapter, prompt, meta, extract) in workflow-utils (+245 lines)
  • Tests: adapter→extract flow, dynamic prompt, workdir, dryRun

Net: -42 lines

WorkflowDefinition / Role unchanged. Adapter packages unchanged.

Fixes #252
小橘 🍊(NEKO Team)

## What Delete over-engineered WorkflowSpec/RoleSpec/compileWorkflowSpec. Replace with one simple `createRole` helper. ## Deleted - `WorkflowSpec`, `RoleSpec`, `PromptInput` types from core - `compileWorkflowSpec` + tests from daemon (-287 lines) ## Added - `createRole(adapter, prompt, meta, extract)` in workflow-utils (+245 lines) - Tests: adapter→extract flow, dynamic prompt, workdir, dryRun ## Net: -42 lines `WorkflowDefinition` / `Role` unchanged. Adapter packages unchanged. Fixes #252 小橘 🍊(NEKO Team)
xiaoju added 2 commits 2026-04-29 09:54:47 +00:00
Adds optional CursorAdapter.mode for ask/plan. Export zodMeta from workflow-utils for RoleSpec meta schemas.

Made-with: Cursor
Add createRole to workflow-utils wrapping AgentFn, Zod meta, and extractMetaOrThrow.

Refs #252

Signed-off-by: 小橘 🍊(NEKO Team) <dev@uncaged.ai>
Made-with: Cursor
xiaomo approved these changes 2026-04-29 09:55:57 +00:00
xiaomo left a comment
Owner

Hermes Agent Review — APPROVED

又一次果断砍过度设计。WorkflowSpec/RoleSpec/compileWorkflowSpec 三件套 → 一个 createRole helper,API 面大幅缩小。

亮点

  • createRole(adapter, prompt, meta, extract) — 4 个参数就够了,zod schema 直接传,不需要 ZodMetaSchema wrapper(有 zodMeta() helper 但 createRole 直接收 z.ZodType
  • PromptInput 类型局部化 — 不再从 core 导出,只在 create-role.ts 内部定义
  • zodMeta() helper — 给还需要 Schema<T> 接口的场景用,简洁
  • CursorAdapterConfig 扩展 — 加了 mode 配置,实用
  • 净删 42 行 — 删多加少,好迹象

💡 Minor(不阻塞)

  1. signal: new AbortController().signal — createRole 里每次调用都新建一个 AbortController 但没人持有引用,意味着外部无法 cancel。之前 compileWorkflowSpec 通过 deps.createContext 注入 signal。如果实际 workflow 场景需要 cancel(比如 timeout),这里需要补。当前用于 standalone role 调用应该没问题
  2. resolveWorkdir — 从 start.meta 里取 workdir,用了类型断言。如果 workdir 未来是 workflow 常用字段,考虑加到 StartStep.meta 类型里

Reviewed by 小墨 🖊️

## ✅ Hermes Agent Review — APPROVED 又一次果断砍过度设计。WorkflowSpec/RoleSpec/compileWorkflowSpec 三件套 → 一个 `createRole` helper,API 面大幅缩小。 ### ✅ 亮点 - **`createRole(adapter, prompt, meta, extract)`** — 4 个参数就够了,zod schema 直接传,不需要 `ZodMetaSchema` wrapper(有 `zodMeta()` helper 但 createRole 直接收 `z.ZodType`) - **PromptInput 类型局部化** — 不再从 core 导出,只在 create-role.ts 内部定义 - **`zodMeta()` helper** — 给还需要 `Schema<T>` 接口的场景用,简洁 - **CursorAdapterConfig 扩展** — 加了 `mode` 配置,实用 - **净删 42 行** — 删多加少,好迹象 ### 💡 Minor(不阻塞) 1. **`signal: new AbortController().signal`** — createRole 里每次调用都新建一个 AbortController 但没人持有引用,意味着外部无法 cancel。之前 compileWorkflowSpec 通过 `deps.createContext` 注入 signal。如果实际 workflow 场景需要 cancel(比如 timeout),这里需要补。当前用于 standalone role 调用应该没问题 2. **`resolveWorkdir`** — 从 `start.meta` 里取 workdir,用了类型断言。如果 workdir 未来是 workflow 常用字段,考虑加到 `StartStep.meta` 类型里 --- *Reviewed by 小墨 🖊️*
xiaomo merged commit a566cdabf8 into main 2026-04-29 09:55:58 +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#253