|
4 | 4 |
|
5 | 5 | - `execbox` is a Node.js 22+ npm workspace that publishes the `@execbox/*` package family. |
6 | 6 | - Core source lives under `packages/*/src`, tests live under `packages/*/__tests__`, runnable examples live under `examples/`, and the public docs site lives under `docs/`. |
7 | | -- The workspace currently contains `@execbox/core`, `@execbox/protocol`, `@execbox/quickjs`, `@execbox/remote`, `@execbox/process`, `@execbox/worker`, and `@execbox/isolated-vm`. |
| 7 | +- The workspace currently contains `@execbox/core`, `@execbox/protocol`, `@execbox/quickjs`, `@execbox/remote`, and `@execbox/isolated-vm`. |
8 | 8 | - Keep changes aligned with existing package boundaries. Prefer changing the owning package instead of introducing cross-package shortcuts. |
9 | 9 |
|
10 | 10 | ## Setup Commands |
|
24 | 24 |
|
25 | 25 | - Do not edit generated `dist/` output under `packages/*/dist`; build artifacts are produced from source. |
26 | 26 | - Preserve the existing ESM + TypeScript workspace structure and root script orchestration. |
27 | | -- When you change exported APIs in `packages/*/src`, keep JSDoc in sync. ESLint requires JSDoc coverage for exported package symbols. |
| 27 | +- When you change exported APIs in `packages/*/src`, keep JSDoc in sync. Public functions, constants, types, and classes should always ship with JSDoc, and ESLint requires JSDoc coverage for exported package symbols. |
28 | 28 | - Prefer inline type imports where possible; the ESLint config enforces `@typescript-eslint/consistent-type-imports`. |
29 | 29 | - Update examples or docs when you change public package behavior, developer workflow, or recommended runtime choices. |
30 | 30 |
|
31 | 31 | ## Testing Instructions |
32 | 32 |
|
33 | 33 | - For most code changes, run `npm run format:check`, `npm run lint`, `npm run typecheck`, `npm test`, and `npm run build`. |
34 | 34 | - If you change package exports, manifest fields, or published type-resolution behavior, also run `npm run package:check`. |
35 | | -- If you change the public API of `@execbox/core`, `@execbox/core/mcp`, `@execbox/protocol`, `@execbox/quickjs`, `@execbox/quickjs/runner`, `@execbox/quickjs/runner/protocol-endpoint`, `@execbox/remote`, `@execbox/process`, `@execbox/worker`, `@execbox/isolated-vm`, or `@execbox/isolated-vm/runner`, also run `npm run api:check`. |
| 35 | +- If you change the public API of `@execbox/core`, `@execbox/core/mcp`, `@execbox/protocol`, `@execbox/quickjs`, `@execbox/quickjs/runner`, `@execbox/quickjs/runner/protocol-endpoint`, `@execbox/remote`, `@execbox/isolated-vm`, or `@execbox/isolated-vm/runner`, also run `npm run api:check`. |
36 | 36 | - If you change docs site content, navigation, or VitePress config, also run `npm run docs:build`. |
37 | 37 | - If you touch execution boundaries, timeout handling, abort propagation, schema validation, or log/memory controls, also run `npm run test:security`. |
38 | 38 | - If you touch `@execbox/isolated-vm` or codepaths guarded by `VITEST_INCLUDE_ISOLATED_VM`, run `npm run test:isolated-vm` or `npm run verify:isolated-vm`. |
|
48 | 48 | - Use Conventional Commits for git commit messages, for example `docs: add agent and contributor guides` or `fix(worker): handle timeout classification`. |
49 | 49 | - Published package releases are managed with Changesets and GitHub Actions. |
50 | 50 | - Add a `.changeset/*.md` entry when a change affects published package behavior, public APIs, or release notes for one or more `@execbox/*` packages. |
51 | | -- If you intentionally change a checked-in API report for `@execbox/core`, `@execbox/core/mcp`, `@execbox/protocol`, `@execbox/quickjs`, `@execbox/quickjs/runner`, `@execbox/quickjs/runner/protocol-endpoint`, `@execbox/remote`, `@execbox/process`, `@execbox/worker`, `@execbox/isolated-vm`, or `@execbox/isolated-vm/runner`, update it with `npm run api:update` in the same change as the code and changeset. |
| 51 | +- If you intentionally change a checked-in API report for `@execbox/core`, `@execbox/core/mcp`, `@execbox/protocol`, `@execbox/quickjs`, `@execbox/quickjs/runner`, `@execbox/quickjs/runner/protocol-endpoint`, `@execbox/remote`, `@execbox/isolated-vm`, or `@execbox/isolated-vm/runner`, update it with `npm run api:update` in the same change as the code and changeset. |
52 | 52 | - Skip a changeset for docs-only, examples-only, CI-only, or internal maintenance changes that do not affect published package behavior. |
53 | 53 |
|
54 | 54 | ## Useful References |
|
0 commit comments