UNPKG

@jasondark/proompt

Version:

CLI tool for running AI prompts with structure and repeatability

51 lines 2.06 kB
"use strict"; 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