← Files Cecil-IA Labs FFmpegARCHIVED FILE

dist/skill-runtime/request.js

1.74 KB · Sep 30, 2026 · 23:17 UTC

↓ Download file

import { readFile } from "node:fs/promises";
import { ToolkitRuntimeError } from "../core/errors.js";
const MAX_REQUEST_BYTES = 1024 * 1024;
function validate(value) {
    if (value === null || typeof value !== "object" || Array.isArray(value)) {
        throw new ToolkitRuntimeError("E_USAGE_INVALID_ARGUMENT", "Skill script input must be a JSON object.");
    }
    return value;
}
export async function readSkillScriptRequest(input = process.stdin) {
    if (input === process.stdin && process.stdin.isTTY)
        return {};
    const chunks = [];
    let size = 0;
    for await (const chunk of input) {
        const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk));
        size += buffer.length;
        if (size > MAX_REQUEST_BYTES) {
            throw new ToolkitRuntimeError("E_USAGE_INVALID_ARGUMENT", "Skill script request exceeds the 1 MiB limit.");
        }
        chunks.push(buffer);
    }
    const text = Buffer.concat(chunks).toString("utf8").trim();
    if (text.length === 0)
        return {};
    try {
        return validate(JSON.parse(text));
    }
    catch (error) {
        if (error instanceof ToolkitRuntimeError)
            throw error;
        throw new ToolkitRuntimeError("E_USAGE_INVALID_ARGUMENT", "Skill script input is not valid JSON.", { cause: error });
    }
}
export async function readSkillScriptRequestFile(file) {
    try {
        return validate(JSON.parse(await readFile(file, "utf8")));
    }
    catch (error) {
        if (error instanceof ToolkitRuntimeError)
            throw error;
        throw new ToolkitRuntimeError("E_USAGE_INVALID_ARGUMENT", "Skill request file is not valid JSON.", {
            details: { file },
            cause: error,
        });
    }
}
//# sourceMappingURL=request.js.map

SHA-256: dc93ac67544f1aba054b59a318ce60f8b27215acfb90929f32bb8a71ab50dccf