@eldrforge/kodrdriv 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,6 +6,7 @@ contextDirectories:
6
6
  commit:
7
7
  cached: true
8
8
  sendit: true
9
+ messageLimit: 10
9
10
  release:
10
11
  from: main
11
12
  to: HEAD
package/README.md CHANGED
@@ -68,6 +68,8 @@ KodrDriv provides several command line options to customize its behavior:
68
68
 
69
69
  - `--cached`: Use cached diff for generating commit messages
70
70
  - `--sendit`: Commit with the generated message without review (default: false)
71
+ - `--context <context>`: Provide additional context (as a string or file path) to guide the commit message generation. This context is included in the prompt sent to the AI and can be used to specify the purpose, theme, or any special considerations for the commit.
72
+ - `--message-limit <messageLimit>`: Limit the number of recent commit messages (from git log) to include in the prompt for context (default: 10). This can help focus the AI on the most relevant recent changes.
71
73
 
72
74
  ### OpenAI Configuration
73
75
 
@@ -123,6 +125,12 @@ Use custom instructions from a file:
123
125
  kodrdriv release --instructions ./my-custom-instructions.md
124
126
  ```
125
127
 
128
+ Use custom context and message limit:
129
+ ```bash
130
+ kodrdriv commit --context "Refactoring for performance" --message-limit 5
131
+ kodrdriv release --context "Quarterly release, focus on stability" --message-limit 20
132
+ ```
133
+
126
134
  ### Configuration Directory
127
135
 
128
136
  KodrDriv uses a configuration directory to store custom settings, instructions, and other configuration files. You can specify a custom location using the `--config-dir` option:
@@ -307,26 +315,38 @@ To enable instruction overrides, you'll need to use the `--overrides` flag when
307
315
 
308
316
  ## About the Name
309
317
 
310
- Ski carving and efficient software development have a lot in common. Carving uses edge control to follow a smooth, energy-efficient arc — just like automation uses clean, repeatable scripts to replace manual work. Both are about flow: linking turns or commits without hesitation. As carving unlocks speed and control, automation unlocks scalability and momentum. The result is clean tracks — razor-thin arcs on snow, or tidy diffs in code. And when youve mastered your craft, you dont stop to think about your last move. Your code leaves a clean trail — and your commit message can be automated straight from the diff. And — snowboarders carve too. Different board, same beauty. We wont hold it against you if youre dropping clean edges on a single plank.
318
+ Ski carving and efficient software development have a lot in common. Carving uses edge control to follow a smooth, energy-efficient arc — just like automation uses clean, repeatable scripts to replace manual work. Both are about flow: linking turns or commits without hesitation. As carving unlocks speed and control, automation unlocks scalability and momentum. The result is clean tracks — razor-thin arcs on snow, or tidy diffs in code. And when you've mastered your craft, you don't stop to think about your last move. Your code leaves a clean trail — and your commit message can be automated straight from the diff. And — snowboarders carve too. Different board, same beauty. We won't hold it against you if you're dropping clean edges on a single plank.
311
319
 
312
320
  ## Origin Story: kodrdriv
313
321
 
314
322
  It always happened at the same moment.
315
323
 
316
- Youve just spent the entire day in a flow state — the kind that only comes when everything clicks. Whether it was writing code for a critical feature or hammering out chapters of a Markdown or AsciiDoc book, you were locked in. Maybe you were racing the clock to hit a deadline. Maybe you were just up late trying to carve something beautiful out of nothing. Either way, you went right up to the wire, focused, dialed in, exhausted but satisfied.
324
+ You've just spent the entire day in a flow state — the kind that only comes when everything clicks. Whether it was writing code for a critical feature or hammering out chapters of a Markdown or AsciiDoc book, you were locked in. Maybe you were racing the clock to hit a deadline. Maybe you were just up late trying to carve something beautiful out of nothing. Either way, you went right up to the wire, focused, dialed in, exhausted but satisfied.
317
325
 
318
326
  And then… Git hits you with the meta-question:
319
- What did you do?”
327
+ "What did you do?"
328
+
329
+ That one prompt — to sum it all up in a commit message — feels totally out of place. It asks you to stop, zoom out, and articulate everything you've just done, right when your brain is at its least reflective. You're not in summary mode. You're still in it. Still shaping. Still carving.
330
+
331
+ And that's the thing: it sounds silly, like it shouldn't be a real problem. But every developer, every writer who lives in Git knows that exact moment. The friction is real. The context switch is jarring. It's like being asked to narrate your entire ski run after you've blasted through powder, dodged trees, hit the cliff drop — and now you're out of breath, standing at the bottom, being asked to give a PowerPoint.
332
+
333
+ That's why I built kodrdriv.
334
+
335
+ It's not just a tool — it's a mindset shift. The idea is simple: you've already carved your line in the snow. Your code is there. Your diffs are real. Instead of making you explain it, kodrdriv uses an LLM to read the trail you left behind and generate a clean, meaningful commit message. One that actually reflects your work — without breaking your flow or making you guess what mattered most.
320
336
 
321
- That one prompt to sum it all up in a commit message — feels totally out of place. It asks you to stop, zoom out, and articulate everything you’ve just done, right when your brain is at its least reflective. You’re not in summary mode. You’re still in it. Still shaping. Still carving.
337
+ Whether you're merging branches or writing books, kodrdriv is built for that end-of-day moment when you want to commit and move on not pause for existential reflection. It reads the line you've drawn, and it helps you push it forward.
322
338
 
323
- And that’s the thing: it sounds silly, like it shouldn’t be a real problem. But every developer, every writer who lives in Git knows that exact moment. The friction is real. The context switch is jarring. It’s like being asked to narrate your entire ski run after you’ve blasted through powder, dodged trees, hit the cliff drop — and now you’re out of breath, standing at the bottom, being asked to give a PowerPoint.
339
+ ### Release Command Options
324
340
 
325
- That’s why I built kodrdriv.
341
+ - `--from <from>`: Branch or reference to generate release notes from
342
+ - `--to <to>`: Branch or reference to generate release notes to
343
+ - `--context <context>`: Provide additional context (as a string or file path) to guide the release notes generation. This context is included in the prompt sent to the AI and can be used to specify the purpose, theme, or any special considerations for the release.
344
+ - `--message-limit <messageLimit>`: Limit the number of recent commit messages (from git log) to include in the release notes prompt (default: 10).
326
345
 
327
- It’s not just a tool — it’s a mindset shift. The idea is simple: you’ve already carved your line in the snow. Your code is there. Your diffs are real. Instead of making you explain it, kodrdriv uses an LLM to read the trail you left behind and generate a clean, meaningful commit message. One that actually reflects your work — without breaking your flow or making you guess what mattered most.
346
+ ### Explanation
328
347
 
329
- Whether you’re merging branches or writing books, kodrdriv is built for that end-of-day moment when you want to commit and move on not pause for existential reflection. It reads the line you’ve drawn, and it helps you push it forward.
348
+ - The `--context` option allows you to inject custom context into the AI prompt, which can help tailor the generated commit message or release notes to your specific needs or project conventions. You can provide a string directly or a path to a file containing the context.
349
+ - The `--message-limit` option controls how many recent commit messages are included in the prompt. Reducing this number can make the summary more focused, while increasing it can provide broader historical context.
330
350
 
331
351
 
332
352
 
package/dist/arguments.js CHANGED
@@ -19,7 +19,9 @@ z.object({
19
19
  sendit: z.boolean().optional(),
20
20
  from: z.string().optional(),
21
21
  to: z.string().optional(),
22
- excludedPatterns: z.array(z.string()).optional()
22
+ excludedPatterns: z.array(z.string()).optional(),
23
+ context: z.string().optional(),
24
+ messageLimit: z.number().optional()
23
25
  });
24
26
  // Function to transform flat CLI args into nested Config structure
25
27
  const transformCliArgs = (finalCliArgs)=>{
@@ -39,12 +41,16 @@ const transformCliArgs = (finalCliArgs)=>{
39
41
  transformedCliArgs.commit = {};
40
42
  if (finalCliArgs.cached !== undefined) transformedCliArgs.commit.cached = finalCliArgs.cached;
41
43
  if (finalCliArgs.sendit !== undefined) transformedCliArgs.commit.sendit = finalCliArgs.sendit;
44
+ if (finalCliArgs.messageLimit !== undefined) transformedCliArgs.commit.messageLimit = finalCliArgs.messageLimit;
45
+ if (finalCliArgs.context !== undefined) transformedCliArgs.commit.context = finalCliArgs.context;
42
46
  }
43
47
  // Nested mappings for 'release' options
44
48
  if (finalCliArgs.from !== undefined || finalCliArgs.to !== undefined) {
45
49
  transformedCliArgs.release = {};
46
50
  if (finalCliArgs.from !== undefined) transformedCliArgs.release.from = finalCliArgs.from;
47
51
  if (finalCliArgs.to !== undefined) transformedCliArgs.release.to = finalCliArgs.to;
52
+ if (finalCliArgs.context !== undefined) transformedCliArgs.release.context = finalCliArgs.context;
53
+ if (finalCliArgs.messageLimit !== undefined) transformedCliArgs.release.messageLimit = finalCliArgs.messageLimit;
48
54
  }
49
55
  if (finalCliArgs.excludedPatterns !== undefined) transformedCliArgs.excludedPatterns = finalCliArgs.excludedPatterns;
50
56
  // Note: finalCliArgs.openaiApiKey is intentionally omitted here as it belongs to SecureConfig
@@ -91,9 +97,9 @@ function getCliConfig(program) {
91
97
  .option('--excluded-paths [excludedPatterns...]', 'paths to exclude from the diff');
92
98
  };
93
99
  // Add subcommands
94
- const commitCommand = program.command('commit').option('--cached', 'use cached diff').option('--sendit', 'Commit with the message generated. No review.').description('Generate commit notes');
100
+ const commitCommand = program.command('commit').option('--cached', 'use cached diff').option('--sendit', 'Commit with the message generated. No review.').option('--context <context>', 'context for the commit message').option('--message-limit <messageLimit>', 'limit the number of messages to generate').description('Generate commit notes');
95
101
  addSharedOptions(commitCommand);
96
- const releaseCommand = program.command('release').option('--from <from>', 'branch to generate release notes from').option('--to <to>', 'branch to generate release notes to').description('Generate release notes');
102
+ const releaseCommand = program.command('release').option('--from <from>', 'branch to generate release notes from').option('--to <to>', 'branch to generate release notes to').option('--context <context>', 'context for the commit message').description('Generate release notes');
97
103
  addSharedOptions(releaseCommand);
98
104
  program.parse();
99
105
  const cliArgs = program.opts(); // Get all opts initially
@@ -135,13 +141,13 @@ async function validateAndProcessSecureOptions() {
135
141
  }
136
142
  // Renamed validation function to reflect its broader role
137
143
  async function validateAndProcessOptions(options) {
138
- var _options_commit, _options_commit1, _options_release, _options_release1;
144
+ var _options_commit, _options_commit1, _options_commit2, _options_commit3, _options_release, _options_release1, _options_release2, _options_release3;
139
145
  const contextDirectories = await validateContextDirectories(options.contextDirectories || KODRDRIV_DEFAULTS.contextDirectories);
140
146
  const instructionsPathOrContent = options.instructions || KODRDRIV_DEFAULTS.instructions;
141
147
  const instructions = await validateAndReadInstructions(instructionsPathOrContent);
142
148
  const configDir = options.configDirectory || KODRDRIV_DEFAULTS.configDirectory;
143
149
  await validateConfigDir(configDir); // Keep validation, but maybe remove return if not used elsewhere
144
- var _options_dryRun, _options_verbose, _options_debug, _options_overrides, _options_model, _options_commit_cached, _options_commit_sendit, _options_release_from, _options_release_to, _options_excludedPatterns;
150
+ var _options_dryRun, _options_verbose, _options_debug, _options_overrides, _options_model, _options_commit_cached, _options_commit_sendit, _options_commit_messageLimit, _options_release_from, _options_release_to, _options_release_messageLimit, _options_excludedPatterns;
145
151
  // Ensure all required fields are present and have correct types after merging
146
152
  const finalConfig = {
147
153
  dryRun: (_options_dryRun = options.dryRun) !== null && _options_dryRun !== void 0 ? _options_dryRun : KODRDRIV_DEFAULTS.dryRun,
@@ -155,11 +161,15 @@ async function validateAndProcessOptions(options) {
155
161
  // Command-specific options with defaults
156
162
  commit: {
157
163
  cached: (_options_commit_cached = (_options_commit = options.commit) === null || _options_commit === void 0 ? void 0 : _options_commit.cached) !== null && _options_commit_cached !== void 0 ? _options_commit_cached : KODRDRIV_DEFAULTS.commit.cached,
158
- sendit: (_options_commit_sendit = (_options_commit1 = options.commit) === null || _options_commit1 === void 0 ? void 0 : _options_commit1.sendit) !== null && _options_commit_sendit !== void 0 ? _options_commit_sendit : KODRDRIV_DEFAULTS.commit.sendit
164
+ sendit: (_options_commit_sendit = (_options_commit1 = options.commit) === null || _options_commit1 === void 0 ? void 0 : _options_commit1.sendit) !== null && _options_commit_sendit !== void 0 ? _options_commit_sendit : KODRDRIV_DEFAULTS.commit.sendit,
165
+ messageLimit: (_options_commit_messageLimit = (_options_commit2 = options.commit) === null || _options_commit2 === void 0 ? void 0 : _options_commit2.messageLimit) !== null && _options_commit_messageLimit !== void 0 ? _options_commit_messageLimit : KODRDRIV_DEFAULTS.commit.messageLimit,
166
+ context: (_options_commit3 = options.commit) === null || _options_commit3 === void 0 ? void 0 : _options_commit3.context
159
167
  },
160
168
  release: {
161
169
  from: (_options_release_from = (_options_release = options.release) === null || _options_release === void 0 ? void 0 : _options_release.from) !== null && _options_release_from !== void 0 ? _options_release_from : KODRDRIV_DEFAULTS.release.from,
162
- to: (_options_release_to = (_options_release1 = options.release) === null || _options_release1 === void 0 ? void 0 : _options_release1.to) !== null && _options_release_to !== void 0 ? _options_release_to : KODRDRIV_DEFAULTS.release.to
170
+ to: (_options_release_to = (_options_release1 = options.release) === null || _options_release1 === void 0 ? void 0 : _options_release1.to) !== null && _options_release_to !== void 0 ? _options_release_to : KODRDRIV_DEFAULTS.release.to,
171
+ messageLimit: (_options_release_messageLimit = (_options_release2 = options.release) === null || _options_release2 === void 0 ? void 0 : _options_release2.messageLimit) !== null && _options_release_messageLimit !== void 0 ? _options_release_messageLimit : KODRDRIV_DEFAULTS.release.messageLimit,
172
+ context: (_options_release3 = options.release) === null || _options_release3 === void 0 ? void 0 : _options_release3.context
163
173
  },
164
174
  excludedPatterns: (_options_excludedPatterns = options.excludedPatterns) !== null && _options_excludedPatterns !== void 0 ? _options_excludedPatterns : KODRDRIV_DEFAULTS.excludedPatterns
165
175
  };
@@ -1 +1 @@
1
- {"version":3,"file":"arguments.js","sources":["../src/arguments.ts"],"sourcesContent":["import * as Cardigantime from '@theunwalked/cardigantime';\nimport { Command } from \"commander\";\nimport path from \"path\";\nimport { z } from \"zod\";\nimport { ALLOWED_COMMANDS, DEFAULT_CHARACTER_ENCODING, DEFAULT_COMMAND, DEFAULT_INSTRUCTIONS_DIR, KODRDRIV_DEFAULTS, PROGRAM_NAME, VERSION } from \"./constants\";\nimport { getLogger } from \"./logging\";\nimport { CommandConfig, Config, ConfigSchema, SecureConfig } from './types'; // Import the Config type from main.ts\nimport * as Storage from \"./util/storage\";\n\nexport const InputSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n openaiApiKey: z.string().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n instructions: z.string().optional(),\n configDir: z.string().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n from: z.string().optional(),\n to: z.string().optional(),\n excludedPatterns: z.array(z.string()).optional(),\n});\n\nexport type Input = z.infer<typeof InputSchema>;\n\n// Function to transform flat CLI args into nested Config structure\nexport const transformCliArgs = (finalCliArgs: Input): Partial<Config> => {\n const transformedCliArgs: Partial<Config> = {};\n\n // Direct mappings from Input to Config\n if (finalCliArgs.dryRun !== undefined) transformedCliArgs.dryRun = finalCliArgs.dryRun;\n if (finalCliArgs.verbose !== undefined) transformedCliArgs.verbose = finalCliArgs.verbose;\n if (finalCliArgs.debug !== undefined) transformedCliArgs.debug = finalCliArgs.debug;\n if (finalCliArgs.overrides !== undefined) transformedCliArgs.overrides = finalCliArgs.overrides;\n if (finalCliArgs.model !== undefined) transformedCliArgs.model = finalCliArgs.model;\n if (finalCliArgs.contextDirectories !== undefined) transformedCliArgs.contextDirectories = finalCliArgs.contextDirectories;\n if (finalCliArgs.instructions !== undefined) transformedCliArgs.instructions = finalCliArgs.instructions;\n\n // Map configDir (CLI) to configDirectory (Cardigantime standard)\n if (finalCliArgs.configDir !== undefined) transformedCliArgs.configDirectory = finalCliArgs.configDir;\n\n // Nested mappings for 'commit' options\n if (finalCliArgs.cached !== undefined || finalCliArgs.sendit !== undefined) {\n transformedCliArgs.commit = {};\n if (finalCliArgs.cached !== undefined) transformedCliArgs.commit.cached = finalCliArgs.cached;\n if (finalCliArgs.sendit !== undefined) transformedCliArgs.commit.sendit = finalCliArgs.sendit;\n }\n\n // Nested mappings for 'release' options\n if (finalCliArgs.from !== undefined || finalCliArgs.to !== undefined) {\n transformedCliArgs.release = {};\n if (finalCliArgs.from !== undefined) transformedCliArgs.release.from = finalCliArgs.from;\n if (finalCliArgs.to !== undefined) transformedCliArgs.release.to = finalCliArgs.to;\n }\n\n if (finalCliArgs.excludedPatterns !== undefined) transformedCliArgs.excludedPatterns = finalCliArgs.excludedPatterns;\n\n // Note: finalCliArgs.openaiApiKey is intentionally omitted here as it belongs to SecureConfig\n\n return transformedCliArgs;\n}\n\n// Update configure signature to accept cardigantime\nexport const configure = async (cardigantime: Cardigantime.Cardigantime<typeof ConfigSchema.shape>): Promise<[Config, SecureConfig, CommandConfig]> => {\n const logger = getLogger();\n let program = new Command();\n\n // Configure program basics\n program\n .name(PROGRAM_NAME)\n .summary('Create Intelligent Release Notes or Change Logs from Git')\n .description('Create Intelligent Release Notes or Change Logs from Git')\n .version(VERSION);\n\n // Let cardigantime add its arguments first\n program = await cardigantime.configure(program);\n\n // Get CLI arguments using the new function\n const [finalCliArgs, commandConfig]: [Input, CommandConfig] = getCliConfig(program);\n logger.debug('Loaded Command Line Options: %s', JSON.stringify(finalCliArgs, null, 2));\n\n // Transform the flat CLI args using the new function\n const transformedCliArgs: Partial<Config> = transformCliArgs(finalCliArgs);\n logger.debug('Transformed CLI Args for merging: %s', JSON.stringify(transformedCliArgs, null, 2));\n\n // Get values from config file\n const fileValues: Config = await cardigantime.read(finalCliArgs);\n await cardigantime.validate(fileValues); // Validate file config against the shape\n\n // Merge configurations: Defaults -> File -> CLI\n const partialConfig: Partial<Config> = {\n ...KODRDRIV_DEFAULTS, // Start with Kodrdriv defaults\n ...fileValues, // Apply file values (overwrites defaults)\n ...transformedCliArgs, // Apply CLI args last (highest precedence)\n } as Partial<Config>; // Cast to Partial<MainConfig> initially\n\n // Specific validation and processing after merge\n const config: Config = await validateAndProcessOptions(partialConfig);\n\n logger.verbose('Final configuration: %s', JSON.stringify(config, null, 2));\n\n const secureConfig: SecureConfig = await validateAndProcessSecureOptions();\n\n return [config, secureConfig, commandConfig];\n}\n\n// Function to handle CLI argument parsing and processing\nfunction getCliConfig(program: Command): [Input, CommandConfig] {\n\n const addSharedOptions = (command: Command) => {\n command\n .option('--dry-run', 'perform a dry run without saving files') // Removed default, will be handled by merging\n .option('--verbose', 'enable verbose logging')\n .option('--debug', 'enable debug logging')\n .option('--overrides', 'enable overrides')\n .option('--model <model>', 'OpenAI model to use')\n .option('-d, --context-directories [contextDirectories...]', 'directories to scan for context')\n .option('-i, --instructions <file>', 'instructions for the AI')\n .option('--config-dir <configDir>', 'configuration directory') // Keep config-dir for specifying location\n .option('--excluded-paths [excludedPatterns...]', 'paths to exclude from the diff');\n }\n\n // Add subcommands\n const commitCommand = program\n .command('commit')\n .option('--cached', 'use cached diff')\n .option('--sendit', 'Commit with the message generated. No review.')\n .description('Generate commit notes');\n addSharedOptions(commitCommand);\n\n const releaseCommand = program\n .command('release')\n .option('--from <from>', 'branch to generate release notes from')\n .option('--to <to>', 'branch to generate release notes to')\n .description('Generate release notes');\n addSharedOptions(releaseCommand);\n\n program.parse();\n\n const cliArgs: Input = program.opts<Input>(); // Get all opts initially\n\n // Determine which command is being run\n let commandName = DEFAULT_COMMAND;\n let commandOptions: Partial<Input> = {}; // Store specific command options\n\n if (program.args.length > 0 && ALLOWED_COMMANDS.includes(program.args[0])) {\n commandName = program.args[0];\n if (commandName === 'commit' && commitCommand.opts) {\n commandOptions = commitCommand.opts<Partial<Input>>();\n } else if (commandName === 'release' && releaseCommand.opts) {\n commandOptions = releaseCommand.opts<Partial<Input>>();\n }\n }\n\n validateCommand(commandName);\n\n // Include command name in CLI args for merging\n const finalCliArgs = { ...cliArgs, ...commandOptions };\n const commandConfig = { commandName };\n return [finalCliArgs, commandConfig];\n}\n\nasync function validateAndProcessSecureOptions(): Promise<SecureConfig> {\n if (!process.env.OPENAI_API_KEY) {\n throw new Error('OpenAI API key is required, set OPENAI_API_KEY environment variable or provide --openai-api-key');\n }\n // Prefer CLI key if provided, otherwise use env var\n const openaiApiKey = process.env.OPENAI_API_KEY as string;\n\n const secureConfig: SecureConfig = {\n openaiApiKey: openaiApiKey,\n };\n\n return secureConfig;\n}\n\n// Renamed validation function to reflect its broader role\nasync function validateAndProcessOptions(options: Partial<Config>): Promise<Config> {\n\n const contextDirectories = await validateContextDirectories(options.contextDirectories || KODRDRIV_DEFAULTS.contextDirectories);\n const instructionsPathOrContent = options.instructions || KODRDRIV_DEFAULTS.instructions;\n const instructions = await validateAndReadInstructions(instructionsPathOrContent);\n const configDir = options.configDirectory || KODRDRIV_DEFAULTS.configDirectory;\n await validateConfigDir(configDir); // Keep validation, but maybe remove return if not used elsewhere\n\n // Ensure all required fields are present and have correct types after merging\n const finalConfig: Config = {\n dryRun: options.dryRun ?? KODRDRIV_DEFAULTS.dryRun,\n verbose: options.verbose ?? KODRDRIV_DEFAULTS.verbose,\n debug: options.debug ?? KODRDRIV_DEFAULTS.debug,\n overrides: options.overrides ?? KODRDRIV_DEFAULTS.overrides,\n model: options.model ?? KODRDRIV_DEFAULTS.model,\n instructions: instructions, // Use processed instructions content\n contextDirectories: contextDirectories,\n configDirectory: configDir,\n // Command-specific options with defaults\n commit: {\n cached: options.commit?.cached ?? KODRDRIV_DEFAULTS.commit.cached, // Might be undefined if not commit command\n sendit: options.commit?.sendit ?? KODRDRIV_DEFAULTS.commit.sendit,\n },\n release: {\n from: options.release?.from ?? KODRDRIV_DEFAULTS.release.from,\n to: options.release?.to ?? KODRDRIV_DEFAULTS.release.to,\n },\n excludedPatterns: options.excludedPatterns ?? KODRDRIV_DEFAULTS.excludedPatterns,\n };\n\n // Final validation against the MainConfig shape (optional, cardigantime might handle it)\n // You could potentially use ConfigShape.parse(finalConfig) here if needed\n\n return finalConfig;\n}\n\n// Export for testing\nexport function validateCommand(commandName: string): string {\n if (!ALLOWED_COMMANDS.includes(commandName)) {\n throw new Error(`Invalid command: ${commandName}, allowed commands: ${ALLOWED_COMMANDS.join(', ')}`);\n }\n return commandName;\n}\n\nasync function validateConfigDir(configDir: string): Promise<string> {\n const logger = getLogger();\n const storage = Storage.create({ log: logger.info });\n\n // Make sure the config directory is absolute\n const absoluteConfigDir = path.isAbsolute(configDir) ?\n configDir :\n path.resolve(process.cwd(), configDir);\n\n // Create the config directory if it doesn't exist\n try {\n if (!(await storage.exists(absoluteConfigDir))) {\n logger.info(`Creating config directory: ${absoluteConfigDir}`);\n await storage.createDirectory(absoluteConfigDir);\n } else if (!(await storage.isDirectory(absoluteConfigDir))) {\n throw new Error(`Config directory is not a directory: ${absoluteConfigDir}`);\n } else if (!(await storage.isDirectoryWritable(absoluteConfigDir))) {\n throw new Error(`Config directory is not writable: ${absoluteConfigDir}`);\n }\n } catch (error: any) {\n logger.error(`Failed to validate or create config directory: ${absoluteConfigDir}`, error);\n throw new Error(`Failed to validate or create config directory: ${absoluteConfigDir}: ${error.message}`);\n }\n\n return absoluteConfigDir;\n}\n\n// Export for testing\nexport async function validateContextDirectories(contextDirectories: string[]): Promise<string[]> {\n const logger = getLogger();\n const storage = Storage.create({ log: logger.info });\n\n // Filter out directories that don't exist\n const validDirectories = [];\n\n for (const dir of contextDirectories) {\n try {\n if (await storage.isDirectoryReadable(dir)) {\n validDirectories.push(dir);\n } else {\n logger.warn(`Directory not readable: ${dir}`);\n }\n } catch (error: any) {\n logger.warn(`Error validating directory ${dir}: ${error.message}`);\n }\n }\n\n return validDirectories;\n}\n\n// Updated to handle reading the file content\n// Export for testing\nexport async function validateAndReadInstructions(instructionsPath: string): Promise<string> {\n const logger = getLogger();\n const storage = Storage.create({ log: logger.info });\n try {\n // Assume it's a file path first\n if (await storage.isFileReadable(instructionsPath)) {\n logger.debug(`Reading instructions from file: ${instructionsPath}`);\n return storage.readFile(instructionsPath, DEFAULT_CHARACTER_ENCODING);\n } else {\n // If not a readable file, assume it might be the content itself (e.g., from config file)\n logger.debug(`Using provided instructions string directly.`);\n return instructionsPath; // Return the string as is\n }\n } catch (error: any) {\n logger.error('Error reading instructions file %s: %s', instructionsPath, error.message);\n // Decide how to handle error: throw, return default, etc.\n // Returning default for now, but might need adjustment\n logger.warn('Falling back to default instructions path due to error.');\n // Re-read the default file path if the provided one failed\n if (DEFAULT_INSTRUCTIONS_DIR && await storage.isFileReadable(DEFAULT_INSTRUCTIONS_DIR)) {\n return storage.readFile(DEFAULT_INSTRUCTIONS_DIR, DEFAULT_CHARACTER_ENCODING);\n }\n throw new Error(`Failed to read instructions from ${instructionsPath} or default location.`);\n }\n}"],"names":["z","object","dryRun","boolean","optional","verbose","debug","overrides","openaiApiKey","string","model","contextDirectories","array","instructions","configDir","cached","sendit","from","to","excludedPatterns","transformCliArgs","finalCliArgs","transformedCliArgs","undefined","configDirectory","commit","release","configure","cardigantime","logger","getLogger","program","Command","name","PROGRAM_NAME","summary","description","version","VERSION","commandConfig","getCliConfig","JSON","stringify","fileValues","read","validate","partialConfig","KODRDRIV_DEFAULTS","config","validateAndProcessOptions","secureConfig","validateAndProcessSecureOptions","addSharedOptions","command","option","commitCommand","releaseCommand","parse","cliArgs","opts","commandName","DEFAULT_COMMAND","commandOptions","args","length","ALLOWED_COMMANDS","includes","validateCommand","process","env","OPENAI_API_KEY","Error","options","validateContextDirectories","instructionsPathOrContent","validateAndReadInstructions","validateConfigDir","finalConfig","join","storage","Storage","log","info","absoluteConfigDir","path","isAbsolute","resolve","cwd","exists","createDirectory","isDirectory","isDirectoryWritable","error","message","validDirectories","dir","isDirectoryReadable","push","warn","instructionsPath","isFileReadable","readFile","DEFAULT_CHARACTER_ENCODING","DEFAULT_INSTRUCTIONS_DIR"],"mappings":"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"}
1
+ {"version":3,"file":"arguments.js","sources":["../src/arguments.ts"],"sourcesContent":["import * as Cardigantime from '@theunwalked/cardigantime';\nimport { Command } from \"commander\";\nimport path from \"path\";\nimport { z } from \"zod\";\nimport { ALLOWED_COMMANDS, DEFAULT_CHARACTER_ENCODING, DEFAULT_COMMAND, DEFAULT_INSTRUCTIONS_DIR, KODRDRIV_DEFAULTS, PROGRAM_NAME, VERSION } from \"./constants\";\nimport { getLogger } from \"./logging\";\nimport { CommandConfig, Config, ConfigSchema, SecureConfig } from './types'; // Import the Config type from main.ts\nimport * as Storage from \"./util/storage\";\n\nexport const InputSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n openaiApiKey: z.string().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n instructions: z.string().optional(),\n configDir: z.string().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n from: z.string().optional(),\n to: z.string().optional(),\n excludedPatterns: z.array(z.string()).optional(),\n context: z.string().optional(),\n messageLimit: z.number().optional(),\n});\n\nexport type Input = z.infer<typeof InputSchema>;\n\n// Function to transform flat CLI args into nested Config structure\nexport const transformCliArgs = (finalCliArgs: Input): Partial<Config> => {\n const transformedCliArgs: Partial<Config> = {};\n\n // Direct mappings from Input to Config\n if (finalCliArgs.dryRun !== undefined) transformedCliArgs.dryRun = finalCliArgs.dryRun;\n if (finalCliArgs.verbose !== undefined) transformedCliArgs.verbose = finalCliArgs.verbose;\n if (finalCliArgs.debug !== undefined) transformedCliArgs.debug = finalCliArgs.debug;\n if (finalCliArgs.overrides !== undefined) transformedCliArgs.overrides = finalCliArgs.overrides;\n if (finalCliArgs.model !== undefined) transformedCliArgs.model = finalCliArgs.model;\n if (finalCliArgs.contextDirectories !== undefined) transformedCliArgs.contextDirectories = finalCliArgs.contextDirectories;\n if (finalCliArgs.instructions !== undefined) transformedCliArgs.instructions = finalCliArgs.instructions;\n\n // Map configDir (CLI) to configDirectory (Cardigantime standard)\n if (finalCliArgs.configDir !== undefined) transformedCliArgs.configDirectory = finalCliArgs.configDir;\n\n // Nested mappings for 'commit' options\n if (finalCliArgs.cached !== undefined || finalCliArgs.sendit !== undefined) {\n transformedCliArgs.commit = {};\n if (finalCliArgs.cached !== undefined) transformedCliArgs.commit.cached = finalCliArgs.cached;\n if (finalCliArgs.sendit !== undefined) transformedCliArgs.commit.sendit = finalCliArgs.sendit;\n if (finalCliArgs.messageLimit !== undefined) transformedCliArgs.commit.messageLimit = finalCliArgs.messageLimit;\n if (finalCliArgs.context !== undefined) transformedCliArgs.commit.context = finalCliArgs.context;\n }\n\n // Nested mappings for 'release' options\n if (finalCliArgs.from !== undefined || finalCliArgs.to !== undefined) {\n transformedCliArgs.release = {};\n if (finalCliArgs.from !== undefined) transformedCliArgs.release.from = finalCliArgs.from;\n if (finalCliArgs.to !== undefined) transformedCliArgs.release.to = finalCliArgs.to;\n if (finalCliArgs.context !== undefined) transformedCliArgs.release.context = finalCliArgs.context;\n if (finalCliArgs.messageLimit !== undefined) transformedCliArgs.release.messageLimit = finalCliArgs.messageLimit;\n }\n\n if (finalCliArgs.excludedPatterns !== undefined) transformedCliArgs.excludedPatterns = finalCliArgs.excludedPatterns;\n\n\n // Note: finalCliArgs.openaiApiKey is intentionally omitted here as it belongs to SecureConfig\n\n return transformedCliArgs;\n}\n\n// Update configure signature to accept cardigantime\nexport const configure = async (cardigantime: Cardigantime.Cardigantime<typeof ConfigSchema.shape>): Promise<[Config, SecureConfig, CommandConfig]> => {\n const logger = getLogger();\n let program = new Command();\n\n // Configure program basics\n program\n .name(PROGRAM_NAME)\n .summary('Create Intelligent Release Notes or Change Logs from Git')\n .description('Create Intelligent Release Notes or Change Logs from Git')\n .version(VERSION);\n\n // Let cardigantime add its arguments first\n program = await cardigantime.configure(program);\n\n // Get CLI arguments using the new function\n const [finalCliArgs, commandConfig]: [Input, CommandConfig] = getCliConfig(program);\n logger.debug('Loaded Command Line Options: %s', JSON.stringify(finalCliArgs, null, 2));\n\n // Transform the flat CLI args using the new function\n const transformedCliArgs: Partial<Config> = transformCliArgs(finalCliArgs);\n logger.debug('Transformed CLI Args for merging: %s', JSON.stringify(transformedCliArgs, null, 2));\n\n // Get values from config file\n const fileValues: Config = await cardigantime.read(finalCliArgs);\n await cardigantime.validate(fileValues); // Validate file config against the shape\n\n // Merge configurations: Defaults -> File -> CLI\n const partialConfig: Partial<Config> = {\n ...KODRDRIV_DEFAULTS, // Start with Kodrdriv defaults\n ...fileValues, // Apply file values (overwrites defaults)\n ...transformedCliArgs, // Apply CLI args last (highest precedence)\n } as Partial<Config>; // Cast to Partial<MainConfig> initially\n\n // Specific validation and processing after merge\n const config: Config = await validateAndProcessOptions(partialConfig);\n\n logger.verbose('Final configuration: %s', JSON.stringify(config, null, 2));\n\n const secureConfig: SecureConfig = await validateAndProcessSecureOptions();\n\n return [config, secureConfig, commandConfig];\n}\n\n// Function to handle CLI argument parsing and processing\nfunction getCliConfig(program: Command): [Input, CommandConfig] {\n\n const addSharedOptions = (command: Command) => {\n command\n .option('--dry-run', 'perform a dry run without saving files') // Removed default, will be handled by merging\n .option('--verbose', 'enable verbose logging')\n .option('--debug', 'enable debug logging')\n .option('--overrides', 'enable overrides')\n .option('--model <model>', 'OpenAI model to use')\n .option('-d, --context-directories [contextDirectories...]', 'directories to scan for context')\n .option('-i, --instructions <file>', 'instructions for the AI')\n .option('--config-dir <configDir>', 'configuration directory') // Keep config-dir for specifying location\n .option('--excluded-paths [excludedPatterns...]', 'paths to exclude from the diff');\n }\n\n // Add subcommands\n const commitCommand = program\n .command('commit')\n .option('--cached', 'use cached diff')\n .option('--sendit', 'Commit with the message generated. No review.')\n .option('--context <context>', 'context for the commit message')\n .option('--message-limit <messageLimit>', 'limit the number of messages to generate')\n .description('Generate commit notes');\n addSharedOptions(commitCommand);\n\n const releaseCommand = program\n .command('release')\n .option('--from <from>', 'branch to generate release notes from')\n .option('--to <to>', 'branch to generate release notes to')\n .option('--context <context>', 'context for the commit message')\n .description('Generate release notes');\n addSharedOptions(releaseCommand);\n\n program.parse();\n\n const cliArgs: Input = program.opts<Input>(); // Get all opts initially\n\n // Determine which command is being run\n let commandName = DEFAULT_COMMAND;\n let commandOptions: Partial<Input> = {}; // Store specific command options\n\n if (program.args.length > 0 && ALLOWED_COMMANDS.includes(program.args[0])) {\n commandName = program.args[0];\n if (commandName === 'commit' && commitCommand.opts) {\n commandOptions = commitCommand.opts<Partial<Input>>();\n } else if (commandName === 'release' && releaseCommand.opts) {\n commandOptions = releaseCommand.opts<Partial<Input>>();\n }\n }\n\n validateCommand(commandName);\n\n // Include command name in CLI args for merging\n const finalCliArgs = { ...cliArgs, ...commandOptions };\n const commandConfig = { commandName };\n return [finalCliArgs, commandConfig];\n}\n\nasync function validateAndProcessSecureOptions(): Promise<SecureConfig> {\n if (!process.env.OPENAI_API_KEY) {\n throw new Error('OpenAI API key is required, set OPENAI_API_KEY environment variable or provide --openai-api-key');\n }\n // Prefer CLI key if provided, otherwise use env var\n const openaiApiKey = process.env.OPENAI_API_KEY as string;\n\n const secureConfig: SecureConfig = {\n openaiApiKey: openaiApiKey,\n };\n\n return secureConfig;\n}\n\n// Renamed validation function to reflect its broader role\nasync function validateAndProcessOptions(options: Partial<Config>): Promise<Config> {\n\n const contextDirectories = await validateContextDirectories(options.contextDirectories || KODRDRIV_DEFAULTS.contextDirectories);\n const instructionsPathOrContent = options.instructions || KODRDRIV_DEFAULTS.instructions;\n const instructions = await validateAndReadInstructions(instructionsPathOrContent);\n const configDir = options.configDirectory || KODRDRIV_DEFAULTS.configDirectory;\n await validateConfigDir(configDir); // Keep validation, but maybe remove return if not used elsewhere\n\n // Ensure all required fields are present and have correct types after merging\n const finalConfig: Config = {\n dryRun: options.dryRun ?? KODRDRIV_DEFAULTS.dryRun,\n verbose: options.verbose ?? KODRDRIV_DEFAULTS.verbose,\n debug: options.debug ?? KODRDRIV_DEFAULTS.debug,\n overrides: options.overrides ?? KODRDRIV_DEFAULTS.overrides,\n model: options.model ?? KODRDRIV_DEFAULTS.model,\n instructions: instructions, // Use processed instructions content\n contextDirectories: contextDirectories,\n configDirectory: configDir,\n // Command-specific options with defaults\n commit: {\n cached: options.commit?.cached ?? KODRDRIV_DEFAULTS.commit.cached, // Might be undefined if not commit command\n sendit: options.commit?.sendit ?? KODRDRIV_DEFAULTS.commit.sendit,\n messageLimit: options.commit?.messageLimit ?? KODRDRIV_DEFAULTS.commit.messageLimit,\n context: options.commit?.context,\n },\n release: {\n from: options.release?.from ?? KODRDRIV_DEFAULTS.release.from,\n to: options.release?.to ?? KODRDRIV_DEFAULTS.release.to,\n messageLimit: options.release?.messageLimit ?? KODRDRIV_DEFAULTS.release.messageLimit,\n context: options.release?.context,\n },\n excludedPatterns: options.excludedPatterns ?? KODRDRIV_DEFAULTS.excludedPatterns,\n };\n\n // Final validation against the MainConfig shape (optional, cardigantime might handle it)\n // You could potentially use ConfigShape.parse(finalConfig) here if needed\n\n return finalConfig;\n}\n\n// Export for testing\nexport function validateCommand(commandName: string): string {\n if (!ALLOWED_COMMANDS.includes(commandName)) {\n throw new Error(`Invalid command: ${commandName}, allowed commands: ${ALLOWED_COMMANDS.join(', ')}`);\n }\n return commandName;\n}\n\nasync function validateConfigDir(configDir: string): Promise<string> {\n const logger = getLogger();\n const storage = Storage.create({ log: logger.info });\n\n // Make sure the config directory is absolute\n const absoluteConfigDir = path.isAbsolute(configDir) ?\n configDir :\n path.resolve(process.cwd(), configDir);\n\n // Create the config directory if it doesn't exist\n try {\n if (!(await storage.exists(absoluteConfigDir))) {\n logger.info(`Creating config directory: ${absoluteConfigDir}`);\n await storage.createDirectory(absoluteConfigDir);\n } else if (!(await storage.isDirectory(absoluteConfigDir))) {\n throw new Error(`Config directory is not a directory: ${absoluteConfigDir}`);\n } else if (!(await storage.isDirectoryWritable(absoluteConfigDir))) {\n throw new Error(`Config directory is not writable: ${absoluteConfigDir}`);\n }\n } catch (error: any) {\n logger.error(`Failed to validate or create config directory: ${absoluteConfigDir}`, error);\n throw new Error(`Failed to validate or create config directory: ${absoluteConfigDir}: ${error.message}`);\n }\n\n return absoluteConfigDir;\n}\n\n// Export for testing\nexport async function validateContextDirectories(contextDirectories: string[]): Promise<string[]> {\n const logger = getLogger();\n const storage = Storage.create({ log: logger.info });\n\n // Filter out directories that don't exist\n const validDirectories = [];\n\n for (const dir of contextDirectories) {\n try {\n if (await storage.isDirectoryReadable(dir)) {\n validDirectories.push(dir);\n } else {\n logger.warn(`Directory not readable: ${dir}`);\n }\n } catch (error: any) {\n logger.warn(`Error validating directory ${dir}: ${error.message}`);\n }\n }\n\n return validDirectories;\n}\n\n// Updated to handle reading the file content\n// Export for testing\nexport async function validateAndReadInstructions(instructionsPath: string): Promise<string> {\n const logger = getLogger();\n const storage = Storage.create({ log: logger.info });\n try {\n // Assume it's a file path first\n if (await storage.isFileReadable(instructionsPath)) {\n logger.debug(`Reading instructions from file: ${instructionsPath}`);\n return storage.readFile(instructionsPath, DEFAULT_CHARACTER_ENCODING);\n } else {\n // If not a readable file, assume it might be the content itself (e.g., from config file)\n logger.debug(`Using provided instructions string directly.`);\n return instructionsPath; // Return the string as is\n }\n } catch (error: any) {\n logger.error('Error reading instructions file %s: %s', instructionsPath, error.message);\n // Decide how to handle error: throw, return default, etc.\n // Returning default for now, but might need adjustment\n logger.warn('Falling back to default instructions path due to error.');\n // Re-read the default file path if the provided one failed\n if (DEFAULT_INSTRUCTIONS_DIR && await storage.isFileReadable(DEFAULT_INSTRUCTIONS_DIR)) {\n return storage.readFile(DEFAULT_INSTRUCTIONS_DIR, DEFAULT_CHARACTER_ENCODING);\n }\n throw new Error(`Failed to read instructions from ${instructionsPath} or default location.`);\n }\n}"],"names":["z","object","dryRun","boolean","optional","verbose","debug","overrides","openaiApiKey","string","model","contextDirectories","array","instructions","configDir","cached","sendit","from","to","excludedPatterns","context","messageLimit","number","transformCliArgs","finalCliArgs","transformedCliArgs","undefined","configDirectory","commit","release","configure","cardigantime","logger","getLogger","program","Command","name","PROGRAM_NAME","summary","description","version","VERSION","commandConfig","getCliConfig","JSON","stringify","fileValues","read","validate","partialConfig","KODRDRIV_DEFAULTS","config","validateAndProcessOptions","secureConfig","validateAndProcessSecureOptions","addSharedOptions","command","option","commitCommand","releaseCommand","parse","cliArgs","opts","commandName","DEFAULT_COMMAND","commandOptions","args","length","ALLOWED_COMMANDS","includes","validateCommand","process","env","OPENAI_API_KEY","Error","options","validateContextDirectories","instructionsPathOrContent","validateAndReadInstructions","validateConfigDir","finalConfig","join","storage","Storage","log","info","absoluteConfigDir","path","isAbsolute","resolve","cwd","exists","createDirectory","isDirectory","isDirectoryWritable","error","message","validDirectories","dir","isDirectoryReadable","push","warn","instructionsPath","isFileReadable","readFile","DEFAULT_CHARACTER_ENCODING","DEFAULT_INSTRUCTIONS_DIR"],"mappings":"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"}
@@ -1,15 +1,18 @@
1
1
  #!/usr/bin/env node
2
+ import { Formatter } from '@riotprompt/riotprompt';
2
3
  import 'dotenv/config';
3
4
  import shellescape from 'shell-escape';
4
5
  import { DEFAULT_EXCLUDED_PATTERNS } from '../constants.js';
5
6
  import { hasStagedChanges, create as create$1 } from '../content/diff.js';
7
+ import { create as create$2 } from '../content/log.js';
6
8
  import { getLogger } from '../logging.js';
7
9
  import { create } from '../prompt/prompts.js';
8
10
  import { run } from '../util/child.js';
9
11
  import { createCompletion } from '../util/openai.js';
12
+ import { stringifyJSON } from '../util/general.js';
10
13
 
11
14
  const execute = async (runConfig)=>{
12
- var _runConfig_commit, _runConfig_commit1, _runConfig_commit2;
15
+ var _runConfig_commit, _runConfig_commit1, _runConfig_commit2, _runConfig_commit3, _runConfig_commit4, _runConfig_commit5;
13
16
  const logger = getLogger();
14
17
  const prompts = create(runConfig.model, runConfig);
15
18
  let diffContent = '';
@@ -18,6 +21,11 @@ const execute = async (runConfig)=>{
18
21
  if (((_runConfig_commit1 = runConfig.commit) === null || _runConfig_commit1 === void 0 ? void 0 : _runConfig_commit1.cached) === undefined) {
19
22
  cached = await hasStagedChanges();
20
23
  }
24
+ // Fix: Exit early if sendit is true but no changes are staged
25
+ if (((_runConfig_commit2 = runConfig.commit) === null || _runConfig_commit2 === void 0 ? void 0 : _runConfig_commit2.sendit) && !cached) {
26
+ logger.warn('SendIt mode enabled, but no changes to commit.');
27
+ process.exit(1);
28
+ }
21
29
  var _runConfig_excludedPatterns;
22
30
  const options = {
23
31
  cached,
@@ -25,12 +33,23 @@ const execute = async (runConfig)=>{
25
33
  };
26
34
  const diff = await create$1(options);
27
35
  diffContent = await diff.get();
28
- const prompt = await prompts.createCommitPrompt(diffContent);
36
+ const logOptions = {
37
+ limit: (_runConfig_commit3 = runConfig.commit) === null || _runConfig_commit3 === void 0 ? void 0 : _runConfig_commit3.messageLimit
38
+ };
39
+ const log = await create$2(logOptions);
40
+ const logContent = await log.get();
41
+ const prompt = await prompts.createCommitPrompt(diffContent, logContent, (_runConfig_commit4 = runConfig.commit) === null || _runConfig_commit4 === void 0 ? void 0 : _runConfig_commit4.context);
42
+ if (runConfig.debug) {
43
+ const formattedPrompt = Formatter.create({
44
+ logger
45
+ }).formatPrompt("gpt-4o-mini", prompt);
46
+ logger.debug('Formatted Prompt: %s', stringifyJSON(formattedPrompt));
47
+ }
29
48
  const request = prompts.format(prompt);
30
49
  const summary = await createCompletion(request.messages, {
31
50
  model: runConfig.model
32
51
  });
33
- if ((_runConfig_commit2 = runConfig.commit) === null || _runConfig_commit2 === void 0 ? void 0 : _runConfig_commit2.sendit) {
52
+ if ((_runConfig_commit5 = runConfig.commit) === null || _runConfig_commit5 === void 0 ? void 0 : _runConfig_commit5.sendit) {
34
53
  if (!cached) {
35
54
  logger.error('SendIt mode enabled, but no changes to commit. Message: \n\n%s\n\n', summary);
36
55
  process.exit(1);
@@ -1 +1 @@
1
- {"version":3,"file":"commit.js","sources":["../../src/commands/commit.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Model, Request } from '@riotprompt/riotprompt';\nimport 'dotenv/config';\nimport { ChatCompletionMessageParam } from 'openai/resources';\nimport shellescape from 'shell-escape';\nimport { DEFAULT_EXCLUDED_PATTERNS } from '../constants';\nimport * as Diff from '../content/diff';\nimport { getLogger } from '../logging';\nimport * as Prompts from '../prompt/prompts';\nimport { Config } from '../types';\nimport { run } from '../util/child';\nimport { createCompletion } from '../util/openai';\n\nexport const execute = async (runConfig: Config) => {\n const logger = getLogger();\n const prompts = Prompts.create(runConfig.model as Model, runConfig);\n\n let diffContent = '';\n\n let cached = runConfig.commit?.cached;\n // If cached is undefined? We're going to look for a staged commit; otherwise, we'll use the supplied setting.\n if (runConfig.commit?.cached === undefined) {\n cached = await Diff.hasStagedChanges();\n }\n const options = { cached, excludedPatterns: runConfig.excludedPatterns ?? DEFAULT_EXCLUDED_PATTERNS };\n const diff = await Diff.create(options);\n diffContent = await diff.get();\n\n const prompt = await prompts.createCommitPrompt(diffContent);\n\n const request: Request = prompts.format(prompt);\n\n const summary = await createCompletion(request.messages as ChatCompletionMessageParam[], { model: runConfig.model });\n\n if (runConfig.commit?.sendit) {\n if (!cached) {\n logger.error('SendIt mode enabled, but no changes to commit. Message: \\n\\n%s\\n\\n', summary);\n process.exit(1);\n }\n\n logger.info('SendIt mode enabled. Committing with message: \\n\\n%s\\n\\n', summary);\n try {\n const escapedSummary = shellescape([summary]);\n await run(`git commit -m ${escapedSummary}`);\n logger.info('Commit successful!');\n } catch (error) {\n logger.error('Failed to commit:', error);\n process.exit(1);\n }\n }\n\n return summary;\n}\n"],"names":["execute","runConfig","logger","getLogger","prompts","Prompts","model","diffContent","cached","commit","undefined","Diff","options","excludedPatterns","DEFAULT_EXCLUDED_PATTERNS","diff","get","prompt","createCommitPrompt","request","format","summary","createCompletion","messages","sendit","error","process","exit","info","escapedSummary","shellescape","run"],"mappings":";;;;;;;;;;AAaO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMA,UAAU,CAAOC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAMbA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAETA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAaAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AApBJ,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,UAAUC,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAACJ,SAAAA,CAAUK,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAWL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAEzD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAIM,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAElB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAIC,UAASP,iBAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUQ,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAhBR,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAkBO,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;CAErC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAIP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAUQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,SAAhBR,kBAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,kBAAAA,CAAkBO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAAKE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW,CAAA,CAAA,CAAA;QACxCF,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAqB,CAAA,CAAA,CAAA;AACxC,CAAA,CAAA,CAAA,CAAA,CAAA;AAC4CV,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAA5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMW,OAAU,CAAA,CAAA,CAAA,CAAA;AAAEJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAQK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAAAA,CAAkBZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,SAAAA,CAAUY,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAA1BZ,yCAAAA,2BAA8Ba,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAA0B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACpG,CAAA,CAAA,CAAA,CAAA,MAAMC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAMJ,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAACC,OAAAA,CAAAA,CAAAA;IAC/BL,WAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMQ,KAAKC,GAAG,CAAA,CAAA,CAAA;AAE5B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,MAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMb,OAAQc,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAkB,CAACX,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;CAEhD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMY,OAAAA,CAAmBf,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQgB,CAAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAACH,MAAAA,CAAAA,CAAAA;AAExC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMI,OAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,gBAAiBH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAkC,CAAA,CAAA;AAAEjB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAUK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAElH,CAAA,CAAA,CAAA,CAAA,IAAA,CAAIL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAUQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAM,cAAhBR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAkBuB,MAAM,CAAE,CAAA,CAAA;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAChB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAA,CAAA,CAAA;YACTN,MAAOuB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAC,CAAsEJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,OAAAA,CAAAA,CAAAA;AACnFK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQC,CAAI,CAAA,CAAA,CAAA,CAAC,CAAA,CAAA,CAAA;AACjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAEAzB,MAAO0B,CAAAA,CAAAA,CAAAA,CAAAA,CAAI,CAAC,CAA4DP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,OAAAA,CAAAA,CAAAA;QACxE,CAAI,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAiBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA,CAAA;AAACT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMU,GAAI,CAAA,CAAC,cAAc,CAAEF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgB,CAAA,CAAA,CAAA,CAAA;AAC3C3B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO0B,CAAI,CAAA,CAAA,CAAA,CAAC,oBAAA,CAAA,CAAA;AAChB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAOH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA;YACZvB,MAAOuB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAC,CAAqBA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,CAAAA,CAAAA;AAClCC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQC,CAAI,CAAA,CAAA,CAAA,CAAC,CAAA,CAAA,CAAA;AACjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACJ,CAAA,CAAA,CAAA,CAAA,CAAA;IAEA,OAAON,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACX,CAAA,CAAA;;"}
1
+ {"version":3,"file":"commit.js","sources":["../../src/commands/commit.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Model, Request, Formatter } from '@riotprompt/riotprompt';\nimport 'dotenv/config';\nimport { ChatCompletionMessageParam } from 'openai/resources';\nimport shellescape from 'shell-escape';\nimport { DEFAULT_EXCLUDED_PATTERNS } from '../constants';\nimport * as Diff from '../content/diff';\nimport * as Log from '../content/log';\nimport { getLogger } from '../logging';\nimport * as Prompts from '../prompt/prompts';\nimport { Config } from '../types';\nimport { run } from '../util/child';\nimport { createCompletion } from '../util/openai';\nimport { stringifyJSON } from '../util/general';\n\nexport const execute = async (runConfig: Config) => {\n const logger = getLogger();\n const prompts = Prompts.create(runConfig.model as Model, runConfig);\n\n let diffContent = '';\n\n let cached = runConfig.commit?.cached;\n // If cached is undefined? We're going to look for a staged commit; otherwise, we'll use the supplied setting.\n if (runConfig.commit?.cached === undefined) {\n cached = await Diff.hasStagedChanges();\n }\n\n // Fix: Exit early if sendit is true but no changes are staged\n if (runConfig.commit?.sendit && !cached) {\n logger.warn('SendIt mode enabled, but no changes to commit.');\n process.exit(1);\n }\n\n const options = { cached, excludedPatterns: runConfig.excludedPatterns ?? DEFAULT_EXCLUDED_PATTERNS };\n const diff = await Diff.create(options);\n diffContent = await diff.get();\n\n const logOptions = {\n limit: runConfig.commit?.messageLimit,\n };\n const log = await Log.create(logOptions);\n const logContent = await log.get();\n\n const prompt = await prompts.createCommitPrompt(diffContent, logContent, runConfig.commit?.context);\n\n if (runConfig.debug) {\n const formattedPrompt = Formatter.create({ logger }).formatPrompt(\"gpt-4o-mini\", prompt);\n logger.debug('Formatted Prompt: %s', stringifyJSON(formattedPrompt));\n }\n\n const request: Request = prompts.format(prompt);\n\n const summary = await createCompletion(request.messages as ChatCompletionMessageParam[], { model: runConfig.model });\n\n if (runConfig.commit?.sendit) {\n if (!cached) {\n logger.error('SendIt mode enabled, but no changes to commit. Message: \\n\\n%s\\n\\n', summary);\n process.exit(1);\n }\n\n logger.info('SendIt mode enabled. Committing with message: \\n\\n%s\\n\\n', summary);\n try {\n const escapedSummary = shellescape([summary]);\n await run(`git commit -m ${escapedSummary}`);\n logger.info('Commit successful!');\n } catch (error) {\n logger.error('Failed to commit:', error);\n process.exit(1);\n }\n }\n\n return summary;\n}\n"],"names":["execute","runConfig","logger","getLogger","prompts","Prompts","model","diffContent","cached","commit","undefined","Diff","sendit","warn","process","exit","options","excludedPatterns","DEFAULT_EXCLUDED_PATTERNS","diff","get","logOptions","limit","messageLimit","log","Log","logContent","prompt","createCommitPrompt","context","debug","formattedPrompt","Formatter","create","formatPrompt","stringifyJSON","request","format","summary","createCompletion","messages","error","info","escapedSummary","shellescape","run"],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import 'dotenv/config';
3
- import { DEFAULT_TO_COMMIT_ALIAS, DEFAULT_FROM_COMMIT_ALIAS } from '../constants.js';
3
+ import { DEFAULT_TO_COMMIT_ALIAS, DEFAULT_FROM_COMMIT_ALIAS, DEFAULT_EXCLUDED_PATTERNS } from '../constants.js';
4
4
  import { create as create$1 } from '../content/log.js';
5
+ import { create as create$2 } from '../content/diff.js';
5
6
  import { create } from '../prompt/prompts.js';
6
7
  import { createCompletion } from '../util/openai.js';
7
8
 
8
9
  const execute = async (runConfig)=>{
9
- var _runConfig_release, _runConfig_release1;
10
+ var _runConfig_release, _runConfig_release1, _runConfig_release2, _runConfig_release3, _runConfig_release4;
10
11
  const prompts = await create(runConfig.model, runConfig);
11
12
  var _runConfig_release_from, _runConfig_release_to;
12
13
  const log = await create$1({
@@ -14,8 +15,16 @@ const execute = async (runConfig)=>{
14
15
  to: (_runConfig_release_to = (_runConfig_release1 = runConfig.release) === null || _runConfig_release1 === void 0 ? void 0 : _runConfig_release1.to) !== null && _runConfig_release_to !== void 0 ? _runConfig_release_to : DEFAULT_TO_COMMIT_ALIAS
15
16
  });
16
17
  let logContent = '';
18
+ var _runConfig_release_from1, _runConfig_release_to1, _runConfig_excludedPatterns;
19
+ const diff = await create$2({
20
+ from: (_runConfig_release_from1 = (_runConfig_release2 = runConfig.release) === null || _runConfig_release2 === void 0 ? void 0 : _runConfig_release2.from) !== null && _runConfig_release_from1 !== void 0 ? _runConfig_release_from1 : DEFAULT_FROM_COMMIT_ALIAS,
21
+ to: (_runConfig_release_to1 = (_runConfig_release3 = runConfig.release) === null || _runConfig_release3 === void 0 ? void 0 : _runConfig_release3.to) !== null && _runConfig_release_to1 !== void 0 ? _runConfig_release_to1 : DEFAULT_TO_COMMIT_ALIAS,
22
+ excludedPatterns: (_runConfig_excludedPatterns = runConfig.excludedPatterns) !== null && _runConfig_excludedPatterns !== void 0 ? _runConfig_excludedPatterns : DEFAULT_EXCLUDED_PATTERNS
23
+ });
24
+ let diffContent = '';
25
+ diffContent = await diff.get();
17
26
  logContent = await log.get();
18
- const prompt = await prompts.createReleasePrompt(logContent);
27
+ const prompt = await prompts.createReleasePrompt(logContent, diffContent, (_runConfig_release4 = runConfig.release) === null || _runConfig_release4 === void 0 ? void 0 : _runConfig_release4.context);
19
28
  const request = prompts.format(prompt);
20
29
  const summary = await createCompletion(request.messages, {
21
30
  model: runConfig.model
@@ -1 +1 @@
1
- {"version":3,"file":"release.js","sources":["../../src/commands/release.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Model, Request } from '@riotprompt/riotprompt';\nimport 'dotenv/config';\nimport { ChatCompletionMessageParam } from 'openai/resources';\nimport { DEFAULT_FROM_COMMIT_ALIAS, DEFAULT_TO_COMMIT_ALIAS } from '../constants';\nimport * as Log from '../content/log';\nimport * as Prompts from '../prompt/prompts';\nimport { Config } from '../types';\nimport { createCompletion } from '../util/openai';\n\nexport const execute = async (runConfig: Config) => {\n const prompts = await Prompts.create(runConfig.model as Model, runConfig);\n\n const log = await Log.create({ from: runConfig.release?.from ?? DEFAULT_FROM_COMMIT_ALIAS, to: runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS });\n let logContent = '';\n\n logContent = await log.get();\n\n const prompt = await prompts.createReleasePrompt(logContent);\n\n const request: Request = prompts.format(prompt);\n\n const summary = await createCompletion(request.messages as ChatCompletionMessageParam[], { model: runConfig.model });\n\n return summary;\n}\n"],"names":["execute","runConfig","prompts","Prompts","model","log","Log","from","release","DEFAULT_FROM_COMMIT_ALIAS","to","DEFAULT_TO_COMMIT_ALIAS","logContent","get","prompt","createReleasePrompt","request","format","summary","createCompletion","messages"],"mappings":"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"}
1
+ {"version":3,"file":"release.js","sources":["../../src/commands/release.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Model, Request } from '@riotprompt/riotprompt';\nimport 'dotenv/config';\nimport { ChatCompletionMessageParam } from 'openai/resources';\nimport { DEFAULT_EXCLUDED_PATTERNS, DEFAULT_FROM_COMMIT_ALIAS, DEFAULT_TO_COMMIT_ALIAS } from '../constants';\nimport * as Log from '../content/log';\nimport * as Diff from '../content/diff';\nimport * as Prompts from '../prompt/prompts';\nimport { Config } from '../types';\nimport { createCompletion } from '../util/openai';\n\nexport const execute = async (runConfig: Config) => {\n const prompts = await Prompts.create(runConfig.model as Model, runConfig);\n\n const log = await Log.create({ from: runConfig.release?.from ?? DEFAULT_FROM_COMMIT_ALIAS, to: runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS });\n let logContent = '';\n\n const diff = await Diff.create({ from: runConfig.release?.from ?? DEFAULT_FROM_COMMIT_ALIAS, to: runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS, excludedPatterns: runConfig.excludedPatterns ?? DEFAULT_EXCLUDED_PATTERNS });\n let diffContent = '';\n\n diffContent = await diff.get();\n logContent = await log.get();\n\n const prompt = await prompts.createReleasePrompt(logContent, diffContent, runConfig.release?.context);\n\n const request: Request = prompts.format(prompt);\n\n const summary = await createCompletion(request.messages as ChatCompletionMessageParam[], { model: runConfig.model });\n\n return summary;\n}\n"],"names":["execute","runConfig","prompts","Prompts","model","log","Log","from","release","DEFAULT_FROM_COMMIT_ALIAS","to","DEFAULT_TO_COMMIT_ALIAS","logContent","diff","Diff","excludedPatterns","DEFAULT_EXCLUDED_PATTERNS","diffContent","get","prompt","createReleasePrompt","context","request","format","summary","createCompletion","messages"],"mappings":"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"}
package/dist/constants.js CHANGED
@@ -1,4 +1,4 @@
1
- const VERSION = '0.0.1 (HEAD/4729cd0 T:0.0.1 2025-05-23 21:20:18 -0700) linux x64 v22.15.0';
1
+ const VERSION = '0.0.2 (HEAD/4c6f7a3 T:0.0.2 2025-05-26 13:00:50 -0700) linux x64 v22.15.0';
2
2
  const PROGRAM_NAME = 'kodrdriv';
3
3
  const DEFAULT_CHARACTER_ENCODING = 'utf-8';
4
4
  const DEFAULT_OVERRIDES = false;
@@ -17,7 +17,8 @@ const ALLOWED_COMMANDS = [
17
17
  const DEFAULT_COMMAND = COMMAND_COMMIT;
18
18
  const DEFAULT_CONFIG_DIR = `.${PROGRAM_NAME}`;
19
19
  const DEFAULT_PERSONAS_DIR = `/personas`;
20
- const DEFAULT_PERSONA_YOU_FILE = `${DEFAULT_PERSONAS_DIR}/you.md`;
20
+ const DEFAULT_PERSONA_COMMITTER_FILE = `${DEFAULT_PERSONAS_DIR}/committer.md`;
21
+ const DEFAULT_PERSONA_RELEASER_FILE = `${DEFAULT_PERSONAS_DIR}/releaser.md`;
21
22
  const DEFAULT_INSTRUCTIONS_DIR = `/instructions`;
22
23
  const DEFAULT_INSTRUCTIONS_COMMIT_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/commit.md`;
23
24
  const DEFAULT_INSTRUCTIONS_RELEASE_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/release.md`;
@@ -25,6 +26,7 @@ const DEFAULT_CACHED = false;
25
26
  const DEFAULT_SENDIT_MODE = false;
26
27
  const DEFAULT_FROM_COMMIT_ALIAS = 'main';
27
28
  const DEFAULT_TO_COMMIT_ALIAS = 'HEAD';
29
+ const DEFAULT_MESSAGE_LIMIT = 10;
28
30
  const DEFAULT_EXCLUDED_PATTERNS = [
29
31
  // Node modules & dependency files
30
32
  "node_modules",
@@ -82,14 +84,16 @@ const KODRDRIV_DEFAULTS = {
82
84
  configDirectory: DEFAULT_CONFIG_DIR,
83
85
  commit: {
84
86
  cached: DEFAULT_CACHED,
85
- sendit: DEFAULT_SENDIT_MODE
87
+ sendit: DEFAULT_SENDIT_MODE,
88
+ messageLimit: DEFAULT_MESSAGE_LIMIT
86
89
  },
87
90
  release: {
88
91
  from: DEFAULT_FROM_COMMIT_ALIAS,
89
- to: DEFAULT_TO_COMMIT_ALIAS
92
+ to: DEFAULT_TO_COMMIT_ALIAS,
93
+ messageLimit: DEFAULT_MESSAGE_LIMIT
90
94
  },
91
95
  excludedPatterns: DEFAULT_EXCLUDED_PATTERNS
92
96
  };
93
97
 
94
- export { ALLOWED_COMMANDS, COMMAND_COMMIT, COMMAND_RELEASE, DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS, DEFAULT_CACHED, DEFAULT_CHARACTER_ENCODING, DEFAULT_COMMAND, DEFAULT_CONFIG_DIR, DEFAULT_CONTEXT_DIRECTORIES, DEFAULT_DEBUG, DEFAULT_DRY_RUN, DEFAULT_EXCLUDED_PATTERNS, DEFAULT_FROM_COMMIT_ALIAS, DEFAULT_INSTRUCTIONS_COMMIT_FILE, DEFAULT_INSTRUCTIONS_DIR, DEFAULT_INSTRUCTIONS_RELEASE_FILE, DEFAULT_MODEL, DEFAULT_OVERRIDES, DEFAULT_PERSONAS_DIR, DEFAULT_PERSONA_YOU_FILE, DEFAULT_SENDIT_MODE, DEFAULT_TO_COMMIT_ALIAS, DEFAULT_VERBOSE, KODRDRIV_DEFAULTS, PROGRAM_NAME, VERSION };
98
+ export { ALLOWED_COMMANDS, COMMAND_COMMIT, COMMAND_RELEASE, DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS, DEFAULT_CACHED, DEFAULT_CHARACTER_ENCODING, DEFAULT_COMMAND, DEFAULT_CONFIG_DIR, DEFAULT_CONTEXT_DIRECTORIES, DEFAULT_DEBUG, DEFAULT_DRY_RUN, DEFAULT_EXCLUDED_PATTERNS, DEFAULT_FROM_COMMIT_ALIAS, DEFAULT_INSTRUCTIONS_COMMIT_FILE, DEFAULT_INSTRUCTIONS_DIR, DEFAULT_INSTRUCTIONS_RELEASE_FILE, DEFAULT_MESSAGE_LIMIT, DEFAULT_MODEL, DEFAULT_OVERRIDES, DEFAULT_PERSONAS_DIR, DEFAULT_PERSONA_COMMITTER_FILE, DEFAULT_PERSONA_RELEASER_FILE, DEFAULT_SENDIT_MODE, DEFAULT_TO_COMMIT_ALIAS, DEFAULT_VERBOSE, KODRDRIV_DEFAULTS, PROGRAM_NAME, VERSION };
95
99
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["export const VERSION = '__VERSION__ (__GIT_BRANCH__/__GIT_COMMIT__ __GIT_TAGS__ __GIT_COMMIT_DATE__) __SYSTEM_INFO__';\nexport const PROGRAM_NAME = 'kodrdriv';\nexport const DEFAULT_CHARACTER_ENCODING = 'utf-8';\nexport const DEFAULT_BINARY_TO_TEXT_ENCODING = 'base64';\nexport const DEFAULT_DIFF = true;\nexport const DEFAULT_LOG = false;\nexport const DEFAULT_OVERRIDES = false;\nexport const DATE_FORMAT_MONTH_DAY = 'MM-DD';\nexport const DATE_FORMAT_YEAR = 'YYYY';\nexport const DATE_FORMAT_YEAR_MONTH = 'YYYY-MM';\nexport const DATE_FORMAT_YEAR_MONTH_DAY = 'YYYY-MM-DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_SLASH = 'YYYY/MM/DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES = 'YYYY-MM-DD-HHmm';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS = 'YYYY-MM-DD-HHmmss';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS = 'YYYY-MM-DD-HHmmss.SSS';\nexport const DATE_FORMAT_MONTH = 'MM';\nexport const DATE_FORMAT_DAY = 'DD';\nexport const DATE_FORMAT_HOURS = 'HHmm';\nexport const DATE_FORMAT_MINUTES = 'mm';\nexport const DATE_FORMAT_SECONDS = 'ss';\nexport const DATE_FORMAT_MILLISECONDS = 'SSS';\nexport const DEFAULT_VERBOSE = false;\nexport const DEFAULT_DRY_RUN = false;\nexport const DEFAULT_DEBUG = false;\nexport const DEFAULT_MODEL = 'gpt-4o-mini';\nexport const DEFAULT_CONTEXT_DIRECTORIES: string[] = [];\n\nexport const COMMAND_COMMIT = 'commit';\nexport const COMMAND_RELEASE = 'release';\nexport const ALLOWED_COMMANDS = [COMMAND_COMMIT, COMMAND_RELEASE];\nexport const DEFAULT_COMMAND = COMMAND_COMMIT;\n\nexport const DEFAULT_CONFIG_DIR = `.${PROGRAM_NAME}`;\n\nexport const DEFAULT_PERSONAS_DIR = `/personas`;\n\nexport const DEFAULT_PERSONA_YOU_FILE = `${DEFAULT_PERSONAS_DIR}/you.md`;\n\nexport const DEFAULT_INSTRUCTIONS_DIR = `/instructions`;\n\nexport const DEFAULT_INSTRUCTIONS_COMMIT_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/commit.md`;\nexport const DEFAULT_INSTRUCTIONS_RELEASE_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/release.md`;\n\nexport const DEFAULT_CACHED = false;\n\nexport const DEFAULT_SENDIT_MODE = false;\n\nexport const DEFAULT_FROM_COMMIT_ALIAS = 'main';\nexport const DEFAULT_TO_COMMIT_ALIAS = 'HEAD';\nexport const DEFAULT_VERSION = '1.0.0';\n\nexport const DEFAULT_EXCLUDED_PATTERNS: string[] = [\n // Node modules & dependency files\n \"node_modules\",\n \"pnpm-lock.yaml\",\n \"package-lock.json\",\n \"yarn.lock\",\n \"bun.lockb\",\n \"composer.lock\",\n \"Cargo.lock\",\n \"Gemfile.lock\",\n\n // Build output\n \"dist\",\n \"build\",\n \"out\",\n \".next\",\n \".nuxt\",\n \"coverage\",\n\n // IDE & OS files\n \".vscode\",\n \".idea\",\n \".DS_Store\",\n\n // Version control\n \".git\",\n \".gitignore\",\n\n // Logs, caches, and temp\n \"logs\",\n \"tmp\",\n \".cache\",\n \"*.log\",\n\n // Sensitive data\n \".env\",\n \".env.*\",\n \"*.pem\",\n \"*.crt\",\n \"*.key\",\n\n // Binary and database files\n \"*.sqlite\",\n \"*.db\",\n \"*.zip\",\n \"*.tar\",\n \"*.gz\",\n \"*.exe\",\n \"*.bin\",\n];\n\n// Define defaults in one place\nexport const KODRDRIV_DEFAULTS = {\n dryRun: DEFAULT_DRY_RUN,\n verbose: DEFAULT_VERBOSE,\n debug: DEFAULT_DEBUG,\n overrides: DEFAULT_OVERRIDES,\n model: DEFAULT_MODEL,\n instructions: DEFAULT_INSTRUCTIONS_DIR,\n contextDirectories: DEFAULT_CONTEXT_DIRECTORIES,\n commandName: DEFAULT_COMMAND,\n configDirectory: DEFAULT_CONFIG_DIR,\n commit: {\n cached: DEFAULT_CACHED,\n sendit: DEFAULT_SENDIT_MODE,\n },\n release: {\n from: DEFAULT_FROM_COMMIT_ALIAS,\n to: DEFAULT_TO_COMMIT_ALIAS,\n },\n excludedPatterns: DEFAULT_EXCLUDED_PATTERNS,\n};"],"names":["VERSION","PROGRAM_NAME","DEFAULT_CHARACTER_ENCODING","DEFAULT_OVERRIDES","DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS","DEFAULT_VERBOSE","DEFAULT_DRY_RUN","DEFAULT_DEBUG","DEFAULT_MODEL","DEFAULT_CONTEXT_DIRECTORIES","COMMAND_COMMIT","COMMAND_RELEASE","ALLOWED_COMMANDS","DEFAULT_COMMAND","DEFAULT_CONFIG_DIR","DEFAULT_PERSONAS_DIR","DEFAULT_PERSONA_YOU_FILE","DEFAULT_INSTRUCTIONS_DIR","DEFAULT_INSTRUCTIONS_COMMIT_FILE","DEFAULT_INSTRUCTIONS_RELEASE_FILE","DEFAULT_CACHED","DEFAULT_SENDIT_MODE","DEFAULT_FROM_COMMIT_ALIAS","DEFAULT_TO_COMMIT_ALIAS","DEFAULT_EXCLUDED_PATTERNS","KODRDRIV_DEFAULTS","dryRun","verbose","debug","overrides","model","instructions","contextDirectories","commandName","configDirectory","commit","cached","sendit","release","from","to","excludedPatterns"],"mappings":"AAAO,MAAMA,UAAU;AAChB,MAAMC,eAAe;AACrB,MAAMC,6BAA6B;AAInC,MAAMC,oBAAoB;AAO1B,MAAMC,mDAAmD;AAQzD,MAAMC,kBAAkB;AACxB,MAAMC,kBAAkB;AACxB,MAAMC,gBAAgB;AACtB,MAAMC,gBAAgB;AACtB,MAAMC,2BAAwC,GAAA;AAE9C,MAAMC,iBAAiB;AACvB,MAAMC,kBAAkB;MAClBC,gBAAmB,GAAA;AAACF,IAAAA,cAAAA;AAAgBC,IAAAA;;AAC1C,MAAME,kBAAkBH;MAElBI,kBAAqB,GAAA,CAAC,CAAC,EAAEb;AAEzBc,MAAAA,oBAAAA,GAAuB,CAAC,SAAS;MAEjCC,wBAA2B,GAAA,CAAA,EAAGD,oBAAqB,CAAA,OAAO;AAE1DE,MAAAA,wBAAAA,GAA2B,CAAC,aAAa;MAEzCC,gCAAmC,GAAA,CAAA,EAAGD,wBAAyB,CAAA,UAAU;MACzEE,iCAAoC,GAAA,CAAA,EAAGF,wBAAyB,CAAA,WAAW;AAEjF,MAAMG,iBAAiB;AAEvB,MAAMC,sBAAsB;AAE5B,MAAMC,4BAA4B;AAClC,MAAMC,0BAA0B;MAG1BC,yBAAsC,GAAA;;AAE/C,IAAA,cAAA;AACA,IAAA,gBAAA;AACA,IAAA,mBAAA;AACA,IAAA,WAAA;AACA,IAAA,WAAA;AACA,IAAA,eAAA;AACA,IAAA,YAAA;AACA,IAAA,cAAA;;AAGA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,KAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA,UAAA;;AAGA,IAAA,SAAA;AACA,IAAA,OAAA;AACA,IAAA,WAAA;;AAGA,IAAA,MAAA;AACA,IAAA,YAAA;;AAGA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,QAAA;AACA,IAAA,OAAA;;AAGA,IAAA,MAAA;AACA,IAAA,QAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;;AAGA,IAAA,UAAA;AACA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA;;AAGJ;MACaC,iBAAoB,GAAA;IAC7BC,MAAQpB,EAAAA,eAAAA;IACRqB,OAAStB,EAAAA,eAAAA;IACTuB,KAAOrB,EAAAA,aAAAA;IACPsB,SAAW1B,EAAAA,iBAAAA;IACX2B,KAAOtB,EAAAA,aAAAA;IACPuB,YAAcd,EAAAA,wBAAAA;IACde,kBAAoBvB,EAAAA,2BAAAA;IACpBwB,WAAapB,EAAAA,eAAAA;IACbqB,eAAiBpB,EAAAA,kBAAAA;IACjBqB,MAAQ,EAAA;QACJC,MAAQhB,EAAAA,cAAAA;QACRiB,MAAQhB,EAAAA;AACZ,KAAA;IACAiB,OAAS,EAAA;QACLC,IAAMjB,EAAAA,yBAAAA;QACNkB,EAAIjB,EAAAA;AACR,KAAA;IACAkB,gBAAkBjB,EAAAA;AACtB;;;;"}
1
+ {"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["export const VERSION = '__VERSION__ (__GIT_BRANCH__/__GIT_COMMIT__ __GIT_TAGS__ __GIT_COMMIT_DATE__) __SYSTEM_INFO__';\nexport const PROGRAM_NAME = 'kodrdriv';\nexport const DEFAULT_CHARACTER_ENCODING = 'utf-8';\nexport const DEFAULT_BINARY_TO_TEXT_ENCODING = 'base64';\nexport const DEFAULT_DIFF = true;\nexport const DEFAULT_LOG = false;\nexport const DEFAULT_OVERRIDES = false;\nexport const DATE_FORMAT_MONTH_DAY = 'MM-DD';\nexport const DATE_FORMAT_YEAR = 'YYYY';\nexport const DATE_FORMAT_YEAR_MONTH = 'YYYY-MM';\nexport const DATE_FORMAT_YEAR_MONTH_DAY = 'YYYY-MM-DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_SLASH = 'YYYY/MM/DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES = 'YYYY-MM-DD-HHmm';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS = 'YYYY-MM-DD-HHmmss';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS = 'YYYY-MM-DD-HHmmss.SSS';\nexport const DATE_FORMAT_MONTH = 'MM';\nexport const DATE_FORMAT_DAY = 'DD';\nexport const DATE_FORMAT_HOURS = 'HHmm';\nexport const DATE_FORMAT_MINUTES = 'mm';\nexport const DATE_FORMAT_SECONDS = 'ss';\nexport const DATE_FORMAT_MILLISECONDS = 'SSS';\nexport const DEFAULT_VERBOSE = false;\nexport const DEFAULT_DRY_RUN = false;\nexport const DEFAULT_DEBUG = false;\nexport const DEFAULT_MODEL = 'gpt-4o-mini';\nexport const DEFAULT_CONTEXT_DIRECTORIES: string[] = [];\n\nexport const COMMAND_COMMIT = 'commit';\nexport const COMMAND_RELEASE = 'release';\nexport const ALLOWED_COMMANDS = [COMMAND_COMMIT, COMMAND_RELEASE];\nexport const DEFAULT_COMMAND = COMMAND_COMMIT;\n\nexport const DEFAULT_CONFIG_DIR = `.${PROGRAM_NAME}`;\n\nexport const DEFAULT_PERSONAS_DIR = `/personas`;\n\nexport const DEFAULT_PERSONA_COMMITTER_FILE = `${DEFAULT_PERSONAS_DIR}/committer.md`;\nexport const DEFAULT_PERSONA_RELEASER_FILE = `${DEFAULT_PERSONAS_DIR}/releaser.md`;\n\nexport const DEFAULT_INSTRUCTIONS_DIR = `/instructions`;\n\nexport const DEFAULT_INSTRUCTIONS_COMMIT_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/commit.md`;\nexport const DEFAULT_INSTRUCTIONS_RELEASE_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/release.md`;\n\nexport const DEFAULT_CACHED = false;\n\nexport const DEFAULT_SENDIT_MODE = false;\n\nexport const DEFAULT_FROM_COMMIT_ALIAS = 'main';\nexport const DEFAULT_TO_COMMIT_ALIAS = 'HEAD';\nexport const DEFAULT_VERSION = '1.0.0';\nexport const DEFAULT_MESSAGE_LIMIT = 10;\n\nexport const DEFAULT_EXCLUDED_PATTERNS: string[] = [\n // Node modules & dependency files\n \"node_modules\",\n \"pnpm-lock.yaml\",\n \"package-lock.json\",\n \"yarn.lock\",\n \"bun.lockb\",\n \"composer.lock\",\n \"Cargo.lock\",\n \"Gemfile.lock\",\n\n // Build output\n \"dist\",\n \"build\",\n \"out\",\n \".next\",\n \".nuxt\",\n \"coverage\",\n\n // IDE & OS files\n \".vscode\",\n \".idea\",\n \".DS_Store\",\n\n // Version control\n \".git\",\n \".gitignore\",\n\n // Logs, caches, and temp\n \"logs\",\n \"tmp\",\n \".cache\",\n \"*.log\",\n\n // Sensitive data\n \".env\",\n \".env.*\",\n \"*.pem\",\n \"*.crt\",\n \"*.key\",\n\n // Binary and database files\n \"*.sqlite\",\n \"*.db\",\n \"*.zip\",\n \"*.tar\",\n \"*.gz\",\n \"*.exe\",\n \"*.bin\",\n];\n\n// Define defaults in one place\nexport const KODRDRIV_DEFAULTS = {\n dryRun: DEFAULT_DRY_RUN,\n verbose: DEFAULT_VERBOSE,\n debug: DEFAULT_DEBUG,\n overrides: DEFAULT_OVERRIDES,\n model: DEFAULT_MODEL,\n instructions: DEFAULT_INSTRUCTIONS_DIR,\n contextDirectories: DEFAULT_CONTEXT_DIRECTORIES,\n commandName: DEFAULT_COMMAND,\n configDirectory: DEFAULT_CONFIG_DIR,\n commit: {\n cached: DEFAULT_CACHED,\n sendit: DEFAULT_SENDIT_MODE,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n release: {\n from: DEFAULT_FROM_COMMIT_ALIAS,\n to: DEFAULT_TO_COMMIT_ALIAS,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n excludedPatterns: DEFAULT_EXCLUDED_PATTERNS,\n};"],"names":["VERSION","PROGRAM_NAME","DEFAULT_CHARACTER_ENCODING","DEFAULT_OVERRIDES","DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS","DEFAULT_VERBOSE","DEFAULT_DRY_RUN","DEFAULT_DEBUG","DEFAULT_MODEL","DEFAULT_CONTEXT_DIRECTORIES","COMMAND_COMMIT","COMMAND_RELEASE","ALLOWED_COMMANDS","DEFAULT_COMMAND","DEFAULT_CONFIG_DIR","DEFAULT_PERSONAS_DIR","DEFAULT_PERSONA_COMMITTER_FILE","DEFAULT_PERSONA_RELEASER_FILE","DEFAULT_INSTRUCTIONS_DIR","DEFAULT_INSTRUCTIONS_COMMIT_FILE","DEFAULT_INSTRUCTIONS_RELEASE_FILE","DEFAULT_CACHED","DEFAULT_SENDIT_MODE","DEFAULT_FROM_COMMIT_ALIAS","DEFAULT_TO_COMMIT_ALIAS","DEFAULT_MESSAGE_LIMIT","DEFAULT_EXCLUDED_PATTERNS","KODRDRIV_DEFAULTS","dryRun","verbose","debug","overrides","model","instructions","contextDirectories","commandName","configDirectory","commit","cached","sendit","messageLimit","release","from","to","excludedPatterns"],"mappings":"AAAO,MAAMA,UAAU;AAChB,MAAMC,eAAe;AACrB,MAAMC,6BAA6B;AAInC,MAAMC,oBAAoB;AAO1B,MAAMC,mDAAmD;AAQzD,MAAMC,kBAAkB;AACxB,MAAMC,kBAAkB;AACxB,MAAMC,gBAAgB;AACtB,MAAMC,gBAAgB;AACtB,MAAMC,2BAAwC,GAAA;AAE9C,MAAMC,iBAAiB;AACvB,MAAMC,kBAAkB;MAClBC,gBAAmB,GAAA;AAACF,IAAAA,cAAAA;AAAgBC,IAAAA;;AAC1C,MAAME,kBAAkBH;MAElBI,kBAAqB,GAAA,CAAC,CAAC,EAAEb;AAEzBc,MAAAA,oBAAAA,GAAuB,CAAC,SAAS;MAEjCC,8BAAiC,GAAA,CAAA,EAAGD,oBAAqB,CAAA,aAAa;MACtEE,6BAAgC,GAAA,CAAA,EAAGF,oBAAqB,CAAA,YAAY;AAEpEG,MAAAA,wBAAAA,GAA2B,CAAC,aAAa;MAEzCC,gCAAmC,GAAA,CAAA,EAAGD,wBAAyB,CAAA,UAAU;MACzEE,iCAAoC,GAAA,CAAA,EAAGF,wBAAyB,CAAA,WAAW;AAEjF,MAAMG,iBAAiB;AAEvB,MAAMC,sBAAsB;AAE5B,MAAMC,4BAA4B;AAClC,MAAMC,0BAA0B;AAEhC,MAAMC,wBAAwB;MAExBC,yBAAsC,GAAA;;AAE/C,IAAA,cAAA;AACA,IAAA,gBAAA;AACA,IAAA,mBAAA;AACA,IAAA,WAAA;AACA,IAAA,WAAA;AACA,IAAA,eAAA;AACA,IAAA,YAAA;AACA,IAAA,cAAA;;AAGA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,KAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA,UAAA;;AAGA,IAAA,SAAA;AACA,IAAA,OAAA;AACA,IAAA,WAAA;;AAGA,IAAA,MAAA;AACA,IAAA,YAAA;;AAGA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,QAAA;AACA,IAAA,OAAA;;AAGA,IAAA,MAAA;AACA,IAAA,QAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;;AAGA,IAAA,UAAA;AACA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA;;AAGJ;MACaC,iBAAoB,GAAA;IAC7BC,MAAQtB,EAAAA,eAAAA;IACRuB,OAASxB,EAAAA,eAAAA;IACTyB,KAAOvB,EAAAA,aAAAA;IACPwB,SAAW5B,EAAAA,iBAAAA;IACX6B,KAAOxB,EAAAA,aAAAA;IACPyB,YAAcf,EAAAA,wBAAAA;IACdgB,kBAAoBzB,EAAAA,2BAAAA;IACpB0B,WAAatB,EAAAA,eAAAA;IACbuB,eAAiBtB,EAAAA,kBAAAA;IACjBuB,MAAQ,EAAA;QACJC,MAAQjB,EAAAA,cAAAA;QACRkB,MAAQjB,EAAAA,mBAAAA;QACRkB,YAAcf,EAAAA;AAClB,KAAA;IACAgB,OAAS,EAAA;QACLC,IAAMnB,EAAAA,yBAAAA;QACNoB,EAAInB,EAAAA,uBAAAA;QACJgB,YAAcf,EAAAA;AAClB,KAAA;IACAmB,gBAAkBlB,EAAAA;AACtB;;;;"}