Key Principle
Three platform/framework products — Rasa CALM, Salesforce Agentforce, and XState/Stately Agent — implement the dual-system architecture as reusable infrastructure. Each independently codified the same pattern, and Microsoft Research's StateFlow paper provides academic validation (13-28% higher success rates than ReAct at 3-5x lower cost).
Why This Matters
These frameworks represent the "infrastructure layer" of the thick-deterministic-core pattern. They serve as architecture validators: when Salesforce ($500M+ ARR), Rasa, and XState independently arrive at the same solution, it confirms the pattern is a structural necessity. Their specific implementation choices — and failures — reveal design decisions that any custom implementation must address.
Good Examples
Rasa CALM (Composite 7/10):
- Process Calling: long-running stateful workflows persisting across turns, fundamentally different from atomic tool calling. (p. 3, chunk 004)
- Fixed Command Grammar:
StartFlow,SetSlot,CancelFlow,SkipQuestion,Clarify,ChitChat,HumanHandoff. LLM can ONLY output these commands. (p. 3, chunk 004) - Dialogue Stack (LIFO): new flows push, completed flows pop, "digressions are free." (p. 4, chunk 004)
- ~15 built-in conversation repair patterns: correction, cancellation, resume, clarification, chitchat, handoff, skip. (pp. 3-4, chunk 004)
- Known limitations: list slots can't be filled via flow steps; conditions limited to slot-based expressions; prompt size scales with flow count requiring embedding-based retrieval for large systems. Not open source — requires paid license. (p. 3, chunk 004)
Salesforce Agentforce ($500M+ ARR, 9,500+ deals):
- Agent Script DSL with dual syntax: arrow syntax for deterministic code, pipe syntax for LLM prompt text. Prompt rewritten fresh each turn. (p. 4, chunk 004)
- "Available When" pattern: conditions completely remove tools from LLM visibility — "not just discouraged, but invisible." (pp. 4-5, chunk 004)
- Two distinct action types: deterministic-run (required validations, data fetching) vs. LLM-tool actions (user-initiated, context-dependent). (p. 5, chunk 004)
- Chain-of-Thought abandoned: prior Einstein Copilot used CoT but errors propagated irreparably. Now uses 8-12 specialized language models per query. (p. 4, chunk 004)
- Adoption reality: only 8,000 deals by mid-2025 against a target of 1 billion agents. (p. 4, chunk 004)
XState / Stately Agent (~27K GitHub stars):
- Two-bridge-tool pattern:
get_current_stateandtake_action— the minimal viable interface. An earlier single-tool attempt "fell over in short order." (p. 5, chunk 004) - Dynamic prompt/tool swapping on state transition. Guards are pure synchronous functions. (p. 5, chunk 004)
- Warning: @statelyai/agent framework appears semi-abandoned (last release September 2024, docs 404). The pattern is validated; the specific framework is not production-ready. (p. 5, chunk 004)
Microsoft Research StateFlow: State-specific focused prompts yielded 13-28% higher success rates than ReAct and 3-5x lower cost. SF_Agent variant uses separate LLM agents per state. (p. 5, chunk 004)
Counterpoints
- Framework Lock-in: Rasa requires paid license. Salesforce is a full platform commitment. XState's agent framework is abandoned. Building custom may be more maintainable than adopting a framework that constrains your architecture.
- The Instruction Bloat Lesson (Salesforce): "We had more faith in the LLM as an industry." Even the largest AI platform had to learn empirically that instruction-based control fails. (p. 5, chunk 004)
Key Quotes
"Deterministic Core, Agentic Shell" (p. 5, chunk 004) — Dave Mosher's named pattern
"don't tell the LLM not to use a tool — remove the tool from its prompt entirely" (p. 5, chunk 004) — Salesforce
"we had more faith in the LLM as an industry" (p. 5, chunk 004) — Salesforce
Rules of Thumb
- Two bridge tools (get state, take action) is the empirically validated minimal interface.
- Process calling > tool calling for multi-turn workflows.
- Use the dialogue stack pattern: push for new flows, pop on completion.
- Build conversation repair as a parallel system with ~15 meta-handlers.
- Evaluate frameworks for lock-in risk before adopting.
Related References
- The Dual-System Architecture Thesis - The pattern these frameworks implement
- LLM Constraint Patterns - The constraint patterns codified by these frameworks
- State Machine Design Patterns - Design patterns common across all implementations