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 +18 -9
- package/README.zh.md +18 -9
- package/dist/package.json +65 -0
- package/dist/src/pi/commands.d.ts +1 -0
- package/dist/src/pi/commands.js +5 -1
- package/dist/src/pi/commands.js.map +1 -1
- package/dist/src/pi/discovery.js +14 -6
- package/dist/src/pi/discovery.js.map +1 -1
- package/dist/src/pi/index.js +167 -28
- package/dist/src/pi/index.js.map +1 -1
- package/dist/src/pi/install.d.ts +55 -0
- package/dist/src/pi/install.js +264 -0
- package/dist/src/pi/install.js.map +1 -0
- package/dist/src/pi/state.d.ts +2 -0
- package/dist/src/pi/state.js +2 -0
- package/dist/src/pi/state.js.map +1 -1
- package/dist/src/shared/paths.d.ts +1 -0
- package/dist/src/shared/paths.js +4 -0
- package/dist/src/shared/paths.js.map +1 -1
- package/dist/test/install.test.d.ts +1 -0
- package/dist/test/install.test.js +99 -0
- package/dist/test/install.test.js.map +1 -0
- package/dist/test/shared.test.js +8 -0
- package/dist/test/shared.test.js.map +1 -1
- package/package.json +2 -1
- package/src/pi/commands.ts +6 -1
- package/src/pi/discovery.ts +18 -6
- package/src/pi/index.ts +226 -28
- package/src/pi/install.ts +318 -0
- package/src/pi/state.ts +4 -0
- package/src/shared/paths.ts +4 -0
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
|
|
112
|
-
|
|
|
113
|
-
| `/ide`
|
|
114
|
-
| `/ide status`
|
|
115
|
-
| `/ide list`
|
|
116
|
-
| `/ide auto`
|
|
117
|
-
| `/ide off`
|
|
118
|
-
| `/ide attach`
|
|
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`
|
|
114
|
-
| `/ide status`
|
|
115
|
-
| `/ide list`
|
|
116
|
-
| `/ide auto`
|
|
117
|
-
| `/ide off`
|
|
118
|
-
| `/ide attach`
|
|
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;
|
package/dist/src/pi/commands.js
CHANGED
|
@@ -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":";;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/pi/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/src/pi/discovery.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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":";;AAsCA,wCAIC;AAED,
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/pi/discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/src/pi/index.js
CHANGED
|
@@ -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
|
|
175
|
+
const candidate = candidates.find((candidate) => isAutoConnectCandidate(candidate, ctx.cwd));
|
|
51
176
|
if (!candidate) {
|
|
52
177
|
runtime.connectionStatus = "disconnected";
|
|
53
|
-
runtime.connectionMessage =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
251
|
+
if (!isCurrentConnection(runtime, getConnection()))
|
|
98
252
|
return;
|
|
99
253
|
(0, context_1.setLatestSelection)(runtime, snapshot);
|
|
100
254
|
},
|
|
101
255
|
onSelectionCleared: () => {
|
|
102
|
-
if (runtime
|
|
256
|
+
if (!isCurrentConnection(runtime, getConnection()))
|
|
103
257
|
return;
|
|
104
258
|
(0, context_1.clearLatestSelection)(runtime);
|
|
105
259
|
},
|
|
106
260
|
onAtMentioned: (params) => {
|
|
107
|
-
if (runtime
|
|
261
|
+
if (!isCurrentConnection(runtime, getConnection()))
|
|
108
262
|
return;
|
|
109
263
|
handleAtMentioned(runtime, params);
|
|
110
264
|
},
|
|
111
265
|
onError: (error) => {
|
|
112
|
-
if (runtime
|
|
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
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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;
|
package/dist/src/pi/index.js.map
CHANGED
|
@@ -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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"}
|