Binary
Usebunx smthrs <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. Entry files in this table are relative to the publishedsmthrs package; in the repository they live under packages/smithers/.
| Import path | Entry file | Purpose |
|---|---|---|
smthrs | ./src/index.js | Core API: createSmithers, openSmithersBackend, createExternalSmithersEngine, components, runWorkflow, renderMdx, errors |
smthrs/gateway | ./src/gateway.js | Gateway server primitives from @smthrs/server/gateway |
smthrs/gateway-client | ./src/gateway-client.js | Typed client helpers from @smthrs/gateway-client |
smthrs/gateway-react | ./src/gateway-react.js | React hooks and providers for gateway-backed UIs |
smthrs/gateway-ui | ./src/gateway-ui.js | Prebuilt React components for gateway-backed UIs (RunList, RunTree, ApprovalPanel, and more) |
smthrs/ui | ./src/ui.js | Shared shadcn-anatomy component library (Button, Card, Dialog, Tabs, StatusPill, and more) styled through the ui-styleguide theme tokens |
smthrs/ui/status | ./src/ui/status.js | The React-free status vocabulary (normalizeStatus, statusClass, statusColor, statusColors, formatStatus, isTerminalRunStatus) for CLI models, servers, and other non-React consumers that must not evaluate the component barrel |
smthrs/ui/adapters/markdown-editor | ./src/ui/adapters/markdown-editor.js | The shared MarkdownEditor WYSIWYG Milkdown Crepe editor, shipped behind an explicit heavy-dependency adapter subpath |
smthrs/ui/adapters/pierre-diff-view | ./src/ui-adapters-pierre-diff-view.js | Syntax-highlighted PierreDiffView diff surface (split/inline) over @pierre/diffs; opt-in adapter kept out of the base ui barrel so the heavy widget dependency is never pulled in transitively |
smthrs/ui/adapters/terminal | ./src/ui/adapters/terminal.js | The shared xterm.js-backed Terminal adapter, kept behind an explicit heavy-dependency subpath |
smthrs/ui/adapters/chart | ./src/ui/adapters/chart.js | Recharts-backed ChartContainer/tooltip/legend chart primitives with the validated series palette, behind an explicit heavy-dependency subpath |
smthrs/sandbox | ./src/sandbox.js | Sandbox provider contracts, bundles, and execution helpers |
smthrs/browser | ./src/browser.js | Portable browser runner, RuntimeAdapter, browser-safe workflow primitives, Map-backed default storage, and typed fail-closed host capabilities. See Browser runtime |
smthrs/telegram | ./src/telegram.js | Telegram Bot API helpers for serverless bots: webhook secret verification, update normalization, typed Bot API calls, retries, MarkdownV2 escaping, chunking, and test fakes |
smthrs/xstate | ./src/xstate.js | XState v5 machines as durable derived control state: useSmithersMachine folds a machine over output and signal rows each frame. See XState |
smthrs/cloudflare | ./src/cloudflare.js | Cloudflare Workers helpers: Sandbox provider, Durable Object SQLite descriptor, and D1 descriptor |
smthrs/microsandbox | ./src/microsandbox.js | Microsandbox provider: run child workflows in local hardware-isolated microVMs |
smthrs/daytona | ./src/daytona.js | Daytona sandbox provider: run child workflows in Daytona workspaces |
smthrs/vercel | ./src/vercel.js | Vercel Sandbox provider: run child workflows in Vercel sandboxes |
smthrs/aws | ./src/aws.js | AWS sandbox provider: run child workflows on ECS Fargate or CodeBuild with S3 bundle transport |
smthrs/gcp | ./src/gcp.js | GCP sandbox provider: run child workflows on Cloud Run Jobs with GCS bundle transport |
smthrs/jsx-runtime | ./src/jsx-runtime.js | JSX runtime (auto-resolved by jsxImportSource) |
smthrs/jsx-dev-runtime | ./src/jsx-runtime.js | JSX dev runtime (auto-resolved in dev mode) |
smthrs/tools | ./src/tools.js | Tool sandbox: defineTool, read, grep, bash, edit, write |
smthrs/testing | ./src/testing.js | Workflow test helpers: fakeAgent, renderWorkflow, renderPrompt, and runTask |
smthrs/server | ./src/server.js | HTTP server for run management and event streaming |
smthrs/observability | ./src/observability.js | OpenTelemetry traces, metrics, and Prometheus integration |
smthrs/mdx-plugin | ./src/mdx-plugin.js | Bun preload plugin for .mdx imports |
smthrs/dom/renderer | ./src/dom/renderer.js | Internal renderer (advanced use) |
smthrs/serve | ./src/serve.js | Single-workflow HTTP server via createServeApp |
smthrs/scorers | ./src/scorers.js | Eval scorers: createScorer, llmJudge, aggregateScores |
smthrs/evals | ./src/evals.js | Eval suites (issue #77): dataset parsing, case grading, evalAssertionScorer, and the readEvalSuite/writeEvalCaseRow store helpers the eval-suite-run seeded workflow uses |
smthrs/memory | ./src/memory.js | Cross-run facts, message history, processors, and metrics |
smthrs/openapi | ./src/openapi.js | Generate AI SDK tools from OpenAPI specs |
smthrs/control-plane | ./src/control-plane.js | Organization, project, billing, usage, secret-reference, and audit primitives |
smthrs/* | ./src/*.js | Wildcard-backed facade wrappers for additional public subpaths |
@smthrs/pi-plugin package. The old smthrs/pi-plugin and smthrs/pi-extension subpaths are no longer exported.
Workspace Packages
Most applications should import fromsmthrs. The workspace packages below are listed for advanced integrations, custom clients, framework development, and monorepo orientation. This table is a repository map, not the core feature inventory. Private apps and examples are implementation consumers and are not published Smithers features. See Feature inventory for the core product boundary.
| Package | Primary surface | Related docs |
|---|---|---|
smthrs | Public facade for workflow authoring, components, agents, tools, server helpers, memory, OpenAPI tools, scorers, and JSX runtime setup | This page, Types |
@smthrs/cli | CLI entrypoint, MCP server, local workflow pack, account registry commands, DevTools commands, cron, alerts, and server commands | CLI Overview, MCP Server |
@smthrs/cloudflare | Cloudflare Workers integration: Sandbox SDK provider, Durable Object SQLite descriptor, and D1 descriptor | Sandbox, Server |
@smthrs/aws | AWS sandbox provider: ECS Fargate and CodeBuild execution with S3 bundle transport | Sandbox, AWS |
@smthrs/daytona | Daytona sandbox provider: run child workflows in Daytona workspaces | Sandbox, Daytona |
@smthrs/gcp | GCP sandbox provider: Cloud Run Jobs execution with GCS bundle transport | Sandbox, GCP |
@smthrs/microsandbox | Microsandbox provider: run child workflows in local hardware-isolated microVMs | Sandbox, Microsandbox |
@smthrs/vercel | Vercel Sandbox provider: run child workflows in Vercel sandboxes | Sandbox, Vercel |
@smthrs/xstate | XState v5 machines as durable derived control state for workflows: pure folds over output and signal rows | XState |
@smthrs/accounts | Subscription and API-key account registry helpers: listAccounts, addAccount, removeAccount, getAccount, accountToProviderEnv | CLI Agents |
@smthrs/agent-eliza | elizaOS AgentRuntime harness for Smithers; opt-in package that owns the @elizaos/core dependency | SDK Agents |
@smthrs/agents | AI SDK and CLI agent adapters, CLI capability reports, agent contracts, and tool capability registry; its MCP adapter requires an explicit @modelcontextprotocol/sdk install | CLI Agents, SDK Agents |
@smthrs/automate-site | Private Cloudflare Worker deployment for the event-triggered durable workflows marketing site | Ecosystem |
@smthrs/bug-worker | Private Cloudflare Worker behind bug.smithers.sh that receives smithers bug reports and stores them in KV | CLI Overview |
@smthrs/components | JSX workflow components such as Task, Workflow, Approval, Sandbox, Timer, Signal, and control-flow components | Components |
@smthrs/control-plane | Durable organization, project, team, billing, usage, secret-reference, and audit primitives for hosted deployments | Control Plane |
@smthrs/db | SQLite/Drizzle adapter, table setup, run-state derivation, schema helpers, and output tables | Data Model, Run State |
@smthrs/ddd-site | Private Cloudflare Worker deployment for the Docs-Driven Development marketing site | Ecosystem |
@smthrs/devtools | Snapshot, tree, diff, node lookup, task collection, and DevTools run-store helpers behind the CLI inspect commands | Debugging, CLI Overview |
@smthrs/driver | Runtime driver contracts: RunOptions, RunResult, RunStatus, SmithersCtx, outputs, task runtime, interop, and child process helpers | Run Workflow, Execution Model |
@smthrs/electric-proxy | ElectricSQL shape proxy for cloud sync, scoped shape access, rate limits, stripped auth forwarding, and shape metrics | Production Hardening, Gateway |
@smthrs/engine | Workflow rendering/execution API: runWorkflow, Node/Bun platform layers, renderFrame, workflow, Smithers, signals, and Effect versioning | Embed the engine in Node, Run Workflow |
@smthrs/errors | Error definitions, known codes, JSON serialization, docs URLs, and type guards | Errors |
@smthrs/ferric-site | Private Cloudflare Worker deployment for the Operation Ferric site at ferric.smithers.sh (React’s runtime rewritten in Rust) | Ecosystem |
@smthrs/gateway | Stable Gateway RPC contracts, auth scopes, deployment metadata, and generated OpenAPI schema | Gateway, RPC |
@smthrs/gateway-client | Browser/client SDK for Gateway RPC requests and event streams | Gateway |
@smthrs/gateway-react | React hooks and root helpers for Gateway-backed UIs | Gateway |
@smthrs/gateway-ui | Prebuilt React components for Gateway-backed UIs, built on the gateway-react hooks | Gateway UI Components |
@smthrs/graph | Framework-neutral workflow graph model, XML nodes, task descriptors, and graph snapshots | Planner Internals, Types |
@smthrs/herdr | Herdr socket client and run surface: mirror a run into a herdr terminal workspace as an optional presentation and steering plane | Herdr |
@smthrs/init-site | Private Cloudflare Worker deployment for the interactive Smithers init wizard and workflow builder marketing site | Ecosystem |
@smthrs/integrations | External webhook and polling event sources, cursor storage, signature verification, and delivery helpers for workflow integrations | Integrations, Server |
@smthrs/jj-darwin-arm64 | Vendored jj (Jujutsu) binary for darwin-arm64; auto-installed as an optional dependency of @smthrs/vcs, not depended on directly | VCS Guide |
@smthrs/jj-darwin-x64 | Vendored jj (Jujutsu) binary for darwin-x64; auto-installed as an optional dependency of @smthrs/vcs, not depended on directly | VCS Guide |
@smthrs/jj-linux-arm64 | Vendored jj (Jujutsu) binary for linux-arm64; auto-installed as an optional dependency of @smthrs/vcs, not depended on directly | VCS Guide |
@smthrs/jj-linux-x64 | Vendored jj (Jujutsu) binary for linux-x64; auto-installed as an optional dependency of @smthrs/vcs, not depended on directly | VCS Guide |
@smthrs/jj-win32-x64 | Vendored jj (Jujutsu) binary for win32-x64; auto-installed as an optional dependency of @smthrs/vcs, not depended on directly | VCS Guide |
@smthrs/memory | Cross-run facts, message history, processors, namespaces, service layer, and metrics | Memory, Memory Quickstart |
@smthrs/monitor-site | Private Cloudflare Worker deployment for the full-screen Smithers TUI monitor marketing site | Ecosystem |
@smthrs/observability | Event types, logging, tracing, metrics, Prometheus rendering, and runtime observability layers | Events, Event Types |
@smthrs/openapi | OpenAPI parsing, operation extraction, AI SDK tool generation, schema conversion, and metrics | OpenAPI Tools, Tools |
@smthrs/kimi-benchmarks-site | Private Cloudflare Worker serving the Kimi K3 RoadmapBench report and its evidence bundle | Ecosystem |
@smthrs/openclaw-site | Private Cloudflare Worker deployment for the OpenClaw marketing site | Ecosystem |
@smthrs/pi-plugin | PI extension runtime, views, API wrappers, and workflow inspection integration | PI Integration |
@smthrs/plugins-site | Private Cloudflare Worker deployment for the Smithers plugins marketing site (Claude Code and Codex) | Ecosystem |
@smthrs/quota-dashboard | Private Electrobun desktop dashboard for subscription quota headroom across registered Claude Code and Codex seats | CLI Agents |
@smthrs/protocol | Shared contracts, small value types, and protocol-level errors for cross-package use | Types, Errors |
@smthrs/react-reconciler | Custom React reconciler, host context, DOM renderer, DevTools preload, driver, and JSX runtime internals | Why React, Render Frame |
@smthrs/review | Optional review CLI package for code review, PR posting, and story-form HTML walkthrough generation; install it explicitly before bunx smthrs review | CLI Overview |
@smthrs/sandbox | Sandbox bundle, execute, and transport primitives used by the Sandbox component | Sandbox |
@smthrs/scheduler | Pure workflow state machine: task state, scheduler decisions, retry/cache policies, wait reasons, and workflow session services | Workflow State, Suspend and Resume |
@smthrs/scorers | Scorer definitions, LLM judges, batch execution, aggregation, persistence schema, and metrics | Evals, Evals Quickstart |
@smthrs/self-healing-site | Private Cloudflare Worker deployment for the self-healing agent runs marketing site | Ecosystem |
@smthrs/server | HTTP, WebSocket, Gateway, cron, webhook, metrics, and single-workflow serving APIs | Server, Serve |
@smthrs/signal | Repository-only example deployment for The Smithers Signal and its daily CEO intel workflow; not part of the core Smithers product or init pack | Serverless |
@smthrs/smithers-ui | Private local-only UI app: the full run/approval/memory control surface, served by bunx smthrs ui --app against a local Gateway | Gateway UI Components |
@smthrs/status-site | Private Cloudflare Worker serving the public Smithers status page at status.smithers.sh | Ecosystem |
@smthrs/storybook-site | Private Cloudflare Worker serving the Storybook catalog for the shared UI component library at storybook.smithers.sh | UI Component Library |
@smthrs/telegram | Telegram Bot API helpers for serverless bots: webhook secret verification, update normalization, typed Bot API calls, retries, MarkdownV2 escaping, chunking, and test fakes | Telegram |
@smthrs/telegram-site | Private Cloudflare Worker deployment for the Smithers on Telegram marketing site, including the reference approval Mini App | Telegram, Ecosystem |
@smthrs/telegram-summary | Private Cloudflare app: Telegram Bot API ingestion, Kimi daily digests, D1 storage, and the telegram-summary.smithers.sh dashboard | Custom Workflow UI, CLI Overview |
@smthrs/testing | Workflow simulation, scripted agents, render/task helpers, matchers, and durability scenario harnesses; its optional smthrs peer is used only by the shipped watch-pack campaign and by runWorkflowScenario when runWorkflowFn is not supplied | Testing workflows, Render Frame |
@smthrs/time-travel | Snapshots, diffs, forks, replay, timelines, VCS tags, rewind locks/audits, and time-travel metrics | Time Travel, Time Travel Quickstart |
@smthrs/tool-context | AsyncLocalStorage tool-execution context (run/node/idempotency keys, durability snapshot hook) shared by the engine and smthrs without a dependency cycle | Execution Model |
@smthrs/tui | Optional full-screen OpenTUI + React single-run monitor for bunx smthrs up --interactive; install explicitly when that surface is needed | CLI Overview |
@smthrs/tui-ui | opentui leaf component library for the terminal UI (StatusPill, EmptyState, Keybar, and more): props-in/callbacks-out, mirroring the @smthrs/ui/gateway-ui vocabulary | CLI Overview |
@smthrs/ui-core | Isomorphic headless product layer shared by the web app and the terminal UI: pure domain modules, Platform DI interfaces, and view-model hooks, with zero DOM/opentui/react-dom | Custom Workflow UI |
@smthrs/ui-site | Private Cloudflare Worker deployment for the local Smithers app and AI concierge marketing site | Ecosystem |
@smthrs/ui | Shared shadcn-anatomy component library for Smithers UIs: Radix behavior plus CVA variant APIs, styled through the ui-styleguide theme tokens as CSS-in-TS strings | Custom Workflow UI |
@smthrs/ui-styleguide | Shared CSS tokens and layout primitives for Smithers browser UIs, including the operator console and workflow UI components | Gateway UI Components, Custom Workflow UI |
@smthrs/usage | Account quota and rate-limit usage reporting for Smithers providers | CLI Overview |
@smthrs/vcs | VCS discovery and jj workspace operations such as runJj, workspaceAdd, workspaceList, and pointer reverts | VCS Helpers, VCS Guide |
Usage
// Core API
import { createSmithers, openSmithersBackend, runWorkflow } from "smthrs";
// Tools
import { defineTool, bash, read, write } from "smthrs/tools";
// Workflow tests
import { fakeAgent, renderWorkflow } from "smthrs/testing";
// Scorers
import { createScorer, llmJudge } from "smthrs/scorers";
// MDX plugin (in preload.js)
import { mdxPlugin } from "smthrs/mdx-plugin";
// Control-plane primitives
import { ControlPlaneStore } from "smthrs/control-plane";
TypeScript Configuration
JSX Import Source
{
"compilerOptions": {
"jsx": "react-jsx",
"jsxImportSource": "smthrs"
}
}
smthrs/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 thesmthrs monorepo, the root tsconfig.json defines path aliases so source imports resolve without a build step:
"paths": {
"smthrs": ["./packages/smithers/src/index.js"],
"smthrs/jsx-runtime": ["./packages/smithers/src/jsx-runtime.js"],
"smthrs/jsx-dev-runtime": ["./packages/smithers/src/jsx-runtime.js"],
"smthrs/tools": ["./packages/smithers/src/tools.js"],
"smthrs/*": [
"./packages/smithers/src/*.js",
"./packages/smithers/src/*/index.js"
],
"smthrs/scorers": ["./packages/scorers/src/index.js"],
"@smthrs/agents": ["./packages/agents/src/index.js"],
"@smthrs/gateway-client": ["./packages/gateway-client/src/index.ts"],
"@smthrs/gateway-react": ["./packages/gateway-react/src/index.ts"],
"@smthrs/pi-plugin": ["./packages/pi-plugin/src/index.ts"],
"@smthrs/server": ["./packages/server/src/index.js"]
// The root tsconfig includes the same style of alias for each workspace package.
}
smithers-monorepo; smthrs resolves to packages/smithers.
End users do not need path aliases, only framework developers do. Installing smthrs as a dependency lets Node/Bun module resolution handle import paths automatically.
Local Type Root Shims
"typeRoots": ["./packages/smithers/src/types", "./node_modules/@types"]
./packages/smithers/src/types directory contains ambient type declarations that fill gaps in third-party packages. One shim ships today:
react-dom-server.d.ts— Declares thereact-dom/servermodule so TypeScript doesn’t error when server-side rendering types are referenced.
@types/react-dom to devDependencies instead of relying on this shim.
Bun Configuration
Runtime Preload
# bunfig.toml
preload = ["./preload.js"]
.mdx files can be imported as JSX components at runtime. See MDX Prompts for details.
Test Configuration
[test]
root = "."
preload = ["./preload.js"]
| Key | Value | Purpose |
|---|---|---|
root | . | Bun discovers test files from the repository root |
preload | ["./preload.js"] | Registers the MDX plugin for test files so .mdx imports work in tests |
[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 rootpackage.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 smthrs to examples-entry.js |
typecheck:evals | tsc -p evals/tsconfig.json --noEmit | Type-check the agent-fluency eval suite under evals/ against its own config |
lint | node scripts/lint.mjs && node scripts/format.mjs --check | Lint package source and tests with oxlint, then verify oxfmt formatting (cross-platform glob expansion) |
lint:fix | node scripts/lint.mjs --fix --fix-suggestions && node scripts/format.mjs --write | Apply supported oxlint fixes, then reformat with oxfmt |
format | node scripts/format.mjs --write | Format first-party JS/TS with oxfmt using .oxfmtrc.json |
format:check | node scripts/format.mjs --check | Fail if any file would change under pnpm format (the CI gate) |
cli | bun run apps/cli/src/index.js | Run the local development CLI entrypoint |
generate:init-pack | bun scripts/generate-workflow-pack.ts | Regenerate the local workflow pack used by bunx smthrs init |
sota:gen | bun scripts/generate-sota.ts | Render the SOTA model registry (docs/data/sota-models.json) into its docs page and CLI module |
sota:research | bun scripts/sota-research.ts | Research whether new SOTA models shipped and rewrite the registry if so (used by the daily cron) |
test | node scripts/check-single-effect-version.mjs && node scripts/check-npm-dedupe.mjs && node scripts/check-dependency-boundaries.mjs && node scripts/check-installed-footprint.mjs && node scripts/check-ui-architecture.mjs && node --test scripts/check-ui-architecture.test.mjs && node scripts/check-no-direct-db-access.mjs && node scripts/check-local-smithers.mjs && node --test scripts/check-local-smithers.test.mjs && node scripts/check-docs.mjs && node scripts/check-llms.mjs && node scripts/check-sota.mjs && node scripts/check-dts.mjs && node scripts/check-smithers-test-script.mjs && node --test scripts/qualify-nanocodex-release.test.mjs && bun test scripts/publish-next.test.mjs scripts/release-next-gate.test.mjs scripts/bump.test.mjs scripts/run-workspace-tests-timeout.test.mjs && pnpm -r --no-bail test | Run UI architecture, docs/config, dependency, installed-footprint, direct DB access, llms, SOTA registry, declaration freshness, and Nanocodex release qualification guards; run root script tests and every package test script (no-bail so every failing package is reported) |
coverage | node scripts/coverage.mjs | Generate a test coverage report across the workspace |
check:effect | node scripts/check-single-effect-version.mjs | Verify the workspace resolves a single Effect version |
check:npm-dedupe | node scripts/check-npm-dedupe.mjs | Verify published dependency versions are deduplicated |
check:deps | node scripts/check-dependency-boundaries.mjs && node scripts/check-installed-footprint.mjs | Verify package dependency boundaries and the installed-footprint budget |
check:footprint | node scripts/check-installed-footprint.mjs | Verify the init pack and packed CLI stay under the installed-footprint budget |
check:ui-architecture | node scripts/check-ui-architecture.mjs | Verify UI package architecture boundaries against the checked-in baseline |
test:ui-architecture | node --test scripts/check-ui-architecture.test.mjs | Run the UI architecture guard self-tests |
check:db-access | node scripts/check-no-direct-db-access.mjs | Verify direct run/store DB access remains confined to the tracked issue #470 baseline |
check:local-smithers | node scripts/check-local-smithers.mjs | Verify internal scripts execute the working-tree CLI |
test:local-smithers | node --test scripts/check-local-smithers.test.mjs | Run the working-tree CLI invocation guard tests |
check:docs | node scripts/check-docs.mjs | Verify documentation style and API drift guards |
check:llms | node scripts/check-llms.mjs | Verify generated llms docs are current |
check:sota | node scripts/check-sota.mjs | Verify the SOTA registry’s generated docs page and CLI module match docs/data/sota-models.json |
check:dts | node scripts/check-dts.mjs | Verify per-file .d.ts declarations are freshly regenerated from source |
fetch:jj | node scripts/fetch-jj-binaries.mjs | Fetch vendored jj binaries for supported platforms |
docs:components | node scripts/generate-component-source.mjs | Embed composite component source as tabs in their docs pages |
docs:llms | bun scripts/generate-llms.ts && bun scripts/optimize-llms-full.ts | Regenerate llms-core.txt and llms-full.txt |
docs | cd docs && bunx mintlify dev | Start the Mintlify docs dev server for local preview |
release:content | bun apps/cli/src/index.js up .smithers/workflows/release-content.tsx | Run the release-content workflow (changelog, tweet thread, blog) in dry-run mode |
release:content:approve | bun apps/cli/src/index.js up .smithers/workflows/release-content.tsx --input '{"dryRun":false,"publish":false}' | Generate release content for real but stop before publishing |
release:content:publish | bun apps/cli/src/index.js up .smithers/workflows/release-content.tsx --input '{"dryRun":false,"publish":true}' | Generate and publish the release content |
release:workflow | bun apps/cli/src/index.js up .smithers/workflows/release.tsx | Run the end-to-end release workflow |
release:workflow:gated | bun apps/cli/src/index.js up .smithers/workflows/release.tsx --input '{"requireMarketingContent":true}' | Run the release workflow but require marketing content before publishing |
marketing:thread | bun apps/cli/src/index.js up .smithers/workflows/release-content.tsx --input '{"channels":{"changelog":false,"tweetThread":true,"blogPost":false},"skip":{"changelog":true,"blogPost":true,"publishX":true,"publishBlog":true,"publishChangelog":true}}' | Generate just the tweet thread in dry-run mode, skipping changelog and blog |
marketing:thread:write | bun apps/cli/src/index.js up .smithers/workflows/release-content.tsx --input '{"dryRun":false,"publish":true,"allowUnreviewedPublish":true,"channels":{"changelog":false,"tweetThread":true,"blogPost":false},"skip":{"changelog":true,"blogPost":true,"approval":true,"publishX":true,"publishBlog":true,"publishChangelog":true}}' | Generate and publish just the tweet thread, skipping changelog, blog, and the approval gate |
version | node scripts/bump.mjs | Bump package versions using the release helper |
release | node scripts/publish.mjs | Publish packages using the release helper |
sandbox:up | bun scripts/sandbox.ts up | Create a disposable GCP sandbox VM and open an SSH session into it |
sandbox:down | bun scripts/sandbox.ts down | Delete the sandbox VM created by sandbox:up |
For end-user projects
When scaffolding your own project (withbunx smthrs init or manually), add a typecheck script:
{
"scripts": {
"typecheck": "tsc --noEmit"
}
}
package.json example.