agent-pipeline 0.1.1 → 0.1.2

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 (46) hide show
  1. package/CLAUDE.md +2 -0
  2. package/LICENSE +1 -1
  3. package/README.md +20 -10
  4. package/dist/cli/commands/init.d.ts.map +1 -1
  5. package/dist/cli/commands/init.js +36 -70
  6. package/dist/cli/commands/init.js.map +1 -1
  7. package/dist/cli/templates/agents/frontend-agents/showcase.md +3 -3
  8. package/dist/cli/templates/instructions/loop.md +13 -9
  9. package/dist/cli/templates/schema/pipeline-config.schema.json +1 -1
  10. package/dist/cli/templates/schema/pipeline-config.schema.yaml +2 -1
  11. package/dist/config/schema.d.ts +0 -1
  12. package/dist/config/schema.d.ts.map +1 -1
  13. package/dist/core/agent-runtimes/codex-headless-runtime.d.ts +27 -0
  14. package/dist/core/agent-runtimes/codex-headless-runtime.d.ts.map +1 -0
  15. package/dist/core/agent-runtimes/codex-headless-runtime.js +623 -0
  16. package/dist/core/agent-runtimes/codex-headless-runtime.js.map +1 -0
  17. package/dist/core/agent-runtimes/openai-compatible-runtime.d.ts +17 -0
  18. package/dist/core/agent-runtimes/openai-compatible-runtime.d.ts.map +1 -0
  19. package/dist/core/agent-runtimes/openai-compatible-runtime.js +231 -0
  20. package/dist/core/agent-runtimes/openai-compatible-runtime.js.map +1 -0
  21. package/dist/core/group-execution-orchestrator.d.ts +1 -4
  22. package/dist/core/group-execution-orchestrator.d.ts.map +1 -1
  23. package/dist/core/group-execution-orchestrator.js +5 -5
  24. package/dist/core/group-execution-orchestrator.js.map +1 -1
  25. package/dist/core/instruction-loader.d.ts.map +1 -1
  26. package/dist/core/instruction-loader.js +21 -10
  27. package/dist/core/instruction-loader.js.map +1 -1
  28. package/dist/core/parallel-executor.d.ts +2 -6
  29. package/dist/core/parallel-executor.d.ts.map +1 -1
  30. package/dist/core/parallel-executor.js +6 -10
  31. package/dist/core/parallel-executor.js.map +1 -1
  32. package/dist/core/pipeline-initializer.js +1 -1
  33. package/dist/core/pipeline-initializer.js.map +1 -1
  34. package/dist/core/pipeline-runner.d.ts +2 -0
  35. package/dist/core/pipeline-runner.d.ts.map +1 -1
  36. package/dist/core/pipeline-runner.js +89 -11
  37. package/dist/core/pipeline-runner.js.map +1 -1
  38. package/dist/core/stage-executor.d.ts +7 -7
  39. package/dist/core/stage-executor.d.ts.map +1 -1
  40. package/dist/core/stage-executor.js +48 -61
  41. package/dist/core/stage-executor.js.map +1 -1
  42. package/dist/index.js +29 -0
  43. package/dist/index.js.map +1 -1
  44. package/dist/validators/runtime-validator.js +1 -1
  45. package/dist/validators/runtime-validator.js.map +1 -1
  46. package/package.json +2 -2
@@ -0,0 +1,623 @@
1
+ import { spawn } from 'child_process';
2
+ import * as fs from 'fs/promises';
3
+ import * as os from 'os';
4
+ import * as path from 'path';
5
+ import { PipelineAbortError } from '../abort-controller.js';
6
+ export class CodexHeadlessRuntime {
7
+ type = 'codex-headless';
8
+ name = 'Codex Headless Mode';
9
+ async execute(request, abortController) {
10
+ if (abortController?.aborted) {
11
+ throw new PipelineAbortError('Pipeline aborted before agent execution started');
12
+ }
13
+ const { options } = request;
14
+ const outputDir = await fs.mkdtemp(path.join(os.tmpdir(), 'codex-'));
15
+ const outputPath = path.join(outputDir, 'output.txt');
16
+ const prompt = this.buildPrompt(request);
17
+ const args = this.buildCliArgs(request, outputPath);
18
+ const cliResult = await this.executeCodexCLI(args, {
19
+ timeout: options.timeout ? options.timeout * 1000 : 120000,
20
+ onOutputUpdate: options.onOutputUpdate,
21
+ cwd: options.runtimeOptions?.cwd,
22
+ abortController,
23
+ stdinInput: prompt
24
+ });
25
+ const textOutput = await this.readOutputFile(outputPath, cliResult.stdout);
26
+ let extractedData = this.extractOutputsFromText(textOutput, options.outputKeys || []);
27
+ const tokenUsage = cliResult.tokenUsage
28
+ ? this.normalizeTokenUsage(cliResult.tokenUsage)
29
+ : undefined;
30
+ return {
31
+ textOutput,
32
+ extractedData,
33
+ tokenUsage,
34
+ numTurns: cliResult.numTurns,
35
+ metadata: {
36
+ runtime: this.type,
37
+ durationMs: cliResult.durationMs
38
+ }
39
+ };
40
+ }
41
+ getCapabilities() {
42
+ return {
43
+ supportsStreaming: true,
44
+ supportsTokenTracking: false,
45
+ supportsMCP: false,
46
+ supportsContextReduction: false,
47
+ availableModels: [],
48
+ permissionModes: ['default', 'acceptEdits', 'bypassPermissions', 'plan']
49
+ };
50
+ }
51
+ async validate() {
52
+ try {
53
+ await this.executeCodexCLI(['--version'], { timeout: 5000 });
54
+ return {
55
+ valid: true,
56
+ errors: [],
57
+ warnings: []
58
+ };
59
+ }
60
+ catch (err) {
61
+ const error = err;
62
+ return {
63
+ valid: false,
64
+ errors: [`Codex CLI not found or not working: ${error.message}`],
65
+ warnings: [
66
+ 'Install Codex CLI with: npm install -g @openai/codex',
67
+ 'Authenticate with: codex'
68
+ ]
69
+ };
70
+ }
71
+ }
72
+ buildPrompt(request) {
73
+ const { systemPrompt, userPrompt } = request;
74
+ return systemPrompt?.trim()
75
+ ? `${systemPrompt.trim()}\n\n${userPrompt}`
76
+ : userPrompt;
77
+ }
78
+ buildCliArgs(request, outputPath) {
79
+ const { options } = request;
80
+ const args = ['exec'];
81
+ const runtimeOpts = options.runtimeOptions || {};
82
+ args.push('--output-last-message', outputPath);
83
+ args.push('--color', 'never');
84
+ args.push('--json');
85
+ if (runtimeOpts.cwd && typeof runtimeOpts.cwd === 'string') {
86
+ args.push('--cd', runtimeOpts.cwd);
87
+ }
88
+ const hasExplicitSafety = Boolean(runtimeOpts.fullAuto ||
89
+ runtimeOpts.sandbox ||
90
+ runtimeOpts.dangerouslyBypassApprovalsAndSandbox ||
91
+ runtimeOpts.yolo);
92
+ if (!hasExplicitSafety && options.permissionMode) {
93
+ switch (options.permissionMode) {
94
+ case 'acceptEdits':
95
+ args.push('--full-auto');
96
+ break;
97
+ case 'bypassPermissions':
98
+ args.push('--dangerously-bypass-approvals-and-sandbox');
99
+ break;
100
+ case 'plan':
101
+ args.push('--sandbox', 'read-only');
102
+ break;
103
+ case 'default':
104
+ default:
105
+ break;
106
+ }
107
+ }
108
+ if (runtimeOpts.fullAuto === true) {
109
+ args.push('--full-auto');
110
+ }
111
+ if (runtimeOpts.sandbox && typeof runtimeOpts.sandbox === 'string') {
112
+ args.push('--sandbox', runtimeOpts.sandbox);
113
+ }
114
+ if (runtimeOpts.dangerouslyBypassApprovalsAndSandbox === true || runtimeOpts.yolo === true) {
115
+ args.push('--dangerously-bypass-approvals-and-sandbox');
116
+ }
117
+ if (options.model) {
118
+ args.push('--model', String(options.model));
119
+ }
120
+ const outputSchema = runtimeOpts.outputSchemaPath || runtimeOpts.outputSchema;
121
+ if (outputSchema && typeof outputSchema === 'string') {
122
+ args.push('--output-schema', outputSchema);
123
+ }
124
+ if (runtimeOpts.profile && typeof runtimeOpts.profile === 'string') {
125
+ args.push('--profile', runtimeOpts.profile);
126
+ }
127
+ if (runtimeOpts.config) {
128
+ const configs = Array.isArray(runtimeOpts.config)
129
+ ? runtimeOpts.config
130
+ : [runtimeOpts.config];
131
+ for (const config of configs) {
132
+ if (typeof config === 'string') {
133
+ args.push('--config', config);
134
+ }
135
+ }
136
+ }
137
+ if (runtimeOpts.skipGitRepoCheck === true) {
138
+ args.push('--skip-git-repo-check');
139
+ }
140
+ if (runtimeOpts.oss === true) {
141
+ args.push('--oss');
142
+ }
143
+ if (Array.isArray(runtimeOpts.args)) {
144
+ for (const value of runtimeOpts.args) {
145
+ if (typeof value === 'string') {
146
+ args.push(value);
147
+ }
148
+ }
149
+ }
150
+ args.push('-');
151
+ return args;
152
+ }
153
+ async executeCodexCLI(args, options) {
154
+ return new Promise((resolve, reject) => {
155
+ const timeout = options.timeout || 120000;
156
+ let stdout = '';
157
+ let stderr = '';
158
+ let timedOut = false;
159
+ let aborted = false;
160
+ let child = null;
161
+ const startTime = Date.now();
162
+ let jsonBuffer = '';
163
+ let jsonErrBuffer = '';
164
+ const emittedToolCallIds = new Set();
165
+ const timer = setTimeout(() => {
166
+ timedOut = true;
167
+ if (child) {
168
+ child.kill('SIGTERM');
169
+ setTimeout(() => {
170
+ if (child && !child.killed) {
171
+ child.kill('SIGKILL');
172
+ }
173
+ }, 5000);
174
+ }
175
+ }, timeout);
176
+ const abortHandler = () => {
177
+ aborted = true;
178
+ if (child && !child.killed) {
179
+ child.kill('SIGTERM');
180
+ setTimeout(() => {
181
+ if (child && !child.killed) {
182
+ child.kill('SIGKILL');
183
+ }
184
+ }, 5000);
185
+ }
186
+ };
187
+ if (options.abortController) {
188
+ options.abortController.on('abort', abortHandler);
189
+ }
190
+ try {
191
+ child = spawn('codex', args, {
192
+ stdio: ['pipe', 'pipe', 'pipe'],
193
+ shell: false,
194
+ cwd: options.cwd || process.cwd()
195
+ });
196
+ if (options.abortController) {
197
+ options.abortController.registerProcess(child);
198
+ }
199
+ child.stdout?.on('data', (data) => {
200
+ const chunk = data.toString();
201
+ stdout += chunk;
202
+ if (options.onOutputUpdate) {
203
+ jsonBuffer += chunk;
204
+ const lines = jsonBuffer.split('\n');
205
+ jsonBuffer = lines.pop() ?? '';
206
+ for (const line of lines) {
207
+ const trimmed = line.trim();
208
+ if (!trimmed)
209
+ continue;
210
+ try {
211
+ const parsed = JSON.parse(trimmed);
212
+ const activities = this.extractToolActivities(parsed, emittedToolCallIds);
213
+ for (const activity of activities) {
214
+ options.onOutputUpdate(activity);
215
+ }
216
+ }
217
+ catch {
218
+ }
219
+ }
220
+ }
221
+ });
222
+ child.stderr?.on('data', (data) => {
223
+ const chunk = data.toString();
224
+ stderr += chunk;
225
+ if (options.onOutputUpdate) {
226
+ jsonErrBuffer += chunk;
227
+ const lines = jsonErrBuffer.split('\n');
228
+ jsonErrBuffer = lines.pop() ?? '';
229
+ for (const line of lines) {
230
+ const trimmed = line.trim();
231
+ if (!trimmed)
232
+ continue;
233
+ try {
234
+ const parsed = JSON.parse(trimmed);
235
+ const activities = this.extractToolActivities(parsed, emittedToolCallIds);
236
+ for (const activity of activities) {
237
+ options.onOutputUpdate(activity);
238
+ }
239
+ }
240
+ catch {
241
+ }
242
+ }
243
+ }
244
+ });
245
+ if (options.stdinInput && child.stdin) {
246
+ child.stdin.write(options.stdinInput);
247
+ child.stdin.end();
248
+ }
249
+ child.on('exit', (code) => {
250
+ clearTimeout(timer);
251
+ if (options.abortController) {
252
+ options.abortController.off('abort', abortHandler);
253
+ }
254
+ if (aborted) {
255
+ reject(new PipelineAbortError('Agent execution aborted'));
256
+ return;
257
+ }
258
+ if (timedOut) {
259
+ reject(new Error(`Codex CLI execution timed out after ${timeout}ms. Process was terminated.`));
260
+ return;
261
+ }
262
+ if (code === 0) {
263
+ resolve({
264
+ stdout,
265
+ stderr,
266
+ exitCode: code || 0,
267
+ durationMs: Date.now() - startTime
268
+ });
269
+ }
270
+ else {
271
+ const stdoutPreview = stdout
272
+ ? `\nstdout (last 500 chars): ${stdout.slice(-500)}`
273
+ : '';
274
+ reject(new Error(`Codex CLI exited with code ${code}. stderr: ${stderr || '(empty)'}${stdoutPreview}`));
275
+ }
276
+ });
277
+ child.on('error', (err) => {
278
+ clearTimeout(timer);
279
+ if (options.abortController) {
280
+ options.abortController.off('abort', abortHandler);
281
+ }
282
+ reject(new Error(`Failed to spawn codex CLI: ${err.message}. ` +
283
+ 'Ensure Codex CLI is installed (npm install -g @openai/codex)'));
284
+ });
285
+ }
286
+ catch (err) {
287
+ clearTimeout(timer);
288
+ if (options.abortController) {
289
+ options.abortController.off('abort', abortHandler);
290
+ }
291
+ reject(err);
292
+ }
293
+ });
294
+ }
295
+ async readOutputFile(outputPath, fallback) {
296
+ try {
297
+ const content = await fs.readFile(outputPath, 'utf-8');
298
+ return content.trim() || fallback.trim();
299
+ }
300
+ catch {
301
+ const parsed = this.extractTextFromJsonOutput(fallback);
302
+ return parsed || fallback.trim();
303
+ }
304
+ }
305
+ normalizeTokenUsage(cliUsage) {
306
+ return {
307
+ inputTokens: cliUsage.input_tokens,
308
+ outputTokens: cliUsage.output_tokens,
309
+ totalTokens: cliUsage.input_tokens + cliUsage.output_tokens
310
+ };
311
+ }
312
+ extractOutputsFromText(textOutput, outputKeys) {
313
+ if (outputKeys.length === 0)
314
+ return undefined;
315
+ const jsonBlockMatch = textOutput.match(/```json\n([\s\S]*?)\n```/);
316
+ if (jsonBlockMatch) {
317
+ try {
318
+ const parsed = JSON.parse(jsonBlockMatch[1]);
319
+ const extracted = {};
320
+ let foundAny = false;
321
+ for (const key of outputKeys) {
322
+ if (key in parsed) {
323
+ extracted[key] = parsed[key];
324
+ foundAny = true;
325
+ }
326
+ }
327
+ if (foundAny)
328
+ return extracted;
329
+ }
330
+ catch {
331
+ }
332
+ }
333
+ const extracted = {};
334
+ for (const key of outputKeys) {
335
+ const escapedKey = this.escapeRegex(key);
336
+ const regex = new RegExp(`${escapedKey}:\\s*(.+)`, 'i');
337
+ const match = textOutput.match(regex);
338
+ if (match) {
339
+ extracted[key] = match[1].trim();
340
+ }
341
+ }
342
+ return Object.keys(extracted).length > 0 ? extracted : undefined;
343
+ }
344
+ escapeRegex(value) {
345
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
346
+ }
347
+ extractToolActivities(event, emittedToolCallIds) {
348
+ const activities = [];
349
+ const addActivity = (name, input, id) => {
350
+ if (typeof name !== 'string' || !name)
351
+ return;
352
+ if (typeof id === 'string' && emittedToolCallIds.has(id))
353
+ return;
354
+ if (typeof id === 'string')
355
+ emittedToolCallIds.add(id);
356
+ const activity = this.formatToolActivity(name, input);
357
+ if (activity)
358
+ activities.push(activity);
359
+ };
360
+ const toolTypes = new Set(['tool_use', 'tool_call', 'function_call', 'command_execution']);
361
+ const addFromObject = (obj) => {
362
+ if (!obj || typeof obj !== 'object')
363
+ return;
364
+ const name = obj.name ?? obj.tool_name ?? obj?.function?.name;
365
+ const input = obj.input ?? obj.arguments ?? obj.args ?? obj.parameters ?? obj.params ?? obj?.function?.arguments;
366
+ const id = obj.id ?? obj.tool_call_id ?? obj.call_id;
367
+ if (name) {
368
+ addActivity(name, input, id);
369
+ }
370
+ };
371
+ const scan = (node, depth) => {
372
+ if (!node || depth > 6)
373
+ return;
374
+ if (Array.isArray(node)) {
375
+ for (const entry of node) {
376
+ scan(entry, depth + 1);
377
+ }
378
+ return;
379
+ }
380
+ if (typeof node !== 'object')
381
+ return;
382
+ if (node.type === 'command_execution') {
383
+ const input = { command: node.command };
384
+ addActivity('command_execution', input, node.id);
385
+ }
386
+ if (node.type && toolTypes.has(node.type)) {
387
+ addFromObject(node);
388
+ }
389
+ if (node.tool_call) {
390
+ addFromObject(node.tool_call);
391
+ }
392
+ if (Array.isArray(node.tool_calls)) {
393
+ for (const call of node.tool_calls) {
394
+ addFromObject(call);
395
+ }
396
+ }
397
+ if (node.name &&
398
+ (node.arguments !== undefined || node.input !== undefined) &&
399
+ (String(node.type || '').includes('tool') || String(node.event || '').includes('tool'))) {
400
+ addActivity(node.name, node.arguments ?? node.input, node.id ?? node.tool_call_id);
401
+ }
402
+ for (const value of Object.values(node)) {
403
+ scan(value, depth + 1);
404
+ }
405
+ };
406
+ scan(event, 0);
407
+ return activities;
408
+ }
409
+ formatToolActivity(toolName, input) {
410
+ const icons = {
411
+ read: '📖',
412
+ read_file: '📖',
413
+ write: '📝',
414
+ write_file: '📝',
415
+ edit: '✏️',
416
+ edit_file: '✏️',
417
+ apply_patch: '✏️',
418
+ patch: '✏️',
419
+ shell: '🔧',
420
+ bash: '🔧',
421
+ exec: '🔧',
422
+ command_execution: '🔧',
423
+ list: '📂',
424
+ ls: '📂',
425
+ list_files: '📂',
426
+ glob: '🔍',
427
+ grep: '🔎',
428
+ search: '🔎',
429
+ ripgrep: '🔎',
430
+ web_search: '🔍',
431
+ websearch: '🔍',
432
+ web_fetch: '🌐',
433
+ fetch: '🌐',
434
+ http: '🌐'
435
+ };
436
+ const normalizedName = this.normalizeToolName(toolName);
437
+ const icon = icons[normalizedName] || '⚡';
438
+ const normalizedInput = this.normalizeToolInput(input);
439
+ const filePath = this.getFirstString(normalizedInput, [
440
+ 'file_path',
441
+ 'path',
442
+ 'file',
443
+ 'filename',
444
+ 'target'
445
+ ]);
446
+ const command = this.getFirstString(normalizedInput, [
447
+ 'command',
448
+ 'cmd',
449
+ 'shell',
450
+ 'script',
451
+ 'bash'
452
+ ]);
453
+ const pattern = this.getFirstString(normalizedInput, [
454
+ 'pattern',
455
+ 'query',
456
+ 'search',
457
+ 'glob',
458
+ 'regex'
459
+ ]);
460
+ const url = this.getFirstString(normalizedInput, ['url', 'uri', 'href']);
461
+ switch (normalizedName) {
462
+ case 'read':
463
+ case 'read_file':
464
+ return `${icon} Reading ${this.truncatePath(filePath)}`;
465
+ case 'write':
466
+ case 'write_file':
467
+ return `${icon} Writing ${this.truncatePath(filePath)}`;
468
+ case 'edit':
469
+ case 'edit_file':
470
+ case 'apply_patch':
471
+ case 'patch':
472
+ return `${icon} Editing ${this.truncatePath(filePath) || 'patch'}`;
473
+ case 'shell':
474
+ case 'bash':
475
+ case 'exec':
476
+ case 'command_execution': {
477
+ const rawCmd = this.simplifyCommand(command || this.getFirstString(normalizedInput, ['_raw']) || '');
478
+ const shortCmd = rawCmd.length > 50 ? rawCmd.substring(0, 47) + '...' : rawCmd;
479
+ return `${icon} Running: ${shortCmd}`;
480
+ }
481
+ case 'glob':
482
+ return `${icon} Finding ${pattern}`;
483
+ case 'grep':
484
+ case 'search':
485
+ case 'ripgrep':
486
+ return `${icon} Searching for "${pattern}"`;
487
+ case 'list':
488
+ case 'ls':
489
+ case 'list_files':
490
+ return `${icon} Listing ${this.truncatePath(filePath) || '.'}`;
491
+ case 'web_search':
492
+ case 'websearch':
493
+ return `${icon} Searching: ${pattern}`;
494
+ case 'web_fetch':
495
+ case 'fetch':
496
+ case 'http':
497
+ return `${icon} Fetching ${this.truncateUrl(url)}`;
498
+ default:
499
+ return `${icon} ${toolName}`;
500
+ }
501
+ }
502
+ normalizeToolName(toolName) {
503
+ const normalized = toolName.toLowerCase();
504
+ const parts = normalized.split(/[./:]/);
505
+ return parts[parts.length - 1] || normalized;
506
+ }
507
+ normalizeToolInput(input) {
508
+ if (!input)
509
+ return {};
510
+ if (typeof input === 'object' && !Array.isArray(input)) {
511
+ return input;
512
+ }
513
+ if (typeof input === 'string') {
514
+ const trimmed = input.trim();
515
+ if ((trimmed.startsWith('{') && trimmed.endsWith('}')) ||
516
+ (trimmed.startsWith('[') && trimmed.endsWith(']'))) {
517
+ try {
518
+ const parsed = JSON.parse(trimmed);
519
+ if (typeof parsed === 'object' && parsed !== null) {
520
+ return parsed;
521
+ }
522
+ }
523
+ catch {
524
+ }
525
+ }
526
+ return { _raw: input };
527
+ }
528
+ return { _raw: String(input) };
529
+ }
530
+ getFirstString(input, keys) {
531
+ for (const key of keys) {
532
+ const value = input[key];
533
+ if (typeof value === 'string' && value.trim()) {
534
+ return value;
535
+ }
536
+ }
537
+ return undefined;
538
+ }
539
+ truncatePath(filePath) {
540
+ if (!filePath)
541
+ return '';
542
+ const parts = filePath.split('/');
543
+ if (parts.length <= 2)
544
+ return filePath;
545
+ return '.../' + parts.slice(-2).join('/');
546
+ }
547
+ truncateUrl(url) {
548
+ if (!url)
549
+ return '';
550
+ try {
551
+ const parsed = new URL(url);
552
+ return parsed.hostname + (parsed.pathname.length > 20 ? parsed.pathname.substring(0, 17) + '...' : parsed.pathname);
553
+ }
554
+ catch {
555
+ return url.substring(0, 40);
556
+ }
557
+ }
558
+ simplifyCommand(command) {
559
+ const trimmed = command.trim();
560
+ const zshMatch = trimmed.match(/\/bin\/zsh -lc '([\s\S]*)'/);
561
+ if (zshMatch && zshMatch[1])
562
+ return zshMatch[1];
563
+ const bashMatch = trimmed.match(/\/bin\/bash -lc '([\s\S]*)'/);
564
+ if (bashMatch && bashMatch[1])
565
+ return bashMatch[1];
566
+ return trimmed;
567
+ }
568
+ extractTextFromJsonOutput(stdout) {
569
+ const lines = stdout.trim().split('\n');
570
+ let lastText;
571
+ for (const line of lines) {
572
+ const trimmed = line.trim();
573
+ if (!trimmed)
574
+ continue;
575
+ try {
576
+ const parsed = JSON.parse(trimmed);
577
+ const text = this.extractTextFromEvent(parsed);
578
+ if (text) {
579
+ lastText = text;
580
+ }
581
+ }
582
+ catch {
583
+ }
584
+ }
585
+ return lastText;
586
+ }
587
+ extractTextFromEvent(event) {
588
+ if (typeof event?.result === 'string')
589
+ return event.result;
590
+ if (typeof event?.output === 'string')
591
+ return event.output;
592
+ if (typeof event?.text === 'string')
593
+ return event.text;
594
+ if (typeof event?.output_text === 'string')
595
+ return event.output_text;
596
+ const messageContent = event?.message?.content;
597
+ if (Array.isArray(messageContent)) {
598
+ const textBlocks = messageContent
599
+ .map((block) => {
600
+ if (typeof block?.text === 'string')
601
+ return block.text;
602
+ if (block?.type === 'output_text' && typeof block?.text === 'string')
603
+ return block.text;
604
+ if (block?.type === 'text' && typeof block?.text === 'string')
605
+ return block.text;
606
+ return '';
607
+ })
608
+ .filter(Boolean);
609
+ if (textBlocks.length > 0)
610
+ return textBlocks.join('');
611
+ }
612
+ const item = event?.item;
613
+ if (item?.type === 'message' && Array.isArray(item?.content)) {
614
+ const textBlocks = item.content
615
+ .map((block) => (typeof block?.text === 'string' ? block.text : ''))
616
+ .filter(Boolean);
617
+ if (textBlocks.length > 0)
618
+ return textBlocks.join('');
619
+ }
620
+ return undefined;
621
+ }
622
+ }
623
+ //# sourceMappingURL=codex-headless-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-headless-runtime.js","sourceRoot":"","sources":["../../../src/core/agent-runtimes/codex-headless-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { AgentRuntime, AgentExecutionRequest, AgentExecutionResult, AgentRuntimeCapabilities, ValidationResult } from '../types/agent-runtime.js';
2
+ import { PipelineAbortController } from '../abort-controller.js';
3
+ export declare class OpenAICompatibleRuntime implements AgentRuntime {
4
+ readonly type = "openai-compatible";
5
+ readonly name = "OpenAI-Compatible API";
6
+ execute(request: AgentExecutionRequest, abortController?: PipelineAbortController): Promise<AgentExecutionResult>;
7
+ getCapabilities(): AgentRuntimeCapabilities;
8
+ validate(): Promise<ValidationResult>;
9
+ private resolveApiKey;
10
+ private resolveExplicitBaseUrl;
11
+ private handleNonStreamingResponse;
12
+ private handleStreamingResponse;
13
+ private normalizeTokenUsage;
14
+ private safeReadBody;
15
+ private parseErrorBody;
16
+ }
17
+ //# sourceMappingURL=openai-compatible-runtime.d.ts.map