Documentation Index
Fetch the complete documentation index at: https://smithers.sh/llms.txt
Use this file to discover all available pages before exploring further.
Build and package configuration shipped with smithers-orchestrator. Use it when setting up a new project, debugging import resolution, or understanding why your tsconfig.json needs specific options.
Binary
Use bunx smithers-orchestrator <command> for CLI commands. The repository root keeps a private development bin that points at apps/cli/src/index.js; application code should import from the package exports below.
Subpath Exports
Use the subpath form to import only the surface you need.
| Import path | Entry file | Purpose |
|---|
smithers-orchestrator | ./src/index.js | Core API: createSmithers, components, runWorkflow, renderMdx, errors |
smithers-orchestrator/gateway | ./src/gateway.js | Gateway client for remote workflow coordination |
smithers-orchestrator/jsx-runtime | ./src/jsx-runtime.js | JSX runtime (auto-resolved by jsxImportSource) |
smithers-orchestrator/jsx-dev-runtime | ./src/jsx-runtime.js | JSX dev runtime (auto-resolved in dev mode) |
smithers-orchestrator/tools | ./src/tools.js | Tool sandbox: defineTool, read, grep, bash, edit, write |
smithers-orchestrator/server | ./src/server.js | HTTP server for run management and event streaming |
smithers-orchestrator/observability | ./src/observability.js | OpenTelemetry traces, metrics, and Prometheus integration |
smithers-orchestrator/pi-plugin | ./src/pi-plugin.js | PI CLI agent plugin |
smithers-orchestrator/pi-extension | ./src/pi-extension.js | PI extension UI bridge |
smithers-orchestrator/mdx-plugin | ./src/mdx-plugin.js | Bun preload plugin for .mdx imports |
smithers-orchestrator/dom/renderer | ./src/dom/renderer.js | Internal renderer (advanced use) |
smithers-orchestrator/serve | ./src/serve.js | Single-workflow HTTP server via createServeApp |
smithers-orchestrator/scorers | ./src/scorers.js | Eval scorers: createScorer, llmJudge, aggregate |
smithers-orchestrator/memory | ./src/memory.js | Cross-run memory storage and recall |
smithers-orchestrator/openapi | ./src/openapi.js | Generate AI SDK tools from OpenAPI specs |
Usage
// Core API
import { createSmithers, runWorkflow } from "smithers-orchestrator";
// Tools
import { defineTool, bash, read, write } from "smithers-orchestrator/tools";
// Scorers
import { createScorer, llmJudge } from "smithers-orchestrator/scorers";
// MDX plugin (in preload.ts)
import { mdxPlugin } from "smithers-orchestrator/mdx-plugin";
TypeScript Configuration
JSX Import Source
{
"compilerOptions": {
"jsx": "react-jsx",
"jsxImportSource": "smithers-orchestrator"
}
}
This tells TypeScript to resolve JSX transforms from smithers-orchestrator/jsx-runtime instead of react/jsx-runtime. The Smithers JSX runtime re-exports React’s runtime, so component behavior is identical — this setting enables proper type resolution for Smithers workflow components.
See JSX Installation for the complete TypeScript setup.
Path Aliases
When developing inside the smithers-orchestrator monorepo, the root tsconfig.json defines path aliases so source imports resolve without a build step:
"paths": {
"smithers-orchestrator": ["./packages/smithers/src/index.js"],
"smithers-orchestrator/jsx-runtime": ["./packages/smithers/src/jsx-runtime.js"],
"smithers-orchestrator/jsx-dev-runtime": ["./packages/smithers/src/jsx-runtime.js"],
"smithers-orchestrator/tools": ["./packages/smithers/src/tools.js"],
"smithers-orchestrator/*": [
"./packages/smithers/src/*.js",
"./packages/smithers/src/*/index.js"
],
"smithers-orchestrator/scorers": ["./packages/scorers/src/index.js"]
}
The root package is a private smithers-monorepo; smithers-orchestrator resolves to packages/smithers.
End users do not need path aliases — only framework developers do. Installing smithers-orchestrator as a dependency lets Node/Bun module resolution handle import paths automatically.
Local Type Root Shims
"typeRoots": ["./src/types", "./node_modules/@types"]
The ./src/types directory contains ambient type declarations that fill gaps in third-party packages. One shim ships today:
react-dom-server.d.ts — Declares the react-dom/server module so TypeScript doesn’t error when server-side rendering types are referenced.
End users should add @types/react-dom to devDependencies instead of relying on this shim.
Bun Configuration
Runtime Preload
# bunfig.toml
preload = ["./preload.ts"]
The preload script registers the MDX esbuild plugin with Bun’s bundler so .mdx files can be imported as JSX components at runtime. See MDX Prompts for details.
Test Configuration
[test]
root = "./tests"
preload = ["./preload.ts"]
| Key | Value | Purpose |
|---|
root | ./tests | Bun discovers test files from this directory instead of scanning the entire project |
preload | ["./preload.ts"] | Registers the MDX plugin for test files so .mdx imports work in tests |
The test preload is separate from the runtime preload. Both point to the same file, but Bun’s [test] section only applies when running bun test. Without it, tests that import .mdx files fail with a module resolution error.
npm Scripts
Defined in the root package.json for development:
| Script | Command | Purpose |
|---|
typecheck | tsc --noEmit | Type-check the src/ and tests/ trees against tsconfig.json |
typecheck:examples | tsc -p examples/tsconfig.json --noEmit | Type-check example files against a separate config that maps smithers-orchestrator to examples-entry.js |
lint | oxlint ... | Lint source, test, and CLI code with oxlint |
test | bash ./scripts/run-all-tests.sh | Run the full test suite |
e2e | playwright test | Run Playwright end-to-end tests against the docs site and integration surfaces |
docs | cd docs && bunx mintlify dev | Start the Mintlify docs dev server for local preview |
For end-user projects
When scaffolding your own project (with smithers init or manually), add a typecheck script:
{
"scripts": {
"typecheck": "tsc --noEmit"
}
}
See Production Project Structure for a complete user-project package.json example.