Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/shiny-llamas-behave.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@ai-sdk/openai': patch
---

fix(openai): allow open_page action type url to be nullish
Original file line number Diff line number Diff line change
Expand Up @@ -49,17 +49,19 @@ export default function AzureWebSearchPreviewView({
</span>
Opened a page
</div>
<div className="pl-5 text-sm text-green-900 break-all">
<span className="font-semibold">URL:</span>{' '}
<a
href={output.action.url}
target="_blank"
rel="noopener noreferrer"
className="underline hover:text-green-700"
>
{output.action.url}
</a>
</div>
{output.action.url && (
<div className="pl-5 text-sm text-green-900 break-all">
<span className="font-semibold">URL:</span>{' '}
<a
href={output.action.url}
target="_blank"
rel="noopener noreferrer"
className="underline hover:text-green-700"
>
{output.action.url}
</a>
</div>
)}
</div>
);
case 'find':
Expand All @@ -71,23 +73,25 @@ export default function AzureWebSearchPreviewView({
</span>
Searched for pattern in page
</div>
{output.action.url && (
<div className="pl-5 text-sm text-yellow-900 break-all">
<span className="font-semibold">URL:</span>{' '}
<a
href={output.action.url}
target="_blank"
rel="noopener noreferrer"
className="underline hover:text-yellow-700"
>
{output.action.url}
</a>
</div>
)}
<div className="pl-5 text-sm text-yellow-900">
<span className="font-semibold">Pattern:</span>{' '}
<span className="inline-block bg-white border border-yellow-100 rounded px-2 py-0.5 font-mono">
{output.action.pattern}
</span>
</div>
<div className="pl-5 text-sm text-yellow-900 break-all">
<span className="font-semibold">In URL:</span>{' '}
<a
href={output.action.url}
target="_blank"
rel="noopener noreferrer"
className="underline hover:text-yellow-700"
>
{output.action.url}
</a>
</div>
</div>
);
}
Expand Down
48 changes: 26 additions & 22 deletions examples/next-openai/components/tool/openai-web-search-view.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -74,17 +74,19 @@ export default function OpenAIWebSearchView({
</span>
Opened a page
</div>
<div className="pl-5 text-sm text-green-900 break-all">
<span className="font-semibold">URL:</span>{' '}
<a
href={output.action.url}
target="_blank"
rel="noopener noreferrer"
className="underline hover:text-green-700"
>
{output.action.url}
</a>
</div>
{output.action.url && (
<div className="pl-5 text-sm text-green-900 break-all">
<span className="font-semibold">URL:</span>{' '}
<a
href={output.action.url}
target="_blank"
rel="noopener noreferrer"
className="underline hover:text-green-700"
>
{output.action.url}
</a>
</div>
)}
</div>
);
case 'find':
Expand All @@ -96,23 +98,25 @@ export default function OpenAIWebSearchView({
</span>
Searched for pattern in page
</div>
{output.action.url && (
<div className="pl-5 text-sm text-yellow-900 break-all">
<span className="font-semibold">URL:</span>{' '}
<a
href={output.action.url}
target="_blank"
rel="noopener noreferrer"
className="underline hover:text-yellow-700"
>
{output.action.url}
</a>
</div>
)}
<div className="pl-5 text-sm text-yellow-900">
<span className="font-semibold">Pattern:</span>{' '}
<span className="inline-block bg-white border border-yellow-100 rounded px-2 py-0.5 font-mono">
{output.action.pattern}
</span>
</div>
<div className="pl-5 text-sm text-yellow-900 break-all">
<span className="font-semibold">In URL:</span>{' '}
<a
href={output.action.url}
target="_blank"
rel="noopener noreferrer"
className="underline hover:text-yellow-700"
>
{output.action.url}
</a>
</div>
</div>
);
}
Expand Down
12 changes: 6 additions & 6 deletions packages/openai/src/responses/openai-responses-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -485,12 +485,12 @@ export const openaiResponsesChunkSchema = lazySchema(() =>
}),
z.object({
type: z.literal('open_page'),
url: z.string(),
url: z.string().nullish(),
}),
z.object({
type: z.literal('find'),
url: z.string(),
pattern: z.string(),
url: z.string().nullish(),
pattern: z.string().nullish(),
}),
]),
}),
Expand Down Expand Up @@ -818,12 +818,12 @@ export const openaiResponsesResponseSchema = lazySchema(() =>
}),
z.object({
type: z.literal('open_page'),
url: z.string(),
url: z.string().nullish(),
}),
z.object({
type: z.literal('find'),
url: z.string(),
pattern: z.string(),
url: z.string().nullish(),
pattern: z.string().nullish(),
}),
]),
}),
Expand Down
12 changes: 6 additions & 6 deletions packages/openai/src/tool/web-search-preview.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@ const webSearchPreviewOutputSchema = lazySchema(() =>
}),
z.object({
type: z.literal('openPage'),
url: z.string(),
url: z.string().nullish(),
}),
z.object({
type: z.literal('find'),
url: z.string(),
pattern: z.string(),
url: z.string().nullish(),
pattern: z.string().nullish(),
}),
]),
}),
Expand Down Expand Up @@ -78,7 +78,7 @@ export const webSearchPreview = createProviderToolFactoryWithOutputSchema<
/**
* The URL opened by the model.
*/
url: string;
url?: string | null;
}
| {
/**
Expand All @@ -89,12 +89,12 @@ export const webSearchPreview = createProviderToolFactoryWithOutputSchema<
/**
* The URL of the page searched for the pattern.
*/
url: string;
url?: string | null;

/**
* The pattern or text to search for within the page.
*/
pattern: string;
pattern?: string | null;
};
},
{
Expand Down
12 changes: 6 additions & 6 deletions packages/openai/src/tool/web-search.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ export const webSearchOutputSchema = lazySchema(() =>
}),
z.object({
type: z.literal('openPage'),
url: z.string(),
url: z.string().nullish(),
}),
z.object({
type: z.literal('find'),
url: z.string(),
pattern: z.string(),
url: z.string().nullish(),
pattern: z.string().nullish(),
}),
]),
sources: z
Expand Down Expand Up @@ -88,7 +88,7 @@ export const webSearchToolFactory = createProviderToolFactoryWithOutputSchema<
/**
* The URL opened by the model.
*/
url: string;
url?: string | null;
}
| {
/**
Expand All @@ -99,12 +99,12 @@ export const webSearchToolFactory = createProviderToolFactoryWithOutputSchema<
/**
* The URL of the page searched for the pattern.
*/
url: string;
url?: string | null;

/**
* The pattern or text to search for within the page.
*/
pattern: string;
pattern?: string | null;
};

/**
Expand Down
Loading