Monorepo for @parallel-web npm packages.
@parallel-web/ai-sdk-tools- AI SDK tools for Parallel Web@parallel-web/opencode-plugin- Opencode plugin for Parallel Web@parallel-web/pi-extension- pi agent extension for Parallel Web@parallel-web/oauth- Internal, unpublished shared PKCE OAuth helper. Bundled into the opencode plugin and pi extension at build time (noExternal), so it is never installed by consumers and is intentionally markedprivate.
This is a pnpm monorepo. Make sure you have pnpm installed:
npm install -g pnpmInstall dependencies:
pnpm install# Build all packages
pnpm build
# Run tests
pnpm test
# Run tests in CI mode (no watch)
pnpm test:ci
# Lint
pnpm lint
# Fix linting issues
pnpm lint:fix
# Format code
pnpm format
# Check formatting
pnpm format:check
# Type check
pnpm typecheck
# Clean build artifacts
pnpm cleanTo run a command in a specific package:
pnpm --filter @parallel-web/ai-sdk-tools build
pnpm --filter @parallel-web/ai-sdk-tools test- Create a new directory in
packages/ - Add a
package.jsonwith the package name@parallel-web/package-name - Set up TypeScript config extending from root
- Add build configuration (tsup)
- Implement your package
Each package is versioned, tagged, and released independently. Releases are PR-driven:
a local script opens a version-bump PR, and merging it publishes to npm. See
PUBLISHING.md for the full guide.
git checkout main && git pull
# Release candidate (1.2.0 -> 1.3.0-rc.1, or bump an existing rc)
./scripts/release.sh ai-sdk-tools rc
# Promote the current RC to stable (1.3.0-rc.2 -> 1.3.0)
./scripts/release.sh ai-sdk-tools stable
# Explicit version
./scripts/release.sh opencode-plugin 2.0.0The script bumps the version, opens a release/<package>-vX.Y.Z PR, and on merge the
Release workflow (.github/workflows/release.yml) builds/tests the package, publishes to
npm, and creates the per-package git tag <package>-vX.Y.Z plus a GitHub Release.
- RC support:
x.y.z-rc.Nversions publish under thercnpm dist-tag; stable versions underlatest. Sonpm install @parallel-web/<package>gets the latest stable, and@rcopts into pre-releases. - Per-package tags: tags are namespaced per package and never collide.
- Trusted publishing: uses npm OIDC trusted publishing — no npm token is stored in the repo.
MIT