From f93eade623e45a5f4242293e5209ce933ce55af7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 16 Aug 2026 07:56:26 +0000 Subject: [PATCH] docs: add limits and onEvent rows to Claude workflow conversion table MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The primitive mapping table in claude-workflow-conversion.md was missing two rows that matter when porting: - Session-level budget/concurrency cap → runWorkflow limits (maxAgents, concurrency, warnAgents, maxWallMs with their defaults) - Session progress/event stream → runWorkflow onEvent (lists all event types and notes observer errors are swallowed) Both concepts exist in Claude dynamic workflows (budget cap set by the caller session, event streaming via progress callbacks) but had no corresponding rig row, leaving porters to discover them by reading dynamic-workflows.md instead of the conversion table. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- skills/rig/references/claude-workflow-conversion.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/skills/rig/references/claude-workflow-conversion.md b/skills/rig/references/claude-workflow-conversion.md index 4d7929b..46c3ca5 100644 --- a/skills/rig/references/claude-workflow-conversion.md +++ b/skills/rig/references/claude-workflow-conversion.md @@ -30,6 +30,8 @@ primitives from its context instead of from globals. | `{ timeoutMs }` / `{ retries }` | `{ timeout }` on the call; `maxTurns` + `repair()` on the agent | rig retries are turn-based, not process-based | | `log(message)` | `log(message)` | Same | | `budget.total / spent() / remaining()` | `budget.total / spent() / remaining()` | rig meters **agent calls** (`limits.maxAgents`), not tokens | +| Session-level budget/concurrency cap | `runWorkflow(wf, { limits: { maxAgents, concurrency, warnAgents, maxWallMs } })` | `maxAgents` sets `budget.total`; `warnAgents` emits one advisory warning; defaults: concurrency=machine cores (2–16), maxAgents=1000, warnAgents=25 | +| Session progress / event stream | `runWorkflow(wf, { onEvent: (event) => ... })` | Receives `run_start`, `phase_start`, `agent_start`, `agent_done`, `agent_failed`, `log`, `warning`, `run_done`, `run_failed`; observer errors never affect the run | | `workflow(ref, args)` | `call.workflow(child, args, options?)` | Shares the limiter, budget, phase, and event stream | | open-ended `while` convergence loop | `until({ max, noProgressRounds }, step)` | Bounded; stops on `done`, after `max` rounds, or after `noProgressRounds` equal progress keys — prefer over unbounded loops | | top-level `return value` | `return value` from `body` | Same |