ai-utils.js
Version:
Build AI applications, chatbots, and agents with JavaScript and TypeScript.
53 lines (52 loc) • 1.99 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.failedLlamaCppCallResponseHandler = exports.LlamaCppError = exports.llamaCppErrorDataSchema = void 0;
const secure_json_parse_1 = __importDefault(require("secure-json-parse"));
const zod_1 = require("zod");
const ApiCallError_js_1 = require("../../util/api/ApiCallError.cjs");
exports.llamaCppErrorDataSchema = zod_1.z.object({
error: zod_1.z.string(),
});
class LlamaCppError extends ApiCallError_js_1.ApiCallError {
constructor({ data, statusCode, url, requestBodyValues, message = data.error, }) {
super({ message, statusCode, requestBodyValues, url });
Object.defineProperty(this, "data", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this.data = data;
}
}
exports.LlamaCppError = LlamaCppError;
const failedLlamaCppCallResponseHandler = async ({ response, url, requestBodyValues }) => {
const responseBody = await response.text();
try {
const parsedError = exports.llamaCppErrorDataSchema.parse(secure_json_parse_1.default.parse(responseBody));
return new LlamaCppError({
url,
requestBodyValues,
statusCode: response.status,
data: parsedError,
});
}
catch (error) {
if (error instanceof Error) {
if (error.name === "AbortError" || error instanceof ApiCallError_js_1.ApiCallError) {
throw error;
}
}
throw new ApiCallError_js_1.ApiCallError({
message: responseBody,
cause: error,
statusCode: response.status,
url,
requestBodyValues,
});
}
};
exports.failedLlamaCppCallResponseHandler = failedLlamaCppCallResponseHandler;