Skip to content

0.13.0 — tool-parity wave: shells, sg, jfind, notify + read-sqlite/archive, auto-gen guard, read_pdf

Choose a tag to compare

@bacnh85 bacnh85 released this 06 Oct 23:24
· 19 commits to main since this release
93e4046

Four new modules + four read/write upgrades from the OMP/industry tool-parity survey — all live-verified end-to-end (real spawns, real classifier round-trips, real osascript delivery).

New modules

  • shells — one shell tool: start/list/output/stdin/kill over persistent background processes (dev servers, watchers, long builds). Own process group per session (group kill reaches children), 256 KB line rings with head+tail + truncation marker, 10 live / 5 exited session caps, since:"last" incremental output cursor, killAll on session shutdown. Plan-blocked.
  • sg — ast_grep structural search ($VAR / $$$ALL meta-variables, multi-pattern merge+dedupe) + ast_edit structural rewrite (pattern → rewrite across files; dry-run by default, staleness re-check warns on self-matching rewrites). Fail-open when no ast-grep binary. Pattern-parse failures render a hint on ast-grep 0.4x (exit 8 "Cannot parse query") as well as legacy sg.
  • jfind — semantic code find: describe a behavior, get files + line ranges, strongest first. OMP cascade port (lexical IDF prior → filename judging → sketch routing → passage verification); the judge routes through the router's System One classifier models.
  • notify — one notify tool: desktop notification via osascript / notify-send, terminal-bell fallback, harmless by construction.

Read/write upgrades

  • read-sqlite (repair) — the wrapped read opens sqlite views: db.sqlite table list, :users schema+rows, :users:42 rowid, :users:name=alice key lookup, :?SELECT… read-only query. node:sqlite opened READ-ONLY per call.
  • read-archive (repair) — .tar/.tgz/.zip member listing + content through read; exact-then-unique-suffix member match, 1 MB cap, binary refusal; pkg.tgz:src/x.ts:50-80 slices the member.
  • auto-generated guard (repair) — writes/edits to lockfiles, minified bundles, build dirs and snapshots are refused with a regenerate hint (bash stays the deliberate override). repair.autoGenGuard setting, default on.
  • read_pdf (web) — local PDF text via vendored pdf.js 4.10 (Apache-2.0, lazy import, workerless) — no external binaries; pages grammar "3", "1-5", "2,4,6-8", 10-page cap per call. Plan read-only.

Wiring & tests

Per-tool kill-switches, plan-mode tiers (shell/ast_edit blocked; ast_grep/jfind/read_pdf read-only), /config tool sections 16→20, @types/node ^24 (node:sqlite types). Tests 2750 (was 2661).

Full changelog: https://github.com/ceulen-dev/ceulen/blob/main/CHANGELOG.md