feat(cli): land the @briven/cli tarball (tsup bundling + sub-exports + smoke test) #10

Merged
flndrn-dev merged 9 commits from feat/cli-bundling into main 2026-04-25 12:42:16 +02:00
flndrn-dev commented 2026-04-25 12:02:24 +02:00 (Migrated from github.com)

Summary

Lands a publishable @briven/cli tarball.

  • tsup-based bundling, three ESM entries (CLI binary + @briven/cli/schema + @briven/cli/server)
  • Three workspace packages (@briven/schema, @briven/shared, @briven/config) inlined via noExternal so the tarball has no workspace: references
  • Fixed a path bug in bin/briven.js where the tsx dev fallback masked a broken production import path
  • New CI job cli-tarball-smoke that builds, packs, installs the tarball into a fresh temp dir, and runs briven --help / --version / unknown command + verifies the public sub-exports import cleanly

Commits

  • chore(cli): add tsup + promote zod/ulid to direct deps
  • feat(cli): tsup config with three ESM entries + briven-workspace inlining
  • feat(cli): add @briven/cli/schema + @briven/cli/server public sub-exports
  • feat(cli): reshape package.json for bundled tarball (exports, bin, scripts)
  • fix(cli): tsconfig tweaks for tsup DTS emission on TS 6
  • fix(cli): bin -> dist/cli/index.js + tarball smoke test in CI

Test plan

  • pnpm --filter @briven/cli build — produces dist/cli/index.js, dist/schema/index.js, dist/server/index.js with .d.ts siblings
  • pnpm --filter @briven/cli test — 3 unit tests pass
  • pnpm --filter @briven/cli typecheck — clean
  • pnpm --filter @briven/cli pack:tarball — produces dist-pack/briven-cli-0.1.0.tgz (~42 KB, 12 files)
  • pnpm --filter @briven/cli test:tarball — full smoke: install in temp dir → briven --help / --version / unknown command (exit 1) → all three sub-exports import cleanly
  • CI job cli-tarball-smoke added, runs after build

Notes

  • dist-pack/ and .claude/launch.json added to .gitignore so they stop appearing as untracked
  • No briven package published yet — this PR only makes the tarball reproducible. Publishing to npm is a separate decision (needs npm org, version policy, release flow)

🤖 Generated with Claude Code

## Summary Lands a publishable `@briven/cli` tarball. - tsup-based bundling, three ESM entries (CLI binary + `@briven/cli/schema` + `@briven/cli/server`) - Three workspace packages (`@briven/schema`, `@briven/shared`, `@briven/config`) inlined via `noExternal` so the tarball has no `workspace:` references - Fixed a path bug in `bin/briven.js` where the tsx dev fallback masked a broken production import path - New CI job `cli-tarball-smoke` that builds, packs, installs the tarball into a fresh temp dir, and runs `briven --help` / `--version` / unknown command + verifies the public sub-exports import cleanly ## Commits - `chore(cli): add tsup + promote zod/ulid to direct deps` - `feat(cli): tsup config with three ESM entries + briven-workspace inlining` - `feat(cli): add @briven/cli/schema + @briven/cli/server public sub-exports` - `feat(cli): reshape package.json for bundled tarball (exports, bin, scripts)` - `fix(cli): tsconfig tweaks for tsup DTS emission on TS 6` - `fix(cli): bin -> dist/cli/index.js + tarball smoke test in CI` ## Test plan - [x] `pnpm --filter @briven/cli build` — produces `dist/cli/index.js`, `dist/schema/index.js`, `dist/server/index.js` with `.d.ts` siblings - [x] `pnpm --filter @briven/cli test` — 3 unit tests pass - [x] `pnpm --filter @briven/cli typecheck` — clean - [x] `pnpm --filter @briven/cli pack:tarball` — produces `dist-pack/briven-cli-0.1.0.tgz` (~42 KB, 12 files) - [x] `pnpm --filter @briven/cli test:tarball` — full smoke: install in temp dir → `briven --help` / `--version` / unknown command (exit 1) → all three sub-exports import cleanly - [x] CI job `cli-tarball-smoke` added, runs after `build` ## Notes - `dist-pack/` and `.claude/launch.json` added to `.gitignore` so they stop appearing as untracked - No `briven` package published yet — this PR only makes the tarball reproducible. Publishing to npm is a separate decision (needs npm org, version policy, release flow) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No description provided.