@eldrforge/kodrdriv 0.0.24 → 0.0.26

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.
package/dist/arguments.js CHANGED
@@ -43,6 +43,7 @@ z.object({
43
43
  releaseNotesLimit: z.number().optional(),
44
44
  githubIssuesLimit: z.number().optional(),
45
45
  file: z.string().optional(),
46
+ directory: z.string().optional(),
46
47
  keepTemp: z.boolean().optional()
47
48
  });
48
49
  // Function to transform flat CLI args into nested Config structure
@@ -103,7 +104,7 @@ const transformCliArgs = (finalCliArgs)=>{
103
104
  if (finalCliArgs.workspaceFile !== undefined) transformedCliArgs.link.workspaceFile = finalCliArgs.workspaceFile;
104
105
  }
105
106
  // Nested mappings for 'audio-review' options
106
- if (finalCliArgs.includeCommitHistory !== undefined || finalCliArgs.includeRecentDiffs !== undefined || finalCliArgs.includeReleaseNotes !== undefined || finalCliArgs.includeGithubIssues !== undefined || finalCliArgs.commitHistoryLimit !== undefined || finalCliArgs.diffHistoryLimit !== undefined || finalCliArgs.releaseNotesLimit !== undefined || finalCliArgs.githubIssuesLimit !== undefined || finalCliArgs.file !== undefined || finalCliArgs.keepTemp !== undefined) {
107
+ if (finalCliArgs.includeCommitHistory !== undefined || finalCliArgs.includeRecentDiffs !== undefined || finalCliArgs.includeReleaseNotes !== undefined || finalCliArgs.includeGithubIssues !== undefined || finalCliArgs.commitHistoryLimit !== undefined || finalCliArgs.diffHistoryLimit !== undefined || finalCliArgs.releaseNotesLimit !== undefined || finalCliArgs.githubIssuesLimit !== undefined || finalCliArgs.file !== undefined || finalCliArgs.directory !== undefined || finalCliArgs.keepTemp !== undefined) {
107
108
  transformedCliArgs.audioReview = {};
108
109
  if (finalCliArgs.includeCommitHistory !== undefined) transformedCliArgs.audioReview.includeCommitHistory = finalCliArgs.includeCommitHistory;
109
110
  if (finalCliArgs.includeRecentDiffs !== undefined) transformedCliArgs.audioReview.includeRecentDiffs = finalCliArgs.includeRecentDiffs;
@@ -116,6 +117,7 @@ const transformCliArgs = (finalCliArgs)=>{
116
117
  if (finalCliArgs.context !== undefined) transformedCliArgs.audioReview.context = finalCliArgs.context;
117
118
  if (finalCliArgs.sendit !== undefined) transformedCliArgs.audioReview.sendit = finalCliArgs.sendit;
118
119
  if (finalCliArgs.file !== undefined) transformedCliArgs.audioReview.file = finalCliArgs.file;
120
+ if (finalCliArgs.directory !== undefined) transformedCliArgs.audioReview.directory = finalCliArgs.directory;
119
121
  if (finalCliArgs.keepTemp !== undefined) transformedCliArgs.audioReview.keepTemp = finalCliArgs.keepTemp;
120
122
  }
121
123
  // Nested mappings for 'review' options
@@ -327,13 +329,13 @@ async function getCliConfig(program) {
327
329
  addSharedOptions(audioCommitCommand);
328
330
  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');
329
331
  addSharedOptions(releaseCommand);
330
- const publishCommand = program.command('publish').option('--merge-method <method>', 'method to merge PR (merge, squash, rebase)', 'squash').description('Publish a release');
332
+ const publishCommand = program.command('publish').option('--merge-method <method>', 'method to merge PR (merge, squash, rebase)', 'squash').option('--sendit', 'skip all confirmation prompts and proceed automatically').description('Publish a release');
331
333
  addSharedOptions(publishCommand);
332
334
  const linkCommand = program.command('link').option('--scope-roots <scopeRoots>', 'JSON mapping of scopes to root directories (e.g., \'{"@company": "../"}\')').option('--workspace-file <workspaceFile>', 'path to workspace file', 'pnpm-workspace.yaml').description('Manage pnpm workspace links for local development');
333
335
  addSharedOptions(linkCommand);
334
336
  const unlinkCommand = program.command('unlink').option('--scope-roots <scopeRoots>', 'JSON mapping of scopes to root directories (e.g., \'{"@company": "../"}\')').option('--workspace-file <workspaceFile>', 'path to workspace file', 'pnpm-workspace.yaml').description('Remove pnpm workspace links and rebuild dependencies');
335
337
  addSharedOptions(unlinkCommand);
336
- const audioReviewCommand = program.command('audio-review').option('--include-commit-history', 'include recent commit log messages in context (default: true)').option('--no-include-commit-history', 'exclude commit log messages from context').option('--include-recent-diffs', 'include recent commit diffs in context (default: true)').option('--no-include-recent-diffs', 'exclude recent diffs from context').option('--include-release-notes', 'include recent release notes in context (default: false)').option('--no-include-release-notes', 'exclude release notes from context').option('--include-github-issues', 'include open GitHub issues in context (default: true)').option('--no-include-github-issues', 'exclude GitHub issues from context').option('--commit-history-limit <limit>', 'number of recent commits to include', parseInt).option('--diff-history-limit <limit>', 'number of recent commit diffs to include', parseInt).option('--release-notes-limit <limit>', 'number of recent release notes to include', parseInt).option('--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)', parseInt).option('--context <context>', 'additional context for the audio review').option('--file <file>', 'audio file path').description('Record audio, transcribe with Whisper, and analyze for project issues using AI');
338
+ const audioReviewCommand = program.command('audio-review').option('--include-commit-history', 'include recent commit log messages in context (default: true)').option('--no-include-commit-history', 'exclude commit log messages from context').option('--include-recent-diffs', 'include recent commit diffs in context (default: true)').option('--no-include-recent-diffs', 'exclude recent diffs from context').option('--include-release-notes', 'include recent release notes in context (default: false)').option('--no-include-release-notes', 'exclude release notes from context').option('--include-github-issues', 'include open GitHub issues in context (default: true)').option('--no-include-github-issues', 'exclude GitHub issues from context').option('--commit-history-limit <limit>', 'number of recent commits to include', parseInt).option('--diff-history-limit <limit>', 'number of recent commit diffs to include', parseInt).option('--release-notes-limit <limit>', 'number of recent release notes to include', parseInt).option('--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)', parseInt).option('--context <context>', 'additional context for the audio review').option('--file <file>', 'audio file path').option('--directory <directory>', 'directory containing audio files to process').description('Record audio, transcribe with Whisper, and analyze for project issues using AI');
337
339
  addSharedOptions(audioReviewCommand);
338
340
  const reviewCommand = program.command('review').argument('[note]', 'review note to analyze for project issues').option('--include-commit-history', 'include recent commit log messages in context (default: true)').option('--no-include-commit-history', 'exclude commit log messages from context').option('--include-recent-diffs', 'include recent commit diffs in context (default: true)').option('--no-include-recent-diffs', 'exclude recent diffs from context').option('--include-release-notes', 'include recent release notes in context (default: false)').option('--no-include-release-notes', 'exclude release notes from context').option('--include-github-issues', 'include open GitHub issues in context (default: true)').option('--no-include-github-issues', 'exclude GitHub issues from context').option('--commit-history-limit <limit>', 'number of recent commits to include', parseInt).option('--diff-history-limit <limit>', 'number of recent commit diffs to include', parseInt).option('--release-notes-limit <limit>', 'number of recent release notes to include', parseInt).option('--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)', parseInt).option('--context <context>', 'additional context for the review').option('--sendit', 'Create GitHub issues automatically without confirmation').description('Analyze review note for project issues using AI');
339
341
  addSharedOptions(reviewCommand);
@@ -544,10 +546,10 @@ async function validateAndProcessSecureOptions() {
544
546
  }
545
547
  // Renamed validation function to reflect its broader role
546
548
  async function validateAndProcessOptions(options) {
547
- var _options_commit, _options_commit1, _options_commit2, _options_commit3, _options_commit4, _options_commit5, _options_audioCommit, _options_audioCommit1, _options_audioCommit2, _options_audioCommit3, _options_release, _options_release1, _options_release2, _options_release3, _options_audioReview, _options_audioReview1, _options_audioReview2, _options_audioReview3, _options_audioReview4, _options_audioReview5, _options_audioReview6, _options_audioReview7, _options_audioReview8, _options_audioReview9, _options_audioReview10, _options_audioReview11, _options_audioReview12, _options_audioReview13, _options_review, _options_review1, _options_review2, _options_review3, _options_review4, _options_review5, _options_review6, _options_review7, _options_review8, _options_review9, _options_review10, _options_publish, _options_publish1, _options_publish2, _options_publish3, _options_publish4, _options_link, _options_link1, _options_link2;
549
+ var _options_commit, _options_commit1, _options_commit2, _options_commit3, _options_commit4, _options_commit5, _options_audioCommit, _options_audioCommit1, _options_audioCommit2, _options_audioCommit3, _options_release, _options_release1, _options_release2, _options_release3, _options_audioReview, _options_audioReview1, _options_audioReview2, _options_audioReview3, _options_audioReview4, _options_audioReview5, _options_audioReview6, _options_audioReview7, _options_audioReview8, _options_audioReview9, _options_audioReview10, _options_audioReview11, _options_audioReview12, _options_audioReview13, _options_audioReview14, _options_review, _options_review1, _options_review2, _options_review3, _options_review4, _options_review5, _options_review6, _options_review7, _options_review8, _options_review9, _options_review10, _options_publish, _options_publish1, _options_publish2, _options_publish3, _options_publish4, _options_publish5, _options_link, _options_link1, _options_link2;
548
550
  const contextDirectories = await validateContextDirectories(options.contextDirectories || KODRDRIV_DEFAULTS.contextDirectories);
549
551
  const configDir = options.configDirectory || KODRDRIV_DEFAULTS.configDirectory;
550
- var _options_dryRun, _options_verbose, _options_debug, _options_overrides, _options_model, _options_outputDirectory, _options_preferencesDirectory, _options_discoveredConfigDirs, _options_resolvedConfigDirs, _options_commit_add, _options_commit_cached, _options_commit_sendit, _options_commit_messageLimit, _options_audioCommit_maxRecordingTime, _options_audioCommit_audioDevice, _options_release_from, _options_release_to, _options_release_messageLimit, _options_audioReview_includeCommitHistory, _options_audioReview_includeRecentDiffs, _options_audioReview_includeReleaseNotes, _options_audioReview_includeGithubIssues, _options_audioReview_commitHistoryLimit, _options_audioReview_diffHistoryLimit, _options_audioReview_releaseNotesLimit, _options_audioReview_githubIssuesLimit, _options_audioReview_sendit, _options_audioReview_maxRecordingTime, _options_audioReview_audioDevice, _options_review_includeCommitHistory, _options_review_includeRecentDiffs, _options_review_includeReleaseNotes, _options_review_includeGithubIssues, _options_review_commitHistoryLimit, _options_review_diffHistoryLimit, _options_review_releaseNotesLimit, _options_review_githubIssuesLimit, _options_review_sendit, _options_publish_mergeMethod, _options_publish_requiredEnvVars, _options_publish_linkWorkspacePackages, _options_publish_unlinkWorkspacePackages, _options_link_scopeRoots, _options_link_workspaceFile, _options_link_dryRun, _options_excludedPatterns;
552
+ var _options_dryRun, _options_verbose, _options_debug, _options_overrides, _options_model, _options_outputDirectory, _options_preferencesDirectory, _options_discoveredConfigDirs, _options_resolvedConfigDirs, _options_commit_add, _options_commit_cached, _options_commit_sendit, _options_commit_messageLimit, _options_audioCommit_maxRecordingTime, _options_audioCommit_audioDevice, _options_release_from, _options_release_to, _options_release_messageLimit, _options_audioReview_includeCommitHistory, _options_audioReview_includeRecentDiffs, _options_audioReview_includeReleaseNotes, _options_audioReview_includeGithubIssues, _options_audioReview_commitHistoryLimit, _options_audioReview_diffHistoryLimit, _options_audioReview_releaseNotesLimit, _options_audioReview_githubIssuesLimit, _options_audioReview_sendit, _options_audioReview_maxRecordingTime, _options_audioReview_audioDevice, _options_review_includeCommitHistory, _options_review_includeRecentDiffs, _options_review_includeReleaseNotes, _options_review_includeGithubIssues, _options_review_commitHistoryLimit, _options_review_diffHistoryLimit, _options_review_releaseNotesLimit, _options_review_githubIssuesLimit, _options_review_sendit, _options_publish_mergeMethod, _options_publish_requiredEnvVars, _options_publish_linkWorkspacePackages, _options_publish_unlinkWorkspacePackages, _options_publish_sendit, _options_link_scopeRoots, _options_link_workspaceFile, _options_link_dryRun, _options_excludedPatterns;
551
553
  // Skip config directory validation since Cardigantime handles hierarchical lookup
552
554
  // Ensure all required fields are present and have correct types after merging
553
555
  const finalConfig = {
@@ -598,7 +600,8 @@ async function validateAndProcessOptions(options) {
598
600
  maxRecordingTime: (_options_audioReview_maxRecordingTime = (_options_audioReview10 = options.audioReview) === null || _options_audioReview10 === void 0 ? void 0 : _options_audioReview10.maxRecordingTime) !== null && _options_audioReview_maxRecordingTime !== void 0 ? _options_audioReview_maxRecordingTime : KODRDRIV_DEFAULTS.audioReview.maxRecordingTime,
599
601
  audioDevice: (_options_audioReview_audioDevice = (_options_audioReview11 = options.audioReview) === null || _options_audioReview11 === void 0 ? void 0 : _options_audioReview11.audioDevice) !== null && _options_audioReview_audioDevice !== void 0 ? _options_audioReview_audioDevice : KODRDRIV_DEFAULTS.audioReview.audioDevice,
600
602
  file: (_options_audioReview12 = options.audioReview) === null || _options_audioReview12 === void 0 ? void 0 : _options_audioReview12.file,
601
- keepTemp: (_options_audioReview13 = options.audioReview) === null || _options_audioReview13 === void 0 ? void 0 : _options_audioReview13.keepTemp
603
+ directory: (_options_audioReview13 = options.audioReview) === null || _options_audioReview13 === void 0 ? void 0 : _options_audioReview13.directory,
604
+ keepTemp: (_options_audioReview14 = options.audioReview) === null || _options_audioReview14 === void 0 ? void 0 : _options_audioReview14.keepTemp
602
605
  },
603
606
  review: {
604
607
  includeCommitHistory: (_options_review_includeCommitHistory = (_options_review = options.review) === null || _options_review === void 0 ? void 0 : _options_review.includeCommitHistory) !== null && _options_review_includeCommitHistory !== void 0 ? _options_review_includeCommitHistory : KODRDRIV_DEFAULTS.review.includeCommitHistory,
@@ -618,7 +621,8 @@ async function validateAndProcessOptions(options) {
618
621
  dependencyUpdatePatterns: (_options_publish1 = options.publish) === null || _options_publish1 === void 0 ? void 0 : _options_publish1.dependencyUpdatePatterns,
619
622
  requiredEnvVars: (_options_publish_requiredEnvVars = (_options_publish2 = options.publish) === null || _options_publish2 === void 0 ? void 0 : _options_publish2.requiredEnvVars) !== null && _options_publish_requiredEnvVars !== void 0 ? _options_publish_requiredEnvVars : KODRDRIV_DEFAULTS.publish.requiredEnvVars,
620
623
  linkWorkspacePackages: (_options_publish_linkWorkspacePackages = (_options_publish3 = options.publish) === null || _options_publish3 === void 0 ? void 0 : _options_publish3.linkWorkspacePackages) !== null && _options_publish_linkWorkspacePackages !== void 0 ? _options_publish_linkWorkspacePackages : KODRDRIV_DEFAULTS.publish.linkWorkspacePackages,
621
- unlinkWorkspacePackages: (_options_publish_unlinkWorkspacePackages = (_options_publish4 = options.publish) === null || _options_publish4 === void 0 ? void 0 : _options_publish4.unlinkWorkspacePackages) !== null && _options_publish_unlinkWorkspacePackages !== void 0 ? _options_publish_unlinkWorkspacePackages : KODRDRIV_DEFAULTS.publish.unlinkWorkspacePackages
624
+ unlinkWorkspacePackages: (_options_publish_unlinkWorkspacePackages = (_options_publish4 = options.publish) === null || _options_publish4 === void 0 ? void 0 : _options_publish4.unlinkWorkspacePackages) !== null && _options_publish_unlinkWorkspacePackages !== void 0 ? _options_publish_unlinkWorkspacePackages : KODRDRIV_DEFAULTS.publish.unlinkWorkspacePackages,
625
+ sendit: (_options_publish_sendit = (_options_publish5 = options.publish) === null || _options_publish5 === void 0 ? void 0 : _options_publish5.sendit) !== null && _options_publish_sendit !== void 0 ? _options_publish_sendit : KODRDRIV_DEFAULTS.publish.sendit
622
626
  },
623
627
  link: {
624
628
  scopeRoots: (_options_link_scopeRoots = (_options_link = options.link) === null || _options_link === void 0 ? void 0 : _options_link.scopeRoots) !== null && _options_link_scopeRoots !== void 0 ? _options_link_scopeRoots : KODRDRIV_DEFAULTS.link.scopeRoots,
@@ -1 +1 @@
1
- {"version":3,"file":"arguments.js","sources":["../src/arguments.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { Command } from \"commander\";\nimport path from \"path\";\nimport { z } from \"zod\";\nimport { ALLOWED_COMMANDS, DEFAULT_CHARACTER_ENCODING, DEFAULT_COMMAND, KODRDRIV_DEFAULTS, PROGRAM_NAME, VERSION } from \"./constants\";\nimport { getLogger } from \"./logging\";\nimport { CommandConfig, Config, SecureConfig } from './types'; // Import the Config type from main.ts\nimport * as Storage from \"./util/storage\";\nimport { readStdin } from \"./util/stdin\";\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 checkConfig: z.boolean().optional(),\n initConfig: z.boolean().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n configDir: z.string().optional(),\n outputDir: z.string().optional(),\n preferencesDir: z.string().optional(),\n cached: z.boolean().optional(),\n add: 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 note: z.string().optional(), // For review command positional argument/STDIN\n direction: z.string().optional(),\n messageLimit: z.number().optional(),\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n scopeRoots: z.string().optional(),\n workspaceFile: z.string().optional(),\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n file: z.string().optional(), // Audio file path for audio-commit and audio-review\n keepTemp: z.boolean().optional(), // Keep temporary recording files\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\n // Map configDir (CLI) to configDirectory (Cardigantime standard)\n if (finalCliArgs.configDir !== undefined) transformedCliArgs.configDirectory = finalCliArgs.configDir;\n\n // Map outputDir (CLI) to outputDirectory (Config standard)\n if (finalCliArgs.outputDir !== undefined) transformedCliArgs.outputDirectory = finalCliArgs.outputDir;\n\n // Map preferencesDir (CLI) to preferencesDirectory (Config standard)\n if (finalCliArgs.preferencesDir !== undefined) transformedCliArgs.preferencesDirectory = finalCliArgs.preferencesDir;\n\n // Nested mappings for 'commit' options\n if (finalCliArgs.cached !== undefined || finalCliArgs.sendit !== undefined || finalCliArgs.add !== undefined) {\n transformedCliArgs.commit = {};\n if (finalCliArgs.add !== undefined) transformedCliArgs.commit.add = finalCliArgs.add;\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 if (finalCliArgs.direction !== undefined) transformedCliArgs.commit.direction = finalCliArgs.direction;\n }\n\n // Nested mappings for 'audioCommit' options\n if (finalCliArgs.file !== undefined || finalCliArgs.keepTemp !== undefined) {\n transformedCliArgs.audioCommit = {};\n if (finalCliArgs.file !== undefined) transformedCliArgs.audioCommit.file = finalCliArgs.file;\n if (finalCliArgs.keepTemp !== undefined) transformedCliArgs.audioCommit.keepTemp = finalCliArgs.keepTemp;\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 // Nested mappings for 'publish' options\n if (finalCliArgs.mergeMethod !== undefined) {\n transformedCliArgs.publish = {};\n if (finalCliArgs.mergeMethod !== undefined) transformedCliArgs.publish.mergeMethod = finalCliArgs.mergeMethod;\n }\n\n // Nested mappings for 'link' and 'unlink' options (both use the same configuration)\n if (finalCliArgs.scopeRoots !== undefined || finalCliArgs.workspaceFile !== undefined) {\n transformedCliArgs.link = {};\n if (finalCliArgs.scopeRoots !== undefined) {\n try {\n transformedCliArgs.link.scopeRoots = JSON.parse(finalCliArgs.scopeRoots);\n\n } catch (error) {\n throw new Error(`Invalid JSON for scope-roots: ${finalCliArgs.scopeRoots}`);\n }\n }\n if (finalCliArgs.workspaceFile !== undefined) transformedCliArgs.link.workspaceFile = finalCliArgs.workspaceFile;\n }\n\n // Nested mappings for 'audio-review' options\n if (finalCliArgs.includeCommitHistory !== undefined ||\n finalCliArgs.includeRecentDiffs !== undefined ||\n finalCliArgs.includeReleaseNotes !== undefined ||\n finalCliArgs.includeGithubIssues !== undefined ||\n finalCliArgs.commitHistoryLimit !== undefined ||\n finalCliArgs.diffHistoryLimit !== undefined ||\n finalCliArgs.releaseNotesLimit !== undefined ||\n finalCliArgs.githubIssuesLimit !== undefined ||\n finalCliArgs.file !== undefined ||\n finalCliArgs.keepTemp !== undefined) {\n transformedCliArgs.audioReview = {};\n if (finalCliArgs.includeCommitHistory !== undefined) transformedCliArgs.audioReview.includeCommitHistory = finalCliArgs.includeCommitHistory;\n if (finalCliArgs.includeRecentDiffs !== undefined) transformedCliArgs.audioReview.includeRecentDiffs = finalCliArgs.includeRecentDiffs;\n if (finalCliArgs.includeReleaseNotes !== undefined) transformedCliArgs.audioReview.includeReleaseNotes = finalCliArgs.includeReleaseNotes;\n if (finalCliArgs.includeGithubIssues !== undefined) transformedCliArgs.audioReview.includeGithubIssues = finalCliArgs.includeGithubIssues;\n if (finalCliArgs.commitHistoryLimit !== undefined) transformedCliArgs.audioReview.commitHistoryLimit = finalCliArgs.commitHistoryLimit;\n if (finalCliArgs.diffHistoryLimit !== undefined) transformedCliArgs.audioReview.diffHistoryLimit = finalCliArgs.diffHistoryLimit;\n if (finalCliArgs.releaseNotesLimit !== undefined) transformedCliArgs.audioReview.releaseNotesLimit = finalCliArgs.releaseNotesLimit;\n if (finalCliArgs.githubIssuesLimit !== undefined) transformedCliArgs.audioReview.githubIssuesLimit = finalCliArgs.githubIssuesLimit;\n if (finalCliArgs.context !== undefined) transformedCliArgs.audioReview.context = finalCliArgs.context;\n if (finalCliArgs.sendit !== undefined) transformedCliArgs.audioReview.sendit = finalCliArgs.sendit;\n if (finalCliArgs.file !== undefined) transformedCliArgs.audioReview.file = finalCliArgs.file;\n if (finalCliArgs.keepTemp !== undefined) transformedCliArgs.audioReview.keepTemp = finalCliArgs.keepTemp;\n }\n\n // Nested mappings for 'review' options\n if (finalCliArgs.includeCommitHistory !== undefined ||\n finalCliArgs.includeRecentDiffs !== undefined ||\n finalCliArgs.includeReleaseNotes !== undefined ||\n finalCliArgs.includeGithubIssues !== undefined ||\n finalCliArgs.commitHistoryLimit !== undefined ||\n finalCliArgs.diffHistoryLimit !== undefined ||\n finalCliArgs.releaseNotesLimit !== undefined ||\n finalCliArgs.githubIssuesLimit !== undefined ||\n finalCliArgs.context !== undefined ||\n finalCliArgs.sendit !== undefined ||\n finalCliArgs.note !== undefined) {\n transformedCliArgs.review = {};\n if (finalCliArgs.note !== undefined) transformedCliArgs.review.note = finalCliArgs.note;\n // Include optional review configuration options if specified\n if (finalCliArgs.includeCommitHistory !== undefined) transformedCliArgs.review.includeCommitHistory = finalCliArgs.includeCommitHistory;\n if (finalCliArgs.includeRecentDiffs !== undefined) transformedCliArgs.review.includeRecentDiffs = finalCliArgs.includeRecentDiffs;\n if (finalCliArgs.includeReleaseNotes !== undefined) transformedCliArgs.review.includeReleaseNotes = finalCliArgs.includeReleaseNotes;\n if (finalCliArgs.includeGithubIssues !== undefined) transformedCliArgs.review.includeGithubIssues = finalCliArgs.includeGithubIssues;\n if (finalCliArgs.commitHistoryLimit !== undefined) transformedCliArgs.review.commitHistoryLimit = finalCliArgs.commitHistoryLimit;\n if (finalCliArgs.diffHistoryLimit !== undefined) transformedCliArgs.review.diffHistoryLimit = finalCliArgs.diffHistoryLimit;\n if (finalCliArgs.releaseNotesLimit !== undefined) transformedCliArgs.review.releaseNotesLimit = finalCliArgs.releaseNotesLimit;\n if (finalCliArgs.githubIssuesLimit !== undefined) transformedCliArgs.review.githubIssuesLimit = finalCliArgs.githubIssuesLimit;\n if (finalCliArgs.context !== undefined) transformedCliArgs.review.context = finalCliArgs.context;\n if (finalCliArgs.sendit !== undefined) transformedCliArgs.review.sendit = finalCliArgs.sendit;\n }\n\n if (finalCliArgs.excludedPatterns !== undefined) transformedCliArgs.excludedPatterns = finalCliArgs.excludedPatterns;\n\n\n // Note: openaiApiKey is handled separately via environment variable only\n\n return transformedCliArgs;\n}\n\n\n\n// Update configure signature to accept cardigantime\nexport const configure = async (cardigantime: any): 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 // Check if --check-config is in process.argv early\n if (process.argv.includes('--check-config')) {\n // For check-config, use CardiganTime's built-in checkConfig method\n program.parse();\n const cliArgs: Input = program.opts<Input>();\n\n // Transform the flat CLI args\n const transformedCliArgs: Partial<Config> = transformCliArgs(cliArgs);\n\n // Use CardiganTime's built-in checkConfig method which displays\n // hierarchical configuration information in a well-formatted way\n await cardigantime.checkConfig(transformedCliArgs);\n\n // Return minimal config for consistency, but main processing is done\n const config: Config = await validateAndProcessOptions({});\n const secureConfig: SecureConfig = await validateAndProcessSecureOptions();\n const commandConfig: CommandConfig = { commandName: 'check-config' };\n\n return [config, secureConfig, commandConfig];\n }\n\n // Check if --init-config is in process.argv early\n if (process.argv.includes('--init-config')) {\n // For init-config, use CardiganTime's built-in generateConfig method\n program.parse();\n const cliArgs: Input = program.opts<Input>();\n\n // Transform the flat CLI args\n const transformedCliArgs: Partial<Config> = transformCliArgs(cliArgs);\n\n\n // Use CardiganTime's built-in generateConfig method\n await cardigantime.generateConfig(transformedCliArgs.configDirectory || KODRDRIV_DEFAULTS.configDirectory);\n\n // Return minimal config for consistency, but main processing is done\n const config: Config = await validateAndProcessOptions({});\n const secureConfig: SecureConfig = await validateAndProcessSecureOptions();\n const commandConfig: CommandConfig = { commandName: 'init-config' };\n\n return [config, secureConfig, commandConfig];\n }\n\n // Get CLI arguments using the new function\n const [finalCliArgs, commandConfig]: [Input, CommandConfig] = await getCliConfig(program);\n logger.silly('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.silly('Transformed CLI Args for merging: %s', JSON.stringify(transformedCliArgs, null, 2));\n\n // Get values from config file using Cardigantime's hierarchical configuration\n const fileValues: Partial<Config> = await cardigantime.read(transformedCliArgs) as Partial<Config>;\n\n // Merge configurations: Defaults -> File -> CLI\n // Properly merge the link section to preserve scope roots from config file\n const mergedLink = {\n ...KODRDRIV_DEFAULTS.link,\n ...fileValues.link,\n ...transformedCliArgs.link,\n };\n\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 link: mergedLink, // Override with properly merged link section\n } as Partial<Config>; // Cast to Partial<Config> initially\n\n // Specific validation and processing after merge\n const config: Config = await validateAndProcessOptions(partialConfig);\n\n // Log effective configuration summary at verbose level\n logger.verbose('Configuration complete. Effective settings:');\n logger.verbose(` Command: ${commandConfig.commandName}`);\n logger.verbose(` Model: ${config.model}`);\n logger.verbose(` Dry run: ${config.dryRun}`);\n logger.verbose(` Debug: ${config.debug}`);\n logger.verbose(` Verbose: ${config.verbose}`);\n logger.verbose(` Config directory: ${config.configDirectory}`);\n logger.verbose(` Output directory: ${config.outputDirectory}`);\n logger.verbose(` Context directories: ${config.contextDirectories?.join(', ') || 'none'}`);\n if (config.excludedPatterns && config.excludedPatterns.length > 0) {\n logger.verbose(` Excluded patterns: ${config.excludedPatterns.join(', ')}`);\n }\n if (Object.keys(config.link?.scopeRoots || {}).length > 0) {\n logger.verbose(` Link scope roots: ${Object.keys(config.link!.scopeRoots!).join(', ')}`);\n }\n\n logger.silly('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\nexport async function getCliConfig(program: Command): Promise<[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('--config-dir <configDir>', 'configuration directory') // Keep config-dir for specifying location\n .option('--output-dir <outputDir>', 'output directory for generated files')\n .option('--preferences-dir <preferencesDir>', 'preferences directory for personal settings')\n .option('--excluded-paths [excludedPatterns...]', 'paths to exclude from the diff')\n .option('--keep-temp', 'keep temporary recording files');\n }\n\n // Add global options to the main program\n // (cardigantime already adds most global options like --verbose, --debug, --config-dir)\n\n // Add subcommands\n const commitCommand = program\n .command('commit')\n .argument('[direction]', 'direction or guidance for the commit message')\n .description('Generate commit notes')\n .option('--context <context>', 'context for the commit message')\n .option('--cached', 'use cached diff')\n .option('--add', 'add all changes before committing')\n .option('--sendit', 'Commit with the message generated. No review.')\n .option('--message-limit <messageLimit>', 'limit the number of messages to generate');\n\n // Add shared options to commit command\n addSharedOptions(commitCommand);\n\n // Customize help output for commit command\n commitCommand.configureHelp({\n formatHelp: (cmd, helper) => {\n const nameAndVersion = `${helper.commandUsage(cmd)}\\n\\n${helper.commandDescription(cmd)}\\n`;\n\n const commitOptions = [\n ['--context <context>', 'context for the commit message']\n ];\n\n const behavioralOptions = [\n ['--cached', 'use cached diff'],\n ['--add', 'add all changes before committing'],\n ['--sendit', 'Commit with the message generated. No review.'],\n ['--message-limit <messageLimit>', 'limit the number of messages to generate']\n ];\n\n const globalOptions = [\n ['--dry-run', 'perform a dry run without saving files'],\n ['--verbose', 'enable verbose logging'],\n ['--debug', 'enable debug logging'],\n ['--overrides', 'enable overrides'],\n ['--model <model>', 'OpenAI model to use'],\n ['-d, --context-directories [contextDirectories...]', 'directories to scan for context'],\n ['--config-dir <configDir>', 'configuration directory'],\n ['--excluded-paths [excludedPatterns...]', 'paths to exclude from the diff'],\n ['-h, --help', 'display help for command']\n ];\n\n const formatOptionsSection = (title: string, options: string[][]) => {\n const maxWidth = Math.max(...options.map(([flag]) => flag.length));\n return `${title}:\\n` + options.map(([flag, desc]) =>\n ` ${flag.padEnd(maxWidth + 2)} ${desc}`\n ).join('\\n') + '\\n';\n };\n\n return nameAndVersion + '\\n' +\n formatOptionsSection('Commit Message Options', commitOptions) + '\\n' +\n formatOptionsSection('Behavioral Options', behavioralOptions) + '\\n' +\n formatOptionsSection('Global Options', globalOptions) + '\\n' +\n 'Environment Variables:\\n' +\n ' OPENAI_API_KEY OpenAI API key (required)\\n';\n }\n });\n\n const audioCommitCommand = program\n .command('audio-commit')\n .option('--cached', 'use cached diff')\n .option('--add', 'add all changes before committing')\n .option('--sendit', 'Commit with the message generated. No review.')\n .option('--direction <direction>', 'direction or guidance for the commit message')\n .option('--message-limit <messageLimit>', 'limit the number of messages to generate')\n .option('--file <file>', 'audio file path')\n .description('Record audio to provide context, then generate and optionally commit with AI-generated message');\n addSharedOptions(audioCommitCommand);\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 const publishCommand = program\n .command('publish')\n .option('--merge-method <method>', 'method to merge PR (merge, squash, rebase)', 'squash')\n .description('Publish a release');\n addSharedOptions(publishCommand);\n\n const linkCommand = program\n .command('link')\n .option('--scope-roots <scopeRoots>', 'JSON mapping of scopes to root directories (e.g., \\'{\"@company\": \"../\"}\\')')\n .option('--workspace-file <workspaceFile>', 'path to workspace file', 'pnpm-workspace.yaml')\n .description('Manage pnpm workspace links for local development');\n addSharedOptions(linkCommand);\n\n const unlinkCommand = program\n .command('unlink')\n .option('--scope-roots <scopeRoots>', 'JSON mapping of scopes to root directories (e.g., \\'{\"@company\": \"../\"}\\')')\n .option('--workspace-file <workspaceFile>', 'path to workspace file', 'pnpm-workspace.yaml')\n .description('Remove pnpm workspace links and rebuild dependencies');\n addSharedOptions(unlinkCommand);\n\n const audioReviewCommand = program\n .command('audio-review')\n .option('--include-commit-history', 'include recent commit log messages in context (default: true)')\n .option('--no-include-commit-history', 'exclude commit log messages from context')\n .option('--include-recent-diffs', 'include recent commit diffs in context (default: true)')\n .option('--no-include-recent-diffs', 'exclude recent diffs from context')\n .option('--include-release-notes', 'include recent release notes in context (default: false)')\n .option('--no-include-release-notes', 'exclude release notes from context')\n .option('--include-github-issues', 'include open GitHub issues in context (default: true)')\n .option('--no-include-github-issues', 'exclude GitHub issues from context')\n .option('--commit-history-limit <limit>', 'number of recent commits to include', parseInt)\n .option('--diff-history-limit <limit>', 'number of recent commit diffs to include', parseInt)\n .option('--release-notes-limit <limit>', 'number of recent release notes to include', parseInt)\n .option('--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)', parseInt)\n .option('--context <context>', 'additional context for the audio review')\n .option('--file <file>', 'audio file path')\n .description('Record audio, transcribe with Whisper, and analyze for project issues using AI');\n addSharedOptions(audioReviewCommand);\n\n const reviewCommand = program\n .command('review')\n .argument('[note]', 'review note to analyze for project issues')\n .option('--include-commit-history', 'include recent commit log messages in context (default: true)')\n .option('--no-include-commit-history', 'exclude commit log messages from context')\n .option('--include-recent-diffs', 'include recent commit diffs in context (default: true)')\n .option('--no-include-recent-diffs', 'exclude recent diffs from context')\n .option('--include-release-notes', 'include recent release notes in context (default: false)')\n .option('--no-include-release-notes', 'exclude release notes from context')\n .option('--include-github-issues', 'include open GitHub issues in context (default: true)')\n .option('--no-include-github-issues', 'exclude GitHub issues from context')\n .option('--commit-history-limit <limit>', 'number of recent commits to include', parseInt)\n .option('--diff-history-limit <limit>', 'number of recent commit diffs to include', parseInt)\n .option('--release-notes-limit <limit>', 'number of recent release notes to include', parseInt)\n .option('--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)', parseInt)\n .option('--context <context>', 'additional context for the review')\n .option('--sendit', 'Create GitHub issues automatically without confirmation')\n .description('Analyze review note for project issues using AI');\n addSharedOptions(reviewCommand);\n\n // Customize help output for review command\n reviewCommand.configureHelp({\n formatHelp: (cmd, helper) => {\n const nameAndVersion = `kodrdriv review [note] [options]\\n\\nAnalyze review note for project issues using AI\\n`;\n\n const argumentsSection = [\n ['note', 'review note to analyze for project issues (can also be piped via STDIN)']\n ];\n\n const reviewOptions = [\n ['--context <context>', 'additional context for the review']\n ];\n\n const gitContextOptions = [\n ['--include-commit-history', 'include recent commit log messages in context (default: true)'],\n ['--no-include-commit-history', 'exclude commit log messages from context'],\n ['--include-recent-diffs', 'include recent commit diffs in context (default: true)'],\n ['--no-include-recent-diffs', 'exclude recent diffs from context'],\n ['--include-release-notes', 'include recent release notes in context (default: false)'],\n ['--no-include-release-notes', 'exclude release notes from context'],\n ['--include-github-issues', 'include open GitHub issues in context (default: true)'],\n ['--no-include-github-issues', 'exclude GitHub issues from context'],\n ['--commit-history-limit <limit>', 'number of recent commits to include'],\n ['--diff-history-limit <limit>', 'number of recent commit diffs to include'],\n ['--release-notes-limit <limit>', 'number of recent release notes to include'],\n ['--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)']\n ];\n\n const behavioralOptions = [\n ['--sendit', 'Create GitHub issues automatically without confirmation']\n ];\n\n const globalOptions = [\n ['--dry-run', 'perform a dry run without saving files'],\n ['--verbose', 'enable verbose logging'],\n ['--debug', 'enable debug logging'],\n ['--overrides', 'enable overrides'],\n ['--model <model>', 'OpenAI model to use'],\n ['-d, --context-directories [contextDirectories...]', 'directories to scan for context'],\n ['--config-dir <configDir>', 'configuration directory'],\n ['--output-dir <outputDir>', 'output directory for generated files'],\n ['--excluded-paths [excludedPatterns...]', 'paths to exclude from the diff'],\n ['-h, --help', 'display help for command']\n ];\n\n const formatOptionsSection = (title: string, options: string[][]) => {\n const maxWidth = Math.max(...options.map(([flag]) => flag.length));\n return `${title}:\\n` + options.map(([flag, desc]) =>\n ` ${flag.padEnd(maxWidth + 2)} ${desc}`\n ).join('\\n') + '\\n';\n };\n\n return nameAndVersion + '\\n' +\n formatOptionsSection('Arguments', argumentsSection) + '\\n' +\n formatOptionsSection('Options', reviewOptions) + '\\n' +\n formatOptionsSection('Git Context Parameters', gitContextOptions) + '\\n' +\n formatOptionsSection('Behavioral Options', behavioralOptions) + '\\n' +\n formatOptionsSection('Global Options', globalOptions) + '\\n' +\n 'Environment Variables:\\n' +\n ' OPENAI_API_KEY OpenAI API key (required)\\n';\n }\n });\n\n const cleanCommand = program\n .command('clean')\n .description('Remove the output directory and all generated files');\n addSharedOptions(cleanCommand);\n\n const selectAudioCommand = program\n .command('select-audio')\n .description('Interactively select and save audio device for recording');\n addSharedOptions(selectAudioCommand);\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) {\n commandName = program.args[0];\n validateCommand(commandName);\n }\n\n // Only proceed with command-specific options if validation passed\n if (ALLOWED_COMMANDS.includes(commandName)) {\n if (commandName === 'commit' && commitCommand.opts) {\n commandOptions = commitCommand.opts<Partial<Input>>();\n // Handle positional argument for direction\n const args = commitCommand.args;\n if (args && args.length > 0 && args[0]) {\n commandOptions.direction = args[0];\n }\n\n // Check for STDIN input for direction (takes precedence over positional argument)\n const stdinInput = await readStdin();\n if (stdinInput) {\n commandOptions.direction = stdinInput;\n }\n } else if (commandName === 'audio-commit' && audioCommitCommand.opts) {\n commandOptions = audioCommitCommand.opts<Partial<Input>>();\n } else if (commandName === 'release' && releaseCommand.opts) {\n commandOptions = releaseCommand.opts<Partial<Input>>();\n } else if (commandName === 'publish' && publishCommand.opts) {\n commandOptions = publishCommand.opts<Partial<Input>>();\n } else if (commandName === 'link' && linkCommand.opts) {\n commandOptions = linkCommand.opts<Partial<Input>>();\n } else if (commandName === 'unlink' && unlinkCommand.opts) {\n commandOptions = unlinkCommand.opts<Partial<Input>>();\n } else if (commandName === 'audio-review' && audioReviewCommand.opts) {\n commandOptions = audioReviewCommand.opts<Partial<Input>>();\n } else if (commandName === 'review' && reviewCommand.opts) {\n commandOptions = reviewCommand.opts<Partial<Input>>();\n // Handle positional argument for note\n const args = reviewCommand.args;\n if (args && args.length > 0 && args[0]) {\n commandOptions.note = args[0];\n }\n\n // Check for STDIN input for note (takes precedence over positional argument)\n const stdinInput = await readStdin();\n if (stdinInput) {\n commandOptions.note = stdinInput;\n }\n } else if (commandName === 'clean' && cleanCommand.opts) {\n commandOptions = cleanCommand.opts<Partial<Input>>();\n } else if (commandName === 'select-audio' && selectAudioCommand.opts) {\n commandOptions = selectAudioCommand.opts<Partial<Input>>();\n }\n }\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\nexport async function validateAndProcessSecureOptions(): Promise<SecureConfig> {\n // For check-config and init-config commands, we don't want to throw an error for missing API key\n const isCheckConfig = process.argv.includes('--check-config');\n const isInitConfig = process.argv.includes('--init-config');\n\n if (!process.env.OPENAI_API_KEY && !isCheckConfig && !isInitConfig) {\n throw new Error('OpenAI API key is required. Please set the OPENAI_API_KEY environment variable.');\n }\n\n // Prefer CLI key if provided, otherwise use env var (might be undefined for check-config/init-config)\n const openaiApiKey = process.env.OPENAI_API_KEY;\n\n const secureConfig: SecureConfig = {\n openaiApiKey: openaiApiKey,\n };\n\n return secureConfig;\n}\n\n// Renamed validation function to reflect its broader role\nexport async function validateAndProcessOptions(options: Partial<Config>): Promise<Config> {\n\n const contextDirectories = await validateContextDirectories(options.contextDirectories || KODRDRIV_DEFAULTS.contextDirectories);\n const configDir = options.configDirectory || KODRDRIV_DEFAULTS.configDirectory;\n // Skip config directory validation since Cardigantime handles hierarchical lookup\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 contextDirectories: contextDirectories,\n configDirectory: configDir,\n outputDirectory: options.outputDirectory ?? KODRDRIV_DEFAULTS.outputDirectory,\n preferencesDirectory: options.preferencesDirectory ?? KODRDRIV_DEFAULTS.preferencesDirectory,\n // Cardigantime-specific properties (from fileValues or defaults)\n discoveredConfigDirs: (options as any).discoveredConfigDirs ?? [],\n resolvedConfigDirs: (options as any).resolvedConfigDirs ?? [],\n // Command-specific options with defaults\n commit: {\n add: options.commit?.add ?? KODRDRIV_DEFAULTS.commit.add,\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 direction: options.commit?.direction,\n },\n audioCommit: {\n maxRecordingTime: options.audioCommit?.maxRecordingTime ?? KODRDRIV_DEFAULTS.audioCommit.maxRecordingTime,\n audioDevice: options.audioCommit?.audioDevice ?? KODRDRIV_DEFAULTS.audioCommit.audioDevice,\n file: options.audioCommit?.file,\n keepTemp: options.audioCommit?.keepTemp,\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 audioReview: {\n includeCommitHistory: options.audioReview?.includeCommitHistory ?? KODRDRIV_DEFAULTS.audioReview.includeCommitHistory,\n includeRecentDiffs: options.audioReview?.includeRecentDiffs ?? KODRDRIV_DEFAULTS.audioReview.includeRecentDiffs,\n includeReleaseNotes: options.audioReview?.includeReleaseNotes ?? KODRDRIV_DEFAULTS.audioReview.includeReleaseNotes,\n includeGithubIssues: options.audioReview?.includeGithubIssues ?? KODRDRIV_DEFAULTS.audioReview.includeGithubIssues,\n commitHistoryLimit: options.audioReview?.commitHistoryLimit ?? KODRDRIV_DEFAULTS.audioReview.commitHistoryLimit,\n diffHistoryLimit: options.audioReview?.diffHistoryLimit ?? KODRDRIV_DEFAULTS.audioReview.diffHistoryLimit,\n releaseNotesLimit: options.audioReview?.releaseNotesLimit ?? KODRDRIV_DEFAULTS.audioReview.releaseNotesLimit,\n githubIssuesLimit: options.audioReview?.githubIssuesLimit ?? KODRDRIV_DEFAULTS.audioReview.githubIssuesLimit,\n context: options.audioReview?.context,\n sendit: options.audioReview?.sendit ?? KODRDRIV_DEFAULTS.audioReview.sendit,\n maxRecordingTime: options.audioReview?.maxRecordingTime ?? KODRDRIV_DEFAULTS.audioReview.maxRecordingTime,\n audioDevice: options.audioReview?.audioDevice ?? KODRDRIV_DEFAULTS.audioReview.audioDevice,\n file: options.audioReview?.file,\n keepTemp: options.audioReview?.keepTemp,\n },\n review: {\n includeCommitHistory: options.review?.includeCommitHistory ?? KODRDRIV_DEFAULTS.review.includeCommitHistory,\n includeRecentDiffs: options.review?.includeRecentDiffs ?? KODRDRIV_DEFAULTS.review.includeRecentDiffs,\n includeReleaseNotes: options.review?.includeReleaseNotes ?? KODRDRIV_DEFAULTS.review.includeReleaseNotes,\n includeGithubIssues: options.review?.includeGithubIssues ?? KODRDRIV_DEFAULTS.review.includeGithubIssues,\n commitHistoryLimit: options.review?.commitHistoryLimit ?? KODRDRIV_DEFAULTS.review.commitHistoryLimit,\n diffHistoryLimit: options.review?.diffHistoryLimit ?? KODRDRIV_DEFAULTS.review.diffHistoryLimit,\n releaseNotesLimit: options.review?.releaseNotesLimit ?? KODRDRIV_DEFAULTS.review.releaseNotesLimit,\n githubIssuesLimit: options.review?.githubIssuesLimit ?? KODRDRIV_DEFAULTS.review.githubIssuesLimit,\n context: options.review?.context,\n sendit: options.review?.sendit ?? KODRDRIV_DEFAULTS.review.sendit,\n note: options.review?.note,\n },\n publish: {\n mergeMethod: options.publish?.mergeMethod ?? KODRDRIV_DEFAULTS.publish.mergeMethod,\n dependencyUpdatePatterns: options.publish?.dependencyUpdatePatterns,\n requiredEnvVars: options.publish?.requiredEnvVars ?? KODRDRIV_DEFAULTS.publish.requiredEnvVars,\n linkWorkspacePackages: options.publish?.linkWorkspacePackages ?? KODRDRIV_DEFAULTS.publish.linkWorkspacePackages,\n unlinkWorkspacePackages: options.publish?.unlinkWorkspacePackages ?? KODRDRIV_DEFAULTS.publish.unlinkWorkspacePackages,\n },\n link: {\n scopeRoots: options.link?.scopeRoots ?? KODRDRIV_DEFAULTS.link.scopeRoots,\n workspaceFile: options.link?.workspaceFile ?? KODRDRIV_DEFAULTS.link.workspaceFile,\n dryRun: options.link?.dryRun ?? KODRDRIV_DEFAULTS.link.dryRun,\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\nexport async 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 try {\n // Check if the path exists\n if (!(await storage.exists(absoluteConfigDir))) {\n // Directory doesn't exist, warn and fall back to defaults\n logger.warn(`Config directory does not exist: ${absoluteConfigDir}. Using default configuration.`);\n return absoluteConfigDir; // Return the path anyway, app will use defaults\n }\n\n // Path exists, check if it's a directory\n if (!(await storage.isDirectory(absoluteConfigDir))) {\n throw new Error(`Config directory is not a directory: ${absoluteConfigDir}`);\n }\n\n // Check if it's writable\n 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 config directory: ${absoluteConfigDir}`, error);\n throw new Error(`Failed to validate 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\n\n"],"names":["z","object","dryRun","boolean","optional","verbose","debug","overrides","checkConfig","initConfig","model","string","contextDirectories","array","configDir","outputDir","preferencesDir","cached","add","sendit","from","to","excludedPatterns","context","note","direction","messageLimit","number","mergeMethod","enum","scopeRoots","workspaceFile","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","file","keepTemp","transformCliArgs","finalCliArgs","transformedCliArgs","undefined","configDirectory","outputDirectory","preferencesDirectory","commit","audioCommit","release","publish","link","JSON","parse","error","Error","audioReview","review","configure","cardigantime","config","logger","getLogger","program","Command","name","PROGRAM_NAME","summary","description","version","VERSION","process","argv","includes","cliArgs","opts","validateAndProcessOptions","secureConfig","validateAndProcessSecureOptions","commandConfig","commandName","generateConfig","KODRDRIV_DEFAULTS","getCliConfig","silly","stringify","fileValues","read","mergedLink","partialConfig","join","length","Object","keys","addSharedOptions","command","option","commitCommand","argument","configureHelp","formatHelp","cmd","helper","nameAndVersion","commandUsage","commandDescription","commitOptions","behavioralOptions","globalOptions","formatOptionsSection","title","options","maxWidth","Math","max","map","flag","desc","padEnd","audioCommitCommand","releaseCommand","publishCommand","linkCommand","unlinkCommand","audioReviewCommand","parseInt","reviewCommand","argumentsSection","reviewOptions","gitContextOptions","cleanCommand","selectAudioCommand","DEFAULT_COMMAND","commandOptions","args","validateCommand","ALLOWED_COMMANDS","stdinInput","readStdin","isCheckConfig","isInitConfig","env","OPENAI_API_KEY","openaiApiKey","validateContextDirectories","finalConfig","discoveredConfigDirs","resolvedConfigDirs","maxRecordingTime","audioDevice","dependencyUpdatePatterns","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","storage","Storage","log","info","validDirectories","dir","isDirectoryReadable","push","warn","message"],"mappings":"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"}
1
+ {"version":3,"file":"arguments.js","sources":["../src/arguments.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { Command } from \"commander\";\nimport path from \"path\";\nimport { z } from \"zod\";\nimport { ALLOWED_COMMANDS, DEFAULT_CHARACTER_ENCODING, DEFAULT_COMMAND, KODRDRIV_DEFAULTS, PROGRAM_NAME, VERSION } from \"./constants\";\nimport { getLogger } from \"./logging\";\nimport { CommandConfig, Config, SecureConfig } from './types'; // Import the Config type from main.ts\nimport * as Storage from \"./util/storage\";\nimport { readStdin } from \"./util/stdin\";\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 checkConfig: z.boolean().optional(),\n initConfig: z.boolean().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n configDir: z.string().optional(),\n outputDir: z.string().optional(),\n preferencesDir: z.string().optional(),\n cached: z.boolean().optional(),\n add: 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 note: z.string().optional(), // For review command positional argument/STDIN\n direction: z.string().optional(),\n messageLimit: z.number().optional(),\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n scopeRoots: z.string().optional(),\n workspaceFile: z.string().optional(),\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n file: z.string().optional(), // Audio file path for audio-commit and audio-review\n directory: z.string().optional(), // Add directory option at top level\n keepTemp: z.boolean().optional(), // Keep temporary recording files\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\n // Map configDir (CLI) to configDirectory (Cardigantime standard)\n if (finalCliArgs.configDir !== undefined) transformedCliArgs.configDirectory = finalCliArgs.configDir;\n\n // Map outputDir (CLI) to outputDirectory (Config standard)\n if (finalCliArgs.outputDir !== undefined) transformedCliArgs.outputDirectory = finalCliArgs.outputDir;\n\n // Map preferencesDir (CLI) to preferencesDirectory (Config standard)\n if (finalCliArgs.preferencesDir !== undefined) transformedCliArgs.preferencesDirectory = finalCliArgs.preferencesDir;\n\n // Nested mappings for 'commit' options\n if (finalCliArgs.cached !== undefined || finalCliArgs.sendit !== undefined || finalCliArgs.add !== undefined) {\n transformedCliArgs.commit = {};\n if (finalCliArgs.add !== undefined) transformedCliArgs.commit.add = finalCliArgs.add;\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 if (finalCliArgs.direction !== undefined) transformedCliArgs.commit.direction = finalCliArgs.direction;\n }\n\n // Nested mappings for 'audioCommit' options\n if (finalCliArgs.file !== undefined || finalCliArgs.keepTemp !== undefined) {\n transformedCliArgs.audioCommit = {};\n if (finalCliArgs.file !== undefined) transformedCliArgs.audioCommit.file = finalCliArgs.file;\n if (finalCliArgs.keepTemp !== undefined) transformedCliArgs.audioCommit.keepTemp = finalCliArgs.keepTemp;\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 // Nested mappings for 'publish' options\n if (finalCliArgs.mergeMethod !== undefined) {\n transformedCliArgs.publish = {};\n if (finalCliArgs.mergeMethod !== undefined) transformedCliArgs.publish.mergeMethod = finalCliArgs.mergeMethod;\n }\n\n // Nested mappings for 'link' and 'unlink' options (both use the same configuration)\n if (finalCliArgs.scopeRoots !== undefined || finalCliArgs.workspaceFile !== undefined) {\n transformedCliArgs.link = {};\n if (finalCliArgs.scopeRoots !== undefined) {\n try {\n transformedCliArgs.link.scopeRoots = JSON.parse(finalCliArgs.scopeRoots);\n\n } catch (error) {\n throw new Error(`Invalid JSON for scope-roots: ${finalCliArgs.scopeRoots}`);\n }\n }\n if (finalCliArgs.workspaceFile !== undefined) transformedCliArgs.link.workspaceFile = finalCliArgs.workspaceFile;\n }\n\n // Nested mappings for 'audio-review' options\n if (finalCliArgs.includeCommitHistory !== undefined ||\n finalCliArgs.includeRecentDiffs !== undefined ||\n finalCliArgs.includeReleaseNotes !== undefined ||\n finalCliArgs.includeGithubIssues !== undefined ||\n finalCliArgs.commitHistoryLimit !== undefined ||\n finalCliArgs.diffHistoryLimit !== undefined ||\n finalCliArgs.releaseNotesLimit !== undefined ||\n finalCliArgs.githubIssuesLimit !== undefined ||\n finalCliArgs.file !== undefined ||\n finalCliArgs.directory !== undefined ||\n finalCliArgs.keepTemp !== undefined) {\n transformedCliArgs.audioReview = {};\n if (finalCliArgs.includeCommitHistory !== undefined) transformedCliArgs.audioReview.includeCommitHistory = finalCliArgs.includeCommitHistory;\n if (finalCliArgs.includeRecentDiffs !== undefined) transformedCliArgs.audioReview.includeRecentDiffs = finalCliArgs.includeRecentDiffs;\n if (finalCliArgs.includeReleaseNotes !== undefined) transformedCliArgs.audioReview.includeReleaseNotes = finalCliArgs.includeReleaseNotes;\n if (finalCliArgs.includeGithubIssues !== undefined) transformedCliArgs.audioReview.includeGithubIssues = finalCliArgs.includeGithubIssues;\n if (finalCliArgs.commitHistoryLimit !== undefined) transformedCliArgs.audioReview.commitHistoryLimit = finalCliArgs.commitHistoryLimit;\n if (finalCliArgs.diffHistoryLimit !== undefined) transformedCliArgs.audioReview.diffHistoryLimit = finalCliArgs.diffHistoryLimit;\n if (finalCliArgs.releaseNotesLimit !== undefined) transformedCliArgs.audioReview.releaseNotesLimit = finalCliArgs.releaseNotesLimit;\n if (finalCliArgs.githubIssuesLimit !== undefined) transformedCliArgs.audioReview.githubIssuesLimit = finalCliArgs.githubIssuesLimit;\n if (finalCliArgs.context !== undefined) transformedCliArgs.audioReview.context = finalCliArgs.context;\n if (finalCliArgs.sendit !== undefined) transformedCliArgs.audioReview.sendit = finalCliArgs.sendit;\n if (finalCliArgs.file !== undefined) transformedCliArgs.audioReview.file = finalCliArgs.file;\n if (finalCliArgs.directory !== undefined) transformedCliArgs.audioReview.directory = finalCliArgs.directory;\n if (finalCliArgs.keepTemp !== undefined) transformedCliArgs.audioReview.keepTemp = finalCliArgs.keepTemp;\n }\n\n // Nested mappings for 'review' options\n if (finalCliArgs.includeCommitHistory !== undefined ||\n finalCliArgs.includeRecentDiffs !== undefined ||\n finalCliArgs.includeReleaseNotes !== undefined ||\n finalCliArgs.includeGithubIssues !== undefined ||\n finalCliArgs.commitHistoryLimit !== undefined ||\n finalCliArgs.diffHistoryLimit !== undefined ||\n finalCliArgs.releaseNotesLimit !== undefined ||\n finalCliArgs.githubIssuesLimit !== undefined ||\n finalCliArgs.context !== undefined ||\n finalCliArgs.sendit !== undefined ||\n finalCliArgs.note !== undefined) {\n transformedCliArgs.review = {};\n if (finalCliArgs.note !== undefined) transformedCliArgs.review.note = finalCliArgs.note;\n // Include optional review configuration options if specified\n if (finalCliArgs.includeCommitHistory !== undefined) transformedCliArgs.review.includeCommitHistory = finalCliArgs.includeCommitHistory;\n if (finalCliArgs.includeRecentDiffs !== undefined) transformedCliArgs.review.includeRecentDiffs = finalCliArgs.includeRecentDiffs;\n if (finalCliArgs.includeReleaseNotes !== undefined) transformedCliArgs.review.includeReleaseNotes = finalCliArgs.includeReleaseNotes;\n if (finalCliArgs.includeGithubIssues !== undefined) transformedCliArgs.review.includeGithubIssues = finalCliArgs.includeGithubIssues;\n if (finalCliArgs.commitHistoryLimit !== undefined) transformedCliArgs.review.commitHistoryLimit = finalCliArgs.commitHistoryLimit;\n if (finalCliArgs.diffHistoryLimit !== undefined) transformedCliArgs.review.diffHistoryLimit = finalCliArgs.diffHistoryLimit;\n if (finalCliArgs.releaseNotesLimit !== undefined) transformedCliArgs.review.releaseNotesLimit = finalCliArgs.releaseNotesLimit;\n if (finalCliArgs.githubIssuesLimit !== undefined) transformedCliArgs.review.githubIssuesLimit = finalCliArgs.githubIssuesLimit;\n if (finalCliArgs.context !== undefined) transformedCliArgs.review.context = finalCliArgs.context;\n if (finalCliArgs.sendit !== undefined) transformedCliArgs.review.sendit = finalCliArgs.sendit;\n }\n\n if (finalCliArgs.excludedPatterns !== undefined) transformedCliArgs.excludedPatterns = finalCliArgs.excludedPatterns;\n\n\n // Note: openaiApiKey is handled separately via environment variable only\n\n return transformedCliArgs;\n}\n\n\n\n// Update configure signature to accept cardigantime\nexport const configure = async (cardigantime: any): 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 // Check if --check-config is in process.argv early\n if (process.argv.includes('--check-config')) {\n // For check-config, use CardiganTime's built-in checkConfig method\n program.parse();\n const cliArgs: Input = program.opts<Input>();\n\n // Transform the flat CLI args\n const transformedCliArgs: Partial<Config> = transformCliArgs(cliArgs);\n\n // Use CardiganTime's built-in checkConfig method which displays\n // hierarchical configuration information in a well-formatted way\n await cardigantime.checkConfig(transformedCliArgs);\n\n // Return minimal config for consistency, but main processing is done\n const config: Config = await validateAndProcessOptions({});\n const secureConfig: SecureConfig = await validateAndProcessSecureOptions();\n const commandConfig: CommandConfig = { commandName: 'check-config' };\n\n return [config, secureConfig, commandConfig];\n }\n\n // Check if --init-config is in process.argv early\n if (process.argv.includes('--init-config')) {\n // For init-config, use CardiganTime's built-in generateConfig method\n program.parse();\n const cliArgs: Input = program.opts<Input>();\n\n // Transform the flat CLI args\n const transformedCliArgs: Partial<Config> = transformCliArgs(cliArgs);\n\n\n // Use CardiganTime's built-in generateConfig method\n await cardigantime.generateConfig(transformedCliArgs.configDirectory || KODRDRIV_DEFAULTS.configDirectory);\n\n // Return minimal config for consistency, but main processing is done\n const config: Config = await validateAndProcessOptions({});\n const secureConfig: SecureConfig = await validateAndProcessSecureOptions();\n const commandConfig: CommandConfig = { commandName: 'init-config' };\n\n return [config, secureConfig, commandConfig];\n }\n\n // Get CLI arguments using the new function\n const [finalCliArgs, commandConfig]: [Input, CommandConfig] = await getCliConfig(program);\n logger.silly('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.silly('Transformed CLI Args for merging: %s', JSON.stringify(transformedCliArgs, null, 2));\n\n // Get values from config file using Cardigantime's hierarchical configuration\n const fileValues: Partial<Config> = await cardigantime.read(transformedCliArgs) as Partial<Config>;\n\n // Merge configurations: Defaults -> File -> CLI\n // Properly merge the link section to preserve scope roots from config file\n const mergedLink = {\n ...KODRDRIV_DEFAULTS.link,\n ...fileValues.link,\n ...transformedCliArgs.link,\n };\n\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 link: mergedLink, // Override with properly merged link section\n } as Partial<Config>; // Cast to Partial<Config> initially\n\n // Specific validation and processing after merge\n const config: Config = await validateAndProcessOptions(partialConfig);\n\n // Log effective configuration summary at verbose level\n logger.verbose('Configuration complete. Effective settings:');\n logger.verbose(` Command: ${commandConfig.commandName}`);\n logger.verbose(` Model: ${config.model}`);\n logger.verbose(` Dry run: ${config.dryRun}`);\n logger.verbose(` Debug: ${config.debug}`);\n logger.verbose(` Verbose: ${config.verbose}`);\n logger.verbose(` Config directory: ${config.configDirectory}`);\n logger.verbose(` Output directory: ${config.outputDirectory}`);\n logger.verbose(` Context directories: ${config.contextDirectories?.join(', ') || 'none'}`);\n if (config.excludedPatterns && config.excludedPatterns.length > 0) {\n logger.verbose(` Excluded patterns: ${config.excludedPatterns.join(', ')}`);\n }\n if (Object.keys(config.link?.scopeRoots || {}).length > 0) {\n logger.verbose(` Link scope roots: ${Object.keys(config.link!.scopeRoots!).join(', ')}`);\n }\n\n logger.silly('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\nexport async function getCliConfig(program: Command): Promise<[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('--config-dir <configDir>', 'configuration directory') // Keep config-dir for specifying location\n .option('--output-dir <outputDir>', 'output directory for generated files')\n .option('--preferences-dir <preferencesDir>', 'preferences directory for personal settings')\n .option('--excluded-paths [excludedPatterns...]', 'paths to exclude from the diff')\n .option('--keep-temp', 'keep temporary recording files');\n }\n\n // Add global options to the main program\n // (cardigantime already adds most global options like --verbose, --debug, --config-dir)\n\n // Add subcommands\n const commitCommand = program\n .command('commit')\n .argument('[direction]', 'direction or guidance for the commit message')\n .description('Generate commit notes')\n .option('--context <context>', 'context for the commit message')\n .option('--cached', 'use cached diff')\n .option('--add', 'add all changes before committing')\n .option('--sendit', 'Commit with the message generated. No review.')\n .option('--message-limit <messageLimit>', 'limit the number of messages to generate');\n\n // Add shared options to commit command\n addSharedOptions(commitCommand);\n\n // Customize help output for commit command\n commitCommand.configureHelp({\n formatHelp: (cmd, helper) => {\n const nameAndVersion = `${helper.commandUsage(cmd)}\\n\\n${helper.commandDescription(cmd)}\\n`;\n\n const commitOptions = [\n ['--context <context>', 'context for the commit message']\n ];\n\n const behavioralOptions = [\n ['--cached', 'use cached diff'],\n ['--add', 'add all changes before committing'],\n ['--sendit', 'Commit with the message generated. No review.'],\n ['--message-limit <messageLimit>', 'limit the number of messages to generate']\n ];\n\n const globalOptions = [\n ['--dry-run', 'perform a dry run without saving files'],\n ['--verbose', 'enable verbose logging'],\n ['--debug', 'enable debug logging'],\n ['--overrides', 'enable overrides'],\n ['--model <model>', 'OpenAI model to use'],\n ['-d, --context-directories [contextDirectories...]', 'directories to scan for context'],\n ['--config-dir <configDir>', 'configuration directory'],\n ['--excluded-paths [excludedPatterns...]', 'paths to exclude from the diff'],\n ['-h, --help', 'display help for command']\n ];\n\n const formatOptionsSection = (title: string, options: string[][]) => {\n const maxWidth = Math.max(...options.map(([flag]) => flag.length));\n return `${title}:\\n` + options.map(([flag, desc]) =>\n ` ${flag.padEnd(maxWidth + 2)} ${desc}`\n ).join('\\n') + '\\n';\n };\n\n return nameAndVersion + '\\n' +\n formatOptionsSection('Commit Message Options', commitOptions) + '\\n' +\n formatOptionsSection('Behavioral Options', behavioralOptions) + '\\n' +\n formatOptionsSection('Global Options', globalOptions) + '\\n' +\n 'Environment Variables:\\n' +\n ' OPENAI_API_KEY OpenAI API key (required)\\n';\n }\n });\n\n const audioCommitCommand = program\n .command('audio-commit')\n .option('--cached', 'use cached diff')\n .option('--add', 'add all changes before committing')\n .option('--sendit', 'Commit with the message generated. No review.')\n .option('--direction <direction>', 'direction or guidance for the commit message')\n .option('--message-limit <messageLimit>', 'limit the number of messages to generate')\n .option('--file <file>', 'audio file path')\n .description('Record audio to provide context, then generate and optionally commit with AI-generated message');\n addSharedOptions(audioCommitCommand);\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 const publishCommand = program\n .command('publish')\n .option('--merge-method <method>', 'method to merge PR (merge, squash, rebase)', 'squash')\n .option('--sendit', 'skip all confirmation prompts and proceed automatically')\n .description('Publish a release');\n addSharedOptions(publishCommand);\n\n const linkCommand = program\n .command('link')\n .option('--scope-roots <scopeRoots>', 'JSON mapping of scopes to root directories (e.g., \\'{\"@company\": \"../\"}\\')')\n .option('--workspace-file <workspaceFile>', 'path to workspace file', 'pnpm-workspace.yaml')\n .description('Manage pnpm workspace links for local development');\n addSharedOptions(linkCommand);\n\n const unlinkCommand = program\n .command('unlink')\n .option('--scope-roots <scopeRoots>', 'JSON mapping of scopes to root directories (e.g., \\'{\"@company\": \"../\"}\\')')\n .option('--workspace-file <workspaceFile>', 'path to workspace file', 'pnpm-workspace.yaml')\n .description('Remove pnpm workspace links and rebuild dependencies');\n addSharedOptions(unlinkCommand);\n\n const audioReviewCommand = program\n .command('audio-review')\n .option('--include-commit-history', 'include recent commit log messages in context (default: true)')\n .option('--no-include-commit-history', 'exclude commit log messages from context')\n .option('--include-recent-diffs', 'include recent commit diffs in context (default: true)')\n .option('--no-include-recent-diffs', 'exclude recent diffs from context')\n .option('--include-release-notes', 'include recent release notes in context (default: false)')\n .option('--no-include-release-notes', 'exclude release notes from context')\n .option('--include-github-issues', 'include open GitHub issues in context (default: true)')\n .option('--no-include-github-issues', 'exclude GitHub issues from context')\n .option('--commit-history-limit <limit>', 'number of recent commits to include', parseInt)\n .option('--diff-history-limit <limit>', 'number of recent commit diffs to include', parseInt)\n .option('--release-notes-limit <limit>', 'number of recent release notes to include', parseInt)\n .option('--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)', parseInt)\n .option('--context <context>', 'additional context for the audio review')\n .option('--file <file>', 'audio file path')\n .option('--directory <directory>', 'directory containing audio files to process')\n .description('Record audio, transcribe with Whisper, and analyze for project issues using AI');\n addSharedOptions(audioReviewCommand);\n\n const reviewCommand = program\n .command('review')\n .argument('[note]', 'review note to analyze for project issues')\n .option('--include-commit-history', 'include recent commit log messages in context (default: true)')\n .option('--no-include-commit-history', 'exclude commit log messages from context')\n .option('--include-recent-diffs', 'include recent commit diffs in context (default: true)')\n .option('--no-include-recent-diffs', 'exclude recent diffs from context')\n .option('--include-release-notes', 'include recent release notes in context (default: false)')\n .option('--no-include-release-notes', 'exclude release notes from context')\n .option('--include-github-issues', 'include open GitHub issues in context (default: true)')\n .option('--no-include-github-issues', 'exclude GitHub issues from context')\n .option('--commit-history-limit <limit>', 'number of recent commits to include', parseInt)\n .option('--diff-history-limit <limit>', 'number of recent commit diffs to include', parseInt)\n .option('--release-notes-limit <limit>', 'number of recent release notes to include', parseInt)\n .option('--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)', parseInt)\n .option('--context <context>', 'additional context for the review')\n .option('--sendit', 'Create GitHub issues automatically without confirmation')\n .description('Analyze review note for project issues using AI');\n addSharedOptions(reviewCommand);\n\n // Customize help output for review command\n reviewCommand.configureHelp({\n formatHelp: (cmd, helper) => {\n const nameAndVersion = `kodrdriv review [note] [options]\\n\\nAnalyze review note for project issues using AI\\n`;\n\n const argumentsSection = [\n ['note', 'review note to analyze for project issues (can also be piped via STDIN)']\n ];\n\n const reviewOptions = [\n ['--context <context>', 'additional context for the review']\n ];\n\n const gitContextOptions = [\n ['--include-commit-history', 'include recent commit log messages in context (default: true)'],\n ['--no-include-commit-history', 'exclude commit log messages from context'],\n ['--include-recent-diffs', 'include recent commit diffs in context (default: true)'],\n ['--no-include-recent-diffs', 'exclude recent diffs from context'],\n ['--include-release-notes', 'include recent release notes in context (default: false)'],\n ['--no-include-release-notes', 'exclude release notes from context'],\n ['--include-github-issues', 'include open GitHub issues in context (default: true)'],\n ['--no-include-github-issues', 'exclude GitHub issues from context'],\n ['--commit-history-limit <limit>', 'number of recent commits to include'],\n ['--diff-history-limit <limit>', 'number of recent commit diffs to include'],\n ['--release-notes-limit <limit>', 'number of recent release notes to include'],\n ['--github-issues-limit <limit>', 'number of open GitHub issues to include (max 20)']\n ];\n\n const behavioralOptions = [\n ['--sendit', 'Create GitHub issues automatically without confirmation']\n ];\n\n const globalOptions = [\n ['--dry-run', 'perform a dry run without saving files'],\n ['--verbose', 'enable verbose logging'],\n ['--debug', 'enable debug logging'],\n ['--overrides', 'enable overrides'],\n ['--model <model>', 'OpenAI model to use'],\n ['-d, --context-directories [contextDirectories...]', 'directories to scan for context'],\n ['--config-dir <configDir>', 'configuration directory'],\n ['--output-dir <outputDir>', 'output directory for generated files'],\n ['--excluded-paths [excludedPatterns...]', 'paths to exclude from the diff'],\n ['-h, --help', 'display help for command']\n ];\n\n const formatOptionsSection = (title: string, options: string[][]) => {\n const maxWidth = Math.max(...options.map(([flag]) => flag.length));\n return `${title}:\\n` + options.map(([flag, desc]) =>\n ` ${flag.padEnd(maxWidth + 2)} ${desc}`\n ).join('\\n') + '\\n';\n };\n\n return nameAndVersion + '\\n' +\n formatOptionsSection('Arguments', argumentsSection) + '\\n' +\n formatOptionsSection('Options', reviewOptions) + '\\n' +\n formatOptionsSection('Git Context Parameters', gitContextOptions) + '\\n' +\n formatOptionsSection('Behavioral Options', behavioralOptions) + '\\n' +\n formatOptionsSection('Global Options', globalOptions) + '\\n' +\n 'Environment Variables:\\n' +\n ' OPENAI_API_KEY OpenAI API key (required)\\n';\n }\n });\n\n const cleanCommand = program\n .command('clean')\n .description('Remove the output directory and all generated files');\n addSharedOptions(cleanCommand);\n\n const selectAudioCommand = program\n .command('select-audio')\n .description('Interactively select and save audio device for recording');\n addSharedOptions(selectAudioCommand);\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) {\n commandName = program.args[0];\n validateCommand(commandName);\n }\n\n // Only proceed with command-specific options if validation passed\n if (ALLOWED_COMMANDS.includes(commandName)) {\n if (commandName === 'commit' && commitCommand.opts) {\n commandOptions = commitCommand.opts<Partial<Input>>();\n // Handle positional argument for direction\n const args = commitCommand.args;\n if (args && args.length > 0 && args[0]) {\n commandOptions.direction = args[0];\n }\n\n // Check for STDIN input for direction (takes precedence over positional argument)\n const stdinInput = await readStdin();\n if (stdinInput) {\n commandOptions.direction = stdinInput;\n }\n } else if (commandName === 'audio-commit' && audioCommitCommand.opts) {\n commandOptions = audioCommitCommand.opts<Partial<Input>>();\n } else if (commandName === 'release' && releaseCommand.opts) {\n commandOptions = releaseCommand.opts<Partial<Input>>();\n } else if (commandName === 'publish' && publishCommand.opts) {\n commandOptions = publishCommand.opts<Partial<Input>>();\n } else if (commandName === 'link' && linkCommand.opts) {\n commandOptions = linkCommand.opts<Partial<Input>>();\n } else if (commandName === 'unlink' && unlinkCommand.opts) {\n commandOptions = unlinkCommand.opts<Partial<Input>>();\n } else if (commandName === 'audio-review' && audioReviewCommand.opts) {\n commandOptions = audioReviewCommand.opts<Partial<Input>>();\n } else if (commandName === 'review' && reviewCommand.opts) {\n commandOptions = reviewCommand.opts<Partial<Input>>();\n // Handle positional argument for note\n const args = reviewCommand.args;\n if (args && args.length > 0 && args[0]) {\n commandOptions.note = args[0];\n }\n\n // Check for STDIN input for note (takes precedence over positional argument)\n const stdinInput = await readStdin();\n if (stdinInput) {\n commandOptions.note = stdinInput;\n }\n } else if (commandName === 'clean' && cleanCommand.opts) {\n commandOptions = cleanCommand.opts<Partial<Input>>();\n } else if (commandName === 'select-audio' && selectAudioCommand.opts) {\n commandOptions = selectAudioCommand.opts<Partial<Input>>();\n }\n }\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\nexport async function validateAndProcessSecureOptions(): Promise<SecureConfig> {\n // For check-config and init-config commands, we don't want to throw an error for missing API key\n const isCheckConfig = process.argv.includes('--check-config');\n const isInitConfig = process.argv.includes('--init-config');\n\n if (!process.env.OPENAI_API_KEY && !isCheckConfig && !isInitConfig) {\n throw new Error('OpenAI API key is required. Please set the OPENAI_API_KEY environment variable.');\n }\n\n // Prefer CLI key if provided, otherwise use env var (might be undefined for check-config/init-config)\n const openaiApiKey = process.env.OPENAI_API_KEY;\n\n const secureConfig: SecureConfig = {\n openaiApiKey: openaiApiKey,\n };\n\n return secureConfig;\n}\n\n// Renamed validation function to reflect its broader role\nexport async function validateAndProcessOptions(options: Partial<Config>): Promise<Config> {\n\n const contextDirectories = await validateContextDirectories(options.contextDirectories || KODRDRIV_DEFAULTS.contextDirectories);\n const configDir = options.configDirectory || KODRDRIV_DEFAULTS.configDirectory;\n // Skip config directory validation since Cardigantime handles hierarchical lookup\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 contextDirectories: contextDirectories,\n configDirectory: configDir,\n outputDirectory: options.outputDirectory ?? KODRDRIV_DEFAULTS.outputDirectory,\n preferencesDirectory: options.preferencesDirectory ?? KODRDRIV_DEFAULTS.preferencesDirectory,\n // Cardigantime-specific properties (from fileValues or defaults)\n discoveredConfigDirs: (options as any).discoveredConfigDirs ?? [],\n resolvedConfigDirs: (options as any).resolvedConfigDirs ?? [],\n // Command-specific options with defaults\n commit: {\n add: options.commit?.add ?? KODRDRIV_DEFAULTS.commit.add,\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 direction: options.commit?.direction,\n },\n audioCommit: {\n maxRecordingTime: options.audioCommit?.maxRecordingTime ?? KODRDRIV_DEFAULTS.audioCommit.maxRecordingTime,\n audioDevice: options.audioCommit?.audioDevice ?? KODRDRIV_DEFAULTS.audioCommit.audioDevice,\n file: options.audioCommit?.file,\n keepTemp: options.audioCommit?.keepTemp,\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 audioReview: {\n includeCommitHistory: options.audioReview?.includeCommitHistory ?? KODRDRIV_DEFAULTS.audioReview.includeCommitHistory,\n includeRecentDiffs: options.audioReview?.includeRecentDiffs ?? KODRDRIV_DEFAULTS.audioReview.includeRecentDiffs,\n includeReleaseNotes: options.audioReview?.includeReleaseNotes ?? KODRDRIV_DEFAULTS.audioReview.includeReleaseNotes,\n includeGithubIssues: options.audioReview?.includeGithubIssues ?? KODRDRIV_DEFAULTS.audioReview.includeGithubIssues,\n commitHistoryLimit: options.audioReview?.commitHistoryLimit ?? KODRDRIV_DEFAULTS.audioReview.commitHistoryLimit,\n diffHistoryLimit: options.audioReview?.diffHistoryLimit ?? KODRDRIV_DEFAULTS.audioReview.diffHistoryLimit,\n releaseNotesLimit: options.audioReview?.releaseNotesLimit ?? KODRDRIV_DEFAULTS.audioReview.releaseNotesLimit,\n githubIssuesLimit: options.audioReview?.githubIssuesLimit ?? KODRDRIV_DEFAULTS.audioReview.githubIssuesLimit,\n context: options.audioReview?.context,\n sendit: options.audioReview?.sendit ?? KODRDRIV_DEFAULTS.audioReview.sendit,\n maxRecordingTime: options.audioReview?.maxRecordingTime ?? KODRDRIV_DEFAULTS.audioReview.maxRecordingTime,\n audioDevice: options.audioReview?.audioDevice ?? KODRDRIV_DEFAULTS.audioReview.audioDevice,\n file: options.audioReview?.file,\n directory: options.audioReview?.directory,\n keepTemp: options.audioReview?.keepTemp,\n },\n review: {\n includeCommitHistory: options.review?.includeCommitHistory ?? KODRDRIV_DEFAULTS.review.includeCommitHistory,\n includeRecentDiffs: options.review?.includeRecentDiffs ?? KODRDRIV_DEFAULTS.review.includeRecentDiffs,\n includeReleaseNotes: options.review?.includeReleaseNotes ?? KODRDRIV_DEFAULTS.review.includeReleaseNotes,\n includeGithubIssues: options.review?.includeGithubIssues ?? KODRDRIV_DEFAULTS.review.includeGithubIssues,\n commitHistoryLimit: options.review?.commitHistoryLimit ?? KODRDRIV_DEFAULTS.review.commitHistoryLimit,\n diffHistoryLimit: options.review?.diffHistoryLimit ?? KODRDRIV_DEFAULTS.review.diffHistoryLimit,\n releaseNotesLimit: options.review?.releaseNotesLimit ?? KODRDRIV_DEFAULTS.review.releaseNotesLimit,\n githubIssuesLimit: options.review?.githubIssuesLimit ?? KODRDRIV_DEFAULTS.review.githubIssuesLimit,\n context: options.review?.context,\n sendit: options.review?.sendit ?? KODRDRIV_DEFAULTS.review.sendit,\n note: options.review?.note,\n },\n publish: {\n mergeMethod: options.publish?.mergeMethod ?? KODRDRIV_DEFAULTS.publish.mergeMethod,\n dependencyUpdatePatterns: options.publish?.dependencyUpdatePatterns,\n requiredEnvVars: options.publish?.requiredEnvVars ?? KODRDRIV_DEFAULTS.publish.requiredEnvVars,\n linkWorkspacePackages: options.publish?.linkWorkspacePackages ?? KODRDRIV_DEFAULTS.publish.linkWorkspacePackages,\n unlinkWorkspacePackages: options.publish?.unlinkWorkspacePackages ?? KODRDRIV_DEFAULTS.publish.unlinkWorkspacePackages,\n sendit: options.publish?.sendit ?? KODRDRIV_DEFAULTS.publish.sendit,\n },\n link: {\n scopeRoots: options.link?.scopeRoots ?? KODRDRIV_DEFAULTS.link.scopeRoots,\n workspaceFile: options.link?.workspaceFile ?? KODRDRIV_DEFAULTS.link.workspaceFile,\n dryRun: options.link?.dryRun ?? KODRDRIV_DEFAULTS.link.dryRun,\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\nexport async 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 try {\n // Check if the path exists\n if (!(await storage.exists(absoluteConfigDir))) {\n // Directory doesn't exist, warn and fall back to defaults\n logger.warn(`Config directory does not exist: ${absoluteConfigDir}. Using default configuration.`);\n return absoluteConfigDir; // Return the path anyway, app will use defaults\n }\n\n // Path exists, check if it's a directory\n if (!(await storage.isDirectory(absoluteConfigDir))) {\n throw new Error(`Config directory is not a directory: ${absoluteConfigDir}`);\n }\n\n // Check if it's writable\n 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 config directory: ${absoluteConfigDir}`, error);\n throw new Error(`Failed to validate 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\n\n"],"names":["z","object","dryRun","boolean","optional","verbose","debug","overrides","checkConfig","initConfig","model","string","contextDirectories","array","configDir","outputDir","preferencesDir","cached","add","sendit","from","to","excludedPatterns","context","note","direction","messageLimit","number","mergeMethod","enum","scopeRoots","workspaceFile","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","file","directory","keepTemp","transformCliArgs","finalCliArgs","transformedCliArgs","undefined","configDirectory","outputDirectory","preferencesDirectory","commit","audioCommit","release","publish","link","JSON","parse","error","Error","audioReview","review","configure","cardigantime","config","logger","getLogger","program","Command","name","PROGRAM_NAME","summary","description","version","VERSION","process","argv","includes","cliArgs","opts","validateAndProcessOptions","secureConfig","validateAndProcessSecureOptions","commandConfig","commandName","generateConfig","KODRDRIV_DEFAULTS","getCliConfig","silly","stringify","fileValues","read","mergedLink","partialConfig","join","length","Object","keys","addSharedOptions","command","option","commitCommand","argument","configureHelp","formatHelp","cmd","helper","nameAndVersion","commandUsage","commandDescription","commitOptions","behavioralOptions","globalOptions","formatOptionsSection","title","options","maxWidth","Math","max","map","flag","desc","padEnd","audioCommitCommand","releaseCommand","publishCommand","linkCommand","unlinkCommand","audioReviewCommand","parseInt","reviewCommand","argumentsSection","reviewOptions","gitContextOptions","cleanCommand","selectAudioCommand","DEFAULT_COMMAND","commandOptions","args","validateCommand","ALLOWED_COMMANDS","stdinInput","readStdin","isCheckConfig","isInitConfig","env","OPENAI_API_KEY","openaiApiKey","validateContextDirectories","finalConfig","discoveredConfigDirs","resolvedConfigDirs","maxRecordingTime","audioDevice","dependencyUpdatePatterns","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","storage","Storage","log","info","validDirectories","dir","isDirectoryReadable","push","warn","message"],"mappings":"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"}
@@ -68,7 +68,8 @@ const execute = async (runConfig)=>{
68
68
  logger.info('🤖 Transcribing audio locally using OpenAI Whisper...');
69
69
  const transcription = await transcribeAudio(audioFilePath, {
70
70
  model: "whisper-1",
71
- debug: runConfig.debug
71
+ debug: runConfig.debug,
72
+ outputDirectory: path.join(runConfig.outputDirectory || 'output', 'kodrdriv')
72
73
  });
73
74
  audioContext = transcription.text;
74
75
  if (!audioContext.trim()) {