@panorama-ai/gateway 2.25.3 → 2.25.5
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 +2 -1
- package/dist/cli-providers/claude.d.ts.map +1 -1
- package/dist/cli-providers/claude.js +1 -42
- package/dist/cli-providers/claude.js.map +1 -1
- package/dist/cli-providers/codex.d.ts.map +1 -1
- package/dist/cli-providers/codex.js +4 -2
- package/dist/cli-providers/codex.js.map +1 -1
- package/dist/cli-providers/gemini.d.ts.map +1 -1
- package/dist/cli-providers/gemini.js +3 -0
- package/dist/cli-providers/gemini.js.map +1 -1
- package/dist/index.js +59 -99
- package/dist/index.js.map +1 -1
- package/dist/runtime-paths.d.ts +0 -2
- package/dist/runtime-paths.d.ts.map +1 -1
- package/dist/runtime-paths.js +0 -12
- package/dist/runtime-paths.js.map +1 -1
- package/dist/subagent-adapters/claude-code.d.ts.map +1 -1
- package/dist/subagent-adapters/claude-code.js +3 -14
- package/dist/subagent-adapters/claude-code.js.map +1 -1
- package/dist/subagent-adapters/claude-support.d.ts +1 -0
- package/dist/subagent-adapters/claude-support.d.ts.map +1 -1
- package/dist/subagent-adapters/claude-support.js +2 -0
- package/dist/subagent-adapters/claude-support.js.map +1 -1
- package/dist/subagent-adapters/codex.d.ts.map +1 -1
- package/dist/subagent-adapters/codex.js +42 -20
- package/dist/subagent-adapters/codex.js.map +1 -1
- package/dist/subagent-adapters/gemini.d.ts.map +1 -1
- package/dist/subagent-adapters/gemini.js +9 -12
- package/dist/subagent-adapters/gemini.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -72,7 +72,6 @@ Optional flags:
|
|
|
72
72
|
- `--claude-cli /path/to/claude`
|
|
73
73
|
- `--codex-cli /path/to/codex`
|
|
74
74
|
- `--gemini-cli /path/to/gemini`
|
|
75
|
-
- `--claude-home /path/to/claude-home`
|
|
76
75
|
- `--no-follow` (show logs without follow)
|
|
77
76
|
|
|
78
77
|
The gateway stores credentials in `~/.panorama/gateway/gateway.json` by default. Override with `--config-path` or `PANORAMA_GATEWAY_CONFIG_PATH`.
|
|
@@ -87,6 +86,8 @@ The gateway expects these values (CLI flags override environment variables):
|
|
|
87
86
|
When `--env` or `PANORAMA_ENV` is provided, the gateway loads `.env.<env>` from the repo root (falls back to `.env` for `local`).
|
|
88
87
|
You can always point to a specific env file with `--env-file`.
|
|
89
88
|
|
|
89
|
+
The gateway runs CLI providers using the current user environment (HOME, PATH, etc.) so it matches what you see when running the CLIs directly.
|
|
90
|
+
|
|
90
91
|
## Auto-Restart on Upgrade
|
|
91
92
|
|
|
92
93
|
The built gateway CLI watches its installed package version and restarts itself when the version changes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/cli-providers/claude.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/cli-providers/claude.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,YAAY,CAAA;AA4EnB,wBAAgB,uBAAuB,IAAI,kBAAkB,CA4F5D"}
|
|
@@ -2,7 +2,6 @@ import { execFile } from 'node:child_process';
|
|
|
2
2
|
import { promisify } from 'node:util';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import fs from 'node:fs/promises';
|
|
6
5
|
import fsSync from 'node:fs';
|
|
7
6
|
import { DEFAULT_MODEL_SENTINEL, } from './types.js';
|
|
8
7
|
import { DEFAULT_CLAUDE_SUPPORT, parseClaudeSupport, toFlagRecord, } from '../subagent-adapters/claude-support.js';
|
|
@@ -17,51 +16,12 @@ function resolveClaudeCommand() {
|
|
|
17
16
|
return override;
|
|
18
17
|
return fsSync.existsSync(DEFAULT_CLAUDE_PATH) ? DEFAULT_CLAUDE_PATH : 'claude';
|
|
19
18
|
}
|
|
20
|
-
function resolveClaudeHomeOverride() {
|
|
21
|
-
const raw = process.env.PANORAMA_CLAUDE_HOME;
|
|
22
|
-
if (raw && raw.trim().length > 0) {
|
|
23
|
-
return path.resolve(raw);
|
|
24
|
-
}
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
async function ensureClaudeGatewayHome() {
|
|
28
|
-
const claudeHome = resolveClaudeHomeOverride();
|
|
29
|
-
if (!claudeHome)
|
|
30
|
-
return;
|
|
31
|
-
await fs.mkdir(claudeHome, { recursive: true });
|
|
32
|
-
await fs.mkdir(path.join(claudeHome, 'xdg', 'config'), { recursive: true });
|
|
33
|
-
await fs.mkdir(path.join(claudeHome, 'xdg', 'cache'), { recursive: true });
|
|
34
|
-
await fs.mkdir(path.join(claudeHome, 'xdg', 'data'), { recursive: true });
|
|
35
|
-
const sourceSessionEnv = path.join(os.homedir(), '.claude', 'session-env');
|
|
36
|
-
const destSessionEnv = path.join(claudeHome, 'session-env');
|
|
37
|
-
try {
|
|
38
|
-
const srcStat = await fs.stat(sourceSessionEnv);
|
|
39
|
-
if (srcStat.isDirectory()) {
|
|
40
|
-
try {
|
|
41
|
-
await fs.stat(destSessionEnv);
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
await fs.cp(sourceSessionEnv, destSessionEnv, { recursive: true });
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
catch {
|
|
49
|
-
// Leave empty; Claude will prompt if needed.
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
19
|
function buildClaudeEnv() {
|
|
53
20
|
const env = { ...process.env };
|
|
54
21
|
const tmpDir = resolveGatewayTmpDir();
|
|
55
22
|
env.TMPDIR = tmpDir;
|
|
56
23
|
env.TMP = tmpDir;
|
|
57
24
|
env.TEMP = tmpDir;
|
|
58
|
-
const claudeHome = resolveClaudeHomeOverride();
|
|
59
|
-
if (claudeHome) {
|
|
60
|
-
env.HOME = claudeHome;
|
|
61
|
-
env.XDG_CONFIG_HOME = path.join(claudeHome, 'xdg', 'config');
|
|
62
|
-
env.XDG_CACHE_HOME = path.join(claudeHome, 'xdg', 'cache');
|
|
63
|
-
env.XDG_DATA_HOME = path.join(claudeHome, 'xdg', 'data');
|
|
64
|
-
}
|
|
65
25
|
return env;
|
|
66
26
|
}
|
|
67
27
|
async function execClaudeHelp() {
|
|
@@ -114,7 +74,6 @@ export function createClaudeCliProvider() {
|
|
|
114
74
|
id: 'claude_code',
|
|
115
75
|
label: 'Claude Code',
|
|
116
76
|
async detectCapabilities() {
|
|
117
|
-
await ensureClaudeGatewayHome();
|
|
118
77
|
const versionInfo = await execClaudeVersion();
|
|
119
78
|
const support = await detectClaudeSupport();
|
|
120
79
|
cachedSupport = support;
|
|
@@ -125,7 +84,7 @@ export function createClaudeCliProvider() {
|
|
|
125
84
|
supported_flags: toFlagRecord(support),
|
|
126
85
|
supports: {
|
|
127
86
|
output_schema: support.jsonSchemaFlag,
|
|
128
|
-
stream_json: support.outputFormatFlag,
|
|
87
|
+
stream_json: support.outputFormatFlag && support.streamJsonFlag,
|
|
129
88
|
tool_disable: support.toolsFlag || support.allowedToolsFlag,
|
|
130
89
|
},
|
|
131
90
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/cli-providers/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/cli-providers/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,EACL,sBAAsB,GAIvB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,GAEb,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1D,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAEzC,MAAM,yBAAyB,GAAG,MAAM,CAAA;AAExC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;AAEjF,SAAS,oBAAoB;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAA;IAC1E,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC7B,OAAO,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAA;AAChF,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,GAAG,GAAsB,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACjD,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAA;IACrC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;IACnB,GAAG,CAAC,GAAG,GAAG,MAAM,CAAA;IAChB,GAAG,CAAC,IAAI,GAAG,MAAM,CAAA;IACjB,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,oBAAoB,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE;YACjF,OAAO,EAAE,yBAAyB;SACnC,CAAC,CAAA;QACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAA;IACjF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAqE,CAAA;QACjF,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAC5C,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAC5C,KAAK,EAAE,GAAG,CAAC,OAAO;SACnB,CAAA;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,oBAAoB,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE;YAC5E,OAAO,EAAE,yBAAyB;SACnC,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QAC3C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAA;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAA8B,CAAA;QAC1C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAA;IACzD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAA;IACnC,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,sBAAsB,CAAA;IAC3C,OAAO,kBAAkB,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;AAC7D,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAc,EAAE,OAAsB;IACvE,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC;IACD,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;IACvC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,IAAI,aAAa,GAAyB,IAAI,CAAA;IAE9C,OAAO;QACL,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,aAAa;QACpB,KAAK,CAAC,kBAAkB;YACtB,MAAM,WAAW,GAAG,MAAM,iBAAiB,EAAE,CAAA;YAC7C,MAAM,OAAO,GAAG,MAAM,mBAAmB,EAAE,CAAA;YAC3C,aAAa,GAAG,OAAO,CAAA;YACvB,OAAO;gBACL,SAAS,EAAE,WAAW,CAAC,EAAE;gBACzB,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,SAAS;gBACzC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK;gBACrD,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC;gBACtC,QAAQ,EAAE;oBACR,aAAa,EAAE,OAAO,CAAC,cAAc;oBACrC,WAAW,EAAE,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,cAAc;oBAC/D,YAAY,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,gBAAgB;iBAC5D;aACF,CAAA;QACH,CAAC;QACD,iBAAiB,CAAC,OAAO;YACvB,MAAM,OAAO,GAAG,aAAa,IAAI,sBAAsB,CAAA;YACvD,MAAM,IAAI,GAAa;gBACrB,SAAS;gBACT,iBAAiB;gBACjB,MAAM;gBACN,eAAe;gBACf,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC;aACnC,CAAA;YAED,IAAI,OAAO,CAAC,KAAK,KAAK,sBAAsB,EAAE,CAAC;gBAC7C,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;YAC7C,CAAC;YAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;YAC1B,CAAC;iBAAM,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;YACjC,CAAC;YAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;YACrC,CAAC;YACD,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;YACvC,CAAC;YACD,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAA;YAC3C,CAAC;YAED,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAExC,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;oBAC7B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;gBAC1D,CAAC;qBAAM,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;oBAC1C,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;gBACjE,CAAC;YACH,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YAEzB,OAAO;gBACL,OAAO,EAAE,oBAAoB,EAAE;gBAC/B,IAAI;gBACJ,GAAG,EAAE,cAAc,EAAE;gBACrB,YAAY,EAAE,MAAM;gBACpB,UAAU,EAAE,aAAa;gBACzB,SAAS,EAAE,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;gBAC3E,KAAK,EAAE;oBACL,OAAO,EAAE,oBAAoB,EAAE;oBAC/B,IAAI;oBACJ,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;iBACpC;aACF,CAAA;QACH,CAAC;QACD,uBAAuB,CAAC,EAAE,MAAM,EAAE;YAChC,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;YAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,+BAA+B,CAAC,CAAA;YAClE,CAAC;YACD,MAAM,UAAU,GAAG,2BAA2B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC7D,OAAO;gBACL,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,GAAG,EAAE,MAAM,CAAC,MAAM;gBAClB,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,KAAK,EAAE,UAAU,CAAC,KAAK;aACxB,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/cli-providers/codex.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/cli-providers/codex.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,YAAY,CAAA;AA0InB,wBAAgB,sBAAsB,IAAI,kBAAkB,CAoH3D"}
|
|
@@ -23,6 +23,7 @@ async function execCodexHelp() {
|
|
|
23
23
|
try {
|
|
24
24
|
const { stdout, stderr } = await execFileAsync(resolveCodexCommand(), ['exec', '--help'], {
|
|
25
25
|
timeout: DEFAULT_CODEX_TIMEOUT_MS,
|
|
26
|
+
env: buildCodexEnv(),
|
|
26
27
|
});
|
|
27
28
|
return { ok: true, stdout: String(stdout ?? ''), stderr: String(stderr ?? '') };
|
|
28
29
|
}
|
|
@@ -40,6 +41,7 @@ async function execCodexVersion() {
|
|
|
40
41
|
try {
|
|
41
42
|
const { stdout } = await execFileAsync(resolveCodexCommand(), ['--version'], {
|
|
42
43
|
timeout: DEFAULT_CODEX_TIMEOUT_MS,
|
|
44
|
+
env: buildCodexEnv(),
|
|
43
45
|
});
|
|
44
46
|
const version = String(stdout ?? '').trim();
|
|
45
47
|
return { ok: true, version: version || null };
|
|
@@ -135,8 +137,8 @@ export function createCodexCliProvider() {
|
|
|
135
137
|
return normalizeCodexToolSchema(schema);
|
|
136
138
|
},
|
|
137
139
|
async detectCapabilities() {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
+
let versionInfo = await execCodexVersion();
|
|
141
|
+
let helpInfo = await execCodexHelp();
|
|
140
142
|
if (helpInfo.ok) {
|
|
141
143
|
cachedFlags = parseHelpFlags(`${helpInfo.stdout}\n${helpInfo.stderr}`);
|
|
142
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/cli-providers/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,EACL,sBAAsB,GAIvB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1D,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAEzC,MAAM,wBAAwB,GAAG,MAAM,CAAA;AAEvC,MAAM,kBAAkB,GAAG,OAAO,CAAA;AAElC,SAAS,mBAAmB;IAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,kBAAkB,CAAA;AACtF,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,GAAG,GAAsB,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACjD,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAA;IACrC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;IACnB,GAAG,CAAC,GAAG,GAAG,MAAM,CAAA;IAChB,GAAG,CAAC,IAAI,GAAG,MAAM,CAAA;IACjB,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,mBAAmB,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;YACxF,OAAO,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/cli-providers/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/cli-providers/gemini.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/cli-providers/gemini.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,YAAY,CAAA;AAmHnB,wBAAgB,uBAAuB,IAAI,kBAAkB,CAoF5D"}
|
|
@@ -24,6 +24,7 @@ async function execGeminiHelp() {
|
|
|
24
24
|
try {
|
|
25
25
|
const { stdout, stderr } = await execFileAsync(resolveGeminiCommand(), ['--help'], {
|
|
26
26
|
timeout: DEFAULT_GEMINI_TIMEOUT_MS,
|
|
27
|
+
env: buildGeminiEnv(),
|
|
27
28
|
});
|
|
28
29
|
return { ok: true, stdout: String(stdout ?? ''), stderr: String(stderr ?? '') };
|
|
29
30
|
}
|
|
@@ -41,6 +42,7 @@ async function execGeminiVersion() {
|
|
|
41
42
|
try {
|
|
42
43
|
const { stdout } = await execFileAsync(resolveGeminiCommand(), ['--version'], {
|
|
43
44
|
timeout: DEFAULT_GEMINI_TIMEOUT_MS,
|
|
45
|
+
env: buildGeminiEnv(),
|
|
44
46
|
});
|
|
45
47
|
const version = String(stdout ?? '').trim();
|
|
46
48
|
return { ok: true, version: version || null };
|
|
@@ -54,6 +56,7 @@ async function execGeminiExtensions() {
|
|
|
54
56
|
try {
|
|
55
57
|
const { stdout } = await execFileAsync(resolveGeminiCommand(), ['--list-extensions'], {
|
|
56
58
|
timeout: DEFAULT_GEMINI_TIMEOUT_MS,
|
|
59
|
+
env: buildGeminiEnv(),
|
|
57
60
|
});
|
|
58
61
|
const lines = String(stdout ?? '')
|
|
59
62
|
.split(/\r?\n/)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/cli-providers/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EACL,sBAAsB,GAIvB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1D,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAEzC,MAAM,yBAAyB,GAAG,MAAM,CAAA;AAExC,MAAM,mBAAmB,GAAG,QAAQ,CAAA;AAEpC,SAAS,oBAAoB;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,mBAAmB,CAAA;AACzF,CAAC;AAED,SAAS,cAAc,CAAC,gBAAyB;IAC/C,MAAM,GAAG,GAAsB,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACjD,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAA;IACrC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;IACnB,GAAG,CAAC,GAAG,GAAG,MAAM,CAAA;IAChB,GAAG,CAAC,IAAI,GAAG,MAAM,CAAA;IACjB,IAAI,gBAAgB,EAAE,CAAC;QACrB,GAAG,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;IACzC,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,oBAAoB,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE;YACjF,OAAO,EAAE,yBAAyB;
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/cli-providers/gemini.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -16,7 +16,7 @@ import { getSubagentAdapter } from './subagent-adapters/registry.js';
|
|
|
16
16
|
import { SUBAGENT_SCHEMA_VERSION, } from './subagent-adapters/types.js';
|
|
17
17
|
import { listGatewayCliProviders, getGatewayCliProvider, inferGatewayProviderFromModel } from './cli-providers/registry.js';
|
|
18
18
|
import { DEFAULT_MODEL_SENTINEL } from './cli-providers/types.js';
|
|
19
|
-
import { resolveGatewayConfigDir, resolveGatewayConfigPath, resolveGatewayLogPath, resolveGatewayPidPath,
|
|
19
|
+
import { resolveGatewayConfigDir, resolveGatewayConfigPath, resolveGatewayLogPath, resolveGatewayPidPath, resolveGatewayTmpDir, resolveModelWorkdirRoot, resolveSubagentWorkdirRoot as resolveSubagentWorkdirRootBase, resolveValidationWorkdirRoot, } from './runtime-paths.js';
|
|
20
20
|
const execFileAsync = promisify(execFile);
|
|
21
21
|
const DEFAULT_HEARTBEAT_INTERVAL_MS = 30_000;
|
|
22
22
|
const DEFAULT_CLAUDE_TIMEOUT_MS = 10_000;
|
|
@@ -105,7 +105,7 @@ function parseArgs(argv) {
|
|
|
105
105
|
return { command, positional, options };
|
|
106
106
|
}
|
|
107
107
|
function printHelp() {
|
|
108
|
-
console.log(`\nPanorama Gateway\n\nUsage:\n panorama-gateway pair <PAIRING_CODE> [--device-name \"My Mac\"] [--supabase-url URL] [--anon-key KEY]\n panorama-gateway start [--device-name \"My Mac\"] [--foreground|--daemon]\n panorama-gateway stop\n panorama-gateway status\n panorama-gateway logs [--lines 200] [--no-follow]\n panorama-gateway doctor\n\nNotes:\n Pair automatically starts the gateway when possible.\n Start runs in the background by default for the built CLI. Use --foreground to keep it attached.\n\nOutput options:\n --verbose, -v Show technical details (paths, IDs, PIDs)\n\nEnvironment options:\n --env <local|dev|test|stage|prod> Load .env.<env> from repo root (defaults to .env)\n --env-file <path> Load a specific env file\n PANORAMA_ENV Same as --env\n PANORAMA_ENV_FILE Same as --env-file\n\nCLI overrides:\n --config-dir <path> Override config directory (default: ~/.panorama/gateway)\n --config-path <path> Override gateway config file\n --log-path <path> Override gateway log file\n --pid-path <path> Override gateway pid file\n --claude-cli <path> Override Claude CLI command\n --codex-cli <path> Override Codex CLI command\n --gemini-cli <path> Override Gemini CLI command\n
|
|
108
|
+
console.log(`\nPanorama Gateway\n\nUsage:\n panorama-gateway pair <PAIRING_CODE> [--device-name \"My Mac\"] [--supabase-url URL] [--anon-key KEY]\n panorama-gateway start [--device-name \"My Mac\"] [--foreground|--daemon]\n panorama-gateway stop\n panorama-gateway status\n panorama-gateway logs [--lines 200] [--no-follow]\n panorama-gateway doctor\n\nNotes:\n Pair automatically starts the gateway when possible.\n Start runs in the background by default for the built CLI. Use --foreground to keep it attached.\n\nOutput options:\n --verbose, -v Show technical details (paths, IDs, PIDs)\n\nEnvironment options:\n --env <local|dev|test|stage|prod> Load .env.<env> from repo root (defaults to .env)\n --env-file <path> Load a specific env file\n PANORAMA_ENV Same as --env\n PANORAMA_ENV_FILE Same as --env-file\n\nCLI overrides:\n --config-dir <path> Override config directory (default: ~/.panorama/gateway)\n --config-path <path> Override gateway config file\n --log-path <path> Override gateway log file\n --pid-path <path> Override gateway pid file\n --claude-cli <path> Override Claude CLI command\n --codex-cli <path> Override Codex CLI command\n --gemini-cli <path> Override Gemini CLI command\n\nEnvironment overrides:\n PANORAMA_SUPABASE_URL or SUPABASE_URL\n PANORAMA_SUPABASE_ANON_KEY or SUPABASE_ANON_KEY or SUPABASE_PUBLISHABLE_KEY\n PANORAMA_GATEWAY_CONFIG_DIR\n PANORAMA_GATEWAY_CONFIG_PATH\n PANORAMA_GATEWAY_LOG_PATH\n PANORAMA_GATEWAY_PID_PATH\n PANORAMA_CLAUDE_CLI or CLAUDE_CLI\n PANORAMA_CODEX_CLI or CODEX_CLI\n PANORAMA_GEMINI_CLI or GEMINI_CLI\n PANORAMA_GATEWAY_AUTO_RESTART (default: on for built CLI, off for dev)\n PANORAMA_GATEWAY_RESTART_CHECK_MS (default: 30000)\n PANORAMA_GATEWAY_RESTART_MAX_WAIT_MS (optional)\n`);
|
|
109
109
|
}
|
|
110
110
|
function getStringOption(options, key) {
|
|
111
111
|
const value = options[key];
|
|
@@ -130,7 +130,6 @@ function applyOptionEnvOverrides(options) {
|
|
|
130
130
|
setValue('PANORAMA_CLAUDE_CLI', getStringOption(resolvedOptions, 'claude-cli'));
|
|
131
131
|
setValue('PANORAMA_CODEX_CLI', getStringOption(resolvedOptions, 'codex-cli'));
|
|
132
132
|
setValue('PANORAMA_GEMINI_CLI', getStringOption(resolvedOptions, 'gemini-cli'));
|
|
133
|
-
setValue('PANORAMA_CLAUDE_HOME', getStringOption(resolvedOptions, 'claude-home'));
|
|
134
133
|
}
|
|
135
134
|
function isVerbose(options) {
|
|
136
135
|
const resolvedOptions = getActiveOptions(options);
|
|
@@ -461,14 +460,6 @@ async function getProcessUptime(pid) {
|
|
|
461
460
|
return null;
|
|
462
461
|
}
|
|
463
462
|
}
|
|
464
|
-
function resolveClaudeHomeOverride(options) {
|
|
465
|
-
const resolvedOptions = getActiveOptions(options);
|
|
466
|
-
const raw = getStringOption(resolvedOptions, 'claude-home') || process.env.PANORAMA_CLAUDE_HOME;
|
|
467
|
-
if (raw && raw.trim().length > 0) {
|
|
468
|
-
return path.resolve(raw);
|
|
469
|
-
}
|
|
470
|
-
return null;
|
|
471
|
-
}
|
|
472
463
|
function resolveClaudeCommand(options) {
|
|
473
464
|
const resolvedOptions = getActiveOptions(options);
|
|
474
465
|
const override = getStringOption(resolvedOptions, 'claude-cli') ||
|
|
@@ -652,6 +643,45 @@ async function probeCommandVersion(command) {
|
|
|
652
643
|
return { ok: false, version: null, error: err.message };
|
|
653
644
|
}
|
|
654
645
|
}
|
|
646
|
+
async function probeShellResolution(command) {
|
|
647
|
+
const shell = process.env.SHELL;
|
|
648
|
+
if (!shell)
|
|
649
|
+
return null;
|
|
650
|
+
try {
|
|
651
|
+
const { stdout, stderr } = await execFileAsync(shell, ['-lc', `type -a ${command}`], {
|
|
652
|
+
timeout: 2_000,
|
|
653
|
+
});
|
|
654
|
+
const output = `${stdout ?? ''}\n${stderr ?? ''}`.trim();
|
|
655
|
+
if (!output)
|
|
656
|
+
return null;
|
|
657
|
+
const lines = output
|
|
658
|
+
.split(/\r?\n/)
|
|
659
|
+
.map((line) => line.trim())
|
|
660
|
+
.filter(Boolean);
|
|
661
|
+
for (const line of lines) {
|
|
662
|
+
const lower = line.toLowerCase();
|
|
663
|
+
if (lower.includes('alias')) {
|
|
664
|
+
return { kind: 'alias', detail: line };
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
for (const line of lines) {
|
|
668
|
+
const lower = line.toLowerCase();
|
|
669
|
+
if (lower.includes('function')) {
|
|
670
|
+
return { kind: 'function', detail: line };
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
for (const line of lines) {
|
|
674
|
+
const match = line.match(/\bis\s+(\/\S+)/);
|
|
675
|
+
if (match) {
|
|
676
|
+
return { kind: 'path', detail: line, path: match[1] };
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
catch {
|
|
681
|
+
return null;
|
|
682
|
+
}
|
|
683
|
+
return null;
|
|
684
|
+
}
|
|
655
685
|
async function selectBestCommand(options) {
|
|
656
686
|
const { label, command, override } = options;
|
|
657
687
|
const extraCandidates = options.extraCandidates ?? [];
|
|
@@ -689,6 +719,21 @@ async function selectBestCommand(options) {
|
|
|
689
719
|
}
|
|
690
720
|
async function discoverGatewayCliCommands(options) {
|
|
691
721
|
const resolvedOptions = getActiveOptions(options);
|
|
722
|
+
const warnShellResolution = async (label, command, envKey, cliFlag, source, override) => {
|
|
723
|
+
if (override || source !== 'fallback')
|
|
724
|
+
return;
|
|
725
|
+
const resolution = await probeShellResolution(command);
|
|
726
|
+
if (!resolution)
|
|
727
|
+
return;
|
|
728
|
+
const hint = resolution.kind === 'path'
|
|
729
|
+
? `Your shell resolves "${command}" to ${resolution.path}, but the gateway could not find it in PATH.`
|
|
730
|
+
: `Your shell defines "${command}" as a ${resolution.kind}, but the gateway does not load shell aliases.`;
|
|
731
|
+
cliWarn(`${label} CLI not found in PATH. ${hint}`, resolvedOptions, [
|
|
732
|
+
{ label: 'Shell', value: process.env.SHELL ?? 'unknown', verboseOnly: true },
|
|
733
|
+
{ label: 'Shell resolution', value: resolution.detail, verboseOnly: true },
|
|
734
|
+
{ label: 'Fix', value: `Set ${envKey} or pass ${cliFlag}.` },
|
|
735
|
+
]);
|
|
736
|
+
};
|
|
692
737
|
const claudeOverride = getStringOption(resolvedOptions, 'claude-cli') ||
|
|
693
738
|
process.env.PANORAMA_CLAUDE_CLI ||
|
|
694
739
|
process.env.CLAUDE_CLI;
|
|
@@ -714,6 +759,9 @@ async function discoverGatewayCliCommands(options) {
|
|
|
714
759
|
command: 'gemini',
|
|
715
760
|
override: geminiOverride,
|
|
716
761
|
});
|
|
762
|
+
await warnShellResolution('Claude', 'claude', 'PANORAMA_CLAUDE_CLI', '--claude-cli <path>', claudeResult.source, claudeOverride);
|
|
763
|
+
await warnShellResolution('Codex', 'codex', 'PANORAMA_CODEX_CLI', '--codex-cli <path>', codexResult.source, codexOverride);
|
|
764
|
+
await warnShellResolution('Gemini', 'gemini', 'PANORAMA_GEMINI_CLI', '--gemini-cli <path>', geminiResult.source, geminiOverride);
|
|
717
765
|
if (!claudeOverride) {
|
|
718
766
|
process.env.PANORAMA_CLAUDE_CLI = claudeResult.command;
|
|
719
767
|
}
|
|
@@ -741,7 +789,6 @@ function buildGatewayEnvOverrides(options) {
|
|
|
741
789
|
const claudeCli = getStringOption(resolvedOptions, 'claude-cli');
|
|
742
790
|
const codexCli = getStringOption(resolvedOptions, 'codex-cli');
|
|
743
791
|
const geminiCli = getStringOption(resolvedOptions, 'gemini-cli');
|
|
744
|
-
const claudeHome = getStringOption(resolvedOptions, 'claude-home');
|
|
745
792
|
const supabaseUrl = getStringOption(resolvedOptions, 'supabase-url');
|
|
746
793
|
const supabaseAnonKey = getStringOption(resolvedOptions, 'anon-key');
|
|
747
794
|
if (configDir)
|
|
@@ -758,8 +805,6 @@ function buildGatewayEnvOverrides(options) {
|
|
|
758
805
|
env.PANORAMA_CODEX_CLI = codexCli;
|
|
759
806
|
if (geminiCli)
|
|
760
807
|
env.PANORAMA_GEMINI_CLI = geminiCli;
|
|
761
|
-
if (claudeHome)
|
|
762
|
-
env.PANORAMA_CLAUDE_HOME = claudeHome;
|
|
763
808
|
if (supabaseUrl)
|
|
764
809
|
env.PANORAMA_SUPABASE_URL = supabaseUrl;
|
|
765
810
|
if (supabaseAnonKey)
|
|
@@ -1069,7 +1114,6 @@ async function pairGateway(code, options, configResolution) {
|
|
|
1069
1114
|
let providerHealth = null;
|
|
1070
1115
|
try {
|
|
1071
1116
|
cliInfo('Validating providers...', options);
|
|
1072
|
-
await ensureClaudeGatewayHome();
|
|
1073
1117
|
await discoverGatewayCliCommands(options);
|
|
1074
1118
|
const { providerHealth: resolvedHealth, anyProviderReady: ready } = await buildCapabilities({
|
|
1075
1119
|
validationMode: 'full',
|
|
@@ -1203,39 +1247,6 @@ function resolveRunPlanEnv(env, workDir) {
|
|
|
1203
1247
|
return [key, value];
|
|
1204
1248
|
}));
|
|
1205
1249
|
}
|
|
1206
|
-
function isCodexConfigError(message) {
|
|
1207
|
-
if (!message)
|
|
1208
|
-
return false;
|
|
1209
|
-
const normalized = message.toLowerCase();
|
|
1210
|
-
return (normalized.includes('config.toml') ||
|
|
1211
|
-
normalized.includes('mcp_servers') ||
|
|
1212
|
-
normalized.includes('invalid transport'));
|
|
1213
|
-
}
|
|
1214
|
-
async function resetCodexConfig() {
|
|
1215
|
-
const home = resolveGatewayProviderHome('codex');
|
|
1216
|
-
const candidates = [
|
|
1217
|
-
path.join(home, '.codex', 'config.toml'),
|
|
1218
|
-
path.join(home, 'xdg', 'config', 'codex', 'config.toml'),
|
|
1219
|
-
];
|
|
1220
|
-
const resetPaths = [];
|
|
1221
|
-
try {
|
|
1222
|
-
for (const configPath of candidates) {
|
|
1223
|
-
if (!fsSync.existsSync(configPath))
|
|
1224
|
-
continue;
|
|
1225
|
-
const backupPath = `${configPath}.backup.${Date.now()}`;
|
|
1226
|
-
await fs.rename(configPath, backupPath);
|
|
1227
|
-
resetPaths.push(configPath);
|
|
1228
|
-
}
|
|
1229
|
-
return { reset: resetPaths.length > 0, paths: resetPaths };
|
|
1230
|
-
}
|
|
1231
|
-
catch (error) {
|
|
1232
|
-
return {
|
|
1233
|
-
reset: resetPaths.length > 0,
|
|
1234
|
-
paths: resetPaths,
|
|
1235
|
-
error: error instanceof Error ? error.message : String(error),
|
|
1236
|
-
};
|
|
1237
|
-
}
|
|
1238
|
-
}
|
|
1239
1250
|
async function runProviderValidation(provider, model) {
|
|
1240
1251
|
const attempt = async () => {
|
|
1241
1252
|
const workRoot = resolveValidationWorkdirRoot();
|
|
@@ -1289,23 +1300,6 @@ async function runProviderValidation(provider, model) {
|
|
|
1289
1300
|
const result = await attempt();
|
|
1290
1301
|
if (result.ok)
|
|
1291
1302
|
return result;
|
|
1292
|
-
if (provider.id === 'codex' && isCodexConfigError(result.error)) {
|
|
1293
|
-
const reset = await resetCodexConfig();
|
|
1294
|
-
if (reset.reset) {
|
|
1295
|
-
logInfo('Reset Codex config after validation error', { paths: reset.paths });
|
|
1296
|
-
queueGatewayEvent({
|
|
1297
|
-
level: 'warn',
|
|
1298
|
-
code: 'provider_config_reset',
|
|
1299
|
-
provider: provider.id,
|
|
1300
|
-
message: 'Codex config reset after validation error.',
|
|
1301
|
-
details: {
|
|
1302
|
-
paths: reset.paths,
|
|
1303
|
-
error: reset.error ?? null,
|
|
1304
|
-
},
|
|
1305
|
-
});
|
|
1306
|
-
return await attempt();
|
|
1307
|
-
}
|
|
1308
|
-
}
|
|
1309
1303
|
return result;
|
|
1310
1304
|
}
|
|
1311
1305
|
function coerceHealthStatus(value) {
|
|
@@ -1586,31 +1580,6 @@ async function updateRuntimeProviderHealth(params) {
|
|
|
1586
1580
|
});
|
|
1587
1581
|
}
|
|
1588
1582
|
}
|
|
1589
|
-
async function ensureClaudeGatewayHome() {
|
|
1590
|
-
const claudeHome = resolveClaudeHomeOverride();
|
|
1591
|
-
if (!claudeHome)
|
|
1592
|
-
return;
|
|
1593
|
-
await fs.mkdir(claudeHome, { recursive: true });
|
|
1594
|
-
await fs.mkdir(path.join(claudeHome, 'xdg', 'config'), { recursive: true });
|
|
1595
|
-
await fs.mkdir(path.join(claudeHome, 'xdg', 'cache'), { recursive: true });
|
|
1596
|
-
await fs.mkdir(path.join(claudeHome, 'xdg', 'data'), { recursive: true });
|
|
1597
|
-
const sourceSessionEnv = path.join(os.homedir(), '.claude', 'session-env');
|
|
1598
|
-
const destSessionEnv = path.join(claudeHome, 'session-env');
|
|
1599
|
-
try {
|
|
1600
|
-
const srcStat = await fs.stat(sourceSessionEnv);
|
|
1601
|
-
if (srcStat.isDirectory()) {
|
|
1602
|
-
try {
|
|
1603
|
-
await fs.stat(destSessionEnv);
|
|
1604
|
-
}
|
|
1605
|
-
catch {
|
|
1606
|
-
await fs.cp(sourceSessionEnv, destSessionEnv, { recursive: true });
|
|
1607
|
-
}
|
|
1608
|
-
}
|
|
1609
|
-
}
|
|
1610
|
-
catch {
|
|
1611
|
-
// If there's no session env yet, leave it empty; Claude will prompt if needed.
|
|
1612
|
-
}
|
|
1613
|
-
}
|
|
1614
1583
|
async function ensureGatewayTmpDir() {
|
|
1615
1584
|
const tmpDir = resolveGatewayTmpDir();
|
|
1616
1585
|
await fs.mkdir(tmpDir, { recursive: true });
|
|
@@ -1621,13 +1590,6 @@ function buildClaudeEnv() {
|
|
|
1621
1590
|
env.TMPDIR = tmpDir;
|
|
1622
1591
|
env.TMP = tmpDir;
|
|
1623
1592
|
env.TEMP = tmpDir;
|
|
1624
|
-
const claudeHome = resolveClaudeHomeOverride();
|
|
1625
|
-
if (claudeHome) {
|
|
1626
|
-
env.HOME = claudeHome;
|
|
1627
|
-
env.XDG_CONFIG_HOME = path.join(claudeHome, 'xdg', 'config');
|
|
1628
|
-
env.XDG_CACHE_HOME = path.join(claudeHome, 'xdg', 'cache');
|
|
1629
|
-
env.XDG_DATA_HOME = path.join(claudeHome, 'xdg', 'data');
|
|
1630
|
-
}
|
|
1631
1593
|
return env;
|
|
1632
1594
|
}
|
|
1633
1595
|
async function runSubagentCommand(command, args, options) {
|
|
@@ -3357,7 +3319,6 @@ async function startGateway(options, configResolution) {
|
|
|
3357
3319
|
}
|
|
3358
3320
|
});
|
|
3359
3321
|
await ensureGatewayTmpDir();
|
|
3360
|
-
await ensureClaudeGatewayHome();
|
|
3361
3322
|
await discoverGatewayCliCommands(options);
|
|
3362
3323
|
cliInfo('Validating providers...', options);
|
|
3363
3324
|
const { capabilities: initialCapabilities, providerHealth, anyProviderReady } = await buildCapabilities({
|
|
@@ -3786,7 +3747,6 @@ async function doctorGateway(options, configResolution) {
|
|
|
3786
3747
|
{ label: 'Team ID', value: config?.teamId ?? undefined, verboseOnly: true },
|
|
3787
3748
|
]);
|
|
3788
3749
|
cliInfo('Validating providers...', options);
|
|
3789
|
-
await ensureClaudeGatewayHome();
|
|
3790
3750
|
await discoverGatewayCliCommands(options);
|
|
3791
3751
|
const { providerHealth, anyProviderReady } = await buildCapabilities({
|
|
3792
3752
|
validationMode: 'full',
|