Contributing

Full details live in CONTRIBUTING.md and AGENTS.md (the latter aimed at AI coding agents, but useful orientation for anyone). This page is the short version.

Setup

npm install                                   # installs the javascript/ workspace too
cd python && pip install -e ".[dev,webhook]"

Tests

npm test --workspace=javascript                 # Node.js client
cd python && pytest --cov=dalux_build           # Python client
cd webhook-server && pytest                     # webhook server (against this checkout's Python client)

All three run from one shared workflow, .github/workflows/tests.yml, on every push/PR and again as a release gate.

Changesets

Every PR touching javascript/src/, javascript/package.json, python/dalux_build/, or python/pyproject.toml needs a changeset — CI fails the PR otherwise:

npx changeset            # pick a bump type, write a summary
npx changeset add --empty  # for docs/CI/test-only changes

Releases

Fully automated by Changesets — no manual version bumps. Merging a changeset opens/updates a version PR; merging that PR publishes dalux-build-api to npm and tags a GitHub Release, which then publishes dalux-build to PyPI. Full flow: CONTRIBUTING.md#how-releases-work.

API parity

The Node.js and Python clients are expected to stay in behavioral parity — an endpoint or parameter added to one should generally be added to the other in the same PR. The upstream Dalux API is controlled by Dalux and evolves independently; don’t invent endpoint paths or fields by pattern-matching this repo — verify against SwaggerHub (see API Reference).