@jasondark/proompt
Version:
CLI tool for running AI prompts with structure and repeatability
51 lines • 2.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveSettings = void 0;
const constants_1 = require("../constants");
const schemas_1 = require("../schemas");
const settings_1 = require("./settings");
/**
* Resolve settings using the hierarchy: command args > project settings > global settings > program defaults
*/
const resolveSettings = (commandArgs) => {
// Validate command args first
const validatedArgs = schemas_1.settingsOverrideSchema.parse(commandArgs);
// Get settings with metadata from hierarchy
const globalMeta = (0, settings_1.readGlobalSettings)();
const projectMeta = (0, settings_1.readProjectSettings)();
// Start with program defaults
let resolvedLlmCli = constants_1.DEFAULT_LLM_CLI;
let resolvedOutputFormat = [constants_1.DEFAULT_LLM_CLI];
// Apply global settings if they exist
if (globalMeta.settings) {
resolvedLlmCli = globalMeta.settings.llmCli;
resolvedOutputFormat = globalMeta.settings.outputFormat || [
globalMeta.settings.llmCli,
];
}
// Apply project settings if they exist (override global)
if (projectMeta.settings) {
resolvedLlmCli = projectMeta.settings.llmCli;
resolvedOutputFormat = projectMeta.settings.outputFormat || [
projectMeta.settings.llmCli,
];
}
// Override with command arguments if provided
if (validatedArgs.llmCli) {
resolvedLlmCli = validatedArgs.llmCli;
}
if (validatedArgs.outputFormat) {
// Parse comma-separated format list and validate
const formatList = validatedArgs.outputFormat
.split(',')
.map((f) => f.trim());
resolvedOutputFormat = schemas_1.outputFormatSchema.parse(formatList);
}
// Validate final resolved settings
return schemas_1.resolvedSettingsSchema.parse({
llmCli: resolvedLlmCli,
outputFormat: resolvedOutputFormat,
});
};
exports.resolveSettings = resolveSettings;
//# sourceMappingURL=resolver.js.map