@eminent337/aery 0.1.27 → 0.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/json.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # JSON Event Stream Mode
2
2
 
3
3
  ```bash
4
- pi --mode json "Your prompt"
4
+ aery --mode json "Your prompt"
5
5
  ```
6
6
 
7
- Outputs all session events as JSON lines to stdout. Useful for integrating pi into other tools or custom UIs.
7
+ Outputs all session events as JSON lines to stdout. Useful for integrating Aery into other tools or custom UIs.
8
8
 
9
9
  ## Event Types
10
10
 
@@ -78,5 +78,5 @@ Followed by events as they occur:
78
78
  ## Example
79
79
 
80
80
  ```bash
81
- pi --mode json "List files" 2>/dev/null | jq -c 'select(.type == "message_end")'
81
+ aery --mode json "List files" 2>/dev/null | jq -c 'select(.type == "message_end")'
82
82
  ```
@@ -1,12 +1,12 @@
1
1
  # Keybindings
2
2
 
3
- All keyboard shortcuts can be customized via `~/.pi/agent/keybindings.json`. Each action can be bound to one or more keys.
3
+ All keyboard shortcuts can be customized via `~/.aery/agent/keybindings.json`. Each action can be bound to one or more keys.
4
4
 
5
- The config file uses the same namespaced keybinding ids that pi uses internally and that extension authors use in `keyHint()` and injected `keybindings` managers.
5
+ The config file uses the same namespaced keybinding ids that Aery uses internally and that extension authors use in `keyHint()` and injected `keybindings` managers.
6
6
 
7
7
  Older configs using pre-namespaced ids such as `cursorUp` or `expandTools` are migrated automatically to the namespaced ids on startup.
8
8
 
9
- After editing `keybindings.json`, run `/reload` in pi to apply the changes without restarting the session.
9
+ After editing `keybindings.json`, run `/reload` in Aery to apply the changes without restarting the session.
10
10
 
11
11
  ## Key Format
12
12
 
@@ -153,7 +153,7 @@ Used inside the scoped models selector (opened via `/scoped-models`).
153
153
 
154
154
  ## Custom Configuration
155
155
 
156
- Create `~/.pi/agent/keybindings.json`:
156
+ Create `~/.aery/agent/keybindings.json`:
157
157
 
158
158
  ```json
159
159
  {
@@ -165,7 +165,7 @@ Create `~/.pi/agent/keybindings.json`:
165
165
 
166
166
  Each action can have a single key or an array of keys. User config overrides defaults.
167
167
 
168
- On native Windows, `app.suspend` has no default binding because Windows terminals do not support Unix job control. If you bind it manually, pi shows a status message instead of suspending. In WSL, the normal Linux `ctrl+z`/`fg` behavior still applies.
168
+ On native Windows, `app.suspend` has no default binding because Windows terminals do not support Unix job control. If you bind it manually, Aery shows a status message instead of suspending. In WSL, the normal Linux `ctrl+z`/`fg` behavior still applies.
169
169
 
170
170
  ### Emacs Example
171
171
 
package/docs/models.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Custom Models
2
2
 
3
- Add custom providers and models (Ollama, vLLM, LM Studio, proxies) via `~/.pi/agent/models.json`.
3
+ Add custom providers and models (Ollama, vLLM, LM Studio, proxies) via `~/.aery/agent/models.json`.
4
4
 
5
5
  ## Table of Contents
6
6
 
package/docs/packages.md CHANGED
@@ -31,13 +31,13 @@ pi list # show installed packages from settings
31
31
  pi update # update all non-pinned packages
32
32
  ```
33
33
 
34
- By default, `install` and `remove` write to global settings (`~/.pi/agent/settings.json`). Use `-l` to write to project settings (`.pi/settings.json`) instead. Project settings can be shared with your team, and pi installs any missing packages automatically on startup.
34
+ By default, `install` and `remove` write to global settings (`~/.aery/agent/settings.json`). Use `-l` to write to project settings (`.aery/settings.json`) instead. Project settings can be shared with your team, and pi installs any missing packages automatically on startup.
35
35
 
36
36
  To try a package without installing it, use `--extension` or `-e`. This installs to a temporary directory for the current run only:
37
37
 
38
38
  ```bash
39
- pi -e npm:@foo/bar
40
- pi -e git:github.com/user/repo
39
+ aery -e npm:@foo/bar
40
+ aery -e git:github.com/user/repo
41
41
  ```
42
42
 
43
43
  ## Package Sources
@@ -53,7 +53,7 @@ npm:pkg
53
53
 
54
54
  - Versioned specs are pinned and skipped by `pi update`.
55
55
  - Global installs use `npm install -g`.
56
- - Project installs go under `.pi/npm/`.
56
+ - Project installs go under `.aery/npm/`.
57
57
  - Set `npmCommand` in `settings.json` to pin npm package lookup and install operations to a specific wrapper command such as `mise` or `asdf`.
58
58
 
59
59
  Example:
@@ -79,7 +79,7 @@ ssh://git@github.com/user/repo@v1
79
79
  - SSH URLs use your configured SSH keys automatically (respects `~/.ssh/config`).
80
80
  - For non-interactive runs (for example CI), you can set `GIT_TERMINAL_PROMPT=0` to disable credential prompts and set `GIT_SSH_COMMAND` (for example `ssh -o BatchMode=yes -o ConnectTimeout=5`) to fail fast.
81
81
  - Refs pin the package and skip `pi update`.
82
- - Cloned to `~/.pi/agent/git/<host>/<path>` (global) or `.pi/git/<host>/<path>` (project).
82
+ - Cloned to `~/.aery/agent/git/<host>/<path>` (global) or `.aery/git/<host>/<path>` (project).
83
83
  - Runs `npm install` after clone or pull if `package.json` exists.
84
84
 
85
85
  **SSH examples:**
@@ -111,7 +111,7 @@ Add a `pi` manifest to `package.json` or use conventional directories. Include t
111
111
  {
112
112
  "name": "my-package",
113
113
  "keywords": ["pi-package"],
114
- "pi": {
114
+ "aery": {
115
115
  "extensions": ["./extensions"],
116
116
  "skills": ["./skills"],
117
117
  "prompts": ["./prompts"],
@@ -130,7 +130,7 @@ The [package gallery](https://aery.dev/packages) displays packages tagged with `
130
130
  {
131
131
  "name": "my-package",
132
132
  "keywords": ["pi-package"],
133
- "pi": {
133
+ "aery": {
134
134
  "extensions": ["./extensions"],
135
135
  "video": "https://example.com/demo.mp4",
136
136
  "image": "https://example.com/screenshot.png"
@@ -170,7 +170,7 @@ Example:
170
170
  "shitty-extensions": "^1.0.1"
171
171
  },
172
172
  "bundledDependencies": ["shitty-extensions"],
173
- "pi": {
173
+ "aery": {
174
174
  "extensions": ["extensions", "node_modules/shitty-extensions/extensions"],
175
175
  "skills": ["skills", "node_modules/shitty-extensions/skills"]
176
176
  }
@@ -207,7 +207,7 @@ Filter what a package loads using the object form in settings:
207
207
 
208
208
  ## Enable and Disable Resources
209
209
 
210
- Use `pi config` to enable or disable extensions, skills, prompt templates, and themes from installed packages and local directories. Works for both global (`~/.pi/agent`) and project (`.pi/`) scopes.
210
+ Use `pi config` to enable or disable extensions, skills, prompt templates, and themes from installed packages and local directories. Works for both global (`~/.aery/agent`) and project (`.aery/`) scopes.
211
211
 
212
212
  ## Scope and Deduplication
213
213
 
@@ -8,9 +8,9 @@ Prompt templates are Markdown snippets that expand into full prompts. Type `/nam
8
8
 
9
9
  Pi loads prompt templates from:
10
10
 
11
- - Global: `~/.pi/agent/prompts/*.md`
12
- - Project: `.pi/prompts/*.md`
13
- - Packages: `prompts/` directories or `pi.prompts` entries in `package.json`
11
+ - Global: `~/.aery/agent/prompts/*.md`
12
+ - Project: `.aery/prompts/*.md`
13
+ - Packages: `prompts/` directories or `aery.prompts` entries in `package.json`
14
14
  - Settings: `prompts` array with files or directories
15
15
  - CLI: `--prompt-template <path>` (repeatable)
16
16
 
package/docs/providers.md CHANGED
@@ -21,7 +21,7 @@ Use `/login` in interactive mode, then select a provider:
21
21
  - Google Gemini CLI
22
22
  - Google Antigravity
23
23
 
24
- Use `/logout` to clear credentials. Tokens are stored in `~/.pi/agent/auth.json` and auto-refresh when expired.
24
+ Use `/logout` to clear credentials. Tokens are stored in `~/.aery/agent/auth.json` and auto-refresh when expired.
25
25
 
26
26
  ### GitHub Copilot
27
27
 
@@ -75,7 +75,7 @@ Reference for environment variables and `auth.json` keys: [`const envMap`](https
75
75
 
76
76
  #### Auth File
77
77
 
78
- Store credentials in `~/.pi/agent/auth.json`:
78
+ Store credentials in `~/.aery/agent/auth.json`:
79
79
 
80
80
  ```json
81
81
  {
package/docs/rpc.md CHANGED
@@ -7,7 +7,7 @@ RPC mode enables headless operation of the coding agent via a JSON protocol over
7
7
  ## Starting RPC Mode
8
8
 
9
9
  ```bash
10
- pi --mode rpc [options]
10
+ aery --mode rpc [options]
11
11
  ```
12
12
 
13
13
  Common options:
@@ -63,7 +63,7 @@ With images:
63
63
 
64
64
  If the agent is streaming and no `streamingBehavior` is specified, the command returns an error.
65
65
 
66
- **Extension commands**: If the message is an extension command (e.g., `/mycommand`), it executes immediately even during streaming. Extension commands manage their own LLM interaction via `pi.sendMessage()`.
66
+ **Extension commands**: If the message is an extension command (e.g., `/mycommand`), it executes immediately even during streaming. Extension commands manage their own LLM interaction via `aery.sendMessage()`.
67
67
 
68
68
  **Input expansion**: Skill commands (`/skill:name`) and prompt templates (`/template`) are expanded before sending/queueing.
69
69
 
@@ -714,9 +714,9 @@ Response:
714
714
  "success": true,
715
715
  "data": {
716
716
  "commands": [
717
- {"name": "session-name", "description": "Set or clear session name", "source": "extension", "path": "/home/user/.pi/agent/extensions/session.ts"},
718
- {"name": "fix-tests", "description": "Fix failing tests", "source": "prompt", "location": "project", "path": "/home/user/myproject/.pi/agent/prompts/fix-tests.md"},
719
- {"name": "skill:brave-search", "description": "Web search via Brave API", "source": "skill", "location": "user", "path": "/home/user/.pi/agent/skills/brave-search/SKILL.md"}
717
+ {"name": "session-name", "description": "Set or clear session name", "source": "extension", "path": "/home/user/.aery/agent/extensions/session.ts"},
718
+ {"name": "fix-tests", "description": "Fix failing tests", "source": "prompt", "location": "project", "path": "/home/user/myproject/.aery/agent/prompts/fix-tests.md"},
719
+ {"name": "skill:brave-search", "description": "Web search via Brave API", "source": "skill", "location": "user", "path": "/home/user/.aery/agent/skills/brave-search/SKILL.md"}
720
720
  ]
721
721
  }
722
722
  }
@@ -726,12 +726,12 @@ Each command has:
726
726
  - `name`: Command name (invoke with `/name`)
727
727
  - `description`: Human-readable description (optional for extension commands)
728
728
  - `source`: What kind of command:
729
- - `"extension"`: Registered via `pi.registerCommand()` in an extension
729
+ - `"extension"`: Registered via `aery.registerCommand()` in an extension
730
730
  - `"prompt"`: Loaded from a prompt template `.md` file
731
731
  - `"skill"`: Loaded from a skill directory (name is prefixed with `skill:`)
732
732
  - `location`: Where it was loaded from (optional, not present for extensions):
733
- - `"user"`: User-level (`~/.pi/agent/`)
734
- - `"project"`: Project-level (`./.pi/agent/`)
733
+ - `"user"`: User-level (`~/.aery/agent/`)
734
+ - `"project"`: Project-level (`./.aery/agent/`)
735
735
  - `"path"`: Explicit path via CLI or settings
736
736
  - `path`: Absolute file path to the command source (optional)
737
737
 
package/docs/sdk.md CHANGED
@@ -219,7 +219,7 @@ await session.prompt("After you're done, also check X", { streamingBehavior: "fo
219
219
  ```
220
220
 
221
221
  **Behavior:**
222
- - **Extension commands** (e.g., `/mycommand`): Execute immediately, even during streaming. They manage their own LLM interaction via `pi.sendMessage()`.
222
+ - **Extension commands** (e.g., `/mycommand`): Execute immediately, even during streaming. They manage their own LLM interaction via `aery.sendMessage()`.
223
223
  - **File-based prompt templates** (from `.md` files): Expanded to their content before sending or queueing.
224
224
  - **During streaming without `streamingBehavior`**: Throws an error. Use `steer()` or `followUp()` directly, or specify the option.
225
225
  - **`preflightResult(true)`**: Means the prompt was accepted, queued, or handled immediately.
@@ -338,23 +338,23 @@ const { session } = await createAgentSession({
338
338
  cwd: process.cwd(), // default
339
339
 
340
340
  // Global config directory
341
- agentDir: "~/.pi/agent", // default (expands ~)
341
+ agentDir: "~/.aery/agent", // default (expands ~)
342
342
  });
343
343
  ```
344
344
 
345
345
  `cwd` is used by `DefaultResourceLoader` for:
346
- - Project extensions (`.pi/extensions/`)
346
+ - Project extensions (`.aery/extensions/`)
347
347
  - Project skills:
348
- - `.pi/skills/`
348
+ - `.aery/skills/`
349
349
  - `.agents/skills/` in `cwd` and ancestor directories (up to git repo root, or filesystem root when not in a repo)
350
- - Project prompts (`.pi/prompts/`)
350
+ - Project prompts (`.aery/prompts/`)
351
351
  - Context files (`AGENTS.md` walking up from cwd)
352
352
  - Session directory naming
353
353
 
354
354
  `agentDir` is used by `DefaultResourceLoader` for:
355
355
  - Global extensions (`extensions/`)
356
356
  - Global skills:
357
- - `skills/` under `agentDir` (for example `~/.pi/agent/skills/`)
357
+ - `skills/` under `agentDir` (for example `~/.aery/agent/skills/`)
358
358
  - `~/.agents/skills/`
359
359
  - Global prompts (`prompts/`)
360
360
  - Global context file (`AGENTS.md`)
@@ -418,7 +418,7 @@ API key resolution priority (handled by AuthStorage):
418
418
  ```typescript
419
419
  import { AuthStorage, ModelRegistry } from "@eminent337/aery";
420
420
 
421
- // Default: uses ~/.pi/agent/auth.json and ~/.pi/agent/models.json
421
+ // Default: uses ~/.aery/agent/auth.json and ~/.aery/agent/models.json
422
422
  const authStorage = AuthStorage.create();
423
423
  const modelRegistry = ModelRegistry.create(authStorage);
424
424
 
@@ -552,15 +552,15 @@ const { session } = await createAgentSession({
552
552
  });
553
553
  ```
554
554
 
555
- Use `defineTool()` for standalone definitions and arrays like `customTools: [myTool]`. Inline `pi.registerTool({ ... })` already infers parameter types correctly.
555
+ Use `defineTool()` for standalone definitions and arrays like `customTools: [myTool]`. Inline `aery.registerTool({ ... })` already infers parameter types correctly.
556
556
 
557
- Custom tools passed via `customTools` are combined with extension-registered tools. Extensions loaded by the ResourceLoader can also register tools via `pi.registerTool()`.
557
+ Custom tools passed via `customTools` are combined with extension-registered tools. Extensions loaded by the ResourceLoader can also register tools via `aery.registerTool()`.
558
558
 
559
559
  > See [examples/sdk/05-tools.ts](../examples/sdk/05-tools.ts)
560
560
 
561
561
  ### Extensions
562
562
 
563
- Extensions are loaded by the `ResourceLoader`. `DefaultResourceLoader` discovers extensions from `~/.pi/agent/extensions/`, `.pi/extensions/`, and settings.json extension sources.
563
+ Extensions are loaded by the `ResourceLoader`. `DefaultResourceLoader` discovers extensions from `~/.aery/agent/extensions/`, `.aery/extensions/`, and settings.json extension sources.
564
564
 
565
565
  ```typescript
566
566
  import { createAgentSession, DefaultResourceLoader } from "@eminent337/aery";
@@ -569,7 +569,7 @@ const loader = new DefaultResourceLoader({
569
569
  additionalExtensionPaths: ["/path/to/my-extension.ts"],
570
570
  extensionFactories: [
571
571
  (pi) => {
572
- pi.on("agent_start", () => {
572
+ aery.on("agent_start", () => {
573
573
  console.log("[Inline Extension] Agent starting");
574
574
  });
575
575
  },
@@ -582,7 +582,7 @@ const { session } = await createAgentSession({ resourceLoader: loader });
582
582
 
583
583
  Extensions can register tools, subscribe to events, add commands, and more. See [extensions.md](extensions.md) for the full API.
584
584
 
585
- **Event Bus:** Extensions can communicate via `pi.events`. Pass a shared `eventBus` to `DefaultResourceLoader` if you need to emit or listen from outside:
585
+ **Event Bus:** Extensions can communicate via `aery.events`. Pass a shared `eventBus` to `DefaultResourceLoader` if you need to emit or listen from outside:
586
586
 
587
587
  ```typescript
588
588
  import { createEventBus, DefaultResourceLoader } from "@eminent337/aery";
@@ -818,8 +818,8 @@ const { session } = await createAgentSession({
818
818
  **Project-specific settings:**
819
819
 
820
820
  Settings load from two locations and merge:
821
- 1. Global: `~/.pi/agent/settings.json`
822
- 2. Project: `<cwd>/.pi/settings.json`
821
+ 1. Global: `~/.aery/agent/settings.json`
822
+ 2. Project: `<cwd>/.aery/settings.json`
823
823
 
824
824
  Project overrides global. Nested objects merge keys. Setters modify global settings by default.
825
825
 
@@ -1081,7 +1081,7 @@ See [RPC documentation](rpc.md) for the JSON protocol.
1081
1081
  For subprocess-based integration without building with the SDK, use the CLI directly:
1082
1082
 
1083
1083
  ```bash
1084
- pi --mode rpc --no-session
1084
+ aery --mode rpc --no-session
1085
1085
  ```
1086
1086
 
1087
1087
  See [RPC documentation](rpc.md) for the JSON protocol.
package/docs/session.md CHANGED
@@ -5,14 +5,14 @@ Sessions are stored as JSONL (JSON Lines) files. Each line is a JSON object with
5
5
  ## File Location
6
6
 
7
7
  ```
8
- ~/.pi/agent/sessions/--<path>--/<timestamp>_<uuid>.jsonl
8
+ ~/.aery/agent/sessions/--<path>--/<timestamp>_<uuid>.jsonl
9
9
  ```
10
10
 
11
11
  Where `<path>` is the working directory with `/` replaced by `-`.
12
12
 
13
13
  ## Deleting Sessions
14
14
 
15
- Sessions can be removed by deleting their `.jsonl` files under `~/.pi/agent/sessions/`.
15
+ Sessions can be removed by deleting their `.jsonl` files under `~/.aery/agent/sessions/`.
16
16
 
17
17
  Pi also supports deleting sessions interactively from `/resume` (select a session and press `Ctrl+D`, then confirm). When available, pi uses the `trash` CLI to avoid permanent deletion.
18
18
 
@@ -282,7 +282,7 @@ Set `label` to `undefined` to clear a label.
282
282
 
283
283
  ### SessionInfoEntry
284
284
 
285
- Session metadata (e.g., user-defined display name). Set via `/name` command or `pi.setSessionName()` in extensions.
285
+ Session metadata (e.g., user-defined display name). Set via `/name` command or `aery.setSessionName()` in extensions.
286
286
 
287
287
  ```json
288
288
  {"type":"session_info","id":"k1l2m3n4","parentId":"j0k1l2m3","timestamp":"2024-12-03T14:35:00.000Z","name":"Refactor auth module"}
package/docs/settings.md CHANGED
@@ -4,8 +4,8 @@ Pi uses JSON settings files with project settings overriding global settings.
4
4
 
5
5
  | Location | Scope |
6
6
  |----------|-------|
7
- | `~/.pi/agent/settings.json` | Global (all projects) |
8
- | `.pi/settings.json` | Project (current directory) |
7
+ | `~/.aery/agent/settings.json` | Global (all projects) |
8
+ | `.aery/settings.json` | Project (current directory) |
9
9
 
10
10
  Edit directly or use `/settings` for common options.
11
11
 
@@ -135,7 +135,7 @@ When a provider requests a retry delay longer than `maxDelayMs` (e.g., Google's
135
135
  | `sessionDir` | string | - | Directory where session files are stored. Accepts absolute or relative paths. |
136
136
 
137
137
  ```json
138
- { "sessionDir": ".pi/sessions" }
138
+ { "sessionDir": ".aery/sessions" }
139
139
  ```
140
140
 
141
141
  When multiple sources specify a session directory, `--session-dir` CLI flag takes precedence over `sessionDir` in settings.json.
@@ -162,7 +162,7 @@ When multiple sources specify a session directory, `--session-dir` CLI flag take
162
162
 
163
163
  These settings define where to load extensions, skills, prompts, and themes from.
164
164
 
165
- Paths in `~/.pi/agent/settings.json` resolve relative to `~/.pi/agent`. Paths in `.pi/settings.json` resolve relative to `.pi`. Absolute paths and `~` are supported.
165
+ Paths in `~/.aery/agent/settings.json` resolve relative to `~/.aery/agent`. Paths in `.aery/settings.json` resolve relative to `.pi`. Absolute paths and `~` are supported.
166
166
 
167
167
  | Setting | Type | Default | Description |
168
168
  |---------|------|---------|-------------|
@@ -225,16 +225,16 @@ See [packages.md](packages.md) for package management details.
225
225
 
226
226
  ## Project Overrides
227
227
 
228
- Project settings (`.pi/settings.json`) override global settings. Nested objects are merged:
228
+ Project settings (`.aery/settings.json`) override global settings. Nested objects are merged:
229
229
 
230
230
  ```json
231
- // ~/.pi/agent/settings.json (global)
231
+ // ~/.aery/agent/settings.json (global)
232
232
  {
233
233
  "theme": "dark",
234
234
  "compaction": { "enabled": true, "reserveTokens": 16384 }
235
235
  }
236
236
 
237
- // .pi/settings.json (project)
237
+ // .aery/settings.json (project)
238
238
  {
239
239
  "compaction": { "reserveTokens": 8192 }
240
240
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  Pi runs bash in non-interactive mode (`bash -c`), which doesn't expand aliases by default.
4
4
 
5
- To enable your shell aliases, add to `~/.pi/agent/settings.json`:
5
+ To enable your shell aliases, add to `~/.aery/agent/settings.json`:
6
6
 
7
7
  ```json
8
8
  {
package/docs/skills.md CHANGED
@@ -24,17 +24,17 @@ Pi implements the [Agent Skills standard](https://agentskills.io/specification),
24
24
  Pi loads skills from:
25
25
 
26
26
  - Global:
27
- - `~/.pi/agent/skills/`
27
+ - `~/.aery/agent/skills/`
28
28
  - `~/.agents/skills/`
29
29
  - Project:
30
- - `.pi/skills/`
30
+ - `.aery/skills/`
31
31
  - `.agents/skills/` in `cwd` and ancestor directories (up to git repo root, or filesystem root when not in a repo)
32
- - Packages: `skills/` directories or `pi.skills` entries in `package.json`
32
+ - Packages: `skills/` directories or `aery.skills` entries in `package.json`
33
33
  - Settings: `skills` array with files or directories
34
34
  - CLI: `--skill <path>` (repeatable, additive even with `--no-skills`)
35
35
 
36
36
  Discovery rules:
37
- - In `~/.pi/agent/skills/` and `.pi/skills/`, direct root `.md` files are discovered as individual skills
37
+ - In `~/.aery/agent/skills/` and `.aery/skills/`, direct root `.md` files are discovered as individual skills
38
38
  - In all skill locations, directories containing `SKILL.md` are discovered recursively
39
39
  - In `~/.agents/skills/` and project `.agents/skills/`, root `.md` files are ignored
40
40
 
@@ -53,7 +53,7 @@ To use skills from Claude Code or OpenAI Codex, add their directories to setting
53
53
  }
54
54
  ```
55
55
 
56
- For project-level Claude Code skills, add to `.pi/settings.json`:
56
+ For project-level Claude Code skills, add to `.aery/settings.json`:
57
57
 
58
58
  ```json
59
59
  {
@@ -24,7 +24,7 @@ That mapping sends a raw linefeed byte. Inside pi, that is indistinguishable fro
24
24
 
25
25
  If Claude Code 2.x or newer is the only reason you added that mapping, you can remove it, unless you want to use Claude Code in tmux, where it still requires that Ghostty mapping.
26
26
 
27
- If you want `Shift+Enter` to keep working in tmux via that remap, add `ctrl+j` to your pi `newLine` keybinding in `~/.pi/agent/keybindings.json`:
27
+ If you want `Shift+Enter` to keep working in tmux via that remap, add `ctrl+j` to your pi `newLine` keybinding in `~/.aery/agent/keybindings.json`:
28
28
 
29
29
  ```json
30
30
  {
package/docs/termux.md CHANGED
@@ -20,7 +20,7 @@ pkg install nodejs termux-api git
20
20
  npm install -g @eminent337/aery
21
21
 
22
22
  # Create config directory
23
- mkdir -p ~/.pi/agent
23
+ mkdir -p ~/.aery/agent
24
24
 
25
25
  # Run pi
26
26
  pi
@@ -34,7 +34,7 @@ Image clipboard is not supported on Termux (the `ctrl+v` image paste feature wil
34
34
 
35
35
  ## Example AGENTS.md for Termux
36
36
 
37
- Create `~/.pi/agent/AGENTS.md` to help the agent understand the Termux environment:
37
+ Create `~/.aery/agent/AGENTS.md` to help the agent understand the Termux environment:
38
38
 
39
39
  ```markdown
40
40
  # Agent Environment: Termux on Android
package/docs/themes.md CHANGED
@@ -19,9 +19,9 @@ Themes are JSON files that define colors for the TUI.
19
19
  Pi loads themes from:
20
20
 
21
21
  - Built-in: `dark`, `light`
22
- - Global: `~/.pi/agent/themes/*.json`
23
- - Project: `.pi/themes/*.json`
24
- - Packages: `themes/` directories or `pi.themes` entries in `package.json`
22
+ - Global: `~/.aery/agent/themes/*.json`
23
+ - Project: `.aery/themes/*.json`
24
+ - Packages: `themes/` directories or `aery.themes` entries in `package.json`
25
25
  - Settings: `themes` array with files or directories
26
26
  - CLI: `--theme <path>` (repeatable)
27
27
 
@@ -44,8 +44,8 @@ On first run, pi detects your terminal background and defaults to `dark` or `lig
44
44
  1. Create a theme file:
45
45
 
46
46
  ```bash
47
- mkdir -p ~/.pi/agent/themes
48
- vim ~/.pi/agent/themes/my-theme.json
47
+ mkdir -p ~/.aery/agent/themes
48
+ vim ~/.aery/agent/themes/my-theme.json
49
49
  ```
50
50
 
51
51
  2. Define the theme with all required colors (see [Color Tokens](#color-tokens)):
package/docs/tree.md CHANGED
@@ -216,7 +216,7 @@ interface SessionTreeEvent {
216
216
 
217
217
  ```typescript
218
218
  export default function(pi: HookAPI) {
219
- pi.on("session_before_tree", async (event, ctx) => {
219
+ aery.on("session_before_tree", async (event, ctx) => {
220
220
  if (!event.preparation.userWantsSummary) return;
221
221
  if (event.preparation.entriesToSummarize.length === 0) return;
222
222
 
package/docs/tui.md CHANGED
@@ -89,18 +89,18 @@ Without this propagation, typing with an IME (Chinese, Japanese, Korean, etc.) w
89
89
  **In extensions** via `ctx.ui.custom()`:
90
90
 
91
91
  ```typescript
92
- pi.on("session_start", async (_event, ctx) => {
92
+ aery.on("session_start", async (_event, ctx) => {
93
93
  const handle = ctx.ui.custom(myComponent);
94
94
  // handle.requestRender() - trigger re-render
95
95
  // handle.close() - restore normal UI
96
96
  });
97
97
  ```
98
98
 
99
- **In custom tools** via `pi.ui.custom()`:
99
+ **In custom tools** via `aery.ui.custom()`:
100
100
 
101
101
  ```typescript
102
102
  async execute(toolCallId, params, onUpdate, ctx, signal) {
103
- const handle = pi.ui.custom(myComponent);
103
+ const handle = aery.ui.custom(myComponent);
104
104
  // ...
105
105
  handle.close();
106
106
  }
@@ -363,7 +363,7 @@ class MySelector {
363
363
  Usage in an extension:
364
364
 
365
365
  ```typescript
366
- pi.registerCommand("pick", {
366
+ aery.registerCommand("pick", {
367
367
  description: "Pick an item",
368
368
  handler: async (args, ctx) => {
369
369
  const items = ["Option A", "Option B", "Option C"];
@@ -594,7 +594,7 @@ import type { ExtensionAPI } from "@eminent337/aery";
594
594
  import { DynamicBorder } from "@eminent337/aery";
595
595
  import { Container, type SelectItem, SelectList, Text } from "@eminent337/aery-tui";
596
596
 
597
- pi.registerCommand("pick", {
597
+ aery.registerCommand("pick", {
598
598
  handler: async (_args, ctx) => {
599
599
  const items: SelectItem[] = [
600
600
  { value: "opt1", label: "Option 1", description: "First option" },
@@ -652,7 +652,7 @@ For operations that take time and should be cancellable. `BorderedLoader` shows
652
652
  ```typescript
653
653
  import { BorderedLoader } from "@eminent337/aery";
654
654
 
655
- pi.registerCommand("fetch", {
655
+ aery.registerCommand("fetch", {
656
656
  handler: async (_args, ctx) => {
657
657
  const result = await ctx.ui.custom<string | null>((tui, theme, _kb, done) => {
658
658
  const loader = new BorderedLoader(tui, theme, "Fetching data...");
@@ -685,7 +685,7 @@ For toggling multiple settings. Use `SettingsList` from `@eminent337/aery-tui` w
685
685
  import { getSettingsListTheme } from "@eminent337/aery";
686
686
  import { Container, type SettingItem, SettingsList, Text } from "@eminent337/aery-tui";
687
687
 
688
- pi.registerCommand("settings", {
688
+ aery.registerCommand("settings", {
689
689
  handler: async (_args, ctx) => {
690
690
  const items: SettingItem[] = [
691
691
  { id: "verbose", label: "Verbose mode", currentValue: "off", values: ["on", "off"] },
@@ -874,8 +874,8 @@ class VimEditor extends CustomEditor {
874
874
  }
875
875
  }
876
876
 
877
- export default function (pi: ExtensionAPI) {
878
- pi.on("session_start", (_event, ctx) => {
877
+ export default function (aery: ExtensionAPI) {
878
+ aery.on("session_start", (_event, ctx) => {
879
879
  // Factory receives theme and keybindings from the app
880
880
  ctx.ui.setEditorComponent((tui, theme, keybindings) =>
881
881
  new VimEditor(theme, keybindings)
package/docs/windows.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Pi requires a bash shell on Windows. Checked locations (in order):
4
4
 
5
- 1. Custom path from `~/.pi/agent/settings.json`
5
+ 1. Custom path from `~/.aery/agent/settings.json`
6
6
  2. Git Bash (`C:\Program Files\Git\bin\bash.exe`)
7
7
  3. `bash.exe` on PATH (Cygwin, MSYS2, WSL)
8
8
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eminent337/aery",
3
- "version": "0.1.27",
3
+ "version": "0.1.29",
4
4
  "description": "Aery \u2014 AI coding agent by Aryee",
5
5
  "type": "module",
6
6
  "aeryConfig": {
@@ -98,5 +98,6 @@
98
98
  },
99
99
  "engines": {
100
100
  "node": ">=20.6.0"
101
- }
101
+ },
102
+ "homepage": "https://eminent337.github.io"
102
103
  }