Documentation Index
Fetch the complete documentation index at: https://smithers.sh/llms.txt
Use this file to discover all available pages before exploring further.
0.20.0
0.20.0 is a minor release with one breaking change. Since 0.19.0, the Effect authoring surface has been rebuilt around first-class graph values:Smithers.workflow and Smithers.fragment replace the previous
Smithers.createWorkflow / Smithers.createComponent callback-builder API.
The runtime, persistence model, scheduler, and JSX surface are unchanged.
Effect API
The 0.19.0 callback-builder API is gone. The new shape is a typed workflow handle whose constructors return ordinary graph values:-
First-class graph values.
G.step,G.approval,G.sequence,G.parallel,G.match,G.branch,G.loop,G.worktree, andG.scopeall return values you can export, return from a function, or compose with other graph values. No callback scope, no builder token. -
One reuse mechanism.
G.scope(instanceId, fragment)applies a durable ID prefix to every step insidefragment, so the same fragment can be mounted under multiple scopes without collision. The previouscreateComponent/buildWithPrefixmachinery is removed; reuse is now plain functions returning graph values plusG.scopefor multi-mount. -
Cross-workflow fragments via
Smithers.fragment(inputSchema). Returns the same constructors as a workflow handle minus.from, so fragments can be authored once and mounted into any matching workflow. -
G.worktreeandG.branchare now reachable from the Effect surface. They were already in the underlying graph union but weren’t exposed to Effect-API authors; both now have ordinary constructors. -
.pipe()on every graph value. Left-to-right function application matchingEffect.pipe. No pipeable combinators ship in this release; the method is forward-compat for future data-last forms. -
Compilation is internal but inspectable.
G.from(graph)returns{ execute, node }, wherenodeis the compiledBuilderNodetree. Useful for tooling and tests; the runtime path is unchanged. -
Memoization is part of the contract. Compilation is keyed on
(activeScopePrefix, graphValue). The same step value referenced as both a child and aneedssource compiles to one handle. The same fragment mounted under two scopes produces two distinct handle sets.
Breaking change
Smithers.createWorkflow, Smithers.createComponent, the .build(($) => …)
callback, and the WorkflowDefinitionBuilder / ComponentDefinition /
ComponentDefinitionBuilder types are removed.
Migration is mechanical:
- Lift step and approval declarations out of the
.buildcallback. - Replace
$.xwithG.x, whereG = Smithers.workflow(opts). - Replace the trailing
return $.sequence(...)withexport default G.from(G.sequence(...)). - Replace
createComponent(name).build(($, params) => ...)with a function returning a graph fragment, mounted withG.scope(instanceId, fragment(params)).
research/effect-combinator-api.md.
Docs
- New “Background agents are here” article in the Learn group. A direct quote-and-respond to the recent debate over background agents, framing Smithers as a substrate for production-ready agentic workflows rather than a wrapper around any single agent runtime. Iterated through several rewrites and is linked from the introduction under the “But… Why?” section.
-
Effect API page rewritten end-to-end to use the new graph-value
surface. Covers steps, dependencies, control flow (
sequence,parallel,match,branch,loop,worktree),G.scope-based reuse,Smithers.fragmentfor cross-workflow fragments, the.pipe()hook, and operational notes (idempotency, signals, retry, cache). - Why React? page reorganized into the “But… Why?” section of the navigation alongside the new background-agents article.
LLM bundles
-
llms-effect.txtis now generated.scripts/generate-llms.tspicks up the rewritten Effect overview as its own opt-in fragment and bundles it intollms-full.txt. The index inllms.txtpoints at it. -
Regenerated
llms-*.txt. All bundles refreshed for the new Effect API surface and the updated articles.