This is Flowglad's fork of
vercel-labs/just-bash. We carry three patches that fix issues encountered while embedding just-bash in our reasoning agent. Each patch lives at TypeScript-source level on theflowglad-mainbranch (this repo's default) and is reflected in the committeddist/. Consumers must pin a package-root tag namedv<upstream>-fgp.<n>(for example,v2.14.3-fgp.1), not the branch and not a monorepo-root tag.
Patch What it fixes Upstream PR sqlite3-workerThe published npm tarball omits dist/commands/sqlite3/worker.js, so the bundledsqlite3command falls through to the Python worker and throws on every invocation. We ship the worker.filed in Patch 2 awk-comma-continuationThe bundled awk lexer emits a NEWLINEtoken after a trailing comma, breaking POSIX comma-continuation in scripts our agent runs.filed in Patch 2 jq-permissive-control-charsThe bundled jq input scanner calls JSON.parseon raw bytes that may contain literal control characters (which Shopify's Admin API responses do), failing parse. We sanitize the slice before parsing.filed in Patch 2 Tags are cut automatically. Any push to
flowglad-mainthat touchespackages/just-bash/**triggers.github/workflows/auto-tag.yml, which computes the nextv<package-version>-fgp.<n>(incrementing<n>from the highest existing tag for that version), runspnpm flowglad:tag --push, and — if thePROVISIONING_AGENT_PR_TOKENsecret is set — opens a PR toflowglad/provisioning-agentupdating the pinnedjust-bashdependency to the new tag. Add[skip auto-tag]to a commit message to opt out, or use the workflow'sworkflow_dispatchtrigger with atag_overrideinput to force a specific tag.git fetch upstream git merge upstream/main pnpm install --frozen-lockfile pnpm --filter just-bash build pnpm --filter just-bash typecheck pnpm --filter just-bash exec vitest run src/commands/sqlite3/sqlite3.test.ts src/commands/python3/python3.optin.test.ts git add packages/just-bash/package.json packages/just-bash/src packages/just-bash/vendor git add -f packages/just-bash/dist git commit -m "sync: upstream <sha>" git push origin flowglad-mainPushing the sync commit lets
auto-tag.ymlcut the next tag.pnpm flowglad:tagis still the underlying mechanism — it refuses dirty worktrees, requires the tag name to match the package version, creates apackages/just-bashsubtree tag, embeds a hydrated CPython WASM blob when the subtree contains a Git LFS pointer, and runs a clean Bun install smoke before publishing. Run it locally for emergency / out-of-band releases. Seedocs/FLOWGLAD_RELEASE.mdfor the full procedure.
This repository hosts the just-bash package and its examples.
| Package | Path | Description |
|---|---|---|
just-bash |
packages/just-bash |
A simulated bash environment with virtual filesystem |
See the package's own README for usage documentation.
packages/ publishable npm packages
examples/ example consumers (bash-agent, cjs-consumer, website)
.github/ CI workflows
pnpm install # install all workspace deps
pnpm build # build all packages
pnpm test:run # run unit + comparison tests
pnpm test:dist # smoke-test the bundled output
pnpm lint # biome + per-package banned-pattern checks
pnpm typecheck # tsc across all packagesPer-package commands run via pnpm --filter <name> <script> — e.g.
pnpm --filter just-bash test:wasm.