pi-x-ide 1.0.4 → 1.1.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 +17 -8
- package/README.zh.md +17 -8
- 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 +158 -26
- 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/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 +2 -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 +216 -26
- package/src/pi/install.ts +318 -0
- package/src/pi/state.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,14 +116,15 @@ 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 |
|
|
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
|
|
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,14 +116,15 @@ 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
|
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pi-x-ide",
|
|
3
|
+
"version": "1.1.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
|
@@ -4,11 +4,14 @@ exports.default = default_1;
|
|
|
4
4
|
const format_1 = require("../shared/format");
|
|
5
5
|
const discovery_1 = require("./discovery");
|
|
6
6
|
const connection_1 = require("./connection");
|
|
7
|
+
const install_1 = require("./install");
|
|
7
8
|
const commands_1 = require("./commands");
|
|
8
9
|
const context_1 = require("./context");
|
|
9
10
|
const state_1 = require("./state");
|
|
10
11
|
const ui_1 = require("./ui");
|
|
11
12
|
const RECONNECT_DELAY_MS = 2_000;
|
|
13
|
+
const INSTALL_RECONNECT_RETRY_MS = 1_500;
|
|
14
|
+
const INSTALL_RECONNECT_TIMEOUT_MS = 15_000;
|
|
12
15
|
function default_1(pi) {
|
|
13
16
|
const runtime = (0, state_1.createRuntime)();
|
|
14
17
|
(0, context_1.registerContextHandlers)(pi, runtime);
|
|
@@ -17,8 +20,11 @@ function default_1(pi) {
|
|
|
17
20
|
connectAuto: (ctx) => connectAuto(runtime, ctx),
|
|
18
21
|
connectCandidate: (candidate, ctx) => connectCandidate(runtime, candidate, ctx),
|
|
19
22
|
disconnect: (ctx, disabled) => disconnect(runtime, ctx, disabled),
|
|
23
|
+
installExtension: (ctx) => installExtension(runtime, ctx),
|
|
20
24
|
});
|
|
21
25
|
pi.on("session_start", async (_event, ctx) => {
|
|
26
|
+
runtime.sessionGeneration += 1;
|
|
27
|
+
const generation = runtime.sessionGeneration;
|
|
22
28
|
runtime.ctx = ctx;
|
|
23
29
|
runtime.cwd = ctx.cwd;
|
|
24
30
|
if (!runtime.enabled) {
|
|
@@ -26,9 +32,11 @@ function default_1(pi) {
|
|
|
26
32
|
(0, ui_1.updateIdeUi)(runtime, ctx);
|
|
27
33
|
return;
|
|
28
34
|
}
|
|
35
|
+
void maybeAutoInstallAndReconnect(runtime, ctx, generation);
|
|
29
36
|
await connectAuto(runtime, ctx);
|
|
30
37
|
});
|
|
31
38
|
pi.on("session_shutdown", (_event, ctx) => {
|
|
39
|
+
runtime.sessionGeneration += 1;
|
|
32
40
|
runtime.ctx = ctx;
|
|
33
41
|
if (runtime.reconnectTimer)
|
|
34
42
|
clearTimeout(runtime.reconnectTimer);
|
|
@@ -38,6 +46,122 @@ function default_1(pi) {
|
|
|
38
46
|
(0, ui_1.clearIdeUi)(runtime, ctx);
|
|
39
47
|
});
|
|
40
48
|
}
|
|
49
|
+
async function maybeAutoInstallAndReconnect(runtime, ctx, generation) {
|
|
50
|
+
try {
|
|
51
|
+
if (!(0, install_1.isAutoInstallEnabled)() || !isInstallSessionActive(runtime, generation))
|
|
52
|
+
return;
|
|
53
|
+
const candidates = await (0, install_1.discoverInstallCandidates)();
|
|
54
|
+
const candidate = (0, install_1.selectAutoInstallCandidate)(candidates);
|
|
55
|
+
if (!candidate)
|
|
56
|
+
return;
|
|
57
|
+
if (!isInstallSessionActive(runtime, generation))
|
|
58
|
+
return;
|
|
59
|
+
if (!candidate.needsInstall)
|
|
60
|
+
return;
|
|
61
|
+
notifyInstall(ctx, `Installing Pi x IDE extension for ${candidate.label}...`, "info");
|
|
62
|
+
const result = await (0, install_1.installIdeExtension)(candidate, runtime);
|
|
63
|
+
if (!isInstallSessionActive(runtime, generation))
|
|
64
|
+
return;
|
|
65
|
+
if (!result.success) {
|
|
66
|
+
notifyInstall(ctx, `Failed to install Pi x IDE extension for ${candidate.label}: ${describeInstallError(result.error, result.stderr)}`, "warning");
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
notifyInstall(ctx, `Pi x IDE extension installed for ${candidate.label}. Trying to connect...`, "info");
|
|
70
|
+
const connected = await retryConnectAfterInstall(runtime, ctx, generation);
|
|
71
|
+
if (!connected && isInstallSessionActive(runtime, generation)) {
|
|
72
|
+
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");
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
if (isInstallSessionActive(runtime, generation)) {
|
|
77
|
+
notifyInstall(ctx, `Failed to auto-install Pi x IDE extension: ${errorMessage(error)}`, "warning");
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async function installExtension(runtime, ctx) {
|
|
82
|
+
runtime.ctx = ctx;
|
|
83
|
+
runtime.cwd = ctx.cwd;
|
|
84
|
+
const candidates = await (0, install_1.discoverInstallCandidates)({ includeLowConfidence: true });
|
|
85
|
+
if (candidates.length === 0) {
|
|
86
|
+
ctx.ui.notify("No supported VS Code-family IDE CLI found. Install VS Code, Cursor, or Windsurf CLI first.", "warning");
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const candidate = await selectManualInstallCandidate(candidates, ctx);
|
|
90
|
+
if (!candidate)
|
|
91
|
+
return;
|
|
92
|
+
runtime.enabled = true;
|
|
93
|
+
if (!candidate.needsInstall) {
|
|
94
|
+
ctx.ui.notify(`${candidate.label} already has Pi x IDE ${candidate.installedVersion ?? candidate.targetVersion}.`, "info");
|
|
95
|
+
await connectAuto(runtime, ctx);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
ctx.ui.notify(`${installActionLabel(candidate)} Pi x IDE extension for ${candidate.label}...`, "info");
|
|
99
|
+
const result = await (0, install_1.installIdeExtension)(candidate, runtime);
|
|
100
|
+
if (!result.success) {
|
|
101
|
+
ctx.ui.notify(`Failed to install Pi x IDE extension for ${candidate.label}: ${describeInstallError(result.error, result.stderr)}`, "warning");
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
ctx.ui.notify(`Pi x IDE extension installed for ${candidate.label}. Trying to connect...`, "info");
|
|
105
|
+
const connected = await retryConnectAfterInstall(runtime, ctx, runtime.sessionGeneration);
|
|
106
|
+
if (!connected && runtime.enabled) {
|
|
107
|
+
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");
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async function selectManualInstallCandidate(candidates, ctx) {
|
|
111
|
+
if (candidates.length === 1)
|
|
112
|
+
return candidates[0];
|
|
113
|
+
const labels = candidates.map((candidate, index) => `${index + 1}. ${formatInstallCandidate(candidate)}`);
|
|
114
|
+
const choice = await ctx.ui.select("Select IDE to install Pi x IDE", labels);
|
|
115
|
+
if (!choice)
|
|
116
|
+
return undefined;
|
|
117
|
+
return candidates[labels.indexOf(choice)];
|
|
118
|
+
}
|
|
119
|
+
async function retryConnectAfterInstall(runtime, ctx, generation) {
|
|
120
|
+
const deadline = Date.now() + INSTALL_RECONNECT_TIMEOUT_MS;
|
|
121
|
+
while (Date.now() < deadline) {
|
|
122
|
+
if (!isInstallSessionActive(runtime, generation))
|
|
123
|
+
return false;
|
|
124
|
+
await sleep(INSTALL_RECONNECT_RETRY_MS);
|
|
125
|
+
if (!isInstallSessionActive(runtime, generation))
|
|
126
|
+
return false;
|
|
127
|
+
const candidates = await refreshCandidates(runtime, ctx);
|
|
128
|
+
if (candidates.length === 0)
|
|
129
|
+
continue;
|
|
130
|
+
await connectAuto(runtime, ctx);
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
function isInstallSessionActive(runtime, generation) {
|
|
136
|
+
return runtime.enabled && runtime.sessionGeneration === generation;
|
|
137
|
+
}
|
|
138
|
+
function formatInstallCandidate(candidate) {
|
|
139
|
+
const version = candidate.installedVersion ? `installed ${candidate.installedVersion}` : "not installed";
|
|
140
|
+
const status = candidate.reason === "current" ? "up to date" : `${installActionLabel(candidate).toLowerCase()} required`;
|
|
141
|
+
return `${candidate.label} — ${version}, target ${candidate.targetVersion}, ${status} (${candidate.cliPath})`;
|
|
142
|
+
}
|
|
143
|
+
function installActionLabel(candidate) {
|
|
144
|
+
if (candidate.reason === "outdated")
|
|
145
|
+
return "Updating";
|
|
146
|
+
if (candidate.reason === "unknown")
|
|
147
|
+
return "Installing or updating";
|
|
148
|
+
return "Installing";
|
|
149
|
+
}
|
|
150
|
+
function notifyInstall(ctx, message, level) {
|
|
151
|
+
if (!ctx.hasUI)
|
|
152
|
+
return;
|
|
153
|
+
ctx.ui.notify(message, level);
|
|
154
|
+
}
|
|
155
|
+
function describeInstallError(error, stderr) {
|
|
156
|
+
const message = error || stderr.trim();
|
|
157
|
+
return message || "unknown error";
|
|
158
|
+
}
|
|
159
|
+
function errorMessage(error) {
|
|
160
|
+
return error instanceof Error ? error.message : String(error);
|
|
161
|
+
}
|
|
162
|
+
function sleep(ms) {
|
|
163
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
164
|
+
}
|
|
41
165
|
async function refreshCandidates(runtime, ctx) {
|
|
42
166
|
runtime.ctx = ctx;
|
|
43
167
|
runtime.cwd = ctx.cwd;
|
|
@@ -73,9 +197,32 @@ async function connectCandidate(runtime, candidate, ctx) {
|
|
|
73
197
|
runtime.connectionStatus = "connecting";
|
|
74
198
|
runtime.connectionMessage = `Connecting to ${candidate.lock.name} at ${candidate.lock.host}:${candidate.lock.port}`;
|
|
75
199
|
(0, ui_1.updateIdeUi)(runtime, ctx);
|
|
76
|
-
const
|
|
200
|
+
const connectionRef = {};
|
|
201
|
+
const connection = new connection_1.IdeConnection(candidate, ctx.cwd, createConnectionCallbacks(runtime, () => connectionRef.current));
|
|
202
|
+
connectionRef.current = connection;
|
|
203
|
+
runtime.connection = connection;
|
|
204
|
+
try {
|
|
205
|
+
await connection.connect();
|
|
206
|
+
if (runtime.connection === connection && runtime.connectionStatus === "connecting") {
|
|
207
|
+
runtime.connectionStatus = "connected";
|
|
208
|
+
runtime.connectionMessage = undefined;
|
|
209
|
+
(0, ui_1.updateIdeUi)(runtime, ctx);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
if (runtime.connection === connection) {
|
|
214
|
+
runtime.connection = undefined;
|
|
215
|
+
runtime.connectionStatus = "error";
|
|
216
|
+
runtime.connectionMessage = error instanceof Error ? error.message : String(error);
|
|
217
|
+
(0, ui_1.updateIdeUi)(runtime, ctx);
|
|
218
|
+
scheduleReconnect(runtime);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
function createConnectionCallbacks(runtime, getConnection) {
|
|
223
|
+
return {
|
|
77
224
|
onConnected: (server) => {
|
|
78
|
-
if (runtime
|
|
225
|
+
if (!isCurrentConnection(runtime, getConnection()))
|
|
79
226
|
return;
|
|
80
227
|
runtime.connectedServer = server;
|
|
81
228
|
runtime.connectionStatus = "connected";
|
|
@@ -83,7 +230,7 @@ async function connectCandidate(runtime, candidate, ctx) {
|
|
|
83
230
|
(0, ui_1.updateIdeUi)(runtime);
|
|
84
231
|
},
|
|
85
232
|
onDisconnected: (reason) => {
|
|
86
|
-
if (runtime
|
|
233
|
+
if (!isCurrentConnection(runtime, getConnection()))
|
|
87
234
|
return;
|
|
88
235
|
runtime.connection = undefined;
|
|
89
236
|
runtime.connectedServer = undefined;
|
|
@@ -94,46 +241,31 @@ async function connectCandidate(runtime, candidate, ctx) {
|
|
|
94
241
|
scheduleReconnect(runtime);
|
|
95
242
|
},
|
|
96
243
|
onSelectionChanged: (snapshot) => {
|
|
97
|
-
if (runtime
|
|
244
|
+
if (!isCurrentConnection(runtime, getConnection()))
|
|
98
245
|
return;
|
|
99
246
|
(0, context_1.setLatestSelection)(runtime, snapshot);
|
|
100
247
|
},
|
|
101
248
|
onSelectionCleared: () => {
|
|
102
|
-
if (runtime
|
|
249
|
+
if (!isCurrentConnection(runtime, getConnection()))
|
|
103
250
|
return;
|
|
104
251
|
(0, context_1.clearLatestSelection)(runtime);
|
|
105
252
|
},
|
|
106
253
|
onAtMentioned: (params) => {
|
|
107
|
-
if (runtime
|
|
254
|
+
if (!isCurrentConnection(runtime, getConnection()))
|
|
108
255
|
return;
|
|
109
256
|
handleAtMentioned(runtime, params);
|
|
110
257
|
},
|
|
111
258
|
onError: (error) => {
|
|
112
|
-
if (runtime
|
|
259
|
+
if (!isCurrentConnection(runtime, getConnection()))
|
|
113
260
|
return;
|
|
114
261
|
runtime.connectionStatus = "error";
|
|
115
262
|
runtime.connectionMessage = error.message;
|
|
116
263
|
(0, ui_1.updateIdeUi)(runtime);
|
|
117
264
|
},
|
|
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
|
-
}
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
function isCurrentConnection(runtime, connection) {
|
|
268
|
+
return !!connection && runtime.connection === connection;
|
|
137
269
|
}
|
|
138
270
|
function disconnect(runtime, ctx, disabled = false) {
|
|
139
271
|
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":";;AAcA,4BA8BC;AAzCD,6CAAsD;AAEtD,2CAAoD;AACpD,6CAA6C;AAC7C,yCAAgD;AAChD,uCAA8F;AAC9F,mCAA2D;AAC3D,6BAA+C;AAE/C,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAEjC,mBAAyB,EAAgB;IACvC,MAAM,OAAO,GAAG,IAAA,qBAAa,GAAE,CAAC;IAEhC,IAAA,iCAAuB,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACrC,IAAA,6BAAkB,EAAC,EAAE,EAAE,OAAO,EAAE;QAC9B,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC;QAC3D,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC;QAC/C,gBAAgB,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC;QAC/E,UAAU,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC;KAClE,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC3C,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;QAClB,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,gBAAgB,GAAG,UAAU,CAAC;YACtC,IAAA,gBAAW,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,MAAM,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACxC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;QAClB,IAAI,OAAO,CAAC,cAAc;YAAE,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACjE,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;QACnC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;QACjC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;QAC/B,IAAA,eAAU,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAAqB,EACrB,GAA+C;IAE/C,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IAClB,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACtB,OAAO,CAAC,UAAU,GAAG,MAAM,IAAA,iCAAqB,EAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACnE,OAAO,OAAO,CAAC,UAAU,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAqB,EAAE,GAA+C;IAC/F,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IACvB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,gBAAgB,GAAG,cAAc,CAAC;QAC1C,OAAO,CAAC,iBAAiB,GAAG,mCAAmC,CAAC;QAChE,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACrC,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;QACpC,IAAA,gBAAW,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IACD,MAAM,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,OAAqB,EACrB,SAA4B,EAC5B,GAA+C;IAE/C,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IAClB,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACtB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IACvB,IAAI,OAAO,CAAC,cAAc;QAAE,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACjE,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAEnC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IACpC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,UAAU,EAAE,CAAC;IAEvB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACrC,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,gBAAgB,GAAG,YAAY,CAAC;IACxC,OAAO,CAAC,iBAAiB,GAAG,iBAAiB,SAAS,CAAC,IAAI,CAAC,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACpH,IAAA,gBAAW,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAE1B,MAAM,UAAU,GAAG,IAAI,0BAAa,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,EAAE;QACvD,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE;YACtB,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU;gBAAE,OAAO;YAC9C,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC;YACjC,OAAO,CAAC,gBAAgB,GAAG,WAAW,CAAC;YACvC,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACtC,IAAA,gBAAW,EAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QACD,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE;YACzB,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU;gBAAE,OAAO;YAC9C,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;YAC/B,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;YACpC,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC;YACzE,OAAO,CAAC,iBAAiB,GAAG,MAAM,CAAC;YACnC,IAAA,gBAAW,EAAC,OAAO,CAAC,CAAC;YACrB,IAAI,OAAO,CAAC,OAAO;gBAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC;QACD,kBAAkB,EAAE,CAAC,QAAQ,EAAE,EAAE;YAC/B,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU;gBAAE,OAAO;YAC9C,IAAA,4BAAkB,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,kBAAkB,EAAE,GAAG,EAAE;YACvB,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU;gBAAE,OAAO;YAC9C,IAAA,8BAAoB,EAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;YACxB,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU;gBAAE,OAAO;YAC9C,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU;gBAAE,OAAO;YAC9C,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC;YACnC,OAAO,CAAC,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1C,IAAA,gBAAW,EAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU,IAAI,OAAO,CAAC,gBAAgB,KAAK,YAAY,EAAE,CAAC;YACnF,OAAO,CAAC,gBAAgB,GAAG,WAAW,CAAC;YACvC,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACtC,IAAA,gBAAW,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YACtC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;YAC/B,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC;YACnC,OAAO,CAAC,iBAAiB,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnF,IAAA,gBAAW,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC1B,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,OAAqB,EAAE,GAA+C,EAAE,QAAQ,GAAG,KAAK;IAC1G,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IAClB,IAAI,OAAO,CAAC,cAAc;QAAE,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACjE,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IACnC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAC/B,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,OAAO,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC;IAC5B,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC;IAClE,OAAO,CAAC,iBAAiB,GAAG,QAAQ,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,eAAe,CAAC;IACrF,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;QACpC,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACvC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;QAClC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;IAC/B,CAAC;IACD,IAAA,gBAAW,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAqB;IAC9C,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO;IACvD,OAAO,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;QACvC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;QACnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACxB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO;QACrC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACjD,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC;YACnC,OAAO,CAAC,iBAAiB,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnF,IAAA,gBAAW,EAAC,OAAO,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,kBAAkB,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAqB,EAAE,MAAyB;IACzE,IAAA,4BAAkB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,KAAK;QAAE,OAAO;IACxB,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,IAAI,IAAA,2BAAkB,EAAC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9E,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pi/index.ts"],"names":[],"mappings":";;AAuBA,4BAmCC;AAvDD,6CAAsD;AAEtD,2CAAoD;AACpD,6CAA0E;AAC1E,uCAMmB;AACnB,yCAAgD;AAChD,uCAA8F;AAC9F,mCAA2D;AAC3D,6BAA+C;AAE/C,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AACzC,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAE5C,mBAAyB,EAAgB;IACvC,MAAM,OAAO,GAAG,IAAA,qBAAa,GAAE,CAAC;IAEhC,IAAA,iCAAuB,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACrC,IAAA,6BAAkB,EAAC,EAAE,EAAE,OAAO,EAAE;QAC9B,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC;QAC3D,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC;QAC/C,gBAAgB,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC;QAC/E,UAAU,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC;QACjE,gBAAgB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC;KAC1D,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC3C,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAC7C,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;QAClB,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,gBAAgB,GAAG,UAAU,CAAC;YACtC,IAAA,gBAAW,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,KAAK,4BAA4B,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAC5D,MAAM,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACxC,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;QAClB,IAAI,OAAO,CAAC,cAAc;YAAE,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACjE,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;QACnC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;QACjC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;QAC/B,IAAA,eAAU,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,4BAA4B,CACzC,OAAqB,EACrB,GAAqB,EACrB,UAAkB;IAElB,IAAI,CAAC;QACH,IAAI,CAAC,IAAA,8BAAoB,GAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;YAAE,OAAO;QAEpF,MAAM,UAAU,GAAG,MAAM,IAAA,mCAAyB,GAAE,CAAC;QACrD,MAAM,SAAS,GAAG,IAAA,oCAA0B,EAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;YAAE,OAAO;QACzD,IAAI,CAAC,SAAS,CAAC,YAAY;YAAE,OAAO;QAEpC,aAAa,CAAC,GAAG,EAAE,qCAAqC,SAAS,CAAC,KAAK,KAAK,EAAE,MAAM,CAAC,CAAC;QACtF,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAmB,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;YAAE,OAAO;QAEzD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,aAAa,CACX,GAAG,EACH,4CAA4C,SAAS,CAAC,KAAK,KAAK,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EACnH,SAAS,CACV,CAAC;YACF,OAAO;QACT,CAAC;QAED,aAAa,CAAC,GAAG,EAAE,oCAAoC,SAAS,CAAC,KAAK,wBAAwB,EAAE,MAAM,CAAC,CAAC;QACxG,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,IAAI,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;YAC9D,aAAa,CACX,GAAG,EACH,oCAAoC,SAAS,CAAC,KAAK,kFAAkF,EACrI,SAAS,CACV,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;YAChD,aAAa,CAAC,GAAG,EAAE,8CAA8C,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAqB,EAAE,GAA4B;IACjF,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IAClB,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IAEtB,MAAM,UAAU,GAAG,MAAM,IAAA,mCAAyB,EAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;IACnF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,4FAA4F,EAC5F,SAAS,CACV,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,4BAA4B,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACtE,IAAI,CAAC,SAAS;QAAE,OAAO;IAEvB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,GAAG,SAAS,CAAC,KAAK,yBAAyB,SAAS,CAAC,gBAAgB,IAAI,SAAS,CAAC,aAAa,GAAG,EACnG,MAAM,CACP,CAAC;QACF,MAAM,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,2BAA2B,SAAS,CAAC,KAAK,KAAK,EAAE,MAAM,CAAC,CAAC;IACvG,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAmB,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,4CAA4C,SAAS,CAAC,KAAK,KAAK,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EACnH,SAAS,CACV,CAAC;QACF,OAAO;IACT,CAAC;IAED,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,oCAAoC,SAAS,CAAC,KAAK,wBAAwB,EAAE,MAAM,CAAC,CAAC;IACnG,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC1F,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClC,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,oCAAoC,SAAS,CAAC,KAAK,kFAAkF,EACrI,SAAS,CACV,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,4BAA4B,CACzC,UAAiC,EACjC,GAA4B;IAE5B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC1G,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;IAC7E,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,OAAqB,EACrB,GAA+C,EAC/C,UAAkB;IAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,4BAA4B,CAAC;IAC3D,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/D,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACxC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QAE/D,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACtC,MAAM,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAqB,EAAE,UAAkB;IACvE,OAAO,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,iBAAiB,KAAK,UAAU,CAAC;AACrE,CAAC;AAED,SAAS,sBAAsB,CAAC,SAA8B;IAC5D,MAAM,OAAO,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;IACzG,MAAM,MAAM,GACV,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC;IAC5G,OAAO,GAAG,SAAS,CAAC,KAAK,MAAM,OAAO,YAAY,SAAS,CAAC,aAAa,KAAK,MAAM,KAAK,SAAS,CAAC,OAAO,GAAG,CAAC;AAChH,CAAC;AAED,SAAS,kBAAkB,CAAC,SAA8B;IACxD,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IACvD,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,wBAAwB,CAAC;IACpE,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,aAAa,CACpB,GAA+C,EAC/C,OAAe,EACf,KAAyB;IAEzB,IAAI,CAAC,GAAG,CAAC,KAAK;QAAE,OAAO;IACvB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAyB,EAAE,MAAc;IACrE,MAAM,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO,OAAO,IAAI,eAAe,CAAC;AACpC,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAAqB,EACrB,GAA+C;IAE/C,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IAClB,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACtB,OAAO,CAAC,UAAU,GAAG,MAAM,IAAA,iCAAqB,EAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACnE,OAAO,OAAO,CAAC,UAAU,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAqB,EAAE,GAA+C;IAC/F,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IACvB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,gBAAgB,GAAG,cAAc,CAAC;QAC1C,OAAO,CAAC,iBAAiB,GAAG,mCAAmC,CAAC;QAChE,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACrC,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;QACpC,IAAA,gBAAW,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IACD,MAAM,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,OAAqB,EACrB,SAA4B,EAC5B,GAA+C;IAE/C,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IAClB,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACtB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IACvB,IAAI,OAAO,CAAC,cAAc;QAAE,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACjE,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAEnC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IACpC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,UAAU,EAAE,CAAC;IAEvB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACrC,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,gBAAgB,GAAG,YAAY,CAAC;IACxC,OAAO,CAAC,iBAAiB,GAAG,iBAAiB,SAAS,CAAC,IAAI,CAAC,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACpH,IAAA,gBAAW,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAE1B,MAAM,aAAa,GAAgC,EAAE,CAAC;IACtD,MAAM,UAAU,GAAG,IAAI,0BAAa,CAClC,SAAS,EACT,GAAG,CAAC,GAAG,EACP,yBAAyB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAChE,CAAC;IACF,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC;IAEnC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU,IAAI,OAAO,CAAC,gBAAgB,KAAK,YAAY,EAAE,CAAC;YACnF,OAAO,CAAC,gBAAgB,GAAG,WAAW,CAAC;YACvC,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACtC,IAAA,gBAAW,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YACtC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;YAC/B,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC;YACnC,OAAO,CAAC,iBAAiB,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnF,IAAA,gBAAW,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC1B,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAChC,OAAqB,EACrB,aAA8C;IAE9C,OAAO;QACL,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE;YACtB,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;gBAAE,OAAO;YAC3D,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC;YACjC,OAAO,CAAC,gBAAgB,GAAG,WAAW,CAAC;YACvC,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACtC,IAAA,gBAAW,EAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QACD,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE;YACzB,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;gBAAE,OAAO;YAC3D,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;YAC/B,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;YACpC,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC;YACzE,OAAO,CAAC,iBAAiB,GAAG,MAAM,CAAC;YACnC,IAAA,gBAAW,EAAC,OAAO,CAAC,CAAC;YACrB,IAAI,OAAO,CAAC,OAAO;gBAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC;QACD,kBAAkB,EAAE,CAAC,QAAQ,EAAE,EAAE;YAC/B,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;gBAAE,OAAO;YAC3D,IAAA,4BAAkB,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,kBAAkB,EAAE,GAAG,EAAE;YACvB,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;gBAAE,OAAO;YAC3D,IAAA,8BAAoB,EAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;YACxB,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;gBAAE,OAAO;YAC3D,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;gBAAE,OAAO;YAC3D,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC;YACnC,OAAO,CAAC,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1C,IAAA,gBAAW,EAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAqB,EAAE,UAAqC;IACvF,OAAO,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU,CAAC;AAC3D,CAAC;AAED,SAAS,UAAU,CAAC,OAAqB,EAAE,GAA+C,EAAE,QAAQ,GAAG,KAAK;IAC1G,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IAClB,IAAI,OAAO,CAAC,cAAc;QAAE,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACjE,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IACnC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAC/B,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,OAAO,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC;IAC5B,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC;IAClE,OAAO,CAAC,iBAAiB,GAAG,QAAQ,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,eAAe,CAAC;IACrF,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;QACpC,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACvC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;QAClC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;IAC/B,CAAC;IACD,IAAA,gBAAW,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAqB;IAC9C,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO;IACvD,OAAO,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;QACvC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;QACnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACxB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO;QACrC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACjD,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC;YACnC,OAAO,CAAC,iBAAiB,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnF,IAAA,gBAAW,EAAC,OAAO,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,kBAAkB,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAqB,EAAE,MAAyB;IACzE,IAAA,4BAAkB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,KAAK;QAAE,OAAO;IACxB,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,IAAI,IAAA,2BAAkB,EAAC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9E,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { PiIdeRuntime } from "./state";
|
|
2
|
+
export declare const PI_X_IDE_EXTENSION_ID = "balaenis.pi-x-ide";
|
|
3
|
+
export declare const PI_X_IDE_AUTO_INSTALL_ENV = "PI_X_IDE_AUTO_INSTALL";
|
|
4
|
+
export declare const PI_X_IDE_TARGET_VERSION: string;
|
|
5
|
+
export type SupportedIdeId = "vscode" | "cursor" | "windsurf";
|
|
6
|
+
export type IdeInstallConfidence = "current-terminal" | "running-process" | "available-cli";
|
|
7
|
+
export type IdeInstallReason = "missing" | "outdated" | "current" | "unknown";
|
|
8
|
+
export type VersionComparison = "older" | "equal" | "newer" | "unknown";
|
|
9
|
+
export interface IdeCliProfile {
|
|
10
|
+
id: SupportedIdeId;
|
|
11
|
+
label: string;
|
|
12
|
+
command: "code" | "cursor" | "windsurf";
|
|
13
|
+
}
|
|
14
|
+
export interface IdeInstallCandidate {
|
|
15
|
+
id: SupportedIdeId;
|
|
16
|
+
label: string;
|
|
17
|
+
cli: IdeCliProfile["command"];
|
|
18
|
+
cliPath: string;
|
|
19
|
+
confidence: IdeInstallConfidence;
|
|
20
|
+
installedVersion?: string;
|
|
21
|
+
targetVersion: string;
|
|
22
|
+
needsInstall: boolean;
|
|
23
|
+
reason: IdeInstallReason;
|
|
24
|
+
listError?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface IdeInstallResult {
|
|
27
|
+
candidate: IdeInstallCandidate;
|
|
28
|
+
skipped: boolean;
|
|
29
|
+
success: boolean;
|
|
30
|
+
stdout: string;
|
|
31
|
+
stderr: string;
|
|
32
|
+
error?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface DiscoverInstallCandidatesOptions {
|
|
35
|
+
env?: NodeJS.ProcessEnv;
|
|
36
|
+
includeLowConfidence?: boolean;
|
|
37
|
+
timeoutMs?: number;
|
|
38
|
+
}
|
|
39
|
+
export interface InstallIdeExtensionOptions {
|
|
40
|
+
timeoutMs?: number;
|
|
41
|
+
}
|
|
42
|
+
export declare const SUPPORTED_IDE_CLI_PROFILES: IdeCliProfile[];
|
|
43
|
+
export declare function isAutoInstallEnabled(env?: NodeJS.ProcessEnv): boolean;
|
|
44
|
+
export declare function parseInstalledExtensionVersion(output: string, extensionId?: string): string | undefined;
|
|
45
|
+
export declare function compareExtensionVersions(installed: string | undefined, target: string): VersionComparison;
|
|
46
|
+
export declare function inferCurrentIdeFromEnv(env?: NodeJS.ProcessEnv): SupportedIdeId | undefined;
|
|
47
|
+
export declare function buildInstallArgs(): string[];
|
|
48
|
+
export declare function findExecutable(command: string, env?: NodeJS.ProcessEnv): Promise<string | undefined>;
|
|
49
|
+
export declare function runCli(cliPath: string, args: string[], timeoutMs?: number): Promise<{
|
|
50
|
+
stdout: string;
|
|
51
|
+
stderr: string;
|
|
52
|
+
}>;
|
|
53
|
+
export declare function discoverInstallCandidates(options?: DiscoverInstallCandidatesOptions): Promise<IdeInstallCandidate[]>;
|
|
54
|
+
export declare function selectAutoInstallCandidate(candidates: IdeInstallCandidate[], env?: NodeJS.ProcessEnv): IdeInstallCandidate | undefined;
|
|
55
|
+
export declare function installIdeExtension(candidate: IdeInstallCandidate, runtime: PiIdeRuntime, options?: InstallIdeExtensionOptions): Promise<IdeInstallResult>;
|