feat(workflow): add ThreadReactor generic ReAct loop + migrate extract (Phase 1)

- New src/reactor/ module: createThreadReactor, createLlmFn, types
- Two-stage API: config (llm, systemPrompt, tools, toolHandler) + per-call (thread, input, schema)
- All tool failures are recoverable (returned to LLM as error message)
- Rewrite createExtract to use createThreadReactor
- Delete reactExtract old implementation
- Fix template test imports (START/END from runtime, validateWorkflowDescriptor from engine)

268 tests passing.

Refs #139, relates #140
This commit is contained in:
2026-05-09 02:15:38 +00:00
parent b53667a2aa
commit a7171f05f6
14 changed files with 604 additions and 398 deletions
@@ -1,11 +1,6 @@
import { describe, expect, test } from "bun:test";
import {
END,
type ModeratorContext,
type RoleStep,
START,
validateWorkflowDescriptor,
} from "@uncaged/workflow-runtime";
import { END, type ModeratorContext, type RoleStep, START } from "@uncaged/workflow-runtime";
import { validateWorkflowDescriptor } from "@uncaged/workflow";
import { buildDevelopDescriptor } from "../src/descriptor.js";
import { developModerator } from "../src/index.js";
import type { CommitterMeta, PlannerMeta } from "../src/roles/index.js";