You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Migrate the web runner, mcpdo and TUI bundles from tsup to tsdown #2797
Follow-up to #1492, which recommended migrating and moved clients/cli to tsdown as the prototype.
Remaining builds
In the order recommended by docs/tsdown-migration.md:
Web runner:clients/web/tsup.runner.config.ts. A single entry with no JSX: the CLI change applied to a different file.
mcpdo:clients/mcpdo/tsup.config.ts. Two entries (mcp-bin, mcpdod), so shared chunks. Check how src/daemon/ensure.ts resolves mcpdod.js against Rolldown's chunk naming.
TUI:clients/tui/tsup.config.ts. JSX goes to inputOptions.transform.jsx, and ink-form / ink-scroll-view go to deps.alwaysBundle. __tests__/tsupConfig.test.ts imports tsup's Options type and needs rewriting against tsdown's config type, keeping its React-externals assertions.
Per client
deps.neverBundle built from a const EXTERNALS = [...] expanded with subpath patterns. A bare string matches the exact specifier only, so subpaths are otherwise inlined silently.
fixedExtension: false and outputOptions.comments: { jsdoc: false }, as in clients/cli/tsdown.config.ts.
Drop tsup. Drop the esbuild override / allowScripts entries only once npm ls esbuild is empty in that install; web probably keeps them for Vite.
Update BUNDLED_CLIENTS in scripts/verify-bundle-externals.mjs, the external-list paths in AGENTS.md and scripts/sdk-watch.mjs, and the config name in the client's tsconfig include.
Acceptance
No tsup dependency remains in any client.
verify:bundle-externals, each client's test:coverage and local:gate pass.
Each bundle emits the same set of bare imports as before.
Activity
cliffhall commentedon Oct 25, 2026
Shipped in #2807.