@mostok/codexes 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +15 -0
- package/README.md +88 -0
- package/dist/accounts/account-registry.d.ts +30 -0
- package/dist/accounts/account-registry.js +263 -0
- package/dist/accounts/account-registry.js.map +1 -0
- package/dist/accounts/account-resolution.d.ts +16 -0
- package/dist/accounts/account-resolution.js +71 -0
- package/dist/accounts/account-resolution.js.map +1 -0
- package/dist/accounts/resolve-active-account.d.ts +6 -0
- package/dist/accounts/resolve-active-account.js +32 -0
- package/dist/accounts/resolve-active-account.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +3426 -0
- package/dist/cli.js.map +7 -0
- package/dist/commands/account-add/run-account-add-command.d.ts +2 -0
- package/dist/commands/account-add/run-account-add-command.js +296 -0
- package/dist/commands/account-add/run-account-add-command.js.map +1 -0
- package/dist/commands/account-list/run-account-list-command.d.ts +2 -0
- package/dist/commands/account-list/run-account-list-command.js +48 -0
- package/dist/commands/account-list/run-account-list-command.js.map +1 -0
- package/dist/commands/account-remove/run-account-remove-command.d.ts +2 -0
- package/dist/commands/account-remove/run-account-remove-command.js +52 -0
- package/dist/commands/account-remove/run-account-remove-command.js.map +1 -0
- package/dist/commands/account-use/run-account-use-command.d.ts +2 -0
- package/dist/commands/account-use/run-account-use-command.js +78 -0
- package/dist/commands/account-use/run-account-use-command.js.map +1 -0
- package/dist/commands/root/run-root-command.d.ts +2 -0
- package/dist/commands/root/run-root-command.js +175 -0
- package/dist/commands/root/run-root-command.js.map +1 -0
- package/dist/config/wrapper-config.d.ts +24 -0
- package/dist/config/wrapper-config.js +145 -0
- package/dist/config/wrapper-config.js.map +1 -0
- package/dist/core/bootstrap.d.ts +8 -0
- package/dist/core/bootstrap.js +32 -0
- package/dist/core/bootstrap.js.map +1 -0
- package/dist/core/context.d.ts +33 -0
- package/dist/core/context.js +72 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/paths.d.ts +12 -0
- package/dist/core/paths.js +30 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/logging/logger.d.ts +18 -0
- package/dist/logging/logger.js +56 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/process/codex-launch-spec.d.ts +5 -0
- package/dist/process/codex-launch-spec.js +80 -0
- package/dist/process/codex-launch-spec.js.map +1 -0
- package/dist/process/find-codex-binary.d.ts +14 -0
- package/dist/process/find-codex-binary.js +73 -0
- package/dist/process/find-codex-binary.js.map +1 -0
- package/dist/process/run-codex-login.d.ts +14 -0
- package/dist/process/run-codex-login.js +97 -0
- package/dist/process/run-codex-login.js.map +1 -0
- package/dist/process/spawn-codex-command.d.ts +7 -0
- package/dist/process/spawn-codex-command.js +69 -0
- package/dist/process/spawn-codex-command.js.map +1 -0
- package/dist/runtime/activate-account/activate-account.d.ts +27 -0
- package/dist/runtime/activate-account/activate-account.js +298 -0
- package/dist/runtime/activate-account/activate-account.js.map +1 -0
- package/dist/runtime/auth-state-probe.d.ts +57 -0
- package/dist/runtime/auth-state-probe.js +394 -0
- package/dist/runtime/auth-state-probe.js.map +1 -0
- package/dist/runtime/init/initialize-runtime.d.ts +19 -0
- package/dist/runtime/init/initialize-runtime.js +275 -0
- package/dist/runtime/init/initialize-runtime.js.map +1 -0
- package/dist/runtime/lock/runtime-lock.d.ts +11 -0
- package/dist/runtime/lock/runtime-lock.js +99 -0
- package/dist/runtime/lock/runtime-lock.js.map +1 -0
- package/dist/runtime/login-workspace.d.ts +18 -0
- package/dist/runtime/login-workspace.js +171 -0
- package/dist/runtime/login-workspace.js.map +1 -0
- package/dist/runtime/runtime-contract.d.ts +44 -0
- package/dist/runtime/runtime-contract.js +79 -0
- package/dist/runtime/runtime-contract.js.map +1 -0
- package/dist/selection/account-auth-state.d.ts +23 -0
- package/dist/selection/account-auth-state.js +132 -0
- package/dist/selection/account-auth-state.js.map +1 -0
- package/dist/selection/select-account.d.ts +11 -0
- package/dist/selection/select-account.js +168 -0
- package/dist/selection/select-account.js.map +1 -0
- package/dist/selection/usage-cache.d.ts +24 -0
- package/dist/selection/usage-cache.js +106 -0
- package/dist/selection/usage-cache.js.map +1 -0
- package/dist/selection/usage-client.d.ts +23 -0
- package/dist/selection/usage-client.js +143 -0
- package/dist/selection/usage-client.js.map +1 -0
- package/dist/selection/usage-normalize.d.ts +7 -0
- package/dist/selection/usage-normalize.js +209 -0
- package/dist/selection/usage-normalize.js.map +1 -0
- package/dist/selection/usage-probe-coordinator.d.ts +18 -0
- package/dist/selection/usage-probe-coordinator.js +69 -0
- package/dist/selection/usage-probe-coordinator.js.map +1 -0
- package/dist/selection/usage-types.d.ts +59 -0
- package/dist/selection/usage-types.js +2 -0
- package/dist/selection/usage-types.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { access } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
export async function resolveCodexLaunchSpec(codexBinaryPath, args) {
|
|
4
|
+
if (process.platform !== "win32") {
|
|
5
|
+
return {
|
|
6
|
+
command: codexBinaryPath,
|
|
7
|
+
args,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
const npmShim = await resolveNpmCodexShim(codexBinaryPath);
|
|
11
|
+
if (npmShim) {
|
|
12
|
+
return {
|
|
13
|
+
command: npmShim.nodeBinary,
|
|
14
|
+
args: [npmShim.codexScript, ...args],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
if (/\.(cmd|bat)$/i.test(codexBinaryPath)) {
|
|
18
|
+
return {
|
|
19
|
+
command: process.env.ComSpec ?? "cmd.exe",
|
|
20
|
+
args: ["/d", "/s", "/c", buildCmdInvocation(codexBinaryPath, args)],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
if (/\.ps1$/i.test(codexBinaryPath)) {
|
|
24
|
+
return {
|
|
25
|
+
command: process.env.ComSpec
|
|
26
|
+
? "powershell.exe"
|
|
27
|
+
: "pwsh",
|
|
28
|
+
args: [
|
|
29
|
+
"-NoProfile",
|
|
30
|
+
"-ExecutionPolicy",
|
|
31
|
+
"Bypass",
|
|
32
|
+
"-File",
|
|
33
|
+
codexBinaryPath,
|
|
34
|
+
...args,
|
|
35
|
+
],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
command: codexBinaryPath,
|
|
40
|
+
args,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function buildCmdInvocation(binaryPath, args) {
|
|
44
|
+
return [quoteForCmd(binaryPath), ...args.map(quoteForCmd)].join(" ");
|
|
45
|
+
}
|
|
46
|
+
function quoteForCmd(value) {
|
|
47
|
+
if (value.length === 0) {
|
|
48
|
+
return '""';
|
|
49
|
+
}
|
|
50
|
+
if (!/[\s"]/u.test(value)) {
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
return `"${value.replace(/"/g, '""')}"`;
|
|
54
|
+
}
|
|
55
|
+
async function resolveNpmCodexShim(codexBinaryPath) {
|
|
56
|
+
const basename = path.basename(codexBinaryPath).toLowerCase();
|
|
57
|
+
if (!["codex", "codex.cmd", "codex.bat", "codex.ps1"].includes(basename)) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const directory = path.dirname(codexBinaryPath);
|
|
61
|
+
const codexScript = path.join(directory, "node_modules", "@openai", "codex", "bin", "codex.js");
|
|
62
|
+
if (!(await pathExists(codexScript))) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
const bundledNode = path.join(directory, "node.exe");
|
|
66
|
+
return {
|
|
67
|
+
codexScript,
|
|
68
|
+
nodeBinary: (await pathExists(bundledNode)) ? bundledNode : "node",
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
async function pathExists(filePath) {
|
|
72
|
+
try {
|
|
73
|
+
await access(filePath);
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=codex-launch-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-launch-spec.js","sourceRoot":"","sources":["../../src/process/codex-launch-spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Logger } from "../logging/logger.js";
|
|
2
|
+
export interface CodexBinaryResolution {
|
|
3
|
+
path: string | null;
|
|
4
|
+
candidates: string[];
|
|
5
|
+
rejectedCandidates: Array<{
|
|
6
|
+
candidate: string;
|
|
7
|
+
reason: string;
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
10
|
+
export declare function findCodexBinary(input: {
|
|
11
|
+
env: NodeJS.ProcessEnv;
|
|
12
|
+
logger: Logger;
|
|
13
|
+
wrapperExecutablePath: string;
|
|
14
|
+
}): Promise<CodexBinaryResolution>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { access, stat } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
export async function findCodexBinary(input) {
|
|
4
|
+
const candidates = buildCandidates(input.env);
|
|
5
|
+
const rejectedCandidates = [];
|
|
6
|
+
input.logger.debug("binary_resolution.start", {
|
|
7
|
+
wrapperExecutablePath: input.wrapperExecutablePath,
|
|
8
|
+
candidateCount: candidates.length,
|
|
9
|
+
});
|
|
10
|
+
for (const candidate of candidates) {
|
|
11
|
+
const reason = await getRejectionReason(candidate, input.wrapperExecutablePath);
|
|
12
|
+
if (reason) {
|
|
13
|
+
rejectedCandidates.push({ candidate, reason });
|
|
14
|
+
input.logger.debug("binary_resolution.rejected", { candidate, reason });
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
input.logger.info("binary_resolution.selected", { candidate });
|
|
18
|
+
return {
|
|
19
|
+
path: candidate,
|
|
20
|
+
candidates,
|
|
21
|
+
rejectedCandidates,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
input.logger.warn("binary_resolution.missing", {
|
|
25
|
+
wrapperExecutablePath: input.wrapperExecutablePath,
|
|
26
|
+
rejectedCandidates,
|
|
27
|
+
});
|
|
28
|
+
return {
|
|
29
|
+
path: null,
|
|
30
|
+
candidates,
|
|
31
|
+
rejectedCandidates,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function buildCandidates(env) {
|
|
35
|
+
const pathValue = env.PATH ?? "";
|
|
36
|
+
const pathEntries = pathValue
|
|
37
|
+
.split(path.delimiter)
|
|
38
|
+
.map((entry) => entry.trim())
|
|
39
|
+
.filter(Boolean);
|
|
40
|
+
const executableNames = process.platform === "win32"
|
|
41
|
+
? ["codex.cmd", "codex.exe", "codex.bat"]
|
|
42
|
+
: ["codex"];
|
|
43
|
+
return Array.from(new Set(pathEntries.flatMap((entry) => executableNames.map((executableName) => path.join(entry, executableName)))));
|
|
44
|
+
}
|
|
45
|
+
async function getRejectionReason(candidate, wrapperExecutablePath) {
|
|
46
|
+
try {
|
|
47
|
+
await access(candidate);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return "not_accessible";
|
|
51
|
+
}
|
|
52
|
+
const [candidateStat, wrapperStat] = await Promise.all([
|
|
53
|
+
stat(candidate).catch(() => null),
|
|
54
|
+
stat(wrapperExecutablePath).catch(() => null),
|
|
55
|
+
]);
|
|
56
|
+
if (!candidateStat || !candidateStat.isFile()) {
|
|
57
|
+
return "not_a_file";
|
|
58
|
+
}
|
|
59
|
+
if (wrapperStat && isSameFile(candidate, wrapperExecutablePath, candidateStat, wrapperStat)) {
|
|
60
|
+
return "self_recursive_wrapper_path";
|
|
61
|
+
}
|
|
62
|
+
if (path.basename(candidate).toLowerCase().startsWith("codexes")) {
|
|
63
|
+
return "wrapper_named_binary";
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
function isSameFile(candidate, wrapperExecutablePath, candidateStat, wrapperStat) {
|
|
68
|
+
if (path.resolve(candidate) === path.resolve(wrapperExecutablePath)) {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
return candidateStat.ino === wrapperStat.ino && candidateStat.dev === wrapperStat.dev;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=find-codex-binary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-codex-binary.js","sourceRoot":"","sources":["../../src/process/find-codex-binary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Logger } from "../logging/logger.js";
|
|
2
|
+
export interface CodexLoginResult {
|
|
3
|
+
exitCode: number | null;
|
|
4
|
+
signal: NodeJS.Signals | null;
|
|
5
|
+
timedOut: boolean;
|
|
6
|
+
timeoutMs: number;
|
|
7
|
+
cancelledBySignal: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function runInteractiveCodexLogin(input: {
|
|
10
|
+
codexBinaryPath: string;
|
|
11
|
+
codexHome: string;
|
|
12
|
+
logger: Logger;
|
|
13
|
+
timeoutMs: number;
|
|
14
|
+
}): Promise<CodexLoginResult>;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { resolveCodexLaunchSpec } from "./codex-launch-spec.js";
|
|
3
|
+
export async function runInteractiveCodexLogin(input) {
|
|
4
|
+
const launchSpec = await resolveCodexLaunchSpec(input.codexBinaryPath, ["login"]);
|
|
5
|
+
input.logger.info("login.spawn.start", {
|
|
6
|
+
codexBinaryPath: input.codexBinaryPath,
|
|
7
|
+
resolvedCommand: launchSpec.command,
|
|
8
|
+
codexHome: input.codexHome,
|
|
9
|
+
argv: launchSpec.args,
|
|
10
|
+
timeoutMs: input.timeoutMs,
|
|
11
|
+
});
|
|
12
|
+
return new Promise((resolve, reject) => {
|
|
13
|
+
const child = spawn(launchSpec.command, launchSpec.args, {
|
|
14
|
+
env: {
|
|
15
|
+
...process.env,
|
|
16
|
+
CODEX_HOME: input.codexHome,
|
|
17
|
+
},
|
|
18
|
+
shell: false,
|
|
19
|
+
stdio: "inherit",
|
|
20
|
+
windowsHide: false,
|
|
21
|
+
});
|
|
22
|
+
let timedOut = false;
|
|
23
|
+
let cancelledBySignal = false;
|
|
24
|
+
let settled = false;
|
|
25
|
+
const timeoutHandle = setTimeout(() => {
|
|
26
|
+
timedOut = true;
|
|
27
|
+
input.logger.warn("login.spawn.timeout", {
|
|
28
|
+
codexBinaryPath: input.codexBinaryPath,
|
|
29
|
+
codexHome: input.codexHome,
|
|
30
|
+
timeoutMs: input.timeoutMs,
|
|
31
|
+
});
|
|
32
|
+
terminateChild(child);
|
|
33
|
+
}, input.timeoutMs);
|
|
34
|
+
const forwardSignal = (signal) => {
|
|
35
|
+
cancelledBySignal = true;
|
|
36
|
+
input.logger.warn("login.spawn.parent_signal", {
|
|
37
|
+
signal,
|
|
38
|
+
pid: child.pid ?? null,
|
|
39
|
+
});
|
|
40
|
+
child.kill(signal);
|
|
41
|
+
};
|
|
42
|
+
const signalHandlers = {
|
|
43
|
+
SIGINT: () => forwardSignal("SIGINT"),
|
|
44
|
+
SIGTERM: () => forwardSignal("SIGTERM"),
|
|
45
|
+
};
|
|
46
|
+
process.on("SIGINT", signalHandlers.SIGINT);
|
|
47
|
+
process.on("SIGTERM", signalHandlers.SIGTERM);
|
|
48
|
+
const cleanup = () => {
|
|
49
|
+
clearTimeout(timeoutHandle);
|
|
50
|
+
process.off("SIGINT", signalHandlers.SIGINT);
|
|
51
|
+
process.off("SIGTERM", signalHandlers.SIGTERM);
|
|
52
|
+
};
|
|
53
|
+
child.on("error", (error) => {
|
|
54
|
+
if (settled) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
settled = true;
|
|
58
|
+
cleanup();
|
|
59
|
+
input.logger.error("login.spawn.error", {
|
|
60
|
+
codexBinaryPath: input.codexBinaryPath,
|
|
61
|
+
codexHome: input.codexHome,
|
|
62
|
+
message: error.message,
|
|
63
|
+
});
|
|
64
|
+
reject(error);
|
|
65
|
+
});
|
|
66
|
+
child.on("exit", (exitCode, signal) => {
|
|
67
|
+
if (settled) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
settled = true;
|
|
71
|
+
cleanup();
|
|
72
|
+
input.logger.info("login.spawn.complete", {
|
|
73
|
+
codexBinaryPath: input.codexBinaryPath,
|
|
74
|
+
codexHome: input.codexHome,
|
|
75
|
+
exitCode,
|
|
76
|
+
signal,
|
|
77
|
+
timedOut,
|
|
78
|
+
cancelledBySignal,
|
|
79
|
+
});
|
|
80
|
+
resolve({
|
|
81
|
+
exitCode,
|
|
82
|
+
signal,
|
|
83
|
+
timedOut,
|
|
84
|
+
timeoutMs: input.timeoutMs,
|
|
85
|
+
cancelledBySignal,
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function terminateChild(child) {
|
|
91
|
+
if (process.platform === "win32") {
|
|
92
|
+
child.kill();
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
child.kill("SIGTERM");
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=run-codex-login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-codex-login.js","sourceRoot":"","sources":["../../src/process/run-codex-login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { resolveCodexLaunchSpec } from "./codex-launch-spec.js";
|
|
3
|
+
export async function spawnCodexCommand(input) {
|
|
4
|
+
const launchSpec = await resolveCodexLaunchSpec(input.codexBinaryPath, input.argv);
|
|
5
|
+
input.logger.info("spawn_codex.start", {
|
|
6
|
+
codexBinaryPath: input.codexBinaryPath,
|
|
7
|
+
resolvedCommand: launchSpec.command,
|
|
8
|
+
codexHome: input.codexHome,
|
|
9
|
+
argv: launchSpec.args,
|
|
10
|
+
stdinIsTTY: process.stdin.isTTY ?? false,
|
|
11
|
+
stdoutIsTTY: process.stdout.isTTY ?? false,
|
|
12
|
+
stderrIsTTY: process.stderr.isTTY ?? false,
|
|
13
|
+
});
|
|
14
|
+
return new Promise((resolve, reject) => {
|
|
15
|
+
const child = spawn(launchSpec.command, launchSpec.args, {
|
|
16
|
+
env: {
|
|
17
|
+
...process.env,
|
|
18
|
+
CODEX_HOME: input.codexHome,
|
|
19
|
+
},
|
|
20
|
+
shell: false,
|
|
21
|
+
stdio: "inherit",
|
|
22
|
+
windowsHide: false,
|
|
23
|
+
});
|
|
24
|
+
let settled = false;
|
|
25
|
+
const forwardSignal = (signal) => {
|
|
26
|
+
input.logger.warn("spawn_codex.parent_signal", {
|
|
27
|
+
signal,
|
|
28
|
+
pid: child.pid ?? null,
|
|
29
|
+
});
|
|
30
|
+
child.kill(signal);
|
|
31
|
+
};
|
|
32
|
+
const signalHandlers = {
|
|
33
|
+
SIGINT: () => forwardSignal("SIGINT"),
|
|
34
|
+
SIGTERM: () => forwardSignal("SIGTERM"),
|
|
35
|
+
};
|
|
36
|
+
process.on("SIGINT", signalHandlers.SIGINT);
|
|
37
|
+
process.on("SIGTERM", signalHandlers.SIGTERM);
|
|
38
|
+
const cleanup = () => {
|
|
39
|
+
process.off("SIGINT", signalHandlers.SIGINT);
|
|
40
|
+
process.off("SIGTERM", signalHandlers.SIGTERM);
|
|
41
|
+
};
|
|
42
|
+
child.on("error", (error) => {
|
|
43
|
+
if (settled) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
settled = true;
|
|
47
|
+
cleanup();
|
|
48
|
+
input.logger.error("spawn_codex.error", {
|
|
49
|
+
codexBinaryPath: input.codexBinaryPath,
|
|
50
|
+
message: error.message,
|
|
51
|
+
});
|
|
52
|
+
reject(error);
|
|
53
|
+
});
|
|
54
|
+
child.on("exit", (exitCode, signal) => {
|
|
55
|
+
if (settled) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
settled = true;
|
|
59
|
+
cleanup();
|
|
60
|
+
input.logger.info("spawn_codex.complete", {
|
|
61
|
+
codexBinaryPath: input.codexBinaryPath,
|
|
62
|
+
exitCode,
|
|
63
|
+
signal,
|
|
64
|
+
});
|
|
65
|
+
resolve(exitCode ?? 1);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=spawn-codex-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn-codex-command.js","sourceRoot":"","sources":["../../src/process/spawn-codex-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAKvC;IACC,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEnF,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE;QACrC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,eAAe,EAAE,UAAU,CAAC,OAAO;QACnC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK;QACxC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK;QAC1C,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK;KAC3C,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;YACvD,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,UAAU,EAAE,KAAK,CAAC,SAAS;aAC5B;YACD,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QACH,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,aAAa,GAAG,CAAC,MAAsB,EAAE,EAAE;YAC/C,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;gBAC7C,MAAM;gBACN,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,IAAI;aACvB,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,MAAM,cAAc,GAAG;YACrB,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC;YACrC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC;SACc,CAAC;QAExD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QAE9C,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC,CAAC;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO;YACT,CAAC;YAED,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,EAAE,CAAC;YACV,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE;gBACtC,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;YACpC,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO;YACT,CAAC;YAED,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,EAAE,CAAC;YACV,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBACxC,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,QAAQ;gBACR,MAAM;aACP,CAAC,CAAC;YACH,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AccountRecord } from "../../accounts/account-registry.js";
|
|
2
|
+
import type { Logger } from "../../logging/logger.js";
|
|
3
|
+
import type { RuntimeContract } from "../runtime-contract.js";
|
|
4
|
+
export interface ActivatedAccountSession {
|
|
5
|
+
account: AccountRecord;
|
|
6
|
+
backupRoot: string;
|
|
7
|
+
runtimeContract: RuntimeContract;
|
|
8
|
+
sharedCodexHome: string;
|
|
9
|
+
sourceAccountStateRoot: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function activateAccountIntoSharedRuntime(input: {
|
|
12
|
+
account: AccountRecord;
|
|
13
|
+
logger: Logger;
|
|
14
|
+
runtimeContract: RuntimeContract;
|
|
15
|
+
sharedCodexHome: string;
|
|
16
|
+
}): Promise<ActivatedAccountSession>;
|
|
17
|
+
export declare function syncSharedRuntimeBackToAccount(input: {
|
|
18
|
+
logger: Logger;
|
|
19
|
+
session: ActivatedAccountSession;
|
|
20
|
+
}): Promise<void>;
|
|
21
|
+
export declare function restoreSharedRuntimeFromBackup(input: {
|
|
22
|
+
account: AccountRecord;
|
|
23
|
+
backupRoot: string;
|
|
24
|
+
logger: Logger;
|
|
25
|
+
runtimeContract: RuntimeContract;
|
|
26
|
+
sharedCodexHome: string;
|
|
27
|
+
}): Promise<void>;
|