# @davehardy20/pi-hashline-tools

Pi package for hash-anchored file reading and editing.

## What it adds

- **`read_hashed`** tool — Read a file and return content with `LINE#ID` hash-anchored line identifiers.
- **`hashline_edit`** tool — Edit files using `LINE#ID` format for precise, hash-validated modifications.
- **`/hashline-status`** command — Show package name, version, and loaded source path.

### Workflow

1. Call `read_hashed` to get `LINE#HASH|content` tagged output.
2. Call `hashline_edit` with exact `LINE#ID` references from the output.
3. If hashes mismatch (file changed), the error includes updated tags for retry.

## Install

From npm:

```bash
pi install npm:@davehardy20/pi-hashline-tools
```

From git:

```bash
pi install git:github.com/davehardy20/pi-hashline-tools
```

From a local checkout during development:

```bash
pi install /Users/dave/tools/pi-hashline-tools
```

For one run only:

```bash
pi -e /Users/dave/tools/pi-hashline-tools
```

## Settings

No special settings required. The tools use the working directory from the Pi context.

## Notes

- This is a **workflow package** archetype: it bundles the hashline engine (hash computation, validation, edit application) and path utilities as package-local helpers.
- Blank or whitespace-only lines are shown without a hash and cannot be used as edit anchors.
- Edits are applied bottom-up so that multiple operations in one call reference the original file state.
- The package does **not** import from `~/.pi/agent/extensions/shared/*` at runtime.

## Troubleshooting

Run `/hashline-status` to confirm:

- package name and version
- loaded source path
- package root

If 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.

## Update flow

1. Update the package repo
2. Push to GitHub
3. Run `pi update --extensions` or reinstall the package
4. Run `/reload`

`/reload` alone does not fetch newer package commits.

## Build and test

```bash
npm run typecheck
npm run build
npm test
```
