pi-x-ide 1.7.0 → 1.8.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.
package/README.md CHANGED
@@ -102,7 +102,7 @@ Open a file in your IDE and select some text. The widget should update in real t
102
102
  IDE: vscode ✓ src/foo.ts#L10,20 pending
103
103
  ```
104
104
 
105
- Press `Ctrl+Alt+K` (Linux/Windows) or `Cmd+Alt+K` (macOS) the Pi input box should insert `@src/foo.ts#L10,20`.
105
+ Attach the selection from either side: press `Ctrl+Alt+K` (Linux/Windows) or `Cmd+Alt+K` (macOS) in a VS Code-family IDE, or focus the Pi TUI and press `Ctrl+Alt+K` / run `/ide attach`. The Pi input box should insert `@src/foo.ts#L10,20`.
106
106
 
107
107
  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
108
 
@@ -124,6 +124,8 @@ Type a chat prompt in Pi and submit it. The selected text is injected as LLM con
124
124
  | `/ide attach` | Manually insert the latest selection range into the input box |
125
125
  | `/ide install` | Install or update `balaenis.pi-x-ide` through a supported IDE CLI |
126
126
 
127
+ Pi also registers `Ctrl+Alt+K` in the TUI as a shortcut for `/ide attach` by default. Repeated presses append the latest selected range to the current input, so you can select multiple ranges in the editor and attach them one by one. On macOS, this is a terminal shortcut (`Ctrl+Option+K`); `Cmd` shortcuts are handled by the terminal/OS and are not available to Pi's TUI. Set `PI_X_IDE_ATTACH_SHORTCUT` to another pi key id to customize it, or to `off`/`none`/`false`/`0` to disable it.
128
+
127
129
  ### Configuration Reference
128
130
 
129
131
  #### VS Code
@@ -178,23 +180,24 @@ when no binary matches.
178
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
182
 
181
- | Variable | Default | Description |
182
- | ------------------------------- | ------------- | --------------------------------------------------- |
183
- | `PI_X_IDE_AUTO_INSTALL` | `1` | Auto-install VS Code extension on Pi startup |
184
- | `PI_X_IDE_ZED_DB` | (auto-detect) | Override path to Zed SQLite database |
185
- | `PI_X_IDE_ZED_POLL_INTERVAL_MS` | `1000` | Zed SQLite polling interval, clamped to 100-2000 ms |
183
+ | Variable | Default | Description |
184
+ | ------------------------------- | ------------- | ----------------------------------------------------------------------------------- |
185
+ | `PI_X_IDE_AUTO_INSTALL` | `1` | Auto-install VS Code extension on Pi startup |
186
+ | `PI_X_IDE_ATTACH_SHORTCUT` | `ctrl+alt+k` | Pi TUI shortcut for `/ide attach`; set to `off`, `none`, `false`, or `0` to disable |
187
+ | `PI_X_IDE_ZED_DB` | (auto-detect) | Override path to Zed SQLite database |
188
+ | `PI_X_IDE_ZED_POLL_INTERVAL_MS` | `1000` | Zed SQLite polling interval, clamped to 100-2000 ms |
186
189
 
187
190
  See [schemas/config.json](schemas/config.json) for editor schema guidance.
188
191
 
189
192
  ### Feature Parity
190
193
 
191
- | Feature | VS Code | Zed | Neovim |
192
- | ----------------------------------- | ----------------- | ------------------------------- | ----------------------------- |
193
- | Live file tracking | ✅ Real-time push | ✅ 1s polling | ✅ Real-time push via sidecar |
194
- | Live selection tracking | ✅ Real-time push | ✅ 1s polling | ✅ Real-time push via sidecar |
195
- | `Ctrl+Alt+K` / `Cmd+Alt+K` shortcut | ✅ | Use `@<relative-path>` manually | User-configured keymap |
196
- | LLM context injection | ✅ | ✅ | ✅ |
197
- | `/ide auto` | ✅ | ✅ | ✅ |
194
+ | Feature | VS Code | Zed | Neovim |
195
+ | ---------------------------------------------------- | ----------------------- | ---------- | ----------------------------- |
196
+ | Live file tracking | ✅ Real-time push | ✅ polling | ✅ Real-time push via sidecar |
197
+ | Live selection tracking | ✅ Real-time push | ✅ polling | ✅ Real-time push via sidecar |
198
+ | IDE context attach shortcut | ✅ Default `Ctrl+Alt+K` | | ✅ Custom configured keymap |
199
+ | Pi TUI context attach shortcut(default `Ctrl+Alt+K`) | ✅ | ✅ | ✅ |
200
+ | LLM context injection | ✅ | ✅ | ✅ |
198
201
 
199
202
  ### Lock File Protocol
200
203
 
package/README.zh-CN.md CHANGED
@@ -101,7 +101,7 @@ Pi 自动加载 `pi-x-ide` 并连接 IDE。TUI 底部应显示 `IDE: vscode ✓`
101
101
  IDE: vscode ✓ src/foo.ts#L10,20 pending
102
102
  ```
103
103
 
104
- `Ctrl+Alt+K`(Linux/Windows)或 `Cmd+Alt+K`(macOS),Pi 输入框应插入 `@src/foo.ts#L10,20`。
104
+ 可以从任一侧附加选区:在 VS Code 系列 IDE 中按 `Ctrl+Alt+K`(Linux/Windows)或 `Cmd+Alt+K`(macOS),或聚焦 Pi TUI 后按 `Ctrl+Alt+K` / 运行 `/ide attach`。Pi 输入框应插入 `@src/foo.ts#L10,20`。
105
105
 
106
106
  在 Pi 中输入对话提示并提交,选中文本会作为 LLM 上下文注入(不写入 session 历史)。提交后 widget 显示 `sent`。
107
107
 
@@ -123,6 +123,8 @@ IDE: vscode ✓ src/foo.ts#L10,20 pending
123
123
  | `/ide attach` | 手动把最新 selection range 插入输入框 |
124
124
  | `/ide install` | 通过支持的 IDE CLI 安装或更新 `balaenis.pi-x-ide` |
125
125
 
126
+ Pi 默认也会在 TUI 中注册 `Ctrl+Alt+K`,作为 `/ide attach` 的快捷键。重复按下会把最新选中的范围追加到当前输入框,因此可以在编辑器中多次选择不同文本并逐个附加。macOS 上这是终端快捷键(`Ctrl+Option+K`);`Cmd` 快捷键通常由终端或系统处理,Pi TUI 无法接收。设置 `PI_X_IDE_ATTACH_SHORTCUT` 可改成其他 pi key id;设为 `off`/`none`/`false`/`0` 可禁用。
127
+
126
128
  ### 配置参考
127
129
 
128
130
  #### VS Code
@@ -176,23 +178,25 @@ require("pi_x_ide").setup({
176
178
 
177
179
  Pi 侧变量可设为真实环境变量或写入 `~/.pi/config.json` 的 `env` 中。真实环境变量优先级更高。
178
180
 
179
- | 变量 | 默认值 | 说明 |
180
- | ------------------------------- | ------------ | ------------------------------------------------ |
181
- | `PI_X_IDE_AUTO_INSTALL` | `1` | Pi 启动时自动安装 VS Code 扩展 |
182
- | `PI_X_IDE_ZED_DB` | (自动检测) | 覆盖 Zed SQLite 数据库路径 |
183
- | `PI_X_IDE_ZED_POLL_INTERVAL_MS` | `1000` | Zed SQLite 轮询间隔,会被限制在 100-2000 ms 范围 |
181
+ | 变量 | 默认值 | 说明 |
182
+ | ------------------------------- | ------------ | ------------------------------------------------------------------------- |
183
+ | `PI_X_IDE_AUTO_INSTALL` | `1` | Pi 启动时自动安装 VS Code 扩展 |
184
+ | `PI_X_IDE_ATTACH_SHORTCUT` | `ctrl+alt+k` | Pi TUI `/ide attach` 快捷键;设为 `off`、`none`、`false` 或 `0` 可禁用 |
185
+ | `PI_X_IDE_ZED_DB` | (自动检测) | 覆盖 Zed SQLite 数据库路径 |
186
+ | `PI_X_IDE_ZED_POLL_INTERVAL_MS` | `1000` | Zed SQLite 轮询间隔,会被限制在 100-2000 ms 范围 |
184
187
 
185
188
  编辑器 schema 指导见 [schemas/config.json](schemas/config.json)。
186
189
 
187
190
  ### 功能对比
188
191
 
189
- | 功能 | VS Code | Zed | Neovim |
190
- | --------------------------------- | ----------- | --------------------------- | ------------------------ |
191
- | 实时文件追踪 | ✅ 实时推送 | ✅ 1 秒轮询 | ✅ 通过 sidecar 实时推送 |
192
- | 实时选区追踪 | ✅ 实时推送 | ✅ 1 秒轮询 | ✅ 通过 sidecar 实时推送 |
193
- | `Ctrl+Alt+K` / `Cmd+Alt+K` 快捷键 | | 手动输入 `@<relative-path>` | 用户自定义 keymap |
194
- | LLM 上下文注入 | ✅ | ✅ | ✅ |
195
- | `/ide auto` | ✅ | ✅ | ✅ |
192
+ | 功能 | VS Code | Zed | Neovim |
193
+ | ------------------------------------------------ | -------------------- | ----------- | ------------------------ |
194
+ | 实时文件追踪 | ✅ 实时推送 | ✅ 1 秒轮询 | ✅ 通过 sidecar 实时推送 |
195
+ | 实时选区追踪 | ✅ 实时推送 | ✅ 1 秒轮询 | ✅ 通过 sidecar 实时推送 |
196
+ | IDE 上下文 attach 快捷键 | ✅ 默认 `Ctrl+Alt+K` | | 自定义快捷键 keymap |
197
+ | Pi TUI 上下文 attach 快捷键(默认 `Ctrl+Alt+K`) | ✅ | ✅ | ✅ |
198
+ | LLM 上下文注入 | ✅ | ✅ | ✅ |
199
+ | `/ide auto` | ✅ | ✅ | ✅ |
196
200
 
197
201
  ### Lock File 协议
198
202
 
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-x-ide",
3
- "version": "1.7.0",
3
+ "version": "1.8.0",
4
4
  "description": "Pi extension package for IDE selection context integration.",
5
5
  "files": [
6
6
  "dist",
@@ -3,6 +3,9 @@ import type { ExtensionAPI, ExtensionCommandContext } from "@earendil-works/pi-c
3
3
  };
4
4
  import type { LockFileCandidate } from "../shared/protocol";
5
5
  import type { PiIdeRuntime } from "./state";
6
+ export declare const PI_X_IDE_ATTACH_SHORTCUT_ENV = "PI_X_IDE_ATTACH_SHORTCUT";
7
+ export declare const DEFAULT_ATTACH_SHORTCUT = "ctrl+alt+k";
8
+ type ShortcutKey = Parameters<ExtensionAPI["registerShortcut"]>[0];
6
9
  export interface IdeCommandActions {
7
10
  refreshCandidates: (ctx: ExtensionCommandContext) => Promise<LockFileCandidate[]>;
8
11
  connectAuto: (ctx: ExtensionCommandContext) => Promise<void>;
@@ -10,4 +13,8 @@ export interface IdeCommandActions {
10
13
  disconnect: (ctx: ExtensionCommandContext, disabled?: boolean) => void;
11
14
  installExtension: (ctx: ExtensionCommandContext) => Promise<void>;
12
15
  }
13
- export declare function registerIdeCommand(pi: ExtensionAPI, runtime: PiIdeRuntime, actions: IdeCommandActions): void;
16
+ export declare function registerIdeCommand(pi: ExtensionAPI, runtime: PiIdeRuntime, actions: IdeCommandActions, options?: {
17
+ env?: NodeJS.ProcessEnv;
18
+ }): void;
19
+ export declare function resolveAttachShortcut(env?: NodeJS.ProcessEnv): ShortcutKey | undefined;
20
+ export {};
@@ -1,9 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_ATTACH_SHORTCUT = exports.PI_X_IDE_ATTACH_SHORTCUT_ENV = void 0;
3
4
  exports.registerIdeCommand = registerIdeCommand;
5
+ exports.resolveAttachShortcut = resolveAttachShortcut;
6
+ const config_1 = require("../shared/config");
4
7
  const format_1 = require("../shared/format");
5
8
  const ui_1 = require("./ui");
6
- function registerIdeCommand(pi, runtime, actions) {
9
+ exports.PI_X_IDE_ATTACH_SHORTCUT_ENV = "PI_X_IDE_ATTACH_SHORTCUT";
10
+ exports.DEFAULT_ATTACH_SHORTCUT = "ctrl+alt+k";
11
+ const DISABLED_ATTACH_SHORTCUT_VALUES = new Set(["", "0", "false", "off", "none", "disabled"]);
12
+ function registerIdeCommand(pi, runtime, actions, options = {}) {
13
+ const attachShortcut = resolveAttachShortcut(options.env);
14
+ if (attachShortcut) {
15
+ pi.registerShortcut(attachShortcut, {
16
+ description: "Attach latest IDE selection to the prompt",
17
+ handler: (ctx) => {
18
+ runtime.ctx = ctx;
19
+ attachLatest(runtime, ctx);
20
+ },
21
+ });
22
+ }
7
23
  pi.registerCommand("ide", {
8
24
  description: "Manage IDE connection and editor selection context",
9
25
  getArgumentCompletions: (argumentPrefix) => {
@@ -86,6 +102,13 @@ async function listCandidates(actions, ctx) {
86
102
  .map((candidate, index) => `${index + 1}. ${candidate.lock.name} ${candidate.lock.host}:${candidate.lock.port}\n ${candidate.workspaceFolder}\n ${candidate.path}`)
87
103
  .join("\n"), "info");
88
104
  }
105
+ function resolveAttachShortcut(env = process.env) {
106
+ const value = (0, config_1.resolvePiConfigEnv)(env)[exports.PI_X_IDE_ATTACH_SHORTCUT_ENV] ?? exports.DEFAULT_ATTACH_SHORTCUT;
107
+ const normalized = value.trim().toLowerCase();
108
+ if (DISABLED_ATTACH_SHORTCUT_VALUES.has(normalized))
109
+ return undefined;
110
+ return normalized;
111
+ }
89
112
  function attachLatest(runtime, ctx) {
90
113
  if (!runtime.latestSelection) {
91
114
  ctx.ui.notify("No IDE selection is available.", "warning");
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/pi/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/pi/commands.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,11 @@ export declare const CONFIG_ENV_OPTIONS: {
15
15
  readonly default: "enabled";
16
16
  readonly description: "Controls VS Code-family extension auto-install. Values 0, false, and off disable it.";
17
17
  };
18
+ readonly PI_X_IDE_ATTACH_SHORTCUT: {
19
+ readonly type: readonly ["string"];
20
+ readonly default: "ctrl+alt+k";
21
+ readonly description: "Pi TUI shortcut for attaching the latest IDE selection. Set to off, none, false, or 0 to disable.";
22
+ };
18
23
  readonly PI_X_IDE_ZED_DB: {
19
24
  readonly type: readonly ["string"];
20
25
  readonly description: "Override path to Zed's SQLite database.";
@@ -12,6 +12,11 @@ exports.CONFIG_ENV_OPTIONS = {
12
12
  default: "enabled",
13
13
  description: "Controls VS Code-family extension auto-install. Values 0, false, and off disable it.",
14
14
  },
15
+ PI_X_IDE_ATTACH_SHORTCUT: {
16
+ type: ["string"],
17
+ default: "ctrl+alt+k",
18
+ description: "Pi TUI shortcut for attaching the latest IDE selection. Set to off, none, false, or 0 to disable.",
19
+ },
15
20
  PI_X_IDE_ZED_DB: {
16
21
  type: ["string"],
17
22
  description: "Override path to Zed's SQLite database.",
@@ -1 +1 @@
1
- {"version":3,"file":"config-options.js","sourceRoot":"","sources":["../../../src/shared/config-options.ts"],"names":[],"mappings":";;;AAcA,4CAEC;AAJY,QAAA,sBAAsB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAkD,CAAC;AAEvH,SAAgB,gBAAgB,CAAC,KAAc;IAC7C,OAAO,8BAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC;AACtE,CAAC;AAEY,QAAA,kBAAkB,GAAG;IAChC,qBAAqB,EAAE;QACrB,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;QACrC,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,sFAAsF;KACpG;IACD,eAAe,EAAE;QACf,IAAI,EAAE,CAAC,QAAQ,CAAC;QAChB,WAAW,EAAE,yCAAyC;KACvD;IACD,6BAA6B,EAAE;QAC7B,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC1B,WAAW,EAAE,6FAA6F;QAC1G,OAAO,EAAE,MAAM;KAChB;CACiD,CAAC;AAExC,QAAA,0BAA0B,GAAG,EAAuD,CAAC"}
1
+ {"version":3,"file":"config-options.js","sourceRoot":"","sources":["../../../src/shared/config-options.ts"],"names":[],"mappings":";;;AAcA,4CAEC;AAJY,QAAA,sBAAsB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAkD,CAAC;AAEvH,SAAgB,gBAAgB,CAAC,KAAc;IAC7C,OAAO,8BAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC;AACtE,CAAC;AAEY,QAAA,kBAAkB,GAAG;IAChC,qBAAqB,EAAE;QACrB,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;QACrC,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,sFAAsF;KACpG;IACD,wBAAwB,EAAE;QACxB,IAAI,EAAE,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,YAAY;QACrB,WAAW,EAAE,mGAAmG;KACjH;IACD,eAAe,EAAE;QACf,IAAI,EAAE,CAAC,QAAQ,CAAC;QAChB,WAAW,EAAE,yCAAyC;KACvD;IACD,6BAA6B,EAAE;QAC7B,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC1B,WAAW,EAAE,6FAA6F;QAC1G,OAAO,EAAE,MAAM;KAChB;CACiD,CAAC;AAExC,QAAA,0BAA0B,GAAG,EAAuD,CAAC"}
@@ -17,7 +17,6 @@ void (0, node_test_1.default)("caps reconnect attempts at three per candidate",
17
17
  strict_1.default.equal((0, reconnect_1.recordReconnectAttempt)(runtime, candidate), reconnect_1.MAX_RECONNECT_ATTEMPTS);
18
18
  strict_1.default.equal((0, reconnect_1.recordReconnectAttempt)(runtime, candidate), undefined);
19
19
  strict_1.default.match((0, reconnect_1.formatReconnectLimitMessage)(candidate), /after 3 attempts/);
20
- strict_1.default.match((0, reconnect_1.formatReconnectLimitMessage)(candidate), /\/ide/);
21
20
  const nextCandidate = createCandidate({ port: 41002 });
22
21
  strict_1.default.equal((0, reconnect_1.recordReconnectAttempt)(runtime, nextCandidate), 1);
23
22
  (0, reconnect_1.resetReconnectState)(runtime);
@@ -1 +1 @@
1
- {"version":3,"file":"connection.test.js","sourceRoot":"","sources":["../../test/connection.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.test.js","sourceRoot":"","sources":["../../test/connection.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAwC;AACxC,uCAAuE;AACvE,0DAA6B;AAC7B,qDAAgF;AAChF,mDAK6B;AAC7B,2CAAgD;AAGhD,KAAK,IAAA,mBAAI,EAAC,gDAAgD,EAAE,GAAG,EAAE;IAC/D,MAAM,OAAO,GAAG,IAAA,qBAAa,GAAE,CAAC;IAChC,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAEnD,gBAAM,CAAC,KAAK,CAAC,IAAA,kCAAsB,EAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,gBAAM,CAAC,KAAK,CAAC,IAAA,kCAAsB,EAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,gBAAM,CAAC,KAAK,CAAC,IAAA,kCAAsB,EAAC,OAAO,EAAE,SAAS,CAAC,EAAE,kCAAsB,CAAC,CAAC;IACjF,gBAAM,CAAC,KAAK,CAAC,IAAA,kCAAsB,EAAC,OAAO,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;IACpE,gBAAM,CAAC,KAAK,CAAC,IAAA,uCAA2B,EAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAEzE,MAAM,aAAa,GAAG,eAAe,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,gBAAM,CAAC,KAAK,CAAC,IAAA,kCAAsB,EAAC,OAAO,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhE,IAAA,+BAAmB,EAAC,OAAO,CAAC,CAAC;IAC7B,gBAAM,CAAC,KAAK,CAAC,IAAA,kCAAsB,EAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEH,KAAK,IAAA,mBAAI,EAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;IAC7D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,MAAM,GAAG,IAAA,uBAAY,EAAC,CAAC,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACrB,oFAAoF;QACtF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAE7E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAiB,CAAC;QAChD,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,MAAM,UAAU,GAAG,IAAI,0BAAa,CAAC,SAAS,EAAE,OAAO,EAAE;YACvD,cAAc,EAAE,GAAG,EAAE;gBACnB,WAAW,IAAI,CAAC,CAAC;YACnB,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,gBAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAC7B,CAAC,KAAc,EAAE,EAAE,CAAC,KAAK,YAAY,sCAAyB,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CACnG,CAAC;QACF,gBAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvC,gBAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC;YAAS,CAAC;QACT,KAAK,MAAM,MAAM,IAAI,OAAO;YAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,SAAS,eAAe,CAAC,YAAgD,EAAE;IACzE,OAAO;QACL,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;QACnB,WAAW,EAAE,CAAC;QACd,eAAe,EAAE,OAAO;QACxB,IAAI,EAAE;YACJ,OAAO,EAAE,CAAC;YACV,GAAG,EAAE,MAAM;YACX,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,OAAO;YAClB,gBAAgB,EAAE,CAAC,OAAO,CAAC;YAC3B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,GAAG,SAAS;SACb;KACF,CAAC;AACJ,CAAC"}
@@ -61,13 +61,23 @@ void (0, node_test_1.default)("selects only one high-confidence auto-install can
61
61
  void (0, node_test_1.default)("builds forced Marketplace install args", () => {
62
62
  strict_1.default.deepEqual((0, install_1.buildInstallArgs)(), ["--force", "--install-extension", install_1.PI_X_IDE_EXTENSION_ID]);
63
63
  });
64
+ void (0, node_test_1.default)("resolves configurable Pi TUI attach shortcut", () => {
65
+ strict_1.default.equal((0, commands_1.resolveAttachShortcut)({}), commands_1.DEFAULT_ATTACH_SHORTCUT);
66
+ strict_1.default.equal((0, commands_1.resolveAttachShortcut)({ [commands_1.PI_X_IDE_ATTACH_SHORTCUT_ENV]: "Ctrl+Shift+I" }), "ctrl+shift+i");
67
+ strict_1.default.equal((0, commands_1.resolveAttachShortcut)({ [commands_1.PI_X_IDE_ATTACH_SHORTCUT_ENV]: "off" }), undefined);
68
+ strict_1.default.equal((0, commands_1.resolveAttachShortcut)({ [commands_1.PI_X_IDE_ATTACH_SHORTCUT_ENV]: "0" }), undefined);
69
+ });
64
70
  void (0, node_test_1.default)("/ide install completion and handler are wired", async () => {
65
71
  let registered;
72
+ let shortcut;
66
73
  let installCalled = false;
67
74
  const pi = {
68
75
  registerCommand: (_name, command) => {
69
76
  registered = command;
70
77
  },
78
+ registerShortcut: (key) => {
79
+ shortcut = key;
80
+ },
71
81
  };
72
82
  (0, commands_1.registerIdeCommand)(pi, (0, state_1.createRuntime)(), {
73
83
  refreshCandidates: () => Promise.resolve([]),
@@ -78,8 +88,9 @@ void (0, node_test_1.default)("/ide install completion and handler are wired", a
78
88
  installCalled = true;
79
89
  return Promise.resolve();
80
90
  },
81
- });
91
+ }, { env: { [commands_1.PI_X_IDE_ATTACH_SHORTCUT_ENV]: "ctrl+shift+i" } });
82
92
  strict_1.default.ok(registered);
93
+ strict_1.default.equal(shortcut, "ctrl+shift+i");
83
94
  strict_1.default.ok(registered.getArgumentCompletions("")?.some((completion) => completion.value === "install"));
84
95
  await registered.handler("install", createCommandContext());
85
96
  strict_1.default.equal(installCalled, true);
@@ -1 +1 @@
1
- {"version":3,"file":"install.test.js","sourceRoot":"","sources":["../../test/install.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.test.js","sourceRoot":"","sources":["../../test/install.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-x-ide",
3
- "version": "1.7.0",
3
+ "version": "1.8.0",
4
4
  "description": "Pi extension package for IDE selection context integration.",
5
5
  "files": [
6
6
  "dist",
@@ -25,6 +25,10 @@
25
25
  ],
26
26
  "description": "Controls VS Code-family extension auto-install. Values 0, false, and off disable it."
27
27
  },
28
+ "PI_X_IDE_ATTACH_SHORTCUT": {
29
+ "type": "string",
30
+ "description": "Pi TUI shortcut for attaching the latest IDE selection. Set to off, none, false, or 0 to disable."
31
+ },
28
32
  "PI_X_IDE_ZED_DB": {
29
33
  "type": "string",
30
34
  "description": "Override path to Zed's SQLite database."
@@ -44,6 +48,7 @@
44
48
  {
45
49
  "env": {
46
50
  "PI_X_IDE_AUTO_INSTALL": "0",
51
+ "PI_X_IDE_ATTACH_SHORTCUT": "ctrl+alt+k",
47
52
  "PI_X_IDE_ZED_DB": "/home/user/.local/share/zed/db/0-stable/db.sqlite",
48
53
  "PI_X_IDE_ZED_POLL_INTERVAL_MS": 1000
49
54
  }
@@ -1,11 +1,19 @@
1
- import type { ExtensionAPI, ExtensionCommandContext } from "@earendil-works/pi-coding-agent" with {
1
+ import type { ExtensionAPI, ExtensionCommandContext, ExtensionContext } from "@earendil-works/pi-coding-agent" with {
2
2
  "resolution-mode": "import",
3
3
  };
4
+ import { resolvePiConfigEnv } from "../shared/config";
4
5
  import { formatRangeMention } from "../shared/format";
5
6
  import type { LockFileCandidate } from "../shared/protocol";
6
7
  import type { PiIdeRuntime } from "./state";
7
8
  import { buildWidget, updateIdeUi } from "./ui";
8
9
 
10
+ export const PI_X_IDE_ATTACH_SHORTCUT_ENV = "PI_X_IDE_ATTACH_SHORTCUT";
11
+ export const DEFAULT_ATTACH_SHORTCUT = "ctrl+alt+k";
12
+
13
+ const DISABLED_ATTACH_SHORTCUT_VALUES = new Set(["", "0", "false", "off", "none", "disabled"]);
14
+
15
+ type ShortcutKey = Parameters<ExtensionAPI["registerShortcut"]>[0];
16
+
9
17
  export interface IdeCommandActions {
10
18
  refreshCandidates: (ctx: ExtensionCommandContext) => Promise<LockFileCandidate[]>;
11
19
  connectAuto: (ctx: ExtensionCommandContext) => Promise<void>;
@@ -14,7 +22,23 @@ export interface IdeCommandActions {
14
22
  installExtension: (ctx: ExtensionCommandContext) => Promise<void>;
15
23
  }
16
24
 
17
- export function registerIdeCommand(pi: ExtensionAPI, runtime: PiIdeRuntime, actions: IdeCommandActions): void {
25
+ export function registerIdeCommand(
26
+ pi: ExtensionAPI,
27
+ runtime: PiIdeRuntime,
28
+ actions: IdeCommandActions,
29
+ options: { env?: NodeJS.ProcessEnv } = {},
30
+ ): void {
31
+ const attachShortcut = resolveAttachShortcut(options.env);
32
+ if (attachShortcut) {
33
+ pi.registerShortcut(attachShortcut, {
34
+ description: "Attach latest IDE selection to the prompt",
35
+ handler: (ctx) => {
36
+ runtime.ctx = ctx;
37
+ attachLatest(runtime, ctx);
38
+ },
39
+ });
40
+ }
41
+
18
42
  pi.registerCommand("ide", {
19
43
  description: "Manage IDE connection and editor selection context",
20
44
  getArgumentCompletions: (argumentPrefix: string) => {
@@ -114,7 +138,14 @@ async function listCandidates(actions: IdeCommandActions, ctx: ExtensionCommandC
114
138
  );
115
139
  }
116
140
 
117
- function attachLatest(runtime: PiIdeRuntime, ctx: ExtensionCommandContext): void {
141
+ export function resolveAttachShortcut(env: NodeJS.ProcessEnv = process.env): ShortcutKey | undefined {
142
+ const value = resolvePiConfigEnv(env)[PI_X_IDE_ATTACH_SHORTCUT_ENV] ?? DEFAULT_ATTACH_SHORTCUT;
143
+ const normalized = value.trim().toLowerCase();
144
+ if (DISABLED_ATTACH_SHORTCUT_VALUES.has(normalized)) return undefined;
145
+ return normalized as ShortcutKey;
146
+ }
147
+
148
+ function attachLatest(runtime: PiIdeRuntime, ctx: ExtensionContext): void {
118
149
  if (!runtime.latestSelection) {
119
150
  ctx.ui.notify("No IDE selection is available.", "warning");
120
151
  return;
@@ -22,6 +22,11 @@ export const CONFIG_ENV_OPTIONS = {
22
22
  default: "enabled",
23
23
  description: "Controls VS Code-family extension auto-install. Values 0, false, and off disable it.",
24
24
  },
25
+ PI_X_IDE_ATTACH_SHORTCUT: {
26
+ type: ["string"],
27
+ default: "ctrl+alt+k",
28
+ description: "Pi TUI shortcut for attaching the latest IDE selection. Set to off, none, false, or 0 to disable.",
29
+ },
25
30
  PI_X_IDE_ZED_DB: {
26
31
  type: ["string"],
27
32
  description: "Override path to Zed's SQLite database.",