Skip to content

fix: accept builtin:// spec_path returned by list #506

Description

@LeXwDeX

Why

workflow(action="list") 对 builtin 模板返回 path: "builtin://<name>"(合成标记,packages/opencode/src/dag/workflows.ts:43,142-144),但把该值回传给 read/start/validatespec_path 会被拒绝:resolveSpecPathpackages/opencode/src/tool/workflow.ts:914-941)的 isName() 因值含 / 判 false → 落入路径分支 → builtin:// 被当相对路径 resolve 进会话目录 → .yaml/.yml 扩展名检查失败报错。报错信息还把 scheme 拼进 cwd 绝对路径(.../opencode-dag/builtin:/project-development-full),严重误导排障。loadSpecFile:871isBuiltinPath 分支只覆盖内部产生的 entry.path,外部输入永远到不了那里。

Scope

  • packages/opencode/src/tool/workflow.tsresolveSpecPath(:914-941)

Approach

resolveSpecPath 开头加 DagWorkflows.isBuiltinPath(specPath) 短路:提取 builtinName(specPath) 后走 DagWorkflows.resolve 的既有 name 解析,复用 "Saved workflow not found" 报错与搜索位置提示;路径分支不动。

Acceptance

  • 单测(注入 builtin 模板 fixture):read / validatebuiltin://<name>spec_path 成功返回 spec 内容与校验结果
  • 未知 builtin://<name> 的报错与 bare name 的 not-found 报错同格式、列出搜索位置
  • 纯名与文件路径分支行为不变(现有 workflow-tool 测试全绿)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions