@lore-co/cli 0.1.21 → 0.1.23

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.
Files changed (47) hide show
  1. package/README.md +16 -5
  2. package/dist/agents.d.ts +16 -0
  3. package/dist/agents.d.ts.map +1 -0
  4. package/dist/agents.js +80 -0
  5. package/dist/agents.js.map +1 -0
  6. package/dist/cli.d.ts +4 -0
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +40 -6
  9. package/dist/cli.js.map +1 -1
  10. package/dist/devin-client.d.ts +2 -2
  11. package/dist/generated-assets.d.ts +4 -4
  12. package/dist/generated-assets.js +4 -4
  13. package/dist/guard.d.ts +1 -1
  14. package/dist/guard.d.ts.map +1 -1
  15. package/dist/guard.js +2 -1
  16. package/dist/guard.js.map +1 -1
  17. package/dist/handoff.d.ts.map +1 -1
  18. package/dist/handoff.js +12 -25
  19. package/dist/handoff.js.map +1 -1
  20. package/dist/live.d.ts.map +1 -1
  21. package/dist/live.js +29 -2
  22. package/dist/live.js.map +1 -1
  23. package/dist/pty.d.ts.map +1 -1
  24. package/dist/pty.js +46 -6
  25. package/dist/pty.js.map +1 -1
  26. package/dist/recovery-opencode.d.ts +3 -0
  27. package/dist/recovery-opencode.d.ts.map +1 -0
  28. package/dist/recovery-opencode.js +72 -0
  29. package/dist/recovery-opencode.js.map +1 -0
  30. package/dist/recovery-state.d.ts +77 -0
  31. package/dist/recovery-state.d.ts.map +1 -0
  32. package/dist/recovery-state.js +262 -0
  33. package/dist/recovery-state.js.map +1 -0
  34. package/dist/recovery.d.ts +21 -0
  35. package/dist/recovery.d.ts.map +1 -0
  36. package/dist/recovery.js +560 -0
  37. package/dist/recovery.js.map +1 -0
  38. package/dist/runtime.d.ts.map +1 -1
  39. package/dist/runtime.js +52 -41
  40. package/dist/runtime.js.map +1 -1
  41. package/dist/self-host.d.ts +1 -1
  42. package/dist/self-host.js +2 -2
  43. package/dist/signed-snapshot.d.ts.map +1 -1
  44. package/dist/signed-snapshot.js +3 -3
  45. package/dist/signed-snapshot.js.map +1 -1
  46. package/dist/update.js +3 -3
  47. package/package.json +3 -3
@@ -0,0 +1,560 @@
1
+ import { spawn } from "node:child_process";
2
+ import { constants } from "node:fs";
3
+ import { access, mkdir, open, rename, unlink } from "node:fs/promises";
4
+ import { randomUUID } from "node:crypto";
5
+ import { basename, dirname, resolve } from "node:path";
6
+ import { fileURLToPath, pathToFileURL } from "node:url";
7
+ import { z } from "zod";
8
+ import { IS_STANDALONE_BINARY } from "./version.js";
9
+ import { openPty } from "./pty.js";
10
+ import { captureRecoveryHook, createRecoveryRun, recoveryBrief, recoveryMetrics, recoveryRunKey, RecoveryRunSchema, recoveryStore, recordRecoveryMetric, workspaceSnapshot, requestRecoverySwitch, } from "./recovery-state.js";
11
+ import { AGENTS, LAUNCHABLE_AGENTS, RECOVERY_SOURCES, findAgentExecutable, isInteractiveAgent, isLaunchable, isRecoverySource, launchArguments } from "./agents.js";
12
+ import { openCodeRecoveryPluginSource } from "./recovery-opencode.js";
13
+ const Settings = z.object({
14
+ fallback: z.enum(LAUNCHABLE_AGENTS), shellPath: z.string(), shellPaths: z.array(z.string()).optional(),
15
+ claudeSettings: z.string().optional(),
16
+ routes: z.partialRecord(z.enum(RECOVERY_SOURCES), z.enum(LAUNCHABLE_AGENTS)).optional(),
17
+ sourceFiles: z.array(z.object({ agent: z.enum(RECOVERY_SOURCES), path: z.string() })).optional(),
18
+ openCodePlugin: z.string().optional(),
19
+ });
20
+ const routesOf = (settings) => settings.routes ?? { claude: settings.fallback };
21
+ const filesOf = (settings) => settings.sourceFiles ?? (settings.claudeSettings ? [{ agent: "claude", path: settings.claudeSettings }] : []);
22
+ const START = "# >>> Lore recovery >>>";
23
+ const END = "# <<< Lore recovery <<<";
24
+ const OWNER = "--owner lore-recovery";
25
+ export function cliInvocation() {
26
+ const entry = new URL(import.meta.url.endsWith(".ts") ? "../dist/cli.js" : "./cli.js", import.meta.url);
27
+ return [process.execPath, ...(IS_STANDALONE_BINARY ? [] : [fileURLToPath(entry)])];
28
+ }
29
+ const quote = (value) => `'${value.replaceAll("'", "'\\''")}'`;
30
+ export const findRecoveryExecutable = findAgentExecutable;
31
+ async function readOptional(path) {
32
+ let file;
33
+ try {
34
+ file = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW);
35
+ }
36
+ catch (error) {
37
+ if (error.code === "ENOENT")
38
+ return { text: "", mode: 0o600 };
39
+ throw error;
40
+ }
41
+ try {
42
+ const stat = await file.stat();
43
+ if (!stat.isFile() || stat.size > 4 * 1024 * 1024 || (process.getuid && stat.uid !== process.getuid())) {
44
+ throw new Error(`Cannot safely update ${path}.`);
45
+ }
46
+ return { text: await file.readFile("utf8"), mode: stat.mode & 0o777 };
47
+ }
48
+ finally {
49
+ await file.close();
50
+ }
51
+ }
52
+ async function replaceFile(path, text, previous) {
53
+ if (previous.text === text)
54
+ return;
55
+ await mkdir(dirname(path), { recursive: true, mode: 0o700 });
56
+ if (previous.text) {
57
+ const backup = await open(`${path}.lore-recovery-backup-${randomUUID()}`, "wx", 0o600);
58
+ try {
59
+ await backup.writeFile(previous.text);
60
+ }
61
+ finally {
62
+ await backup.close();
63
+ }
64
+ }
65
+ const temporary = `${path}.lore-${randomUUID()}`;
66
+ const file = await open(temporary, "wx", previous.mode);
67
+ try {
68
+ await file.writeFile(text);
69
+ await file.sync();
70
+ }
71
+ finally {
72
+ await file.close();
73
+ }
74
+ try {
75
+ await rename(temporary, path);
76
+ }
77
+ finally {
78
+ await unlink(temporary).catch(() => { });
79
+ }
80
+ }
81
+ export function removeRecoveryShell(text) {
82
+ const start = text.indexOf(START);
83
+ if (start < 0)
84
+ return text;
85
+ const end = text.indexOf(END, start);
86
+ if (end < 0)
87
+ throw new Error("Lore recovery shell block is incomplete; repair it before reconnecting.");
88
+ return text.slice(0, start) + text.slice(end + END.length).replace(/^\r?\n/u, "");
89
+ }
90
+ export function mergeRecoveryHooks(value, command, events = ["UserPromptSubmit", "Stop", "StopFailure"]) {
91
+ if (!value || typeof value !== "object" || Array.isArray(value))
92
+ throw new Error("Invalid Claude settings.");
93
+ const result = structuredClone(value);
94
+ if (result.hooks !== undefined && (!result.hooks || typeof result.hooks !== "object" || Array.isArray(result.hooks)))
95
+ throw new Error("Invalid Claude hooks.");
96
+ const hooks = (result.hooks ?? {});
97
+ for (const event of events) {
98
+ const groups = hooks[event];
99
+ if (groups !== undefined && !Array.isArray(groups))
100
+ throw new Error(`Invalid Claude ${event} hooks.`);
101
+ const remaining = (groups ?? []).flatMap((group) => {
102
+ if (!Array.isArray(group.hooks))
103
+ return [group];
104
+ const handlers = group.hooks.filter((handler) => typeof handler.command !== "string" || !handler.command.includes(OWNER));
105
+ return handlers.length ? [{ ...group, hooks: handlers }] : [];
106
+ });
107
+ if (command)
108
+ remaining.push({ ...(event === "StopFailure" ? { matcher: "rate_limit" } : {}), hooks: [{ type: "command", command, timeout: 10 }] });
109
+ if (remaining.length)
110
+ hooks[event] = remaining;
111
+ else
112
+ delete hooks[event];
113
+ }
114
+ if (Object.keys(hooks).length)
115
+ result.hooks = hooks;
116
+ else
117
+ delete result.hooks;
118
+ return result;
119
+ }
120
+ function hookEvents(agent) {
121
+ return agent === "claude" ? ["UserPromptSubmit", "Stop", "StopFailure"] :
122
+ agent === "devin" ? ["UserPromptSubmit", "Stop", "PostToolUse", "PostCompaction"] : ["UserPromptSubmit", "Stop"];
123
+ }
124
+ function mergeOpenCodePlugin(value, plugin, enabled) {
125
+ const parsed = z.object({ plugin: z.array(z.string()).optional() }).passthrough().parse(value);
126
+ const plugins = (parsed.plugin ?? []).filter(item => item !== pathToFileURL(plugin).href);
127
+ if (enabled)
128
+ plugins.push(pathToFileURL(plugin).href);
129
+ if (plugins.length)
130
+ parsed.plugin = plugins;
131
+ else
132
+ delete parsed.plugin;
133
+ return parsed;
134
+ }
135
+ export async function prepareRecoveryInstallation(paths, fallback, env = process.env, requestedSources) {
136
+ if (!isLaunchable(fallback))
137
+ throw new Error(`Choose a local fallback: ${LAUNCHABLE_AGENTS.join(", ")}.`);
138
+ await findAgentExecutable(fallback, env);
139
+ const sources = requestedSources ? [...new Set(requestedSources)] : (await Promise.all(RECOVERY_SOURCES.map(async (source) => source !== fallback && await findAgentExecutable(source, env).then(() => true, () => false) ? source : null))).filter((source) => source !== null);
140
+ if (!sources.length)
141
+ throw new Error("No supported source client is installed. Sources: " + RECOVERY_SOURCES.join(", "));
142
+ for (const source of sources) {
143
+ if (source === fallback)
144
+ throw new Error("Choose a different fallback agent.");
145
+ await findAgentExecutable(source, env);
146
+ }
147
+ const previousSettings = Settings.safeParse(await recoveryStore(paths.home).readState("settings"));
148
+ const routes = previousSettings.success ? routesOf(previousSettings.data) : {};
149
+ for (const source of sources)
150
+ routes[source] = fallback;
151
+ const allSources = Object.keys(routes);
152
+ const shell = basename(env.SHELL ?? "");
153
+ if (shell !== "zsh" && shell !== "bash")
154
+ throw new Error("Automatic recovery setup supports bash and zsh. Set SHELL to your shell before connecting.");
155
+ const shellPath = shell === "zsh" ? resolve(env.ZDOTDIR || paths.home, ".zshrc") : resolve(paths.home, ".bashrc");
156
+ const shellPaths = [shellPath];
157
+ if (shell === "bash") {
158
+ let login = resolve(paths.home, ".bash_profile");
159
+ for (const name of [".bash_profile", ".bash_login", ".profile"]) {
160
+ const path = resolve(paths.home, name);
161
+ if (await access(path).then(() => true, () => false)) {
162
+ login = path;
163
+ break;
164
+ }
165
+ }
166
+ shellPaths.push(login);
167
+ }
168
+ if (previousSettings.success) {
169
+ for (const path of previousSettings.data.shellPaths ?? [previousSettings.data.shellPath])
170
+ if (!shellPaths.includes(path))
171
+ shellPaths.push(path);
172
+ }
173
+ const shellDocuments = new Map();
174
+ for (const path of shellPaths) {
175
+ const document = await readOptional(path);
176
+ shellDocuments.set(path, document);
177
+ const withoutBlock = removeRecoveryShell(document.text);
178
+ for (const source of allSources)
179
+ if (new RegExp(`(?:^|\\n)\\s*(?:function\\s+${source}\\b|${source}\\s*\\(\\s*\\)|alias\\s+${source}=)`, "u").test(withoutBlock)) {
180
+ throw new Error(`An existing ${source} shell function or alias needs to be retained. Remove that override before enabling recovery.`);
181
+ }
182
+ }
183
+ const sourcePaths = {
184
+ claude: paths.claudeSettings, codex: paths.codexHooks, opencode: paths.openCodeConfig,
185
+ devin: resolve(env.XDG_CONFIG_HOME || resolve(paths.home, ".config"), "devin/config.json"),
186
+ };
187
+ const oldFiles = previousSettings.success ? filesOf(previousSettings.data) : [];
188
+ const sourceFiles = allSources.map(agent => ({ agent, path: oldFiles.find(file => file.agent === agent)?.path ?? sourcePaths[agent] }));
189
+ const openCodePlugin = previousSettings.success && previousSettings.data.openCodePlugin || resolve(paths.home, ".lore/recovery/opencode.mjs");
190
+ for (const { agent, path } of sourceFiles) {
191
+ const existing = await readOptional(path);
192
+ const value = existing.text ? JSON.parse(existing.text) : {};
193
+ if (agent === "opencode")
194
+ mergeOpenCodePlugin(value, openCodePlugin, false);
195
+ else
196
+ mergeRecoveryHooks(value, null, hookEvents(agent));
197
+ }
198
+ if (allSources.includes("opencode"))
199
+ await readOptional(openCodePlugin);
200
+ const invocation = `env -u BUN_OPTIONS -u BUN_BE_BUN LORE_HOME=${quote(paths.home)} ${cliInvocation().map(quote).join(" ")}`;
201
+ const block = `${START}\n${allSources.map(source => `${source}() { ${invocation} run ${source} -- "$@"; }`).join("\n")}\n${END}\n`;
202
+ const install = async () => {
203
+ for (const { agent, path } of sourceFiles) {
204
+ // Re-read because connect has just merged its ordinary context hooks.
205
+ const previous = await readOptional(path);
206
+ const value = previous.text ? JSON.parse(previous.text) : {};
207
+ const command = `${invocation} recovery-hook --agent ${agent} ${OWNER}`;
208
+ const merged = agent === "opencode" ? mergeOpenCodePlugin(value, openCodePlugin, true) : mergeRecoveryHooks(value, command, hookEvents(agent));
209
+ if (agent === "opencode")
210
+ await replaceFile(openCodePlugin, openCodeRecoveryPluginSource(cliInvocation(), paths.home), await readOptional(openCodePlugin));
211
+ await replaceFile(path, `${JSON.stringify(merged, null, 2)}\n`, previous);
212
+ }
213
+ for (const [path, prior] of shellDocuments) {
214
+ const currentShell = await readOptional(path);
215
+ if (currentShell.text !== prior.text)
216
+ throw new Error("Shell configuration changed during connect. Re-run connect to enable recovery.");
217
+ const base = removeRecoveryShell(currentShell.text);
218
+ await replaceFile(path, `${base}${base && !base.endsWith("\n") ? "\n" : ""}${block}`, currentShell);
219
+ }
220
+ await recoveryStore(paths.home).writeState("settings", { fallback, routes, shellPath, shellPaths, sourceFiles, openCodePlugin });
221
+ return `Recovery enabled: ${allSources.map(source => `${AGENTS[source].label} → ${AGENTS[routes[source]].label}`).join("; ")}.\nCtrl+] offers a switch from a saved checkpoint. Automatic triggers: Claude rate limits; OpenCode HTTP 429 or repeated provider retries.\nOpen a new terminal or run: source ${quote(shellPath)}`;
222
+ };
223
+ return Object.assign(install, { sources, fallback });
224
+ }
225
+ export async function recoveryFallback(home, source) {
226
+ const settings = Settings.safeParse(await recoveryStore(home).readState("settings"));
227
+ return settings.success ? source ? routesOf(settings.data)[source] : settings.data.fallback : undefined;
228
+ }
229
+ export async function disableRecovery(home) {
230
+ const store = recoveryStore(home);
231
+ const result = Settings.safeParse(await store.readState("settings"));
232
+ if (!result.success)
233
+ return;
234
+ const settings = result.data;
235
+ for (const path of settings.shellPaths ?? [settings.shellPath]) {
236
+ const shell = await readOptional(path);
237
+ await replaceFile(path, removeRecoveryShell(shell.text), shell);
238
+ }
239
+ for (const { agent, path } of filesOf(settings)) {
240
+ const previous = await readOptional(path);
241
+ if (!previous.text)
242
+ continue;
243
+ const value = JSON.parse(previous.text);
244
+ const merged = agent === "opencode" && settings.openCodePlugin ? mergeOpenCodePlugin(value, settings.openCodePlugin, false) : mergeRecoveryHooks(value, null, hookEvents(agent));
245
+ await replaceFile(path, `${JSON.stringify(merged, null, 2)}\n`, previous);
246
+ }
247
+ if (settings.openCodePlugin) {
248
+ const plugin = await readOptional(settings.openCodePlugin);
249
+ if (plugin.text === openCodeRecoveryPluginSource(cliInvocation(), home))
250
+ await unlink(settings.openCodePlugin);
251
+ }
252
+ await store.deleteState("settings");
253
+ }
254
+ export async function runRecoveryHook(home, agent = "claude") {
255
+ const id = process.env.LORE_RECOVERY_RUN_ID;
256
+ let body = "";
257
+ let oversized = false;
258
+ for await (const chunk of process.stdin) {
259
+ if (!id || oversized)
260
+ continue;
261
+ body += String(chunk);
262
+ if (Buffer.byteLength(body) > 1024 * 1024) {
263
+ oversized = true;
264
+ body = "";
265
+ }
266
+ }
267
+ if (!id || oversized)
268
+ return;
269
+ try {
270
+ let input = JSON.parse(body);
271
+ if (agent === "devin" && input && typeof input === "object") {
272
+ input.cwd ??= process.env.DEVIN_PROJECT_DIR ?? process.cwd();
273
+ if (input.hook_event_name === "PostToolUse" || input.hook_event_name === "PostCompaction") {
274
+ input = { ...input, hook_event_name: "Checkpoint", last_assistant_message: input.summary ?? `Tool ${String(input.tool_name ?? "result")}: ${JSON.stringify(input.tool_response ?? {})}` };
275
+ }
276
+ }
277
+ await captureRecoveryHook(home, id, input, agent);
278
+ }
279
+ catch {
280
+ process.stderr.write("Lore could not save this recovery checkpoint. Automatic switching may be unavailable.\n");
281
+ }
282
+ }
283
+ function passThrough(command, args) {
284
+ return new Promise((done, reject) => {
285
+ const child = spawn(command, args, { stdio: "inherit" });
286
+ child.once("error", reject);
287
+ child.once("exit", (code, signal) => { process.exitCode = code ?? (signal ? 130 : 1); done(); });
288
+ });
289
+ }
290
+ export function isInteractiveClaude(args, stdinIsTty, stdoutIsTty) {
291
+ return isInteractiveAgent("claude", args, stdinIsTty, stdoutIsTty);
292
+ }
293
+ /** The wrapper owns input routing; hooks only checkpoint. No terminal text matching. */
294
+ export async function superviseRecovery(home, command, args, run) {
295
+ const store = recoveryStore(home);
296
+ const sourceLabel = AGENTS[run.sourceAgent].label;
297
+ const targetLabel = AGENTS[run.targetAgent].label;
298
+ const originalRaw = process.stdin.isRaw;
299
+ let source;
300
+ try {
301
+ source = await openPty(command, args, {
302
+ cwd: run.cwd, env: { ...process.env, LORE_HOME: home, LORE_RECOVERY_RUN_ID: run.id, LORE_RECOVERY_SOURCE: run.sourceAgent },
303
+ cols: process.stdout.columns, rows: process.stdout.rows,
304
+ });
305
+ }
306
+ catch (error) {
307
+ await store.deleteState(recoveryRunKey(run.id));
308
+ throw error;
309
+ }
310
+ let exited = false;
311
+ let exitCode = null;
312
+ const sourceExit = new Promise((done) => source.onExit((code) => { exited = true; exitCode = code; done(); }));
313
+ let offered;
314
+ let pending = false;
315
+ let accepted;
316
+ let finishing = false;
317
+ let polling = false;
318
+ let response = "";
319
+ const seen = new Set();
320
+ const metric = async (event, current) => {
321
+ await recordRecoveryMetric(home, run.id, current.failure.id, event).catch(() => { });
322
+ };
323
+ let finish;
324
+ const finished = new Promise((resolvePromise) => { finish = resolvePromise; });
325
+ const stopSource = async () => {
326
+ if (exited)
327
+ return;
328
+ source.kill("SIGTERM");
329
+ const timeout = setTimeout(() => source.kill("SIGKILL"), 5000);
330
+ await sourceExit;
331
+ clearTimeout(timeout);
332
+ };
333
+ const choose = async (yes) => {
334
+ const current = offered;
335
+ if (!current || finishing)
336
+ return;
337
+ offered = undefined;
338
+ if (!yes) {
339
+ await metric("declined", current);
340
+ process.stdout.write(`\r\nStaying with ${sourceLabel}.\r\n`);
341
+ pending = false;
342
+ if (exited)
343
+ finish();
344
+ return;
345
+ }
346
+ finishing = true;
347
+ const latest = RecoveryRunSchema.safeParse(await store.readState(recoveryRunKey(run.id)));
348
+ if (!latest.success || latest.data.failure?.id !== current.failure?.id) {
349
+ process.stdout.write(`\r\n${sourceLabel} has moved on from that checkpoint. Press Ctrl+] to request a fresh switch.\r\n`);
350
+ finishing = false;
351
+ pending = false;
352
+ if (exited)
353
+ finish();
354
+ return;
355
+ }
356
+ await metric("accepted", current);
357
+ accepted = latest.data;
358
+ await stopSource();
359
+ finish();
360
+ };
361
+ const onInput = (chunk) => {
362
+ if (offered) {
363
+ const text = chunk.toString("utf8");
364
+ if (text.includes("\u0003") || text.includes("\u001b")) {
365
+ void choose(false);
366
+ return;
367
+ }
368
+ response += text;
369
+ if (/[\r\n]/u.test(response)) {
370
+ const answer = response.split(/[\r\n]/u)[0].trim().toLowerCase();
371
+ if (answer === "" || answer === "y" || answer === "yes")
372
+ void choose(true);
373
+ else if (answer === "n" || answer === "no")
374
+ void choose(false);
375
+ else {
376
+ response = "";
377
+ process.stdout.write("\r\nEnter Y to switch or N to stay: ");
378
+ }
379
+ }
380
+ }
381
+ else if (!pending && !finishing && !exited) {
382
+ if (chunk.length === 1 && chunk[0] === 0x1d) {
383
+ void requestRecoverySwitch(home, run.id).then(poll).catch((error) => {
384
+ process.stdout.write(`\r\n${error.message}\r\n`);
385
+ });
386
+ }
387
+ else
388
+ source.write(chunk);
389
+ }
390
+ };
391
+ const onResize = () => source.resize(process.stdout.columns ?? 80, process.stdout.rows ?? 24);
392
+ const onSignal = () => { finishing = true; void stopSource().finally(finish); };
393
+ source.onData((chunk) => { if (!offered && !finishing)
394
+ process.stdout.write(chunk); });
395
+ process.stdin.setRawMode?.(true);
396
+ process.stdin.resume();
397
+ process.stdin.on("data", onInput);
398
+ process.stdout.on("resize", onResize);
399
+ process.once("SIGTERM", onSignal);
400
+ process.once("SIGHUP", onSignal);
401
+ process.once("SIGINT", onSignal);
402
+ const poll = async () => {
403
+ if (polling || pending || finishing)
404
+ return;
405
+ polling = true;
406
+ try {
407
+ const parsed = RecoveryRunSchema.safeParse(await store.readState(recoveryRunKey(run.id)));
408
+ const current = parsed.success ? parsed.data : undefined;
409
+ if (current?.failure && !seen.has(current.failure.id)) {
410
+ seen.add(current.failure.id);
411
+ // Verify fallback availability before offering a choice.
412
+ await findAgentExecutable(run.targetAgent);
413
+ pending = true;
414
+ offered = current;
415
+ response = "";
416
+ await store.writeState(`attempt-${run.id}`, current);
417
+ await metric("offered", current);
418
+ const reason = current.failure.reason === "rate_limit" ? `${sourceLabel} reached a rate limit. ` :
419
+ current.failure.reason === "provider_retry" ? `${sourceLabel} is repeatedly retrying a failed provider request. ` : "";
420
+ process.stdout.write(`\r\n\u001b[0m${reason}Continue with ${targetLabel}? [Y/n] `);
421
+ }
422
+ if (exited && !offered)
423
+ finish();
424
+ }
425
+ catch {
426
+ if (exited)
427
+ finish();
428
+ }
429
+ finally {
430
+ polling = false;
431
+ }
432
+ };
433
+ const timer = setInterval(() => { void poll(); }, 150);
434
+ void sourceExit.then(poll);
435
+ try {
436
+ await finished;
437
+ }
438
+ finally {
439
+ clearInterval(timer);
440
+ process.stdin.off("data", onInput);
441
+ process.stdout.off("resize", onResize);
442
+ process.off("SIGTERM", onSignal);
443
+ process.off("SIGHUP", onSignal);
444
+ process.off("SIGINT", onSignal);
445
+ process.stdin.setRawMode?.(originalRaw ?? false);
446
+ process.stdin.pause();
447
+ if (finishing) {
448
+ // Source shutdown output is suppressed while choosing. Restore terminal
449
+ // modes explicitly before handing its physical terminal to the next client.
450
+ process.stdout.write("\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?1006l\u001b[?2004l\u001b[?1004l\u001b[?2031l\u001b[?2026l\u001b[?2027l\u001b[>4;0m\u001b[<u\u001b[?1049l\u001b[?25h\u001b[0m");
451
+ }
452
+ }
453
+ if (!accepted) {
454
+ process.exitCode = exitCode ?? 130;
455
+ return;
456
+ }
457
+ const selected = accepted;
458
+ try {
459
+ const snapshot = await workspaceSnapshot(selected.cwd);
460
+ if (snapshot.root !== selected.failure.snapshot.root || snapshot.branch !== selected.failure.snapshot.branch || snapshot.head !== selected.failure.snapshot.head) {
461
+ throw new Error(`The source branch or checkout changed while the switch was pending. Resume ${sourceLabel} and retry from the correct working tree.`);
462
+ }
463
+ const target = await findAgentExecutable(run.targetAgent);
464
+ process.stdout.write(`\r\nContinuing in ${targetLabel} with the existing files and recent context.\r\n`);
465
+ // The destination inherits its own permission settings, never source flags.
466
+ const nextRoute = isRecoverySource(run.targetAgent) && await recoveryFallback(home, run.targetAgent);
467
+ let launched = Promise.resolve();
468
+ await new Promise((done, reject) => {
469
+ const env = { ...process.env, LORE_HOME: home };
470
+ delete env.LORE_RECOVERY_RUN_ID;
471
+ delete env.LORE_RECOVERY_SOURCE;
472
+ delete env.LORE_PARENT_SESSION_ID;
473
+ const promptArgs = launchArguments(run.targetAgent, recoveryBrief(selected, snapshot));
474
+ const invocation = nextRoute ? [...cliInvocation(), "run", run.targetAgent, "--", ...promptArgs] : [target, ...promptArgs];
475
+ const child = spawn(invocation[0], invocation.slice(1), { cwd: snapshot.cwd, env, stdio: "inherit" });
476
+ child.once("spawn", () => { launched = metric("launched", selected); });
477
+ child.once("error", reject);
478
+ child.once("exit", (code, signal) => { process.exitCode = code ?? (signal ? 130 : 1); done(); });
479
+ });
480
+ await launched;
481
+ process.stdout.write(`\nWas the handoff useful? Record it with: lore recovery feedback ${run.id} useful|not-useful\n`);
482
+ }
483
+ catch (error) {
484
+ await metric("launch_failed", selected);
485
+ process.stderr.write(`\n${sourceLabel}'s saved session is ${JSON.stringify(selected.sessionId)}; its files are still in ${JSON.stringify(selected.cwd)}.\n`);
486
+ throw error;
487
+ }
488
+ }
489
+ export async function runRecoveryCommand(args, paths) {
490
+ if (args[0] === "enable") {
491
+ const parsed = z.object({ from: z.enum(RECOVERY_SOURCES), to: z.enum(LAUNCHABLE_AGENTS) });
492
+ const flags = {};
493
+ for (let i = 1; i < args.length; i += 2) {
494
+ if (!["--from", "--to"].includes(args[i]) || !args[i + 1] || flags[args[i].slice(2)])
495
+ throw new Error("Usage: lore recovery enable --from <agent> --to <agent>");
496
+ flags[args[i].slice(2)] = args[i + 1];
497
+ }
498
+ const route = parsed.parse(flags);
499
+ process.stdout.write(`${await (await prepareRecoveryInstallation(paths, route.to, process.env, [route.from]))()}\n`);
500
+ return;
501
+ }
502
+ if (args[0] === "agents") {
503
+ const agents = await Promise.all(LAUNCHABLE_AGENTS.map(async (agent) => ({
504
+ agent, label: AGENTS[agent].label, executable: await findAgentExecutable(agent).catch(() => null),
505
+ localDestination: true, checkpointSource: isRecoverySource(agent), automaticTrigger: AGENTS[agent].automatic,
506
+ })));
507
+ process.stdout.write(`${JSON.stringify({ agents, briefOnly: ["t3code", "cowork", "copilot-vscode", "devin-cloud"] }, null, 2)}\n`);
508
+ return;
509
+ }
510
+ if (args[0] === "status") {
511
+ const settings = Settings.safeParse(await recoveryStore(paths.home).readState("settings"));
512
+ process.stdout.write(`${JSON.stringify({ fallback: await recoveryFallback(paths.home) ?? null, routes: settings.success ? routesOf(settings.data) : {}, metrics: await recoveryMetrics(paths.home) }, null, 2)}\n`);
513
+ return;
514
+ }
515
+ if (args[0] === "off") {
516
+ await disableRecovery(paths.home);
517
+ process.stdout.write("Recovery disabled. Open a new terminal to remove the shell wrapper.\n");
518
+ return;
519
+ }
520
+ if (args[0] === "feedback" && args.length === 3 && z.uuid().safeParse(args[1]).success && ["useful", "not-useful"].includes(args[2])) {
521
+ const run = RecoveryRunSchema.parse(await recoveryStore(paths.home).readState(`attempt-${args[1]}`));
522
+ if (!run.failure)
523
+ throw new Error("That run has no recovery attempt.");
524
+ await recordRecoveryMetric(paths.home, run.id, run.failure.id, args[2] === "useful" ? "useful" : "not_useful");
525
+ process.stdout.write("Feedback saved locally.\n");
526
+ return;
527
+ }
528
+ if (args[0] === "brief" && args.length === 2 && z.uuid().safeParse(args[1]).success) {
529
+ const run = RecoveryRunSchema.parse(await recoveryStore(paths.home).readState(`attempt-${args[1]}`));
530
+ if (!run.failure)
531
+ throw new Error("That run has no recovery attempt.");
532
+ process.stdout.write(`${recoveryBrief(run, run.failure.snapshot)}\n`);
533
+ return;
534
+ }
535
+ process.stdout.write("lore recovery agents\nlore recovery enable --from <agent> --to <agent>\nlore recovery status\nlore recovery off\nlore recovery brief <run-id>\nlore recovery feedback <run-id> useful|not-useful\nEnable defaults with: lore connect --fallback <agent>\n");
536
+ }
537
+ export async function runWrappedAgent(args, paths) {
538
+ const agent = args[0] ?? "";
539
+ if (!isLaunchable(agent))
540
+ throw new Error(`Usage: lore run <${LAUNCHABLE_AGENTS.join("|")}> -- [agent arguments]`);
541
+ const rest = args.slice(args[1] === "--" ? 2 : 1);
542
+ const command = await findAgentExecutable(agent);
543
+ const fallback = isRecoverySource(agent) ? await recoveryFallback(paths.home, agent) : undefined;
544
+ if (process.env.LORE_RECOVERY_RUN_ID || !isRecoverySource(agent) || !isInteractiveAgent(agent, rest, !!process.stdin.isTTY, !!process.stdout.isTTY) || !fallback || agent === fallback) {
545
+ await passThrough(command, rest);
546
+ return;
547
+ }
548
+ let run;
549
+ try {
550
+ run = await createRecoveryRun(paths.home, process.cwd(), agent, fallback);
551
+ }
552
+ catch {
553
+ process.stderr.write(`Lore recovery needs a readable git working tree. Starting ${AGENTS[agent].label} normally.\n`);
554
+ await passThrough(command, rest);
555
+ return;
556
+ }
557
+ process.stdout.write(`Lore: Ctrl+] offers a switch to ${AGENTS[fallback].label} after a prompt is saved.\n`);
558
+ await superviseRecovery(paths.home, command, rest, run);
559
+ }
560
+ //# sourceMappingURL=recovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}