@lore-co/cli 0.2.26 → 0.2.27
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 +62 -16
- package/dist/agents.d.ts +9 -0
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +19 -6
- package/dist/agents.js.map +1 -1
- package/dist/api.d.ts +2 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +15 -2
- package/dist/api.js.map +1 -1
- package/dist/approach-guidance.d.ts +8 -1
- package/dist/approach-guidance.d.ts.map +1 -1
- package/dist/approach-guidance.js +13 -3
- package/dist/approach-guidance.js.map +1 -1
- package/dist/approach.d.ts.map +1 -1
- package/dist/approach.js +2 -2
- package/dist/approach.js.map +1 -1
- package/dist/ask.d.ts.map +1 -1
- package/dist/ask.js +2 -2
- package/dist/ask.js.map +1 -1
- package/dist/capture-scope.d.ts.map +1 -1
- package/dist/capture-scope.js +2 -1
- package/dist/capture-scope.js.map +1 -1
- package/dist/chat.d.ts.map +1 -1
- package/dist/chat.js +2 -2
- package/dist/chat.js.map +1 -1
- package/dist/cli.d.ts +60 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +512 -93
- package/dist/cli.js.map +1 -1
- package/dist/codex-hook-approval.d.ts.map +1 -1
- package/dist/codex-hook-approval.js +9 -2
- package/dist/codex-hook-approval.js.map +1 -1
- package/dist/command-help.d.ts.map +1 -1
- package/dist/command-help.js +7 -3
- package/dist/command-help.js.map +1 -1
- package/dist/config-command.js +2 -2
- package/dist/config-command.js.map +1 -1
- package/dist/connect-project.d.ts.map +1 -1
- package/dist/connect-project.js +2 -1
- package/dist/connect-project.js.map +1 -1
- package/dist/console-keys.d.ts +11 -0
- package/dist/console-keys.d.ts.map +1 -0
- package/dist/console-keys.js +24 -0
- package/dist/console-keys.js.map +1 -0
- package/dist/cursor-mcp.d.ts.map +1 -1
- package/dist/cursor-mcp.js +4 -0
- package/dist/cursor-mcp.js.map +1 -1
- package/dist/demo-process.js +3 -3
- package/dist/demo-process.js.map +1 -1
- package/dist/devin-capture.d.ts.map +1 -1
- package/dist/devin-capture.js +2 -2
- package/dist/devin-capture.js.map +1 -1
- package/dist/devin-cli.d.ts.map +1 -1
- package/dist/devin-cli.js +23 -13
- package/dist/devin-cli.js.map +1 -1
- package/dist/devin-client.d.ts +3 -0
- package/dist/devin-client.d.ts.map +1 -1
- package/dist/devin-client.js +5 -0
- package/dist/devin-client.js.map +1 -1
- package/dist/devin.d.ts.map +1 -1
- package/dist/devin.js +29 -9
- package/dist/devin.js.map +1 -1
- package/dist/generated-assets.d.ts +8 -8
- package/dist/generated-assets.d.ts.map +1 -1
- package/dist/generated-assets.js +8 -8
- package/dist/generated-assets.js.map +1 -1
- package/dist/github.d.ts.map +1 -1
- package/dist/github.js +38 -7
- package/dist/github.js.map +1 -1
- package/dist/guard.d.ts +1 -1
- package/dist/guard.d.ts.map +1 -1
- package/dist/guard.js +42 -14
- package/dist/guard.js.map +1 -1
- package/dist/handoff.js +2 -2
- package/dist/handoff.js.map +1 -1
- package/dist/host.js +4 -4
- package/dist/host.js.map +1 -1
- package/dist/image-capture.d.ts.map +1 -1
- package/dist/image-capture.js +5 -4
- package/dist/image-capture.js.map +1 -1
- package/dist/learnings.d.ts.map +1 -1
- package/dist/learnings.js +3 -3
- package/dist/learnings.js.map +1 -1
- package/dist/live.d.ts +7 -0
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +11 -6
- package/dist/live.js.map +1 -1
- package/dist/lore-agent.d.ts +6 -1
- package/dist/lore-agent.d.ts.map +1 -1
- package/dist/lore-agent.js +26 -7
- package/dist/lore-agent.js.map +1 -1
- package/dist/mcp-config.d.ts +7 -0
- package/dist/mcp-config.d.ts.map +1 -1
- package/dist/mcp-config.js +19 -3
- package/dist/mcp-config.js.map +1 -1
- package/dist/npm-installation.js +2 -2
- package/dist/npm-installation.js.map +1 -1
- package/dist/owned-files.d.ts +14 -4
- package/dist/owned-files.d.ts.map +1 -1
- package/dist/owned-files.js +24 -9
- package/dist/owned-files.js.map +1 -1
- package/dist/platform.d.ts +26 -3
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +87 -20
- package/dist/platform.js.map +1 -1
- package/dist/pty.d.ts +2 -1
- package/dist/pty.d.ts.map +1 -1
- package/dist/pty.js +20 -7
- package/dist/pty.js.map +1 -1
- package/dist/recovery-cloud-receipt.d.ts.map +1 -1
- package/dist/recovery-cloud-receipt.js +2 -1
- package/dist/recovery-cloud-receipt.js.map +1 -1
- package/dist/recovery-cloud-workspace.d.ts.map +1 -1
- package/dist/recovery-cloud-workspace.js +2 -1
- package/dist/recovery-cloud-workspace.js.map +1 -1
- package/dist/recovery-cloud.d.ts.map +1 -1
- package/dist/recovery-cloud.js +8 -9
- package/dist/recovery-cloud.js.map +1 -1
- package/dist/recovery-copilot.d.ts.map +1 -1
- package/dist/recovery-copilot.js +3 -2
- package/dist/recovery-copilot.js.map +1 -1
- package/dist/recovery-desktop.d.ts.map +1 -1
- package/dist/recovery-desktop.js +3 -2
- package/dist/recovery-desktop.js.map +1 -1
- package/dist/recovery-hooks.js +2 -2
- package/dist/recovery-hooks.js.map +1 -1
- package/dist/recovery-hosts.d.ts.map +1 -1
- package/dist/recovery-hosts.js +53 -6
- package/dist/recovery-hosts.js.map +1 -1
- package/dist/recovery-polytoken.d.ts +2 -2
- package/dist/recovery-polytoken.d.ts.map +1 -1
- package/dist/recovery-polytoken.js +13 -8
- package/dist/recovery-polytoken.js.map +1 -1
- package/dist/recovery-remote.js +3 -3
- package/dist/recovery-remote.js.map +1 -1
- package/dist/recovery-state.d.ts +22 -1
- package/dist/recovery-state.d.ts.map +1 -1
- package/dist/recovery-state.js +167 -31
- package/dist/recovery-state.js.map +1 -1
- package/dist/recovery-transfer.d.ts.map +1 -1
- package/dist/recovery-transfer.js +8 -4
- package/dist/recovery-transfer.js.map +1 -1
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +30 -11
- package/dist/recovery.js.map +1 -1
- package/dist/reliability-store.d.ts +13 -0
- package/dist/reliability-store.d.ts.map +1 -1
- package/dist/reliability-store.js +110 -8
- package/dist/reliability-store.js.map +1 -1
- package/dist/remember.d.ts.map +1 -1
- package/dist/remember.js +2 -2
- package/dist/remember.js.map +1 -1
- package/dist/retained-context.d.ts.map +1 -1
- package/dist/retained-context.js +3 -2
- package/dist/retained-context.js.map +1 -1
- package/dist/retrieval-task.d.ts +30 -0
- package/dist/retrieval-task.d.ts.map +1 -1
- package/dist/retrieval-task.js +98 -2
- package/dist/retrieval-task.js.map +1 -1
- package/dist/review.d.ts +1 -1
- package/dist/review.d.ts.map +1 -1
- package/dist/review.js +5 -2
- package/dist/review.js.map +1 -1
- package/dist/runtime.d.ts +4 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +138 -91
- package/dist/runtime.js.map +1 -1
- package/dist/self-host.d.ts +1 -1
- package/dist/self-host.d.ts.map +1 -1
- package/dist/self-host.js +105 -23
- package/dist/self-host.js.map +1 -1
- package/dist/share.d.ts.map +1 -1
- package/dist/share.js +2 -1
- package/dist/share.js.map +1 -1
- package/dist/signed-snapshot.d.ts +7 -0
- package/dist/signed-snapshot.d.ts.map +1 -1
- package/dist/signed-snapshot.js +27 -0
- package/dist/signed-snapshot.js.map +1 -1
- package/dist/skill-command.d.ts +5 -2
- package/dist/skill-command.d.ts.map +1 -1
- package/dist/skill-command.js +73 -10
- package/dist/skill-command.js.map +1 -1
- package/dist/skill-guidance.js +1 -1
- package/dist/skill-guidance.js.map +1 -1
- package/dist/skills.d.ts.map +1 -1
- package/dist/skills.js +9 -7
- package/dist/skills.js.map +1 -1
- package/dist/status-health.d.ts +26 -0
- package/dist/status-health.d.ts.map +1 -0
- package/dist/status-health.js +49 -0
- package/dist/status-health.js.map +1 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +2 -2
- package/dist/telemetry.js.map +1 -1
- package/dist/terminal-output.d.ts +76 -0
- package/dist/terminal-output.d.ts.map +1 -0
- package/dist/terminal-output.js +151 -0
- package/dist/terminal-output.js.map +1 -0
- package/dist/uninstall.d.ts.map +1 -1
- package/dist/uninstall.js +3 -1
- package/dist/uninstall.js.map +1 -1
- package/dist/update.d.ts +3 -0
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +40 -14
- package/dist/update.js.map +1 -1
- package/dist/windows-permissions.d.ts +6 -0
- package/dist/windows-permissions.d.ts.map +1 -1
- package/dist/windows-permissions.js +22 -2
- package/dist/windows-permissions.js.map +1 -1
- package/dist/windows-pty.d.ts.map +1 -1
- package/dist/windows-pty.js +4 -3
- package/dist/windows-pty.js.map +1 -1
- package/package.json +4 -4
package/dist/platform.d.ts
CHANGED
|
@@ -1,17 +1,40 @@
|
|
|
1
1
|
import { spawn as nativeSpawn } from "node:child_process";
|
|
2
|
-
export declare const spawn: typeof nativeSpawn;
|
|
3
2
|
export declare const isWindows: () => boolean;
|
|
3
|
+
/**
|
|
4
|
+
* cmd.exe ends a command at a line break, so a batch file (such as the
|
|
5
|
+
* codex.cmd an npm or pnpm global install creates) gets only the first line
|
|
6
|
+
* of a multi-line argument like a handoff brief. For npm and pnpm shims, start
|
|
7
|
+
* the program they wrap without cmd.exe; any other batch file gets the line
|
|
8
|
+
* breaks as spaces, which keeps the text.
|
|
9
|
+
*/
|
|
10
|
+
export declare function windowsMultilineLaunch(command: string, args: readonly string[], env?: NodeJS.ProcessEnv): {
|
|
11
|
+
command: string;
|
|
12
|
+
args: string[];
|
|
13
|
+
};
|
|
14
|
+
export declare const spawn: typeof nativeSpawn;
|
|
4
15
|
export declare const posixQuote: (value: string) => string;
|
|
16
|
+
export { powershellExecutable } from "./windows-permissions.js";
|
|
5
17
|
export declare const powershellQuote: (value: string) => string;
|
|
6
18
|
/** Windows CRT quoting, for direct executable invocation (never cmd.exe). */
|
|
7
19
|
export declare function windowsArgument(value: string): string;
|
|
8
20
|
export declare function powershellArgs(script: string): string[];
|
|
21
|
+
/**
|
|
22
|
+
* Windows PowerShell at the head of a command line that a host runs through
|
|
23
|
+
* cmd.exe, Git Bash or PowerShell. All three accept an unquoted path with
|
|
24
|
+
* forward slashes; Git Bash drops unquoted backslashes, and a bare name lets
|
|
25
|
+
* cmd.exe start a powershell.exe from the current folder (the repository).
|
|
26
|
+
*/
|
|
27
|
+
export declare function hookPowershell(env?: NodeJS.ProcessEnv): string;
|
|
28
|
+
/** A host command line that runs a PowerShell script, safe from every host shell. */
|
|
29
|
+
export declare function windowsScriptCommand(script: string): string;
|
|
9
30
|
/** Encode script data so cmd, PowerShell and Git Bash cannot expand paths. */
|
|
10
31
|
export declare function windowsCommand(command: readonly string[], env?: Record<string, string | undefined>): string;
|
|
11
32
|
export declare function commandText(command: unknown): string;
|
|
12
33
|
export declare function localCommand(command: readonly string[], env?: Record<string, string | undefined>): string;
|
|
13
|
-
export
|
|
14
|
-
|
|
34
|
+
export { executableCandidates, system32Executable, systemCommand } from "@lore-co/core/system-command";
|
|
35
|
+
/** A program on PATH, never from the current folder or `exclude` on Windows (see executableDirectories). */
|
|
36
|
+
export declare function findExecutable(command: string, env?: NodeJS.ProcessEnv, exclude?: readonly (string | undefined)[]): Promise<string | null>;
|
|
37
|
+
/** Opens a web page. Anything but http(s) is refused: the OS would hand it to a file, share or app handler. */
|
|
15
38
|
export declare function openBrowser(url: string): void;
|
|
16
39
|
export declare function windowsProfiles(home: string): Promise<string[]>;
|
|
17
40
|
export declare function powershellFunction(name: string, command: readonly string[], home: string): string;
|
package/dist/platform.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAMA,OAAO,EAAY,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOpE,eAAO,MAAM,SAAS,eAAqC,CAAC;AAsB5D;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAOrC;AAQD,eAAO,MAAM,KAAK,EAAE,OAAO,WAA6F,CAAC;AACzH,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,WAA0C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,WAAuC,CAAC;AAErF,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAG3E;AAED,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAM,GAAG,MAAM,CAU/G;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAIpD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAM,GAAG,MAAM,CAK7G;AAED,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAEvG,4GAA4G;AAC5G,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,oBAAc,EAAE,OAAO,GAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAU9I;AAED,+GAA+G;AAC/G,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAS7C;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOrE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGjG;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOjG;AAED,uEAAuE;AACvE;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc5F;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKlD"}
|
package/dist/platform.js
CHANGED
|
@@ -1,15 +1,68 @@
|
|
|
1
1
|
import crossSpawn from "cross-spawn";
|
|
2
2
|
import { access, realpath, rename, stat } from "node:fs/promises";
|
|
3
|
-
import { constants } from "node:fs";
|
|
4
|
-
import {
|
|
3
|
+
import { constants, existsSync, readFileSync, statSync } from "node:fs";
|
|
4
|
+
import { dirname, extname, resolve } from "node:path";
|
|
5
|
+
import { executableCandidates, executableDirectories, findExecutablePath } from "@lore-co/core/system-command";
|
|
6
|
+
import { powershellExecutable } from "./windows-permissions.js";
|
|
5
7
|
import { execFile, spawn as nativeSpawn } from "node:child_process";
|
|
6
8
|
import { setTimeout as delay } from "node:timers/promises";
|
|
7
9
|
import { promisify } from "node:util";
|
|
8
10
|
const WINDOWS_RENAME_ATTEMPTS = 40;
|
|
9
11
|
const WINDOWS_RENAME_DELAY_MS = 250;
|
|
10
|
-
export const spawn = process.platform === "win32" ? crossSpawn : nativeSpawn;
|
|
11
12
|
export const isWindows = () => process.platform === "win32";
|
|
13
|
+
// The script an npm (`"%dp0%\pkg\cli.js" %*`) or pnpm (`"%~dp0\..\pkg\cli.js" %*`) shim runs.
|
|
14
|
+
const SHIM_TARGET = /"%(?:~dp0|dp0%)\\([^"%\r\n]+)"\s+%\*/iu;
|
|
15
|
+
function shimLaunch(file, env) {
|
|
16
|
+
let text;
|
|
17
|
+
try {
|
|
18
|
+
if (statSync(file).size > 64 * 1024)
|
|
19
|
+
return null;
|
|
20
|
+
text = readFileSync(file, "utf8");
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
const relative = SHIM_TARGET.exec(text)?.[1];
|
|
26
|
+
if (!relative)
|
|
27
|
+
return null;
|
|
28
|
+
const target = resolve(dirname(file), relative);
|
|
29
|
+
if (!existsSync(target))
|
|
30
|
+
return null;
|
|
31
|
+
if (extname(target).toLowerCase() === ".exe")
|
|
32
|
+
return [target];
|
|
33
|
+
if (!/^\.[cm]?js$/iu.test(extname(target)))
|
|
34
|
+
return null;
|
|
35
|
+
// The shims prefer a node.exe next to them, then node on PATH.
|
|
36
|
+
const node = existsSync(resolve(dirname(file), "node.exe")) ? resolve(dirname(file), "node.exe") : findExecutablePath("node", { env });
|
|
37
|
+
return node ? [node, target] : null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* cmd.exe ends a command at a line break, so a batch file (such as the
|
|
41
|
+
* codex.cmd an npm or pnpm global install creates) gets only the first line
|
|
42
|
+
* of a multi-line argument like a handoff brief. For npm and pnpm shims, start
|
|
43
|
+
* the program they wrap without cmd.exe; any other batch file gets the line
|
|
44
|
+
* breaks as spaces, which keeps the text.
|
|
45
|
+
*/
|
|
46
|
+
export function windowsMultilineLaunch(command, args, env = process.env) {
|
|
47
|
+
if (!isWindows() || !args.some(arg => /[\r\n]/u.test(arg)))
|
|
48
|
+
return { command, args: [...args] };
|
|
49
|
+
const file = findExecutablePath(command, { env });
|
|
50
|
+
if (!file || ![".cmd", ".bat"].includes(extname(file).toLowerCase()))
|
|
51
|
+
return { command, args: [...args] };
|
|
52
|
+
const launch = shimLaunch(file, env);
|
|
53
|
+
if (launch)
|
|
54
|
+
return { command: launch[0], args: [...launch.slice(1), ...args] };
|
|
55
|
+
return { command, args: args.map(arg => arg.replace(/\r\n|[\r\n]/gu, " ")) };
|
|
56
|
+
}
|
|
57
|
+
function windowsSpawn(command, args, options) {
|
|
58
|
+
if (!Array.isArray(args))
|
|
59
|
+
return crossSpawn(command, args, options);
|
|
60
|
+
const launch = windowsMultilineLaunch(command, args, options?.env ?? process.env);
|
|
61
|
+
return crossSpawn(launch.command, launch.args, options);
|
|
62
|
+
}
|
|
63
|
+
export const spawn = process.platform === "win32" ? windowsSpawn : nativeSpawn;
|
|
12
64
|
export const posixQuote = (value) => `'${value.replaceAll("'", "'\\''")}'`;
|
|
65
|
+
export { powershellExecutable } from "./windows-permissions.js";
|
|
13
66
|
export const powershellQuote = (value) => `'${value.replaceAll("'", "''")}'`;
|
|
14
67
|
/** Windows CRT quoting, for direct executable invocation (never cmd.exe). */
|
|
15
68
|
export function windowsArgument(value) {
|
|
@@ -20,6 +73,20 @@ export function windowsArgument(value) {
|
|
|
20
73
|
export function powershellArgs(script) {
|
|
21
74
|
return ["-NoLogo", "-NoProfile", "-NonInteractive", "-EncodedCommand", Buffer.from(`$ProgressPreference = 'SilentlyContinue'; ${script}`, "utf16le").toString("base64")];
|
|
22
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Windows PowerShell at the head of a command line that a host runs through
|
|
78
|
+
* cmd.exe, Git Bash or PowerShell. All three accept an unquoted path with
|
|
79
|
+
* forward slashes; Git Bash drops unquoted backslashes, and a bare name lets
|
|
80
|
+
* cmd.exe start a powershell.exe from the current folder (the repository).
|
|
81
|
+
*/
|
|
82
|
+
export function hookPowershell(env = process.env) {
|
|
83
|
+
const path = powershellExecutable(env).replaceAll("\\", "/");
|
|
84
|
+
return /^[A-Za-z]:[\w./-]+$/u.test(path) ? path : "powershell.exe";
|
|
85
|
+
}
|
|
86
|
+
/** A host command line that runs a PowerShell script, safe from every host shell. */
|
|
87
|
+
export function windowsScriptCommand(script) {
|
|
88
|
+
return [hookPowershell(), ...powershellArgs(script)].join(" ");
|
|
89
|
+
}
|
|
23
90
|
/** Encode script data so cmd, PowerShell and Git Bash cannot expand paths. */
|
|
24
91
|
export function windowsCommand(command, env = {}) {
|
|
25
92
|
const setup = Object.entries(env).map(([key, value]) => {
|
|
@@ -29,8 +96,9 @@ export function windowsCommand(command, env = {}) {
|
|
|
29
96
|
}).join(" ");
|
|
30
97
|
// ProcessStartInfo inherits the original standard handles, preserving hook
|
|
31
98
|
// JSON and UTF-8 output without a PowerShell text pipeline or a second shell.
|
|
32
|
-
|
|
33
|
-
|
|
99
|
+
// ::new() loads no module; New-Object stalled 25-40 s without PSModulePath.
|
|
100
|
+
const script = `${setup} $s = [System.Diagnostics.ProcessStartInfo]::new(); $s.UseShellExecute = $false; $s.FileName = ${powershellQuote(command[0])}; $s.Arguments = ${powershellQuote(command.slice(1).map(windowsArgument).join(" "))}; $p = [System.Diagnostics.Process]::Start($s); $p.WaitForExit(); exit $p.ExitCode`;
|
|
101
|
+
return windowsScriptCommand(script);
|
|
34
102
|
}
|
|
35
103
|
export function commandText(command) {
|
|
36
104
|
if (typeof command !== "string")
|
|
@@ -45,19 +113,13 @@ export function localCommand(command, env = {}) {
|
|
|
45
113
|
const set = Object.entries(env).filter(([, value]) => value !== undefined).map(([key, value]) => `${key}=${posixQuote(value)}`);
|
|
46
114
|
return ["env", ...unset, ...set, ...command.map(posixQuote)].join(" ");
|
|
47
115
|
}
|
|
48
|
-
export
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
return extensions.some(ext => command.toLowerCase().endsWith(ext.toLowerCase()))
|
|
53
|
-
? [command] : extensions.map(ext => command + ext.toLowerCase());
|
|
54
|
-
}
|
|
55
|
-
export async function findExecutable(command, env = process.env) {
|
|
56
|
-
const path = Object.entries(env).find(([key]) => key.toUpperCase() === "PATH")?.[1] ?? "";
|
|
57
|
-
const directories = /[\\/]/u.test(command) ? [""] : path.split(delimiter).filter(Boolean);
|
|
116
|
+
export { executableCandidates, system32Executable, systemCommand } from "@lore-co/core/system-command";
|
|
117
|
+
/** A program on PATH, never from the current folder or `exclude` on Windows (see executableDirectories). */
|
|
118
|
+
export async function findExecutable(command, env = process.env, exclude = []) {
|
|
119
|
+
const directories = /[\\/]/u.test(command) ? [""] : executableDirectories({ env, exclude });
|
|
58
120
|
for (const directory of directories)
|
|
59
121
|
for (const candidate of executableCandidates(command, env)) {
|
|
60
|
-
const file = resolve(directory
|
|
122
|
+
const file = resolve(directory, candidate);
|
|
61
123
|
try {
|
|
62
124
|
await access(file, isWindows() ? constants.F_OK : constants.X_OK);
|
|
63
125
|
if ((await stat(file)).isFile())
|
|
@@ -67,16 +129,21 @@ export async function findExecutable(command, env = process.env) {
|
|
|
67
129
|
}
|
|
68
130
|
return null;
|
|
69
131
|
}
|
|
132
|
+
/** Opens a web page. Anything but http(s) is refused: the OS would hand it to a file, share or app handler. */
|
|
70
133
|
export function openBrowser(url) {
|
|
134
|
+
// URL.parse needs Node 22.1; the CLI supports 22.0.
|
|
135
|
+
const protocol = URL.canParse(url) ? new URL(url).protocol : "";
|
|
136
|
+
if (!["http:", "https:"].includes(protocol))
|
|
137
|
+
throw new Error("Lore only opens http and https links in a browser");
|
|
71
138
|
const child = isWindows()
|
|
72
|
-
? spawn(
|
|
139
|
+
? spawn(powershellExecutable(), powershellArgs(`Start-Process -FilePath ${powershellQuote(url)}`), { stdio: "ignore", windowsHide: true })
|
|
73
140
|
: spawn(process.platform === "darwin" ? "open" : "xdg-open", [url], { detached: true, stdio: "ignore" });
|
|
74
141
|
child.once("error", () => { });
|
|
75
142
|
child.unref();
|
|
76
143
|
}
|
|
77
144
|
export async function windowsProfiles(home) {
|
|
78
145
|
// Ask PowerShell for Documents so redirected/OneDrive folders work too.
|
|
79
|
-
const { stdout } = await promisify(execFile)(
|
|
146
|
+
const { stdout } = await promisify(execFile)(powershellExecutable(), powershellArgs("[Console]::OutputEncoding = New-Object System.Text.UTF8Encoding; @([Environment]::GetFolderPath('UserProfile'), [Environment]::GetFolderPath('MyDocuments')) | ConvertTo-Json -Compress"), { encoding: "utf8", windowsHide: true });
|
|
80
147
|
const [profile, redirectedDocuments] = JSON.parse(stdout);
|
|
81
148
|
const documents = profile && resolve(profile).toLowerCase() === resolve(home).toLowerCase()
|
|
82
149
|
? redirectedDocuments || resolve(home, "Documents") : resolve(home, "Documents");
|
|
@@ -89,7 +156,7 @@ export function powershellFunction(name, command, home) {
|
|
|
89
156
|
}
|
|
90
157
|
export async function openWindowsTerminal(command, home) {
|
|
91
158
|
const launch = windowsCommand(command, { LORE_HOME: home, BUN_OPTIONS: undefined, BUN_BE_BUN: undefined });
|
|
92
|
-
const child = spawn(
|
|
159
|
+
const child = spawn(powershellExecutable(), powershellArgs(`Start-Process ${powershellQuote(powershellExecutable())} -ArgumentList ${powershellQuote(launch.slice(launch.indexOf(" ") + 1))} -WorkingDirectory ${powershellQuote(home)}`), { stdio: "ignore", windowsHide: true });
|
|
93
160
|
await new Promise((done, reject) => {
|
|
94
161
|
child.once("error", reject);
|
|
95
162
|
child.once("exit", code => code === 0 ? done() : reject(new Error("Could not open the recovery terminal")));
|
|
@@ -119,7 +186,7 @@ export async function renameWindowsBinary(source, destination) {
|
|
|
119
186
|
}
|
|
120
187
|
export function removeAfterExit(path) {
|
|
121
188
|
const script = `Wait-Process -Id ${process.pid} -ErrorAction SilentlyContinue; Remove-Item -LiteralPath ${powershellQuote(path)} -Force -ErrorAction SilentlyContinue`;
|
|
122
|
-
const child = spawn(
|
|
189
|
+
const child = spawn(powershellExecutable(), powershellArgs(script), { detached: true, stdio: "ignore", windowsHide: true });
|
|
123
190
|
child.once("error", () => { });
|
|
124
191
|
child.unref();
|
|
125
192
|
}
|
package/dist/platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
package/dist/pty.d.ts
CHANGED
|
@@ -16,7 +16,8 @@ export interface OpenPtyOptions {
|
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Opens the command inside a pseudo-terminal. Prefers node-pty when it is
|
|
19
|
-
* installed (full resize support); otherwise falls back to the
|
|
19
|
+
* installed next to Lore (full resize support); otherwise falls back to the
|
|
20
|
+
* python3 shim.
|
|
20
21
|
*/
|
|
21
22
|
export declare function openPty(command: string, args: string[], options?: OpenPtyOptions): Promise<PtyProcess>;
|
|
22
23
|
//# sourceMappingURL=pty.d.ts.map
|
package/dist/pty.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../src/pty.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../src/pty.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,sEAAsE;IACtE,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAChD,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AA2KD;;;;GAIG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,UAAU,CAAC,CA4CrB"}
|
package/dist/pty.js
CHANGED
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import { IS_STANDALONE_BINARY } from "./version.js";
|
|
4
|
+
// Not a literal require, so `bun build --compile` does not try to bundle it.
|
|
5
|
+
const NODE_PTY = "node-pty";
|
|
2
6
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
7
|
+
* node-pty is not a dependency of the CLI, only an optional enhancement when it
|
|
8
|
+
* is installed alongside Lore. Resolve it from Lore's own install location,
|
|
9
|
+
* never the working directory: that is the user's project, and a node-pty it
|
|
10
|
+
* ships would run inside Lore. The standalone binary never loads it: it cannot
|
|
11
|
+
* load native addons, and Bun resolves a runtime bare import against the
|
|
12
|
+
* working directory and its parents.
|
|
6
13
|
*/
|
|
7
14
|
async function loadNodePty() {
|
|
15
|
+
if (IS_STANDALONE_BINARY)
|
|
16
|
+
return null;
|
|
8
17
|
try {
|
|
9
|
-
const
|
|
10
|
-
const module = (await dynamicImport("node-pty"));
|
|
18
|
+
const module = createRequire(import.meta.url)(NODE_PTY);
|
|
11
19
|
return typeof module.spawn === "function"
|
|
12
20
|
? module
|
|
13
21
|
: null;
|
|
@@ -69,7 +77,11 @@ sys.exit(os.waitstatus_to_exitcode(status))
|
|
|
69
77
|
* propagate terminal resizes: the inner terminal keeps its initial size.
|
|
70
78
|
*/
|
|
71
79
|
function pythonFallback(command, args, options) {
|
|
72
|
-
const child = spawn("python3",
|
|
80
|
+
const child = spawn("python3",
|
|
81
|
+
// -I (isolated mode): the cwd is the user's project, so keep it and its
|
|
82
|
+
// files (a committed pty.py, struct.py, ...) off sys.path, and ignore
|
|
83
|
+
// PYTHON* variables and user site-packages. The command still runs there.
|
|
84
|
+
["-I", "-c", PYTHON_PTY_SHIM, command, ...args], {
|
|
73
85
|
cwd: options.cwd,
|
|
74
86
|
env: {
|
|
75
87
|
...(options.env ?? process.env),
|
|
@@ -140,7 +152,8 @@ function pythonFallback(command, args, options) {
|
|
|
140
152
|
}
|
|
141
153
|
/**
|
|
142
154
|
* Opens the command inside a pseudo-terminal. Prefers node-pty when it is
|
|
143
|
-
* installed (full resize support); otherwise falls back to the
|
|
155
|
+
* installed next to Lore (full resize support); otherwise falls back to the
|
|
156
|
+
* python3 shim.
|
|
144
157
|
*/
|
|
145
158
|
export async function openPty(command, args, options = {}) {
|
|
146
159
|
if (process.platform === "win32") {
|
package/dist/pty.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty.js","sourceRoot":"","sources":["../src/pty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"pty.js","sourceRoot":"","sources":["../src/pty.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-cloud-receipt.d.ts","sourceRoot":"","sources":["../src/recovery-cloud-receipt.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"recovery-cloud-receipt.d.ts","sourceRoot":"","sources":["../src/recovery-cloud-receipt.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA8BpD,8FAA8F;AAC9F,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IACjG,IAAI,EAAE,MAAM,OAAO,CAAC;QAAE,MAAM,EAAE,cAAc,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzE;;;;;;;;;GAsDA"}
|
|
@@ -4,6 +4,7 @@ import { chmod, lstat, mkdir, realpath } from "node:fs/promises";
|
|
|
4
4
|
import { resolve, sep } from "node:path";
|
|
5
5
|
import { promisify } from "node:util";
|
|
6
6
|
import { z } from "zod";
|
|
7
|
+
import { systemCommand } from "@lore-co/core/system-command";
|
|
7
8
|
import { importRecoveryPacket } from "./recovery-transfer.js";
|
|
8
9
|
import { atomicWriteJson, readBoundedJsonFile, withDirectoryLock } from "./reliability-store.js";
|
|
9
10
|
const execFile = promisify(callback);
|
|
@@ -18,7 +19,7 @@ const Receipt = z.object({
|
|
|
18
19
|
const MAX_RECEIPT_BYTES = 1024 * 1024;
|
|
19
20
|
const MISSING_WORKTREE = "The restored worktree is missing or was replaced; no files were changed";
|
|
20
21
|
async function gitPath(cwd, flag) {
|
|
21
|
-
const { stdout } = await execFile("git", ["rev-parse", flag], { cwd, timeout: 5000 });
|
|
22
|
+
const { stdout } = await execFile(systemCommand("git", { exclude: [cwd] }), ["rev-parse", flag], { cwd, timeout: 5000 });
|
|
22
23
|
return realpath(resolve(cwd, stdout.trim()));
|
|
23
24
|
}
|
|
24
25
|
async function worktreeIdentity(destination) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-cloud-receipt.js","sourceRoot":"","sources":["../src/recovery-cloud-receipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEjG,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AACrC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9E,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAChD,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,IAAI;IACrF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IACjF,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE;IAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;CACrF,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;AACtC,MAAM,gBAAgB,GAAG,yEAAyE,CAAC;AACnG,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,IAAY;IAC9C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"recovery-cloud-receipt.js","sourceRoot":"","sources":["../src/recovery-cloud-receipt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-cloud-workspace.d.ts","sourceRoot":"","sources":["../src/recovery-cloud-workspace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAiE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"recovery-cloud-workspace.d.ts","sourceRoot":"","sources":["../src/recovery-cloud-workspace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAiE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAYpI,eAAO,MAAM,aAAa;;;;;iBAAwK,CAAC;AAInM,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAclJ;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEnG"}
|
|
@@ -6,6 +6,7 @@ import { restoreCloudWorkspace } from "./recovery-cloud-receipt.js";
|
|
|
6
6
|
import { createRecoveryRun, workspaceSnapshot } from "./recovery-state.js";
|
|
7
7
|
import { execFile as callback } from "node:child_process";
|
|
8
8
|
import { promisify } from "node:util";
|
|
9
|
+
import { systemCommand } from "@lore-co/core/system-command";
|
|
9
10
|
const execFile = promisify(callback);
|
|
10
11
|
const ok = z.object({ ok: z.literal(true) });
|
|
11
12
|
class WorkspaceHttpError extends Error {
|
|
@@ -17,7 +18,7 @@ class WorkspaceHttpError extends Error {
|
|
|
17
18
|
}
|
|
18
19
|
export const SnapshotChunk = z.object({ index: z.number().int().nonnegative(), total: z.number().int().min(1).max(32), digest: z.string().regex(/^[a-f0-9]{64}$/), data: z.string().max(524288) });
|
|
19
20
|
const digest = (v) => createHash("sha256").update(v).digest("hex");
|
|
20
|
-
const repo = async (cwd) => CloudRepositorySchema.parse((await execFile("git", ["remote", "get-url", "origin"], { cwd, timeout: 5000 })).stdout.trim().replace(/^git@github\.com:/, "https://github.com/").replace(/\.git$/, ""));
|
|
21
|
+
const repo = async (cwd) => CloudRepositorySchema.parse((await execFile(systemCommand("git", { exclude: [cwd] }), ["remote", "get-url", "origin"], { cwd, timeout: 5000 })).stdout.trim().replace(/^git@github\.com:/, "https://github.com/").replace(/\.git$/, ""));
|
|
21
22
|
export async function readCloudSnapshot(offer, get) {
|
|
22
23
|
if (!offer.snapshot)
|
|
23
24
|
throw new Error("No workspace snapshot is available");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-cloud-workspace.js","sourceRoot":"","sources":["../src/recovery-cloud-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,oBAAoB,EAAwC,MAAM,eAAe,CAAC;AACpI,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AACrC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7C,MAAM,kBAAmB,SAAQ,KAAK;IACf;IAArB,YAAqB,MAAc;QAAI,KAAK,CAAC,2BAA2B,MAAM,iCAAiC,CAAC,CAAC;QAA5F,WAAM,GAAN,MAAM,CAAQ;IAA+E,CAAC;CACpH;AACD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACnM,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3E,MAAM,IAAI,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"recovery-cloud-workspace.js","sourceRoot":"","sources":["../src/recovery-cloud-workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-cloud.d.ts","sourceRoot":"","sources":["../src/recovery-cloud.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACnI,OAAO,EAAqC,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"recovery-cloud.d.ts","sourceRoot":"","sources":["../src/recovery-cloud.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACnI,OAAO,EAAqC,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAanG,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;iBAA4P,CAAC;AACzQ,KAAK,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAyBrC,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AACD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,SAJ1E,MAAM,QAAQ,MAAM,EAAE,oBAI0D,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBlJ;AAeD,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,8BAAuB,iBAuD3I;AACD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DlE;AACD,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCtI"}
|
package/dist/recovery-cloud.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isWindows, openWindowsTerminal, openBrowser } from "./platform.js";
|
|
2
2
|
import { spawn, execFile as execFileCallback } from "node:child_process";
|
|
3
3
|
import { promisify } from "node:util";
|
|
4
|
-
import { mkdir, realpath
|
|
4
|
+
import { mkdir, realpath } from "node:fs/promises";
|
|
5
5
|
import { constants } from "node:fs";
|
|
6
6
|
import { resolve, sep } from "node:path";
|
|
7
7
|
import { z } from "zod";
|
|
@@ -16,6 +16,8 @@ import { cliInvocation, launchRecoveredRun } from "./recovery.js";
|
|
|
16
16
|
import { installRecoveryMonitor } from "./recovery-hosts.js";
|
|
17
17
|
import { RemoteDestinationSchema, shellQuote, importRecoveryPacket } from "./recovery-transfer.js";
|
|
18
18
|
import { readCloudSnapshot, SnapshotChunk, runCloudWorkspaceCommand } from "./recovery-cloud-workspace.js";
|
|
19
|
+
import { openNoFollow } from "@lore-co/core/no-follow";
|
|
20
|
+
import { systemCommand } from "@lore-co/core/system-command";
|
|
19
21
|
const execFile = promisify(execFileCallback);
|
|
20
22
|
const Runner = z.object({ connectionId: RecoveryConnectionSchema.optional(), id: z.uuid(), secret: z.string(), name: z.string(), cwd: z.string(), repository: CloudRepositorySchema, agents: z.array(RecoveryAgentSchema), remote: RemoteDestinationSchema.optional() });
|
|
21
23
|
const Runners = z.array(Runner);
|
|
@@ -47,7 +49,7 @@ async function flushCloudReceipts(home, runners) {
|
|
|
47
49
|
catch { /* Preserve the receipt and retry reporting, never the agent launch. */ }
|
|
48
50
|
}
|
|
49
51
|
}
|
|
50
|
-
const git = async (cwd, args) => (await execFile("git", ["-c", "core.hooksPath=/dev/null", "-c", "core.fsmonitor=false", ...args], { cwd, timeout: 60000, maxBuffer: 2 * 1024 * 1024, env: { ...process.env, GIT_TERMINAL_PROMPT: "0" } })).stdout.trim();
|
|
52
|
+
const git = async (cwd, args) => (await execFile(systemCommand("git", { exclude: [cwd] }), ["-c", "core.hooksPath=/dev/null", "-c", "core.fsmonitor=false", ...args], { cwd, timeout: 60000, maxBuffer: 2 * 1024 * 1024, env: { ...process.env, GIT_TERMINAL_PROMPT: "0" } })).stdout.trim();
|
|
51
53
|
export function cloudRepository(remote) {
|
|
52
54
|
return CloudRepositorySchema.parse(remote.replace(/^git@github\.com:/, "https://github.com/").replace(/\.git$/, ""));
|
|
53
55
|
}
|
|
@@ -79,7 +81,7 @@ async function openLaunchTerminal(home, runnerId, offerId) {
|
|
|
79
81
|
const directory = resolve(home, ".lore/recovery/offers");
|
|
80
82
|
await mkdir(directory, { recursive: true, mode: 0o700 });
|
|
81
83
|
const path = resolve(directory, `${offerId}.command`);
|
|
82
|
-
const file = await
|
|
84
|
+
const file = await openNoFollow(path, constants.O_WRONLY | constants.O_CREAT | constants.O_TRUNC, 0o700);
|
|
83
85
|
try {
|
|
84
86
|
await file.writeFile(`#!/bin/sh\nexec env -u BUN_OPTIONS -u BUN_BE_BUN PATH=${shellQuote(process.env.PATH ?? "/usr/bin:/bin")} LORE_HOME=${shellQuote(home)} ${[...cliInvocation(), "recovery", "cloud", "launch", runnerId, offerId].map(shellQuote).join(" ")}\n`);
|
|
85
87
|
}
|
|
@@ -135,11 +137,11 @@ export async function launchCloudOffer(paths, config, runner, id, prepare = prep
|
|
|
135
137
|
throw new CloudHandoffValidationError("Lore could not record the source failure. No destination was launched. Check the restored workspace in the runner terminal before retrying from Recovery.");
|
|
136
138
|
if (runner.remote) {
|
|
137
139
|
// The standard worker importer requires the source commit to exist there.
|
|
138
|
-
const remoteUrl = await execFile("ssh", ["-o", "BatchMode=yes", "-o", "ConnectTimeout=10", "--", runner.remote.host, ["git", "-C", runner.remote.directory, "remote", "get-url", "origin"].map(shellQuote).join(" ")], { timeout: 15000 });
|
|
140
|
+
const remoteUrl = await execFile(systemCommand("ssh"), ["-o", "BatchMode=yes", "-o", "ConnectTimeout=10", "--", runner.remote.host, ["git", "-C", runner.remote.directory, "remote", "get-url", "origin"].map(shellQuote).join(" ")], { timeout: 15000 });
|
|
139
141
|
if (cloudRepository(remoteUrl.stdout.trim()) !== runner.repository)
|
|
140
142
|
throw new Error("SSH worker repository does not match this cloud job");
|
|
141
143
|
if (!offer.snapshot)
|
|
142
|
-
await execFile("ssh", ["-o", "BatchMode=yes", "-o", "ConnectTimeout=10", "--", runner.remote.host, ["git", "-C", runner.remote.directory, "fetch", "--no-tags", "--", "origin", offer.observation.ref].map(shellQuote).join(" ")], { timeout: 60000 });
|
|
144
|
+
await execFile(systemCommand("ssh"), ["-o", "BatchMode=yes", "-o", "ConnectTimeout=10", "--", runner.remote.host, ["git", "-C", runner.remote.directory, "fetch", "--no-tags", "--", "origin", offer.observation.ref].map(shellQuote).join(" ")], { timeout: 60000 });
|
|
143
145
|
}
|
|
144
146
|
await launchRecoveredRun(paths.home, ready, process.env, async () => {
|
|
145
147
|
reported = true;
|
|
@@ -229,10 +231,7 @@ export async function pollCloudRunners(home) {
|
|
|
229
231
|
}
|
|
230
232
|
for (const offer of reply.pending) {
|
|
231
233
|
await dispatchOnce(runner.id, offer.id, "notice", () => {
|
|
232
|
-
|
|
233
|
-
if (!["http:", "https:"].includes(url.protocol))
|
|
234
|
-
throw new Error("Invalid Lore dashboard URL");
|
|
235
|
-
openBrowser(url.href);
|
|
234
|
+
openBrowser(new URL("recovery", config.dashboardUrl.replace(/\/?$/, "/")).href);
|
|
236
235
|
});
|
|
237
236
|
}
|
|
238
237
|
for (const offer of reply.offers) {
|