cookie-ai-cli
Version:
A command-line interface tool designed to bridge the gap between natural language processing and command-line operations.
50 lines • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateSettings = exports.settingsSchema = void 0;
const zod_1 = require("zod");
const debug_log_1 = require("../utils/debug-log");
const settings_constants_1 = require("./settings-constants");
const errors = {
OPENAI_KEY_REQUIRED: "'openai.key' is required when using service 'openai'",
ENDPOINT_REQUIRED: "'endpoint' is required when using service 'custom'",
};
const openaiSchema = zod_1.z.object({
key: zod_1.z.string({
required_error: errors.OPENAI_KEY_REQUIRED,
}),
});
const customSchema = zod_1.z.object({
payload: zod_1.z.record(zod_1.z.string()).optional(),
});
exports.settingsSchema = zod_1.z
.object({
endpoint: zod_1.z.string().url().optional(),
service: zod_1.z.enum(["custom", "openai"]),
model: zod_1.z.string({
required_error: "'model' is required. (example: 'gpt-4')",
}),
openai: openaiSchema.optional(),
custom: customSchema.optional(),
headers: zod_1.z.record(zod_1.z.string()).optional(),
})
.refine((data) => data.service !== "openai" || data.openai, {
message: errors.OPENAI_KEY_REQUIRED,
path: ["openai"],
})
.refine((data) => data.service !== "custom" || data.endpoint, {
message: errors.ENDPOINT_REQUIRED,
path: ["endpoint"],
});
function validateSettings(settings) {
const result = exports.settingsSchema.safeParse(settings);
if (!result.success) {
for (const error of result.error.issues) {
debug_log_1.debug.error(`settings.json: ${error.message}\n
You can edit your settings file at file://${settings_constants_1.settingsDir}
or run 'ai --init' to re-initialize your settings.\n`);
}
process.exit(1);
}
}
exports.validateSettings = validateSettings;
//# sourceMappingURL=settings-schema.js.map