From e78e36cf7465189eb29db607f260b1b89b4f4af6 Mon Sep 17 00:00:00 2001 From: Nitesh Singh Date: Thu, 7 Aug 2025 23:48:59 +0530 Subject: [PATCH 1/3] remove InputText type from AssistantContent --- packages/agents-core/src/types/protocol.ts | 2 -- packages/agents-extensions/src/aiSdk.ts | 29 +++++-------------- .../src/openaiChatCompletionsConverter.ts | 12 ++------ 3 files changed, 10 insertions(+), 33 deletions(-) diff --git a/packages/agents-core/src/types/protocol.ts b/packages/agents-core/src/types/protocol.ts index 365e7f68..10602beb 100644 --- a/packages/agents-core/src/types/protocol.ts +++ b/packages/agents-core/src/types/protocol.ts @@ -241,8 +241,6 @@ export type ComputerAction = z.infer; export const AssistantContent = z.discriminatedUnion('type', [ OutputText, Refusal, - InputText, - AudioContent, ImageContent, ]); diff --git a/packages/agents-extensions/src/aiSdk.ts b/packages/agents-extensions/src/aiSdk.ts index 8f883188..6f28c672 100644 --- a/packages/agents-extensions/src/aiSdk.ts +++ b/packages/agents-extensions/src/aiSdk.ts @@ -116,29 +116,16 @@ export function itemsToLanguageV1Messages( messages.push({ role, content: content - .filter((c) => c.type === 'input_text' || c.type === 'output_text') + .filter((c) => c.type === 'output_text') .map((c) => { const { providerData: contentProviderData } = c; - if (c.type === 'output_text') { - return { - type: 'text', - text: c.text, - providerMetadata: { - ...(contentProviderData ?? {}), - }, - }; - } - if (c.type === 'input_text') { - return { - type: 'text', - text: c.text, - providerMetadata: { - ...(contentProviderData ?? {}), - }, - }; - } - const exhaustiveCheck = c satisfies never; - throw new UserError(`Unknown content type: ${exhaustiveCheck}`); + return { + type: 'text', + text: c.text, + providerMetadata: { + ...(contentProviderData ?? {}), + }, + }; }), providerMetadata: { ...(providerData ?? {}), diff --git a/packages/agents-openai/src/openaiChatCompletionsConverter.ts b/packages/agents-openai/src/openaiChatCompletionsConverter.ts index bfa44525..30300a83 100644 --- a/packages/agents-openai/src/openaiChatCompletionsConverter.ts +++ b/packages/agents-openai/src/openaiChatCompletionsConverter.ts @@ -37,7 +37,7 @@ export function extractAllAssistantContent( } const out: ChatCompletionAssistantMessageParam['content'] = []; for (const c of content) { - if (c.type === 'output_text' || c.type === 'input_text') { + if (c.type === 'output_text') { out.push({ type: 'text', text: c.text, @@ -49,7 +49,7 @@ export function extractAllAssistantContent( refusal: c.refusal, ...c.providerData, }); - } else if (c.type === 'audio' || c.type === 'image') { + } else if (c.type === 'image') { // ignoring audio as it is handled on the assistant message level continue; } else { @@ -159,14 +159,6 @@ export function itemsToMessages( ...providerData, }; - const audio = content.find((c) => c.type === 'audio'); - if (audio) { - assistant.audio = { - id: '', // setting this to empty ID and expecting that the user sets providerData.id - ...audio.providerData, - }; - } - result.push(assistant); } else if (role === 'user') { result.push({ From dd9bf52f01ee1d13946a052e99c7e57f076d5e48 Mon Sep 17 00:00:00 2001 From: Nitesh Singh Date: Thu, 7 Aug 2025 23:57:32 +0530 Subject: [PATCH 2/3] revert audio --- packages/agents-core/src/types/protocol.ts | 1 + .../src/openaiChatCompletionsConverter.ts | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/agents-core/src/types/protocol.ts b/packages/agents-core/src/types/protocol.ts index 10602beb..2a92abb0 100644 --- a/packages/agents-core/src/types/protocol.ts +++ b/packages/agents-core/src/types/protocol.ts @@ -241,6 +241,7 @@ export type ComputerAction = z.infer; export const AssistantContent = z.discriminatedUnion('type', [ OutputText, Refusal, + AudioContent, ImageContent, ]); diff --git a/packages/agents-openai/src/openaiChatCompletionsConverter.ts b/packages/agents-openai/src/openaiChatCompletionsConverter.ts index 30300a83..6f022db5 100644 --- a/packages/agents-openai/src/openaiChatCompletionsConverter.ts +++ b/packages/agents-openai/src/openaiChatCompletionsConverter.ts @@ -49,7 +49,7 @@ export function extractAllAssistantContent( refusal: c.refusal, ...c.providerData, }); - } else if (c.type === 'image') { + } else if (c.type === 'audio' || c.type === 'image') { // ignoring audio as it is handled on the assistant message level continue; } else { @@ -159,6 +159,14 @@ export function itemsToMessages( ...providerData, }; + const audio = content.find((c) => c.type === 'audio'); + if (audio) { + assistant.audio = { + id: '', // setting this to empty ID and expecting that the user sets providerData.id + ...audio.providerData, + }; + } + result.push(assistant); } else if (role === 'user') { result.push({ From c7b77130100b47fec244e74ea4b187b914000e3b Mon Sep 17 00:00:00 2001 From: Kazuhiro Sera Date: Mon, 11 Aug 2025 14:13:03 +0900 Subject: [PATCH 3/3] Create angry-cooks-wait.md --- .changeset/angry-cooks-wait.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/angry-cooks-wait.md diff --git a/.changeset/angry-cooks-wait.md b/.changeset/angry-cooks-wait.md new file mode 100644 index 00000000..9cdc9733 --- /dev/null +++ b/.changeset/angry-cooks-wait.md @@ -0,0 +1,7 @@ +--- +"@openai/agents-core": patch +"@openai/agents-extensions": patch +"@openai/agents-openai": patch +--- + +Fix #233 - eliminate confusion with "input_text" type items with role: "assistant"