@jiawang1209/codex-hud 0.1.7 → 0.1.8
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/CHANGELOG.md +1 -0
- package/dist/native-runner.d.ts +2 -1
- package/dist/native-runner.js +12 -5
- package/dist/native-runner.js.map +1 -1
- package/dist/sources/codex.d.ts +11 -3
- package/dist/sources/codex.js +54 -19
- package/dist/sources/codex.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
- Add Windows native shim support with `codex.cmd` and `codex-hud.cmd status` for command-backed HUD injection.
|
|
6
6
|
- Use npm's global shim directory as the default Windows shim target, with backup/restore for existing official `codex.cmd` shims.
|
|
7
7
|
- Run command-backed status lines through `cmd.exe /C` on native Windows while keeping `sh -lc` for macOS, Linux, and WSL.
|
|
8
|
+
- Fix Windows `doctor` command detection by using `where.exe`, `cmd.exe /C codex --version`, and `codex.exe` native binary defaults.
|
|
8
9
|
- Document the difference between Codex CLI built-in status-line items and the exact `codex-hud status` renderer.
|
|
9
10
|
|
|
10
11
|
## 0.1.1
|
package/dist/native-runner.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export interface ShimOptions {
|
|
|
7
7
|
binDir?: string;
|
|
8
8
|
codexPath?: string;
|
|
9
9
|
env?: NodeJS.ProcessEnv;
|
|
10
|
+
homeDir?: string;
|
|
10
11
|
platform?: NodeJS.Platform;
|
|
11
12
|
}
|
|
12
13
|
export interface ShimResult {
|
|
@@ -20,7 +21,7 @@ export interface RemoveShimResult {
|
|
|
20
21
|
export declare function parseNativeArgs(args: string[]): NativeOptions;
|
|
21
22
|
export declare function parseShimArgs(args: string[]): ShimOptions;
|
|
22
23
|
export declare function buildNativeCodexArgs(codexArgs: string[], options?: Pick<ShimOptions, "platform">): string[];
|
|
23
|
-
export declare function resolveNativeCodexPath(explicitPath?: string): string;
|
|
24
|
+
export declare function resolveNativeCodexPath(explicitPath?: string, options?: Pick<ShimOptions, "env" | "homeDir" | "platform">): string;
|
|
24
25
|
export declare function runNativeCodex(options: NativeOptions): Promise<number>;
|
|
25
26
|
export declare function defaultShimBinDir(options?: Pick<ShimOptions, "env" | "platform">): string;
|
|
26
27
|
export declare function buildShimScript(options: {
|
package/dist/native-runner.js
CHANGED
|
@@ -47,12 +47,15 @@ export function buildNativeCodexArgs(codexArgs, options = {}) {
|
|
|
47
47
|
const statusLineConfig = isWindows(options.platform) ? WINDOWS_HUD_STATUS_LINE_CONFIG : HUD_STATUS_LINE_CONFIG;
|
|
48
48
|
return ["-c", statusLineConfig, ...codexArgs];
|
|
49
49
|
}
|
|
50
|
-
export function resolveNativeCodexPath(explicitPath) {
|
|
50
|
+
export function resolveNativeCodexPath(explicitPath, options = {}) {
|
|
51
51
|
if (explicitPath)
|
|
52
52
|
return explicitPath;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
const env = options.env ?? process.env;
|
|
54
|
+
if (env.CODEX_HUD_CODEX_PATH)
|
|
55
|
+
return env.CODEX_HUD_CODEX_PATH;
|
|
56
|
+
const platform = options.platform ?? process.platform;
|
|
57
|
+
const codexBinary = platform === "win32" ? "codex.exe" : "codex";
|
|
58
|
+
return path.join(options.homeDir ?? os.homedir(), "Desktop", "Github_repos", "openai-codex", "codex-rs", "target", "debug", codexBinary);
|
|
56
59
|
}
|
|
57
60
|
export async function runNativeCodex(options) {
|
|
58
61
|
const codexPath = resolveNativeCodexPath(options.codexPath);
|
|
@@ -94,7 +97,11 @@ export async function installCodexShim(options = {}) {
|
|
|
94
97
|
const binDir = options.binDir ?? defaultShimBinDir({ env: options.env, platform: options.platform });
|
|
95
98
|
const shimPath = path.join(binDir, isWindows(options.platform) ? "codex.cmd" : "codex");
|
|
96
99
|
const backupPath = backupShimPath(shimPath);
|
|
97
|
-
const codexPath = resolveNativeCodexPath(options.codexPath
|
|
100
|
+
const codexPath = resolveNativeCodexPath(options.codexPath, {
|
|
101
|
+
env: options.env,
|
|
102
|
+
homeDir: options.homeDir,
|
|
103
|
+
platform: options.platform,
|
|
104
|
+
});
|
|
98
105
|
const script = buildShimScript({ codexPath, platform: options.platform });
|
|
99
106
|
await mkdir(binDir, { recursive: true });
|
|
100
107
|
const existing = await readOptionalFile(shimPath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-runner.js","sourceRoot":"","sources":["../src/native-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"native-runner.js","sourceRoot":"","sources":["../src/native-runner.ts"],"names":[],"mappings":"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"}
|
package/dist/sources/codex.d.ts
CHANGED
|
@@ -32,6 +32,8 @@ export interface DoctorReport {
|
|
|
32
32
|
lines: string[];
|
|
33
33
|
}
|
|
34
34
|
export interface DoctorDeps {
|
|
35
|
+
env?: NodeJS.ProcessEnv;
|
|
36
|
+
platform?: NodeJS.Platform;
|
|
35
37
|
resolveCodexPath?: () => Promise<string | undefined>;
|
|
36
38
|
readCodexVersion?: () => Promise<string | undefined>;
|
|
37
39
|
resolveCodexHudPath?: () => Promise<string | undefined>;
|
|
@@ -42,9 +44,15 @@ export interface DoctorDeps {
|
|
|
42
44
|
}
|
|
43
45
|
export declare function getCodexHome(config?: HudConfig): string;
|
|
44
46
|
export declare function readCodexInfo(config?: HudConfig): Promise<CodexInfo>;
|
|
45
|
-
export
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
export interface CommandInvocation {
|
|
48
|
+
command: string;
|
|
49
|
+
args: string[];
|
|
50
|
+
}
|
|
51
|
+
export declare function resolveCommandArgs(commandName: string, platform?: NodeJS.Platform): CommandInvocation;
|
|
52
|
+
export declare function versionCommandArgs(commandName: string, platform?: NodeJS.Platform): CommandInvocation;
|
|
53
|
+
export declare function resolveCodexPath(platform?: NodeJS.Platform): Promise<string | undefined>;
|
|
54
|
+
export declare function resolveCodexHudPath(platform?: NodeJS.Platform): Promise<string | undefined>;
|
|
55
|
+
export declare function readCodexVersion(platform?: NodeJS.Platform): Promise<string | undefined>;
|
|
48
56
|
export declare function parseCodexVersion(output: string): string | undefined;
|
|
49
57
|
export declare function parseCodexConfigText(text: string): Pick<CodexInfo, "model" | "reasoningEffort">;
|
|
50
58
|
export declare function createDoctorReport(deps?: DoctorDeps): Promise<DoctorReport>;
|
package/dist/sources/codex.js
CHANGED
|
@@ -23,33 +23,53 @@ export async function readCodexInfo(config) {
|
|
|
23
23
|
codexHome,
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
-
export
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
return stdout.trim() || undefined;
|
|
26
|
+
export function resolveCommandArgs(commandName, platform = process.platform) {
|
|
27
|
+
if (platform === "win32") {
|
|
28
|
+
return {
|
|
29
|
+
command: "where.exe",
|
|
30
|
+
args: [commandName],
|
|
31
|
+
};
|
|
33
32
|
}
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
return {
|
|
34
|
+
command: "sh",
|
|
35
|
+
args: ["-c", `command -v ${shellCommandName(commandName)}`],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export function versionCommandArgs(commandName, platform = process.platform) {
|
|
39
|
+
if (platform === "win32") {
|
|
40
|
+
return {
|
|
41
|
+
command: "cmd.exe",
|
|
42
|
+
args: ["/C", commandName, "--version"],
|
|
43
|
+
};
|
|
36
44
|
}
|
|
45
|
+
return {
|
|
46
|
+
command: commandName,
|
|
47
|
+
args: ["--version"],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export async function resolveCodexPath(platform = process.platform) {
|
|
51
|
+
return await resolveCommandPath("codex", platform);
|
|
52
|
+
}
|
|
53
|
+
export async function resolveCodexHudPath(platform = process.platform) {
|
|
54
|
+
return await resolveCommandPath("codex-hud", platform);
|
|
37
55
|
}
|
|
38
|
-
|
|
56
|
+
async function resolveCommandPath(commandName, platform) {
|
|
57
|
+
const invocation = resolveCommandArgs(commandName, platform);
|
|
39
58
|
try {
|
|
40
|
-
const { stdout } = await execFileAsync(
|
|
59
|
+
const { stdout } = await execFileAsync(invocation.command, invocation.args, {
|
|
41
60
|
timeout: 1000,
|
|
42
61
|
encoding: "utf8",
|
|
43
62
|
});
|
|
44
|
-
return stdout
|
|
63
|
+
return firstOutputLine(stdout);
|
|
45
64
|
}
|
|
46
65
|
catch {
|
|
47
66
|
return undefined;
|
|
48
67
|
}
|
|
49
68
|
}
|
|
50
|
-
export async function readCodexVersion() {
|
|
69
|
+
export async function readCodexVersion(platform = process.platform) {
|
|
70
|
+
const invocation = versionCommandArgs("codex", platform);
|
|
51
71
|
try {
|
|
52
|
-
const { stdout } = await execFileAsync(
|
|
72
|
+
const { stdout } = await execFileAsync(invocation.command, invocation.args, {
|
|
53
73
|
timeout: 1000,
|
|
54
74
|
encoding: "utf8",
|
|
55
75
|
});
|
|
@@ -70,16 +90,19 @@ export function parseCodexConfigText(text) {
|
|
|
70
90
|
};
|
|
71
91
|
}
|
|
72
92
|
export async function createDoctorReport(deps = {}) {
|
|
93
|
+
const platform = deps.platform ?? process.platform;
|
|
94
|
+
const env = deps.env ?? process.env;
|
|
73
95
|
const codexHome = deps.codexHome ?? getCodexHome();
|
|
74
|
-
const codexPath = await (deps.resolveCodexPath ?? resolveCodexPath)();
|
|
75
|
-
const codexHudPath = await (deps.resolveCodexHudPath ?? resolveCodexHudPath)();
|
|
76
|
-
const version = codexPath ? await (deps.readCodexVersion ?? readCodexVersion)() : undefined;
|
|
96
|
+
const codexPath = await (deps.resolveCodexPath ?? (() => resolveCodexPath(platform)))();
|
|
97
|
+
const codexHudPath = await (deps.resolveCodexHudPath ?? (() => resolveCodexHudPath(platform)))();
|
|
98
|
+
const version = codexPath ? await (deps.readCodexVersion ?? (() => readCodexVersion(platform)))() : undefined;
|
|
77
99
|
const exists = deps.pathExists ?? pathExists;
|
|
78
100
|
const homeExists = await exists(codexHome);
|
|
79
|
-
const shimPath = deps.shimPath ?? path.join(defaultShimBinDir(),
|
|
101
|
+
const shimPath = deps.shimPath ?? path.join(defaultShimBinDir({ env, platform }), platform === "win32" ? "codex.cmd" : "codex");
|
|
80
102
|
const shimText = await (deps.readTextFile ?? readOptionalText)(shimPath);
|
|
81
103
|
const shimInstalled = Boolean(shimText?.includes("codex-hud shim"));
|
|
82
|
-
const patchedCodexPath = parseShimCodexPath(shimText)
|
|
104
|
+
const patchedCodexPath = parseShimCodexPath(shimText)
|
|
105
|
+
?? resolveNativeCodexPath(undefined, { env, homeDir: nativeHomeDir(env, platform), platform });
|
|
83
106
|
const patchedCodexFound = await exists(patchedCodexPath);
|
|
84
107
|
const nativeStatusCommandConfigured = Boolean(shimText && /codex-hud(?:\.cmd)?\s+native/.test(shimText));
|
|
85
108
|
const lines = [];
|
|
@@ -155,6 +178,18 @@ function parseShimCodexPath(text) {
|
|
|
155
178
|
const match = text.match(/--codex\s+(?:"([^"]+)"|'([^']+)'|([^\s]+))/);
|
|
156
179
|
return match?.[1] ?? match?.[2] ?? match?.[3];
|
|
157
180
|
}
|
|
181
|
+
function firstOutputLine(text) {
|
|
182
|
+
return text.split(/\r?\n/).map((line) => line.trim()).find(Boolean);
|
|
183
|
+
}
|
|
184
|
+
function shellCommandName(commandName) {
|
|
185
|
+
return commandName.replace(/'/g, "'\\''");
|
|
186
|
+
}
|
|
187
|
+
function nativeHomeDir(env, platform) {
|
|
188
|
+
if (platform === "win32") {
|
|
189
|
+
return env.USERPROFILE;
|
|
190
|
+
}
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
158
193
|
async function readCodexConfigText(codexHome) {
|
|
159
194
|
try {
|
|
160
195
|
return await readFile(path.join(codexHome, "config.toml"), "utf8");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/sources/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/sources/codex.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED