pi-x-ide 1.2.0 → 1.4.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.
@@ -0,0 +1,590 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const strict_1 = __importDefault(require("node:assert/strict"));
40
+ const promises_1 = require("node:fs/promises");
41
+ const node_os_1 = require("node:os");
42
+ const node_path_1 = require("node:path");
43
+ const node_test_1 = __importStar(require("node:test"));
44
+ const node_sqlite_1 = require("node:sqlite");
45
+ const state_1 = require("../src/pi/state");
46
+ const config_1 = require("../src/shared/config");
47
+ const zed_1 = require("../src/pi/zed");
48
+ // ── Env / path detection ──────────────────────────────────────
49
+ void (0, node_test_1.default)("isZedTerminal detects Zed env markers", () => {
50
+ strict_1.default.equal((0, zed_1.isZedTerminal)({}), false);
51
+ strict_1.default.equal((0, zed_1.isZedTerminal)({ ZED_TERM: "true" }), true);
52
+ strict_1.default.equal((0, zed_1.isZedTerminal)({ TERM_PROGRAM: "zed" }), true);
53
+ strict_1.default.equal((0, zed_1.isZedTerminal)({ TERM_PROGRAM: "ZED" }), true);
54
+ strict_1.default.equal((0, zed_1.isZedTerminal)({ ZED_TERM: "true", TERM_PROGRAM: "vscode" }), true);
55
+ strict_1.default.equal((0, zed_1.isZedTerminal)({ TERM_PROGRAM: "vscode" }), false);
56
+ });
57
+ void (0, node_test_1.default)("isWsl detects WSL env markers", () => {
58
+ strict_1.default.equal((0, zed_1.isWsl)({ WSL_DISTRO_NAME: "Ubuntu" }), true);
59
+ strict_1.default.equal((0, zed_1.isWsl)({ WSL_INTEROP: "/run/WSL/1_interop" }), true);
60
+ strict_1.default.equal((0, zed_1.isWsl)({}), false);
61
+ });
62
+ void (0, node_test_1.default)("normalizeZedPathForHost maps Windows paths for WSL", () => {
63
+ strict_1.default.equal((0, zed_1.normalizeZedPathForHost)("C:\\Users\\czllo\\project\\src\\main.ts", { WSL_DISTRO_NAME: "Ubuntu" }), "/mnt/c/Users/czllo/project/src/main.ts");
64
+ strict_1.default.equal((0, zed_1.normalizeZedPathForHost)("D:/work/repo/file.ts", { WSL_DISTRO_NAME: "Ubuntu" }), "/mnt/d/work/repo/file.ts");
65
+ });
66
+ void (0, node_test_1.default)("normalizeZedPathForHost maps matching WSL UNC paths", () => {
67
+ strict_1.default.equal((0, zed_1.normalizeZedPathForHost)("\\\\wsl.localhost\\Ubuntu\\home\\julian\\project\\file.ts", {
68
+ WSL_DISTRO_NAME: "Ubuntu",
69
+ }), "/home/julian/project/file.ts");
70
+ strict_1.default.equal((0, zed_1.normalizeZedPathForHost)("\\\\wsl$\\Ubuntu\\home\\julian\\project\\file.ts", { WSL_DISTRO_NAME: "Ubuntu" }), "/home/julian/project/file.ts");
71
+ });
72
+ void (0, node_test_1.default)("normalizeZedPathForHost leaves other distro UNC paths untouched", () => {
73
+ const path = "\\\\wsl.localhost\\Debian\\home\\julian\\project\\file.ts";
74
+ strict_1.default.equal((0, zed_1.normalizeZedPathForHost)(path, { WSL_DISTRO_NAME: "Ubuntu" }), path);
75
+ });
76
+ void (0, node_test_1.default)("resolveZedDbPath detects Windows LOCALAPPDATA path in WSL", async () => {
77
+ const root = await (0, promises_1.mkdtemp)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "pi-x-ide-zed-localappdata-"));
78
+ const localAppData = (0, node_path_1.join)(root, "AppData", "Local");
79
+ const dbPath = (0, node_path_1.join)(localAppData, "Zed", "db", "0-stable", "db.sqlite");
80
+ await (0, promises_1.mkdir)((0, node_path_1.join)(localAppData, "Zed", "db", "0-stable"), { recursive: true });
81
+ await (0, promises_1.writeFile)(dbPath, "{}");
82
+ (0, node_test_1.after)(() => (0, promises_1.rm)(root, { recursive: true, force: true }).catch(() => undefined));
83
+ strict_1.default.equal((0, zed_1.resolveZedDbPath)({ WSL_DISTRO_NAME: "Ubuntu", LOCALAPPDATA: localAppData }, "/home/test"), dbPath);
84
+ });
85
+ void (0, node_test_1.default)("resolveZedDbPath respects env override", async () => {
86
+ const pkgPath = (0, node_path_1.join)((0, node_os_1.tmpdir)(), "pi-x-ide-zed-test-package.json");
87
+ await (0, promises_1.writeFile)(pkgPath, "{}");
88
+ (0, node_test_1.after)(() => (0, promises_1.rm)(pkgPath, { force: true }).catch(() => undefined));
89
+ const result = (0, zed_1.resolveZedDbPath)({ [zed_1.PI_X_IDE_ZED_DB_ENV]: pkgPath }, "/home/test");
90
+ strict_1.default.equal(result, pkgPath);
91
+ });
92
+ void (0, node_test_1.default)("resolveZedDbPath respects pi config env override", async () => {
93
+ const root = await (0, promises_1.mkdtemp)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "pi-x-ide-zed-config-"));
94
+ const configDir = (0, node_path_1.join)(root, ".pi");
95
+ const configPath = (0, node_path_1.join)(configDir, "config.json");
96
+ const dbPath = (0, node_path_1.join)(root, "db.sqlite");
97
+ await (0, promises_1.mkdir)(configDir, { recursive: true });
98
+ await (0, promises_1.writeFile)(dbPath, "{}");
99
+ await (0, promises_1.writeFile)(configPath, JSON.stringify({ env: { [zed_1.PI_X_IDE_ZED_DB_ENV]: dbPath } }));
100
+ (0, node_test_1.after)(() => (0, promises_1.rm)(root, { recursive: true, force: true }).catch(() => undefined));
101
+ strict_1.default.equal((0, zed_1.resolveZedDbPath)((0, config_1.resolvePiConfigEnv)({}, { configPath }), "/home/test"), dbPath);
102
+ });
103
+ void (0, node_test_1.default)("resolveZedDbPath ignores missing env override", () => {
104
+ const missingPath = (0, node_path_1.join)((0, node_os_1.tmpdir)(), "pi-x-ide-zed-missing-db.sqlite");
105
+ const result = (0, zed_1.resolveZedDbPath)({ [zed_1.PI_X_IDE_ZED_DB_ENV]: missingPath }, "/home/test");
106
+ strict_1.default.equal(result, undefined);
107
+ });
108
+ void (0, node_test_1.default)("resolveZedDbPath detects Windows default path", async () => {
109
+ const home = await (0, promises_1.mkdtemp)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "pi-x-ide-zed-home-"));
110
+ const dbPath = (0, node_path_1.join)(home, "AppData", "Local", "Zed", "db", "0-stable", "db.sqlite");
111
+ await (0, promises_1.mkdir)((0, node_path_1.join)(home, "AppData", "Local", "Zed", "db", "0-stable"), { recursive: true });
112
+ await (0, promises_1.writeFile)(dbPath, "{}");
113
+ (0, node_test_1.after)(() => (0, promises_1.rm)(home, { recursive: true, force: true }).catch(() => undefined));
114
+ strict_1.default.equal((0, zed_1.resolveZedDbPath)({}, home), dbPath);
115
+ });
116
+ void (0, node_test_1.default)("resolveZedDbPath returns undefined when no DB exists", () => {
117
+ const result = (0, zed_1.resolveZedDbPath)({}, "/nonexistent-home");
118
+ strict_1.default.equal(result, undefined);
119
+ });
120
+ // ── Workspace paths ──────────────────────────────────────────
121
+ void (0, node_test_1.default)("parseZedWorkspacePaths handles JSON array", () => {
122
+ strict_1.default.deepEqual((0, zed_1.parseZedWorkspacePaths)('["/repo", "/other"]'), ["/repo", "/other"]);
123
+ });
124
+ void (0, node_test_1.default)("parseZedWorkspacePaths handles newline-delimited paths", () => {
125
+ strict_1.default.deepEqual((0, zed_1.parseZedWorkspacePaths)("/repo\n/other"), ["/repo", "/other"]);
126
+ strict_1.default.deepEqual((0, zed_1.parseZedWorkspacePaths)("/repo\n/other\n"), ["/repo", "/other"]);
127
+ });
128
+ void (0, node_test_1.default)("parseZedWorkspacePaths handles null, empty, and malformed JSON", () => {
129
+ strict_1.default.deepEqual((0, zed_1.parseZedWorkspacePaths)(null), []);
130
+ strict_1.default.deepEqual((0, zed_1.parseZedWorkspacePaths)(""), []);
131
+ strict_1.default.deepEqual((0, zed_1.parseZedWorkspacePaths)(" "), []);
132
+ strict_1.default.deepEqual((0, zed_1.parseZedWorkspacePaths)("{not json"), []);
133
+ });
134
+ async function createFixture() {
135
+ const dir = await (0, promises_1.mkdtemp)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "pi-x-ide-zed-test-"));
136
+ const dbPath = (0, node_path_1.join)(dir, "db.sqlite");
137
+ const db = new node_sqlite_1.DatabaseSync(dbPath);
138
+ db.exec(`
139
+ CREATE TABLE workspaces (
140
+ workspace_id TEXT PRIMARY KEY,
141
+ paths TEXT,
142
+ timestamp INTEGER
143
+ );
144
+ CREATE TABLE panes (
145
+ pane_id TEXT PRIMARY KEY,
146
+ workspace_id TEXT,
147
+ active INTEGER
148
+ );
149
+ CREATE TABLE items (
150
+ item_id TEXT PRIMARY KEY,
151
+ workspace_id TEXT,
152
+ pane_id TEXT,
153
+ kind TEXT,
154
+ active INTEGER
155
+ );
156
+ CREATE TABLE editors (
157
+ item_id TEXT,
158
+ workspace_id TEXT,
159
+ buffer_path TEXT,
160
+ contents TEXT,
161
+ PRIMARY KEY (item_id, workspace_id)
162
+ );
163
+ CREATE TABLE editor_selections (
164
+ editor_id TEXT,
165
+ workspace_id TEXT,
166
+ start INTEGER,
167
+ end INTEGER
168
+ );
169
+ `);
170
+ db.close();
171
+ async function cleanup() {
172
+ await (0, promises_1.rm)(dir, { recursive: true, force: true });
173
+ }
174
+ return { dir, dbPath, cleanup };
175
+ }
176
+ async function createNumericFixture() {
177
+ const dir = await (0, promises_1.mkdtemp)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "pi-x-ide-zed-numeric-"));
178
+ const dbPath = (0, node_path_1.join)(dir, "db.sqlite");
179
+ const db = new node_sqlite_1.DatabaseSync(dbPath);
180
+ db.exec(`
181
+ CREATE TABLE workspaces (
182
+ workspace_id INTEGER PRIMARY KEY,
183
+ paths TEXT,
184
+ timestamp INTEGER
185
+ );
186
+ CREATE TABLE panes (
187
+ pane_id INTEGER PRIMARY KEY,
188
+ workspace_id INTEGER,
189
+ active INTEGER
190
+ );
191
+ CREATE TABLE items (
192
+ item_id INTEGER PRIMARY KEY,
193
+ workspace_id INTEGER,
194
+ pane_id INTEGER,
195
+ kind TEXT,
196
+ active INTEGER
197
+ );
198
+ CREATE TABLE editors (
199
+ item_id INTEGER,
200
+ workspace_id INTEGER,
201
+ buffer_path TEXT,
202
+ contents TEXT,
203
+ PRIMARY KEY (item_id, workspace_id)
204
+ );
205
+ CREATE TABLE editor_selections (
206
+ editor_id INTEGER,
207
+ workspace_id INTEGER,
208
+ start INTEGER,
209
+ end INTEGER
210
+ );
211
+ `);
212
+ db.close();
213
+ async function cleanup() {
214
+ await (0, promises_1.rm)(dir, { recursive: true, force: true });
215
+ }
216
+ return { dir, dbPath, cleanup };
217
+ }
218
+ function openFixture(dbPath) {
219
+ return new node_sqlite_1.DatabaseSync(dbPath);
220
+ }
221
+ function insertWorkspace(db, wsId, paths, ts) {
222
+ db.prepare("INSERT INTO workspaces VALUES (?, ?, ?)").run(wsId, paths, ts);
223
+ }
224
+ function insertPane(db, paneId, wsId, active) {
225
+ db.prepare("INSERT INTO panes VALUES (?, ?, ?)").run(paneId, wsId, active);
226
+ }
227
+ function insertItem(db, itemId, wsId, paneId, kind, active) {
228
+ db.prepare("INSERT INTO items VALUES (?, ?, ?, ?, ?)").run(itemId, wsId, paneId, kind, active);
229
+ }
230
+ function insertEditor(db, itemId, wsId, bufferPath, contents) {
231
+ db.prepare("INSERT INTO editors VALUES (?, ?, ?, ?)").run(itemId, wsId, bufferPath, contents);
232
+ }
233
+ function insertSelection(db, editorId, wsId, start, end) {
234
+ db.prepare("INSERT INTO editor_selections VALUES (?, ?, ?, ?)").run(editorId, wsId, start, end);
235
+ }
236
+ // ── resolveZedSelection ──────────────────────────────────────
237
+ void (0, node_test_1.default)("returns active editor snapshot with selected text", async () => {
238
+ const { dir, dbPath, cleanup } = await createFixture();
239
+ (0, node_test_1.after)(cleanup);
240
+ const db = openFixture(dbPath);
241
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
242
+ insertPane(db, "p1", "w1", 1);
243
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
244
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "src/main.ts"), "hello world\nconst x = 1;\n");
245
+ insertSelection(db, "i1", "w1", 0, 5);
246
+ db.close();
247
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir, now: 12345 });
248
+ strict_1.default.ok(snapshot);
249
+ strict_1.default.equal(snapshot.receivedAt, 12345);
250
+ strict_1.default.equal(snapshot.source, "zed");
251
+ strict_1.default.equal(snapshot.workspaceFolder, dir);
252
+ strict_1.default.equal(snapshot.filePath, (0, node_path_1.join)(dir, "src/main.ts"));
253
+ strict_1.default.equal(snapshot.ranges.length, 1);
254
+ strict_1.default.equal(snapshot.ranges[0].text, "hello");
255
+ strict_1.default.equal(snapshot.ranges[0].selection.start.line, 0);
256
+ strict_1.default.equal(snapshot.ranges[0].selection.start.character, 0);
257
+ strict_1.default.equal(snapshot.ranges[0].selection.end.line, 0);
258
+ strict_1.default.equal(snapshot.ranges[0].selection.end.character, 5);
259
+ });
260
+ void (0, node_test_1.default)("returns active editor snapshot with numeric IDs (real Zed schema)", async () => {
261
+ // Zed's actual database uses INTEGER PRIMARY KEYs, not TEXT.
262
+ // node:sqlite returns them as JS numbers. The filter must accept both.
263
+ const { dir, dbPath, cleanup } = await createNumericFixture();
264
+ (0, node_test_1.after)(cleanup);
265
+ const db = openFixture(dbPath);
266
+ db.prepare("INSERT INTO workspaces VALUES (?, ?, ?)").run(1, JSON.stringify([dir]), Date.now());
267
+ db.prepare("INSERT INTO panes VALUES (?, ?, ?)").run(1, 1, 1);
268
+ db.prepare("INSERT INTO items VALUES (?, ?, ?, ?, ?)").run(1, 1, 1, "Editor", 1);
269
+ db.prepare("INSERT INTO editors VALUES (?, ?, ?, ?)").run(1, 1, (0, node_path_1.join)(dir, "src/main.ts"), "hello world\n");
270
+ db.prepare("INSERT INTO editor_selections VALUES (?, ?, ?, ?)").run(1, 1, 0, 5);
271
+ db.close();
272
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir, now: 12345 });
273
+ strict_1.default.ok(snapshot);
274
+ strict_1.default.equal(snapshot.source, "zed");
275
+ strict_1.default.equal(snapshot.ranges[0].text, "hello");
276
+ });
277
+ void (0, node_test_1.default)("matches Windows workspace paths when running in WSL", async () => {
278
+ const { dbPath, cleanup } = await createFixture();
279
+ (0, node_test_1.after)(cleanup);
280
+ const db = openFixture(dbPath);
281
+ insertWorkspace(db, "w1", JSON.stringify(["C:\\Users\\czllo\\project"]), Date.now());
282
+ insertPane(db, "p1", "w1", 1);
283
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
284
+ insertEditor(db, "i1", "w1", "C:\\Users\\czllo\\project\\src\\main.ts", "windows content");
285
+ insertSelection(db, "i1", "w1", 0, 7);
286
+ db.close();
287
+ const snapshot = (0, zed_1.resolveZedSelection)({
288
+ dbPath,
289
+ cwd: "/mnt/c/Users/czllo/project",
290
+ env: { WSL_DISTRO_NAME: "Ubuntu" },
291
+ });
292
+ strict_1.default.ok(snapshot);
293
+ strict_1.default.equal(snapshot.workspaceFolder, "/mnt/c/Users/czllo/project");
294
+ strict_1.default.equal(snapshot.filePath, "/mnt/c/Users/czllo/project/src/main.ts");
295
+ strict_1.default.equal(snapshot.ranges[0].text, "windows");
296
+ });
297
+ void (0, node_test_1.default)("matches WSL UNC workspace paths when running in WSL", async () => {
298
+ const { dbPath, cleanup } = await createFixture();
299
+ (0, node_test_1.after)(cleanup);
300
+ const db = openFixture(dbPath);
301
+ insertWorkspace(db, "w1", JSON.stringify(["\\\\wsl.localhost\\Ubuntu\\home\\julian\\project"]), Date.now());
302
+ insertPane(db, "p1", "w1", 1);
303
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
304
+ insertEditor(db, "i1", "w1", "\\\\wsl.localhost\\Ubuntu\\home\\julian\\project\\src\\main.ts", "unc content");
305
+ insertSelection(db, "i1", "w1", 0, 3);
306
+ db.close();
307
+ const snapshot = (0, zed_1.resolveZedSelection)({
308
+ dbPath,
309
+ cwd: "/home/julian/project",
310
+ env: { WSL_DISTRO_NAME: "Ubuntu" },
311
+ });
312
+ strict_1.default.ok(snapshot);
313
+ strict_1.default.equal(snapshot.workspaceFolder, "/home/julian/project");
314
+ strict_1.default.equal(snapshot.filePath, "/home/julian/project/src/main.ts");
315
+ strict_1.default.equal(snapshot.ranges[0].text, "unc");
316
+ });
317
+ void (0, node_test_1.default)("returns snapshot with ranges [] when selection is empty caret", async () => {
318
+ const { dir, dbPath, cleanup } = await createFixture();
319
+ (0, node_test_1.after)(cleanup);
320
+ const db = openFixture(dbPath);
321
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
322
+ insertPane(db, "p1", "w1", 1);
323
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
324
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "src/main.ts"), "hello");
325
+ insertSelection(db, "i1", "w1", 3, 3);
326
+ db.close();
327
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
328
+ strict_1.default.ok(snapshot);
329
+ strict_1.default.equal(snapshot.ranges.length, 0);
330
+ });
331
+ void (0, node_test_1.default)("returns active empty file snapshot", async () => {
332
+ const { dir, dbPath, cleanup } = await createFixture();
333
+ (0, node_test_1.after)(cleanup);
334
+ const db = openFixture(dbPath);
335
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
336
+ insertPane(db, "p1", "w1", 1);
337
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
338
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "empty.ts"), "");
339
+ db.close();
340
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir, readFile: () => "" });
341
+ strict_1.default.ok(snapshot);
342
+ strict_1.default.equal(snapshot.filePath, (0, node_path_1.join)(dir, "empty.ts"));
343
+ strict_1.default.equal(snapshot.ranges.length, 0);
344
+ });
345
+ void (0, node_test_1.default)("returns undefined when schema is missing", async () => {
346
+ const { dir, dbPath, cleanup } = await createFixture();
347
+ (0, node_test_1.after)(cleanup);
348
+ await (0, promises_1.rm)(dbPath, { force: true });
349
+ const db = openFixture(dbPath);
350
+ db.exec("CREATE TABLE unrelated (id TEXT)");
351
+ db.close();
352
+ strict_1.default.equal((0, zed_1.resolveZedSelection)({ dbPath, cwd: dir }), undefined);
353
+ });
354
+ void (0, node_test_1.default)("skips Terminal items", async () => {
355
+ const { dir, dbPath, cleanup } = await createFixture();
356
+ (0, node_test_1.after)(cleanup);
357
+ const db = openFixture(dbPath);
358
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
359
+ insertPane(db, "p1", "w1", 1);
360
+ insertItem(db, "i1", "w1", "p1", "Terminal", 1);
361
+ db.close();
362
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
363
+ strict_1.default.equal(snapshot, undefined);
364
+ });
365
+ void (0, node_test_1.default)("returns undefined when DB is empty", async () => {
366
+ const { dir, dbPath, cleanup } = await createFixture();
367
+ (0, node_test_1.after)(cleanup);
368
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
369
+ strict_1.default.equal(snapshot, undefined);
370
+ });
371
+ void (0, node_test_1.default)("picks workspace with longest matching path", async () => {
372
+ const { dir, dbPath, cleanup } = await createFixture();
373
+ (0, node_test_1.after)(cleanup);
374
+ const db = openFixture(dbPath);
375
+ const base = (0, node_path_1.join)(dir, "projects");
376
+ const child = (0, node_path_1.join)(base, "app");
377
+ insertWorkspace(db, "w-broad", JSON.stringify([base]), 1000);
378
+ insertPane(db, "pb", "w-broad", 1);
379
+ insertItem(db, "ib", "w-broad", "pb", "Editor", 1);
380
+ insertEditor(db, "ib", "w-broad", (0, node_path_1.join)(base, "README.md"), "broad");
381
+ insertSelection(db, "ib", "w-broad", 0, 1);
382
+ insertWorkspace(db, "w-narrow", JSON.stringify([child]), 2000);
383
+ insertPane(db, "pn", "w-narrow", 1);
384
+ insertItem(db, "in", "w-narrow", "pn", "Editor", 1);
385
+ insertEditor(db, "in", "w-narrow", (0, node_path_1.join)(child, "src/main.ts"), "narrow");
386
+ insertSelection(db, "in", "w-narrow", 0, 2);
387
+ db.close();
388
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: child });
389
+ strict_1.default.ok(snapshot);
390
+ strict_1.default.equal(snapshot.ranges[0].text, "na"); // w-narrow wins
391
+ });
392
+ void (0, node_test_1.default)("normalizes reversed selections", async () => {
393
+ const { dir, dbPath, cleanup } = await createFixture();
394
+ (0, node_test_1.after)(cleanup);
395
+ const db = openFixture(dbPath);
396
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
397
+ insertPane(db, "p1", "w1", 1);
398
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
399
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "src/main.ts"), "abcdefghij");
400
+ // reversed: end < start
401
+ insertSelection(db, "i1", "w1", 5, 1);
402
+ db.close();
403
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
404
+ strict_1.default.ok(snapshot);
405
+ strict_1.default.equal(snapshot.ranges[0].text, "bcde"); // chars at bytes 1-5
406
+ strict_1.default.equal(snapshot.ranges[0].selection.start.character, 1);
407
+ strict_1.default.equal(snapshot.ranges[0].selection.end.character, 5);
408
+ });
409
+ void (0, node_test_1.default)("converts UTF-8 multi-byte offsets in selection", async () => {
410
+ const { dir, dbPath, cleanup } = await createFixture();
411
+ (0, node_test_1.after)(cleanup);
412
+ const text = "a€c🌟e"; // € = 3 bytes, 🌟 = 4 bytes (UTF-8)
413
+ // byte offsets: a=1, €=4(1+3), c=5, 🌟=9(5+4), e=10
414
+ const db = openFixture(dbPath);
415
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
416
+ insertPane(db, "p1", "w1", 1);
417
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
418
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "src/main.ts"), text);
419
+ // select from € (byte 1) through 🌟 (byte 9)
420
+ insertSelection(db, "i1", "w1", 1, 9);
421
+ db.close();
422
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
423
+ strict_1.default.ok(snapshot);
424
+ // should be "€c🌟" — chars from index 1 to index 4
425
+ strict_1.default.equal(snapshot.ranges[0].text, "€c🌟");
426
+ strict_1.default.equal(snapshot.ranges[0].selection.start.line, 0);
427
+ strict_1.default.equal(snapshot.ranges[0].selection.start.character, 1);
428
+ strict_1.default.equal(snapshot.ranges[0].selection.end.line, 0);
429
+ strict_1.default.equal(snapshot.ranges[0].selection.end.character, 5);
430
+ });
431
+ void (0, node_test_1.default)("handles multi-byte emoji selection at boundary", async () => {
432
+ const { dir, dbPath, cleanup } = await createFixture();
433
+ (0, node_test_1.after)(cleanup);
434
+ const text = "hello 🎉 world"; // 🎉 = 4 bytes
435
+ const db = openFixture(dbPath);
436
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
437
+ insertPane(db, "p1", "w1", 1);
438
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
439
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "src/main.ts"), text);
440
+ // select just the emoji: byte offset 6 (start of 🎉) to 10 (end of 🎉)
441
+ insertSelection(db, "i1", "w1", 6, 10);
442
+ db.close();
443
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
444
+ strict_1.default.ok(snapshot);
445
+ strict_1.default.equal(snapshot.ranges[0].text, "🎉");
446
+ strict_1.default.equal(snapshot.ranges[0].selection.start.line, 0);
447
+ strict_1.default.equal(snapshot.ranges[0].selection.start.character, 6);
448
+ strict_1.default.equal(snapshot.ranges[0].selection.end.line, 0);
449
+ strict_1.default.equal(snapshot.ranges[0].selection.end.character, 8);
450
+ });
451
+ void (0, node_test_1.default)("falls back to contents column when file does not exist on disk", async () => {
452
+ const { dir, dbPath, cleanup } = await createFixture();
453
+ (0, node_test_1.after)(cleanup);
454
+ const db = openFixture(dbPath);
455
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
456
+ insertPane(db, "p1", "w1", 1);
457
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
458
+ const bufferPath = (0, node_path_1.join)(dir, "unsaved-buffer.ts");
459
+ insertEditor(db, "i1", "w1", bufferPath, "inline content here");
460
+ insertSelection(db, "i1", "w1", 0, 6);
461
+ db.close();
462
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
463
+ strict_1.default.ok(snapshot);
464
+ strict_1.default.equal(snapshot.ranges[0].text, "inline");
465
+ });
466
+ void (0, node_test_1.default)("handles multi-line selection", async () => {
467
+ const { dir, dbPath, cleanup } = await createFixture();
468
+ (0, node_test_1.after)(cleanup);
469
+ const text = "line1\nline2\nline3\n";
470
+ const db = openFixture(dbPath);
471
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
472
+ insertPane(db, "p1", "w1", 1);
473
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
474
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "src/main.ts"), text);
475
+ // select "ne2\nline3": bytes 8 to 17
476
+ insertSelection(db, "i1", "w1", 8, 17);
477
+ db.close();
478
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
479
+ strict_1.default.ok(snapshot);
480
+ strict_1.default.equal(snapshot.ranges[0].text, "ne2\nline3");
481
+ strict_1.default.equal(snapshot.ranges[0].selection.start.line, 1);
482
+ strict_1.default.equal(snapshot.ranges[0].selection.start.character, 2);
483
+ strict_1.default.equal(snapshot.ranges[0].selection.end.line, 2);
484
+ strict_1.default.equal(snapshot.ranges[0].selection.end.character, 5);
485
+ });
486
+ void (0, node_test_1.default)("handles multiple selections (multi-cursor)", async () => {
487
+ const { dir, dbPath, cleanup } = await createFixture();
488
+ (0, node_test_1.after)(cleanup);
489
+ const text = "abc\ndef\nghi\n";
490
+ const db = openFixture(dbPath);
491
+ insertWorkspace(db, "w1", JSON.stringify([dir]), Date.now());
492
+ insertPane(db, "p1", "w1", 1);
493
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
494
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "src/main.ts"), text);
495
+ insertSelection(db, "i1", "w1", 0, 1);
496
+ insertSelection(db, "i1", "w1", 5, 6);
497
+ db.close();
498
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
499
+ strict_1.default.ok(snapshot);
500
+ strict_1.default.equal(snapshot.ranges.length, 2);
501
+ strict_1.default.equal(snapshot.ranges[0].text, "a");
502
+ strict_1.default.equal(snapshot.ranges[1].text, "e");
503
+ });
504
+ void (0, node_test_1.default)("newline workspace paths are parsed", async () => {
505
+ const { dir, dbPath, cleanup } = await createFixture();
506
+ (0, node_test_1.after)(cleanup);
507
+ const db = openFixture(dbPath);
508
+ insertWorkspace(db, "w1", dir + "\n/tmp/other", Date.now());
509
+ insertPane(db, "p1", "w1", 1);
510
+ insertItem(db, "i1", "w1", "p1", "Editor", 1);
511
+ insertEditor(db, "i1", "w1", (0, node_path_1.join)(dir, "src/main.ts"), "x");
512
+ insertSelection(db, "i1", "w1", 0, 1);
513
+ db.close();
514
+ const snapshot = (0, zed_1.resolveZedSelection)({ dbPath, cwd: dir });
515
+ strict_1.default.ok(snapshot);
516
+ strict_1.default.equal(snapshot.workspaceFolder, dir);
517
+ });
518
+ // ── Polling lifecycle ─────────────────────────────────────────
519
+ void (0, node_test_1.default)("stopZedPolling clears timer and selection key", () => {
520
+ const runtime = (0, state_1.createRuntime)();
521
+ runtime.zedPollTimer = setTimeout(() => { }, 999_999);
522
+ runtime.zedPollSelectionKey = "some-key";
523
+ (0, zed_1.stopZedPolling)(runtime);
524
+ strict_1.default.equal(runtime.zedPollTimer, undefined);
525
+ strict_1.default.equal(runtime.zedPollSelectionKey, undefined);
526
+ });
527
+ void (0, node_test_1.default)("stopZedPolling is idempotent", () => {
528
+ const runtime = (0, state_1.createRuntime)();
529
+ (0, zed_1.stopZedPolling)(runtime);
530
+ (0, zed_1.stopZedPolling)(runtime);
531
+ strict_1.default.equal(runtime.zedPollTimer, undefined);
532
+ });
533
+ function createContext(cwd = "/tmp") {
534
+ return {
535
+ cwd,
536
+ hasUI: false,
537
+ ui: { setWidget: () => { }, notify: () => { }, select: () => Promise.resolve(undefined), pasteToEditor: () => { } },
538
+ };
539
+ }
540
+ function createCandidate(workspaceFolder = "/tmp") {
541
+ return {
542
+ path: "/tmp/stale.lock",
543
+ lock: {
544
+ version: 1,
545
+ ide: "vscode",
546
+ name: "VS Code",
547
+ transport: "ws",
548
+ host: "127.0.0.1",
549
+ port: 49152,
550
+ authToken: "token",
551
+ workspaceFolders: [workspaceFolder],
552
+ createdAt: new Date(0).toISOString(),
553
+ updatedAt: new Date(0).toISOString(),
554
+ },
555
+ mtimeMs: 0,
556
+ matchLength: 1,
557
+ workspaceFolder,
558
+ };
559
+ }
560
+ void (0, node_test_1.default)("startZedPolling returns false when not in Zed terminal", () => {
561
+ const runtime = (0, state_1.createRuntime)();
562
+ const result = (0, zed_1.startZedPolling)(runtime, createContext(), { env: {} });
563
+ strict_1.default.equal(result, false);
564
+ strict_1.default.equal(runtime.zedPollTimer, undefined);
565
+ });
566
+ void (0, node_test_1.default)("startZedPolling returns false when DB path not found", () => {
567
+ const runtime = (0, state_1.createRuntime)();
568
+ const result = (0, zed_1.startZedPolling)(runtime, createContext(), { env: { ZED_TERM: "true" } });
569
+ strict_1.default.equal(result, false);
570
+ strict_1.default.equal(runtime.zedPollTimer, undefined);
571
+ });
572
+ void (0, node_test_1.default)("startZedPolling clears stale WebSocket candidate state", async () => {
573
+ const { dir, dbPath, cleanup } = await createFixture();
574
+ (0, node_test_1.after)(cleanup);
575
+ const runtime = (0, state_1.createRuntime)();
576
+ runtime.currentCandidate = createCandidate(dir);
577
+ runtime.connectionStatus = "error";
578
+ const started = (0, zed_1.startZedPolling)(runtime, createContext(dir), {
579
+ dbPath,
580
+ env: { ZED_TERM: "true" },
581
+ intervalMs: 999_999,
582
+ });
583
+ strict_1.default.equal(started, true);
584
+ strict_1.default.equal(runtime.currentCandidate, undefined);
585
+ strict_1.default.equal(runtime.connection, undefined);
586
+ strict_1.default.equal(runtime.connectedServer?.ide, "zed");
587
+ strict_1.default.equal(runtime.connectionStatus, "connected");
588
+ (0, zed_1.stopZedPolling)(runtime);
589
+ });
590
+ //# sourceMappingURL=zed.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zed.test.js","sourceRoot":"","sources":["../../test/zed.test.ts"],"names":[],"mappings":"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"}