This is Flowglad's fork of
vercel-labs/just-bash. We currently carry two Flowglad-specific runtime patches, neither of which changes Python or SQLite:
Patch Why it remains curl-get-dataAdds -G/--get, ordered accumulation across repeated data flags, RFC 3986 encoding, and the standard form content type. Upstream now supplies the underlying@filehandling.dual-stack-dns-pinKeeps every public address validated during DNS preflight and selects a pinned address matching the family requested at connect time. Upstream still pins only the first address, which can reject a valid dual-stack host. The former
sqlite3-dot-commands, SQLite Bun structured-clone workaround, and Python execution-seam hardening patches have been backed out. 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.The
awk-comma-continuationpatch (upstreamed in vercel-labs#206) and thejq-permissive-control-charspatch (upstreamed in vercel-labs#214) have been retired — those issues are fixed in upstream and our source matches it byte-for-byte. The former package export-map carry has also been retired: upstream's map now supports Bun/Node ESM, Node CommonJS, and automatic browser resolution.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.