Misc SDK fixes (#4752)

Remove codex-level workingDirectory
Throw on turn.failed in `run()`
Cleanup readme
This commit is contained in:
pakrym-oai
2025-10-04 19:55:33 -07:00
committed by GitHub
parent 4764fc1ee7
commit 356ea6ea34
6 changed files with 47 additions and 16 deletions

View File

@@ -173,16 +173,19 @@ export function assistantMessage(text: string, itemId: string = DEFAULT_MESSAGE_
};
}
export function responseFailed(errorMessage: string): SseEvent {
return {
type: "error",
error: { code: "rate_limit_exceeded", message: errorMessage },
};
}
export function responseCompleted(
responseId: string = DEFAULT_RESPONSE_ID,
usage: ResponseCompletedUsage = DEFAULT_COMPLETED_USAGE,
): SseEvent {
const inputDetails = usage.input_tokens_details
? { ...usage.input_tokens_details }
: null;
const outputDetails = usage.output_tokens_details
? { ...usage.output_tokens_details }
: null;
const inputDetails = usage.input_tokens_details ? { ...usage.input_tokens_details } : null;
const outputDetails = usage.output_tokens_details ? { ...usage.output_tokens_details } : null;
return {
type: "response.completed",
response: {

View File

@@ -12,6 +12,7 @@ import {
responseCompleted,
responseStarted,
sse,
responseFailed,
startResponsesTestProxy,
} from "./responsesProxy";
@@ -287,6 +288,23 @@ describe("Codex", () => {
await close();
}
});
it("throws ThreadRunError on turn failures", async () => {
const { url, close } = await startResponsesTestProxy({
statusCode: 200,
responseBodies: [
sse(responseStarted("response_1")),
sse(responseFailed("rate limit exceeded")),
],
});
try {
const client = new Codex({ codexPathOverride: codexExecPath, baseUrl: url, apiKey: "test" });
const thread = client.startThread();
await expect(thread.run("fail")).rejects.toThrow("stream disconnected before completion:");
} finally {
await close();
}
}, 10000); // TODO(pakrym): remove timeout
});
function expectPair(args: string[] | undefined, pair: [string, string]) {
if (!args) {