Files
united-workforce/packages/workflow-moderator/README.md
T
xiaoju ffc31a8c19 docs: sync all README.md files with current codebase
- Root README: add all 9 packages to table, update architecture diagram,
  refresh CLI reference from uwf --help
- New READMEs for 8 packages (cli-workflow, workflow-protocol,
  workflow-moderator, workflow-agent-kit, workflow-agent-hermes,
  workflow-agent-builtin, workflow-agent-claude-code, workflow-dashboard)
- Updated workflow-util README to match current exports
- All API sections verified against src/index.ts exports

小橘 🍊(NEKO Team)
2026-05-23 15:00:05 +00:00

1.6 KiB

@uncaged/workflow-moderator

JSONata-based graph evaluator — determines the next role or $END with zero LLM cost.

Overview

The moderator (Layer 1) walks the workflow graph from the current role. For each outgoing transition it evaluates an optional JSONata condition against ModeratorContext (start prompt + prior step outputs). The first truthy transition wins; its target role and edge prompt are returned. When no transition matches, the workflow ends ($END).

Dependencies: @uncaged/workflow-protocol, jsonata

Installation

bun add @uncaged/workflow-moderator

API

Functions

function evaluate(
  workflow: WorkflowPayload,
  context: ModeratorContext,
): Promise<Result<EvaluateResult, Error>>

Returns { ok: true, value: { role, prompt } } where role is the next role name or "$END", and prompt is the edge instruction for the agent.

Types

type EvaluateResult = {
  role: string;
  prompt: string;
};

The Result<T, E> type is local to this package ({ ok: true; value: T } | { ok: false; error: E }), not re-exported from index.ts.

Usage

import { evaluate } from "@uncaged/workflow-moderator";
import type { ModeratorContext, WorkflowPayload } from "@uncaged/workflow-protocol";

const result = await evaluate(workflow, context);
if (result.ok && result.value.role !== "$END") {
  console.log(`Next role: ${result.value.role}, prompt: ${result.value.prompt}`);
}

Internal Structure

src/
├── index.ts      Public exports
├── evaluate.ts   Graph walk + JSONata condition evaluation
└── types.ts      EvaluateResult, Result