Release v0.1.10
Highlights
- Node.js native bindings (
@everruns/bashkit): Full npm package with NAPI-RS, async execute API, VFS file helpers, lazy file values — 6 platforms, tested on Node 20/22/24, with 200+ tests and 6 examples including OpenAI, Vercel AI, and LangChain integrations - Pi coding agent integration: Bashkit extension for pi.dev terminal coding agent — replaces shell, read, write, and edit tools with bashkit-backed virtual implementations, zero real filesystem access
- 39 new builtins (109→148): rg, patch, zip/unzip, iconv, compgen, json, csv, tomlq, yaml, template, parallel, http, help, fc, tree, readlink, clear, fold, expand/unexpand, envsubst, join, split, and more
- Performance: Criterion benchmark harness with auto-save, 7-runner comparison suite, lazy-init HTTP client, trimmed CLI one-shot startup path
- Coprocess & background execution:
coprocsupport with named FD pairs, background&execution withwaitbuiltin, cancellation via AtomicBool token
New Tools & Builtins
- 14 new builtins batch 2: rg, patch, zip/unzip, iconv, compgen, json, csv, tomlq, yaml, template, parallel, http, help, fc
- 7 non-standard builtins + alias/unalias docs
- join and split commands
- clear, fold, expand/unexpand, envsubst
- tree, readlink
- ScriptingToolSet with exclusive/discovery modes
- MCP: expose ScriptedTool as MCP tool
- help builtin for runtime schema introspection
What's Changed
- feat(pi-integration): add Pi coding agent extension with bashkit VFS (#638)
- feat(find): add -printf format flag support (#637)
- test: un-ignore exec_azure_query_capacity, now passing (#636)
- feat(awk): add Unicode \u escape sequences (#635)
- feat(jq): upgrade jaq crates to latest stable versions (#634)
- feat(vfs): add /dev/urandom and /dev/random to virtual filesystem (#632)
- feat: fix bindings stderr, agent prompt, jq 1.8, awk --csv (#631)
- fix(errexit): assignment-only commands now return exit code 0 (#630)
- chore: pre-release maintenance pass (#627)
- fix(awk): implement output redirection for print/printf (#626)
- feat(js): expose VFS file helpers for agent integrations (#624)
- fix(builtins): preserve empty fields in read IFS splitting (#623)
- fix(interpreter): correct &&/|| operator precedence in [[ ]] conditional (#622)
- fix(js): prevent invalid pointer access in napi bindings (#621)
- fix(builtins): correct -a/-o operator precedence in test/[ builtin (#620)
- refactor(net): lazy-init http client (#613)
- feat(cancel): add cancellation support via AtomicBool token (#612)
- fix(eval): stop scoring tool-call trajectory (#611)
- refactor(cli): trim one-shot startup path (#609)
- fix(parser): track bracket/brace depth in array subscript reader (#603)
- fix(lexer): track brace depth in unquoted ${...} tokenization (#602)
- fix(interpreter): expand ${...} syntax in arithmetic contexts (#601)
- feat(js): support lazy file values in VFS (#598)
- feat(js): add async execute API (#597)
- feat(history): persistent searchable history across Bash instances (#596)
- feat(git): add show/ls-files/rev-parse/restore/merge-base/grep (#595)
- feat(interpreter): implement coproc (coprocess) support (#594)
- feat(eval): improve discovery prompts and bump to gpt-5.4 (#593)
- fix(tool): align toolkit library contract (#592)
- feat(vfs): add mkfifo and named pipe (FIFO) support (#591)
- feat(interpreter): implement background execution with & and wait (#590)
- feat(bench): add Criterion parallel bench with auto-save (#589)
- feat(builtins): add 14 new builtins batch 2 (#588)
- feat(eval): improve scripted tool evals with ScriptingToolSet (#587)
- fix(fs): flush RealFs append to prevent data loss race (#586)
- feat(builtins): add 7 non-standard builtins + alias/unalias docs (#585)
- feat(builtins): add join and split commands (#584)
- feat(bench): 7-runner benchmark comparison with expanded test suite (#583)
- feat(builtins): add clear, fold, expand/unexpand, envsubst commands (#582)
- feat(builtins): add tree command (#581)
- chore(maintenance): extract /maintain skill, add simplification (#580)
- feat(builtins): add readlink command (#579)
- feat(scripted_tool): add ScriptingToolSet with discovery mode support (#534)
- chore(agents): clarify worktree sync and commit identity (#533)
- feat(mcp): expose ScriptedTool as MCP tool (#532)
- docs(scripted_tool): shared context and state patterns (#530)
- feat(scripted_tool): help builtin for runtime schema introspection (#529)
- feat(js): add JavaScript/TypeScript package with npm publishing (#528)
- feat: upgrade to Rust edition 2024 + add doppler to cloud setup (#527)
- feat(eval): add scripting tool evals with multi-dataset support (#525)
- fix: prevent fuzz-found panics on multi-byte input (#513)
Full Changelog: v0.1.9...v0.1.10