Part of the Op / Temporal deployment workflow redesign. Chant currently runs on Bun. Migrating to Node.js unblocks use of the Temporal TypeScript SDK worker package, which requires authentic Node.js. ## Tasks - [x] Replace Bun-specific APIs with Node.js equivalents across `packages/core` - [x] Update `package.json` scripts to use `node`/`tsx` instead of `bun` - [x] Update `bin/chant` entry point - [x] Verify test suite passes under Node.js (458 tests, 0 failures) - [x] Update CI workflow to run on Node.js - [x] Update `packages/test-utils` for Node.js compatibility - [x] Update root `justfile` recipes - [x] Replace all remaining `bun`/`bunx` references in scripts, Dockerfiles, docs, and examples - [x] Fix workspace smoke test (207 passed, 0 failed): - Slurm lexicon: `require()` → `createRequire` in `training-job.ts` (ESM fix) - Slurm lexicon: correct `initTemplates()` structure, add `chant-slurm` primary skill, fix skill file names - Docker lexicon: `compose.ts` recognized as valid init source file - `Dockerfile.smoke`: generate slurm `dist/manifest.json` inside container
Part of the Op / Temporal deployment workflow redesign.
Chant currently runs on Bun. Migrating to Node.js unblocks use of the Temporal TypeScript SDK worker package, which requires authentic Node.js.
Tasks
packages/corepackage.jsonscripts to usenode/tsxinstead ofbunbin/chantentry pointpackages/test-utilsfor Node.js compatibilityjustfilerecipesbun/bunxreferences in scripts, Dockerfiles, docs, and examplesrequire()→createRequireintraining-job.ts(ESM fix)initTemplates()structure, addchant-slurmprimary skill, fix skill file namescompose.tsrecognized as valid init source fileDockerfile.smoke: generate slurmdist/manifest.jsoninside container