@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
@@ -0,0 +1,67 @@
1
+ export const DEFAULT_CLAUDE_SUPPORT = {
2
+ toolsFlag: false,
3
+ allowedToolsFlag: true,
4
+ disallowedToolsFlag: true,
5
+ outputFormatFlag: true,
6
+ modelFlag: false,
7
+ jsonSchemaFlag: false,
8
+ appendSystemPromptFlag: false,
9
+ systemPromptFlag: true,
10
+ includePartialMessagesFlag: false,
11
+ permissionModeFlag: false,
12
+ maxBudgetFlag: false,
13
+ inputFormatFlag: false,
14
+ betasFlag: false,
15
+ noSessionPersistenceFlag: false,
16
+ sessionIdFlag: false,
17
+ resumeFlag: false,
18
+ verboseFlag: false,
19
+ settingsFlag: false,
20
+ settingSourcesFlag: false,
21
+ disableSlashCommandsFlag: false,
22
+ strictMcpConfigFlag: false,
23
+ mcpConfigFlag: false,
24
+ pluginDirFlag: false,
25
+ };
26
+ export function coerceClaudeSupport(flags) {
27
+ if (!flags)
28
+ return DEFAULT_CLAUDE_SUPPORT;
29
+ return {
30
+ ...DEFAULT_CLAUDE_SUPPORT,
31
+ ...flags,
32
+ };
33
+ }
34
+ export function toFlagRecord(flags) {
35
+ return Object.fromEntries(Object.entries(flags).map(([key, value]) => [key, Boolean(value)]));
36
+ }
37
+ export function parseClaudeSupport(helpText) {
38
+ const text = helpText.toLowerCase();
39
+ const hasFlag = (flag) => text.includes(flag.toLowerCase());
40
+ return {
41
+ ...DEFAULT_CLAUDE_SUPPORT,
42
+ toolsFlag: hasFlag('--tools'),
43
+ allowedToolsFlag: hasFlag('--allowedtools') || hasFlag('--allowed-tools'),
44
+ disallowedToolsFlag: hasFlag('--disallowedtools') || hasFlag('--disallowed-tools'),
45
+ outputFormatFlag: hasFlag('--output-format'),
46
+ modelFlag: hasFlag('--model'),
47
+ jsonSchemaFlag: hasFlag('--json-schema'),
48
+ appendSystemPromptFlag: hasFlag('--append-system-prompt'),
49
+ systemPromptFlag: hasFlag('--system-prompt'),
50
+ includePartialMessagesFlag: hasFlag('--include-partial-messages'),
51
+ permissionModeFlag: hasFlag('--permission-mode'),
52
+ maxBudgetFlag: hasFlag('--max-budget-usd'),
53
+ inputFormatFlag: hasFlag('--input-format'),
54
+ betasFlag: hasFlag('--betas'),
55
+ noSessionPersistenceFlag: hasFlag('--no-session-persistence'),
56
+ sessionIdFlag: hasFlag('--session-id'),
57
+ resumeFlag: hasFlag('--resume'),
58
+ verboseFlag: hasFlag('--verbose'),
59
+ settingsFlag: hasFlag('--settings'),
60
+ settingSourcesFlag: hasFlag('--setting-sources'),
61
+ disableSlashCommandsFlag: hasFlag('--disable-slash-commands'),
62
+ strictMcpConfigFlag: hasFlag('--strict-mcp-config'),
63
+ mcpConfigFlag: hasFlag('--mcp-config'),
64
+ pluginDirFlag: hasFlag('--plugin-dir'),
65
+ };
66
+ }
67
+ //# sourceMappingURL=claude-support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-support.js","sourceRoot":"","sources":["../../src/subagent-adapters/claude-support.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SubagentAdapter } from './types.js';
2
+ export declare function createCodexAdapter(): SubagentAdapter;
3
+ //# sourceMappingURL=codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/subagent-adapters/codex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAShB,MAAM,YAAY,CAAA;AAgLnB,wBAAgB,kBAAkB,IAAI,eAAe,CAmFpD"}
@@ -0,0 +1,241 @@
1
+ import { SUBAGENT_SCHEMA_VERSION } from './types.js';
2
+ const CODEX_COMMAND = process.env.PANORAMA_CODEX_CLI || process.env.CODEX_CLI || 'codex';
3
+ const CODEX_GATEWAY_HOME = process.env.PANORAMA_CODEX_HOME || null;
4
+ const CODEX_ENV_ALLOWLIST = [
5
+ 'PATH',
6
+ 'HOME',
7
+ 'USER',
8
+ 'LOGNAME',
9
+ 'SHELL',
10
+ 'LANG',
11
+ 'LC_ALL',
12
+ 'LC_CTYPE',
13
+ 'TERM',
14
+ 'TMPDIR',
15
+ 'TMP',
16
+ 'TEMP',
17
+ 'HTTP_PROXY',
18
+ 'HTTPS_PROXY',
19
+ 'NO_PROXY',
20
+ 'http_proxy',
21
+ 'https_proxy',
22
+ 'no_proxy',
23
+ ];
24
+ function buildCodexEnv() {
25
+ const env = {};
26
+ for (const key of CODEX_ENV_ALLOWLIST) {
27
+ const value = process.env[key];
28
+ if (value !== undefined) {
29
+ env[key] = value;
30
+ }
31
+ }
32
+ if (CODEX_GATEWAY_HOME) {
33
+ env.HOME = CODEX_GATEWAY_HOME;
34
+ }
35
+ return env;
36
+ }
37
+ function normalizeStringList(value) {
38
+ if (Array.isArray(value)) {
39
+ const items = value.map((item) => String(item).trim()).filter((item) => item.length > 0);
40
+ return items.length > 0 ? items : null;
41
+ }
42
+ if (typeof value === 'string') {
43
+ const trimmed = value.trim();
44
+ if (!trimmed)
45
+ return null;
46
+ return trimmed.split(',').map((item) => item.trim()).filter((item) => item.length > 0);
47
+ }
48
+ return null;
49
+ }
50
+ function includesWebSearch(value) {
51
+ const list = normalizeStringList(value);
52
+ if (!list)
53
+ return false;
54
+ return list.some((item) => item.toLowerCase().replace(/[^a-z]/g, '') === 'websearch');
55
+ }
56
+ function toOutputEnvelope(content, contentType) {
57
+ return {
58
+ schema_version: SUBAGENT_SCHEMA_VERSION,
59
+ content,
60
+ content_type: contentType,
61
+ };
62
+ }
63
+ function stripCodeFence(text) {
64
+ const trimmed = text.trim();
65
+ if (trimmed.startsWith('```')) {
66
+ return trimmed.replace(/^```(?:json)?\n?/i, '').replace(/```$/i, '').trim();
67
+ }
68
+ return trimmed;
69
+ }
70
+ function tryParseJson(text) {
71
+ try {
72
+ const parsed = JSON.parse(text);
73
+ return { ok: true, value: parsed };
74
+ }
75
+ catch {
76
+ return { ok: false };
77
+ }
78
+ }
79
+ function extractJsonCandidate(text) {
80
+ const trimmed = text.trim();
81
+ const fenceMatch = trimmed.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);
82
+ if (fenceMatch) {
83
+ return { candidate: fenceMatch[1].trim(), looksLikeJson: true };
84
+ }
85
+ const firstObject = trimmed.indexOf('{');
86
+ const lastObject = trimmed.lastIndexOf('}');
87
+ if (firstObject !== -1 && lastObject > firstObject) {
88
+ return { candidate: trimmed.slice(firstObject, lastObject + 1).trim(), looksLikeJson: true };
89
+ }
90
+ const firstArray = trimmed.indexOf('[');
91
+ const lastArray = trimmed.lastIndexOf(']');
92
+ if (firstArray !== -1 && lastArray > firstArray) {
93
+ return { candidate: trimmed.slice(firstArray, lastArray + 1).trim(), looksLikeJson: true };
94
+ }
95
+ return { candidate: stripCodeFence(trimmed), looksLikeJson: trimmed.startsWith('{') || trimmed.startsWith('[') };
96
+ }
97
+ function extractJsonFromText(text, options) {
98
+ const { candidate, looksLikeJson } = extractJsonCandidate(text);
99
+ const parsed = tryParseJson(candidate);
100
+ if (parsed.ok) {
101
+ return { output: toOutputEnvelope(parsed.value, 'json') };
102
+ }
103
+ if (options?.strict || looksLikeJson) {
104
+ return {
105
+ output: toOutputEnvelope(text.trim(), 'markdown'),
106
+ parseError: 'Failed to parse JSON output',
107
+ };
108
+ }
109
+ return { output: toOutputEnvelope(text.trim(), 'markdown') };
110
+ }
111
+ function findLastAgentMessage(events) {
112
+ for (let i = events.length - 1; i >= 0; i -= 1) {
113
+ const event = events[i].event;
114
+ if (!event || typeof event !== 'object')
115
+ continue;
116
+ if (event.type === 'item.completed') {
117
+ const item = event.item;
118
+ if (item && item.type === 'agent_message' && typeof item.text === 'string') {
119
+ return item.text;
120
+ }
121
+ }
122
+ }
123
+ return null;
124
+ }
125
+ function extractUsage(events) {
126
+ for (let i = events.length - 1; i >= 0; i -= 1) {
127
+ const event = events[i].event;
128
+ if (!event || typeof event !== 'object')
129
+ continue;
130
+ if (event.type === 'turn.completed' && typeof event.usage === 'object') {
131
+ return event.usage;
132
+ }
133
+ }
134
+ return null;
135
+ }
136
+ function normalizeStreamEvents(events) {
137
+ const normalized = [];
138
+ for (const entry of events) {
139
+ const event = entry.event;
140
+ if (!event || typeof event !== 'object')
141
+ continue;
142
+ const type = event.type;
143
+ if (type === 'item.completed') {
144
+ const item = event.item;
145
+ if (!item)
146
+ continue;
147
+ if (item.type === 'agent_message' && typeof item.text === 'string') {
148
+ normalized.push({
149
+ event_type: 'message',
150
+ payload: { role: 'assistant', content: item.text },
151
+ });
152
+ }
153
+ if (item.type === 'reasoning' && typeof item.text === 'string') {
154
+ normalized.push({
155
+ event_type: 'message',
156
+ payload: { role: 'assistant', content: item.text, kind: 'reasoning' },
157
+ });
158
+ }
159
+ }
160
+ }
161
+ return normalized;
162
+ }
163
+ export function createCodexAdapter() {
164
+ return {
165
+ id: 'codex',
166
+ label: 'OpenAI Codex',
167
+ supportsContinuation: false,
168
+ buildRunPlan(context) {
169
+ const config = context.config ?? {};
170
+ const rawOutputFormat = typeof config.output_format === 'string' ? config.output_format : '';
171
+ const outputFormat = rawOutputFormat === 'text'
172
+ ? 'text'
173
+ : rawOutputFormat === 'json'
174
+ ? 'json'
175
+ : 'stream-json';
176
+ const args = [
177
+ 'exec',
178
+ '--sandbox',
179
+ 'read-only',
180
+ '--skip-git-repo-check',
181
+ ];
182
+ const model = typeof config.model === 'string' ? config.model.trim() : '';
183
+ if (model) {
184
+ args.push('--model', model);
185
+ }
186
+ const supportFlags = context.support ?? {};
187
+ if (supportFlags.configFlag !== false) {
188
+ const effort = typeof config.reasoning_effort === 'string' ? config.reasoning_effort : 'high';
189
+ args.push('-c', `model_reasoning_effort="${effort}"`);
190
+ args.push('-c', 'features.shell_tool=false');
191
+ const enableSearch = includesWebSearch(config.allowed_tools);
192
+ args.push('-c', `features.web_search_request=${enableSearch ? 'true' : 'false'}`);
193
+ args.push('-c', 'mcp_servers.beads.enabled=false');
194
+ }
195
+ if (outputFormat === 'stream-json') {
196
+ args.push('--json');
197
+ }
198
+ let prompt = context.prompt;
199
+ const appendSystemPrompt = typeof config.append_system_prompt === 'string' ? config.append_system_prompt.trim() : '';
200
+ if (appendSystemPrompt) {
201
+ prompt = `${prompt}\n\n${appendSystemPrompt}`;
202
+ }
203
+ args.push(prompt);
204
+ return {
205
+ command: CODEX_COMMAND,
206
+ args,
207
+ outputFormat,
208
+ timeoutMs: typeof config.timeout_ms === 'number' ? config.timeout_ms : null,
209
+ env: buildCodexEnv(),
210
+ };
211
+ },
212
+ normalizeRunResult({ stdout, outputFormat }) {
213
+ if (outputFormat === 'json') {
214
+ try {
215
+ const parsed = JSON.parse(stdout);
216
+ return { output: toOutputEnvelope(parsed, 'json'), metadata: { adapter_id: 'codex' }, rawResponse: parsed };
217
+ }
218
+ catch (error) {
219
+ const parseError = error instanceof Error ? error.message : 'Failed to parse JSON output';
220
+ return {
221
+ output: toOutputEnvelope(stdout.trim(), 'markdown'),
222
+ metadata: { adapter_id: 'codex' },
223
+ parseError,
224
+ };
225
+ }
226
+ }
227
+ return { output: toOutputEnvelope(stdout.trim(), 'markdown'), metadata: { adapter_id: 'codex' } };
228
+ },
229
+ normalizeStreamingResult({ events, rawOutput }) {
230
+ const outputText = findLastAgentMessage(events) ?? rawOutput.trim();
231
+ const { output, parseError } = extractJsonFromText(outputText, { strict: false });
232
+ const metadata = { adapter_id: 'codex' };
233
+ const usage = extractUsage(events);
234
+ if (usage)
235
+ metadata.usage = usage;
236
+ return { output, metadata, parseError: parseError ?? undefined };
237
+ },
238
+ normalizeStreamEvents,
239
+ };
240
+ }
241
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/subagent-adapters/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SubagentAdapter } from './types.js';
2
+ export declare function createGeminiAdapter(): SubagentAdapter;
3
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/subagent-adapters/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAShB,MAAM,YAAY,CAAA;AA6LnB,wBAAgB,mBAAmB,IAAI,eAAe,CAwFrD"}
@@ -0,0 +1,257 @@
1
+ import { SUBAGENT_SCHEMA_VERSION } from './types.js';
2
+ import path from 'node:path';
3
+ const GEMINI_COMMAND = process.env.PANORAMA_GEMINI_CLI || process.env.GEMINI_CLI || 'gemini';
4
+ const GEMINI_GATEWAY_HOME = process.env.PANORAMA_GEMINI_HOME || null;
5
+ const GEMINI_ENV_ALLOWLIST = [
6
+ 'PATH',
7
+ 'HOME',
8
+ 'USER',
9
+ 'LOGNAME',
10
+ 'SHELL',
11
+ 'LANG',
12
+ 'LC_ALL',
13
+ 'LC_CTYPE',
14
+ 'TERM',
15
+ 'TMPDIR',
16
+ 'TMP',
17
+ 'TEMP',
18
+ 'HTTP_PROXY',
19
+ 'HTTPS_PROXY',
20
+ 'NO_PROXY',
21
+ 'http_proxy',
22
+ 'https_proxy',
23
+ 'no_proxy',
24
+ ];
25
+ function buildGeminiEnv(systemPromptPath) {
26
+ const env = {};
27
+ for (const key of GEMINI_ENV_ALLOWLIST) {
28
+ const value = process.env[key];
29
+ if (value !== undefined) {
30
+ env[key] = value;
31
+ }
32
+ }
33
+ if (GEMINI_GATEWAY_HOME) {
34
+ env.HOME = GEMINI_GATEWAY_HOME;
35
+ }
36
+ if (systemPromptPath) {
37
+ env.GEMINI_SYSTEM_MD = systemPromptPath;
38
+ }
39
+ return env;
40
+ }
41
+ function normalizeStringList(value) {
42
+ if (Array.isArray(value)) {
43
+ const items = value.map((item) => String(item).trim()).filter((item) => item.length > 0);
44
+ return items.length > 0 ? items : null;
45
+ }
46
+ if (typeof value === 'string') {
47
+ const trimmed = value.trim();
48
+ if (!trimmed)
49
+ return null;
50
+ const items = trimmed
51
+ .split(',')
52
+ .map((item) => item.trim())
53
+ .filter((item) => item.length > 0);
54
+ return items.length > 0 ? items : null;
55
+ }
56
+ return null;
57
+ }
58
+ function toOutputEnvelope(content, contentType) {
59
+ return {
60
+ schema_version: SUBAGENT_SCHEMA_VERSION,
61
+ content,
62
+ content_type: contentType,
63
+ };
64
+ }
65
+ function stripCodeFence(text) {
66
+ const trimmed = text.trim();
67
+ if (trimmed.startsWith('```')) {
68
+ return trimmed.replace(/^```(?:json)?\n?/i, '').replace(/```$/i, '').trim();
69
+ }
70
+ return trimmed;
71
+ }
72
+ function tryParseJson(text) {
73
+ try {
74
+ const parsed = JSON.parse(text);
75
+ return { ok: true, value: parsed };
76
+ }
77
+ catch {
78
+ return { ok: false };
79
+ }
80
+ }
81
+ function extractJsonCandidate(text) {
82
+ const trimmed = text.trim();
83
+ const fenceMatch = trimmed.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);
84
+ if (fenceMatch) {
85
+ return { candidate: fenceMatch[1].trim(), looksLikeJson: true };
86
+ }
87
+ const firstObject = trimmed.indexOf('{');
88
+ const lastObject = trimmed.lastIndexOf('}');
89
+ if (firstObject !== -1 && lastObject > firstObject) {
90
+ return { candidate: trimmed.slice(firstObject, lastObject + 1).trim(), looksLikeJson: true };
91
+ }
92
+ const firstArray = trimmed.indexOf('[');
93
+ const lastArray = trimmed.lastIndexOf(']');
94
+ if (firstArray !== -1 && lastArray > firstArray) {
95
+ return { candidate: trimmed.slice(firstArray, lastArray + 1).trim(), looksLikeJson: true };
96
+ }
97
+ return { candidate: stripCodeFence(trimmed), looksLikeJson: trimmed.startsWith('{') || trimmed.startsWith('[') };
98
+ }
99
+ function extractJsonFromText(text, options) {
100
+ const { candidate, looksLikeJson } = extractJsonCandidate(text);
101
+ const parsed = tryParseJson(candidate);
102
+ if (parsed.ok) {
103
+ return { output: toOutputEnvelope(parsed.value, 'json') };
104
+ }
105
+ if (options?.strict || looksLikeJson) {
106
+ return {
107
+ output: toOutputEnvelope(text.trim(), 'markdown'),
108
+ parseError: 'Failed to parse JSON output',
109
+ };
110
+ }
111
+ return { output: toOutputEnvelope(text.trim(), 'markdown') };
112
+ }
113
+ function findLastAssistantMessage(events) {
114
+ for (let i = events.length - 1; i >= 0; i -= 1) {
115
+ const event = events[i].event;
116
+ if (!event || typeof event !== 'object')
117
+ continue;
118
+ if (event.type === 'message') {
119
+ const role = event.role;
120
+ const content = event.content;
121
+ if (role === 'assistant' && typeof content === 'string') {
122
+ return content;
123
+ }
124
+ }
125
+ }
126
+ return null;
127
+ }
128
+ function concatenateAssistantMessages(events) {
129
+ const chunks = [];
130
+ for (const entry of events) {
131
+ const event = entry.event;
132
+ if (!event || typeof event !== 'object')
133
+ continue;
134
+ if (event.type === 'message') {
135
+ const role = event.role;
136
+ const content = event.content;
137
+ if (role === 'assistant' && typeof content === 'string') {
138
+ chunks.push(content);
139
+ }
140
+ }
141
+ }
142
+ if (chunks.length === 0)
143
+ return null;
144
+ return chunks.join('').trim();
145
+ }
146
+ function extractUsage(events) {
147
+ for (let i = events.length - 1; i >= 0; i -= 1) {
148
+ const event = events[i].event;
149
+ if (!event || typeof event !== 'object')
150
+ continue;
151
+ if (event.type === 'result') {
152
+ const stats = event.stats;
153
+ if (stats && typeof stats === 'object') {
154
+ return stats;
155
+ }
156
+ }
157
+ }
158
+ return null;
159
+ }
160
+ function normalizeStreamEvents(events) {
161
+ const normalized = [];
162
+ for (const entry of events) {
163
+ const event = entry.event;
164
+ if (!event || typeof event !== 'object')
165
+ continue;
166
+ if (event.type === 'message') {
167
+ const role = event.role;
168
+ const content = event.content;
169
+ if (typeof role === 'string' && typeof content === 'string') {
170
+ normalized.push({ event_type: 'message', payload: { role, content } });
171
+ }
172
+ }
173
+ }
174
+ return normalized;
175
+ }
176
+ export function createGeminiAdapter() {
177
+ return {
178
+ id: 'gemini',
179
+ label: 'Gemini CLI',
180
+ supportsContinuation: false,
181
+ buildRunPlan(context) {
182
+ const config = context.config ?? {};
183
+ const rawOutputFormat = typeof config.output_format === 'string' ? config.output_format : '';
184
+ const outputFormat = rawOutputFormat === 'text'
185
+ ? 'text'
186
+ : rawOutputFormat === 'json'
187
+ ? 'json'
188
+ : 'stream-json';
189
+ const args = ['--output-format', outputFormat === 'stream-json' ? 'stream-json' : 'json'];
190
+ const model = typeof config.model === 'string' ? config.model.trim() : '';
191
+ if (model) {
192
+ args.push('--model', model);
193
+ }
194
+ const extensions = normalizeStringList(config.extensions);
195
+ if (extensions && extensions.length > 0) {
196
+ args.push('--extensions', extensions.join(','));
197
+ }
198
+ let prompt = context.prompt;
199
+ const systemPrompt = typeof config.system_prompt === 'string' ? config.system_prompt.trim() : '';
200
+ const appendSystemPrompt = typeof config.append_system_prompt === 'string' ? config.append_system_prompt.trim() : '';
201
+ const finalSystemPrompt = [systemPrompt, appendSystemPrompt]
202
+ .map((value) => value.trim())
203
+ .filter((value) => value.length > 0)
204
+ .join('\n');
205
+ const jsonOnly = outputFormat === 'json';
206
+ const systemContents = finalSystemPrompt
207
+ ? jsonOnly
208
+ ? `${finalSystemPrompt}\nReturn STRICT JSON only. Do not wrap in code fences.`
209
+ : finalSystemPrompt
210
+ : jsonOnly
211
+ ? 'Return STRICT JSON only. Do not wrap in code fences.'
212
+ : '';
213
+ const files = systemContents
214
+ ? [{ path: 'system.md', contents: systemContents }]
215
+ : [];
216
+ args.push(prompt);
217
+ return {
218
+ command: GEMINI_COMMAND,
219
+ args,
220
+ outputFormat,
221
+ timeoutMs: typeof config.timeout_ms === 'number' ? config.timeout_ms : null,
222
+ env: systemContents ? buildGeminiEnv(path.join('{WORKDIR}', 'system.md')) : buildGeminiEnv(),
223
+ files,
224
+ };
225
+ },
226
+ normalizeRunResult({ stdout, outputFormat }) {
227
+ if (outputFormat === 'json') {
228
+ try {
229
+ const parsed = JSON.parse(stdout);
230
+ const response = typeof parsed.response === 'string' ? parsed.response : '';
231
+ const { output, parseError } = extractJsonFromText(response);
232
+ return { output, metadata: { adapter_id: 'gemini' }, parseError };
233
+ }
234
+ catch (error) {
235
+ const parseError = error instanceof Error ? error.message : 'Failed to parse JSON output';
236
+ return {
237
+ output: toOutputEnvelope(stdout.trim(), 'markdown'),
238
+ metadata: { adapter_id: 'gemini' },
239
+ parseError,
240
+ };
241
+ }
242
+ }
243
+ return { output: toOutputEnvelope(stdout.trim(), 'markdown'), metadata: { adapter_id: 'gemini' } };
244
+ },
245
+ normalizeStreamingResult({ events, rawOutput }) {
246
+ const outputText = concatenateAssistantMessages(events) ?? findLastAssistantMessage(events) ?? rawOutput.trim();
247
+ const { output, parseError } = extractJsonFromText(outputText, { strict: false });
248
+ const metadata = { adapter_id: 'gemini' };
249
+ const usage = extractUsage(events);
250
+ if (usage)
251
+ metadata.usage = usage;
252
+ return { output, metadata, parseError: parseError ?? undefined };
253
+ },
254
+ normalizeStreamEvents,
255
+ };
256
+ }
257
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/subagent-adapters/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { SubagentAdapter } from './types.js';
2
+ export declare function getSubagentAdapter(subagentType: string): SubagentAdapter | null;
3
+ export declare function listSubagentAdapters(): SubagentAdapter[];
4
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/subagent-adapters/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAgBjD,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAE/E;AAED,wBAAgB,oBAAoB,IAAI,eAAe,EAAE,CAExD"}
@@ -0,0 +1,19 @@
1
+ import { createClaudeCodeAdapter } from './claude-code.js';
2
+ import { createCodexAdapter } from './codex.js';
3
+ import { createGeminiAdapter } from './gemini.js';
4
+ const claudeAdapter = createClaudeCodeAdapter();
5
+ const codexAdapter = createCodexAdapter();
6
+ const geminiAdapter = createGeminiAdapter();
7
+ const SUBAGENT_ADAPTERS = {
8
+ claude_code_gateway: claudeAdapter,
9
+ claude_code_local: claudeAdapter,
10
+ codex_gateway: codexAdapter,
11
+ gemini_gateway: geminiAdapter,
12
+ };
13
+ export function getSubagentAdapter(subagentType) {
14
+ return SUBAGENT_ADAPTERS[subagentType] ?? null;
15
+ }
16
+ export function listSubagentAdapters() {
17
+ return Array.from(new Set(Object.values(SUBAGENT_ADAPTERS)));
18
+ }
19
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/subagent-adapters/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,MAAM,aAAa,GAAG,uBAAuB,EAAE,CAAA;AAC/C,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAA;AACzC,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAA;AAE3C,MAAM,iBAAiB,GAAoC;IACzD,mBAAmB,EAAE,aAAa;IAClC,iBAAiB,EAAE,aAAa;IAChC,aAAa,EAAE,YAAY;IAC3B,cAAc,EAAE,aAAa;CAC9B,CAAA;AAED,MAAM,UAAU,kBAAkB,CAAC,YAAoB;IACrD,OAAO,iBAAiB,CAAC,YAAY,CAAC,IAAI,IAAI,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAA;AAC9D,CAAC"}