You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Initial dsh port of pi-hashline-edit-lsz: hash-anchored read / edit / batch_edit / undo_last_edit tools for DeepSeek Harness. Every line gets a unique 3-character content hash; edits target remove_from/remove_to hashes. The hashline core is ported byte-for-byte; the tool layer is rewritten on dsh's plugin API (batch_edit spec: Rianico/pi-hashline-edit-lsz#19).
Built-in replacement via scope-layered registry shadowing: on agent/session-start the tools and the tool:read/tool:edit prompt sections are registered on the agent's own layer (own-layer-wins), unwinding automatically on disposal; a tools/post-execute listener appends the auto-read to built-in write results.
Served-state range verification with reject-and-serve: every line of the resolved range is checked against what the model was shown; stale/never-served/unverified ranges are hard-rejected with the current HASH│content rows echoed back (retry needs no read). Drift notices report served territory changed outside the edit range (reject-and-serve spec: Rianico/pi-hashline-edit-lsz#13).
Chained edits without re-reading: post-edit diff rows and rejection echoes count as serves, so follow-up edits verify cleanly.
Error-code contract ([E_*] codes, README-documented and test-enforced) including the noop-loop guard (Rianico/pi-hashline-edit-lsz#18); undo_last_edit surviving restarts; and safe writes preserving permissions, line endings, BOMs, symlinks, and hard links via ctx.fs.
Test suite ported from pi-hashline-edit-lsz (614 tests at release), driving the dsh tool builders directly over a local filesystem bridge.