pi-x-ide 1.0.5 → 1.2.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
@@ -71,12 +71,20 @@ The Pi TUI should display:
71
71
  - Footer: `IDE: vscode ✓`
72
72
  - A widget below the input box showing: IDE name, workspace, current file, selection range, and `pending/sent` status
73
73
 
74
+ When Pi starts from a supported VS Code-family integrated terminal, it also tries to auto-install or update the Marketplace extension `balaenis.pi-x-ide` asynchronously. This does not block Pi startup. To disable only this install attempt, set:
75
+
76
+ ```bash
77
+ PI_X_IDE_AUTO_INSTALL=0
78
+ ```
79
+
74
80
  If VS Code was started after Pi, run the following in Pi:
75
81
 
76
82
  ```
77
83
  /ide auto
78
84
  ```
79
85
 
86
+ If auto-install succeeds but no connection appears, reload the IDE window and run `/ide auto` again. You can also run `/ide install` to choose a supported `code`, `cursor`, or `windsurf` CLI manually.
87
+
80
88
  ## Feature Verification
81
89
 
82
90
  ### Live Selection
@@ -108,20 +116,21 @@ After submission, the TUI displays `sent`.
108
116
 
109
117
  ## `/ide` Command Reference
110
118
 
111
- | Command | Behavior |
112
- | ------------- | ------------------------------------------------------------- |
113
- | `/ide` | Open the TUI selector to list available IDE connections |
114
- | `/ide status` | Show current connection, workspace, and most recent selection |
115
- | `/ide list` | List candidate connections from the lock directory |
116
- | `/ide auto` | Re-attempt automatic matching by `cwd` and connect |
117
- | `/ide off` | Disconnect and disable automatic context attachment |
118
- | `/ide attach` | Manually insert the latest selection range into the input box |
119
+ | Command | Behavior |
120
+ | -------------- | ----------------------------------------------------------------- |
121
+ | `/ide` | Open the TUI selector to list available IDE connections |
122
+ | `/ide status` | Show current connection, workspace, and most recent selection |
123
+ | `/ide list` | List candidate connections from the lock directory |
124
+ | `/ide auto` | Re-attempt automatic matching by `cwd` and connect when matched |
125
+ | `/ide off` | Disconnect and disable automatic context attachment |
126
+ | `/ide attach` | Manually insert the latest selection range into the input box |
127
+ | `/ide install` | Install or update `balaenis.pi-x-ide` through a supported IDE CLI |
119
128
 
120
129
  ## Lock File Protocol
121
130
 
122
131
  After the IDE WebSocket server starts, connection information is written to `~/.pi/pi-x-ide/`.
123
132
 
124
- Pi uses `ctx.cwd` to find the longest path match against `workspaceFolders` in the lock files, selecting the best-matching and most recent IDE connection.
133
+ Pi uses `ctx.cwd` to find the longest path match against `workspaceFolders` in the lock files, selecting the best-matching and most recent IDE connection. Pi auto-connects only when the current `cwd` is inside or equal to one of the IDE `workspaceFolders`; if `cwd` is only a parent directory such as `~/`, run `/ide` to choose a connection manually.
125
134
 
126
135
  See [docs/specs/ide-protocol.md](docs/specs/ide-protocol.md) for protocol details.
127
136
 
package/README.zh.md CHANGED
@@ -71,12 +71,20 @@ Pi TUI 应显示:
71
71
  - Footer:`IDE: vscode ✓`
72
72
  - 输入框下方 widget:IDE 名称、workspace、当前文件、选区范围、`pending/sent` 状态
73
73
 
74
+ 当 Pi 从支持的 VS Code 体系集成终端中启动时,它也会异步尝试自动安装或更新 Marketplace 扩展 `balaenis.pi-x-ide`,不会阻塞 Pi 启动。如需只关闭这个安装尝试,设置:
75
+
76
+ ```bash
77
+ PI_X_IDE_AUTO_INSTALL=0
78
+ ```
79
+
74
80
  如果 VS Code 后启动,在 Pi 里执行:
75
81
 
76
82
  ```text
77
83
  /ide auto
78
84
  ```
79
85
 
86
+ 如果自动安装成功但没有出现连接,请 reload IDE 窗口后再次运行 `/ide auto`。你也可以运行 `/ide install`,手动选择支持的 `code`、`cursor` 或 `windsurf` CLI。
87
+
80
88
  ## 功能验证
81
89
 
82
90
  ### 实时选区
@@ -108,20 +116,21 @@ Pi 输入框应插入:
108
116
 
109
117
  ## `/ide` 命令参考
110
118
 
111
- | 命令 | 行为 |
112
- | ------------- | --------------------------------------- |
113
- | `/ide` | 打开 TUI 选择器,列出可用 IDE 连接 |
114
- | `/ide status` | 显示当前连接、workspace、最近 selection |
115
- | `/ide list` | 列出 lock 目录中的候选连接 |
116
- | `/ide auto` | 重新按 cwd 自动匹配并连接 |
117
- | `/ide off` | 断开并关闭自动上下文附加 |
118
- | `/ide attach` | 手动把最新 selection range 插入输入框 |
119
+ | 命令 | 行为 |
120
+ | -------------- | ------------------------------------------------- |
121
+ | `/ide` | 打开 TUI 选择器,列出可用 IDE 连接 |
122
+ | `/ide status` | 显示当前连接、workspace、最近 selection |
123
+ | `/ide list` | 列出 lock 目录中的候选连接 |
124
+ | `/ide auto` | 重新按 cwd 自动匹配,匹配成功时连接 |
125
+ | `/ide off` | 断开并关闭自动上下文附加 |
126
+ | `/ide attach` | 手动把最新 selection range 插入输入框 |
127
+ | `/ide install` | 通过支持的 IDE CLI 安装或更新 `balaenis.pi-x-ide` |
119
128
 
120
129
  ## Lock file 协议
121
130
 
122
131
  IDE WebSocket server 启动后将连接信息写入 `~/.pi/pi-x-ide/`.
123
132
 
124
- Pi 通过 `ctx.cwd` 与 lock file 中的 `workspaceFolders` 做最长路径匹配,选中最匹配且最新的 IDE 连接。
133
+ Pi 通过 `ctx.cwd` 与 lock file 中的 `workspaceFolders` 做最长路径匹配,选中最匹配且最新的 IDE 连接。只有当前 `cwd` 位于某个 IDE `workspaceFolders` 内或与其相等时,Pi 才会自动连接;如果 `cwd` 只是父级目录(例如 `~/`),请运行 `/ide` 手动选择连接。
125
134
 
126
135
  协议详情见 [docs/specs/ide-protocol.md](docs/specs/ide-protocol.md)。
127
136
 
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "pi-x-ide",
3
+ "version": "1.2.0",
4
+ "description": "Pi extension package for IDE selection context integration.",
5
+ "files": [
6
+ "dist",
7
+ "src"
8
+ ],
9
+ "keywords": [
10
+ "pi-package",
11
+ "pi",
12
+ "ide",
13
+ "vscode"
14
+ ],
15
+ "license": "Apache-2.0",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/balaenis/pi-x-ide"
19
+ },
20
+ "bugs": {
21
+ "url": "https://github.com/balaenis/pi-x-ide/issues"
22
+ },
23
+ "homepage": "https://github.com/balaenis/pi-x-ide#readme",
24
+ "packageManager": "pnpm@11.5.2",
25
+ "type": "commonjs",
26
+ "main": "./dist/src/pi/index.js",
27
+ "scripts": {
28
+ "build": "tsc -p tsconfig.json && pnpm --filter './vscode' compile",
29
+ "typecheck": "tsc -p tsconfig.json --noEmit && pnpm --filter './vscode' typecheck",
30
+ "test": "pnpm build && node --test dist/test/*.test.js",
31
+ "lint": "eslint .",
32
+ "lint:fix": "eslint . --fix",
33
+ "format": "prettier --write .",
34
+ "format:check": "prettier --check .",
35
+ "compile:vscode": "pnpm --filter './vscode' compile",
36
+ "sync:vscode-assets": "pnpm --filter './vscode' sync:assets",
37
+ "package:vscode": "pnpm --filter './vscode' package",
38
+ "vsix": "pnpm package:vscode"
39
+ },
40
+ "dependencies": {
41
+ "ws": "^8.18.0"
42
+ },
43
+ "peerDependencies": {
44
+ "@earendil-works/pi-coding-agent": "*"
45
+ },
46
+ "devDependencies": {
47
+ "@earendil-works/pi-coding-agent": "^0.79.0",
48
+ "@eslint/js": "^10.0.1",
49
+ "@types/node": "^22.10.0",
50
+ "@types/ws": "^8.5.13",
51
+ "@vscode/vsce": "^3.2.2",
52
+ "esbuild": "^0.27.0",
53
+ "eslint": "^10.4.1",
54
+ "eslint-config-prettier": "^10.1.8",
55
+ "prettier": "^3.8.3",
56
+ "typescript": "^5.7.2",
57
+ "typescript-eslint": "^8.60.1"
58
+ },
59
+ "pi": {
60
+ "image": "https://fastly.jsdelivr.net/gh/balaenis/pi-x-ide@main/assets/icons/pi-x-ide.png",
61
+ "extensions": [
62
+ "./src/pi/index.ts"
63
+ ]
64
+ }
65
+ }
@@ -8,5 +8,6 @@ export interface IdeCommandActions {
8
8
  connectAuto: (ctx: ExtensionCommandContext) => Promise<void>;
9
9
  connectCandidate: (candidate: LockFileCandidate, ctx: ExtensionCommandContext) => Promise<void>;
10
10
  disconnect: (ctx: ExtensionCommandContext, disabled?: boolean) => void;
11
+ installExtension: (ctx: ExtensionCommandContext) => Promise<void>;
11
12
  }
12
13
  export declare function registerIdeCommand(pi: ExtensionAPI, runtime: PiIdeRuntime, actions: IdeCommandActions): void;
@@ -13,6 +13,7 @@ function registerIdeCommand(pi, runtime, actions) {
13
13
  { value: "auto", label: "auto", description: "Auto-connect to the most recent IDE" },
14
14
  { value: "off", label: "off", description: "Disable IDE integration" },
15
15
  { value: "attach", label: "attach", description: "Attach latest IDE selection to the prompt" },
16
+ { value: "install", label: "install", description: "Install or update the IDE extension" },
16
17
  ];
17
18
  const filtered = subcommands.filter((s) => s.value.startsWith(argumentPrefix));
18
19
  return filtered.length > 0 ? filtered : null;
@@ -40,8 +41,11 @@ function registerIdeCommand(pi, runtime, actions) {
40
41
  case "attach":
41
42
  attachLatest(runtime, ctx);
42
43
  return;
44
+ case "install":
45
+ await actions.installExtension(ctx);
46
+ return;
43
47
  default:
44
- ctx.ui.notify("Usage: /ide [status|list|auto|off|attach]", "warning");
48
+ ctx.ui.notify("Usage: /ide [status|list|auto|off|attach|install]", "warning");
45
49
  }
46
50
  },
47
51
  });
@@ -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":";;AAgBA,gDA8CC;AA3DD,6CAAsD;AAGtD,6BAAgD;AAUhD,SAAgB,kBAAkB,CAAC,EAAgB,EAAE,OAAqB,EAAE,OAA0B;IACpG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE;QACxB,WAAW,EAAE,oDAAoD;QACjE,sBAAsB,EAAE,CAAC,cAAsB,EAAE,EAAE;YACjD,MAAM,WAAW,GAAG;gBAClB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;gBAC/E,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,gCAAgC,EAAE;gBAC/E,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,qCAAqC,EAAE;gBACpF,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAE;gBACtE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;gBAC9F,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,qCAAqC,EAAE;aAC3F,CAAC;YACF,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;YAC/E,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/C,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;YAClB,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACjD,QAAQ,UAAU,IAAI,EAAE,EAAE,CAAC;gBACzB,KAAK,EAAE;oBACL,MAAM,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;oBACxC,OAAO;gBACT,KAAK,QAAQ;oBACX,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBACzB,OAAO;gBACT,KAAK,MAAM;oBACT,MAAM,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBACnC,OAAO;gBACT,KAAK,MAAM;oBACT,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;oBACvB,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC/B,OAAO;gBACT,KAAK,KAAK;oBACR,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBAC9B,OAAO;gBACT,KAAK,QAAQ;oBACX,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBAC3B,OAAO;gBACT,KAAK,SAAS;oBACZ,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBACpC,OAAO;gBACT;oBACE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mDAAmD,EAAE,SAAS,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,OAAqB,EACrB,OAA0B,EAC1B,GAA4B;IAE5B,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,oCAAoC,EAAE,SAAS,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAC3B,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,SAAS,CAAC,eAAe,EAAE,CAC5F,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IACpE,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,IAAI,MAAM,KAAK,yBAAyB,EAAE,CAAC;QACzC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,MAAM,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,OAAqB,EAAE,GAA4B;IACrE,MAAM,KAAK,GAAG,IAAA,gBAAW,EAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACrE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3F,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAA0B,EAAE,GAA4B;IACpF,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mCAAmC,EAAE,MAAM,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IACD,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,UAAU;SACP,GAAG,CACF,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CACnB,GAAG,KAAK,GAAG,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,SAAS,CAAC,eAAe,QAAQ,SAAS,CAAC,IAAI,EAAE,CAC9I;SACA,IAAI,CAAC,IAAI,CAAC,EACb,MAAM,CACP,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,OAAqB,EAAE,GAA4B;IACvE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC7B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,gCAAgC,EAAE,SAAS,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,IAAA,2BAAkB,EAAC,OAAO,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9E,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAChC,IAAA,gBAAW,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC"}
@@ -59,17 +59,25 @@ async function discoverIdeCandidates(options) {
59
59
  catch {
60
60
  continue;
61
61
  }
62
- if (now - mtimeMs > maxAgeMs)
62
+ if (now - mtimeMs > maxAgeMs) {
63
+ await (0, promises_1.rm)(path, { force: true }).catch(() => undefined);
63
64
  continue;
65
+ }
64
66
  const lock = (0, schema_1.parseLockFileContent)(content);
65
- if (!lock)
67
+ if (!lock) {
68
+ await (0, promises_1.rm)(path, { force: true }).catch(() => undefined);
66
69
  continue;
67
- if (checkPid && typeof lock.pid === "number" && !isProcessAlive(lock.pid))
70
+ }
71
+ if (checkPid && typeof lock.pid === "number" && !isProcessAlive(lock.pid)) {
72
+ await (0, promises_1.rm)(path, { force: true }).catch(() => undefined);
68
73
  continue;
74
+ }
69
75
  const match = bestWorkspaceMatch(lock, options.cwd);
70
- if (!match)
71
- continue;
72
- candidates.push({ path, lock, mtimeMs, ...match });
76
+ const { matchLength, workspaceFolder } = match ?? {
77
+ matchLength: 0,
78
+ workspaceFolder: lock.workspaceFolders[0] ?? "",
79
+ };
80
+ candidates.push({ path, lock, mtimeMs, matchLength, workspaceFolder });
73
81
  }
74
82
  return sortCandidates(candidates);
75
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/pi/discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/pi/discovery.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = default_1;
4
4
  const format_1 = require("../shared/format");
5
+ const paths_1 = require("../shared/paths");
5
6
  const discovery_1 = require("./discovery");
6
7
  const connection_1 = require("./connection");
8
+ const install_1 = require("./install");
7
9
  const commands_1 = require("./commands");
8
10
  const context_1 = require("./context");
9
11
  const state_1 = require("./state");
10
12
  const ui_1 = require("./ui");
11
13
  const RECONNECT_DELAY_MS = 2_000;
14
+ const INSTALL_RECONNECT_RETRY_MS = 1_500;
15
+ const INSTALL_RECONNECT_TIMEOUT_MS = 15_000;
12
16
  function default_1(pi) {
13
17
  const runtime = (0, state_1.createRuntime)();
14
18
  (0, context_1.registerContextHandlers)(pi, runtime);
@@ -17,8 +21,11 @@ function default_1(pi) {
17
21
  connectAuto: (ctx) => connectAuto(runtime, ctx),
18
22
  connectCandidate: (candidate, ctx) => connectCandidate(runtime, candidate, ctx),
19
23
  disconnect: (ctx, disabled) => disconnect(runtime, ctx, disabled),
24
+ installExtension: (ctx) => installExtension(runtime, ctx),
20
25
  });
21
26
  pi.on("session_start", async (_event, ctx) => {
27
+ runtime.sessionGeneration += 1;
28
+ const generation = runtime.sessionGeneration;
22
29
  runtime.ctx = ctx;
23
30
  runtime.cwd = ctx.cwd;
24
31
  if (!runtime.enabled) {
@@ -26,9 +33,11 @@ function default_1(pi) {
26
33
  (0, ui_1.updateIdeUi)(runtime, ctx);
27
34
  return;
28
35
  }
36
+ void maybeAutoInstallAndReconnect(runtime, ctx, generation);
29
37
  await connectAuto(runtime, ctx);
30
38
  });
31
39
  pi.on("session_shutdown", (_event, ctx) => {
40
+ runtime.sessionGeneration += 1;
32
41
  runtime.ctx = ctx;
33
42
  if (runtime.reconnectTimer)
34
43
  clearTimeout(runtime.reconnectTimer);
@@ -38,6 +47,122 @@ function default_1(pi) {
38
47
  (0, ui_1.clearIdeUi)(runtime, ctx);
39
48
  });
40
49
  }
50
+ async function maybeAutoInstallAndReconnect(runtime, ctx, generation) {
51
+ try {
52
+ if (!(0, install_1.isAutoInstallEnabled)() || !isInstallSessionActive(runtime, generation))
53
+ return;
54
+ const candidates = await (0, install_1.discoverInstallCandidates)();
55
+ const candidate = (0, install_1.selectAutoInstallCandidate)(candidates);
56
+ if (!candidate)
57
+ return;
58
+ if (!isInstallSessionActive(runtime, generation))
59
+ return;
60
+ if (!candidate.needsInstall)
61
+ return;
62
+ notifyInstall(ctx, `Installing Pi x IDE extension for ${candidate.label}...`, "info");
63
+ const result = await (0, install_1.installIdeExtension)(candidate, runtime);
64
+ if (!isInstallSessionActive(runtime, generation))
65
+ return;
66
+ if (!result.success) {
67
+ notifyInstall(ctx, `Failed to install Pi x IDE extension for ${candidate.label}: ${describeInstallError(result.error, result.stderr)}`, "warning");
68
+ return;
69
+ }
70
+ notifyInstall(ctx, `Pi x IDE extension installed for ${candidate.label}. Trying to connect...`, "info");
71
+ const connected = await retryConnectAfterInstall(runtime, ctx, generation);
72
+ if (!connected && isInstallSessionActive(runtime, generation)) {
73
+ notifyInstall(ctx, `Pi x IDE extension installed for ${candidate.label}. If Pi does not connect automatically, reload the IDE window and run /ide auto.`, "warning");
74
+ }
75
+ }
76
+ catch (error) {
77
+ if (isInstallSessionActive(runtime, generation)) {
78
+ notifyInstall(ctx, `Failed to auto-install Pi x IDE extension: ${errorMessage(error)}`, "warning");
79
+ }
80
+ }
81
+ }
82
+ async function installExtension(runtime, ctx) {
83
+ runtime.ctx = ctx;
84
+ runtime.cwd = ctx.cwd;
85
+ const candidates = await (0, install_1.discoverInstallCandidates)({ includeLowConfidence: true });
86
+ if (candidates.length === 0) {
87
+ ctx.ui.notify("No supported VS Code-family IDE CLI found. Install VS Code, Cursor, or Windsurf CLI first.", "warning");
88
+ return;
89
+ }
90
+ const candidate = await selectManualInstallCandidate(candidates, ctx);
91
+ if (!candidate)
92
+ return;
93
+ runtime.enabled = true;
94
+ if (!candidate.needsInstall) {
95
+ ctx.ui.notify(`${candidate.label} already has Pi x IDE ${candidate.installedVersion ?? candidate.targetVersion}.`, "info");
96
+ await connectAuto(runtime, ctx);
97
+ return;
98
+ }
99
+ ctx.ui.notify(`${installActionLabel(candidate)} Pi x IDE extension for ${candidate.label}...`, "info");
100
+ const result = await (0, install_1.installIdeExtension)(candidate, runtime);
101
+ if (!result.success) {
102
+ ctx.ui.notify(`Failed to install Pi x IDE extension for ${candidate.label}: ${describeInstallError(result.error, result.stderr)}`, "warning");
103
+ return;
104
+ }
105
+ ctx.ui.notify(`Pi x IDE extension installed for ${candidate.label}. Trying to connect...`, "info");
106
+ const connected = await retryConnectAfterInstall(runtime, ctx, runtime.sessionGeneration);
107
+ if (!connected && runtime.enabled) {
108
+ ctx.ui.notify(`Pi x IDE extension installed for ${candidate.label}. If Pi does not connect automatically, reload the IDE window and run /ide auto.`, "warning");
109
+ }
110
+ }
111
+ async function selectManualInstallCandidate(candidates, ctx) {
112
+ if (candidates.length === 1)
113
+ return candidates[0];
114
+ const labels = candidates.map((candidate, index) => `${index + 1}. ${formatInstallCandidate(candidate)}`);
115
+ const choice = await ctx.ui.select("Select IDE to install Pi x IDE", labels);
116
+ if (!choice)
117
+ return undefined;
118
+ return candidates[labels.indexOf(choice)];
119
+ }
120
+ async function retryConnectAfterInstall(runtime, ctx, generation) {
121
+ const deadline = Date.now() + INSTALL_RECONNECT_TIMEOUT_MS;
122
+ while (Date.now() < deadline) {
123
+ if (!isInstallSessionActive(runtime, generation))
124
+ return false;
125
+ await sleep(INSTALL_RECONNECT_RETRY_MS);
126
+ if (!isInstallSessionActive(runtime, generation))
127
+ return false;
128
+ const candidates = await refreshCandidates(runtime, ctx);
129
+ if (candidates.length === 0)
130
+ continue;
131
+ await connectAuto(runtime, ctx);
132
+ return true;
133
+ }
134
+ return false;
135
+ }
136
+ function isInstallSessionActive(runtime, generation) {
137
+ return runtime.enabled && runtime.sessionGeneration === generation;
138
+ }
139
+ function formatInstallCandidate(candidate) {
140
+ const version = candidate.installedVersion ? `installed ${candidate.installedVersion}` : "not installed";
141
+ const status = candidate.reason === "current" ? "up to date" : `${installActionLabel(candidate).toLowerCase()} required`;
142
+ return `${candidate.label} — ${version}, target ${candidate.targetVersion}, ${status} (${candidate.cliPath})`;
143
+ }
144
+ function installActionLabel(candidate) {
145
+ if (candidate.reason === "outdated")
146
+ return "Updating";
147
+ if (candidate.reason === "unknown")
148
+ return "Installing or updating";
149
+ return "Installing";
150
+ }
151
+ function notifyInstall(ctx, message, level) {
152
+ if (!ctx.hasUI)
153
+ return;
154
+ ctx.ui.notify(message, level);
155
+ }
156
+ function describeInstallError(error, stderr) {
157
+ const message = error || stderr.trim();
158
+ return message || "unknown error";
159
+ }
160
+ function errorMessage(error) {
161
+ return error instanceof Error ? error.message : String(error);
162
+ }
163
+ function sleep(ms) {
164
+ return new Promise((resolve) => setTimeout(resolve, ms));
165
+ }
41
166
  async function refreshCandidates(runtime, ctx) {
42
167
  runtime.ctx = ctx;
43
168
  runtime.cwd = ctx.cwd;
@@ -47,10 +172,13 @@ async function refreshCandidates(runtime, ctx) {
47
172
  async function connectAuto(runtime, ctx) {
48
173
  runtime.enabled = true;
49
174
  const candidates = await refreshCandidates(runtime, ctx);
50
- const candidate = candidates[0];
175
+ const candidate = candidates.find((candidate) => isAutoConnectCandidate(candidate, ctx.cwd));
51
176
  if (!candidate) {
52
177
  runtime.connectionStatus = "disconnected";
53
- runtime.connectionMessage = "No matching IDE lock files found.";
178
+ runtime.connectionMessage =
179
+ candidates.length > 0
180
+ ? "No IDE lock file matches the current workspace. Use /ide to connect manually."
181
+ : "No matching IDE lock files found.";
54
182
  runtime.currentCandidate = undefined;
55
183
  runtime.connectedServer = undefined;
56
184
  (0, ui_1.updateIdeUi)(runtime, ctx);
@@ -58,6 +186,9 @@ async function connectAuto(runtime, ctx) {
58
186
  }
59
187
  await connectCandidate(runtime, candidate, ctx);
60
188
  }
189
+ function isAutoConnectCandidate(candidate, cwd) {
190
+ return (0, paths_1.hasDirectWorkspaceMatch)(candidate.lock.workspaceFolders, cwd);
191
+ }
61
192
  async function connectCandidate(runtime, candidate, ctx) {
62
193
  runtime.ctx = ctx;
63
194
  runtime.cwd = ctx.cwd;
@@ -73,9 +204,32 @@ async function connectCandidate(runtime, candidate, ctx) {
73
204
  runtime.connectionStatus = "connecting";
74
205
  runtime.connectionMessage = `Connecting to ${candidate.lock.name} at ${candidate.lock.host}:${candidate.lock.port}`;
75
206
  (0, ui_1.updateIdeUi)(runtime, ctx);
76
- const connection = new connection_1.IdeConnection(candidate, ctx.cwd, {
207
+ const connectionRef = {};
208
+ const connection = new connection_1.IdeConnection(candidate, ctx.cwd, createConnectionCallbacks(runtime, () => connectionRef.current));
209
+ connectionRef.current = connection;
210
+ runtime.connection = connection;
211
+ try {
212
+ await connection.connect();
213
+ if (runtime.connection === connection && runtime.connectionStatus === "connecting") {
214
+ runtime.connectionStatus = "connected";
215
+ runtime.connectionMessage = undefined;
216
+ (0, ui_1.updateIdeUi)(runtime, ctx);
217
+ }
218
+ }
219
+ catch (error) {
220
+ if (runtime.connection === connection) {
221
+ runtime.connection = undefined;
222
+ runtime.connectionStatus = "error";
223
+ runtime.connectionMessage = error instanceof Error ? error.message : String(error);
224
+ (0, ui_1.updateIdeUi)(runtime, ctx);
225
+ scheduleReconnect(runtime);
226
+ }
227
+ }
228
+ }
229
+ function createConnectionCallbacks(runtime, getConnection) {
230
+ return {
77
231
  onConnected: (server) => {
78
- if (runtime.connection !== connection)
232
+ if (!isCurrentConnection(runtime, getConnection()))
79
233
  return;
80
234
  runtime.connectedServer = server;
81
235
  runtime.connectionStatus = "connected";
@@ -83,7 +237,7 @@ async function connectCandidate(runtime, candidate, ctx) {
83
237
  (0, ui_1.updateIdeUi)(runtime);
84
238
  },
85
239
  onDisconnected: (reason) => {
86
- if (runtime.connection !== connection)
240
+ if (!isCurrentConnection(runtime, getConnection()))
87
241
  return;
88
242
  runtime.connection = undefined;
89
243
  runtime.connectedServer = undefined;
@@ -94,46 +248,31 @@ async function connectCandidate(runtime, candidate, ctx) {
94
248
  scheduleReconnect(runtime);
95
249
  },
96
250
  onSelectionChanged: (snapshot) => {
97
- if (runtime.connection !== connection)
251
+ if (!isCurrentConnection(runtime, getConnection()))
98
252
  return;
99
253
  (0, context_1.setLatestSelection)(runtime, snapshot);
100
254
  },
101
255
  onSelectionCleared: () => {
102
- if (runtime.connection !== connection)
256
+ if (!isCurrentConnection(runtime, getConnection()))
103
257
  return;
104
258
  (0, context_1.clearLatestSelection)(runtime);
105
259
  },
106
260
  onAtMentioned: (params) => {
107
- if (runtime.connection !== connection)
261
+ if (!isCurrentConnection(runtime, getConnection()))
108
262
  return;
109
263
  handleAtMentioned(runtime, params);
110
264
  },
111
265
  onError: (error) => {
112
- if (runtime.connection !== connection)
266
+ if (!isCurrentConnection(runtime, getConnection()))
113
267
  return;
114
268
  runtime.connectionStatus = "error";
115
269
  runtime.connectionMessage = error.message;
116
270
  (0, ui_1.updateIdeUi)(runtime);
117
271
  },
118
- });
119
- runtime.connection = connection;
120
- try {
121
- await connection.connect();
122
- if (runtime.connection === connection && runtime.connectionStatus === "connecting") {
123
- runtime.connectionStatus = "connected";
124
- runtime.connectionMessage = undefined;
125
- (0, ui_1.updateIdeUi)(runtime, ctx);
126
- }
127
- }
128
- catch (error) {
129
- if (runtime.connection === connection) {
130
- runtime.connection = undefined;
131
- runtime.connectionStatus = "error";
132
- runtime.connectionMessage = error instanceof Error ? error.message : String(error);
133
- (0, ui_1.updateIdeUi)(runtime, ctx);
134
- scheduleReconnect(runtime);
135
- }
136
- }
272
+ };
273
+ }
274
+ function isCurrentConnection(runtime, connection) {
275
+ return !!connection && runtime.connection === connection;
137
276
  }
138
277
  function disconnect(runtime, ctx, disabled = false) {
139
278
  runtime.ctx = ctx;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pi/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pi/index.ts"],"names":[],"mappings":"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"}