@panorama-ai/gateway 2.24.100

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 (58) hide show
  1. package/README.md +74 -0
  2. package/dist/cli-providers/claude-utils.d.ts +10 -0
  3. package/dist/cli-providers/claude-utils.d.ts.map +1 -0
  4. package/dist/cli-providers/claude-utils.js +73 -0
  5. package/dist/cli-providers/claude-utils.js.map +1 -0
  6. package/dist/cli-providers/claude.d.ts +3 -0
  7. package/dist/cli-providers/claude.d.ts.map +1 -0
  8. package/dist/cli-providers/claude.js +212 -0
  9. package/dist/cli-providers/claude.js.map +1 -0
  10. package/dist/cli-providers/codex-schema.d.ts +10 -0
  11. package/dist/cli-providers/codex-schema.d.ts.map +1 -0
  12. package/dist/cli-providers/codex-schema.js +76 -0
  13. package/dist/cli-providers/codex-schema.js.map +1 -0
  14. package/dist/cli-providers/codex.d.ts +3 -0
  15. package/dist/cli-providers/codex.d.ts.map +1 -0
  16. package/dist/cli-providers/codex.js +271 -0
  17. package/dist/cli-providers/codex.js.map +1 -0
  18. package/dist/cli-providers/gemini.d.ts +3 -0
  19. package/dist/cli-providers/gemini.d.ts.map +1 -0
  20. package/dist/cli-providers/gemini.js +214 -0
  21. package/dist/cli-providers/gemini.js.map +1 -0
  22. package/dist/cli-providers/registry.d.ts +5 -0
  23. package/dist/cli-providers/registry.d.ts.map +1 -0
  24. package/dist/cli-providers/registry.js +25 -0
  25. package/dist/cli-providers/registry.js.map +1 -0
  26. package/dist/cli-providers/types.d.ts +61 -0
  27. package/dist/cli-providers/types.d.ts.map +1 -0
  28. package/dist/cli-providers/types.js +2 -0
  29. package/dist/cli-providers/types.js.map +1 -0
  30. package/dist/index.d.ts +2 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +2288 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/subagent-adapters/claude-code.d.ts +3 -0
  35. package/dist/subagent-adapters/claude-code.d.ts.map +1 -0
  36. package/dist/subagent-adapters/claude-code.js +565 -0
  37. package/dist/subagent-adapters/claude-code.js.map +1 -0
  38. package/dist/subagent-adapters/claude-support.d.ts +30 -0
  39. package/dist/subagent-adapters/claude-support.d.ts.map +1 -0
  40. package/dist/subagent-adapters/claude-support.js +67 -0
  41. package/dist/subagent-adapters/claude-support.js.map +1 -0
  42. package/dist/subagent-adapters/codex.d.ts +3 -0
  43. package/dist/subagent-adapters/codex.d.ts.map +1 -0
  44. package/dist/subagent-adapters/codex.js +241 -0
  45. package/dist/subagent-adapters/codex.js.map +1 -0
  46. package/dist/subagent-adapters/gemini.d.ts +3 -0
  47. package/dist/subagent-adapters/gemini.d.ts.map +1 -0
  48. package/dist/subagent-adapters/gemini.js +257 -0
  49. package/dist/subagent-adapters/gemini.js.map +1 -0
  50. package/dist/subagent-adapters/registry.d.ts +4 -0
  51. package/dist/subagent-adapters/registry.d.ts.map +1 -0
  52. package/dist/subagent-adapters/registry.js +19 -0
  53. package/dist/subagent-adapters/registry.js.map +1 -0
  54. package/dist/subagent-adapters/types.d.ts +60 -0
  55. package/dist/subagent-adapters/types.d.ts.map +1 -0
  56. package/dist/subagent-adapters/types.js +2 -0
  57. package/dist/subagent-adapters/types.js.map +1 -0
  58. package/package.json +36 -0
package/README.md ADDED
@@ -0,0 +1,74 @@
1
+ # Panorama Gateway
2
+
3
+ Local gateway service for connecting a team to local CLI capabilities.
4
+
5
+ ## Usage
6
+
7
+ Pair the gateway with a team using a pairing code:
8
+
9
+ ```bash
10
+ PANORAMA_ENV=dev pnpm --filter @panorama-ai/gateway dev -- pair <PAIRING_CODE>
11
+ ```
12
+
13
+ Or pass Supabase credentials directly:
14
+
15
+ ```bash
16
+ SUPABASE_URL="https://your-project.supabase.co" \
17
+ SUPABASE_ANON_KEY="your-anon-key" \
18
+ pnpm --filter @panorama-ai/gateway dev -- pair <PAIRING_CODE>
19
+ ```
20
+
21
+ Start the gateway and begin listening for jobs:
22
+
23
+ ```bash
24
+ pnpm --filter @panorama-ai/gateway dev -- start
25
+ ```
26
+
27
+ Start the gateway in the background (built binary only):
28
+
29
+ ```bash
30
+ pnpm --filter @panorama-ai/gateway build
31
+ pnpm --filter @panorama-ai/gateway start -- --daemon
32
+ ```
33
+
34
+ Stop the gateway:
35
+
36
+ ```bash
37
+ pnpm --filter @panorama-ai/gateway dev -- stop
38
+ ```
39
+
40
+ Tail logs:
41
+
42
+ ```bash
43
+ pnpm --filter @panorama-ai/gateway dev -- logs --lines 200
44
+ ```
45
+
46
+ Optional flags:
47
+
48
+ - `--device-name "My MacBook"`
49
+ - `--supabase-url "https://..."`
50
+ - `--anon-key "..."`
51
+ - `--env local|dev|test|stage|prod`
52
+ - `--env-file /path/to/.env`
53
+ - `--daemon` (start in background)
54
+ - `--no-follow` (show logs without follow)
55
+
56
+ The gateway stores credentials in `~/.panorama/gateway.json` by default. Override with `PANORAMA_GATEWAY_CONFIG_PATH`.
57
+
58
+ ## Environment
59
+
60
+ The gateway expects these values (CLI flags override environment variables):
61
+
62
+ - `SUPABASE_URL` (or `PANORAMA_SUPABASE_URL`)
63
+ - `SUPABASE_ANON_KEY` (or `PANORAMA_SUPABASE_ANON_KEY` / `SUPABASE_PUBLISHABLE_KEY`)
64
+
65
+ When `--env` or `PANORAMA_ENV` is provided, the gateway loads `.env.<env>` from the repo root (falls back to `.env` for `local`).
66
+ You can always point to a specific env file with `--env-file`.
67
+
68
+ ## Job Handling
69
+
70
+ The initial implementation processes `diagnostic` jobs by running `claude --version` locally and storing the output in the job result.
71
+
72
+ ## CLI Provider Notes
73
+
74
+ See `packages/gateway/CLI_PROVIDERS.md` for current findings on Claude Code, Codex CLI, and Gemini CLI usage patterns.
@@ -0,0 +1,10 @@
1
+ export declare function parseClaudeJsonOutput(stdout: string): {
2
+ parsed: Record<string, unknown> | null;
3
+ error?: string;
4
+ };
5
+ export declare function normalizeGatewayModelOutput(parsed: Record<string, unknown>): {
6
+ output: Record<string, unknown>;
7
+ usage: Record<string, unknown> | null;
8
+ model: string | null;
9
+ };
10
+ //# sourceMappingURL=claude-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-utils.d.ts","sourceRoot":"","sources":["../../src/cli-providers/claude-utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAsChH;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAC5E,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACrC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAsCA"}
@@ -0,0 +1,73 @@
1
+ export function parseClaudeJsonOutput(stdout) {
2
+ if (!stdout)
3
+ return { parsed: null, error: 'Empty Claude output' };
4
+ const trimmed = stdout.trim();
5
+ if (!trimmed)
6
+ return { parsed: null, error: 'Empty Claude output' };
7
+ const tryParse = (value) => {
8
+ try {
9
+ const parsed = JSON.parse(value);
10
+ return parsed;
11
+ }
12
+ catch {
13
+ return null;
14
+ }
15
+ };
16
+ const direct = tryParse(trimmed);
17
+ if (direct)
18
+ return { parsed: direct };
19
+ const lines = trimmed
20
+ .split(/\r?\n/)
21
+ .map((line) => line.trim())
22
+ .filter(Boolean);
23
+ for (const line of lines) {
24
+ const parsed = tryParse(line);
25
+ if (parsed)
26
+ return { parsed };
27
+ }
28
+ const firstBrace = trimmed.indexOf('{');
29
+ const lastBrace = trimmed.lastIndexOf('}');
30
+ if (firstBrace !== -1 && lastBrace !== -1 && lastBrace > firstBrace) {
31
+ const slice = trimmed.slice(firstBrace, lastBrace + 1);
32
+ const parsed = tryParse(slice);
33
+ if (parsed)
34
+ return { parsed };
35
+ }
36
+ return {
37
+ parsed: null,
38
+ error: 'Failed to parse Claude JSON output',
39
+ };
40
+ }
41
+ export function normalizeGatewayModelOutput(parsed) {
42
+ let outputCandidate = (parsed.structured_output ??
43
+ parsed.structuredOutput ??
44
+ parsed.output ??
45
+ parsed.tool_call ??
46
+ parsed.toolCall) ??
47
+ null;
48
+ if (!outputCandidate && typeof parsed.result === 'string') {
49
+ try {
50
+ outputCandidate = JSON.parse(parsed.result);
51
+ }
52
+ catch {
53
+ outputCandidate = null;
54
+ }
55
+ }
56
+ if (!outputCandidate || typeof outputCandidate !== 'object') {
57
+ throw new Error('Claude output missing structured JSON payload');
58
+ }
59
+ const usage = parsed.usage ??
60
+ parsed.usage_metadata ??
61
+ null;
62
+ const model = typeof parsed.model === 'string'
63
+ ? parsed.model
64
+ : typeof parsed.provider_model === 'string'
65
+ ? parsed.provider_model
66
+ : null;
67
+ return {
68
+ output: outputCandidate,
69
+ usage,
70
+ model,
71
+ };
72
+ }
73
+ //# sourceMappingURL=claude-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-utils.js","sourceRoot":"","sources":["../../src/cli-providers/claude-utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAA;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAA;IAEnE,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAkC,EAAE;QACjE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAA4B,CAAA;YAC3D,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAChC,IAAI,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;IAErC,MAAM,KAAK,GAAG,OAAO;SAClB,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAA;IAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,MAAM;YAAE,OAAO,EAAE,MAAM,EAAE,CAAA;IAC/B,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAC1C,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;QACpE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,GAAG,CAAC,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC9B,IAAI,MAAM;YAAE,OAAO,EAAE,MAAM,EAAE,CAAA;IAC/B,CAAC;IAED,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,oCAAoC;KAC5C,CAAA;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAA+B;IAKzE,IAAI,eAAe,GACjB,CAAC,MAAM,CAAC,iBAAiB;QACvB,MAAM,CAAC,gBAAgB;QACvB,MAAM,CAAC,MAAM;QACb,MAAM,CAAC,SAAS;QAChB,MAAM,CAAC,QAAQ,CAAC;QAClB,IAAI,CAAA;IAEN,IAAI,CAAC,eAAe,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1D,IAAI,CAAC;YACH,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAA4B,CAAA;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,eAAe,GAAG,IAAI,CAAA;QACxB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,eAAe,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,KAAK,GACR,MAAM,CAAC,KAA6C;QACpD,MAAM,CAAC,cAAsD;QAC9D,IAAI,CAAA;IAEN,MAAM,KAAK,GACT,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;QAC9B,CAAC,CAAC,MAAM,CAAC,KAAK;QACd,CAAC,CAAC,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ;YACzC,CAAC,CAAC,MAAM,CAAC,cAAc;YACvB,CAAC,CAAC,IAAI,CAAA;IAEZ,OAAO;QACL,MAAM,EAAE,eAA0C;QAClD,KAAK;QACL,KAAK;KACN,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { GatewayCliProvider } from './types.js';
2
+ export declare function createClaudeCliProvider(): GatewayCliProvider;
3
+ //# sourceMappingURL=claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/cli-providers/claude.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAoD,MAAM,YAAY,CAAA;AAqItG,wBAAgB,uBAAuB,IAAI,kBAAkB,CA2F5D"}
@@ -0,0 +1,212 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { promisify } from 'node:util';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import fs from 'node:fs/promises';
6
+ import fsSync from 'node:fs';
7
+ import { DEFAULT_CLAUDE_SUPPORT, parseClaudeSupport, toFlagRecord, } from '../subagent-adapters/claude-support.js';
8
+ import { normalizeGatewayModelOutput, parseClaudeJsonOutput } from './claude-utils.js';
9
+ const execFileAsync = promisify(execFile);
10
+ const DEFAULT_CLAUDE_TIMEOUT_MS = 10_000;
11
+ const CLAUDE_ENV_ALLOWLIST = [
12
+ 'PATH',
13
+ 'HOME',
14
+ 'USER',
15
+ 'LOGNAME',
16
+ 'SHELL',
17
+ 'LANG',
18
+ 'LC_ALL',
19
+ 'LC_CTYPE',
20
+ 'TERM',
21
+ 'TMPDIR',
22
+ 'TMP',
23
+ 'TEMP',
24
+ 'HTTP_PROXY',
25
+ 'HTTPS_PROXY',
26
+ 'NO_PROXY',
27
+ 'http_proxy',
28
+ 'https_proxy',
29
+ 'no_proxy',
30
+ 'XDG_CONFIG_HOME',
31
+ 'XDG_CACHE_HOME',
32
+ 'XDG_DATA_HOME',
33
+ 'SSH_AUTH_SOCK',
34
+ 'SSH_AGENT_PID',
35
+ ];
36
+ const DEFAULT_CLAUDE_PATH = path.join(os.homedir(), '.claude', 'local', 'claude');
37
+ const CLAUDE_COMMAND = process.env.PANORAMA_CLAUDE_CLI ||
38
+ process.env.CLAUDE_CLI ||
39
+ (fsSync.existsSync(DEFAULT_CLAUDE_PATH) ? DEFAULT_CLAUDE_PATH : 'claude');
40
+ const CLAUDE_GATEWAY_HOME = process.env.PANORAMA_CLAUDE_HOME || null;
41
+ async function ensureClaudeGatewayHome() {
42
+ if (!CLAUDE_GATEWAY_HOME)
43
+ return;
44
+ await fs.mkdir(CLAUDE_GATEWAY_HOME, { recursive: true });
45
+ await fs.mkdir(path.join(CLAUDE_GATEWAY_HOME, 'xdg', 'config'), { recursive: true });
46
+ await fs.mkdir(path.join(CLAUDE_GATEWAY_HOME, 'xdg', 'cache'), { recursive: true });
47
+ await fs.mkdir(path.join(CLAUDE_GATEWAY_HOME, 'xdg', 'data'), { recursive: true });
48
+ const sourceSessionEnv = path.join(os.homedir(), '.claude', 'session-env');
49
+ const destSessionEnv = path.join(CLAUDE_GATEWAY_HOME, 'session-env');
50
+ try {
51
+ const srcStat = await fs.stat(sourceSessionEnv);
52
+ if (srcStat.isDirectory()) {
53
+ try {
54
+ await fs.stat(destSessionEnv);
55
+ }
56
+ catch {
57
+ await fs.cp(sourceSessionEnv, destSessionEnv, { recursive: true });
58
+ }
59
+ }
60
+ }
61
+ catch {
62
+ // Leave empty; Claude will prompt if needed.
63
+ }
64
+ }
65
+ function buildClaudeEnv() {
66
+ const env = {};
67
+ for (const key of CLAUDE_ENV_ALLOWLIST) {
68
+ const value = process.env[key];
69
+ if (value !== undefined) {
70
+ env[key] = value;
71
+ }
72
+ }
73
+ if (CLAUDE_GATEWAY_HOME) {
74
+ env.HOME = CLAUDE_GATEWAY_HOME;
75
+ env.XDG_CONFIG_HOME = path.join(CLAUDE_GATEWAY_HOME, 'xdg', 'config');
76
+ env.XDG_CACHE_HOME = path.join(CLAUDE_GATEWAY_HOME, 'xdg', 'cache');
77
+ env.XDG_DATA_HOME = path.join(CLAUDE_GATEWAY_HOME, 'xdg', 'data');
78
+ }
79
+ return env;
80
+ }
81
+ async function execClaudeHelp() {
82
+ try {
83
+ const { stdout, stderr } = await execFileAsync(CLAUDE_COMMAND, ['--help'], {
84
+ timeout: DEFAULT_CLAUDE_TIMEOUT_MS,
85
+ });
86
+ return { ok: true, stdout: String(stdout ?? ''), stderr: String(stderr ?? '') };
87
+ }
88
+ catch (error) {
89
+ const err = error;
90
+ return {
91
+ ok: false,
92
+ stdout: err.stdout ? String(err.stdout) : '',
93
+ stderr: err.stderr ? String(err.stderr) : '',
94
+ error: err.message,
95
+ };
96
+ }
97
+ }
98
+ async function execClaudeVersion() {
99
+ try {
100
+ const { stdout } = await execFileAsync(CLAUDE_COMMAND, ['--version'], {
101
+ timeout: DEFAULT_CLAUDE_TIMEOUT_MS,
102
+ });
103
+ const version = String(stdout ?? '').trim();
104
+ return { ok: true, version: version || null };
105
+ }
106
+ catch (error) {
107
+ const err = error;
108
+ return { ok: false, version: null, error: err.message };
109
+ }
110
+ }
111
+ async function detectClaudeSupport() {
112
+ const help = await execClaudeHelp();
113
+ if (!help.ok)
114
+ return DEFAULT_CLAUDE_SUPPORT;
115
+ return parseClaudeSupport(`${help.stdout}\n${help.stderr}`);
116
+ }
117
+ function appendClaudeIsolationArgs(args, support) {
118
+ if (support.settingSourcesFlag) {
119
+ args.push('--setting-sources', 'local');
120
+ }
121
+ if (support.disableSlashCommandsFlag) {
122
+ args.push('--disable-slash-commands');
123
+ }
124
+ }
125
+ export function createClaudeCliProvider() {
126
+ let cachedSupport = null;
127
+ return {
128
+ id: 'claude_code',
129
+ label: 'Claude Code',
130
+ async detectCapabilities() {
131
+ await ensureClaudeGatewayHome();
132
+ const versionInfo = await execClaudeVersion();
133
+ const support = await detectClaudeSupport();
134
+ cachedSupport = support;
135
+ return {
136
+ available: versionInfo.ok,
137
+ version: versionInfo.version ?? undefined,
138
+ error: versionInfo.ok ? undefined : versionInfo.error,
139
+ supported_flags: toFlagRecord(support),
140
+ supports: {
141
+ output_schema: support.jsonSchemaFlag,
142
+ stream_json: support.outputFormatFlag,
143
+ tool_disable: support.toolsFlag || support.allowedToolsFlag,
144
+ },
145
+ };
146
+ },
147
+ buildModelRunPlan(context) {
148
+ const support = cachedSupport ?? DEFAULT_CLAUDE_SUPPORT;
149
+ const args = [
150
+ '--print',
151
+ '--model',
152
+ context.model,
153
+ '--output-format',
154
+ 'json',
155
+ '--json-schema',
156
+ JSON.stringify(context.jsonSchema),
157
+ ];
158
+ if (support.toolsFlag) {
159
+ args.push('--tools', '');
160
+ }
161
+ else if (support.allowedToolsFlag) {
162
+ args.push('--allowedTools', '');
163
+ }
164
+ if (support.inputFormatFlag) {
165
+ args.push('--input-format', 'text');
166
+ }
167
+ if (support.noSessionPersistenceFlag) {
168
+ args.push('--no-session-persistence');
169
+ }
170
+ if (support.permissionModeFlag) {
171
+ args.push('--permission-mode', 'dontAsk');
172
+ }
173
+ appendClaudeIsolationArgs(args, support);
174
+ if (context.appendSystemPrompt) {
175
+ if (support.systemPromptFlag) {
176
+ args.push('--system-prompt', context.appendSystemPrompt);
177
+ }
178
+ else if (support.appendSystemPromptFlag) {
179
+ args.push('--append-system-prompt', context.appendSystemPrompt);
180
+ }
181
+ }
182
+ args.push(context.prompt);
183
+ return {
184
+ command: CLAUDE_COMMAND,
185
+ args,
186
+ env: buildClaudeEnv(),
187
+ outputFormat: 'json',
188
+ outputMode: 'stdout-json',
189
+ timeoutMs: typeof context.timeoutMs === 'number' ? context.timeoutMs : null,
190
+ debug: {
191
+ command: CLAUDE_COMMAND,
192
+ args,
193
+ prompt_chars: context.prompt.length,
194
+ },
195
+ };
196
+ },
197
+ normalizeModelRunResult({ stdout }) {
198
+ const parsed = parseClaudeJsonOutput(stdout);
199
+ if (!parsed.parsed) {
200
+ throw new Error(parsed.error ?? 'Failed to parse Claude output');
201
+ }
202
+ const normalized = normalizeGatewayModelOutput(parsed.parsed);
203
+ return {
204
+ output: normalized.output,
205
+ raw: parsed.parsed,
206
+ usage: normalized.usage,
207
+ model: normalized.model,
208
+ };
209
+ },
210
+ };
211
+ }
212
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/cli-providers/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare function enforceCodexStrictSchema<T>(schema: T): T;
2
+ export declare function normalizeCodexToolSchema(schema: Record<string, unknown>): {
3
+ schema: Record<string, unknown>;
4
+ promptSuffix?: string;
5
+ };
6
+ export declare function normalizeCodexArgsPayload(payload: Record<string, unknown>): {
7
+ output: Record<string, unknown>;
8
+ raw: Record<string, unknown>;
9
+ };
10
+ //# sourceMappingURL=codex-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-schema.d.ts","sourceRoot":"","sources":["../../src/cli-providers/codex-schema.ts"],"names":[],"mappings":"AAAA,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAwCxD;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACzE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CA0BA;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAoBnE"}
@@ -0,0 +1,76 @@
1
+ export function enforceCodexStrictSchema(schema) {
2
+ const seen = new WeakMap();
3
+ const visit = (value) => {
4
+ if (value === null || typeof value !== 'object') {
5
+ return value;
6
+ }
7
+ if (Array.isArray(value)) {
8
+ return value.map((entry) => visit(entry));
9
+ }
10
+ if (seen.has(value)) {
11
+ return seen.get(value);
12
+ }
13
+ const input = value;
14
+ const output = {};
15
+ seen.set(value, output);
16
+ for (const [key, entry] of Object.entries(input)) {
17
+ output[key] = visit(entry);
18
+ }
19
+ const typeValue = output.type;
20
+ const isObjectType = typeValue === 'object' ||
21
+ (Array.isArray(typeValue) && typeValue.includes('object')) ||
22
+ typeof output.properties === 'object' ||
23
+ typeof output.patternProperties === 'object';
24
+ if (isObjectType) {
25
+ // Codex requires additionalProperties explicitly set to false on object nodes.
26
+ if (output.additionalProperties !== false) {
27
+ output.additionalProperties = false;
28
+ }
29
+ }
30
+ return output;
31
+ };
32
+ return visit(schema);
33
+ }
34
+ export function normalizeCodexToolSchema(schema) {
35
+ const properties = schema.properties;
36
+ if (!properties || typeof properties !== 'object') {
37
+ return { schema };
38
+ }
39
+ const props = properties;
40
+ if (!props.name || !props.args) {
41
+ return { schema };
42
+ }
43
+ const nameSchema = props.name;
44
+ const codexSchema = {
45
+ type: 'object',
46
+ required: ['name', 'args_json'],
47
+ properties: {
48
+ name: nameSchema,
49
+ args_json: { type: 'string' },
50
+ },
51
+ additionalProperties: false,
52
+ };
53
+ return {
54
+ schema: codexSchema,
55
+ promptSuffix: 'Set args_json to a JSON-encoded string containing the arguments object.',
56
+ };
57
+ }
58
+ export function normalizeCodexArgsPayload(payload) {
59
+ const raw = payload;
60
+ const argsJson = payload.args_json ?? payload.argsJson;
61
+ if (typeof argsJson === 'string') {
62
+ try {
63
+ const parsedArgs = JSON.parse(argsJson);
64
+ const output = { ...payload };
65
+ output.args = parsedArgs;
66
+ delete output.args_json;
67
+ delete output.argsJson;
68
+ return { output, raw };
69
+ }
70
+ catch (error) {
71
+ throw new Error(`Codex args_json is not valid JSON: ${error instanceof Error ? error.message : 'unknown error'}`);
72
+ }
73
+ }
74
+ return { output: payload, raw };
75
+ }
76
+ //# sourceMappingURL=codex-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-schema.js","sourceRoot":"","sources":["../../src/cli-providers/codex-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { GatewayCliProvider } from './types.js';
2
+ export declare function createCodexCliProvider(): GatewayCliProvider;
3
+ //# sourceMappingURL=codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/cli-providers/codex.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAoD,MAAM,YAAY,CAAA;AAmKtG,wBAAgB,sBAAsB,IAAI,kBAAkB,CAwH3D"}