forked from farhoodlabs/paperclip
2c3c2cf724
Add dynamic OpenAI model list fetching for codex adapter with caching, async listModels interface, reasoning effort support for both claude and codex adapters, optional timeouts (default to unlimited), wakeCommentId context propagation, and richer codex stdout event parsing/formatting. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import type { AdapterExecutionContext, AdapterExecutionResult } from "../types.js";
|
|
import { asString, asNumber, parseObject } from "../utils.js";
|
|
|
|
export async function execute(ctx: AdapterExecutionContext): Promise<AdapterExecutionResult> {
|
|
const { config, runId, agent, context } = ctx;
|
|
const url = asString(config.url, "");
|
|
if (!url) throw new Error("HTTP adapter missing url");
|
|
|
|
const method = asString(config.method, "POST");
|
|
const timeoutMs = asNumber(config.timeoutMs, 0);
|
|
const headers = parseObject(config.headers) as Record<string, string>;
|
|
const payloadTemplate = parseObject(config.payloadTemplate);
|
|
const body = { ...payloadTemplate, agentId: agent.id, runId, context };
|
|
|
|
const controller = new AbortController();
|
|
const timer = timeoutMs > 0 ? setTimeout(() => controller.abort(), timeoutMs) : null;
|
|
|
|
try {
|
|
const res = await fetch(url, {
|
|
method,
|
|
headers: {
|
|
"content-type": "application/json",
|
|
...headers,
|
|
},
|
|
body: JSON.stringify(body),
|
|
...(timer ? { signal: controller.signal } : {}),
|
|
});
|
|
|
|
if (!res.ok) {
|
|
throw new Error(`HTTP invoke failed with status ${res.status}`);
|
|
}
|
|
|
|
return {
|
|
exitCode: 0,
|
|
signal: null,
|
|
timedOut: false,
|
|
summary: `HTTP ${method} ${url}`,
|
|
};
|
|
} finally {
|
|
if (timer) clearTimeout(timer);
|
|
}
|
|
}
|