# pi-default-tools

Activate built-in pi tools from `settings.json` — reads project or global settings to enable tools like `grep`, `find`, and `ls` on session start.

## Install

```bash
pi install npm:@johnnywu/pi-default-tools
```

Or via local path in `~/.pi/agent/settings.json`:

```json
{
  "packages": ["~/dev/jwu/pi-default-tools"]
}
```

## Configuration

Add a `tools` field to `.pi/settings.json` (project) or `~/.pi/agent/settings.json` (global):

```json
{
  "tools": ["grep", "find", "ls"]
}
```

### Behavior

| Configuration | Effect |
|---------------|--------|
| `tools` not present | Nothing changes — pi uses its default tools |
| `tools: []` | **Whitelist** — clears all active tools |
| `tools: ["grep"]` | **Whitelist** — sets active tools to exactly `grep` |
| `tools: ["...", "grep"]` | **Merge** — `"..."` expands to current active tools, then appends `grep` |

The special marker `"..."` represents "keep current active tools". Without it, the array acts as a strict whitelist.

### Precedence

- Project `.pi/settings.json` takes precedence over global `~/.pi/agent/settings.json`
- If `tools` is not defined in project settings, global settings are used
- Only string array values are accepted; invalid types are ignored

## Development

```bash
# Install dependencies
bun install

# Run tests
bun test

# Type check
bun run typecheck

# Format
bun run format

# Release (local, requires GH_TOKEN and NPM_TOKEN)
bun run release
```

This project uses [semantic-release](https://semantic-release.gitbook.io) with [conventional commits](https://www.conventionalcommits.org/).

## License

MIT
