xiaoju 031c3aa632 docs(cli): add deprecation handlers and update documentation (#463)
Complete the CLI refactoring with deprecation error handlers, updated
help text, and comprehensive migration guide.

## Changes

### Deprecation Handlers
Add error handlers for all removed commands with helpful migration messages:
- `workflow put` → suggests `workflow add`
- `thread step` → suggests `thread exec`
- `thread steps` → suggests `step list`
- `thread step-details` → suggests `step show`
- `thread fork` → suggests `step fork`
- `thread kill` → suggests `thread stop` or `thread cancel`
- `thread running` → suggests `thread list --status running`

Error messages follow the format:
```
Error: Command 'X' has been removed.
Use 'Y' instead.

For more information, see: uwf help Y
```

### Help Documentation
Updated CLI help text to explain four-layer architecture:
- Main help shows architecture diagram with Chinese labels
- Command group descriptions reference layers:
  - `workflow` → "Workflow definitions (layer 1: templates)"
  - `thread` → "Thread execution (layer 2: instances)"
  - `step` → "Step results (layer 3: single cycle)"
- Deprecated commands appear in help with [DEPRECATED] tag

### README Updates
Comprehensive documentation updates:
- Added "Four-Layer Architecture" section with diagram
- Updated all command tables with new command names
- Added complete migration guide with:
  - Renamed commands table
  - Merged commands table
  - Split commands table
  - Moved commands table
  - Example deprecation error output
- Updated "Internal Structure" to show new step.ts module

## Testing
-  All 124 tests pass
-  Build completes successfully
-  Deprecation handlers tested manually
-  Help output verified for main, thread, and step commands

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-24 10:46:31 +00:00
2026-05-22 17:46:53 +08:00

@uncaged/workflow

A stateless workflow engine driven by a single-step CLI. Workflows are YAML definitions with roles, JSONata routing conditions, and a directed graph. Threads are immutable CAS-linked chains — each uwf thread step runs one moderator→agent→extract cycle and exits.

Overview

This monorepo implements uwf, a workflow engine with no long-running daemon. You register YAML workflow definitions in a content-addressed store (CAS), start a thread with an initial prompt, then invoke uwf thread step repeatedly until the moderator routes to $END. Each step is a complete process: the moderator evaluates JSONata conditions to pick the next role, an external agent CLI produces frontmatter markdown output, and an extract pipeline validates or structures that output against the role's JSON Schema.

Workflow state lives entirely on disk under ~/.uncaged/workflow/: CAS nodes for definitions and step payloads, registry.yaml for workflow name→hash mappings, and threads.yaml for active thread head pointers. Completed threads are archived to history.jsonl. Because there is no server process, workflows are easy to debug, fork, and inspect with ordinary CLI tools.

Agents are pluggable CLI binaries (uwf-hermes, uwf-builtin, uwf-claude-code, or custom commands). The engine spawns the configured agent with <thread-id> and <role>, sets UWF_EDGE_PROMPT from the graph transition, and captures both the agent's markdown output and a detail CAS node for session replay.

Architecture

Dependency layers (lower layers have no dependency on higher layers):

Layer 0 — Contract
  workflow-protocol          Shared types and JSON Schema definitions

Layer 1 — Shared infra
  workflow-util              Encoding, IDs, logging, frontmatter, paths
  workflow-moderator         JSONata graph evaluator

Layer 2 — Agent framework
  workflow-agent-kit         createAgent factory, context builder, extract pipeline

Layer 3 — Agent implementations
  workflow-agent-hermes      Hermes ACP agent (uwf-hermes)
  workflow-agent-builtin     Built-in LLM + tools agent (uwf-builtin)
  workflow-agent-claude-code Claude Code agent (uwf-claude-code)

Layer 4 — CLI
  cli-workflow               uwf binary — thread lifecycle, registry, CAS, setup

App (uses protocol; not in the runtime engine stack)
  workflow-dashboard         Web UI for visual workflow editing

External CAS: @uncaged/json-cas (store API, hashing, schema validation) + @uncaged/json-cas-fs (filesystem backend).

See docs/architecture.md for the full design — three-phase engine loop, CAS node types, storage layout, agent CLI protocol, and design decisions.

Packages

Package npm Description Type README
cli-workflow @uncaged/cli-workflow uwf CLI — thread lifecycle, workflow registry, CAS inspection, setup cli README
workflow-protocol @uncaged/workflow-protocol Shared TypeScript types and JSON Schema constants lib README
workflow-moderator @uncaged/workflow-moderator JSONata graph evaluator — next role or $END lib README
workflow-agent-kit @uncaged/workflow-agent-kit createAgent factory, context builder, extract pipeline lib README
workflow-util @uncaged/workflow-util Crockford Base32, ULID, logger, frontmatter parsing, storage paths lib README
workflow-agent-hermes @uncaged/workflow-agent-hermes uwf-hermes — spawns Hermes chat via ACP agent README
workflow-agent-builtin @uncaged/workflow-agent-builtin uwf-builtin — built-in LLM agent with file/shell tools agent README
workflow-agent-claude-code @uncaged/workflow-agent-claude-code uwf-claude-code — spawns Claude Code CLI agent README
workflow-dashboard @uncaged/workflow-dashboard Web graph editor for workflow YAML (private, alpha) app README

Quick Start

# 1. Configure provider, model, and default agent
uwf setup

# 2. Register a workflow from YAML
uwf workflow put examples/solve-issue.yaml

# 3. Start a thread (creates head pointer; does not execute)
uwf thread start solve-issue -p "Fix the login redirect bug"

# 4. Execute steps (one at a time, until done)
uwf thread step <thread-id>

Use -c, --count <number> on thread step to run multiple steps in one invocation. Override the agent with --agent <cmd>.

CLI Reference

Global options: -V, --version, --format <json|yaml>, -h, --help.

Group Commands
thread start, step, show, list, kill, steps, read, fork, step-details
workflow put, show, list
cas get, put, put-text, has, refs, walk, reindex, schema list, schema get
setup Interactive or --provider, --base-url, --api-key, --model, --agent
skill cli — print markdown reference of all uwf commands
log list, show, clean — process-level debug logs

Config is stored in ~/.uncaged/workflow/config.yaml. API keys go in ~/.uncaged/workflow/.env.

Detailed command usage, options, and examples: packages/cli-workflow/README.md.

Development

bun install --no-cache     # Install dependencies
bun run build              # tsc --build (all packages)
bun run check              # tsc + biome + lint-log-tags
bun run format             # Auto-format with Biome
bun test                   # Run all tests

Managed with bun workspace. See CLAUDE.md for coding conventions.

S
Description
United Workforce — multi-agent workflow orchestration via stateless CLI
Readme MIT 11 MiB
Languages
TypeScript 95.7%
JavaScript 2.3%
Shell 1.6%
CSS 0.4%