How tthandi/parabank-agentic-workflow works
CUA automates ParaBank workflows by letting an LLM discover a browser procedure, recording that procedure as a typed, versioned capability, then replaying it deterministically without an LLM. The principal path is user request → CLI/discovery → live browser actions → recorded capability; later callers invoke cataloged capabilities through replay and receive structured outcomes. Safety checks, redaction, logging, and human handoff support both discovery and replay. The README documents catalog invocation, approval, and replay statistics; source evidence for some of those links is limited to module references, so the graph omits uncertain call details.
Main entry points: executor.py Replay executor · loop.py Discovery loop · cli.py CLI entrypoints · store.py Artifact store
Components 24
Discovery and surface
- CLI entrypoints
src/cua/cli.py - Discovery loop
src/cua/agent/loop.py - LLM decider
src/cua/agent/llm.py - Browser surface
src/cua/surface/browser.py
Capability lifecycle
- Artifact recorder
src/cua/artifact/recorder.py - Run transcript
src/cua/artifact/transcript.py - Capability schema
src/cua/artifact/schema.py - Artifact store
src/cua/artifact/store.py - Versioned capabilities
capabilities
Replay and catalog
- Tool catalog
src/cua/catalog/registry.py - Replay executor
src/cua/replay/executor.py - Locator fallback
src/cua/replay/locator.py - Replay outcomes
src/cua/replay/outcomes.py - Replay stats and approval
src/cua/catalog/stats.py
Safety and oversight
- Allowlist checks
src/cua/safety/allowlist.py - Risk policy
src/cua/safety/policy.py - Sensitive-data redaction
src/cua/safety/redact.py - Human handoff
src/cua/escalation/handoff.py - Intervention request
src/cua/escalation/intervention.py - Operator interface
src/cua/escalation/operator_mock.py
Run evidence
- Structured run logger
src/cua/obslog/logger.py - Run evidence
evidence
Other components
- Operator or agent
- ParaBank app
Connections 38
- Operator or agent → CLI entrypoints: starts run
README.md - CLI entrypoints → Discovery loop: starts discovery
src/cua/cli.py - Discovery loop → LLM decider: requests decisions
src/cua/agent/loop.py - Discovery loop → Browser surface: observes and acts
src/cua/agent/loop.py - LLM decider → Browser surface: uses observations
- Browser surface → ParaBank app: drives UI
README.md - Discovery loop → Run transcript: records steps
src/cua/agent/loop.py - Artifact recorder → Run transcript: distills
src/cua/artifact/recorder.py - Artifact recorder → Capability schema: builds capability
src/cua/artifact/recorder.py - CLI entrypoints → Artifact recorder: records capability
src/cua/cli.py - Artifact store → Capability schema: loads and validates
src/cua/artifact/store.py - Artifact store → Versioned capabilities: reads and writes
src/cua/artifact/store.py - CLI entrypoints → Artifact store: loads capability
src/cua/cli.py - CLI entrypoints → Tool catalog: lists and invokes
src/cua/cli.py - Tool catalog → Artifact store: loads saved tools
src/cua/catalog/registry.py - Operator or agent → Tool catalog: selects capability
README.md - CLI entrypoints → Replay executor: starts replay
src/cua/cli.py - Replay executor → Browser surface: executes steps
src/cua/replay/executor.py - Replay executor → Locator fallback: resolves targets
src/cua/replay/executor.py - Replay executor → Replay outcomes: classifies result
src/cua/replay/executor.py - CLI entrypoints → Replay stats and approval: records replay stats
src/cua/cli.py - Replay stats and approval → Artifact store: updates capability
src/cua/catalog/stats.py - Replay executor → Allowlist checks: checks actions
src/cua/replay/executor.py - Discovery loop → Allowlist checks: checks actions
src/cua/agent/loop.py - Replay executor → Risk policy: checks risk
src/cua/replay/executor.py - Discovery loop → Sensitive-data redaction: scrubs sensitive data
src/cua/agent/loop.py - Replay executor → Sensitive-data redaction: scrubs run data
src/cua/replay/executor.py - Discovery loop → Human handoff: cedes control
src/cua/agent/loop.py - Replay executor → Human handoff: cedes control
src/cua/replay/executor.py - Human handoff → Browser surface: transfers control
src/cua/escalation/handoff.py - Discovery loop → Intervention request: raises request
src/cua/agent/loop.py - Replay executor → Intervention request: raises request
src/cua/replay/executor.py - Operator interface → Intervention request: handles requests
src/cua/escalation/operator_mock.py - Discovery loop → Structured run logger: logs run
src/cua/agent/loop.py - Replay executor → Structured run logger: logs run
src/cua/replay/executor.py - Structured run logger → Sensitive-data redaction: scrubs log data
src/cua/obslog/logger.py - Structured run logger → Run evidence: writes run logs
README.md - Intervention request → Run evidence: persists request
src/cua/escalation/intervention.py