75 lines
3.7 KiB
Diff
75 lines
3.7 KiB
Diff
diff --git a/dist/index.js b/dist/index.js
|
|
--- a/dist/index.js
|
|
+++ b/dist/index.js
|
|
@@ -1110,6 +1110,14 @@ async function convertToXaiResponsesInput({
|
|
type: "input_file",
|
|
file_url: block.data.toString()
|
|
});
|
|
+ } else if (block.mediaType === "application/pdf") {
|
|
+ contentParts.push({
|
|
+ type: "input_file",
|
|
+ ...(typeof block.data === "string" && block.data.startsWith("file-") ? { file_id: block.data } : {
|
|
+ filename: block.filename ?? "file",
|
|
+ file_data: `data:application/pdf;base64,${(0, import_provider_utils5.convertToBase64)(block.data)}`
|
|
+ })
|
|
+ });
|
|
} else {
|
|
throw new import_provider4.UnsupportedFunctionalityError({
|
|
functionality: `file part media type ${block.mediaType} as inline data (xAI Responses requires a URL or a Files API reference for non-image files)`
|
|
diff --git a/dist/index.mjs b/dist/index.mjs
|
|
--- a/dist/index.mjs
|
|
+++ b/dist/index.mjs
|
|
@@ -1113,6 +1113,14 @@ async function convertToXaiResponsesInput({
|
|
type: "input_file",
|
|
file_url: block.data.toString()
|
|
});
|
|
+ } else if (block.mediaType === "application/pdf") {
|
|
+ contentParts.push({
|
|
+ type: "input_file",
|
|
+ ...(typeof block.data === "string" && block.data.startsWith("file-") ? { file_id: block.data } : {
|
|
+ filename: block.filename ?? "file",
|
|
+ file_data: `data:application/pdf;base64,${convertToBase642(block.data)}`
|
|
+ })
|
|
+ });
|
|
} else {
|
|
throw new UnsupportedFunctionalityError3({
|
|
functionality: `file part media type ${block.mediaType} as inline data (xAI Responses requires a URL or a Files API reference for non-image files)`
|
|
diff --git a/src/responses/convert-to-xai-responses-input.ts b/src/responses/convert-to-xai-responses-input.ts
|
|
--- a/src/responses/convert-to-xai-responses-input.ts
|
|
+++ b/src/responses/convert-to-xai-responses-input.ts
|
|
@@ -64,6 +64,17 @@ export async function convertToXaiResponsesInput({
|
|
type: 'input_file',
|
|
file_url: block.data.toString(),
|
|
});
|
|
+ } else if (block.mediaType === 'application/pdf') {
|
|
+ contentParts.push({
|
|
+ type: 'input_file',
|
|
+ ...(typeof block.data === 'string' &&
|
|
+ block.data.startsWith('file-')
|
|
+ ? { file_id: block.data }
|
|
+ : {
|
|
+ filename: block.filename ?? 'file',
|
|
+ file_data: `data:application/pdf;base64,${convertToBase64(block.data)}`,
|
|
+ }),
|
|
+ });
|
|
} else {
|
|
throw new UnsupportedFunctionalityError({
|
|
functionality: `file part media type ${block.mediaType} as inline data (xAI Responses requires a URL or a Files API reference for non-image files)`,
|
|
diff --git a/src/responses/xai-responses-api.ts b/src/responses/xai-responses-api.ts
|
|
--- a/src/responses/xai-responses-api.ts
|
|
+++ b/src/responses/xai-responses-api.ts
|
|
@@ -27,6 +27,12 @@ export type XaiResponsesSystemMessage = {
|
|
export type XaiResponsesUserMessageContentPart =
|
|
| { type: 'input_text'; text: string }
|
|
| { type: 'input_image'; image_url: string }
|
|
- | { type: 'input_file'; file_url: string };
|
|
-
|
|
+ | {
|
|
+ type: 'input_file';
|
|
+ file_url?: string;
|
|
+ file_id?: string;
|
|
+ file_data?: string;
|
|
+ filename?: string;
|
|
+ };
|
|
+
|
|
export type XaiResponsesUserMessage = {
|