Release v0.4.0
Highlights
- Builtin extension abstraction — New public
Extensiontrait groups related builtins for one-call registration onBashBuilder/BashToolBuilder. TypeScript registration now flows throughTypeScriptExtension, andScriptedToolreuses a sharedToolDefExtensionfor its per-call logic shell (#1515, #1518). - Clap-backed custom builtins — Custom builtins can now be defined declaratively against a
clapparser, replacing hand-rolled arg parsing for new integrations (#1514). - SQLite session engine cache — The
sqlitebuiltin keeps a session-scoped engine alive acrossexec()calls, so transactions and prepared state survive multiple shell invocations within one session (#1513). - SQLite hardening follow-up — PRAGMA policy parsing now handles SQL comments and quoted/bracket/backtick identifiers (closing a
PRAGMA main."cache_size"bypass), andmax_db_bytesis enforced consistently across VFS writes/truncates and memory-backend persistence (#1521). - Python + toolchain bumps — Embedded Python (
monty) bumped to0.0.17and Rust toolchain bumped to1.95.0acrossrust-toolchain.tomland matching CI workflow refs (#1520).
What's Changed
- bench(sqlite): add Criterion benchmark for sqlite builtin (#1523) by @chaliy
- chore(python): bump monty to 49faa4c (0.0.17) and Rust to 1.95.0 (#1520) by @chaliy
- fix(deps): bump postcss to 8.5.13 in browser example (#1522) by @chaliy
- fix(sqlite): harden pragma policy and db caps (#1521) by @chaliy
- test(ssh): retry live supabase smoke (#1519) by @chaliy
- feat(scripted-tool): add ToolDef extension (#1518) by @chaliy
- feat(sqlite): session-scoped engine cache for transactions across exec() (#1513) by @chaliy
- feat(extension): add builtin extension abstraction (#1515) by @chaliy
- feat(builtins): support clap-backed custom builtins (#1514) by @chaliy
- test(sqlite): add differential tests vs host sqlite3 binary (#1511) by @chaliy
Full Changelog: v0.3.0...v0.4.0