@junctionpanel/server 0.1.57 → 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.
Files changed (37) hide show
  1. package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -1
  2. package/dist/server/server/agent/provider-launch-config.js +6 -39
  3. package/dist/server/server/agent/provider-launch-config.js.map +1 -1
  4. package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
  5. package/dist/server/server/agent/providers/claude-agent.js +40 -15
  6. package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
  7. package/dist/server/server/agent/providers/claude-cli-capabilities.d.ts +39 -2
  8. package/dist/server/server/agent/providers/claude-cli-capabilities.d.ts.map +1 -1
  9. package/dist/server/server/agent/providers/claude-cli-capabilities.js +88 -23
  10. package/dist/server/server/agent/providers/claude-cli-capabilities.js.map +1 -1
  11. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  12. package/dist/server/server/agent/providers/codex-app-server-agent.js +14 -13
  13. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  14. package/dist/server/server/agent/providers/gemini-agent.d.ts +1 -0
  15. package/dist/server/server/agent/providers/gemini-agent.d.ts.map +1 -1
  16. package/dist/server/server/agent/providers/gemini-agent.js +53 -15
  17. package/dist/server/server/agent/providers/gemini-agent.js.map +1 -1
  18. package/dist/server/server/daemon-doctor.d.ts +2 -1
  19. package/dist/server/server/daemon-doctor.d.ts.map +1 -1
  20. package/dist/server/server/daemon-doctor.js +107 -13
  21. package/dist/server/server/daemon-doctor.js.map +1 -1
  22. package/dist/server/server/daemon-provider-settings.d.ts +3 -9
  23. package/dist/server/server/daemon-provider-settings.d.ts.map +1 -1
  24. package/dist/server/server/daemon-provider-settings.js +27 -83
  25. package/dist/server/server/daemon-provider-settings.js.map +1 -1
  26. package/dist/server/server/provider-command-resolution.d.ts +33 -0
  27. package/dist/server/server/provider-command-resolution.d.ts.map +1 -0
  28. package/dist/server/server/provider-command-resolution.js +198 -0
  29. package/dist/server/server/provider-command-resolution.js.map +1 -0
  30. package/dist/server/server/session.d.ts +13 -0
  31. package/dist/server/server/session.d.ts.map +1 -1
  32. package/dist/server/server/session.js +53 -3
  33. package/dist/server/server/session.js.map +1 -1
  34. package/dist/server/server/websocket-server.d.ts.map +1 -1
  35. package/dist/server/server/websocket-server.js +14 -2
  36. package/dist/server/server/websocket-server.js.map +1 -1
  37. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"provider-launch-config.d.ts","sourceRoot":"","sources":["../../../../src/server/agent/provider-launch-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAuB1D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;IAIhC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK/B,CAAC;AAEZ,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGjD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,+BAA+B,GAAG,OAAO,CACnD,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAC/C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,eAAe,GAAG,SAAS,EAC1C,qBAAqB,EAAE,MAAM,MAAM,GAClC,qBAAqB,CAmBvB;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC3C,eAAe,CAAC,EAAE,uBAAuB,GACxC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAKpC;AAmCD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAoBT;AAED,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,eAAe,GAAG,SAAS,EAC1C,qBAAqB,EAAE,MAAM,MAAM,EACnC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAOT"}
1
+ {"version":3,"file":"provider-launch-config.d.ts","sourceRoot":"","sources":["../../../../src/server/agent/provider-launch-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAwB1D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;IAIhC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK/B,CAAC;AAEZ,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGjD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,+BAA+B,GAAG,OAAO,CACnD,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAC/C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,eAAe,GAAG,SAAS,EAC1C,qBAAqB,EAAE,MAAM,MAAM,GAClC,qBAAqB,CAmBvB;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC3C,eAAe,CAAC,EAAE,uBAAuB,GACxC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAKpC;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAaT;AAED,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,eAAe,GAAG,SAAS,EAC1C,qBAAqB,EAAE,MAAM,MAAM,EACnC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAOT"}
@@ -1,7 +1,6 @@
1
- import { execFileSync } from "node:child_process";
2
- import { existsSync } from "node:fs";
3
1
  import { z } from "zod";
4
2
  import { AgentProviderSchema } from "./provider-manifest.js";
3
+ import { resolveCommandPathWithFallback } from "../provider-command-resolution.js";
5
4
  const ProviderCommandDefaultSchema = z
6
5
  .object({
7
6
  mode: z.literal("default"),
@@ -55,48 +54,16 @@ export function applyProviderEnv(baseEnv, runtimeSettings) {
55
54
  ...(runtimeSettings?.env ?? {}),
56
55
  };
57
56
  }
58
- function escapeShellArgument(value) {
59
- return `'${value.replace(/'/g, `'\\''`)}'`;
60
- }
61
- function isCommandAvailableViaLoginShell(command, env) {
62
- if (process.platform === "win32") {
63
- return false;
64
- }
65
- const shell = env.SHELL ?? process.env.SHELL;
66
- if (!shell || !existsSync(shell)) {
67
- return false;
68
- }
69
- try {
70
- const output = execFileSync(shell, ["-lic", `command -v ${escapeShellArgument(command)}`], {
71
- encoding: "utf8",
72
- env,
73
- stdio: ["ignore", "pipe", "ignore"],
74
- }).trim();
75
- return output.length > 0;
76
- }
77
- catch {
78
- return false;
79
- }
80
- }
81
57
  export function isCommandAvailable(command, env = process.env) {
82
58
  const normalized = command.trim();
83
59
  if (!normalized) {
84
60
  return false;
85
61
  }
86
- if (normalized.includes("/") || normalized.includes("\\")) {
87
- return existsSync(normalized);
88
- }
89
- try {
90
- const output = execFileSync("which", [normalized], {
91
- encoding: "utf8",
92
- env,
93
- stdio: ["ignore", "pipe", "ignore"],
94
- }).trim();
95
- return output.length > 0;
96
- }
97
- catch {
98
- return isCommandAvailableViaLoginShell(normalized, env);
99
- }
62
+ return (resolveCommandPathWithFallback(normalized, {
63
+ env,
64
+ platform: process.platform,
65
+ loginShell: env.SHELL ?? process.env.SHELL ?? null,
66
+ }) !== null);
100
67
  }
101
68
  export function isProviderCommandAvailable(commandConfig, resolveDefaultCommand, env = process.env) {
102
69
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"provider-launch-config.js","sourceRoot":"","sources":["../../../../src/server/agent/provider-launch-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-launch-config.js","sourceRoot":"","sources":["../../../../src/server/agent/provider-launch-config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude-agent.d.ts","sourceRoot":"","sources":["../../../../../src/server/agent/providers/claude-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-agent.d.ts","sourceRoot":"","sources":["../../../../../src/server/agent/providers/claude-agent.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { execSync } from "node:child_process";
2
1
  import { randomUUID } from "node:crypto";
3
2
  import fs from "node:fs";
4
3
  import { promises } from "node:fs";
@@ -11,6 +10,7 @@ import { buildClaudeModelDefinitions, buildClaudeModelFamilyAliases, buildClaude
11
10
  import { applyRuntimeSettingsToClaudeOptions, detectClaudeThinkingCompatibility, fetchClaudeSupportedModels, getClaudeThinkingCompatibilityCacheKey, } from "./claude-cli-capabilities.js";
12
11
  import { buildToolCallDisplayModel } from "../../../shared/tool-call-display.js";
13
12
  import { applyProviderEnv, isProviderCommandAvailable, } from "../provider-launch-config.js";
13
+ import { resolveCommandPathWithFallback } from "../../provider-command-resolution.js";
14
14
  import { getCachedProviderModels } from "../provider-model-cache.js";
15
15
  import { getOrchestratorModeInstructions } from "../orchestrator-instructions.js";
16
16
  const fsPromises = promises;
@@ -217,17 +217,46 @@ const REWIND_COMMAND = {
217
217
  const INTERRUPT_TOOL_USE_PLACEHOLDER = "[Request interrupted by user for tool use]";
218
218
  const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
219
219
  function resolveClaudeBinary() {
220
- try {
221
- const claudePath = execSync("which claude", { encoding: "utf8" }).trim();
222
- if (claudePath) {
223
- return claudePath;
224
- }
225
- }
226
- catch {
227
- // fall through
220
+ const claudePath = resolveCommandPathWithFallback("claude", {
221
+ env: process.env,
222
+ platform: process.platform,
223
+ });
224
+ if (claudePath) {
225
+ return claudePath;
228
226
  }
229
227
  throw new Error("Claude CLI not found. Install claude or configure agents.providers.claude.command.mode='replace'.");
230
228
  }
229
+ function resolveClaudeExecutablePath(runtimeSettings) {
230
+ const env = applyProviderEnv(process.env, runtimeSettings);
231
+ const command = resolveClaudeExecutableCommand(runtimeSettings?.command);
232
+ if (!command) {
233
+ return null;
234
+ }
235
+ return resolveCommandPathWithFallback(command, {
236
+ env,
237
+ platform: process.platform,
238
+ loginShell: env.SHELL ?? process.env.SHELL ?? null,
239
+ });
240
+ }
241
+ function resolveClaudeExecutableCommand(commandConfig) {
242
+ if (!commandConfig || commandConfig.mode === "default" || commandConfig.mode === "append") {
243
+ return "claude";
244
+ }
245
+ for (let index = commandConfig.argv.length - 1; index >= 0; index -= 1) {
246
+ const candidate = commandConfig.argv[index]?.trim();
247
+ if (!candidate) {
248
+ continue;
249
+ }
250
+ const basename = path.basename(candidate).toLowerCase();
251
+ if (basename === "claude" ||
252
+ basename === "claude.exe" ||
253
+ basename === "claude.cmd" ||
254
+ basename === "claude.bat") {
255
+ return candidate;
256
+ }
257
+ }
258
+ return commandConfig.argv[0] ?? null;
259
+ }
231
260
  function summarizeClaudeOptionsForLog(options) {
232
261
  const systemPromptRaw = options.systemPrompt;
233
262
  const systemPromptSummary = (() => {
@@ -981,12 +1010,7 @@ export class ClaudeAgentClient {
981
1010
  this.defaults = options.defaults;
982
1011
  this.logger = options.logger.child({ module: "agent", provider: "claude" });
983
1012
  this.runtimeSettings = options.runtimeSettings;
984
- try {
985
- this.claudePath = execSync("which claude", { encoding: "utf8" }).trim() || null;
986
- }
987
- catch {
988
- this.claudePath = null;
989
- }
1013
+ this.claudePath = resolveClaudeExecutablePath(this.runtimeSettings);
990
1014
  }
991
1015
  async createSession(config) {
992
1016
  const claudeConfig = this.assertConfig(config);
@@ -1910,6 +1934,7 @@ class ClaudeAgentSession {
1910
1934
  return;
1911
1935
  }
1912
1936
  this.thinkingCompatibility = await detectClaudeThinkingCompatibility({
1937
+ cwd: this.config.cwd,
1913
1938
  claudePath: this.claudePath,
1914
1939
  runtimeSettings: this.runtimeSettings,
1915
1940
  logger: this.logger,