@earendil-works/pi-coding-agent 0.78.1 → 0.79.0

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.
Files changed (129) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +21 -4
  3. package/dist/cli/args.d.ts +1 -0
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +12 -2
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/core/agent-session-runtime.d.ts +3 -1
  8. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  9. package/dist/core/agent-session-runtime.js +1 -0
  10. package/dist/core/agent-session-runtime.js.map +1 -1
  11. package/dist/core/agent-session-services.d.ts +2 -1
  12. package/dist/core/agent-session-services.d.ts.map +1 -1
  13. package/dist/core/agent-session-services.js +2 -2
  14. package/dist/core/agent-session-services.js.map +1 -1
  15. package/dist/core/compaction/utils.d.ts +1 -1
  16. package/dist/core/compaction/utils.d.ts.map +1 -1
  17. package/dist/core/compaction/utils.js +1 -1
  18. package/dist/core/compaction/utils.js.map +1 -1
  19. package/dist/core/extensions/index.d.ts +1 -1
  20. package/dist/core/extensions/index.d.ts.map +1 -1
  21. package/dist/core/extensions/index.js.map +1 -1
  22. package/dist/core/extensions/loader.d.ts +1 -1
  23. package/dist/core/extensions/loader.d.ts.map +1 -1
  24. package/dist/core/extensions/loader.js +4 -4
  25. package/dist/core/extensions/loader.js.map +1 -1
  26. package/dist/core/extensions/runner.d.ts +6 -2
  27. package/dist/core/extensions/runner.d.ts.map +1 -1
  28. package/dist/core/extensions/runner.js +28 -0
  29. package/dist/core/extensions/runner.js.map +1 -1
  30. package/dist/core/extensions/types.d.ts +18 -1
  31. package/dist/core/extensions/types.d.ts.map +1 -1
  32. package/dist/core/extensions/types.js.map +1 -1
  33. package/dist/core/model-registry.d.ts.map +1 -1
  34. package/dist/core/model-registry.js +1 -0
  35. package/dist/core/model-registry.js.map +1 -1
  36. package/dist/core/package-manager.d.ts +1 -0
  37. package/dist/core/package-manager.d.ts.map +1 -1
  38. package/dist/core/package-manager.js +25 -7
  39. package/dist/core/package-manager.js.map +1 -1
  40. package/dist/core/resource-loader.d.ts +13 -2
  41. package/dist/core/resource-loader.d.ts.map +1 -1
  42. package/dist/core/resource-loader.js +129 -54
  43. package/dist/core/resource-loader.js.map +1 -1
  44. package/dist/core/settings-manager.d.ts +10 -2
  45. package/dist/core/settings-manager.d.ts.map +1 -1
  46. package/dist/core/settings-manager.js +71 -30
  47. package/dist/core/settings-manager.js.map +1 -1
  48. package/dist/core/slash-commands.d.ts.map +1 -1
  49. package/dist/core/slash-commands.js +1 -0
  50. package/dist/core/slash-commands.js.map +1 -1
  51. package/dist/core/tools/bash.d.ts.map +1 -1
  52. package/dist/core/tools/bash.js +1 -1
  53. package/dist/core/tools/bash.js.map +1 -1
  54. package/dist/core/tools/find.d.ts.map +1 -1
  55. package/dist/core/tools/find.js +1 -1
  56. package/dist/core/tools/find.js.map +1 -1
  57. package/dist/core/tools/grep.d.ts.map +1 -1
  58. package/dist/core/tools/grep.js +1 -1
  59. package/dist/core/tools/grep.js.map +1 -1
  60. package/dist/core/tools/ls.d.ts.map +1 -1
  61. package/dist/core/tools/ls.js +1 -1
  62. package/dist/core/tools/ls.js.map +1 -1
  63. package/dist/core/tools/read.d.ts.map +1 -1
  64. package/dist/core/tools/read.js +1 -1
  65. package/dist/core/tools/read.js.map +1 -1
  66. package/dist/core/tools/write.d.ts.map +1 -1
  67. package/dist/core/tools/write.js +1 -1
  68. package/dist/core/tools/write.js.map +1 -1
  69. package/dist/core/trust-manager.d.ts +10 -0
  70. package/dist/core/trust-manager.d.ts.map +1 -0
  71. package/dist/core/trust-manager.js +133 -0
  72. package/dist/core/trust-manager.js.map +1 -0
  73. package/dist/index.d.ts +5 -4
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +2 -1
  76. package/dist/index.js.map +1 -1
  77. package/dist/main.d.ts.map +1 -1
  78. package/dist/main.js +195 -6
  79. package/dist/main.js.map +1 -1
  80. package/dist/modes/index.d.ts +1 -1
  81. package/dist/modes/index.d.ts.map +1 -1
  82. package/dist/modes/index.js.map +1 -1
  83. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  84. package/dist/modes/interactive/components/bash-execution.js +2 -2
  85. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  86. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  87. package/dist/modes/interactive/components/footer.js +7 -0
  88. package/dist/modes/interactive/components/footer.js.map +1 -1
  89. package/dist/modes/interactive/components/index.d.ts +1 -0
  90. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  91. package/dist/modes/interactive/components/index.js +1 -0
  92. package/dist/modes/interactive/components/index.js.map +1 -1
  93. package/dist/modes/interactive/components/trust-selector.d.ts +20 -0
  94. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
  95. package/dist/modes/interactive/components/trust-selector.js +86 -0
  96. package/dist/modes/interactive/components/trust-selector.js.map +1 -0
  97. package/dist/modes/interactive/interactive-mode.d.ts +7 -0
  98. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  99. package/dist/modes/interactive/interactive-mode.js +85 -1
  100. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  101. package/dist/package-manager-cli.d.ts.map +1 -1
  102. package/dist/package-manager-cli.js +55 -8
  103. package/dist/package-manager-cli.js.map +1 -1
  104. package/docs/docs.json +4 -0
  105. package/docs/extensions.md +22 -1
  106. package/docs/index.md +1 -0
  107. package/docs/packages.md +3 -1
  108. package/docs/prompt-templates.md +1 -1
  109. package/docs/sdk.md +5 -0
  110. package/docs/security.md +57 -0
  111. package/docs/settings.md +10 -0
  112. package/docs/skills.md +1 -1
  113. package/docs/terminal-setup.md +36 -2
  114. package/docs/themes.md +1 -1
  115. package/docs/tmux.md +4 -2
  116. package/docs/usage.md +15 -3
  117. package/examples/extensions/README.md +1 -0
  118. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  119. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  120. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  121. package/examples/extensions/gondolin/package-lock.json +2 -2
  122. package/examples/extensions/gondolin/package.json +1 -1
  123. package/examples/extensions/project-trust.ts +64 -0
  124. package/examples/extensions/sandbox/package-lock.json +2 -2
  125. package/examples/extensions/sandbox/package.json +1 -1
  126. package/examples/extensions/with-deps/package-lock.json +2 -2
  127. package/examples/extensions/with-deps/package.json +1 -1
  128. package/npm-shrinkwrap.json +12 -12
  129. package/package.json +4 -8
package/docs/skills.md CHANGED
@@ -26,7 +26,7 @@ Pi loads skills from:
26
26
  - Global:
27
27
  - `~/.pi/agent/skills/`
28
28
  - `~/.agents/skills/`
29
- - Project:
29
+ - Project (only after the project is trusted):
30
30
  - `.pi/skills/`
31
31
  - `.agents/skills/` in `cwd` and ancestor directories (up to git repo root, or filesystem root when not in a repo)
32
32
  - Packages: `skills/` directories or `pi.skills` entries in `package.json`
@@ -40,7 +40,7 @@ If you want `Shift+Enter` to keep working in tmux via that remap, add `ctrl+j` t
40
40
 
41
41
  ## WezTerm
42
42
 
43
- Create `~/.wezterm.lua`:
43
+ WezTerm usually works out of the box for `Shift+Enter` via xterm modifyOtherKeys. To use the Kitty keyboard protocol explicitly, create `~/.wezterm.lua`:
44
44
 
45
45
  ```lua
46
46
  local wezterm = require 'wezterm'
@@ -49,16 +49,50 @@ config.enable_kitty_keyboard = true
49
49
  return config
50
50
  ```
51
51
 
52
+ On macOS, WezTerm binds `Option+Enter` to fullscreen by default. To use `Option+Enter` for pi follow-up queueing, add this key override:
53
+
54
+ ```lua
55
+ local wezterm = require 'wezterm'
56
+ local config = wezterm.config_builder()
57
+ config.keys = {
58
+ {
59
+ key = 'Enter',
60
+ mods = 'ALT',
61
+ action = wezterm.action.SendString('\x1b[13;3u'),
62
+ },
63
+ }
64
+ return config
65
+ ```
66
+
67
+ If you already have a `config.keys` table, add the entry to it.
68
+
52
69
  On WSL, WezTerm may require a visible hardware cursor for IME candidate window positioning. If CJK IME candidates do not follow the text cursor, set `PI_HARDWARE_CURSOR=1` before running pi or set `showHardwareCursor` to `true` in settings.
53
70
 
71
+ ## Alacritty
72
+
73
+ Alacritty usually works out of the box for `Shift+Enter`. On macOS, `Option+Enter` may arrive as plain `Enter`. To use `Option+Enter` for pi follow-up queueing, add to `~/.config/alacritty/alacritty.toml`:
74
+
75
+ ```toml
76
+ [[keyboard.bindings]]
77
+ key = "Enter"
78
+ mods = "Alt"
79
+ chars = "\u001b[13;3u"
80
+ ```
81
+
82
+ Restart Alacritty after changing the config.
83
+
54
84
  ## VS Code (Integrated Terminal)
55
85
 
86
+ VS Code 1.109.5 and newer enable Kitty keyboard protocol in the integrated terminal by default, so `Shift+Enter` should work out of the box.
87
+
88
+ VS Code versions older than 1.109.5 need an explicit terminal keybinding for `Shift+Enter`.
89
+
56
90
  `keybindings.json` locations:
57
91
  - macOS: `~/Library/Application Support/Code/User/keybindings.json`
58
92
  - Linux: `~/.config/Code/User/keybindings.json`
59
93
  - Windows: `%APPDATA%\\Code\\User\\keybindings.json`
60
94
 
61
- Add to `keybindings.json` to enable `Shift+Enter` for multi-line input:
95
+ Add to `keybindings.json`:
62
96
 
63
97
  ```json
64
98
  {
package/docs/themes.md CHANGED
@@ -20,7 +20,7 @@ Pi loads themes from:
20
20
 
21
21
  - Built-in: `dark`, `light`
22
22
  - Global: `~/.pi/agent/themes/*.json`
23
- - Project: `.pi/themes/*.json`
23
+ - Project: `.pi/themes/*.json` (only after the project is trusted)
24
24
  - Packages: `themes/` directories or `pi.themes` entries in `package.json`
25
25
  - Settings: `themes` array with files or directories
26
26
  - CLI: `--theme <path>` (repeatable)
package/docs/tmux.md CHANGED
@@ -18,7 +18,7 @@ tmux kill-server
18
18
  tmux
19
19
  ```
20
20
 
21
- Pi requests extended key reporting automatically when Kitty keyboard protocol is not available. With `extended-keys-format csi-u`, tmux forwards modified keys in CSI-u format, which is the most reliable configuration.
21
+ Pi requests extended key reporting automatically when Kitty keyboard protocol is not available. With `extended-keys-format csi-u`, tmux forwards modified keys in CSI-u format, which is the most reliable configuration. The `extended-keys-format` option requires tmux 3.5 or later.
22
22
 
23
23
  ## Why `csi-u` Is Recommended
24
24
 
@@ -57,5 +57,7 @@ This affects the default keybindings (`Enter` to submit, `Shift+Enter` for newli
57
57
 
58
58
  ## Requirements
59
59
 
60
- - tmux 3.2 or later (run `tmux -V` to check)
60
+ - tmux 3.5 or later for `extended-keys-format csi-u` (run `tmux -V` to check)
61
61
  - A terminal emulator that supports extended keys (Ghostty, Kitty, iTerm2, WezTerm, Windows Terminal)
62
+
63
+ With tmux 3.2 through 3.4, omit `extended-keys-format csi-u`; Pi still supports tmux's default xterm `modifyOtherKeys` format.
package/docs/usage.md CHANGED
@@ -96,8 +96,8 @@ See [Sessions](sessions.md) and [Compaction](compaction.md) for details.
96
96
  Pi loads `AGENTS.md` or `CLAUDE.md` at startup from:
97
97
 
98
98
  - `~/.pi/agent/AGENTS.md` for global instructions
99
- - parent directories, walking up from the current working directory
100
- - the current directory
99
+ - parent directories, walking up from the current working directory when the project is trusted
100
+ - the current directory when the project is trusted
101
101
 
102
102
  Use context files for project conventions, commands, safety rules, and preferences. Disable loading with `--no-context-files` or `-nc`.
103
103
 
@@ -110,6 +110,16 @@ Replace the default system prompt with:
110
110
 
111
111
  Append to the default prompt without replacing it with `APPEND_SYSTEM.md` in either location.
112
112
 
113
+ ### Project Trust
114
+
115
+ On interactive startup, pi asks before trusting a project folder that contains project-local inputs and has no saved decision in `~/.pi/agent/trust.json`. Trusting a project allows pi to read project instructions (`AGENTS.md`/`CLAUDE.md`), load `.pi/settings.json` and `.pi` resources, install missing project packages, and execute project extensions.
116
+
117
+ Non-interactive modes (`-p`, `--mode json`, and `--mode rpc`) do not show a trust prompt. Without a saved trust decision, they ignore project-local inputs unless `--approve`/`-a` is passed. Use `--no-approve`/`-na` to ignore project-local inputs for one run even when the project is trusted.
118
+
119
+ `pi config` assumes project trust for that command so you can view and change project resource settings before starting a session. It does not save a trust decision; starting a session in that folder still prompts. Pass `--no-approve` to hide project-local inputs in `pi config`.
120
+
121
+ Use `/trust` in interactive mode to save a project trust decision for future sessions. It writes `~/.pi/agent/trust.json` only; the current session is not reloaded, so restart pi for changes to take effect.
122
+
113
123
  ## Exporting and Sharing Sessions
114
124
 
115
125
  Use `/export [file]` to write a session to HTML.
@@ -138,7 +148,7 @@ pi list # List installed packages
138
148
  pi config # Enable/disable package resources
139
149
  ```
140
150
 
141
- These commands manage pi packages, not the pi CLI installation. To uninstall pi itself, see [Quickstart](quickstart.md#uninstall).
151
+ These commands manage pi packages, not the pi CLI installation. To uninstall pi itself, see [Quickstart](quickstart.md#uninstall). Project package commands accept `--approve`/`--no-approve` to trust or ignore project-local package settings for one command.
142
152
 
143
153
  See [Pi Packages](packages.md) for package sources and security notes.
144
154
 
@@ -219,6 +229,8 @@ pi --no-extensions -e ./my-extension.ts
219
229
  | `--system-prompt <text>` | Replace default prompt; context files and skills are still appended |
220
230
  | `--append-system-prompt <text>` | Append to system prompt |
221
231
  | `--verbose` | Force verbose startup |
232
+ | `-a`, `--approve` | Trust project-local files for this run |
233
+ | `-na`, `--no-approve` | Ignore project-local files for this run |
222
234
  | `-h`, `--help` | Show help |
223
235
  | `-v`, `--version` | Show version |
224
236
 
@@ -19,6 +19,7 @@ cp permission-gate.ts ~/.pi/agent/extensions/
19
19
  | Extension | Description |
20
20
  |-----------|-------------|
21
21
  | `permission-gate.ts` | Prompts for confirmation before dangerous bash commands (rm -rf, sudo, etc.) |
22
+ | `project-trust.ts` | Demonstrates the `project_trust` event for user/global and CLI extensions |
22
23
  | `protected-paths.ts` | Blocks writes to protected paths (.env, .git/, node_modules/) |
23
24
  | `confirm-destructive.ts` | Confirms before destructive session actions (clear, switch, fork) |
24
25
  | `dirty-repo-guard.ts` | Prevents session changes with uncommitted git changes |
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider",
3
- "version": "0.78.1",
3
+ "version": "0.79.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-custom-provider",
9
- "version": "0.78.1",
9
+ "version": "0.79.0",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sdk": "^0.52.0"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider-anthropic",
3
3
  "private": true,
4
- "version": "0.78.1",
4
+ "version": "0.79.0",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider-gitlab-duo",
3
3
  "private": true,
4
- "version": "0.78.1",
4
+ "version": "0.79.0",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-gondolin",
3
- "version": "0.78.1",
3
+ "version": "0.79.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-gondolin",
9
- "version": "0.78.1",
9
+ "version": "0.79.0",
10
10
  "dependencies": {
11
11
  "@earendil-works/gondolin": "0.12.0"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-gondolin",
3
3
  "private": true,
4
- "version": "0.78.1",
4
+ "version": "0.79.0",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Project Trust Extension
3
+ *
4
+ * Demonstrates the project_trust event. Install globally or pass via -e:
5
+ *
6
+ * mkdir -p ~/.pi/agent/extensions
7
+ * cp packages/coding-agent/examples/extensions/project-trust.ts ~/.pi/agent/extensions/
8
+ *
9
+ * Or:
10
+ *
11
+ * pi -e packages/coding-agent/examples/extensions/project-trust.ts
12
+ *
13
+ * Try it in a project containing .pi, AGENTS.md/CLAUDE.md, or .agents/skills.
14
+ */
15
+
16
+ import type { ExtensionAPI, ProjectTrustEventResult } from "@earendil-works/pi-coding-agent";
17
+
18
+ export default function (pi: ExtensionAPI) {
19
+ let loadCount = 0;
20
+ loadCount++;
21
+
22
+ // Multiple handlers in one extension are allowed. The first handler that returns
23
+ // { trusted: "yes" } or { trusted: "no" } wins and suppresses the built-in
24
+ // trust prompt. Return { trusted: "undecided" } to let another handler or the
25
+ // built-in flow decide.
26
+ pi.on("project_trust", async (event, ctx): Promise<ProjectTrustEventResult> => {
27
+ ctx.ui.notify(`project_trust fired for ${event.cwd} (mode: ${ctx.mode}, load: ${loadCount})`, "info");
28
+
29
+ if (!ctx.hasUI) {
30
+ return { trusted: "undecided" };
31
+ }
32
+
33
+ const choice = await ctx.ui.select(`Project trust for:\n${event.cwd}`, [
34
+ "Trust and remember",
35
+ "Trust with note and remember",
36
+ "Trust this session",
37
+ "Do not trust this session",
38
+ "Let built-in prompt decide",
39
+ ]);
40
+
41
+ if (choice === "Trust with note and remember") {
42
+ const note = await ctx.ui.input("Project trust note", "Optional note for this demo");
43
+ ctx.ui.notify(note ? `Recorded demo note: ${note}` : "No demo note entered", "info");
44
+ return { trusted: "yes", remember: true };
45
+ }
46
+ if (choice === "Trust and remember") {
47
+ return { trusted: "yes", remember: true };
48
+ }
49
+ if (choice === "Trust this session") {
50
+ return { trusted: "yes" };
51
+ }
52
+ if (choice === "Do not trust this session") {
53
+ return { trusted: "no" };
54
+ }
55
+ if (choice === "Let built-in prompt decide") {
56
+ return { trusted: "undecided" };
57
+ }
58
+ return { trusted: "undecided" };
59
+ });
60
+
61
+ pi.on("session_start", (_event, ctx) => {
62
+ ctx.ui.notify(`project-trust example loaded after trust resolution in ${ctx.cwd}`, "info");
63
+ });
64
+ }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
- "version": "1.8.1",
3
+ "version": "1.9.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-sandbox",
9
- "version": "1.8.1",
9
+ "version": "1.9.0",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sandbox-runtime": "^0.0.26"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
3
  "private": true,
4
- "version": "1.8.1",
4
+ "version": "1.9.0",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-with-deps",
3
- "version": "0.78.1",
3
+ "version": "0.79.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-with-deps",
9
- "version": "0.78.1",
9
+ "version": "0.79.0",
10
10
  "dependencies": {
11
11
  "ms": "^2.1.3"
12
12
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-with-deps",
3
3
  "private": true,
4
- "version": "0.78.1",
4
+ "version": "0.79.0",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@earendil-works/pi-coding-agent",
3
- "version": "0.78.1",
3
+ "version": "0.79.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@earendil-works/pi-coding-agent",
9
- "version": "0.78.1",
9
+ "version": "0.79.0",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@earendil-works/pi-agent-core": "^0.78.1",
13
- "@earendil-works/pi-ai": "^0.78.1",
14
- "@earendil-works/pi-tui": "^0.78.1",
12
+ "@earendil-works/pi-agent-core": "^0.79.0",
13
+ "@earendil-works/pi-ai": "^0.79.0",
14
+ "@earendil-works/pi-tui": "^0.79.0",
15
15
  "@silvia-odwyer/photon-node": "0.3.4",
16
16
  "chalk": "5.6.2",
17
17
  "cross-spawn": "7.0.6",
@@ -473,11 +473,11 @@
473
473
  }
474
474
  },
475
475
  "node_modules/@earendil-works/pi-agent-core": {
476
- "version": "0.78.1",
477
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.78.1.tgz",
476
+ "version": "0.79.0",
477
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.79.0.tgz",
478
478
  "license": "MIT",
479
479
  "dependencies": {
480
- "@earendil-works/pi-ai": "^0.78.1",
480
+ "@earendil-works/pi-ai": "^0.79.0",
481
481
  "ignore": "7.0.5",
482
482
  "typebox": "1.1.38",
483
483
  "yaml": "2.9.0"
@@ -487,8 +487,8 @@
487
487
  }
488
488
  },
489
489
  "node_modules/@earendil-works/pi-ai": {
490
- "version": "0.78.1",
491
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.78.1.tgz",
490
+ "version": "0.79.0",
491
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.79.0.tgz",
492
492
  "license": "MIT",
493
493
  "dependencies": {
494
494
  "@anthropic-ai/sdk": "0.91.1",
@@ -510,8 +510,8 @@
510
510
  }
511
511
  },
512
512
  "node_modules/@earendil-works/pi-tui": {
513
- "version": "0.78.1",
514
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.78.1.tgz",
513
+ "version": "0.79.0",
514
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.79.0.tgz",
515
515
  "license": "MIT",
516
516
  "dependencies": {
517
517
  "get-east-asian-width": "1.6.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@earendil-works/pi-coding-agent",
3
- "version": "0.78.1",
3
+ "version": "0.79.0",
4
4
  "description": "Coding agent CLI with read, bash, edit, write tools and session management",
5
5
  "type": "module",
6
6
  "piConfig": {
@@ -15,10 +15,6 @@
15
15
  ".": {
16
16
  "types": "./dist/index.d.ts",
17
17
  "import": "./dist/index.js"
18
- },
19
- "./hooks": {
20
- "types": "./dist/core/hooks/index.d.ts",
21
- "import": "./dist/core/hooks/index.js"
22
18
  }
23
19
  },
24
20
  "files": [
@@ -40,9 +36,9 @@
40
36
  "prepublishOnly": "npm run clean && npm run build && npm run shrinkwrap"
41
37
  },
42
38
  "dependencies": {
43
- "@earendil-works/pi-agent-core": "^0.78.1",
44
- "@earendil-works/pi-ai": "^0.78.1",
45
- "@earendil-works/pi-tui": "^0.78.1",
39
+ "@earendil-works/pi-agent-core": "^0.79.0",
40
+ "@earendil-works/pi-ai": "^0.79.0",
41
+ "@earendil-works/pi-tui": "^0.79.0",
46
42
  "@silvia-odwyer/photon-node": "0.3.4",
47
43
  "chalk": "5.6.2",
48
44
  "cross-spawn": "7.0.6",