{"_id":"@davehardy20/pi-hashline-tools","name":"@davehardy20/pi-hashline-tools","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@davehardy20/pi-hashline-tools","version":"0.1.0","description":"Pi package for hash-anchored file reading and editing (read_hashed / hashline_edit).","type":"module","keywords":["pi-package","pi-extension","hashline","file-editing"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/davehardy20/pi-hashline-tools.git"},"bugs":{"url":"https://github.com/davehardy20/pi-hashline-tools/issues"},"homepage":"https://github.com/davehardy20/pi-hashline-tools#readme","publishConfig":{"access":"public"},"scripts":{"build":"tsc -p tsconfig.build.json","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*","@earendil-works/pi-ai":"*","typebox":"*"},"peerDependenciesMeta":{"@earendil-works/pi-coding-agent":{"optional":false},"@earendil-works/pi-ai":{"optional":false},"typebox":{"optional":false}},"devDependencies":{"@earendil-works/pi-coding-agent":"^0.74.0","@earendil-works/pi-ai":"^0.74.0","@types/node":"^24.7.2","typebox":"^1.1.24","typescript":"^5.9.3","vitest":"^3.2.4"},"pi":{"extensions":["./src/index.ts"]},"gitHead":"6b149a05f29d96d0ed09cada220d85e5ec55e30d","_id":"@davehardy20/pi-hashline-tools@0.1.0","_nodeVersion":"26.0.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-MR7JgmCx4oPpwWlVNDYmMIptCo3YINVGL1QH+Z0g7llzNC84+bBhqWVb2TV7CpjVVAIHjF1tlmqyPXswidNeEg==","shasum":"f285e86f5bedff36837c4b3fe7c31ab64c956e5e","tarball":"https://registry.npmjs.org/@davehardy20/pi-hashline-tools/-/pi-hashline-tools-0.1.0.tgz","fileCount":7,"unpackedSize":52752,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDYU1cryxC5YIt12XE7TzJvd4D6a4SJtT07sta5vUqETQIhAKlfdhXZS56cUJfnM6MANnkFiivo+a2acSTBF0rxefkv"}]},"_npmUser":{"name":"davehardy20","email":"dave.hardy@protonmail.com"},"directories":{},"maintainers":[{"name":"davehardy20","email":"dave.hardy@protonmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-hashline-tools_0.1.0_1779016941332_0.17251812136818545"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-17T11:22:21.251Z","0.1.0":"2026-05-17T11:22:21.481Z","modified":"2026-05-17T11:22:21.653Z"},"maintainers":[{"name":"davehardy20","email":"dave.hardy@protonmail.com"}],"description":"Pi package for hash-anchored file reading and editing (read_hashed / hashline_edit).","homepage":"https://github.com/davehardy20/pi-hashline-tools#readme","keywords":["pi-package","pi-extension","hashline","file-editing"],"repository":{"type":"git","url":"git+https://github.com/davehardy20/pi-hashline-tools.git"},"bugs":{"url":"https://github.com/davehardy20/pi-hashline-tools/issues"},"license":"MIT","readme":"# @davehardy20/pi-hashline-tools\n\nPi package for hash-anchored file reading and editing.\n\n## What it adds\n\n- **`read_hashed`** tool — Read a file and return content with `LINE#ID` hash-anchored line identifiers.\n- **`hashline_edit`** tool — Edit files using `LINE#ID` format for precise, hash-validated modifications.\n- **`/hashline-status`** command — Show package name, version, and loaded source path.\n\n### Workflow\n\n1. Call `read_hashed` to get `LINE#HASH|content` tagged output.\n2. Call `hashline_edit` with exact `LINE#ID` references from the output.\n3. If hashes mismatch (file changed), the error includes updated tags for retry.\n\n## Install\n\nFrom npm:\n\n```bash\npi install npm:@davehardy20/pi-hashline-tools\n```\n\nFrom git:\n\n```bash\npi install git:github.com/davehardy20/pi-hashline-tools\n```\n\nFrom a local checkout during development:\n\n```bash\npi install /Users/dave/tools/pi-hashline-tools\n```\n\nFor one run only:\n\n```bash\npi -e /Users/dave/tools/pi-hashline-tools\n```\n\n## Settings\n\nNo special settings required. The tools use the working directory from the Pi context.\n\n## Notes\n\n- This is a **workflow package** archetype: it bundles the hashline engine (hash computation, validation, edit application) and path utilities as package-local helpers.\n- Blank or whitespace-only lines are shown without a hash and cannot be used as edit anchors.\n- Edits are applied bottom-up so that multiple operations in one call reference the original file state.\n- The package does **not** import from `~/.pi/agent/extensions/shared/*` at runtime.\n\n## Troubleshooting\n\nRun `/hashline-status` to confirm:\n\n- package name and version\n- loaded source path\n- package root\n\nIf commands appear twice, Pi may be loading both the package and the old local extension. Disable or remove the old local auto-discovered extension before reload verification.\n\n## Update flow\n\n1. Update the package repo\n2. Push to GitHub\n3. Run `pi update --extensions` or reinstall the package\n4. Run `/reload`\n\n`/reload` alone does not fetch newer package commits.\n\n## Build and test\n\n```bash\nnpm run typecheck\nnpm run build\nnpm test\n```\n","readmeFilename":"README.md","_rev":"1-458c64c661c17f53ba974a5bcf00c581"}