@junctionpanel/server 0.1.58 → 0.1.59
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/dist/server/server/agent/provider-launch-config.d.ts.map +1 -1
- package/dist/server/server/agent/provider-launch-config.js +6 -39
- package/dist/server/server/agent/provider-launch-config.js.map +1 -1
- package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/claude-agent.js +40 -15
- package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
- package/dist/server/server/agent/providers/claude-cli-capabilities.d.ts +39 -2
- package/dist/server/server/agent/providers/claude-cli-capabilities.d.ts.map +1 -1
- package/dist/server/server/agent/providers/claude-cli-capabilities.js +88 -23
- package/dist/server/server/agent/providers/claude-cli-capabilities.js.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.js +12 -11
- package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
- package/dist/server/server/daemon-doctor.d.ts +2 -1
- package/dist/server/server/daemon-doctor.d.ts.map +1 -1
- package/dist/server/server/daemon-doctor.js +70 -13
- package/dist/server/server/daemon-doctor.js.map +1 -1
- package/dist/server/server/daemon-provider-settings.d.ts +3 -9
- package/dist/server/server/daemon-provider-settings.d.ts.map +1 -1
- package/dist/server/server/daemon-provider-settings.js +27 -83
- package/dist/server/server/daemon-provider-settings.js.map +1 -1
- package/dist/server/server/provider-command-resolution.d.ts +33 -0
- package/dist/server/server/provider-command-resolution.d.ts.map +1 -0
- package/dist/server/server/provider-command-resolution.js +198 -0
- package/dist/server/server/provider-command-resolution.js.map +1 -0
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-doctor.d.ts","sourceRoot":"","sources":["../../../src/server/daemon-doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAM9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,
|
|
1
|
+
{"version":3,"file":"daemon-doctor.d.ts","sourceRoot":"","sources":["../../../src/server/daemon-doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAM9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EACL,iCAAiC,EACjC,yBAAyB,EAC1B,MAAM,8CAA8C,CAAC;AAQtD,OAAO,EAEL,0BAA0B,EAE1B,KAAK,qBAAqB,EAC3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,yBAAyB,EACzB,4BAA4B,EAE5B,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAG7B,QAAA,MAAM,aAAa,+BAAsB,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE3E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,uBAAuB,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACvC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE;QACR,mBAAmB,CAAC,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;KAC/D,GAAG,IAAI,CAAC;CACV,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,aAAa,CAAC,EAAE,OAAO,aAAa,CAAC;IACrC,yBAAyB,CAAC,EAAE,OAAO,yBAAyB,CAAC;IAC7D,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,iCAAiC,CAAC,EAAE,OAAO,iCAAiC,CAAC;IAC7E,yBAAyB,CAAC,EAAE,OAAO,yBAAyB,CAAC;IAC7D,4BAA4B,CAAC,EAAE,OAAO,4BAA4B,CAAC;IACnE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC5B,CAAC;AAgHF,wBAAsB,eAAe,CACnC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,kBAAkB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAkV7B;AAED,wBAAgB,mCAAmC,CACjD,YAAY,EAAE,MAAM,GACnB,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAE/C"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
|
-
import { existsSync, readdirSync } from "node:fs";
|
|
2
|
+
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
3
3
|
import { homedir, hostname } from "node:os";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { promisify } from "node:util";
|
|
6
|
-
import { detectClaudeThinkingCompatibility } from "./agent/providers/claude-cli-capabilities.js";
|
|
6
|
+
import { detectClaudeThinkingCompatibility, probeClaudeAuthentication, } from "./agent/providers/claude-cli-capabilities.js";
|
|
7
7
|
import { CodexAppServerAgentClient } from "./agent/providers/codex-app-server-agent.js";
|
|
8
8
|
import { assertGeminiAcpSupport } from "./agent/providers/gemini-agent.js";
|
|
9
9
|
import { applyProviderEnv } from "./agent/provider-launch-config.js";
|
|
@@ -21,12 +21,56 @@ function summarizeStatus(checks) {
|
|
|
21
21
|
}
|
|
22
22
|
return "pass";
|
|
23
23
|
}
|
|
24
|
-
function
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
function readClaudeSettingsEnv(configDir) {
|
|
25
|
+
const mergedEnv = {};
|
|
26
|
+
for (const filename of ["settings.json", "settings.local.json"]) {
|
|
27
|
+
const filePath = path.join(configDir, filename);
|
|
28
|
+
if (!existsSync(filePath)) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
const parsed = JSON.parse(readFileSync(filePath, "utf8"));
|
|
33
|
+
if (parsed?.env && typeof parsed.env === "object" && !Array.isArray(parsed.env)) {
|
|
34
|
+
Object.assign(mergedEnv, parsed.env);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Ignore malformed Claude settings files and keep probing other sources.
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return mergedEnv;
|
|
42
|
+
}
|
|
43
|
+
function getClaudeAuthSignals(env) {
|
|
44
|
+
const signals = [];
|
|
45
|
+
if (env.CLAUDE_CODE_OAUTH_TOKEN) {
|
|
46
|
+
signals.push("CLAUDE_CODE_OAUTH_TOKEN");
|
|
47
|
+
}
|
|
48
|
+
if (env.ANTHROPIC_API_KEY) {
|
|
49
|
+
signals.push("ANTHROPIC_API_KEY");
|
|
50
|
+
}
|
|
51
|
+
if (env.ANTHROPIC_AUTH_TOKEN) {
|
|
52
|
+
signals.push("ANTHROPIC_AUTH_TOKEN");
|
|
27
53
|
}
|
|
28
54
|
const configDir = env.CLAUDE_CONFIG_DIR ?? path.join(env.HOME ?? homedir(), ".claude");
|
|
29
|
-
|
|
55
|
+
const settingsEnv = readClaudeSettingsEnv(configDir);
|
|
56
|
+
if (typeof settingsEnv.ANTHROPIC_API_KEY === "string" && settingsEnv.ANTHROPIC_API_KEY.trim()) {
|
|
57
|
+
signals.push("settings.json env ANTHROPIC_API_KEY");
|
|
58
|
+
}
|
|
59
|
+
if (typeof settingsEnv.ANTHROPIC_AUTH_TOKEN === "string" &&
|
|
60
|
+
settingsEnv.ANTHROPIC_AUTH_TOKEN.trim()) {
|
|
61
|
+
signals.push("settings.json env ANTHROPIC_AUTH_TOKEN");
|
|
62
|
+
}
|
|
63
|
+
if (typeof settingsEnv.CLAUDE_CODE_OAUTH_TOKEN === "string" &&
|
|
64
|
+
settingsEnv.CLAUDE_CODE_OAUTH_TOKEN.trim()) {
|
|
65
|
+
signals.push("settings.json env CLAUDE_CODE_OAUTH_TOKEN");
|
|
66
|
+
}
|
|
67
|
+
if (existsSync(path.join(configDir, ".credentials.json"))) {
|
|
68
|
+
signals.push(".claude/.credentials.json");
|
|
69
|
+
}
|
|
70
|
+
if (existsSync(path.join(configDir, "credentials.json"))) {
|
|
71
|
+
signals.push(".claude/credentials.json");
|
|
72
|
+
}
|
|
73
|
+
return [...new Set(signals)];
|
|
30
74
|
}
|
|
31
75
|
function hasGeminiAuthSignal(env) {
|
|
32
76
|
if (env.GEMINI_API_KEY ||
|
|
@@ -254,20 +298,33 @@ export async function runDaemonDoctor(junctionHome, logger, dependencies) {
|
|
|
254
298
|
compatibilityStatus: compatibilityResult.status,
|
|
255
299
|
},
|
|
256
300
|
}));
|
|
257
|
-
const
|
|
301
|
+
const authSignals = getClaudeAuthSignals(env);
|
|
302
|
+
const authProbe = await (dependencies?.probeClaudeAuthentication ?? probeClaudeAuthentication)({
|
|
303
|
+
claudePath: setting.resolvedPath,
|
|
304
|
+
runtimeSettings,
|
|
305
|
+
logger,
|
|
306
|
+
});
|
|
258
307
|
checks.push(createCheck({
|
|
259
308
|
id: "claude-auth",
|
|
260
309
|
title: "Claude authentication",
|
|
261
|
-
status:
|
|
310
|
+
status: authProbe.authenticated ? "pass" : "warn",
|
|
262
311
|
provider: "claude",
|
|
263
|
-
message:
|
|
264
|
-
?
|
|
265
|
-
|
|
312
|
+
message: authProbe.authenticated
|
|
313
|
+
? authProbe.accountEmail
|
|
314
|
+
? `Claude authenticated as ${authProbe.accountEmail}.`
|
|
315
|
+
: authProbe.subscriptionType
|
|
316
|
+
? `Claude authentication verified via control probe (${authProbe.subscriptionType}).`
|
|
317
|
+
: "Claude authentication verified via a non-billable control probe."
|
|
318
|
+
: authSignals.length > 0
|
|
319
|
+
? `Claude auth hints detected (${authSignals.join(", ")}), but the local control probe could not confirm access${authProbe.error ? `: ${authProbe.error}` : "."}`
|
|
320
|
+
: "Claude binary is installed, but auth could not be verified with a local control probe.",
|
|
266
321
|
configuredPath: setting.executablePath,
|
|
267
322
|
resolvedPath: setting.resolvedPath,
|
|
268
|
-
remediation:
|
|
323
|
+
remediation: authProbe.authenticated
|
|
269
324
|
? null
|
|
270
|
-
:
|
|
325
|
+
: authSignals.length > 0
|
|
326
|
+
? "Verify the selected Claude account and executable path on the daemon."
|
|
327
|
+
: "Authenticate Claude CLI on the daemon or set a manual executable path.",
|
|
271
328
|
}));
|
|
272
329
|
continue;
|
|
273
330
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-doctor.js","sourceRoot":"","sources":["../../../src/server/daemon-doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"daemon-doctor.js","sourceRoot":"","sources":["../../../src/server/daemon-doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { type PersistedConfig } from "./persisted-config.js";
|
|
2
|
+
import { type ResolveCommandPathOptions } from "./provider-command-resolution.js";
|
|
3
|
+
export { resolveCommandPath } from "./provider-command-resolution.js";
|
|
2
4
|
export declare const MANAGED_DAEMON_PROVIDERS: readonly ["claude", "codex", "gemini"];
|
|
3
5
|
export type ManagedDaemonProvider = (typeof MANAGED_DAEMON_PROVIDERS)[number];
|
|
4
6
|
export type DaemonProviderCommandSource = "system" | "manual" | "custom";
|
|
@@ -14,14 +16,7 @@ export type DaemonProviderSettingsSnapshot = {
|
|
|
14
16
|
rootDir: string;
|
|
15
17
|
providers: Record<ManagedDaemonProvider, DaemonProviderSetting>;
|
|
16
18
|
};
|
|
17
|
-
type
|
|
18
|
-
env?: NodeJS.ProcessEnv;
|
|
19
|
-
platform?: NodeJS.Platform;
|
|
20
|
-
};
|
|
21
|
-
type AutoRouteOptions = ResolveCommandPathOptions & {
|
|
22
|
-
loginShell?: string | null;
|
|
23
|
-
};
|
|
24
|
-
export declare function resolveCommandPath(command: string, options?: ResolveCommandPathOptions): string | null;
|
|
19
|
+
type AutoRouteOptions = ResolveCommandPathOptions;
|
|
25
20
|
export declare function autoRouteProviderExecutable(provider: ManagedDaemonProvider, options?: AutoRouteOptions): string | null;
|
|
26
21
|
export declare function buildDaemonProviderSettingsSnapshot(config: PersistedConfig, options?: {
|
|
27
22
|
env?: NodeJS.ProcessEnv;
|
|
@@ -38,5 +33,4 @@ export declare function saveDaemonProviderExecutablePath(input: {
|
|
|
38
33
|
provider: ManagedDaemonProvider;
|
|
39
34
|
executablePath: string | null;
|
|
40
35
|
}): DaemonProviderSettingsSnapshot;
|
|
41
|
-
export {};
|
|
42
36
|
//# sourceMappingURL=daemon-provider-settings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-provider-settings.d.ts","sourceRoot":"","sources":["../../../src/server/daemon-provider-settings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"daemon-provider-settings.d.ts","sourceRoot":"","sources":["../../../src/server/daemon-provider-settings.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,eAAO,MAAM,wBAAwB,wCAAyC,CAAC;AAE/E,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9E,MAAM,MAAM,2BAA2B,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzE,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,MAAM,EAAE,2BAA2B,CAAC;IACpC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAC;CACjE,CAAC;AAEF,KAAK,gBAAgB,GAAG,yBAAyB,CAAC;AAyClD,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,GAAG,IAAI,CAMf;AAoDD,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE;IACR,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC5B,GACA,8BAA8B,CAsChC;AAED,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IACR,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC5B,GACA,8BAA8B,CAGhC;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,GAAG,8BAA8B,CAqCjC"}
|
|
@@ -1,100 +1,42 @@
|
|
|
1
|
-
import { execFileSync, spawnSync } from "node:child_process";
|
|
2
|
-
import { existsSync, realpathSync } from "node:fs";
|
|
3
1
|
import { homedir } from "node:os";
|
|
4
2
|
import path from "node:path";
|
|
5
3
|
import { loadPersistedConfig, savePersistedConfig, } from "./persisted-config.js";
|
|
6
4
|
import { applyProviderEnv, } from "./agent/provider-launch-config.js";
|
|
5
|
+
import { resolveCommandPathWithFallback, } from "./provider-command-resolution.js";
|
|
6
|
+
export { resolveCommandPath } from "./provider-command-resolution.js";
|
|
7
7
|
export const MANAGED_DAEMON_PROVIDERS = ["claude", "codex", "gemini"];
|
|
8
8
|
function commandNameForProvider(provider) {
|
|
9
9
|
return provider;
|
|
10
10
|
}
|
|
11
|
-
function
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
try {
|
|
19
|
-
if (!existsSync(command)) {
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
return realpathSync(command);
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
function resolveViaSystemLookup(command, options) {
|
|
29
|
-
const env = options?.env ?? process.env;
|
|
30
|
-
const platform = options?.platform ?? process.platform;
|
|
31
|
-
const lookupCommand = platform === "win32" ? "where" : "which";
|
|
32
|
-
try {
|
|
33
|
-
const stdout = execFileSync(lookupCommand, [command], {
|
|
34
|
-
encoding: "utf8",
|
|
35
|
-
env,
|
|
36
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
37
|
-
}).trim();
|
|
38
|
-
const first = stdout
|
|
39
|
-
.split(/\r?\n/)
|
|
40
|
-
.map((value) => value.trim())
|
|
41
|
-
.find((value) => value.length > 0);
|
|
42
|
-
if (!first) {
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
return normalizeExistingPath(first) ?? first;
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
export function resolveCommandPath(command, options) {
|
|
52
|
-
const trimmed = command.trim();
|
|
53
|
-
if (!trimmed) {
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
const existing = normalizeExistingPath(trimmed);
|
|
57
|
-
if (existing) {
|
|
58
|
-
return existing;
|
|
59
|
-
}
|
|
60
|
-
return resolveViaSystemLookup(trimmed, options);
|
|
11
|
+
function isProviderExecutableToken(provider, value) {
|
|
12
|
+
const basename = path.basename(value.trim()).toLowerCase();
|
|
13
|
+
return (basename === provider ||
|
|
14
|
+
basename === `${provider}.exe` ||
|
|
15
|
+
basename === `${provider}.cmd` ||
|
|
16
|
+
basename === `${provider}.bat`);
|
|
61
17
|
}
|
|
62
|
-
function
|
|
63
|
-
const
|
|
64
|
-
if (
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
|
-
const shell = options?.loginShell ?? process.env.SHELL ?? null;
|
|
68
|
-
if (!shell || !existsSync(shell)) {
|
|
18
|
+
function resolveConfiguredExecutablePath(provider, runtimeSettings) {
|
|
19
|
+
const command = runtimeSettings?.command;
|
|
20
|
+
if (!command || command.mode === "default" || command.mode === "append") {
|
|
69
21
|
return null;
|
|
70
22
|
}
|
|
71
|
-
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
76
|
-
});
|
|
77
|
-
const stdout = result.stdout?.trim();
|
|
78
|
-
if (!stdout) {
|
|
79
|
-
return null;
|
|
23
|
+
for (let index = command.argv.length - 1; index >= 0; index -= 1) {
|
|
24
|
+
const candidate = command.argv[index]?.trim();
|
|
25
|
+
if (!candidate) {
|
|
26
|
+
continue;
|
|
80
27
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
.map((value) => value.trim())
|
|
84
|
-
.find((value) => value.length > 0);
|
|
85
|
-
if (!first) {
|
|
86
|
-
return null;
|
|
28
|
+
if (isProviderExecutableToken(provider, candidate)) {
|
|
29
|
+
return candidate;
|
|
87
30
|
}
|
|
88
|
-
return normalizeExistingPath(first) ?? first;
|
|
89
|
-
}
|
|
90
|
-
catch {
|
|
91
|
-
return null;
|
|
92
31
|
}
|
|
32
|
+
return command.argv[0] ?? null;
|
|
93
33
|
}
|
|
94
34
|
export function autoRouteProviderExecutable(provider, options) {
|
|
95
35
|
const command = commandNameForProvider(provider);
|
|
96
|
-
return (
|
|
97
|
-
|
|
36
|
+
return resolveCommandPathWithFallback(command, {
|
|
37
|
+
...options,
|
|
38
|
+
loginShell: options?.loginShell ?? options?.env?.SHELL ?? process.env.SHELL ?? null,
|
|
39
|
+
});
|
|
98
40
|
}
|
|
99
41
|
function summarizeCommand(provider, runtimeSettings) {
|
|
100
42
|
const command = runtimeSettings?.command;
|
|
@@ -106,16 +48,17 @@ function summarizeCommand(provider, runtimeSettings) {
|
|
|
106
48
|
};
|
|
107
49
|
}
|
|
108
50
|
if (command.mode === "replace") {
|
|
51
|
+
const executablePath = resolveConfiguredExecutablePath(provider, runtimeSettings);
|
|
109
52
|
if (command.argv.length === 1) {
|
|
110
53
|
return {
|
|
111
54
|
source: "manual",
|
|
112
|
-
executablePath
|
|
55
|
+
executablePath,
|
|
113
56
|
commandSummary: command.argv[0] ?? null,
|
|
114
57
|
};
|
|
115
58
|
}
|
|
116
59
|
return {
|
|
117
60
|
source: "custom",
|
|
118
|
-
executablePath
|
|
61
|
+
executablePath,
|
|
119
62
|
commandSummary: command.argv.join(" "),
|
|
120
63
|
};
|
|
121
64
|
}
|
|
@@ -144,9 +87,10 @@ export function buildDaemonProviderSettingsSnapshot(config, options) {
|
|
|
144
87
|
platform: options?.platform,
|
|
145
88
|
})
|
|
146
89
|
: summary.executablePath
|
|
147
|
-
?
|
|
90
|
+
? resolveCommandPathWithFallback(summary.executablePath, {
|
|
148
91
|
env,
|
|
149
92
|
platform: options?.platform,
|
|
93
|
+
loginShell: env.SHELL ?? process.env.SHELL ?? null,
|
|
150
94
|
})
|
|
151
95
|
: null;
|
|
152
96
|
const setting = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-provider-settings.js","sourceRoot":"","sources":["../../../src/server/daemon-provider-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"daemon-provider-settings.js","sourceRoot":"","sources":["../../../src/server/daemon-provider-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type ResolveCommandPathOptions = {
|
|
2
|
+
env?: NodeJS.ProcessEnv;
|
|
3
|
+
platform?: NodeJS.Platform;
|
|
4
|
+
loginShell?: string | null;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Resolves a command name or explicit path to an executable path.
|
|
8
|
+
*
|
|
9
|
+
* @param command The command name or path to resolve.
|
|
10
|
+
* @param options Optional environment and platform overrides.
|
|
11
|
+
* @returns The resolved executable path, or `null` when the command is blank,
|
|
12
|
+
* not executable, absent, or lookup fails.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveCommandPath(command: string, options?: Pick<ResolveCommandPathOptions, "env" | "platform">): string | null;
|
|
15
|
+
/**
|
|
16
|
+
* Resolves a command by asking a login shell to run `command -v`.
|
|
17
|
+
*
|
|
18
|
+
* @param command The command name or path to resolve.
|
|
19
|
+
* @param options Optional environment, platform, and login shell overrides.
|
|
20
|
+
* @returns The resolved executable path, or `null` when login-shell lookup is
|
|
21
|
+
* unavailable or fails.
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveCommandPathFromLoginShell(command: string, options?: ResolveCommandPathOptions): string | null;
|
|
24
|
+
/**
|
|
25
|
+
* Resolves a command by trying direct lookup first, then login-shell lookup.
|
|
26
|
+
*
|
|
27
|
+
* @param command The command name or path to resolve.
|
|
28
|
+
* @param options Optional environment, platform, and login shell overrides.
|
|
29
|
+
* @returns The resolved executable path, or `null` when neither lookup finds an
|
|
30
|
+
* executable path.
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveCommandPathWithFallback(command: string, options?: ResolveCommandPathOptions): string | null;
|
|
33
|
+
//# sourceMappingURL=provider-command-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-command-resolution.d.ts","sourceRoot":"","sources":["../../../src/server/provider-command-resolution.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,yBAAyB,GAAG;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAsKF;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,IAAI,CAAC,yBAAyB,EAAE,KAAK,GAAG,UAAU,CAAC,GAC5D,MAAM,GAAG,IAAI,CA2Bf;AAED;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,yBAAyB,GAClC,MAAM,GAAG,IAAI,CAgCf;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,yBAAyB,GAClC,MAAM,GAAG,IAAI,CAKf"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { execFileSync, spawnSync } from "node:child_process";
|
|
2
|
+
import { accessSync, constants as fsConstants, existsSync, realpathSync, statSync, } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
const COMMAND_LOOKUP_TIMEOUT_MS = 5000;
|
|
5
|
+
const COMMAND_LOOKUP_MAX_BUFFER_BYTES = 1024 * 1024;
|
|
6
|
+
const DEFAULT_WINDOWS_PATHEXT = ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC";
|
|
7
|
+
function isWindowsExecutablePath(command, env) {
|
|
8
|
+
const extension = path.extname(command).trim().toUpperCase();
|
|
9
|
+
if (!extension) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
const pathExt = (env.PATHEXT ?? DEFAULT_WINDOWS_PATHEXT)
|
|
13
|
+
.split(";")
|
|
14
|
+
.map((value) => value.trim().toUpperCase())
|
|
15
|
+
.filter((value) => value.length > 0);
|
|
16
|
+
return pathExt.includes(extension);
|
|
17
|
+
}
|
|
18
|
+
function normalizeExistingPath(command, options) {
|
|
19
|
+
if (!command.trim()) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
if (!command.includes("/") && !command.includes("\\")) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
if (!existsSync(command)) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const stats = statSync(command);
|
|
30
|
+
if (!stats.isFile()) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
const platform = options?.platform ?? process.platform;
|
|
34
|
+
if (platform === "win32") {
|
|
35
|
+
if (!isWindowsExecutablePath(command, options?.env ?? process.env)) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
accessSync(command, fsConstants.X_OK);
|
|
41
|
+
}
|
|
42
|
+
return realpathSync(command);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function normalizeExecutableName(value, options) {
|
|
49
|
+
const trimmed = value.trim();
|
|
50
|
+
if (!trimmed) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const basename = path.basename(trimmed);
|
|
54
|
+
if (!basename) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
const platform = options?.platform ?? process.platform;
|
|
58
|
+
if (platform !== "win32") {
|
|
59
|
+
return basename;
|
|
60
|
+
}
|
|
61
|
+
const upperBasename = basename.toUpperCase();
|
|
62
|
+
const pathExt = (options?.env?.PATHEXT ?? process.env.PATHEXT ?? DEFAULT_WINDOWS_PATHEXT)
|
|
63
|
+
.split(";")
|
|
64
|
+
.map((value) => value.trim().toUpperCase())
|
|
65
|
+
.filter((value) => value.length > 0)
|
|
66
|
+
.sort((left, right) => right.length - left.length);
|
|
67
|
+
for (const extension of pathExt) {
|
|
68
|
+
if (upperBasename.endsWith(extension)) {
|
|
69
|
+
return upperBasename.slice(0, upperBasename.length - extension.length);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return upperBasename;
|
|
73
|
+
}
|
|
74
|
+
function matchesRequestedCommand(candidatePath, requestedCommand, options) {
|
|
75
|
+
const requestedName = normalizeExecutableName(requestedCommand, options);
|
|
76
|
+
const candidateName = normalizeExecutableName(candidatePath, options);
|
|
77
|
+
if (!requestedName || !candidateName) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
return requestedName === candidateName;
|
|
81
|
+
}
|
|
82
|
+
function extractExecutablePathFromLine(line, requestedCommand, options) {
|
|
83
|
+
const trimmed = line.trim();
|
|
84
|
+
if (!trimmed) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
const directPath = normalizeExistingPath(trimmed, options);
|
|
88
|
+
if (directPath &&
|
|
89
|
+
(matchesRequestedCommand(trimmed, requestedCommand, options) ||
|
|
90
|
+
matchesRequestedCommand(directPath, requestedCommand, options))) {
|
|
91
|
+
return directPath;
|
|
92
|
+
}
|
|
93
|
+
const typedPathMatch = trimmed.match(/^[^\s]+\s+is\s+(.+)$/i);
|
|
94
|
+
if (!typedPathMatch?.[1]) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
const resolvedPath = normalizeExistingPath(typedPathMatch[1].trim(), options);
|
|
98
|
+
if (resolvedPath &&
|
|
99
|
+
(matchesRequestedCommand(typedPathMatch[1], requestedCommand, options) ||
|
|
100
|
+
matchesRequestedCommand(resolvedPath, requestedCommand, options))) {
|
|
101
|
+
return resolvedPath;
|
|
102
|
+
}
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
function resolveExecutablePathFromOutput(output, requestedCommand, options) {
|
|
106
|
+
for (const line of output.split(/\r?\n/)) {
|
|
107
|
+
const resolvedPath = extractExecutablePathFromLine(line, requestedCommand, options);
|
|
108
|
+
if (resolvedPath) {
|
|
109
|
+
return resolvedPath;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
function escapeShellLookupArgument(value) {
|
|
115
|
+
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Resolves a command name or explicit path to an executable path.
|
|
119
|
+
*
|
|
120
|
+
* @param command The command name or path to resolve.
|
|
121
|
+
* @param options Optional environment and platform overrides.
|
|
122
|
+
* @returns The resolved executable path, or `null` when the command is blank,
|
|
123
|
+
* not executable, absent, or lookup fails.
|
|
124
|
+
*/
|
|
125
|
+
export function resolveCommandPath(command, options) {
|
|
126
|
+
const trimmed = command.trim();
|
|
127
|
+
if (!trimmed) {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
const existing = normalizeExistingPath(trimmed, options);
|
|
131
|
+
if (existing) {
|
|
132
|
+
return existing;
|
|
133
|
+
}
|
|
134
|
+
const env = options?.env ?? process.env;
|
|
135
|
+
const platform = options?.platform ?? process.platform;
|
|
136
|
+
const lookupCommand = platform === "win32" ? "where" : "which";
|
|
137
|
+
try {
|
|
138
|
+
const stdout = execFileSync(lookupCommand, [trimmed], {
|
|
139
|
+
encoding: "utf8",
|
|
140
|
+
env,
|
|
141
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
142
|
+
timeout: COMMAND_LOOKUP_TIMEOUT_MS,
|
|
143
|
+
maxBuffer: COMMAND_LOOKUP_MAX_BUFFER_BYTES,
|
|
144
|
+
});
|
|
145
|
+
return resolveExecutablePathFromOutput(stdout, trimmed, options);
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Resolves a command by asking a login shell to run `command -v`.
|
|
153
|
+
*
|
|
154
|
+
* @param command The command name or path to resolve.
|
|
155
|
+
* @param options Optional environment, platform, and login shell overrides.
|
|
156
|
+
* @returns The resolved executable path, or `null` when login-shell lookup is
|
|
157
|
+
* unavailable or fails.
|
|
158
|
+
*/
|
|
159
|
+
export function resolveCommandPathFromLoginShell(command, options) {
|
|
160
|
+
const trimmed = command.trim();
|
|
161
|
+
if (!trimmed) {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
const platform = options?.platform ?? process.platform;
|
|
165
|
+
if (platform === "win32") {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
const shell = options?.loginShell ?? options?.env?.SHELL ?? process.env.SHELL ?? null;
|
|
169
|
+
if (!shell || !existsSync(shell)) {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
try {
|
|
173
|
+
const result = spawnSync(shell, ["-lic", `command -v ${escapeShellLookupArgument(trimmed)}`], {
|
|
174
|
+
encoding: "utf8",
|
|
175
|
+
env: options?.env ?? process.env,
|
|
176
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
177
|
+
timeout: COMMAND_LOOKUP_TIMEOUT_MS,
|
|
178
|
+
maxBuffer: COMMAND_LOOKUP_MAX_BUFFER_BYTES,
|
|
179
|
+
});
|
|
180
|
+
return resolveExecutablePathFromOutput(result.stdout ?? "", trimmed, options);
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Resolves a command by trying direct lookup first, then login-shell lookup.
|
|
188
|
+
*
|
|
189
|
+
* @param command The command name or path to resolve.
|
|
190
|
+
* @param options Optional environment, platform, and login shell overrides.
|
|
191
|
+
* @returns The resolved executable path, or `null` when neither lookup finds an
|
|
192
|
+
* executable path.
|
|
193
|
+
*/
|
|
194
|
+
export function resolveCommandPathWithFallback(command, options) {
|
|
195
|
+
return (resolveCommandPath(command, options) ??
|
|
196
|
+
resolveCommandPathFromLoginShell(command, options));
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=provider-command-resolution.js.map
|