Repository navigation
0.13.0 — tool-parity wave: shells, sg, jfind, notify + read-sqlite/archive, auto-gen guard, read_pdf
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
shelltool: 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_grepstructural search ($VAR/$$$ALLmeta-variables, multi-pattern merge+dedupe) +ast_editstructural 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
notifytool: desktop notification via osascript / notify-send, terminal-bell fallback, harmless by construction.
Read/write upgrades
- read-sqlite (repair) — the wrapped
readopens sqlite views:db.sqlitetable list,:usersschema+rows,:users:42rowid,:users:name=alicekey lookup,:?SELECT…read-only query.node:sqliteopened READ-ONLY per call. - read-archive (repair) —
.tar/.tgz/.zipmember listing + content throughread; exact-then-unique-suffix member match, 1 MB cap, binary refusal;pkg.tgz:src/x.ts:50-80slices 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.autoGenGuardsetting, 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