pi-x-ide 1.2.0 → 1.3.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 +41 -2
- package/README.zh.md +41 -2
- package/dist/package.json +7 -3
- package/dist/src/pi/index.js +14 -3
- package/dist/src/pi/index.js.map +1 -1
- package/dist/src/pi/state.d.ts +3 -0
- package/dist/src/pi/state.js.map +1 -1
- package/dist/src/pi/zed.d.ts +27 -0
- package/dist/src/pi/zed.js +434 -0
- package/dist/src/pi/zed.js.map +1 -0
- package/dist/test/zed.test.d.ts +1 -0
- package/dist/test/zed.test.js +578 -0
- package/dist/test/zed.test.js.map +1 -0
- package/package.json +7 -3
- package/src/pi/index.ts +19 -3
- package/src/pi/state.ts +3 -0
- package/src/pi/zed.ts +508 -0
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZED_POLL_INTERVAL_MS = exports.PI_X_IDE_ZED_DB_ENV = void 0;
|
|
4
|
+
exports.isZedTerminal = isZedTerminal;
|
|
5
|
+
exports.isWsl = isWsl;
|
|
6
|
+
exports.normalizeZedPathForHost = normalizeZedPathForHost;
|
|
7
|
+
exports.resolveZedDbPath = resolveZedDbPath;
|
|
8
|
+
exports.parseZedWorkspacePaths = parseZedWorkspacePaths;
|
|
9
|
+
exports.resolveZedSelection = resolveZedSelection;
|
|
10
|
+
exports.stopZedPolling = stopZedPolling;
|
|
11
|
+
exports.startZedPolling = startZedPolling;
|
|
12
|
+
const node_fs_1 = require("node:fs");
|
|
13
|
+
const node_os_1 = require("node:os");
|
|
14
|
+
const node_path_1 = require("node:path");
|
|
15
|
+
const node_sqlite_1 = require("node:sqlite");
|
|
16
|
+
const format_1 = require("../shared/format");
|
|
17
|
+
const paths_1 = require("../shared/paths");
|
|
18
|
+
const context_1 = require("./context");
|
|
19
|
+
const ui_1 = require("./ui");
|
|
20
|
+
exports.PI_X_IDE_ZED_DB_ENV = "PI_X_IDE_ZED_DB";
|
|
21
|
+
exports.ZED_POLL_INTERVAL_MS = 1000;
|
|
22
|
+
// ── Terminal detection ──────────────────────────────────────────
|
|
23
|
+
function isZedTerminal(env = process.env) {
|
|
24
|
+
return env.ZED_TERM === "true" || env.TERM_PROGRAM?.toLowerCase() === "zed";
|
|
25
|
+
}
|
|
26
|
+
function isWsl(env = process.env) {
|
|
27
|
+
if (env.WSL_DISTRO_NAME || env.WSL_INTEROP)
|
|
28
|
+
return true;
|
|
29
|
+
if (env !== process.env)
|
|
30
|
+
return false;
|
|
31
|
+
try {
|
|
32
|
+
return /microsoft|wsl/i.test((0, node_fs_1.readFileSync)("/proc/version", "utf8"));
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function normalizeZedPathForHost(input, env = process.env) {
|
|
39
|
+
if (!input || !isWsl(env))
|
|
40
|
+
return input;
|
|
41
|
+
const driveMatch = input.match(/^([a-zA-Z]):[\\/](.*)$/);
|
|
42
|
+
if (driveMatch) {
|
|
43
|
+
const drive = driveMatch[1].toLowerCase();
|
|
44
|
+
const rest = driveMatch[2].replaceAll("\\", "/");
|
|
45
|
+
return `/mnt/${drive}/${rest}`;
|
|
46
|
+
}
|
|
47
|
+
const uncMatch = input.match(/^\\\\(?:wsl\$|wsl\.localhost)\\([^\\]+)\\(.*)$/i);
|
|
48
|
+
if (uncMatch) {
|
|
49
|
+
const distro = uncMatch[1];
|
|
50
|
+
const rest = uncMatch[2].replaceAll("\\", "/");
|
|
51
|
+
const currentDistro = env.WSL_DISTRO_NAME;
|
|
52
|
+
if (!currentDistro || distro.toLowerCase() === currentDistro.toLowerCase()) {
|
|
53
|
+
return `/${rest}`;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return input;
|
|
57
|
+
}
|
|
58
|
+
// ── DB path resolution ─────────────────────────────────────────
|
|
59
|
+
function resolveZedDbPath(env = process.env, home = (0, node_os_1.homedir)()) {
|
|
60
|
+
const override = env[exports.PI_X_IDE_ZED_DB_ENV]?.trim();
|
|
61
|
+
if (override) {
|
|
62
|
+
const normalizedOverride = normalizeZedPathForHost(override, env);
|
|
63
|
+
return isFile(normalizedOverride) ? normalizedOverride : undefined;
|
|
64
|
+
}
|
|
65
|
+
const candidates = [
|
|
66
|
+
(0, node_path_1.resolve)(home, ".local", "share", "zed", "db", "0-stable", "db.sqlite"), // Linux
|
|
67
|
+
(0, node_path_1.resolve)(home, "Library", "Application Support", "Zed", "db", "0-stable", "db.sqlite"), // macOS
|
|
68
|
+
(0, node_path_1.resolve)(home, "AppData", "Local", "Zed", "db", "0-stable", "db.sqlite"), // Windows
|
|
69
|
+
...zedDbCandidatesFromWindowsEnv(env),
|
|
70
|
+
...zedDbCandidatesFromWslMount(env),
|
|
71
|
+
];
|
|
72
|
+
return candidates.find(isFile);
|
|
73
|
+
}
|
|
74
|
+
function zedDbCandidatesFromWindowsEnv(env) {
|
|
75
|
+
const localAppData = env.LOCALAPPDATA?.trim();
|
|
76
|
+
if (localAppData)
|
|
77
|
+
return [(0, node_path_1.resolve)(normalizeZedPathForHost(localAppData, env), "Zed", "db", "0-stable", "db.sqlite")];
|
|
78
|
+
const userProfile = env.USERPROFILE?.trim();
|
|
79
|
+
if (userProfile) {
|
|
80
|
+
return [
|
|
81
|
+
(0, node_path_1.resolve)(normalizeZedPathForHost(userProfile, env), "AppData", "Local", "Zed", "db", "0-stable", "db.sqlite"),
|
|
82
|
+
];
|
|
83
|
+
}
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
function zedDbCandidatesFromWslMount(env) {
|
|
87
|
+
if (!isWsl(env))
|
|
88
|
+
return [];
|
|
89
|
+
const usersRoot = "/mnt/c/Users";
|
|
90
|
+
try {
|
|
91
|
+
return (0, node_fs_1.readdirSync)(usersRoot, { withFileTypes: true })
|
|
92
|
+
.filter((entry) => entry.isDirectory() && !entry.name.startsWith("."))
|
|
93
|
+
.map((entry) => (0, node_path_1.resolve)(usersRoot, entry.name, "AppData", "Local", "Zed", "db", "0-stable", "db.sqlite"));
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return [];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function isFile(path) {
|
|
100
|
+
try {
|
|
101
|
+
return (0, node_fs_1.statSync)(path).isFile();
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function openZedDatabase(dbPath, env = process.env) {
|
|
108
|
+
// Direct open on live WAL-mode databases can succeed at construction time
|
|
109
|
+
// but fail on the first query on WSL/Windows mounts. Always snapshot
|
|
110
|
+
// under WSL to avoid "disk I/O error" during SQL execution.
|
|
111
|
+
if (isWsl(env))
|
|
112
|
+
return openZedDatabaseSnapshot(dbPath);
|
|
113
|
+
try {
|
|
114
|
+
return { db: new node_sqlite_1.DatabaseSync(dbPath, { readOnly: true }), cleanup: () => undefined };
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// Fall back to snapshot if direct open throws (e.g. file lock on non-WSL).
|
|
118
|
+
return openZedDatabaseSnapshot(dbPath);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function openZedDatabaseSnapshot(dbPath) {
|
|
122
|
+
let snapshotDir;
|
|
123
|
+
try {
|
|
124
|
+
snapshotDir = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "pi-x-ide-zed-db-"));
|
|
125
|
+
const cleanupDir = snapshotDir;
|
|
126
|
+
const snapshotPath = (0, node_path_1.join)(cleanupDir, "db.sqlite");
|
|
127
|
+
// Copy the main DB file plus any WAL/SHM sidecars.
|
|
128
|
+
(0, node_fs_1.copyFileSync)(dbPath, snapshotPath);
|
|
129
|
+
for (const suffix of ["-wal", "-shm"]) {
|
|
130
|
+
const sidecarPath = `${dbPath}${suffix}`;
|
|
131
|
+
if (isFile(sidecarPath))
|
|
132
|
+
(0, node_fs_1.copyFileSync)(sidecarPath, `${snapshotPath}${suffix}`);
|
|
133
|
+
}
|
|
134
|
+
// Merge WAL changes into the main database file so we can open
|
|
135
|
+
// read-only afterwards without hitting a disk I/O error on
|
|
136
|
+
// cross-filesystem mounts (WSL / Windows).
|
|
137
|
+
try {
|
|
138
|
+
const dbRW = new node_sqlite_1.DatabaseSync(snapshotPath);
|
|
139
|
+
dbRW.exec("PRAGMA wal_checkpoint(TRUNCATE)");
|
|
140
|
+
dbRW.close();
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
// Checkpoint may fail—continue with the stale main DB.
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
db: new node_sqlite_1.DatabaseSync(snapshotPath, { readOnly: true }),
|
|
147
|
+
cleanup: () => (0, node_fs_1.rmSync)(cleanupDir, { recursive: true, force: true }),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
if (snapshotDir)
|
|
152
|
+
(0, node_fs_1.rmSync)(snapshotDir, { recursive: true, force: true });
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// ── Workspace path parsing ─────────────────────────────────────
|
|
157
|
+
function parseZedWorkspacePaths(value) {
|
|
158
|
+
if (!value)
|
|
159
|
+
return [];
|
|
160
|
+
const trimmed = value.trim();
|
|
161
|
+
if (!trimmed)
|
|
162
|
+
return [];
|
|
163
|
+
// Try JSON array. If it looks like JSON but is malformed, treat it as invalid
|
|
164
|
+
// instead of accidentally interpreting the raw JSON-ish text as a path.
|
|
165
|
+
if (trimmed.startsWith("[") || trimmed.startsWith("{")) {
|
|
166
|
+
try {
|
|
167
|
+
const parsed = JSON.parse(trimmed);
|
|
168
|
+
return Array.isArray(parsed)
|
|
169
|
+
? parsed.filter((item) => typeof item === "string" && item.length > 0)
|
|
170
|
+
: [];
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
return [];
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return trimmed
|
|
177
|
+
.split(/\r?\n/)
|
|
178
|
+
.map((line) => line.trim())
|
|
179
|
+
.filter((line) => line.length > 0);
|
|
180
|
+
}
|
|
181
|
+
// ── UTF-8 byte-offset conversion ──────────────────────────────
|
|
182
|
+
function utf8ByteOffsetToStringIndex(text, byteOffset) {
|
|
183
|
+
if (byteOffset <= 0)
|
|
184
|
+
return 0;
|
|
185
|
+
const encoder = new TextEncoder();
|
|
186
|
+
let bytes = 0;
|
|
187
|
+
for (let index = 0; index < text.length;) {
|
|
188
|
+
const codePoint = text.codePointAt(index);
|
|
189
|
+
if (codePoint === undefined)
|
|
190
|
+
return text.length;
|
|
191
|
+
const nextIndex = index + (codePoint > 0xffff ? 2 : 1);
|
|
192
|
+
bytes += encoder.encode(text.slice(index, nextIndex)).length;
|
|
193
|
+
if (bytes >= byteOffset)
|
|
194
|
+
return nextIndex;
|
|
195
|
+
index = nextIndex;
|
|
196
|
+
}
|
|
197
|
+
return text.length;
|
|
198
|
+
}
|
|
199
|
+
function byteOffsetToSelection(text, startByte, endByte) {
|
|
200
|
+
const startIndex = utf8ByteOffsetToStringIndex(text, startByte);
|
|
201
|
+
const endIndex = utf8ByteOffsetToStringIndex(text, endByte);
|
|
202
|
+
const lines = text.split("\n");
|
|
203
|
+
let startLine = 0;
|
|
204
|
+
let startChar = 0;
|
|
205
|
+
let remaining = startIndex;
|
|
206
|
+
for (let lineIdx = 0; lineIdx < lines.length && remaining >= 0; lineIdx += 1) {
|
|
207
|
+
const lineLen = lines[lineIdx].length + 1; // +1 for the \n
|
|
208
|
+
if (remaining <= lines[lineIdx].length) {
|
|
209
|
+
startLine = lineIdx;
|
|
210
|
+
startChar = remaining;
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
remaining -= lineLen;
|
|
214
|
+
}
|
|
215
|
+
let endLine = 0;
|
|
216
|
+
let endChar = 0;
|
|
217
|
+
remaining = endIndex;
|
|
218
|
+
for (let lineIdx = 0; lineIdx < lines.length && remaining >= 0; lineIdx += 1) {
|
|
219
|
+
const lineLen = lines[lineIdx].length + 1;
|
|
220
|
+
if (remaining <= lines[lineIdx].length) {
|
|
221
|
+
endLine = lineIdx;
|
|
222
|
+
endChar = remaining;
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
remaining -= lineLen;
|
|
226
|
+
}
|
|
227
|
+
return {
|
|
228
|
+
start: { line: startLine, character: startChar },
|
|
229
|
+
end: { line: endLine, character: endChar },
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
// ── SQLite query ───────────────────────────────────────────────
|
|
233
|
+
function scoreWorkspace(workspacePaths, cwd, env) {
|
|
234
|
+
const normalizedCwd = normalizeZedPathForHost(cwd, env);
|
|
235
|
+
return parseZedWorkspacePaths(workspacePaths).reduce((best, workspacePath) => {
|
|
236
|
+
const normalizedWorkspacePath = normalizeZedPathForHost(workspacePath, env);
|
|
237
|
+
if ((0, paths_1.isPathInsideOrEqual)(normalizedWorkspacePath, normalizedCwd)) {
|
|
238
|
+
const resolved = (0, node_path_1.resolve)(normalizedWorkspacePath);
|
|
239
|
+
return Math.max(best, resolved.length);
|
|
240
|
+
}
|
|
241
|
+
return best;
|
|
242
|
+
}, 0);
|
|
243
|
+
}
|
|
244
|
+
function resolveZedSelection(options) {
|
|
245
|
+
const { dbPath, cwd, readFile = (path) => (0, node_fs_1.readFileSync)(path, "utf8"), env = process.env } = options;
|
|
246
|
+
const dbHandle = openZedDatabase(dbPath, env);
|
|
247
|
+
if (!dbHandle)
|
|
248
|
+
return undefined;
|
|
249
|
+
const { db, cleanup } = dbHandle;
|
|
250
|
+
try {
|
|
251
|
+
const rows = db
|
|
252
|
+
.prepare(`SELECT i.kind AS item_kind,
|
|
253
|
+
e.item_id AS editor_id,
|
|
254
|
+
i.workspace_id,
|
|
255
|
+
w.paths AS workspace_paths,
|
|
256
|
+
w.timestamp,
|
|
257
|
+
e.buffer_path
|
|
258
|
+
FROM items i
|
|
259
|
+
JOIN panes p ON p.pane_id = i.pane_id AND p.workspace_id = i.workspace_id
|
|
260
|
+
JOIN workspaces w ON w.workspace_id = i.workspace_id
|
|
261
|
+
LEFT JOIN editors e ON e.item_id = i.item_id AND e.workspace_id = i.workspace_id
|
|
262
|
+
WHERE i.active = 1 AND p.active = 1
|
|
263
|
+
ORDER BY w.timestamp DESC`)
|
|
264
|
+
.all();
|
|
265
|
+
// Filter to Editor rows only, score by workspace match.
|
|
266
|
+
// editor_id may be string or number — Zed uses INTEGER primary keys,
|
|
267
|
+
// node:sqlite returns them as JS numbers.
|
|
268
|
+
const scored = rows
|
|
269
|
+
.filter((row) => row.item_kind === "Editor" && row.editor_id != null && typeof row.buffer_path === "string")
|
|
270
|
+
.map((row) => ({
|
|
271
|
+
...row,
|
|
272
|
+
score: scoreWorkspace(row.workspace_paths, cwd, env),
|
|
273
|
+
}))
|
|
274
|
+
.filter((row) => row.score > 0);
|
|
275
|
+
if (scored.length === 0)
|
|
276
|
+
return undefined;
|
|
277
|
+
// Pick best: highest score, then latest timestamp
|
|
278
|
+
scored.sort((a, b) => b.score - a.score || b.timestamp - a.timestamp);
|
|
279
|
+
const best = scored[0];
|
|
280
|
+
if (!best)
|
|
281
|
+
return undefined;
|
|
282
|
+
const { editor_id, workspace_id, buffer_path, workspace_paths } = best;
|
|
283
|
+
const normalizedBufferPath = normalizeZedPathForHost(buffer_path, env);
|
|
284
|
+
// Determine workspace folder from matching path
|
|
285
|
+
const workspaceFolder = bestWorkspaceFolder(workspace_paths, cwd, env);
|
|
286
|
+
// Query editor contents
|
|
287
|
+
let contents;
|
|
288
|
+
const contentRow = db
|
|
289
|
+
.prepare("SELECT contents FROM editors WHERE item_id = ? AND workspace_id = ?")
|
|
290
|
+
.get(editor_id, workspace_id);
|
|
291
|
+
if (contentRow && typeof contentRow.contents === "string") {
|
|
292
|
+
contents = contentRow.contents;
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
// Fall back to reading the file on disk.
|
|
296
|
+
try {
|
|
297
|
+
contents = readFile(normalizedBufferPath);
|
|
298
|
+
}
|
|
299
|
+
catch {
|
|
300
|
+
return undefined;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
if (contents === undefined)
|
|
304
|
+
return undefined;
|
|
305
|
+
// Query selections
|
|
306
|
+
const selectionRows = db
|
|
307
|
+
.prepare("SELECT start AS selection_start, end AS selection_end FROM editor_selections WHERE editor_id = ? AND workspace_id = ?")
|
|
308
|
+
.all(editor_id, workspace_id);
|
|
309
|
+
const ranges = [];
|
|
310
|
+
for (const sel of selectionRows) {
|
|
311
|
+
const rawStart = sel.selection_start;
|
|
312
|
+
const rawEnd = sel.selection_end;
|
|
313
|
+
// Normalize reversed ranges
|
|
314
|
+
const start = Math.min(rawStart, rawEnd);
|
|
315
|
+
const end = Math.max(rawStart, rawEnd);
|
|
316
|
+
// Skip empty caret positions
|
|
317
|
+
if (start >= end)
|
|
318
|
+
continue;
|
|
319
|
+
const text = contents.slice(utf8ByteOffsetToStringIndex(contents, start), utf8ByteOffsetToStringIndex(contents, end));
|
|
320
|
+
if (!text)
|
|
321
|
+
continue;
|
|
322
|
+
const selection = byteOffsetToSelection(contents, start, end);
|
|
323
|
+
ranges.push({ text, selection });
|
|
324
|
+
}
|
|
325
|
+
return {
|
|
326
|
+
source: "zed",
|
|
327
|
+
filePath: normalizedBufferPath,
|
|
328
|
+
workspaceFolder,
|
|
329
|
+
ranges,
|
|
330
|
+
receivedAt: options.now ?? Date.now(),
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
catch {
|
|
334
|
+
return undefined;
|
|
335
|
+
}
|
|
336
|
+
finally {
|
|
337
|
+
try {
|
|
338
|
+
db.close();
|
|
339
|
+
}
|
|
340
|
+
finally {
|
|
341
|
+
cleanup();
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
function bestWorkspaceFolder(workspacePaths, cwd, env) {
|
|
346
|
+
const paths = parseZedWorkspacePaths(workspacePaths).map((workspacePath) => normalizeZedPathForHost(workspacePath, env));
|
|
347
|
+
const normalizedCwd = normalizeZedPathForHost(cwd, env);
|
|
348
|
+
const matches = paths.filter((workspacePath) => (0, paths_1.isPathInsideOrEqual)(workspacePath, normalizedCwd));
|
|
349
|
+
if (matches.length === 0)
|
|
350
|
+
return paths[0];
|
|
351
|
+
return matches.sort((a, b) => (0, node_path_1.resolve)(b).length - (0, node_path_1.resolve)(a).length)[0];
|
|
352
|
+
}
|
|
353
|
+
// ── Polling lifecycle ─────────────────────────────────────────
|
|
354
|
+
function stopZedPolling(runtime) {
|
|
355
|
+
if (runtime.zedPollTimer) {
|
|
356
|
+
clearTimeout(runtime.zedPollTimer);
|
|
357
|
+
runtime.zedPollTimer = undefined;
|
|
358
|
+
}
|
|
359
|
+
runtime.zedPollSelectionKey = undefined;
|
|
360
|
+
runtime.zedPollWalMtimeMs = undefined;
|
|
361
|
+
}
|
|
362
|
+
function startZedPolling(runtime, ctx, options) {
|
|
363
|
+
const env = options?.env ?? process.env;
|
|
364
|
+
if (!isZedTerminal(env))
|
|
365
|
+
return false;
|
|
366
|
+
const dbPath = options?.dbPath ?? resolveZedDbPath(env);
|
|
367
|
+
if (!dbPath)
|
|
368
|
+
return false;
|
|
369
|
+
const intervalMs = options?.intervalMs ?? exports.ZED_POLL_INTERVAL_MS;
|
|
370
|
+
const generation = options?.generation;
|
|
371
|
+
// Set connection status and clear any stale WebSocket candidate state.
|
|
372
|
+
runtime.connection?.disconnect();
|
|
373
|
+
runtime.connection = undefined;
|
|
374
|
+
runtime.currentCandidate = undefined;
|
|
375
|
+
runtime.connectionStatus = "connected";
|
|
376
|
+
runtime.connectedServer = { name: "Zed", ide: "zed" };
|
|
377
|
+
runtime.connectionMessage = undefined;
|
|
378
|
+
(0, ui_1.updateIdeUi)(runtime, ctx);
|
|
379
|
+
const schedule = () => {
|
|
380
|
+
if (runtime.zedPollTimer)
|
|
381
|
+
return; // already stopped
|
|
382
|
+
runtime.zedPollTimer = setTimeout(() => {
|
|
383
|
+
runtime.zedPollTimer = undefined;
|
|
384
|
+
// Guard: session generation changed
|
|
385
|
+
if (generation !== undefined && runtime.sessionGeneration !== generation)
|
|
386
|
+
return;
|
|
387
|
+
// Guard: WebSocket has taken over
|
|
388
|
+
if (runtime.connection && runtime.connection !== undefined) {
|
|
389
|
+
// connection is an IdeConnection — if WebSocket took over, stop
|
|
390
|
+
if (runtime.connectedServer?.ide !== "zed")
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
// Check whether the WAL sidecar has changed since the last poll.
|
|
394
|
+
// On WSL the DB snapshot is expensive (~10 MB copy + checkpoint),
|
|
395
|
+
// so skip the work when nothing changed in the editor.
|
|
396
|
+
const walPath = `${dbPath}-wal`;
|
|
397
|
+
let walMtimeMs;
|
|
398
|
+
try {
|
|
399
|
+
walMtimeMs = (0, node_fs_1.statSync)(walPath).mtimeMs;
|
|
400
|
+
}
|
|
401
|
+
catch {
|
|
402
|
+
// WAL absent — always poll (Zed may be in a different journal mode).
|
|
403
|
+
}
|
|
404
|
+
if (walMtimeMs !== undefined &&
|
|
405
|
+
runtime.zedPollWalMtimeMs !== undefined &&
|
|
406
|
+
walMtimeMs === runtime.zedPollWalMtimeMs) {
|
|
407
|
+
schedule();
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
runtime.zedPollWalMtimeMs = walMtimeMs;
|
|
411
|
+
let snapshot;
|
|
412
|
+
try {
|
|
413
|
+
snapshot = resolveZedSelection({ dbPath, cwd: ctx.cwd, env });
|
|
414
|
+
}
|
|
415
|
+
catch {
|
|
416
|
+
snapshot = undefined;
|
|
417
|
+
}
|
|
418
|
+
if (snapshot) {
|
|
419
|
+
const key = (0, format_1.snapshotKey)(snapshot);
|
|
420
|
+
if (key !== runtime.zedPollSelectionKey) {
|
|
421
|
+
runtime.zedPollSelectionKey = key;
|
|
422
|
+
(0, context_1.setLatestSelection)(runtime, snapshot, ctx);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
else {
|
|
426
|
+
(0, context_1.clearLatestSelection)(runtime, ctx);
|
|
427
|
+
}
|
|
428
|
+
schedule();
|
|
429
|
+
}, intervalMs);
|
|
430
|
+
};
|
|
431
|
+
schedule();
|
|
432
|
+
return true;
|
|
433
|
+
}
|
|
434
|
+
//# sourceMappingURL=zed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zed.js","sourceRoot":"","sources":["../../../src/pi/zed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|