@jasondark/proompt
Version:
CLI tool for running AI prompts with structure and repeatability
87 lines • 4.17 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.configArgsSchema = exports.docMetadataSchema = exports.docMetadataEntrySchema = exports.settingsWithMetaSchema = exports.resolvedSettingsSchema = exports.documentationCommandOptionsSchema = exports.planningCommandOptionsSchema = exports.llmCommandOptionsSchema = exports.settingsOverrideSchema = exports.proomptArgumentsSchema = exports.commandHandlerArgsSchema = exports.commandConfigSchema = exports.commandArgumentSchema = exports.settingsSchema = exports.outputFileNamesSchema = exports.outputFormatSchema = exports.llmCliSchema = void 0;
const zod_1 = require("zod");
exports.llmCliSchema = zod_1.z.enum(['claude', 'gemini']);
exports.outputFormatSchema = zod_1.z.array(zod_1.z.enum(['claude', 'gemini'])).min(1);
exports.outputFileNamesSchema = zod_1.z.object({
claude: zod_1.z.literal('CLAUDE.md'),
gemini: zod_1.z.literal('GEMINI.md'),
});
exports.settingsSchema = zod_1.z.object({
llmCli: exports.llmCliSchema,
outputFormat: exports.outputFormatSchema.optional(),
});
// New command module schemas
exports.commandArgumentSchema = zod_1.z.object({
name: zod_1.z.string(),
description: zod_1.z.string(),
required: zod_1.z.boolean().default(false),
type: zod_1.z.enum(['string', 'number', 'boolean']).default('string'),
alias: zod_1.z.string().optional(),
positional: zod_1.z.boolean().optional(),
});
exports.commandConfigSchema = zod_1.z.object({
name: zod_1.z.string(),
description: zod_1.z.string(),
arguments: zod_1.z.array(exports.commandArgumentSchema).default([]),
});
exports.commandHandlerArgsSchema = zod_1.z
.record(zod_1.z.string(), zod_1.z.union([zod_1.z.string(), zod_1.z.number(), zod_1.z.boolean()]))
.and(zod_1.z.object({
llmCli: exports.llmCliSchema.optional(),
outputFormat: zod_1.z.string().optional(),
}));
// Base schema for proompt arguments (used in execution)
exports.proomptArgumentsSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.union([zod_1.z.string(), zod_1.z.number(), zod_1.z.boolean()]));
// Settings resolver schemas
exports.settingsOverrideSchema = zod_1.z.object({
llmCli: exports.llmCliSchema.optional(),
outputFormat: zod_1.z.string().optional(), // Comma-separated string that gets parsed
});
// LLM-only command options (for interactive commands like execute-plan, lyra)
exports.llmCommandOptionsSchema = zod_1.z.object({
llmCli: exports.llmCliSchema.optional(),
});
// Planning command options (for commands that can create output files with custom paths)
exports.planningCommandOptionsSchema = zod_1.z.object({
llmCli: exports.llmCliSchema.optional(),
outputFilePath: zod_1.z.string(),
});
// Documentation command options (for commands that create output files)
exports.documentationCommandOptionsSchema = zod_1.z.object({
llmCli: exports.llmCliSchema.optional(),
outputFormat: zod_1.z.string().optional(),
});
exports.resolvedSettingsSchema = zod_1.z.object({
llmCli: exports.llmCliSchema,
outputFormat: exports.outputFormatSchema,
});
// Settings with metadata schema
exports.settingsWithMetaSchema = zod_1.z.object({
settings: exports.settingsSchema.nullable(),
fileExists: zod_1.z.boolean(),
filePath: zod_1.z.string(),
});
// Documentation metadata schemas
exports.docMetadataEntrySchema = zod_1.z.object({
commitHash: zod_1.z.string(),
timestamp: zod_1.z.string(),
});
exports.docMetadataSchema = zod_1.z.object({
project: exports.docMetadataEntrySchema.optional(),
directories: zod_1.z.record(zod_1.z.string(), exports.docMetadataEntrySchema).optional(),
});
// Config command schema - requires either global or project scope
exports.configArgsSchema = zod_1.z
.object({
global: zod_1.z.boolean().optional(),
project: zod_1.z.boolean().optional(),
setLlmCli: exports.llmCliSchema.optional(),
setOutputFormat: zod_1.z.string().optional(),
})
.refine((data) => (data.global && !data.project) || (!data.global && data.project), {
message: 'Exactly one of --global or --project must be specified',
path: ['global', 'project'],
});
//# sourceMappingURL=schemas.js.map