"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.tool$generalPartitionCorrect = void 0;
exports.registerMCPExtensions = registerMCPExtensions;
const tools_js_1 = require("./tools.js");
const generalPartition_js_1 = require("../funcs/generalPartition.js");
const promises_1 = __importDefault(require("node:fs/promises"));
const zod_1 = require("zod");
const partitionparameters_js_1 = require("../sdk/models/shared/partitionparameters.js");
const FileRequest$inboundSchema = zod_1.z.object({
    file_content: zod_1.z.string().optional(),
    file_path: zod_1.z.string().optional(),
    file_name: zod_1.z.string(),
    strategy: partitionparameters_js_1.Strategy$inboundSchema.default(partitionparameters_js_1.Strategy.HiRes),
});
const customToolArg = {
    request: FileRequest$inboundSchema
};
exports.tool$generalPartitionCorrect = {
    name: "correct_general-partition",
    description: `use this tool to pass a file to unstructured. You must BASE64 ENCODE uploaded file content before passing to unstructured. Alternatively, if the user did not upload a file they can provide a full local file path. `,
    args: customToolArg,
    tool: async (client, args, ctx) => {
        let data;
        if (args.request.file_content) {
            try {
                data = new Uint8Array(Buffer.from(args.request.file_content, 'base64'));
            }
            catch (e) {
                return {
                    content: [{
                            type: "text",
                            text: `You must BASE64 encode this file content then pass it to the tool.`,
                        }],
                    isError: true,
                };
            }
        }
        else if (args.request.file_path) {
            data = new Uint8Array(await promises_1.default.readFile(args.request.file_path));
        }
        else {
            return {
                content: [{
                        type: "text",
                        text: `A full file path for file content must be provided`,
                    }],
                isError: true,
            };
        }
        const [result, apiCall] = await (0, generalPartition_js_1.generalPartition)(client, {
            partitionParameters: {
                files: {
                    content: data,
                    fileName: args.request.file_name,
                },
                strategy: args.request.strategy,
            }
        }, { fetchOptions: { signal: ctx.signal } }).$inspect();
        if (!result.ok) {
            return {
                content: [{ type: "text", text: result.error.message }],
                isError: true,
            };
        }
        const value = result.value;
        return (0, tools_js_1.formatResult)(value, apiCall);
    },
};
function registerMCPExtensions(register) {
    register.tool(exports.tool$generalPartitionCorrect);
}
//# sourceMappingURL=server.extensions.js.map