pi-x-ide 1.8.0 → 1.10.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 (48) hide show
  1. package/README.md +41 -35
  2. package/README.zh-CN.md +39 -34
  3. package/dist/package.json +1 -1
  4. package/dist/src/pi/connection.d.ts +2 -1
  5. package/dist/src/pi/connection.js +3 -0
  6. package/dist/src/pi/connection.js.map +1 -1
  7. package/dist/src/pi/context.js +6 -2
  8. package/dist/src/pi/context.js.map +1 -1
  9. package/dist/src/pi/diagnostics.d.ts +15 -0
  10. package/dist/src/pi/diagnostics.js +103 -0
  11. package/dist/src/pi/diagnostics.js.map +1 -0
  12. package/dist/src/pi/index.js +10 -2
  13. package/dist/src/pi/index.js.map +1 -1
  14. package/dist/src/pi/install.js +3 -1
  15. package/dist/src/pi/install.js.map +1 -1
  16. package/dist/src/pi/ui.js +6 -6
  17. package/dist/src/pi/ui.js.map +1 -1
  18. package/dist/src/shared/config-options.d.ts +12 -0
  19. package/dist/src/shared/config-options.js +8 -1
  20. package/dist/src/shared/config-options.js.map +1 -1
  21. package/dist/src/shared/config.d.ts +1 -0
  22. package/dist/src/shared/config.js +14 -1
  23. package/dist/src/shared/config.js.map +1 -1
  24. package/dist/src/shared/protocol.d.ts +46 -1
  25. package/dist/src/shared/schema.d.ts +2 -1
  26. package/dist/src/shared/schema.js +53 -0
  27. package/dist/src/shared/schema.js.map +1 -1
  28. package/dist/test/connection.test.js +62 -0
  29. package/dist/test/connection.test.js.map +1 -1
  30. package/dist/test/diagnostics.test.d.ts +1 -0
  31. package/dist/test/diagnostics.test.js +170 -0
  32. package/dist/test/diagnostics.test.js.map +1 -0
  33. package/dist/test/install.test.js +2 -0
  34. package/dist/test/install.test.js.map +1 -1
  35. package/dist/test/shared.test.js +21 -0
  36. package/dist/test/shared.test.js.map +1 -1
  37. package/package.json +1 -1
  38. package/schemas/config.json +7 -1
  39. package/src/pi/connection.ts +13 -2
  40. package/src/pi/context.ts +7 -2
  41. package/src/pi/diagnostics.ts +118 -0
  42. package/src/pi/index.ts +10 -1
  43. package/src/pi/install.ts +4 -1
  44. package/src/pi/ui.ts +6 -6
  45. package/src/shared/config-options.ts +16 -0
  46. package/src/shared/config.ts +12 -1
  47. package/src/shared/protocol.ts +51 -1
  48. package/src/shared/schema.ts +73 -0
package/README.md CHANGED
@@ -8,11 +8,7 @@ Automatically attaches the currently opened or selected file and text range from
8
8
 
9
9
  ## Installation & Usage
10
10
 
11
- ### 1. Install Pi CLI
12
-
13
- [Pi Quickstart](https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/quickstart.md)
14
-
15
- ### 2. Install the Pi Extension Package
11
+ ### Install the Pi Extension Package
16
12
 
17
13
  ```bash
18
14
  pi install npm:pi-x-ide
@@ -20,13 +16,13 @@ pi install npm:pi-x-ide
20
16
 
21
17
  This installs `pi-x-ide` as a global Pi extension. Pi loads it automatically on startup — no flags needed.
22
18
 
23
- ### 3. Install the IDE Extension
19
+ ### Install the IDE Extension
24
20
 
25
21
  #### VS Code / Cursor / Windsurf
26
22
 
27
23
  **Option A: Install from Marketplace (Recommended)**
28
24
 
29
- Install `balaenis.pi-x-ide` from your IDE's Extensions marketplace.
25
+ Install [balaenis.pi-x-ide](https://marketplace.visualstudio.com/items?itemName=balaenis.pi-x-ide) from your IDE's Extensions marketplace.
30
26
 
31
27
  **Option B: Install via Pi CLI**
32
28
 
@@ -50,9 +46,10 @@ No extension installation is needed. Pi automatically detects Zed when running i
50
46
 
51
47
  Neovim support uses a Lua plugin plus a sidecar process. On first start the
52
48
  plugin downloads a standalone binary for your platform (Linux / macOS / Windows,
53
- x64 or arm64) from GitHub Releases. If the download fails, or no binary matches
54
- your platform, the plugin falls back to the bundled Node.js sidecar Node.js is
55
- then required on PATH.
49
+ x64 or arm64) from GitHub Releases and verifies it against the release asset's
50
+ SHA-256 digest before caching it. If the download or checksum verification fails,
51
+ or no binary matches your platform, the plugin falls back to the bundled Node.js
52
+ sidecar — Node.js is then required on PATH.
56
53
 
57
54
  The binary is cached under `stdpath("cache")/pi-x-ide/` and reused on subsequent
58
55
  starts. Plugin updates trigger a one-time re-download.
@@ -62,18 +59,17 @@ starts. Plugin updates trigger a one-time re-download.
62
59
  ```lua
63
60
  {
64
61
  "balaenis/pi-x-ide",
65
- init = function()
66
- vim.opt.rtp:prepend(vim.fn.stdpath("data") .. "/lazy/pi-x-ide/nvim")
67
- end,
68
- config = function()
69
- require("pi_x_ide").setup({
70
- keymap = "<C-A-k>",
71
- })
62
+ init = function(plugin)
63
+ vim.opt.rtp:prepend(plugin.dir .. "/nvim")
72
64
  end,
65
+ main = "pi_x_ide",
66
+ opts = {
67
+ keymap = "<leader>aa",
68
+ },
73
69
  }
74
70
  ```
75
71
 
76
- > **Note:** The `init` block manually adds the `nvim/` subdirectory to the runtime path to avoid a Lua module resolution issue with some lazy.nvim versions.
72
+ > **Note:** The `init` block manually adds the `nvim/` subdirectory to the runtime path to avoid a Lua module resolution issue with some lazy.nvim versions. The plugin options are passed through lazy.nvim's recommended `opts` field.
77
73
 
78
74
  **Native package:**
79
75
 
@@ -84,7 +80,7 @@ lua require("pi_x_ide").setup({ keymap = "<leader>pa" })
84
80
 
85
81
  See [Configuration Reference](#neovim-2) for full setup options, commands, and troubleshooting.
86
82
 
87
- ### 4. Connect Pi & Verify
83
+ ### Connect Pi & Verify
88
84
 
89
85
  Start Pi in the **same project directory** as your IDE workspace:
90
86
 
@@ -106,6 +102,8 @@ Attach the selection from either side: press `Ctrl+Alt+K` (Linux/Windows) or `Cm
106
102
 
107
103
  Type a chat prompt in Pi and submit it. The selected text is injected as LLM context (does not persist in session history). After submission, the widget shows `sent`.
108
104
 
105
+ For diagnostics in VS Code-family IDEs, place the cursor on an error or warning and open Quick Fix. Choose **Pi: Fix it** to send the diagnostic message, source range, nearby context lines, and related information to Pi and start a diagnostic-analysis turn with a configurable prompt template (see [`fix_prompt`](#pi-side-configuration)). Choose **Pi: Send diagnostic** to paste the diagnostic context into Pi's input box without starting a turn.
106
+
109
107
  **If the connection doesn't appear:**
110
108
 
111
109
  - Run `/ide auto` in Pi to re-attempt matching.
@@ -130,9 +128,10 @@ Pi also registers `Ctrl+Alt+K` in the TUI as a shortcut for `/ide attach` by def
130
128
 
131
129
  #### VS Code
132
130
 
133
- | Key | Type | Default | Description |
134
- | -------------------- | --------------------- | --------- | --------------------------------------------- |
135
- | `piXIde.rangeFormat` | `"comma"` \| `"dash"` | `"comma"` | File reference format for the manual shortcut |
131
+ | Key | Type | Default | Description |
132
+ | -------------------- | --------------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------- |
133
+ | `piXIde.rangeFormat` | `"comma"` \| `"dash"` | `"comma"` | File reference format for the manual shortcut |
134
+ | `piXIde.useTmux` | `boolean` | `false` | Open Pi through `tmux` from the terminal icon. Each click creates a new session that is destroyed when the terminal detaches. |
136
135
 
137
136
  #### Zed
138
137
 
@@ -178,7 +177,7 @@ when no binary matches.
178
177
 
179
178
  #### Pi-side Environment Variables
180
179
 
181
- Pi-side variables can be set as real environment variables or in `~/.pi/config.json` under `env`. Real environment variables take precedence.
180
+ Pi-side variables can be set as real environment variables or in `~/.pi/pi-x-ide/config.json` under `env`. Real environment variables take precedence.
182
181
 
183
182
  | Variable | Default | Description |
184
183
  | ------------------------------- | ------------- | ----------------------------------------------------------------------------------- |
@@ -187,7 +186,13 @@ Pi-side variables can be set as real environment variables or in `~/.pi/config.j
187
186
  | `PI_X_IDE_ZED_DB` | (auto-detect) | Override path to Zed SQLite database |
188
187
  | `PI_X_IDE_ZED_POLL_INTERVAL_MS` | `1000` | Zed SQLite polling interval, clamped to 100-2000 ms |
189
188
 
190
- See [schemas/config.json](schemas/config.json) for editor schema guidance.
189
+ #### Top-level Configuration Options
190
+
191
+ | Option | Default | Description |
192
+ | ------------ | ----------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
193
+ | `fix_prompt` | `Analyze the errors and warnings at the following location, and try to fix them:\n{DIAGNOSTIC}` | Custom prompt prefix when requesting a fix for IDE diagnostics. Use `{DIAGNOSTIC}` as a placeholder for the diagnostic context. If the placeholder is omitted, the diagnostic context is appended after your prompt. |
194
+
195
+ See [schemas/config.json](schemas/config.json) for editor schema guidance. A [config.example.json](config.example.json) is provided as a starting template.
191
196
 
192
197
  ### Feature Parity
193
198
 
@@ -198,6 +203,7 @@ See [schemas/config.json](schemas/config.json) for editor schema guidance.
198
203
  | IDE context attach shortcut | ✅ Default `Ctrl+Alt+K` | ❌ | ✅ Custom configured keymap |
199
204
  | Pi TUI context attach shortcut(default `Ctrl+Alt+K`) | ✅ | ✅ | ✅ |
200
205
  | LLM context injection | ✅ | ✅ | ✅ |
206
+ | `/ide auto` | ✅ | ✅ | ✅ |
201
207
 
202
208
  ### Lock File Protocol
203
209
 
@@ -215,7 +221,7 @@ See [docs/specs/ide-protocol.md](docs/specs/ide-protocol.md) for protocol detail
215
221
 
216
222
  - Node.js ≥ 26
217
223
  - bun ≥ 1.3 (`packageManager` declared as `bun@1.3.14`)
218
- - VS Code ≥ 1.90 (VS Code extension only)
224
+ - VS Code ≥ 1.120.0 (VS Code extension only)
219
225
  - Neovim ≥ 0.9 (Neovim plugin only)
220
226
 
221
227
  ### Install & Build
@@ -235,15 +241,15 @@ To load the local build without installing globally:
235
241
  pi -e ./src/pi/index.ts
236
242
  ```
237
243
 
238
- Common commands:
244
+ All `bun run` commands have equivalent `mise run` tasks (see `mise.toml`):
239
245
 
240
- | Command | Description |
241
- | ------------------------ | -------------------------------------------------------------------------------------------------- |
242
- | `bun run build` | Build Pi-side TypeScript → `dist/` + Neovim sidecar → `nvim/bin/` + VS Code bundle → `vscode/out/` |
243
- | `bun run typecheck` | Type-check only (no output files) |
244
- | `bun run test` | Build + run unit tests |
245
- | `bun run package:vscode` | Package VS Code extension as VSIX |
246
- | `bun run vsix` | Alias for `bun run package:vscode` |
246
+ | Command | Description |
247
+ | ----------------------------- | -------------------------------------------------------------------------------------------------- |
248
+ | `bun run build` | Build Pi-side TypeScript → `dist/` + Neovim sidecar → `nvim/bin/` + VS Code bundle → `vscode/out/` |
249
+ | `bun run typecheck` | Type-check only (no output files) |
250
+ | `bun run test` | Build + run unit tests |
251
+ | `bun run package:vsix` | Package VS Code extension as VSIX |
252
+ | `bun run check:config-schema` | Verify `schemas/config.json` is in sync with the config registry |
247
253
 
248
254
  ### Testing the VS Code Extension Locally
249
255
 
@@ -259,8 +265,8 @@ Common commands:
259
265
  #### Option 2: Package VSIX and Install
260
266
 
261
267
  ```bash
262
- bun run package:vscode
263
- code --install-extension './vscode'-0.1.0.vsix
268
+ bun run package:vsix
269
+ cd vscode && code --install-extension dist/pi-x-ide-$(node -p "require('./package.json').version").vsix
264
270
  ```
265
271
 
266
272
  The extension installed this way runs in all VS Code windows, independent of the F5 Extension Host.
package/README.zh-CN.md CHANGED
@@ -8,11 +8,7 @@
8
8
 
9
9
  ## 安装与使用
10
10
 
11
- ### 1. 安装 Pi CLI
12
-
13
- [Pi Quickstart](https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/quickstart.md)
14
-
15
- ### 2. 安装 Pi 扩展包
11
+ ### 安装 Pi 扩展包
16
12
 
17
13
  ```bash
18
14
  pi install npm:pi-x-ide
@@ -20,13 +16,13 @@ pi install npm:pi-x-ide
20
16
 
21
17
  将 `pi-x-ide` 安装为全局 Pi 扩展,Pi 启动时自动加载,无需额外参数。
22
18
 
23
- ### 3. 安装 IDE 扩展
19
+ ### 安装 IDE 扩展
24
20
 
25
21
  #### VS Code / Cursor / Windsurf
26
22
 
27
23
  **方式一:从 Marketplace 安装(推荐)**
28
24
 
29
- 在 IDE 的扩展商店中搜索并安装 `balaenis.pi-x-ide`。
25
+ 在 IDE 的扩展商店中搜索并安装 [balaenis.pi-x-ide](https://marketplace.visualstudio.com/items?itemName=balaenis.pi-x-ide)。
30
26
 
31
27
  **方式二:通过 Pi CLI 安装**
32
28
 
@@ -50,8 +46,9 @@ PI_X_IDE_AUTO_INSTALL=0
50
46
 
51
47
  Neovim 支持由一个 Lua 插件和一个 sidecar 进程组成。首次启动时插件会自动从
52
48
  GitHub Releases 下载适合当前平台的独立二进制文件(Linux/macOS/Windows,
53
- x64 或 arm64)。下载失败或无匹配二进制时,插件降级到内置的 Node.js sidecar
54
- 此时需要 PATH 中有 Node.js
49
+ x64 或 arm64),并在写入缓存前用 release asset 的 SHA-256 digest 做校验。下载
50
+ 或校验失败、或无匹配二进制时,插件降级到内置的 Node.js sidecar — 此时需要
51
+ PATH 中有 Node.js。
55
52
 
56
53
  二进制文件缓存在 `stdpath("cache")/pi-x-ide/` 目录,后续启动直接复用。插件
57
54
  更新后会触发一次重新下载。
@@ -61,18 +58,17 @@ x64 或 arm64)。下载失败或无匹配二进制时,插件降级到内置
61
58
  ```lua
62
59
  {
63
60
  "balaenis/pi-x-ide",
64
- init = function()
65
- vim.opt.rtp:prepend(vim.fn.stdpath("data") .. "/lazy/pi-x-ide/nvim")
66
- end,
67
- config = function()
68
- require("pi_x_ide").setup({
69
- keymap = "<C-A-k>",
70
- })
61
+ init = function(plugin)
62
+ vim.opt.rtp:prepend(plugin.dir .. "/nvim")
71
63
  end,
64
+ main = "pi_x_ide",
65
+ opts = {
66
+ keymap = "<leader>aa",
67
+ },
72
68
  }
73
69
  ```
74
70
 
75
- > **注意:** `init` 块手动将 `nvim/` 子目录加入 runtime path,以规避部分版本 lazy.nvim 的 Lua 模块解析兼容性问题。
71
+ > **注意:** `init` 块手动将 `nvim/` 子目录加入 runtime path,以规避部分版本 lazy.nvim 的 Lua 模块解析兼容性问题。插件选项通过 lazy.nvim 推荐的 `opts` 字段传入。
76
72
 
77
73
  **原生 package:**
78
74
 
@@ -83,7 +79,7 @@ lua require("pi_x_ide").setup({ keymap = "<leader>pa" })
83
79
 
84
80
  完整配置选项、命令和故障排查见 [配置参考](#neovim-2)。
85
81
 
86
- ### 4. 连接 Pi 并验证
82
+ ### 连接 Pi 并验证
87
83
 
88
84
  在 IDE workspace **同一项目目录** 启动 Pi:
89
85
 
@@ -105,6 +101,8 @@ IDE: vscode ✓ src/foo.ts#L10,20 pending
105
101
 
106
102
  在 Pi 中输入对话提示并提交,选中文本会作为 LLM 上下文注入(不写入 session 历史)。提交后 widget 显示 `sent`。
107
103
 
104
+ 对于 VS Code 系列 IDE 中的诊断信息,把光标放在 error 或 warning 上并打开 Quick Fix。选择 **Pi: Fix it** 会把诊断消息、源码范围、附近上下文行和 related information 发送给 Pi,并用可自定义的 prompt 模板自动开始诊断分析(参见 [`fix_prompt`](#pi-侧配置))。选择 **Pi: Send diagnostic** 只会把诊断上下文粘贴到 Pi 输入框,不会自动开始一轮对话。
105
+
108
106
  **如果连接未出现:**
109
107
 
110
108
  - 在 Pi 中运行 `/ide auto` 重新匹配
@@ -129,9 +127,10 @@ Pi 默认也会在 TUI 中注册 `Ctrl+Alt+K`,作为 `/ide attach` 的快捷
129
127
 
130
128
  #### VS Code
131
129
 
132
- | 键 | 类型 | 默认值 | 说明 |
133
- | -------------------- | --------------------- | --------- | ---------------------------- |
134
- | `piXIde.rangeFormat` | `"comma"` \| `"dash"` | `"comma"` | 手动快捷键生成的文件引用格式 |
130
+ | 键 | 类型 | 默认值 | 说明 |
131
+ | -------------------- | --------------------- | --------- | --------------------------------------------------------------------------------------- |
132
+ | `piXIde.rangeFormat` | `"comma"` \| `"dash"` | `"comma"` | 手动快捷键生成的文件引用格式 |
133
+ | `piXIde.useTmux` | `boolean` | `false` | 通过终端图标用 `tmux` 打开 Pi。每次点击都会创建一个新 session,终端 detach 后自动销毁。 |
135
134
 
136
135
  #### Zed
137
136
 
@@ -176,7 +175,7 @@ require("pi_x_ide").setup({
176
175
 
177
176
  #### Pi 侧环境变量
178
177
 
179
- Pi 侧变量可设为真实环境变量或写入 `~/.pi/config.json` 的 `env` 中。真实环境变量优先级更高。
178
+ Pi 侧变量可设为真实环境变量或写入 `~/.pi/pi-x-ide/config.json` 的 `env` 中。真实环境变量优先级更高。
180
179
 
181
180
  | 变量 | 默认值 | 说明 |
182
181
  | ------------------------------- | ------------ | ------------------------------------------------------------------------- |
@@ -185,7 +184,13 @@ Pi 侧变量可设为真实环境变量或写入 `~/.pi/config.json` 的 `env`
185
184
  | `PI_X_IDE_ZED_DB` | (自动检测) | 覆盖 Zed SQLite 数据库路径 |
186
185
  | `PI_X_IDE_ZED_POLL_INTERVAL_MS` | `1000` | Zed SQLite 轮询间隔,会被限制在 100-2000 ms 范围 |
187
186
 
188
- 编辑器 schema 指导见 [schemas/config.json](schemas/config.json)。
187
+ #### 顶层配置选项
188
+
189
+ | 选项 | 默认值 | 说明 |
190
+ | ------------ | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
191
+ | `fix_prompt` | `Analyze the errors and warnings at the following location, and try to fix them:\n{DIAGNOSTIC}` | 请求修复 IDE 诊断信息时的自定义 prompt 前缀。使用 `{DIAGNOSTIC}` 作为诊断上下文的占位符。如果未包含占位符,诊断上下文会拼接在您的 prompt 之后。 |
192
+
193
+ 编辑器 schema 指导见 [schemas/config.json](schemas/config.json)。[config.example.json](config.example.json) 提供了起始模板。
189
194
 
190
195
  ### 功能对比
191
196
 
@@ -214,7 +219,7 @@ Pi 通过 `ctx.cwd` 与 lock file 中的 `workspaceFolders` 做最长路径匹
214
219
 
215
220
  - Node.js ≥ 26
216
221
  - bun ≥ 1.3(`packageManager` 声明为 `bun@1.3.14`)
217
- - VS Code ≥ 1.90(仅 VS Code 扩展需要)
222
+ - VS Code ≥ 1.120.0(仅 VS Code 扩展需要)
218
223
  - Neovim ≥ 0.9(仅 Neovim 插件需要)
219
224
 
220
225
  ### 安装与构建
@@ -234,15 +239,15 @@ bun run build
234
239
  pi -e ./src/pi/index.ts
235
240
  ```
236
241
 
237
- 常用命令:
242
+ 所有 `bun run` 命令都有等效的 `mise run` 任务(见 `mise.toml`):
238
243
 
239
- | 命令 | 说明 |
240
- | ------------------------ | ----------------------------------------------------------------------------------------------- |
241
- | `bun run build` | 编译 Pi 侧 TypeScript → `dist/` + Neovim sidecar → `nvim/bin/` + VS Code bundle → `vscode/out/` |
242
- | `bun run typecheck` | 类型检查(不产出文件) |
243
- | `bun run test` | 编译 + 运行单元测试 |
244
- | `bun run package:vscode` | 打包 VS Code 扩展为 VSIX |
245
- | `bun run vsix` | `bun run package:vscode` 的别名 |
244
+ | 命令 | 说明 |
245
+ | ----------------------------- | ----------------------------------------------------------------------------------------------- |
246
+ | `bun run build` | 编译 Pi 侧 TypeScript → `dist/` + Neovim sidecar → `nvim/bin/` + VS Code bundle → `vscode/out/` |
247
+ | `bun run typecheck` | 类型检查(不产出文件) |
248
+ | `bun run test` | 编译 + 运行单元测试 |
249
+ | `bun run package:vsix` | 打包 VS Code 扩展为 VSIX |
250
+ | `bun run check:config-schema` | 验证 `schemas/config.json` 与配置注册表是否同步 |
246
251
 
247
252
  ### 本地测试 VS Code 扩展
248
253
 
@@ -258,8 +263,8 @@ pi -e ./src/pi/index.ts
258
263
  #### 方式二:打包 VSIX 后安装
259
264
 
260
265
  ```bash
261
- bun run package:vscode
262
- code --install-extension './vscode'-0.1.0.vsix
266
+ bun run package:vsix
267
+ cd vscode && code --install-extension dist/pi-x-ide-$(node -p "require('./package.json').version").vsix
263
268
  ```
264
269
 
265
270
  这样安装的扩展在所有 VS Code 窗口中运行,不依赖 F5 Extension Host。
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-x-ide",
3
- "version": "1.8.0",
3
+ "version": "1.10.0",
4
4
  "description": "Pi extension package for IDE selection context integration.",
5
5
  "files": [
6
6
  "dist",
@@ -1,4 +1,4 @@
1
- import { type AtMentionedParams, type EditorSelectionSnapshot, type LockFileCandidate, type SelectionClearedParams } from "../shared/protocol";
1
+ import { type DiagnosticFixRequestedParams, type AtMentionedParams, type EditorSelectionSnapshot, type LockFileCandidate, type SelectionClearedParams } from "../shared/protocol";
2
2
  export declare const IDE_CONNECT_TIMEOUT_MS = 5000;
3
3
  export declare class IdeConnectionTimeoutError extends Error {
4
4
  readonly candidate: LockFileCandidate;
@@ -14,6 +14,7 @@ export interface IdeConnectionCallbacks {
14
14
  onSelectionChanged?: (snapshot: EditorSelectionSnapshot) => void;
15
15
  onSelectionCleared?: (params: SelectionClearedParams) => void;
16
16
  onAtMentioned?: (params: AtMentionedParams) => void;
17
+ onDiagnosticFixRequested?: (params: DiagnosticFixRequestedParams) => void;
17
18
  onError?: (error: Error) => void;
18
19
  }
19
20
  export declare class IdeConnection {
@@ -125,6 +125,9 @@ class IdeConnection {
125
125
  const params = withReceivedAt(parsed.params);
126
126
  this.callbacks.onAtMentioned?.(params);
127
127
  }
128
+ else if (parsed.method === "diagnostic_fix_requested" && (0, schema_1.isDiagnosticFixRequestedParams)(parsed.params)) {
129
+ this.callbacks.onDiagnosticFixRequested?.(withReceivedAt(parsed.params));
130
+ }
128
131
  }
129
132
  }
130
133
  exports.IdeConnection = IdeConnection;
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/pi/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/pi/connection.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ exports.registerContextHandlers = registerContextHandlers;
4
4
  exports.setLatestSelection = setLatestSelection;
5
5
  exports.clearLatestSelection = clearLatestSelection;
6
6
  const format_1 = require("../shared/format");
7
+ const diagnostics_1 = require("./diagnostics");
7
8
  const ui_1 = require("./ui");
8
9
  const CONTEXT_MARKER = "pi-x-ide/editor-context";
9
10
  function registerContextHandlers(pi, runtime) {
@@ -25,8 +26,10 @@ function registerContextHandlers(pi, runtime) {
25
26
  return;
26
27
  if (event.message.role !== "user")
27
28
  return;
28
- if (messageContainsMarker(event.message))
29
+ if (messageContainsMarker(event.message)) {
30
+ runtime.turnSelection = undefined;
29
31
  return;
32
+ }
30
33
  const text = `${(0, format_1.formatEditorContext)(runtime.turnSelection, { cwd: ctx.cwd })}\n<!-- ${CONTEXT_MARKER} -->\n`;
31
34
  const message = mergeIntoUserMessage(event.message, text);
32
35
  runtime.attachState = "sent";
@@ -61,6 +64,7 @@ function normalizeUserContent(content) {
61
64
  return typeof content === "string" ? [{ type: "text", text: content }] : content;
62
65
  }
63
66
  function messageContainsMarker(message) {
64
- return JSON.stringify(message).includes(CONTEXT_MARKER);
67
+ const serialized = JSON.stringify(message);
68
+ return serialized.includes(CONTEXT_MARKER) || serialized.includes(diagnostics_1.DIAGNOSTIC_CONTEXT_MARKER);
65
69
  }
66
70
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/pi/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/pi/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent" with { "resolution-mode": "import" };
2
+ import type { DiagnosticFixRequestedParams } from "../shared/protocol";
3
+ import type { PiIdeRuntime } from "./state";
4
+ export declare const DIAGNOSTIC_CONTEXT_MARKER = "pi-x-ide/diagnostic-context";
5
+ export declare function buildDiagnosticFixPrompt(params: DiagnosticFixRequestedParams, options?: {
6
+ cwd?: string;
7
+ fixPrompt?: string;
8
+ }): string;
9
+ export declare function buildDiagnosticContextMessage(params: DiagnosticFixRequestedParams, options?: {
10
+ cwd?: string;
11
+ }): string;
12
+ export declare function formatDiagnosticContext(params: DiagnosticFixRequestedParams, options?: {
13
+ cwd?: string;
14
+ }): string;
15
+ export declare function handleDiagnosticFixRequested(pi: ExtensionAPI, runtime: PiIdeRuntime, params: DiagnosticFixRequestedParams): void;
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DIAGNOSTIC_CONTEXT_MARKER = void 0;
4
+ exports.buildDiagnosticFixPrompt = buildDiagnosticFixPrompt;
5
+ exports.buildDiagnosticContextMessage = buildDiagnosticContextMessage;
6
+ exports.formatDiagnosticContext = formatDiagnosticContext;
7
+ exports.handleDiagnosticFixRequested = handleDiagnosticFixRequested;
8
+ const config_1 = require("../shared/config");
9
+ const paths_1 = require("../shared/paths");
10
+ exports.DIAGNOSTIC_CONTEXT_MARKER = "pi-x-ide/diagnostic-context";
11
+ function buildDiagnosticFixPrompt(params, options = {}) {
12
+ const context = buildDiagnosticContextMessage(params, options);
13
+ const template = options.fixPrompt;
14
+ if (!template) {
15
+ return `Analyze the errors and warnings at the following location, and try to fix them:
16
+ ${context}`;
17
+ }
18
+ if (template.includes("{DIAGNOSTIC}")) {
19
+ return template.replaceAll("{DIAGNOSTIC}", context);
20
+ }
21
+ return `${template}
22
+ ${context}`;
23
+ }
24
+ function buildDiagnosticContextMessage(params, options = {}) {
25
+ return `<!-- ${exports.DIAGNOSTIC_CONTEXT_MARKER} -->
26
+ ${formatDiagnosticContext(params, options)}
27
+ <!-- ${exports.DIAGNOSTIC_CONTEXT_MARKER} -->
28
+ `;
29
+ }
30
+ function formatDiagnosticContext(params, options = {}) {
31
+ const rel = (0, paths_1.toRelativeDisplayPath)(params.filePath, params.workspaceFolder, options.cwd);
32
+ const lines = [`File: ${rel}`, `Source: ${params.source}`];
33
+ if (params.documentVersion !== undefined)
34
+ lines.push(`Document version: ${params.documentVersion}`);
35
+ lines.push(`Trigger range: ${formatRange(params.triggerRange)}`);
36
+ for (const [index, diagnostic] of params.diagnostics.entries()) {
37
+ lines.push("", `Diagnostic ${index + 1}:`);
38
+ lines.push(`- Severity: ${diagnostic.severity}`);
39
+ if (diagnostic.source)
40
+ lines.push(`- Source: ${diagnostic.source}`);
41
+ if (diagnostic.code !== undefined)
42
+ lines.push(`- Code: ${formatDiagnosticCode(diagnostic.code)}`);
43
+ lines.push(`- Range: ${formatRange(diagnostic.range)}`);
44
+ lines.push(`- Message: ${diagnostic.message}`);
45
+ if (diagnostic.selectedText.length > 0) {
46
+ lines.push("- Selected text:", fence(diagnostic.selectedText));
47
+ }
48
+ if (diagnostic.contextLines.length > 0) {
49
+ lines.push("- Context lines:");
50
+ for (const contextLine of diagnostic.contextLines) {
51
+ const marker = contextLine.isPrimary ? ">" : " ";
52
+ lines.push(` ${marker} ${contextLine.line + 1}: ${contextLine.text}`);
53
+ }
54
+ }
55
+ if (diagnostic.relatedInformation && diagnostic.relatedInformation.length > 0) {
56
+ lines.push("- Related information:");
57
+ for (const related of diagnostic.relatedInformation) {
58
+ const relatedPath = (0, paths_1.toRelativeDisplayPath)(related.filePath, params.workspaceFolder, options.cwd);
59
+ lines.push(` - ${relatedPath} ${formatRange(related.range)}: ${related.message}`);
60
+ }
61
+ }
62
+ }
63
+ return lines.join("\n");
64
+ }
65
+ function handleDiagnosticFixRequested(pi, runtime, params) {
66
+ const ctx = runtime.ctx;
67
+ if (!ctx)
68
+ return;
69
+ if (params.action === "send-diagnostic") {
70
+ if (!ctx.hasUI)
71
+ return;
72
+ ctx.ui.pasteToEditor(buildDiagnosticContextMessage(params, { cwd: ctx.cwd }));
73
+ ctx.ui.notify("VS Code diagnostic context added to input.", "info");
74
+ return;
75
+ }
76
+ const fixPrompt = (0, config_1.readPiConfigFixPrompt)();
77
+ const prompt = buildDiagnosticFixPrompt(params, { cwd: ctx.cwd, fixPrompt });
78
+ if (ctx.isIdle()) {
79
+ pi.sendUserMessage(prompt);
80
+ return;
81
+ }
82
+ pi.sendUserMessage(prompt, { deliverAs: "followUp" });
83
+ if (ctx.hasUI)
84
+ ctx.ui.notify("VS Code diagnostic fix request queued.", "info");
85
+ }
86
+ function formatRange(range) {
87
+ const start = formatPosition(range.start);
88
+ const end = formatPosition(range.end);
89
+ return start === end ? start : `${start}-${end}`;
90
+ }
91
+ function formatPosition(position) {
92
+ return `L${position.line + 1}:C${position.character + 1}`;
93
+ }
94
+ function formatDiagnosticCode(code) {
95
+ if (typeof code === "string" || typeof code === "number")
96
+ return String(code);
97
+ return code.target ? `${code.value} (${code.target})` : String(code.value);
98
+ }
99
+ function fence(text) {
100
+ const fenceMarker = text.includes("```") ? "````" : "```";
101
+ return `${fenceMarker}\n${text}\n${fenceMarker}`;
102
+ }
103
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/pi/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ const connection_1 = require("./connection");
8
8
  const install_1 = require("./install");
9
9
  const commands_1 = require("./commands");
10
10
  const context_1 = require("./context");
11
+ const diagnostics_1 = require("./diagnostics");
11
12
  const reconnect_1 = require("./reconnect");
12
13
  const state_1 = require("./state");
13
14
  const ui_1 = require("./ui");
@@ -15,10 +16,12 @@ const zed_1 = require("./zed");
15
16
  const RECONNECT_DELAY_MS = 2_000;
16
17
  const INSTALL_RECONNECT_RETRY_MS = 1_500;
17
18
  const INSTALL_RECONNECT_TIMEOUT_MS = 15_000;
19
+ let activePi;
18
20
  function formatConnectTimeoutMessage(error) {
19
21
  return `${error.message}.`;
20
22
  }
21
23
  function default_1(pi) {
24
+ activePi = pi;
22
25
  const runtime = (0, state_1.createRuntime)();
23
26
  (0, context_1.registerContextHandlers)(pi, runtime);
24
27
  (0, commands_1.registerIdeCommand)(pi, runtime, {
@@ -231,7 +234,7 @@ async function connectCandidate(runtime, candidate, ctx, options = {}) {
231
234
  runtime.connectionMessage = `Connecting to ${candidate.lock.name} at ${candidate.lock.host}:${candidate.lock.port}`;
232
235
  (0, ui_1.updateIdeUi)(runtime, ctx);
233
236
  const connectionRef = {};
234
- const connection = new connection_1.IdeConnection(candidate, ctx.cwd, createConnectionCallbacks(runtime, () => connectionRef.current));
237
+ const connection = new connection_1.IdeConnection(candidate, ctx.cwd, createConnectionCallbacks(activePi, runtime, () => connectionRef.current));
235
238
  connectionRef.current = connection;
236
239
  runtime.connection = connection;
237
240
  try {
@@ -255,7 +258,7 @@ async function connectCandidate(runtime, candidate, ctx, options = {}) {
255
258
  }
256
259
  }
257
260
  }
258
- function createConnectionCallbacks(runtime, getConnection) {
261
+ function createConnectionCallbacks(pi, runtime, getConnection) {
259
262
  return {
260
263
  onConnected: (server) => {
261
264
  if (!isCurrentConnection(runtime, getConnection()))
@@ -292,6 +295,11 @@ function createConnectionCallbacks(runtime, getConnection) {
292
295
  return;
293
296
  handleAtMentioned(runtime, params);
294
297
  },
298
+ onDiagnosticFixRequested: (params) => {
299
+ if (!pi || !isCurrentConnection(runtime, getConnection()))
300
+ return;
301
+ (0, diagnostics_1.handleDiagnosticFixRequested)(pi, runtime, params);
302
+ },
295
303
  onError: (error) => {
296
304
  if (!isCurrentConnection(runtime, getConnection()))
297
305
  return;