Server Workspace CLI

server workspace CLI 位于 server/cli。在仓库内开发时,通常通过 workspace 脚本调用:
pnpm -C workspace workspace <command> [args]
pnpm -C workspace workspace <command> [args]
发布后则使用 npm 安装得到的 workflow-workspace 命令。仓库内脚本会先构建项目,再运行 server/cli。它用于连接 Workflow Server,管理远程 workflow 包和版本。

参数规则

workspace CLI 会从命令后的所有参数中识别全局选项,未识别的参数保留为命令位置参数或 workflow args。当前不会剥离 -- 分隔符,因此运行远程 workflow 时直接写业务参数即可。
规则说明
全局选项--server--token--target--release-log--path--file--output--create 会被 CLI 解析。
workflow argsrun<workflow> 之后,未被识别为全局选项的参数会发送到 server run API。
debug argsdebug-node<workflow><node> 之后,未被识别为全局选项的参数会发送到 debug node API。
--version已废弃。版本号由 server 发布流程生成。

全局选项

选项说明
--server <url>Workflow Server 地址。默认读取 WORKFLOW_SERVER_URL,再读保存的 CLI 登录态,最后回退到开发常用的 http://localhost:7125。发布/部署态建议显式传 http://localhost:7130 或正式域名。
--token <token>可选的显式 Bearer 覆盖值。默认读取 WORKFLOW_SERVER_ADMIN_KEY,再读保存的 CLI 登录态 API Key。
--target <target>远程运行、调试或下载目标。常用值为 draftlatest 或具体版本号。
--release-log <text>发布日志。用于 upload 后自动 publish,或用于 publish
--path <path>本地 workflow 目录或下载目标目录。
--file <archive>已存在的 .tgz workflow 包。
--output <file.tgz>pack 生成的压缩包路径。
--createupload 时如果本地 package.json.id 还没有绑定 server UUID,则先调用 POST /api/workflows 创建远程项目并把返回 UUID 写回本地 package。

配置和登录态

来源说明
server/cli/.envCLI 工作目录下的配置文件。
仓库根目录 .env共享配置文件。
CLI 登录态文件login 会写入 workflow-auth.json,后续命令可复用。
环境变量显式环境变量优先级高于 .env
.env 示例:
WORKFLOW_SERVER_URL=http://localhost:7125
WORKFLOW_SERVER_ADMIN_KEY=replace-with-admin-key
WORKFLOW_REPO_ROOT=/absolute/path/to/workflow-code
WORKFLOW_WORKSPACE_PACKS_DIR=/absolute/path/to/writable/workflow-packs

配置优先级

配置项优先级
server URL--server > WORKFLOW_SERVER_URL > CLI 登录态 > http://localhost:7125
token--token > WORKFLOW_SERVER_ADMIN_KEY > CLI 登录态
repo rootWORKFLOW_REPO_ROOT > 从当前目录或 CLI 文件位置向上查找包含 pnpm-workspace.yaml 的仓库根目录
pack 暂存目录WORKFLOW_WORKSPACE_PACKS_DIR > <repo root>/workspace/.packs
CLI 登录态目录WORKFLOW_CLI_AUTH_DIR > 系统默认应用配置目录
CLI 登录态文件名为 workflow-auth.json。macOS 默认目录是 ~/Library/Application Support/workflow-code,Windows 默认使用 %APPDATA%/workflow-code,Linux 默认使用 $XDG_CONFIG_HOME/workflow-code~/.config/workflow-code 从桌面 App 发行包触发 Publish 时,App 会为 workspace CLI 设置 WORKFLOW_WORKSPACE_PACKS_DIR 到 App 用户数据目录下的可写位置;同时 upload --path <workflow-dir> 会按 <workflow-dir> 的父目录查找 ../sibling-workflow 这类本地 workflow 依赖,避免发行包误把 app.asar 当成仓库根目录。

命令列表

命令说明
login通过 browser device flow 登录,并保存 CLI 专用连接配置。
logout清空保存的连接配置。
status查看当前是否已登录。
health请求 server /health
pack将本地 workflow 打成 .tgz
upload上传 workflow 包;可选择自动发布。
publish将远程 draft 发布为新版本。
versions查看 workflow 版本列表。
run远程运行 workflow。
debug-node远程运行 registry 中的单个调试节点。
download下载远程文件到本地 workflow 目录。
help输出帮助信息。

输出和退出码

情况行为
server 返回 errCode: 0输出 JSON,退出码保持成功。
server 返回非零 errCode输出 JSON,并设置退出码为 1
参数缺失或本地命令失败输出错误信息,退出码为 1

完整发布示例

pnpm -C workspace workspace health --server http://localhost:7125
pnpm -C workspace workspace login --server http://localhost:7125
pnpm -C workspace workspace pack hello
pnpm -C workspace workspace upload hello --create --release-log "初始发布"
pnpm -C workspace workspace versions hello
pnpm -C workspace workspace run hello --target latest --message "hello"
issue #97 的发布前置阶段起,发布后的独立 CLI 命令名为 workflow-workspace。仓库内开发默认仍以 7125 为主;只有发布/部署态示例才切到 7130+。例如:
workflow-workspace health --server http://localhost:7130
workflow-workspace login --server http://localhost:7130
从 issue #95 起,workspace CLI 的上传、发布、运行和下载都以顶层 package.json.id UUID 为远程项目标识。<workflow> 位置参数仍可继续写本地目录名或 workflow 名称,但 CLI 会优先读取该目录内 package.json.id;只有当你直接把 <workflow> 传成 UUID 时,CLI 才会跳过本地 package 读取。若本地 package 缺失 UUID、不是 UUID,或还没有在 server 端创建项目,upload / run / publish / debug-node 都会直接失败,并给出 workspace upload <workflow> --create 的绑定提示,不再从目录名推导远程项目 ID。 当 workflow 源码通过 ../<sibling-workflow>/... 引用其它 workspace workflow 时,packupload 也会把这些兄弟 workflow 源码一起打进归档里的 workspace/workflow/* 结构,确保 server 端构建 draft/runtime 包时能解析本地依赖,不需要手工拼包。

Codex 手动上传示例

workspace/workflow/codex 可先打包为 .tgz,再通过 upload --file 上传已有包,适合需要人工确认归档内容或复用包文件的场景:
pnpm -C workspace workspace pack codex --output ./workspace/.packs/codex-manual.tgz
pnpm -C workspace workspace upload codex --file ./workspace/.packs/codex-manual.tgz
pnpm -C workspace workspace publish codex --release-log "manual codex upload"