macp package.json had a pre-existing exports map with default: './src/index.ts'
which broke any consumer that loaded the compiled mosaic CLI via node (mosaic
--help, mosaic <cmd> --help). Every other workspace package points at
./dist/index.js — align macp with the rest.
Adds packages/mosaic/src/cli-smoke.spec.ts — the CU-05-10 integration smoke
test that asserts every register<Name>Command from the eight sub-packages
(auth, brain, forge, log, macp, memory, queue, storage) plus config attaches a
top-level command and that its help output renders without throwing. Running
this locally after the macp fix confirms mosaic --help and mosaic <cmd> --help
exit 0 for all nine commands.
Part of mission cli-unification-20260404.
Publish pipeline:
- Add publish-npm step to .woodpecker/publish.yml — publishes all
@mosaic/* packages to Gitea npm registry on main push/tag
- Requires gitea_npm_token Woodpecker secret (package:write scope)
- publish-npm runs after build, parallel with Docker image builds
- pnpm publish resolves workspace:* to concrete versions automatically
Package configuration:
- All 20 packages versioned at 0.0.1-alpha.1
- publishConfig added to all packages (Gitea registry, public access)
- files field added to all packages (ship only dist/)
- @mosaic/forge includes pipeline/ assets in published package
Meta package (@mosaic/mosaic):
- Now depends on @mosaic/forge, @mosaic/macp, @mosaic/prdy,
@mosaic/quality-rails, @mosaic/types
- npm install @mosaic/mosaic pulls in the standalone framework
Build fixes:
- Fix forge and macp tsconfig rootDir: '.' -> 'src' so dist/index.js
resolves correctly (was dist/src/index.js)
- Exclude __tests__ and vitest.config from build includes
- Clean stale build artifacts from old rootDir config
Required Woodpecker secret:
woodpecker secret add mosaic/mosaic-stack \
--name gitea_npm_token --value '<token>' \
--event push,manual,tag