@eldrforge/kodrdriv 0.0.25 → 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
@@ -329,7 +329,7 @@ async function getCliConfig(program) {
329
329
  addSharedOptions(audioCommitCommand);
330
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');
331
331
  addSharedOptions(releaseCommand);
332
- 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');
333
333
  addSharedOptions(publishCommand);
334
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');
335
335
  addSharedOptions(linkCommand);
@@ -546,10 +546,10 @@ async function validateAndProcessSecureOptions() {
546
546
  }
547
547
  // Renamed validation function to reflect its broader role
548
548
  async function validateAndProcessOptions(options) {
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_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;
550
550
  const contextDirectories = await validateContextDirectories(options.contextDirectories || KODRDRIV_DEFAULTS.contextDirectories);
551
551
  const configDir = options.configDirectory || KODRDRIV_DEFAULTS.configDirectory;
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_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;
553
553
  // Skip config directory validation since Cardigantime handles hierarchical lookup
554
554
  // Ensure all required fields are present and have correct types after merging
555
555
  const finalConfig = {
@@ -621,7 +621,8 @@ async function validateAndProcessOptions(options) {
621
621
  dependencyUpdatePatterns: (_options_publish1 = options.publish) === null || _options_publish1 === void 0 ? void 0 : _options_publish1.dependencyUpdatePatterns,
622
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,
623
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,
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
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
625
626
  },
626
627
  link: {
627
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 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 .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 },\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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"}
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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"}
@@ -246,7 +246,16 @@ const execute = async (runConfig)=>{
246
246
  }
247
247
  logger.info(`${isDryRun ? 'DRY RUN: Would wait for' : 'Waiting for'} PR #${pr.number} checks to complete...`);
248
248
  if (!isDryRun) {
249
- await waitForPullRequestChecks(pr.number);
249
+ var _runConfig_publish3, _runConfig_publish4, _runConfig_publish5;
250
+ // Configure timeout and user confirmation behavior
251
+ const timeout = ((_runConfig_publish3 = runConfig.publish) === null || _runConfig_publish3 === void 0 ? void 0 : _runConfig_publish3.checksTimeout) || 300000; // 5 minutes default
252
+ const senditMode = ((_runConfig_publish4 = runConfig.publish) === null || _runConfig_publish4 === void 0 ? void 0 : _runConfig_publish4.sendit) || false;
253
+ // sendit flag overrides skipUserConfirmation - if sendit is true, skip confirmation
254
+ const skipUserConfirmation = senditMode || ((_runConfig_publish5 = runConfig.publish) === null || _runConfig_publish5 === void 0 ? void 0 : _runConfig_publish5.skipUserConfirmation) || false;
255
+ await waitForPullRequestChecks(pr.number, {
256
+ timeout,
257
+ skipUserConfirmation
258
+ });
250
259
  }
251
260
  const mergeMethod = ((_runConfig_publish1 = runConfig.publish) === null || _runConfig_publish1 === void 0 ? void 0 : _runConfig_publish1.mergeMethod) || 'squash';
252
261
  if (isDryRun) {
@@ -285,9 +294,9 @@ const execute = async (runConfig)=>{
285
294
  }
286
295
  logger.info(isDryRun ? 'DRY RUN: Preparation would be complete.' : 'Preparation complete.');
287
296
  } finally{
288
- var _runConfig_publish3;
297
+ var _runConfig_publish6;
289
298
  // Restore linked packages (if enabled)
290
- const shouldLink = ((_runConfig_publish3 = runConfig.publish) === null || _runConfig_publish3 === void 0 ? void 0 : _runConfig_publish3.linkWorkspacePackages) !== false; // default to true
299
+ const shouldLink = ((_runConfig_publish6 = runConfig.publish) === null || _runConfig_publish6 === void 0 ? void 0 : _runConfig_publish6.linkWorkspacePackages) !== false; // default to true
291
300
  if (shouldLink) {
292
301
  logger.verbose(isDryRun ? 'DRY RUN: Would restore linked packages...' : 'Restoring linked packages...');
293
302
  await execute$4(runConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"publish.js","sources":["../../src/commands/publish.ts"],"sourcesContent":["import path from 'path';\nimport * as Commit from './commit';\nimport * as Diff from '../content/diff';\nimport * as Release from './release';\nimport * as Link from './link';\nimport * as Unlink from './unlink';\nimport { getLogger } from '../logging';\nimport { Config, PullRequest } from '../types';\nimport { run, runWithDryRunSupport } from '../util/child';\nimport * as GitHub from '../util/github';\nimport { create as createStorage } from '../util/storage';\nimport { incrementPatchVersion, getOutputPath } from '../util/general';\nimport { DEFAULT_OUTPUT_DIRECTORY } from '../constants';\n\nconst scanNpmrcForEnvVars = async (storage: any): Promise<string[]> => {\n const npmrcPath = path.join(process.cwd(), '.npmrc');\n const envVars: string[] = [];\n\n if (await storage.exists(npmrcPath)) {\n try {\n const npmrcContent = await storage.readFile(npmrcPath, 'utf-8');\n // Match environment variable patterns like ${VAR_NAME} or $VAR_NAME\n const envVarMatches = npmrcContent.match(/\\$\\{([^}]+)\\}|\\$([A-Z_][A-Z0-9_]*)/g);\n\n if (envVarMatches) {\n for (const match of envVarMatches) {\n // Extract variable name from ${VAR_NAME} or $VAR_NAME format\n const varName = match.replace(/\\$\\{|\\}|\\$/g, '');\n if (varName && !envVars.includes(varName)) {\n envVars.push(varName);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n // If we can't read .npmrc, that's okay - just continue\n }\n }\n\n return envVars;\n};\n\nconst validateEnvironmentVariables = (requiredEnvVars: string[], isDryRun: boolean): void => {\n const logger = getLogger();\n const missingEnvVars: string[] = [];\n\n for (const envVar of requiredEnvVars) {\n if (!process.env[envVar]) {\n missingEnvVars.push(envVar);\n }\n }\n\n if (missingEnvVars.length > 0) {\n if (isDryRun) {\n logger.warn(`DRY RUN: Missing required environment variables: ${missingEnvVars.join(', ')}`);\n } else {\n logger.error(`Missing required environment variables: ${missingEnvVars.join(', ')}`);\n throw new Error(`Missing required environment variables: ${missingEnvVars.join(', ')}. Please set these environment variables before running publish.`);\n }\n }\n};\n\nconst runPrechecks = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n const isDryRun = runConfig.dryRun || false;\n\n logger.info(isDryRun ? 'DRY RUN: Running prechecks...' : 'Running prechecks...');\n\n // Check if we're in a git repository\n try {\n if (isDryRun) {\n logger.info('DRY RUN: Would check git repository with: git rev-parse --git-dir');\n } else {\n await run('git rev-parse --git-dir');\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Not in a git repository. Please run this command from within a git repository.');\n }\n }\n\n // Check for uncommitted changes\n logger.info(isDryRun ? 'DRY RUN: Would check for uncommitted changes...' : 'Checking for uncommitted changes...');\n try {\n if (isDryRun) {\n logger.info('DRY RUN: Would check git status with: git status --porcelain');\n } else {\n const { stdout } = await run('git status --porcelain');\n if (stdout.trim()) {\n throw new Error('Working directory has uncommitted changes. Please commit or stash your changes before running publish.');\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Failed to check git status. Please ensure you are in a valid git repository.');\n }\n }\n\n // Check if we're on a release branch\n logger.info(isDryRun ? 'DRY RUN: Would check current branch...' : 'Checking current branch...');\n if (isDryRun) {\n logger.info('DRY RUN: Would verify current branch is a release branch (starts with \"release/\")');\n } else {\n const currentBranch = await GitHub.getCurrentBranchName();\n if (!currentBranch.startsWith('release/')) {\n throw new Error(`Current branch '${currentBranch}' is not a release branch. Please switch to a release branch (e.g., release/1.0.0) before running publish.`);\n }\n }\n\n // Check if prepublishOnly script exists in package.json\n logger.info(isDryRun ? 'DRY RUN: Would check for prepublishOnly script...' : 'Checking for prepublishOnly script...');\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n\n if (!await storage.exists(packageJsonPath)) {\n if (!isDryRun) {\n throw new Error('package.json not found in current directory.');\n } else {\n logger.warn('DRY RUN: package.json not found in current directory.');\n }\n } else {\n let packageJson;\n try {\n const packageJsonContents = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContents);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Failed to parse package.json. Please ensure it contains valid JSON.');\n } else {\n logger.warn('DRY RUN: Failed to parse package.json. Please ensure it contains valid JSON.');\n }\n }\n\n if (packageJson && !packageJson.scripts?.prepublishOnly) {\n if (!isDryRun) {\n throw new Error('prepublishOnly script is required in package.json but was not found. Please add a prepublishOnly script that runs your pre-flight checks (e.g., clean, lint, build, test).');\n } else {\n logger.warn('DRY RUN: prepublishOnly script is required in package.json but was not found.');\n }\n }\n }\n\n // Check required environment variables\n logger.verbose(isDryRun ? 'DRY RUN: Would check required environment variables...' : 'Checking required environment variables...');\n const coreRequiredEnvVars = runConfig.publish?.requiredEnvVars || [];\n const npmrcEnvVars = isDryRun ? [] : await scanNpmrcForEnvVars(storage); // Skip .npmrc scan in dry run\n const allRequiredEnvVars = [...new Set([...coreRequiredEnvVars, ...npmrcEnvVars])];\n\n if (allRequiredEnvVars.length > 0) {\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Required environment variables: ${allRequiredEnvVars.join(', ')}`);\n validateEnvironmentVariables(allRequiredEnvVars, isDryRun);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: No required environment variables specified.' : 'No required environment variables specified.');\n }\n\n logger.info(isDryRun ? 'DRY RUN: All prechecks would pass.' : 'All prechecks passed.');\n};\n\nexport const execute = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n const isDryRun = runConfig.dryRun || false;\n\n // Run prechecks before starting any work\n await runPrechecks(runConfig);\n\n logger.info(isDryRun ? 'DRY RUN: Would start release process...' : 'Starting release process...');\n\n try {\n // Unlink all workspace packages before starting (if enabled)\n const shouldUnlink = runConfig.publish?.unlinkWorkspacePackages !== false; // default to true\n if (shouldUnlink) {\n logger.verbose(isDryRun ? 'DRY RUN: Would unlink workspace packages...' : 'Unlinking workspace packages...');\n await Unlink.execute(runConfig);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: Would skip unlink workspace packages (disabled in config).' : 'Skipping unlink workspace packages (disabled in config).');\n }\n\n let pr: PullRequest | null = null;\n\n if (isDryRun) {\n logger.info('DRY RUN: Would check for existing pull request');\n logger.info('DRY RUN: Assuming no existing PR found for demo purposes');\n } else {\n const branchName = await GitHub.getCurrentBranchName();\n pr = await GitHub.findOpenPullRequestByHeadRef(branchName);\n }\n\n if (pr) {\n logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Found existing pull request for branch: ${pr.html_url}`);\n } else {\n logger.info(isDryRun ? 'DRY RUN: No open pull request found, would start new release publishing process...' : 'No open pull request found, starting new release publishing process...');\n // 1. Prepare for release\n logger.verbose(isDryRun ? 'DRY RUN: Would prepare for release: switching from workspace to remote dependencies.' : 'Preparing for release: switching from workspace to remote dependencies.');\n\n logger.verbose(isDryRun ? 'DRY RUN: Would update dependencies to latest versions from registry' : 'Updating dependencies to latest versions from registry');\n const updatePatterns = runConfig.publish?.dependencyUpdatePatterns;\n if (updatePatterns && updatePatterns.length > 0) {\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Updating dependencies matching patterns: ${updatePatterns.join(', ')}`);\n const patternsArg = updatePatterns.join(' ');\n await runWithDryRunSupport(`pnpm update --latest ${patternsArg}`, isDryRun);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: No dependency update patterns specified, would update all dependencies' : 'No dependency update patterns specified, updating all dependencies');\n await runWithDryRunSupport('pnpm update --latest', isDryRun);\n }\n\n logger.verbose(isDryRun ? 'DRY RUN: Would stage changes for release commit' : 'Staging changes for release commit');\n await runWithDryRunSupport('git add package.json pnpm-lock.yaml', isDryRun);\n\n logger.info(isDryRun ? 'DRY RUN: Would run prepublishOnly script...' : 'Running prepublishOnly script...');\n await runWithDryRunSupport('pnpm run prepublishOnly', isDryRun);\n\n logger.verbose(isDryRun ? 'DRY RUN: Would check for staged changes...' : 'Checking for staged changes...');\n if (isDryRun) {\n logger.verbose('DRY RUN: Assuming staged changes exist for demo purposes');\n logger.verbose('DRY RUN: Would create commit...');\n await Commit.execute(runConfig);\n } else {\n if (await Diff.hasStagedChanges()) {\n logger.verbose('Staged changes found, creating commit...');\n await Commit.execute(runConfig);\n } else {\n logger.verbose('No changes to commit, skipping commit.');\n }\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would bump version...' : 'Bumping version...');\n await runWithDryRunSupport('pnpm version patch', isDryRun);\n\n logger.info(isDryRun ? 'DRY RUN: Would generate release notes...' : 'Generating release notes...');\n const releaseSummary = await Release.execute(runConfig);\n\n if (isDryRun) {\n logger.info('DRY RUN: Would write release notes to RELEASE_NOTES.md and RELEASE_TITLE.md in output directory');\n } else {\n const outputDirectory = runConfig.outputDirectory || DEFAULT_OUTPUT_DIRECTORY;\n await storage.ensureDirectory(outputDirectory);\n\n const releaseNotesPath = getOutputPath(outputDirectory, 'RELEASE_NOTES.md');\n const releaseTitlePath = getOutputPath(outputDirectory, 'RELEASE_TITLE.md');\n\n await storage.writeFile(releaseNotesPath, releaseSummary.body, 'utf-8');\n await storage.writeFile(releaseTitlePath, releaseSummary.title, 'utf-8');\n logger.info(`Release notes and title generated and saved to ${releaseNotesPath} and ${releaseTitlePath}.`);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would push to origin...' : 'Pushing to origin...');\n await runWithDryRunSupport('git push --follow-tags', isDryRun);\n\n logger.info(isDryRun ? 'DRY RUN: Would create pull request...' : 'Creating pull request...');\n if (isDryRun) {\n logger.info('DRY RUN: Would get commit title and create PR with GitHub API');\n pr = { number: 123, html_url: 'https://github.com/mock/repo/pull/123', labels: [] } as PullRequest;\n } else {\n const { stdout: commitTitle } = await run('git log -1 --pretty=%B');\n pr = await GitHub.createPullRequest(commitTitle, 'Automated release PR.', await GitHub.getCurrentBranchName());\n if (!pr) {\n throw new Error('Failed to create pull request.');\n }\n logger.info(`Pull request created: ${pr.html_url}`);\n }\n }\n\n logger.info(`${isDryRun ? 'DRY RUN: Would wait for' : 'Waiting for'} PR #${pr!.number} checks to complete...`);\n if (!isDryRun) {\n await GitHub.waitForPullRequestChecks(pr!.number);\n }\n\n const mergeMethod = runConfig.publish?.mergeMethod || 'squash';\n if (isDryRun) {\n logger.info(`DRY RUN: Would merge PR #${pr!.number} using ${mergeMethod} method`);\n } else {\n await GitHub.mergePullRequest(pr!.number, mergeMethod);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would checkout main branch...' : 'Checking out main branch...');\n await runWithDryRunSupport('git checkout main', isDryRun);\n await runWithDryRunSupport('git pull origin main', isDryRun);\n\n logger.info(isDryRun ? 'DRY RUN: Would create GitHub release...' : 'Creating GitHub release...');\n if (isDryRun) {\n logger.info('DRY RUN: Would read package.json version and create GitHub release');\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const tagName = `v${version}`;\n\n const outputDirectory = runConfig.outputDirectory || DEFAULT_OUTPUT_DIRECTORY;\n const releaseNotesPath = getOutputPath(outputDirectory, 'RELEASE_NOTES.md');\n const releaseTitlePath = getOutputPath(outputDirectory, 'RELEASE_TITLE.md');\n\n const releaseNotesContent = await storage.readFile(releaseNotesPath, 'utf-8');\n const releaseTitle = await storage.readFile(releaseTitlePath, 'utf-8');\n await GitHub.createRelease(tagName, releaseTitle, releaseNotesContent);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would create new release branch...' : 'Creating new release branch...');\n if (isDryRun) {\n logger.info('DRY RUN: Would create next release branch (e.g., release/1.0.1) and push to origin');\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const nextVersion = incrementPatchVersion(version);\n const newBranchName = `release/${nextVersion}`;\n await run(`git checkout -b ${newBranchName}`);\n await run(`git push -u origin ${newBranchName}`);\n logger.info(`Branch ${newBranchName} created and pushed to origin.`);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Preparation would be complete.' : 'Preparation complete.');\n } finally {\n // Restore linked packages (if enabled)\n const shouldLink = runConfig.publish?.linkWorkspacePackages !== false; // default to true\n if (shouldLink) {\n logger.verbose(isDryRun ? 'DRY RUN: Would restore linked packages...' : 'Restoring linked packages...');\n await Link.execute(runConfig);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: Would skip restore linked packages (disabled in config).' : 'Skipping restore linked packages (disabled in config).');\n }\n }\n}; "],"names":["scanNpmrcForEnvVars","storage","npmrcPath","path","join","process","cwd","envVars","exists","npmrcContent","readFile","envVarMatches","match","varName","replace","includes","push","error","validateEnvironmentVariables","requiredEnvVars","isDryRun","logger","getLogger","missingEnvVars","envVar","env","length","warn","Error","runPrechecks","runConfig","createStorage","log","info","dryRun","run","stdout","trim","currentBranch","GitHub","startsWith","packageJsonPath","packageJson","packageJsonContents","JSON","parse","scripts","prepublishOnly","verbose","coreRequiredEnvVars","publish","npmrcEnvVars","allRequiredEnvVars","Set","execute","shouldUnlink","unlinkWorkspacePackages","Unlink","pr","branchName","html_url","updatePatterns","dependencyUpdatePatterns","patternsArg","runWithDryRunSupport","Commit","Diff","releaseSummary","Release","outputDirectory","DEFAULT_OUTPUT_DIRECTORY","ensureDirectory","releaseNotesPath","getOutputPath","releaseTitlePath","writeFile","body","title","number","labels","commitTitle","mergeMethod","version","tagName","releaseNotesContent","releaseTitle","nextVersion","incrementPatchVersion","newBranchName","shouldLink","linkWorkspacePackages","Link"],"mappings":"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"}
1
+ {"version":3,"file":"publish.js","sources":["../../src/commands/publish.ts"],"sourcesContent":["import path from 'path';\nimport * as Commit from './commit';\nimport * as Diff from '../content/diff';\nimport * as Release from './release';\nimport * as Link from './link';\nimport * as Unlink from './unlink';\nimport { getLogger } from '../logging';\nimport { Config, PullRequest } from '../types';\nimport { run, runWithDryRunSupport } from '../util/child';\nimport * as GitHub from '../util/github';\nimport { create as createStorage } from '../util/storage';\nimport { incrementPatchVersion, getOutputPath } from '../util/general';\nimport { DEFAULT_OUTPUT_DIRECTORY } from '../constants';\n\nconst scanNpmrcForEnvVars = async (storage: any): Promise<string[]> => {\n const npmrcPath = path.join(process.cwd(), '.npmrc');\n const envVars: string[] = [];\n\n if (await storage.exists(npmrcPath)) {\n try {\n const npmrcContent = await storage.readFile(npmrcPath, 'utf-8');\n // Match environment variable patterns like ${VAR_NAME} or $VAR_NAME\n const envVarMatches = npmrcContent.match(/\\$\\{([^}]+)\\}|\\$([A-Z_][A-Z0-9_]*)/g);\n\n if (envVarMatches) {\n for (const match of envVarMatches) {\n // Extract variable name from ${VAR_NAME} or $VAR_NAME format\n const varName = match.replace(/\\$\\{|\\}|\\$/g, '');\n if (varName && !envVars.includes(varName)) {\n envVars.push(varName);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n // If we can't read .npmrc, that's okay - just continue\n }\n }\n\n return envVars;\n};\n\nconst validateEnvironmentVariables = (requiredEnvVars: string[], isDryRun: boolean): void => {\n const logger = getLogger();\n const missingEnvVars: string[] = [];\n\n for (const envVar of requiredEnvVars) {\n if (!process.env[envVar]) {\n missingEnvVars.push(envVar);\n }\n }\n\n if (missingEnvVars.length > 0) {\n if (isDryRun) {\n logger.warn(`DRY RUN: Missing required environment variables: ${missingEnvVars.join(', ')}`);\n } else {\n logger.error(`Missing required environment variables: ${missingEnvVars.join(', ')}`);\n throw new Error(`Missing required environment variables: ${missingEnvVars.join(', ')}. Please set these environment variables before running publish.`);\n }\n }\n};\n\nconst runPrechecks = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n const isDryRun = runConfig.dryRun || false;\n\n logger.info(isDryRun ? 'DRY RUN: Running prechecks...' : 'Running prechecks...');\n\n // Check if we're in a git repository\n try {\n if (isDryRun) {\n logger.info('DRY RUN: Would check git repository with: git rev-parse --git-dir');\n } else {\n await run('git rev-parse --git-dir');\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Not in a git repository. Please run this command from within a git repository.');\n }\n }\n\n // Check for uncommitted changes\n logger.info(isDryRun ? 'DRY RUN: Would check for uncommitted changes...' : 'Checking for uncommitted changes...');\n try {\n if (isDryRun) {\n logger.info('DRY RUN: Would check git status with: git status --porcelain');\n } else {\n const { stdout } = await run('git status --porcelain');\n if (stdout.trim()) {\n throw new Error('Working directory has uncommitted changes. Please commit or stash your changes before running publish.');\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Failed to check git status. Please ensure you are in a valid git repository.');\n }\n }\n\n // Check if we're on a release branch\n logger.info(isDryRun ? 'DRY RUN: Would check current branch...' : 'Checking current branch...');\n if (isDryRun) {\n logger.info('DRY RUN: Would verify current branch is a release branch (starts with \"release/\")');\n } else {\n const currentBranch = await GitHub.getCurrentBranchName();\n if (!currentBranch.startsWith('release/')) {\n throw new Error(`Current branch '${currentBranch}' is not a release branch. Please switch to a release branch (e.g., release/1.0.0) before running publish.`);\n }\n }\n\n // Check if prepublishOnly script exists in package.json\n logger.info(isDryRun ? 'DRY RUN: Would check for prepublishOnly script...' : 'Checking for prepublishOnly script...');\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n\n if (!await storage.exists(packageJsonPath)) {\n if (!isDryRun) {\n throw new Error('package.json not found in current directory.');\n } else {\n logger.warn('DRY RUN: package.json not found in current directory.');\n }\n } else {\n let packageJson;\n try {\n const packageJsonContents = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContents);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Failed to parse package.json. Please ensure it contains valid JSON.');\n } else {\n logger.warn('DRY RUN: Failed to parse package.json. Please ensure it contains valid JSON.');\n }\n }\n\n if (packageJson && !packageJson.scripts?.prepublishOnly) {\n if (!isDryRun) {\n throw new Error('prepublishOnly script is required in package.json but was not found. Please add a prepublishOnly script that runs your pre-flight checks (e.g., clean, lint, build, test).');\n } else {\n logger.warn('DRY RUN: prepublishOnly script is required in package.json but was not found.');\n }\n }\n }\n\n // Check required environment variables\n logger.verbose(isDryRun ? 'DRY RUN: Would check required environment variables...' : 'Checking required environment variables...');\n const coreRequiredEnvVars = runConfig.publish?.requiredEnvVars || [];\n const npmrcEnvVars = isDryRun ? [] : await scanNpmrcForEnvVars(storage); // Skip .npmrc scan in dry run\n const allRequiredEnvVars = [...new Set([...coreRequiredEnvVars, ...npmrcEnvVars])];\n\n if (allRequiredEnvVars.length > 0) {\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Required environment variables: ${allRequiredEnvVars.join(', ')}`);\n validateEnvironmentVariables(allRequiredEnvVars, isDryRun);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: No required environment variables specified.' : 'No required environment variables specified.');\n }\n\n logger.info(isDryRun ? 'DRY RUN: All prechecks would pass.' : 'All prechecks passed.');\n};\n\nexport const execute = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n const isDryRun = runConfig.dryRun || false;\n\n // Run prechecks before starting any work\n await runPrechecks(runConfig);\n\n logger.info(isDryRun ? 'DRY RUN: Would start release process...' : 'Starting release process...');\n\n try {\n // Unlink all workspace packages before starting (if enabled)\n const shouldUnlink = runConfig.publish?.unlinkWorkspacePackages !== false; // default to true\n if (shouldUnlink) {\n logger.verbose(isDryRun ? 'DRY RUN: Would unlink workspace packages...' : 'Unlinking workspace packages...');\n await Unlink.execute(runConfig);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: Would skip unlink workspace packages (disabled in config).' : 'Skipping unlink workspace packages (disabled in config).');\n }\n\n let pr: PullRequest | null = null;\n\n if (isDryRun) {\n logger.info('DRY RUN: Would check for existing pull request');\n logger.info('DRY RUN: Assuming no existing PR found for demo purposes');\n } else {\n const branchName = await GitHub.getCurrentBranchName();\n pr = await GitHub.findOpenPullRequestByHeadRef(branchName);\n }\n\n if (pr) {\n logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Found existing pull request for branch: ${pr.html_url}`);\n } else {\n logger.info(isDryRun ? 'DRY RUN: No open pull request found, would start new release publishing process...' : 'No open pull request found, starting new release publishing process...');\n // 1. Prepare for release\n logger.verbose(isDryRun ? 'DRY RUN: Would prepare for release: switching from workspace to remote dependencies.' : 'Preparing for release: switching from workspace to remote dependencies.');\n\n logger.verbose(isDryRun ? 'DRY RUN: Would update dependencies to latest versions from registry' : 'Updating dependencies to latest versions from registry');\n const updatePatterns = runConfig.publish?.dependencyUpdatePatterns;\n if (updatePatterns && updatePatterns.length > 0) {\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Updating dependencies matching patterns: ${updatePatterns.join(', ')}`);\n const patternsArg = updatePatterns.join(' ');\n await runWithDryRunSupport(`pnpm update --latest ${patternsArg}`, isDryRun);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: No dependency update patterns specified, would update all dependencies' : 'No dependency update patterns specified, updating all dependencies');\n await runWithDryRunSupport('pnpm update --latest', isDryRun);\n }\n\n logger.verbose(isDryRun ? 'DRY RUN: Would stage changes for release commit' : 'Staging changes for release commit');\n await runWithDryRunSupport('git add package.json pnpm-lock.yaml', isDryRun);\n\n logger.info(isDryRun ? 'DRY RUN: Would run prepublishOnly script...' : 'Running prepublishOnly script...');\n await runWithDryRunSupport('pnpm run prepublishOnly', isDryRun);\n\n logger.verbose(isDryRun ? 'DRY RUN: Would check for staged changes...' : 'Checking for staged changes...');\n if (isDryRun) {\n logger.verbose('DRY RUN: Assuming staged changes exist for demo purposes');\n logger.verbose('DRY RUN: Would create commit...');\n await Commit.execute(runConfig);\n } else {\n if (await Diff.hasStagedChanges()) {\n logger.verbose('Staged changes found, creating commit...');\n await Commit.execute(runConfig);\n } else {\n logger.verbose('No changes to commit, skipping commit.');\n }\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would bump version...' : 'Bumping version...');\n await runWithDryRunSupport('pnpm version patch', isDryRun);\n\n logger.info(isDryRun ? 'DRY RUN: Would generate release notes...' : 'Generating release notes...');\n const releaseSummary = await Release.execute(runConfig);\n\n if (isDryRun) {\n logger.info('DRY RUN: Would write release notes to RELEASE_NOTES.md and RELEASE_TITLE.md in output directory');\n } else {\n const outputDirectory = runConfig.outputDirectory || DEFAULT_OUTPUT_DIRECTORY;\n await storage.ensureDirectory(outputDirectory);\n\n const releaseNotesPath = getOutputPath(outputDirectory, 'RELEASE_NOTES.md');\n const releaseTitlePath = getOutputPath(outputDirectory, 'RELEASE_TITLE.md');\n\n await storage.writeFile(releaseNotesPath, releaseSummary.body, 'utf-8');\n await storage.writeFile(releaseTitlePath, releaseSummary.title, 'utf-8');\n logger.info(`Release notes and title generated and saved to ${releaseNotesPath} and ${releaseTitlePath}.`);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would push to origin...' : 'Pushing to origin...');\n await runWithDryRunSupport('git push --follow-tags', isDryRun);\n\n logger.info(isDryRun ? 'DRY RUN: Would create pull request...' : 'Creating pull request...');\n if (isDryRun) {\n logger.info('DRY RUN: Would get commit title and create PR with GitHub API');\n pr = { number: 123, html_url: 'https://github.com/mock/repo/pull/123', labels: [] } as PullRequest;\n } else {\n const { stdout: commitTitle } = await run('git log -1 --pretty=%B');\n pr = await GitHub.createPullRequest(commitTitle, 'Automated release PR.', await GitHub.getCurrentBranchName());\n if (!pr) {\n throw new Error('Failed to create pull request.');\n }\n logger.info(`Pull request created: ${pr.html_url}`);\n }\n }\n\n logger.info(`${isDryRun ? 'DRY RUN: Would wait for' : 'Waiting for'} PR #${pr!.number} checks to complete...`);\n if (!isDryRun) {\n // Configure timeout and user confirmation behavior\n const timeout = runConfig.publish?.checksTimeout || 300000; // 5 minutes default\n const senditMode = runConfig.publish?.sendit || false;\n // sendit flag overrides skipUserConfirmation - if sendit is true, skip confirmation\n const skipUserConfirmation = senditMode || runConfig.publish?.skipUserConfirmation || false;\n\n await GitHub.waitForPullRequestChecks(pr!.number, {\n timeout,\n skipUserConfirmation\n });\n }\n\n const mergeMethod = runConfig.publish?.mergeMethod || 'squash';\n if (isDryRun) {\n logger.info(`DRY RUN: Would merge PR #${pr!.number} using ${mergeMethod} method`);\n } else {\n await GitHub.mergePullRequest(pr!.number, mergeMethod);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would checkout main branch...' : 'Checking out main branch...');\n await runWithDryRunSupport('git checkout main', isDryRun);\n await runWithDryRunSupport('git pull origin main', isDryRun);\n\n logger.info(isDryRun ? 'DRY RUN: Would create GitHub release...' : 'Creating GitHub release...');\n if (isDryRun) {\n logger.info('DRY RUN: Would read package.json version and create GitHub release');\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const tagName = `v${version}`;\n\n const outputDirectory = runConfig.outputDirectory || DEFAULT_OUTPUT_DIRECTORY;\n const releaseNotesPath = getOutputPath(outputDirectory, 'RELEASE_NOTES.md');\n const releaseTitlePath = getOutputPath(outputDirectory, 'RELEASE_TITLE.md');\n\n const releaseNotesContent = await storage.readFile(releaseNotesPath, 'utf-8');\n const releaseTitle = await storage.readFile(releaseTitlePath, 'utf-8');\n await GitHub.createRelease(tagName, releaseTitle, releaseNotesContent);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would create new release branch...' : 'Creating new release branch...');\n if (isDryRun) {\n logger.info('DRY RUN: Would create next release branch (e.g., release/1.0.1) and push to origin');\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const nextVersion = incrementPatchVersion(version);\n const newBranchName = `release/${nextVersion}`;\n await run(`git checkout -b ${newBranchName}`);\n await run(`git push -u origin ${newBranchName}`);\n logger.info(`Branch ${newBranchName} created and pushed to origin.`);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Preparation would be complete.' : 'Preparation complete.');\n } finally {\n // Restore linked packages (if enabled)\n const shouldLink = runConfig.publish?.linkWorkspacePackages !== false; // default to true\n if (shouldLink) {\n logger.verbose(isDryRun ? 'DRY RUN: Would restore linked packages...' : 'Restoring linked packages...');\n await Link.execute(runConfig);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: Would skip restore linked packages (disabled in config).' : 'Skipping restore linked packages (disabled in config).');\n }\n }\n}; "],"names":["scanNpmrcForEnvVars","storage","npmrcPath","path","join","process","cwd","envVars","exists","npmrcContent","readFile","envVarMatches","match","varName","replace","includes","push","error","validateEnvironmentVariables","requiredEnvVars","isDryRun","logger","getLogger","missingEnvVars","envVar","env","length","warn","Error","runPrechecks","runConfig","createStorage","log","info","dryRun","run","stdout","trim","currentBranch","GitHub","startsWith","packageJsonPath","packageJson","packageJsonContents","JSON","parse","scripts","prepublishOnly","verbose","coreRequiredEnvVars","publish","npmrcEnvVars","allRequiredEnvVars","Set","execute","shouldUnlink","unlinkWorkspacePackages","Unlink","pr","branchName","html_url","updatePatterns","dependencyUpdatePatterns","patternsArg","runWithDryRunSupport","Commit","Diff","releaseSummary","Release","outputDirectory","DEFAULT_OUTPUT_DIRECTORY","ensureDirectory","releaseNotesPath","getOutputPath","releaseTitlePath","writeFile","body","title","number","labels","commitTitle","timeout","checksTimeout","senditMode","sendit","skipUserConfirmation","mergeMethod","version","tagName","releaseNotesContent","releaseTitle","nextVersion","incrementPatchVersion","newBranchName","shouldLink","linkWorkspacePackages","Link"],"mappings":"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"}
package/dist/constants.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import os from 'os';
2
2
  import path from 'path';
3
3
 
4
- const VERSION = '0.0.25 (HEAD/56aff1e T:v0.0.25 2025-07-05 14:58:23 -0700) linux x64 v22.16.0';
4
+ const VERSION = '0.0.26 (HEAD/e892add T:v0.0.26 2025-07-06 11:37:42 -0700) linux x64 v22.16.0';
5
5
  const PROGRAM_NAME = 'kodrdriv';
6
6
  const DEFAULT_OVERRIDES = false;
7
7
  const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS = 'YYYY-MM-DD-HHmmss.SSS';
@@ -141,7 +141,8 @@ const KODRDRIV_DEFAULTS = {
141
141
  'OPENAI_API_KEY'
142
142
  ],
143
143
  linkWorkspacePackages: true,
144
- unlinkWorkspacePackages: true
144
+ unlinkWorkspacePackages: true,
145
+ sendit: DEFAULT_SENDIT_MODE
145
146
  },
146
147
  link: {
147
148
  scopeRoots: {},
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["import { MergeMethod } from './types';\nimport os from 'os';\nimport path from 'path';\n\nexport const VERSION = '__VERSION__ (__GIT_BRANCH__/__GIT_COMMIT__ __GIT_TAGS__ __GIT_COMMIT_DATE__) __SYSTEM_INFO__';\nexport const PROGRAM_NAME = 'kodrdriv';\nexport const DEFAULT_CHARACTER_ENCODING = 'utf-8';\nexport const DEFAULT_BINARY_TO_TEXT_ENCODING = 'base64';\nexport const DEFAULT_DIFF = true;\nexport const DEFAULT_LOG = false;\nexport const DEFAULT_OVERRIDES = false;\nexport const DATE_FORMAT_MONTH_DAY = 'MM-DD';\nexport const DATE_FORMAT_YEAR = 'YYYY';\nexport const DATE_FORMAT_YEAR_MONTH = 'YYYY-MM';\nexport const DATE_FORMAT_YEAR_MONTH_DAY = 'YYYY-MM-DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_SLASH = 'YYYY/MM/DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES = 'YYYY-MM-DD-HHmm';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS = 'YYYY-MM-DD-HHmmss';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS = 'YYYY-MM-DD-HHmmss.SSS';\nexport const DATE_FORMAT_SHORT_TIMESTAMP = 'YYMMdd-HHmm';\nexport const DATE_FORMAT_MONTH = 'MM';\nexport const DATE_FORMAT_DAY = 'DD';\nexport const DATE_FORMAT_HOURS = 'HHmm';\nexport const DATE_FORMAT_MINUTES = 'mm';\nexport const DATE_FORMAT_SECONDS = 'ss';\nexport const DATE_FORMAT_MILLISECONDS = 'SSS';\nexport const DEFAULT_VERBOSE = false;\nexport const DEFAULT_DRY_RUN = false;\nexport const DEFAULT_DEBUG = false;\nexport const DEFAULT_MODEL = 'gpt-4o-mini';\nexport const DEFAULT_MODEL_STRONG = 'gpt-4o';\nexport const DEFAULT_OUTPUT_DIRECTORY = 'output/kodrdriv';\n\nexport const DEFAULT_CONTEXT_DIRECTORIES: string[] = [];\n\nexport const DEFAULT_CONFIG_DIR = '.kodrdriv';\nexport const DEFAULT_PREFERENCES_DIRECTORY = path.join(os.homedir(), '.kodrdriv');\n\nexport const DEFAULT_FROM_COMMIT_ALIAS = 'origin/HEAD';\nexport const DEFAULT_TO_COMMIT_ALIAS = 'HEAD';\n\nexport const DEFAULT_ADD = false;\nexport const DEFAULT_CACHED = false;\nexport const DEFAULT_SENDIT_MODE = false;\nexport const DEFAULT_MESSAGE_LIMIT = 50;\n\nexport const DEFAULT_MERGE_METHOD: MergeMethod = 'squash';\n\nexport const DEFAULT_EXCLUDED_PATTERNS = [\n 'node_modules', 'pnpm-lock.yaml', 'package-lock.json', 'yarn.lock', 'bun.lockb',\n 'composer.lock', 'Cargo.lock', 'Gemfile.lock',\n 'dist', 'build', 'out', '.next', '.nuxt', 'coverage',\n '.vscode', '.idea', '.DS_Store', '.git', '.gitignore',\n 'logs', 'tmp', '.cache', '*.log', '.env', '.env.*',\n '*.pem', '*.crt', '*.key', '*.sqlite', '*.db',\n '*.zip', '*.tar', '*.gz', '*.exe', '*.bin'\n];\n\nexport const COMMAND_COMMIT = 'commit';\nexport const COMMAND_AUDIO_COMMIT = 'audio-commit';\nexport const COMMAND_SELECT_AUDIO = 'select-audio';\nexport const COMMAND_RELEASE = 'release';\nexport const COMMAND_REVIEW = 'review';\nexport const COMMAND_AUDIO_REVIEW = 'audio-review';\nexport const COMMAND_PUBLISH = 'publish';\nexport const COMMAND_LINK = 'link';\nexport const COMMAND_UNLINK = 'unlink';\nexport const COMMAND_CLEAN = 'clean';\nexport const COMMAND_CHECK_CONFIG = 'check-config';\nexport const COMMAND_INIT_CONFIG = 'init-config';\n\nexport const ALLOWED_COMMANDS = [\n COMMAND_COMMIT,\n COMMAND_AUDIO_COMMIT,\n COMMAND_SELECT_AUDIO,\n COMMAND_RELEASE,\n COMMAND_REVIEW,\n COMMAND_AUDIO_REVIEW,\n COMMAND_PUBLISH,\n COMMAND_LINK,\n COMMAND_UNLINK,\n COMMAND_CLEAN\n];\n\nexport const DEFAULT_COMMAND = COMMAND_COMMIT;\n\nexport const DEFAULT_INSTRUCTIONS_DIR = `instructions`;\n\nexport const DEFAULT_PERSONA_DIR = `personas`;\n\nexport const DEFAULT_INSTRUCTIONS_COMMIT_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/commit.md`;\nexport const DEFAULT_INSTRUCTIONS_RELEASE_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/release.md`;\nexport const DEFAULT_INSTRUCTIONS_REVIEW_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/review.md`;\n\nexport const DEFAULT_PERSONA_RELEASER_FILE = `${DEFAULT_PERSONA_DIR}/releaser.md`;\nexport const DEFAULT_PERSONA_YOU_FILE = `${DEFAULT_PERSONA_DIR}/you.md`;\n\n// Default instructions for each persona\nexport const DEFAULT_INSTRUCTIONS_MAP = {\n [COMMAND_COMMIT]: DEFAULT_INSTRUCTIONS_COMMIT_FILE,\n [COMMAND_AUDIO_COMMIT]: DEFAULT_INSTRUCTIONS_COMMIT_FILE, // Reuse commit instructions\n [COMMAND_RELEASE]: DEFAULT_INSTRUCTIONS_RELEASE_FILE,\n [COMMAND_REVIEW]: DEFAULT_INSTRUCTIONS_REVIEW_FILE, // Reuse audio-review instructions for now\n [COMMAND_AUDIO_REVIEW]: DEFAULT_INSTRUCTIONS_REVIEW_FILE,\n};\n\n// Default personas for each command\nexport const DEFAULT_PERSONA_MAP = {\n [COMMAND_COMMIT]: DEFAULT_PERSONA_YOU_FILE,\n [COMMAND_AUDIO_COMMIT]: DEFAULT_PERSONA_YOU_FILE, // Use You persona\n [COMMAND_RELEASE]: DEFAULT_PERSONA_RELEASER_FILE,\n [COMMAND_REVIEW]: DEFAULT_PERSONA_YOU_FILE, // Use You persona\n [COMMAND_AUDIO_REVIEW]: DEFAULT_PERSONA_YOU_FILE,\n};\n\n// Used by child process to create paths\nexport const DEFAULT_PATH_SEPARATOR = '/';\n\n// Used by util/general for file filtering\nexport const DEFAULT_IGNORE_PATTERNS = [\n 'node_modules/**',\n '**/*.log',\n '.git/**',\n 'dist/**',\n 'build/**',\n 'coverage/**',\n '.DS_Store',\n '*.tmp',\n '*.cache',\n];\n\n// Used by util/storage for directory names\nexport const DEFAULT_DIRECTORY_PREFIX = '.kodrdriv';\n\n// Used by other commands but not exposed in CLI\nexport const INTERNAL_DEFAULT_OUTPUT_FILE = 'output.txt';\n\nexport const INTERNAL_DATETIME_FORMAT = 'YYYY-MM-DD_HH-mm-ss';\n\n// Define defaults in one place\nexport const KODRDRIV_DEFAULTS = {\n dryRun: DEFAULT_DRY_RUN,\n verbose: DEFAULT_VERBOSE,\n debug: DEFAULT_DEBUG,\n overrides: DEFAULT_OVERRIDES,\n model: DEFAULT_MODEL,\n contextDirectories: DEFAULT_CONTEXT_DIRECTORIES,\n commandName: DEFAULT_COMMAND,\n configDirectory: DEFAULT_CONFIG_DIR,\n outputDirectory: DEFAULT_OUTPUT_DIRECTORY,\n preferencesDirectory: DEFAULT_PREFERENCES_DIRECTORY,\n commit: {\n add: DEFAULT_ADD,\n cached: DEFAULT_CACHED,\n sendit: DEFAULT_SENDIT_MODE,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n release: {\n from: DEFAULT_FROM_COMMIT_ALIAS,\n to: DEFAULT_TO_COMMIT_ALIAS,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n audioCommit: {\n maxRecordingTime: 300, // 5 minutes default\n audioDevice: undefined, // Auto-detect by default\n },\n review: {\n includeCommitHistory: true,\n includeRecentDiffs: true,\n includeReleaseNotes: false,\n includeGithubIssues: true,\n commitHistoryLimit: 10,\n diffHistoryLimit: 5,\n releaseNotesLimit: 3,\n githubIssuesLimit: 20,\n sendit: DEFAULT_SENDIT_MODE,\n },\n audioReview: {\n includeCommitHistory: true,\n includeRecentDiffs: true,\n includeReleaseNotes: false,\n includeGithubIssues: true,\n commitHistoryLimit: 10,\n diffHistoryLimit: 5,\n releaseNotesLimit: 3,\n githubIssuesLimit: 20,\n sendit: DEFAULT_SENDIT_MODE,\n maxRecordingTime: 300, // 5 minutes default\n audioDevice: undefined, // Auto-detect by default\n directory: undefined, // No default directory\n },\n publish: {\n mergeMethod: DEFAULT_MERGE_METHOD,\n requiredEnvVars: ['GITHUB_TOKEN', 'OPENAI_API_KEY'],\n linkWorkspacePackages: true,\n unlinkWorkspacePackages: true,\n },\n link: {\n scopeRoots: {},\n workspaceFile: 'pnpm-workspace.yaml',\n dryRun: false,\n },\n excludedPatterns: DEFAULT_EXCLUDED_PATTERNS,\n};"],"names":["VERSION","PROGRAM_NAME","DEFAULT_OVERRIDES","DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS","DEFAULT_VERBOSE","DEFAULT_DRY_RUN","DEFAULT_DEBUG","DEFAULT_MODEL","DEFAULT_OUTPUT_DIRECTORY","DEFAULT_CONTEXT_DIRECTORIES","DEFAULT_CONFIG_DIR","DEFAULT_PREFERENCES_DIRECTORY","path","join","os","homedir","DEFAULT_FROM_COMMIT_ALIAS","DEFAULT_TO_COMMIT_ALIAS","DEFAULT_ADD","DEFAULT_CACHED","DEFAULT_SENDIT_MODE","DEFAULT_MESSAGE_LIMIT","DEFAULT_MERGE_METHOD","DEFAULT_EXCLUDED_PATTERNS","COMMAND_COMMIT","COMMAND_AUDIO_COMMIT","COMMAND_SELECT_AUDIO","COMMAND_RELEASE","COMMAND_REVIEW","COMMAND_AUDIO_REVIEW","COMMAND_PUBLISH","COMMAND_LINK","COMMAND_UNLINK","COMMAND_CLEAN","COMMAND_CHECK_CONFIG","COMMAND_INIT_CONFIG","ALLOWED_COMMANDS","DEFAULT_COMMAND","KODRDRIV_DEFAULTS","dryRun","verbose","debug","overrides","model","contextDirectories","commandName","configDirectory","outputDirectory","preferencesDirectory","commit","add","cached","sendit","messageLimit","release","from","to","audioCommit","maxRecordingTime","audioDevice","undefined","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","audioReview","directory","publish","mergeMethod","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","link","scopeRoots","workspaceFile","excludedPatterns"],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["import { MergeMethod } from './types';\nimport os from 'os';\nimport path from 'path';\n\nexport const VERSION = '__VERSION__ (__GIT_BRANCH__/__GIT_COMMIT__ __GIT_TAGS__ __GIT_COMMIT_DATE__) __SYSTEM_INFO__';\nexport const PROGRAM_NAME = 'kodrdriv';\nexport const DEFAULT_CHARACTER_ENCODING = 'utf-8';\nexport const DEFAULT_BINARY_TO_TEXT_ENCODING = 'base64';\nexport const DEFAULT_DIFF = true;\nexport const DEFAULT_LOG = false;\nexport const DEFAULT_OVERRIDES = false;\nexport const DATE_FORMAT_MONTH_DAY = 'MM-DD';\nexport const DATE_FORMAT_YEAR = 'YYYY';\nexport const DATE_FORMAT_YEAR_MONTH = 'YYYY-MM';\nexport const DATE_FORMAT_YEAR_MONTH_DAY = 'YYYY-MM-DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_SLASH = 'YYYY/MM/DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES = 'YYYY-MM-DD-HHmm';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS = 'YYYY-MM-DD-HHmmss';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS = 'YYYY-MM-DD-HHmmss.SSS';\nexport const DATE_FORMAT_SHORT_TIMESTAMP = 'YYMMdd-HHmm';\nexport const DATE_FORMAT_MONTH = 'MM';\nexport const DATE_FORMAT_DAY = 'DD';\nexport const DATE_FORMAT_HOURS = 'HHmm';\nexport const DATE_FORMAT_MINUTES = 'mm';\nexport const DATE_FORMAT_SECONDS = 'ss';\nexport const DATE_FORMAT_MILLISECONDS = 'SSS';\nexport const DEFAULT_VERBOSE = false;\nexport const DEFAULT_DRY_RUN = false;\nexport const DEFAULT_DEBUG = false;\nexport const DEFAULT_MODEL = 'gpt-4o-mini';\nexport const DEFAULT_MODEL_STRONG = 'gpt-4o';\nexport const DEFAULT_OUTPUT_DIRECTORY = 'output/kodrdriv';\n\nexport const DEFAULT_CONTEXT_DIRECTORIES: string[] = [];\n\nexport const DEFAULT_CONFIG_DIR = '.kodrdriv';\nexport const DEFAULT_PREFERENCES_DIRECTORY = path.join(os.homedir(), '.kodrdriv');\n\nexport const DEFAULT_FROM_COMMIT_ALIAS = 'origin/HEAD';\nexport const DEFAULT_TO_COMMIT_ALIAS = 'HEAD';\n\nexport const DEFAULT_ADD = false;\nexport const DEFAULT_CACHED = false;\nexport const DEFAULT_SENDIT_MODE = false;\nexport const DEFAULT_MESSAGE_LIMIT = 50;\n\nexport const DEFAULT_MERGE_METHOD: MergeMethod = 'squash';\n\nexport const DEFAULT_EXCLUDED_PATTERNS = [\n 'node_modules', 'pnpm-lock.yaml', 'package-lock.json', 'yarn.lock', 'bun.lockb',\n 'composer.lock', 'Cargo.lock', 'Gemfile.lock',\n 'dist', 'build', 'out', '.next', '.nuxt', 'coverage',\n '.vscode', '.idea', '.DS_Store', '.git', '.gitignore',\n 'logs', 'tmp', '.cache', '*.log', '.env', '.env.*',\n '*.pem', '*.crt', '*.key', '*.sqlite', '*.db',\n '*.zip', '*.tar', '*.gz', '*.exe', '*.bin'\n];\n\nexport const COMMAND_COMMIT = 'commit';\nexport const COMMAND_AUDIO_COMMIT = 'audio-commit';\nexport const COMMAND_SELECT_AUDIO = 'select-audio';\nexport const COMMAND_RELEASE = 'release';\nexport const COMMAND_REVIEW = 'review';\nexport const COMMAND_AUDIO_REVIEW = 'audio-review';\nexport const COMMAND_PUBLISH = 'publish';\nexport const COMMAND_LINK = 'link';\nexport const COMMAND_UNLINK = 'unlink';\nexport const COMMAND_CLEAN = 'clean';\nexport const COMMAND_CHECK_CONFIG = 'check-config';\nexport const COMMAND_INIT_CONFIG = 'init-config';\n\nexport const ALLOWED_COMMANDS = [\n COMMAND_COMMIT,\n COMMAND_AUDIO_COMMIT,\n COMMAND_SELECT_AUDIO,\n COMMAND_RELEASE,\n COMMAND_REVIEW,\n COMMAND_AUDIO_REVIEW,\n COMMAND_PUBLISH,\n COMMAND_LINK,\n COMMAND_UNLINK,\n COMMAND_CLEAN\n];\n\nexport const DEFAULT_COMMAND = COMMAND_COMMIT;\n\nexport const DEFAULT_INSTRUCTIONS_DIR = `instructions`;\n\nexport const DEFAULT_PERSONA_DIR = `personas`;\n\nexport const DEFAULT_INSTRUCTIONS_COMMIT_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/commit.md`;\nexport const DEFAULT_INSTRUCTIONS_RELEASE_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/release.md`;\nexport const DEFAULT_INSTRUCTIONS_REVIEW_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/review.md`;\n\nexport const DEFAULT_PERSONA_RELEASER_FILE = `${DEFAULT_PERSONA_DIR}/releaser.md`;\nexport const DEFAULT_PERSONA_YOU_FILE = `${DEFAULT_PERSONA_DIR}/you.md`;\n\n// Default instructions for each persona\nexport const DEFAULT_INSTRUCTIONS_MAP = {\n [COMMAND_COMMIT]: DEFAULT_INSTRUCTIONS_COMMIT_FILE,\n [COMMAND_AUDIO_COMMIT]: DEFAULT_INSTRUCTIONS_COMMIT_FILE, // Reuse commit instructions\n [COMMAND_RELEASE]: DEFAULT_INSTRUCTIONS_RELEASE_FILE,\n [COMMAND_REVIEW]: DEFAULT_INSTRUCTIONS_REVIEW_FILE, // Reuse audio-review instructions for now\n [COMMAND_AUDIO_REVIEW]: DEFAULT_INSTRUCTIONS_REVIEW_FILE,\n};\n\n// Default personas for each command\nexport const DEFAULT_PERSONA_MAP = {\n [COMMAND_COMMIT]: DEFAULT_PERSONA_YOU_FILE,\n [COMMAND_AUDIO_COMMIT]: DEFAULT_PERSONA_YOU_FILE, // Use You persona\n [COMMAND_RELEASE]: DEFAULT_PERSONA_RELEASER_FILE,\n [COMMAND_REVIEW]: DEFAULT_PERSONA_YOU_FILE, // Use You persona\n [COMMAND_AUDIO_REVIEW]: DEFAULT_PERSONA_YOU_FILE,\n};\n\n// Used by child process to create paths\nexport const DEFAULT_PATH_SEPARATOR = '/';\n\n// Used by util/general for file filtering\nexport const DEFAULT_IGNORE_PATTERNS = [\n 'node_modules/**',\n '**/*.log',\n '.git/**',\n 'dist/**',\n 'build/**',\n 'coverage/**',\n '.DS_Store',\n '*.tmp',\n '*.cache',\n];\n\n// Used by util/storage for directory names\nexport const DEFAULT_DIRECTORY_PREFIX = '.kodrdriv';\n\n// Used by other commands but not exposed in CLI\nexport const INTERNAL_DEFAULT_OUTPUT_FILE = 'output.txt';\n\nexport const INTERNAL_DATETIME_FORMAT = 'YYYY-MM-DD_HH-mm-ss';\n\n// Define defaults in one place\nexport const KODRDRIV_DEFAULTS = {\n dryRun: DEFAULT_DRY_RUN,\n verbose: DEFAULT_VERBOSE,\n debug: DEFAULT_DEBUG,\n overrides: DEFAULT_OVERRIDES,\n model: DEFAULT_MODEL,\n contextDirectories: DEFAULT_CONTEXT_DIRECTORIES,\n commandName: DEFAULT_COMMAND,\n configDirectory: DEFAULT_CONFIG_DIR,\n outputDirectory: DEFAULT_OUTPUT_DIRECTORY,\n preferencesDirectory: DEFAULT_PREFERENCES_DIRECTORY,\n commit: {\n add: DEFAULT_ADD,\n cached: DEFAULT_CACHED,\n sendit: DEFAULT_SENDIT_MODE,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n release: {\n from: DEFAULT_FROM_COMMIT_ALIAS,\n to: DEFAULT_TO_COMMIT_ALIAS,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n audioCommit: {\n maxRecordingTime: 300, // 5 minutes default\n audioDevice: undefined, // Auto-detect by default\n },\n review: {\n includeCommitHistory: true,\n includeRecentDiffs: true,\n includeReleaseNotes: false,\n includeGithubIssues: true,\n commitHistoryLimit: 10,\n diffHistoryLimit: 5,\n releaseNotesLimit: 3,\n githubIssuesLimit: 20,\n sendit: DEFAULT_SENDIT_MODE,\n },\n audioReview: {\n includeCommitHistory: true,\n includeRecentDiffs: true,\n includeReleaseNotes: false,\n includeGithubIssues: true,\n commitHistoryLimit: 10,\n diffHistoryLimit: 5,\n releaseNotesLimit: 3,\n githubIssuesLimit: 20,\n sendit: DEFAULT_SENDIT_MODE,\n maxRecordingTime: 300, // 5 minutes default\n audioDevice: undefined, // Auto-detect by default\n directory: undefined, // No default directory\n },\n publish: {\n mergeMethod: DEFAULT_MERGE_METHOD,\n requiredEnvVars: ['GITHUB_TOKEN', 'OPENAI_API_KEY'],\n linkWorkspacePackages: true,\n unlinkWorkspacePackages: true,\n sendit: DEFAULT_SENDIT_MODE,\n },\n link: {\n scopeRoots: {},\n workspaceFile: 'pnpm-workspace.yaml',\n dryRun: false,\n },\n excludedPatterns: DEFAULT_EXCLUDED_PATTERNS,\n};"],"names":["VERSION","PROGRAM_NAME","DEFAULT_OVERRIDES","DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS","DEFAULT_VERBOSE","DEFAULT_DRY_RUN","DEFAULT_DEBUG","DEFAULT_MODEL","DEFAULT_OUTPUT_DIRECTORY","DEFAULT_CONTEXT_DIRECTORIES","DEFAULT_CONFIG_DIR","DEFAULT_PREFERENCES_DIRECTORY","path","join","os","homedir","DEFAULT_FROM_COMMIT_ALIAS","DEFAULT_TO_COMMIT_ALIAS","DEFAULT_ADD","DEFAULT_CACHED","DEFAULT_SENDIT_MODE","DEFAULT_MESSAGE_LIMIT","DEFAULT_MERGE_METHOD","DEFAULT_EXCLUDED_PATTERNS","COMMAND_COMMIT","COMMAND_AUDIO_COMMIT","COMMAND_SELECT_AUDIO","COMMAND_RELEASE","COMMAND_REVIEW","COMMAND_AUDIO_REVIEW","COMMAND_PUBLISH","COMMAND_LINK","COMMAND_UNLINK","COMMAND_CLEAN","COMMAND_CHECK_CONFIG","COMMAND_INIT_CONFIG","ALLOWED_COMMANDS","DEFAULT_COMMAND","KODRDRIV_DEFAULTS","dryRun","verbose","debug","overrides","model","contextDirectories","commandName","configDirectory","outputDirectory","preferencesDirectory","commit","add","cached","sendit","messageLimit","release","from","to","audioCommit","maxRecordingTime","audioDevice","undefined","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","audioReview","directory","publish","mergeMethod","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","link","scopeRoots","workspaceFile","excludedPatterns"],"mappings":"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"}
package/dist/types.js CHANGED
@@ -69,7 +69,10 @@ const ConfigSchema = z.object({
69
69
  dependencyUpdatePatterns: z.array(z.string()).optional(),
70
70
  requiredEnvVars: z.array(z.string()).optional(),
71
71
  linkWorkspacePackages: z.boolean().optional(),
72
- unlinkWorkspacePackages: z.boolean().optional()
72
+ unlinkWorkspacePackages: z.boolean().optional(),
73
+ checksTimeout: z.number().optional(),
74
+ skipUserConfirmation: z.boolean().optional(),
75
+ sendit: z.boolean().optional()
73
76
  }).optional(),
74
77
  link: z.object({
75
78
  scopeRoots: z.record(z.string(), z.string()).optional(),
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import * as Cardigantime from '@theunwalked/cardigantime';\nimport { z } from \"zod\";\n\nexport const ConfigSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n outputDirectory: z.string().optional(),\n preferencesDirectory: z.string().optional(),\n commit: z.object({\n add: z.boolean().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n direction: z.string().optional(),\n }).optional(),\n audioCommit: z.object({\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n release: z.object({\n from: z.string().optional(),\n to: z.string().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n focus: z.string().optional(),\n }).optional(),\n review: z.object({\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 context: z.string().optional(),\n sendit: z.boolean().optional(),\n note: z.string().optional(),\n }).optional(),\n audioReview: z.object({\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 context: z.string().optional(),\n sendit: z.boolean().optional(),\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n directory: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n publish: z.object({\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n dependencyUpdatePatterns: z.array(z.string()).optional(),\n requiredEnvVars: z.array(z.string()).optional(),\n linkWorkspacePackages: z.boolean().optional(),\n unlinkWorkspacePackages: z.boolean().optional(),\n }).optional(),\n link: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n workspaceFile: z.string().optional(),\n dryRun: z.boolean().optional(),\n }).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport const CommandConfigSchema = z.object({\n commandName: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\nexport type CommandConfig = z.infer<typeof CommandConfigSchema>;\n\nexport type MergeMethod = 'merge' | 'squash' | 'rebase';\n\nexport interface PullRequest {\n html_url: string;\n number: number;\n labels: {\n name: string;\n }[];\n}\n\nexport type ReleaseSummary = {\n title: string;\n body: string;\n}\n\nexport type ReleaseConfig = {\n from?: string;\n to?: string;\n context?: string;\n focus?: string;\n}\n\nexport type ReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n note?: string;\n}\n\nexport type AudioReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n directory?: string;\n keepTemp?: boolean;\n}\n\nexport type AudioCommitConfig = {\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n keepTemp?: boolean;\n}\n\nexport type PublishConfig = {\n from?: string;\n to?: string;\n}\n"],"names":["ConfigSchema","z","object","dryRun","boolean","optional","verbose","debug","overrides","model","string","contextDirectories","array","outputDirectory","preferencesDirectory","commit","add","cached","sendit","messageLimit","number","context","direction","audioCommit","maxRecordingTime","audioDevice","file","keepTemp","release","from","to","focus","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","note","audioReview","directory","publish","mergeMethod","enum","dependencyUpdatePatterns","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","link","scopeRoots","record","workspaceFile","excludedPatterns","openaiApiKey","commandName"],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import * as Cardigantime from '@theunwalked/cardigantime';\nimport { z } from \"zod\";\n\nexport const ConfigSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n outputDirectory: z.string().optional(),\n preferencesDirectory: z.string().optional(),\n commit: z.object({\n add: z.boolean().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n direction: z.string().optional(),\n }).optional(),\n audioCommit: z.object({\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n release: z.object({\n from: z.string().optional(),\n to: z.string().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n focus: z.string().optional(),\n }).optional(),\n review: z.object({\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 context: z.string().optional(),\n sendit: z.boolean().optional(),\n note: z.string().optional(),\n }).optional(),\n audioReview: z.object({\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 context: z.string().optional(),\n sendit: z.boolean().optional(),\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n directory: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n publish: z.object({\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n dependencyUpdatePatterns: z.array(z.string()).optional(),\n requiredEnvVars: z.array(z.string()).optional(),\n linkWorkspacePackages: z.boolean().optional(),\n unlinkWorkspacePackages: z.boolean().optional(),\n checksTimeout: z.number().optional(),\n skipUserConfirmation: z.boolean().optional(),\n sendit: z.boolean().optional(),\n }).optional(),\n link: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n workspaceFile: z.string().optional(),\n dryRun: z.boolean().optional(),\n }).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport const CommandConfigSchema = z.object({\n commandName: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\nexport type CommandConfig = z.infer<typeof CommandConfigSchema>;\n\nexport type MergeMethod = 'merge' | 'squash' | 'rebase';\n\nexport interface PullRequest {\n html_url: string;\n number: number;\n labels: {\n name: string;\n }[];\n}\n\nexport type ReleaseSummary = {\n title: string;\n body: string;\n}\n\nexport type ReleaseConfig = {\n from?: string;\n to?: string;\n context?: string;\n focus?: string;\n}\n\nexport type ReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n note?: string;\n}\n\nexport type AudioReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n directory?: string;\n keepTemp?: boolean;\n}\n\nexport type AudioCommitConfig = {\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n keepTemp?: boolean;\n}\n\nexport type PublishConfig = {\n from?: string;\n to?: string;\n}\n"],"names":["ConfigSchema","z","object","dryRun","boolean","optional","verbose","debug","overrides","model","string","contextDirectories","array","outputDirectory","preferencesDirectory","commit","add","cached","sendit","messageLimit","number","context","direction","audioCommit","maxRecordingTime","audioDevice","file","keepTemp","release","from","to","focus","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","note","audioReview","directory","publish","mergeMethod","enum","dependencyUpdatePatterns","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","checksTimeout","skipUserConfirmation","link","scopeRoots","record","workspaceFile","excludedPatterns","openaiApiKey","commandName"],"mappings":";;AAGO,MAAMA,YAAAA,GAAeC,CAAAA,CAAEC,MAAM,CAAC;IACjCC,MAAAA,EAAQF,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;IAC5BC,OAAAA,EAASL,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;IAC7BE,KAAAA,EAAON,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;IAC3BG,SAAAA,EAAWP,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;IAC/BI,KAAAA,EAAOR,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;AAC1BM,IAAAA,kBAAAA,EAAoBV,EAAEW,KAAK,CAACX,CAAAA,CAAES,MAAM,IAAIL,QAAQ,EAAA;IAChDQ,eAAAA,EAAiBZ,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;IACpCS,oBAAAA,EAAsBb,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;IACzCU,MAAAA,EAAQd,CAAAA,CAAEC,MAAM,CAAC;QACbc,GAAAA,EAAKf,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QACzBY,MAAAA,EAAQhB,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QAC5Ba,MAAAA,EAAQjB,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QAC5Bc,YAAAA,EAAclB,CAAAA,CAAEmB,MAAM,EAAA,CAAGf,QAAQ,EAAA;QACjCgB,OAAAA,EAASpB,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;QAC5BiB,SAAAA,EAAWrB,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ;AAClC,KAAA,CAAA,CAAGA,QAAQ,EAAA;IACXkB,WAAAA,EAAatB,CAAAA,CAAEC,MAAM,CAAC;QAClBsB,gBAAAA,EAAkBvB,CAAAA,CAAEmB,MAAM,EAAA,CAAGf,QAAQ,EAAA;QACrCoB,WAAAA,EAAaxB,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;QAChCqB,IAAAA,EAAMzB,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;QACzBsB,QAAAA,EAAU1B,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ;AAClC,KAAA,CAAA,CAAGA,QAAQ,EAAA;IACXuB,OAAAA,EAAS3B,CAAAA,CAAEC,MAAM,CAAC;QACd2B,IAAAA,EAAM5B,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;QACzByB,EAAAA,EAAI7B,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;QACvBc,YAAAA,EAAclB,CAAAA,CAAEmB,MAAM,EAAA,CAAGf,QAAQ,EAAA;QACjCgB,OAAAA,EAASpB,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;QAC5B0B,KAAAA,EAAO9B,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ;AAC9B,KAAA,CAAA,CAAGA,QAAQ,EAAA;IACX2B,MAAAA,EAAQ/B,CAAAA,CAAEC,MAAM,CAAC;QACb+B,oBAAAA,EAAsBhC,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QAC1C6B,kBAAAA,EAAoBjC,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QACxC8B,mBAAAA,EAAqBlC,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QACzC+B,mBAAAA,EAAqBnC,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QACzCgC,kBAAAA,EAAoBpC,CAAAA,CAAEmB,MAAM,EAAA,CAAGf,QAAQ,EAAA;QACvCiC,gBAAAA,EAAkBrC,CAAAA,CAAEmB,MAAM,EAAA,CAAGf,QAAQ,EAAA;QACrCkC,iBAAAA,EAAmBtC,CAAAA,CAAEmB,MAAM,EAAA,CAAGf,QAAQ,EAAA;QACtCmC,iBAAAA,EAAmBvC,CAAAA,CAAEmB,MAAM,EAAA,CAAGf,QAAQ,EAAA;QACtCgB,OAAAA,EAASpB,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;QAC5Ba,MAAAA,EAAQjB,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QAC5BoC,IAAAA,EAAMxC,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ;AAC7B,KAAA,CAAA,CAAGA,QAAQ,EAAA;IACXqC,WAAAA,EAAazC,CAAAA,CAAEC,MAAM,CAAC;QAClB+B,oBAAAA,EAAsBhC,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QAC1C6B,kBAAAA,EAAoBjC,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QACxC8B,mBAAAA,EAAqBlC,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QACzC+B,mBAAAA,EAAqBnC,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QACzCgC,kBAAAA,EAAoBpC,CAAAA,CAAEmB,MAAM,EAAA,CAAGf,QAAQ,EAAA;QACvCiC,gBAAAA,EAAkBrC,CAAAA,CAAEmB,MAAM,EAAA,CAAGf,QAAQ,EAAA;QACrCkC,iBAAAA,EAAmBtC,CAAAA,CAAEmB,MAAM,EAAA,CAAGf,QAAQ,EAAA;QACtCmC,iBAAAA,EAAmBvC,CAAAA,CAAEmB,MAAM,EAAA,CAAGf,QAAQ,EAAA;QACtCgB,OAAAA,EAASpB,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;QAC5Ba,MAAAA,EAAQjB,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QAC5BmB,gBAAAA,EAAkBvB,CAAAA,CAAEmB,MAAM,EAAA,CAAGf,QAAQ,EAAA;QACrCoB,WAAAA,EAAaxB,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;QAChCqB,IAAAA,EAAMzB,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;QACzBsC,SAAAA,EAAW1C,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;QAC9BsB,QAAAA,EAAU1B,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ;AAClC,KAAA,CAAA,CAAGA,QAAQ,EAAA;IACXuC,OAAAA,EAAS3C,CAAAA,CAAEC,MAAM,CAAC;QACd2C,WAAAA,EAAa5C,CAAAA,CAAE6C,IAAI,CAAC;AAAC,YAAA,OAAA;AAAS,YAAA,QAAA;AAAU,YAAA;AAAS,SAAA,CAAA,CAAEzC,QAAQ,EAAA;AAC3D0C,QAAAA,wBAAAA,EAA0B9C,EAAEW,KAAK,CAACX,CAAAA,CAAES,MAAM,IAAIL,QAAQ,EAAA;AACtD2C,QAAAA,eAAAA,EAAiB/C,EAAEW,KAAK,CAACX,CAAAA,CAAES,MAAM,IAAIL,QAAQ,EAAA;QAC7C4C,qBAAAA,EAAuBhD,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QAC3C6C,uBAAAA,EAAyBjD,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QAC7C8C,aAAAA,EAAelD,CAAAA,CAAEmB,MAAM,EAAA,CAAGf,QAAQ,EAAA;QAClC+C,oBAAAA,EAAsBnD,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QAC1Ca,MAAAA,EAAQjB,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ;AAChC,KAAA,CAAA,CAAGA,QAAQ,EAAA;IACXgD,IAAAA,EAAMpD,CAAAA,CAAEC,MAAM,CAAC;QACXoD,UAAAA,EAAYrD,CAAAA,CAAEsD,MAAM,CAACtD,CAAAA,CAAES,MAAM,EAAA,EAAIT,CAAAA,CAAES,MAAM,EAAA,CAAA,CAAIL,QAAQ,EAAA;QACrDmD,aAAAA,EAAevD,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;QAClCF,MAAAA,EAAQF,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ;AAChC,KAAA,CAAA,CAAGA,QAAQ,EAAA;AACXoD,IAAAA,gBAAAA,EAAkBxD,EAAEW,KAAK,CAACX,CAAAA,CAAES,MAAM,IAAIL,QAAQ;AAClD,CAAA;AAEkCJ,CAAAA,CAAEC,MAAM,CAAC;IACvCwD,YAAAA,EAAczD,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ;AACrC,CAAA;AAEmCJ,CAAAA,CAAEC,MAAM,CAAC;IACxCyD,WAAAA,EAAa1D,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ;AACpC,CAAA;;;;"}
@@ -1,6 +1,7 @@
1
1
  import { Octokit } from '@octokit/rest';
2
2
  import { getLogger } from '../logging.js';
3
3
  import { run } from './child.js';
4
+ import { promptConfirmation } from './stdin.js';
4
5
 
5
6
  const getOctokit = ()=>{
6
7
  const logger = getLogger();
@@ -67,11 +68,48 @@ const findOpenPullRequestByHeadRef = async (head)=>{
67
68
  }
68
69
  };
69
70
  const delay = (ms)=>new Promise((resolve)=>setTimeout(resolve, ms));
70
- const waitForPullRequestChecks = async (prNumber)=>{
71
+ // Check if repository has GitHub Actions workflows configured
72
+ const hasWorkflowsConfigured = async ()=>{
73
+ const octokit = getOctokit();
74
+ const { owner, repo } = await getRepoDetails();
75
+ try {
76
+ const response = await octokit.actions.listRepoWorkflows({
77
+ owner,
78
+ repo
79
+ });
80
+ return response.data.workflows.length > 0;
81
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
82
+ } catch (error) {
83
+ // If we can't check workflows (e.g., no Actions permission), assume they might exist
84
+ return true;
85
+ }
86
+ };
87
+ const waitForPullRequestChecks = async (prNumber, options = {})=>{
71
88
  const octokit = getOctokit();
72
89
  const { owner, repo } = await getRepoDetails();
73
90
  const logger = getLogger();
91
+ const timeout = options.timeout || 300000; // 5 minutes default timeout
92
+ const skipUserConfirmation = options.skipUserConfirmation || false;
93
+ const startTime = Date.now();
94
+ let consecutiveNoChecksCount = 0;
95
+ const maxConsecutiveNoChecks = 6; // 6 consecutive checks (1 minute) with no checks before asking user
74
96
  while(true){
97
+ const elapsedTime = Date.now() - startTime;
98
+ // Check for timeout
99
+ if (elapsedTime > timeout) {
100
+ logger.warn(`Timeout reached (${timeout / 1000}s) while waiting for PR #${prNumber} checks.`);
101
+ if (!skipUserConfirmation) {
102
+ const proceedWithoutChecks = await promptConfirmation(`⚠️ Timeout reached while waiting for PR #${prNumber} checks.\n` + `This might indicate that no checks are configured for this repository.\n` + `Do you want to proceed with merging the PR without waiting for checks?`);
103
+ if (proceedWithoutChecks) {
104
+ logger.info('User chose to proceed without waiting for checks.');
105
+ return;
106
+ } else {
107
+ throw new Error(`Timeout waiting for PR #${prNumber} checks. User chose not to proceed.`);
108
+ }
109
+ } else {
110
+ throw new Error(`Timeout waiting for PR #${prNumber} checks (${timeout / 1000}s)`);
111
+ }
112
+ }
75
113
  const pr = await octokit.pulls.get({
76
114
  owner,
77
115
  repo,
@@ -84,10 +122,37 @@ const waitForPullRequestChecks = async (prNumber)=>{
84
122
  });
85
123
  const checkRuns = checkRunsResponse.data.check_runs;
86
124
  if (checkRuns.length === 0) {
87
- logger.info(`PR #${prNumber}: No checks found. Waiting...`);
125
+ consecutiveNoChecksCount++;
126
+ logger.info(`PR #${prNumber}: No checks found (${consecutiveNoChecksCount}/${maxConsecutiveNoChecks}). Waiting...`);
127
+ // After several consecutive "no checks" responses, check if workflows are configured
128
+ if (consecutiveNoChecksCount >= maxConsecutiveNoChecks) {
129
+ logger.info(`No checks detected for ${maxConsecutiveNoChecks} consecutive attempts. Checking repository configuration...`);
130
+ const hasWorkflows = await hasWorkflowsConfigured();
131
+ if (!hasWorkflows) {
132
+ logger.warn(`No GitHub Actions workflows found in repository ${owner}/${repo}.`);
133
+ if (!skipUserConfirmation) {
134
+ const proceedWithoutChecks = await promptConfirmation(`⚠️ No GitHub Actions workflows or checks are configured for this repository.\n` + `PR #${prNumber} will never have status checks to wait for.\n` + `Do you want to proceed with merging the PR without checks?`);
135
+ if (proceedWithoutChecks) {
136
+ logger.info('User chose to proceed without checks (no workflows configured).');
137
+ return;
138
+ } else {
139
+ throw new Error(`No checks configured for PR #${prNumber}. User chose not to proceed.`);
140
+ }
141
+ } else {
142
+ // In non-interactive mode, proceed if no workflows are configured
143
+ logger.info('No workflows configured, proceeding without checks.');
144
+ return;
145
+ }
146
+ } else {
147
+ logger.info('GitHub Actions workflows are configured. Continuing to wait for checks...');
148
+ consecutiveNoChecksCount = 0; // Reset counter since workflows exist
149
+ }
150
+ }
88
151
  await delay(10000);
89
152
  continue;
90
153
  }
154
+ // Reset the no-checks counter since we found some checks
155
+ consecutiveNoChecksCount = 0;
91
156
  const failingChecks = checkRuns.filter((cr)=>cr.conclusion && [
92
157
  'failure',
93
158
  'timed_out',
@@ -1 +1 @@
1
- {"version":3,"file":"github.js","sources":["../../src/util/github.ts"],"sourcesContent":["import { Octokit } from '@octokit/rest';\nimport { getLogger } from '../logging';\nimport { PullRequest, MergeMethod } from '../types';\nimport { run } from './child';\n\nexport const getOctokit = (): Octokit => {\n const logger = getLogger();\n const token = process.env.GITHUB_TOKEN;\n\n if (!token) {\n logger.error('GITHUB_TOKEN environment variable is not set.');\n throw new Error('GITHUB_TOKEN is not set.');\n }\n\n return new Octokit({\n auth: token,\n });\n};\n\nexport const getCurrentBranchName = async (): Promise<string> => {\n const { stdout } = await run('git rev-parse --abbrev-ref HEAD');\n return stdout.trim();\n};\n\nexport const getRepoDetails = async (): Promise<{ owner: string; repo: string }> => {\n const { stdout } = await run('git remote get-url origin');\n const url = stdout.trim();\n // git@github.com:owner/repo.git or https://github.com/owner/repo.git\n const match = url.match(/github\\.com[/:]([\\w-]+)\\/([\\w.-]+)\\.git/);\n if (!match) {\n throw new Error(`Could not parse repository owner and name from origin URL: \"${url}\". Expected format: git@github.com:owner/repo.git or https://github.com/owner/repo.git`);\n }\n return { owner: match[1], repo: match[2] };\n};\n\nexport const createPullRequest = async (\n title: string,\n body: string,\n head: string,\n base: string = 'main'\n): Promise<PullRequest> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n\n const response = await octokit.pulls.create({\n owner,\n repo,\n title,\n body,\n head,\n base,\n });\n\n return response.data;\n};\n\nexport const findOpenPullRequestByHeadRef = async (head: string): Promise<PullRequest | null> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n try {\n logger.debug(`Searching for open pull requests with head: ${owner}:${head} in ${owner}/${repo}`);\n\n const response = await octokit.pulls.list({\n owner,\n repo,\n state: 'open',\n head: `${owner}:${head}`,\n });\n\n logger.debug(`Found ${response.data.length} open pull requests`);\n return response.data[0] ?? null;\n } catch (error: any) {\n logger.error(`Failed to find open pull requests: ${error.message}`);\n if (error.status === 404) {\n logger.error(`Repository ${owner}/${repo} not found or access denied. Please check your GITHUB_TOKEN permissions.`);\n }\n throw error;\n }\n};\n\nconst delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\n\nexport const waitForPullRequestChecks = async (prNumber: number): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n while (true) {\n const pr = await octokit.pulls.get({\n owner,\n repo,\n pull_number: prNumber,\n });\n\n const checkRunsResponse = await octokit.checks.listForRef({\n owner,\n repo,\n ref: pr.data.head.sha,\n });\n\n const checkRuns = checkRunsResponse.data.check_runs;\n\n if (checkRuns.length === 0) {\n logger.info(`PR #${prNumber}: No checks found. Waiting...`);\n await delay(10000);\n continue;\n }\n\n const failingChecks = checkRuns.filter(\n (cr) => cr.conclusion && ['failure', 'timed_out', 'cancelled'].includes(cr.conclusion)\n );\n\n if (failingChecks.length > 0) {\n logger.error(`PR #${prNumber} has failing checks:`);\n for (const check of failingChecks) {\n logger.error(`- ${check.name}: ${check.conclusion}`);\n }\n throw new Error(`PR #${prNumber} checks failed.`);\n }\n\n const allChecksCompleted = checkRuns.every((cr) => cr.status === 'completed');\n\n if (allChecksCompleted) {\n logger.info(`All checks for PR #${prNumber} have completed successfully.`);\n return;\n }\n\n const completedCount = checkRuns.filter(cr => cr.status === 'completed').length;\n logger.info(`PR #${prNumber} checks: ${completedCount}/${checkRuns.length} completed. Waiting...`);\n\n await delay(10000); // wait 10 seconds\n }\n};\n\nexport const mergePullRequest = async (prNumber: number, mergeMethod: MergeMethod = 'squash'): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n logger.info(`Merging PR #${prNumber} using ${mergeMethod} method...`);\n const pr = await octokit.pulls.get({\n owner,\n repo,\n pull_number: prNumber,\n });\n const headBranch = pr.data.head.ref;\n\n await octokit.pulls.merge({\n owner,\n repo,\n pull_number: prNumber,\n merge_method: mergeMethod,\n });\n logger.info(`PR #${prNumber} merged using ${mergeMethod} method.`);\n\n logger.info(`Deleting branch ${headBranch}...`);\n await octokit.git.deleteRef({\n owner,\n repo,\n ref: `heads/${headBranch}`,\n });\n logger.info(`Branch ${headBranch} deleted.`);\n};\n\nexport const createRelease = async (tagName: string, title: string, notes: string): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n logger.info(`Creating release for tag ${tagName}...`);\n await octokit.repos.createRelease({\n owner,\n repo,\n tag_name: tagName,\n name: title,\n body: notes,\n });\n logger.info(`Release ${tagName} created.`);\n};\n\nexport const getOpenIssues = async (limit: number = 20): Promise<string> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n try {\n logger.debug(`Fetching up to ${limit} open GitHub issues...`);\n\n const response = await octokit.issues.listForRepo({\n owner,\n repo,\n state: 'open',\n per_page: Math.min(limit, 100), // GitHub API limit\n sort: 'updated',\n direction: 'desc',\n });\n\n const issues = response.data.filter(issue => !issue.pull_request); // Filter out PRs\n\n if (issues.length === 0) {\n logger.debug('No open issues found');\n return '';\n }\n\n const issueStrings = issues.slice(0, limit).map(issue => {\n const labels = issue.labels.map(label =>\n typeof label === 'string' ? label : label.name\n ).join(', ');\n\n return [\n `Issue #${issue.number}: ${issue.title}`,\n `Labels: ${labels || 'none'}`,\n `Created: ${issue.created_at}`,\n `Updated: ${issue.updated_at}`,\n `Body: ${issue.body?.substring(0, 500) || 'No description'}${issue.body && issue.body.length > 500 ? '...' : ''}`,\n '---'\n ].join('\\n');\n });\n\n logger.debug(`Fetched ${issues.length} open issues`);\n return issueStrings.join('\\n\\n');\n } catch (error: any) {\n logger.warn('Failed to fetch GitHub issues: %s', error.message);\n return '';\n }\n};\n\nexport const createIssue = async (\n title: string,\n body: string,\n labels?: string[]\n): Promise<{ number: number; html_url: string }> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n\n const response = await octokit.issues.create({\n owner,\n repo,\n title,\n body,\n labels: labels || [],\n });\n\n return {\n number: response.data.number,\n html_url: response.data.html_url,\n };\n}; "],"names":["getOctokit","logger","getLogger","token","process","env","GITHUB_TOKEN","error","Error","Octokit","auth","getCurrentBranchName","stdout","run","trim","getRepoDetails","url","match","owner","repo","createPullRequest","title","body","head","base","octokit","response","pulls","create","data","findOpenPullRequestByHeadRef","debug","list","state","length","message","status","delay","ms","Promise","resolve","setTimeout","waitForPullRequestChecks","prNumber","pr","get","pull_number","checkRunsResponse","checks","listForRef","ref","sha","checkRuns","check_runs","info","failingChecks","filter","cr","conclusion","includes","check","name","allChecksCompleted","every","completedCount","mergePullRequest","mergeMethod","headBranch","merge","merge_method","git","deleteRef","createRelease","tagName","notes","repos","tag_name","getOpenIssues","limit","issues","listForRepo","per_page","Math","min","sort","direction","issue","pull_request","issueStrings","slice","map","labels","label","join","number","created_at","updated_at","substring","warn","createIssue","html_url"],"mappings":";;;;MAKaA,UAAAA,GAAa,IAAA;AACtB,IAAA,MAAMC,MAAAA,GAASC,SAAAA,EAAAA;AACf,IAAA,MAAMC,KAAAA,GAAQC,OAAAA,CAAQC,GAAG,CAACC,YAAY;AAEtC,IAAA,IAAI,CAACH,KAAAA,EAAO;AACRF,QAAAA,MAAAA,CAAOM,KAAK,CAAC,+CAAA,CAAA;AACb,QAAA,MAAM,IAAIC,KAAAA,CAAM,0BAAA,CAAA;AACpB,IAAA;AAEA,IAAA,OAAO,IAAIC,OAAAA,CAAQ;QACfC,IAAAA,EAAMP;AACV,KAAA,CAAA;AACJ;MAEaQ,oBAAAA,GAAuB,UAAA;AAChC,IAAA,MAAM,EAAEC,MAAM,EAAE,GAAG,MAAMC,GAAAA,CAAI,iCAAA,CAAA;AAC7B,IAAA,OAAOD,OAAOE,IAAI,EAAA;AACtB;MAEaC,cAAAA,GAAiB,UAAA;AAC1B,IAAA,MAAM,EAAEH,MAAM,EAAE,GAAG,MAAMC,GAAAA,CAAI,2BAAA,CAAA;IAC7B,MAAMG,GAAAA,GAAMJ,OAAOE,IAAI,EAAA;;IAEvB,MAAMG,KAAAA,GAAQD,GAAAA,CAAIC,KAAK,CAAC,yCAAA,CAAA;AACxB,IAAA,IAAI,CAACA,KAAAA,EAAO;AACR,QAAA,MAAM,IAAIT,KAAAA,CAAM,CAAC,4DAA4D,EAAEQ,GAAAA,CAAI,sFAAsF,CAAC,CAAA;AAC9K,IAAA;IACA,OAAO;QAAEE,KAAAA,EAAOD,KAAK,CAAC,CAAA,CAAE;QAAEE,IAAAA,EAAMF,KAAK,CAAC,CAAA;AAAG,KAAA;AAC7C;MAEaG,iBAAAA,GAAoB,OAC7BC,OACAC,IAAAA,EACAC,IAAAA,EACAC,OAAe,MAAM,GAAA;AAErB,IAAA,MAAMC,OAAAA,GAAUzB,UAAAA,EAAAA;AAChB,IAAA,MAAM,EAAEkB,KAAK,EAAEC,IAAI,EAAE,GAAG,MAAMJ,cAAAA,EAAAA;AAE9B,IAAA,MAAMW,WAAW,MAAMD,OAAAA,CAAQE,KAAK,CAACC,MAAM,CAAC;AACxCV,QAAAA,KAAAA;AACAC,QAAAA,IAAAA;AACAE,QAAAA,KAAAA;AACAC,QAAAA,IAAAA;AACAC,QAAAA,IAAAA;AACAC,QAAAA;AACJ,KAAA,CAAA;AAEA,IAAA,OAAOE,SAASG,IAAI;AACxB;AAEO,MAAMC,+BAA+B,OAAOP,IAAAA,GAAAA;AAC/C,IAAA,MAAME,OAAAA,GAAUzB,UAAAA,EAAAA;AAChB,IAAA,MAAM,EAAEkB,KAAK,EAAEC,IAAI,EAAE,GAAG,MAAMJ,cAAAA,EAAAA;AAC9B,IAAA,MAAMd,MAAAA,GAASC,SAAAA,EAAAA;IAEf,IAAI;AACAD,QAAAA,MAAAA,CAAO8B,KAAK,CAAC,CAAC,4CAA4C,EAAEb,KAAAA,CAAM,CAAC,EAAEK,IAAAA,CAAK,IAAI,EAAEL,KAAAA,CAAM,CAAC,EAAEC,IAAAA,CAAAA,CAAM,CAAA;AAE/F,QAAA,MAAMO,WAAW,MAAMD,OAAAA,CAAQE,KAAK,CAACK,IAAI,CAAC;AACtCd,YAAAA,KAAAA;AACAC,YAAAA,IAAAA;YACAc,KAAAA,EAAO,MAAA;AACPV,YAAAA,IAAAA,EAAM,CAAA,EAAGL,KAAAA,CAAM,CAAC,EAAEK,IAAAA,CAAAA;AACtB,SAAA,CAAA;QAEAtB,MAAAA,CAAO8B,KAAK,CAAC,CAAC,MAAM,EAAEL,QAAAA,CAASG,IAAI,CAACK,MAAM,CAAC,mBAAmB,CAAC,CAAA;AACxDR,QAAAA,IAAAA,eAAAA;QAAP,OAAOA,CAAAA,kBAAAA,QAAAA,CAASG,IAAI,CAAC,CAAA,CAAE,MAAA,IAAA,IAAhBH,6BAAAA,eAAAA,GAAoB,IAAA;AAC/B,IAAA,CAAA,CAAE,OAAOnB,KAAAA,EAAY;AACjBN,QAAAA,MAAAA,CAAOM,KAAK,CAAC,CAAC,mCAAmC,EAAEA,KAAAA,CAAM4B,OAAO,CAAA,CAAE,CAAA;QAClE,IAAI5B,KAAAA,CAAM6B,MAAM,KAAK,GAAA,EAAK;YACtBnC,MAAAA,CAAOM,KAAK,CAAC,CAAC,WAAW,EAAEW,MAAM,CAAC,EAAEC,IAAAA,CAAK,wEAAwE,CAAC,CAAA;AACtH,QAAA;QACA,MAAMZ,KAAAA;AACV,IAAA;AACJ;AAEA,MAAM8B,KAAAA,GAAQ,CAACC,EAAAA,GAAe,IAAIC,QAAQC,CAAAA,OAAAA,GAAWC,WAAWD,OAAAA,EAASF,EAAAA,CAAAA,CAAAA;AAElE,MAAMI,2BAA2B,OAAOC,QAAAA,GAAAA;AAC3C,IAAA,MAAMlB,OAAAA,GAAUzB,UAAAA,EAAAA;AAChB,IAAA,MAAM,EAAEkB,KAAK,EAAEC,IAAI,EAAE,GAAG,MAAMJ,cAAAA,EAAAA;AAC9B,IAAA,MAAMd,MAAAA,GAASC,SAAAA,EAAAA;AAEf,IAAA,MAAO,IAAA,CAAM;AACT,QAAA,MAAM0C,KAAK,MAAMnB,OAAAA,CAAQE,KAAK,CAACkB,GAAG,CAAC;AAC/B3B,YAAAA,KAAAA;AACAC,YAAAA,IAAAA;YACA2B,WAAAA,EAAaH;AACjB,SAAA,CAAA;AAEA,QAAA,MAAMI,oBAAoB,MAAMtB,OAAAA,CAAQuB,MAAM,CAACC,UAAU,CAAC;AACtD/B,YAAAA,KAAAA;AACAC,YAAAA,IAAAA;AACA+B,YAAAA,GAAAA,EAAKN,EAAAA,CAAGf,IAAI,CAACN,IAAI,CAAC4B;AACtB,SAAA,CAAA;AAEA,QAAA,MAAMC,SAAAA,GAAYL,iBAAAA,CAAkBlB,IAAI,CAACwB,UAAU;QAEnD,IAAID,SAAAA,CAAUlB,MAAM,KAAK,CAAA,EAAG;AACxBjC,YAAAA,MAAAA,CAAOqD,IAAI,CAAC,CAAC,IAAI,EAAEX,QAAAA,CAAS,6BAA6B,CAAC,CAAA;AAC1D,YAAA,MAAMN,KAAAA,CAAM,KAAA,CAAA;AACZ,YAAA;AACJ,QAAA;QAEA,MAAMkB,aAAAA,GAAgBH,UAAUI,MAAM,CAClC,CAACC,EAAAA,GAAOA,EAAAA,CAAGC,UAAU,IAAI;AAAC,gBAAA,SAAA;AAAW,gBAAA,WAAA;AAAa,gBAAA;aAAY,CAACC,QAAQ,CAACF,EAAAA,CAAGC,UAAU,CAAA,CAAA;QAGzF,IAAIH,aAAAA,CAAcrB,MAAM,GAAG,CAAA,EAAG;AAC1BjC,YAAAA,MAAAA,CAAOM,KAAK,CAAC,CAAC,IAAI,EAAEoC,QAAAA,CAAS,oBAAoB,CAAC,CAAA;YAClD,KAAK,MAAMiB,SAASL,aAAAA,CAAe;AAC/BtD,gBAAAA,MAAAA,CAAOM,KAAK,CAAC,CAAC,EAAE,EAAEqD,KAAAA,CAAMC,IAAI,CAAC,EAAE,EAAED,KAAAA,CAAMF,UAAU,CAAA,CAAE,CAAA;AACvD,YAAA;AACA,YAAA,MAAM,IAAIlD,KAAAA,CAAM,CAAC,IAAI,EAAEmC,QAAAA,CAAS,eAAe,CAAC,CAAA;AACpD,QAAA;QAEA,MAAMmB,kBAAAA,GAAqBV,UAAUW,KAAK,CAAC,CAACN,EAAAA,GAAOA,EAAAA,CAAGrB,MAAM,KAAK,WAAA,CAAA;AAEjE,QAAA,IAAI0B,kBAAAA,EAAoB;AACpB7D,YAAAA,MAAAA,CAAOqD,IAAI,CAAC,CAAC,mBAAmB,EAAEX,QAAAA,CAAS,6BAA6B,CAAC,CAAA;AACzE,YAAA;AACJ,QAAA;QAEA,MAAMqB,cAAAA,GAAiBZ,SAAAA,CAAUI,MAAM,CAACC,CAAAA,KAAMA,EAAAA,CAAGrB,MAAM,KAAK,WAAA,CAAA,CAAaF,MAAM;AAC/EjC,QAAAA,MAAAA,CAAOqD,IAAI,CAAC,CAAC,IAAI,EAAEX,QAAAA,CAAS,SAAS,EAAEqB,cAAAA,CAAe,CAAC,EAAEZ,SAAAA,CAAUlB,MAAM,CAAC,sBAAsB,CAAC,CAAA;QAEjG,MAAMG,KAAAA,CAAM;AAChB,IAAA;AACJ;AAEO,MAAM4B,gBAAAA,GAAmB,OAAOtB,QAAAA,EAAkBuB,cAA2B,QAAQ,GAAA;AACxF,IAAA,MAAMzC,OAAAA,GAAUzB,UAAAA,EAAAA;AAChB,IAAA,MAAM,EAAEkB,KAAK,EAAEC,IAAI,EAAE,GAAG,MAAMJ,cAAAA,EAAAA;AAC9B,IAAA,MAAMd,MAAAA,GAASC,SAAAA,EAAAA;IAEfD,MAAAA,CAAOqD,IAAI,CAAC,CAAC,YAAY,EAAEX,SAAS,OAAO,EAAEuB,WAAAA,CAAY,UAAU,CAAC,CAAA;AACpE,IAAA,MAAMtB,KAAK,MAAMnB,OAAAA,CAAQE,KAAK,CAACkB,GAAG,CAAC;AAC/B3B,QAAAA,KAAAA;AACAC,QAAAA,IAAAA;QACA2B,WAAAA,EAAaH;AACjB,KAAA,CAAA;AACA,IAAA,MAAMwB,aAAavB,EAAAA,CAAGf,IAAI,CAACN,IAAI,CAAC2B,GAAG;AAEnC,IAAA,MAAMzB,OAAAA,CAAQE,KAAK,CAACyC,KAAK,CAAC;AACtBlD,QAAAA,KAAAA;AACAC,QAAAA,IAAAA;QACA2B,WAAAA,EAAaH,QAAAA;QACb0B,YAAAA,EAAcH;AAClB,KAAA,CAAA;IACAjE,MAAAA,CAAOqD,IAAI,CAAC,CAAC,IAAI,EAAEX,SAAS,cAAc,EAAEuB,WAAAA,CAAY,QAAQ,CAAC,CAAA;AAEjEjE,IAAAA,MAAAA,CAAOqD,IAAI,CAAC,CAAC,gBAAgB,EAAEa,UAAAA,CAAW,GAAG,CAAC,CAAA;AAC9C,IAAA,MAAM1C,OAAAA,CAAQ6C,GAAG,CAACC,SAAS,CAAC;AACxBrD,QAAAA,KAAAA;AACAC,QAAAA,IAAAA;QACA+B,GAAAA,EAAK,CAAC,MAAM,EAAEiB,UAAAA,CAAAA;AAClB,KAAA,CAAA;AACAlE,IAAAA,MAAAA,CAAOqD,IAAI,CAAC,CAAC,OAAO,EAAEa,UAAAA,CAAW,SAAS,CAAC,CAAA;AAC/C;AAEO,MAAMK,aAAAA,GAAgB,OAAOC,OAAAA,EAAiBpD,KAAAA,EAAeqD,KAAAA,GAAAA;AAChE,IAAA,MAAMjD,OAAAA,GAAUzB,UAAAA,EAAAA;AAChB,IAAA,MAAM,EAAEkB,KAAK,EAAEC,IAAI,EAAE,GAAG,MAAMJ,cAAAA,EAAAA;AAC9B,IAAA,MAAMd,MAAAA,GAASC,SAAAA,EAAAA;AAEfD,IAAAA,MAAAA,CAAOqD,IAAI,CAAC,CAAC,yBAAyB,EAAEmB,OAAAA,CAAQ,GAAG,CAAC,CAAA;AACpD,IAAA,MAAMhD,OAAAA,CAAQkD,KAAK,CAACH,aAAa,CAAC;AAC9BtD,QAAAA,KAAAA;AACAC,QAAAA,IAAAA;QACAyD,QAAAA,EAAUH,OAAAA;QACVZ,IAAAA,EAAMxC,KAAAA;QACNC,IAAAA,EAAMoD;AACV,KAAA,CAAA;AACAzE,IAAAA,MAAAA,CAAOqD,IAAI,CAAC,CAAC,QAAQ,EAAEmB,OAAAA,CAAQ,SAAS,CAAC,CAAA;AAC7C;AAEO,MAAMI,aAAAA,GAAgB,OAAOC,KAAAA,GAAgB,EAAE,GAAA;AAClD,IAAA,MAAMrD,OAAAA,GAAUzB,UAAAA,EAAAA;AAChB,IAAA,MAAM,EAAEkB,KAAK,EAAEC,IAAI,EAAE,GAAG,MAAMJ,cAAAA,EAAAA;AAC9B,IAAA,MAAMd,MAAAA,GAASC,SAAAA,EAAAA;IAEf,IAAI;AACAD,QAAAA,MAAAA,CAAO8B,KAAK,CAAC,CAAC,eAAe,EAAE+C,KAAAA,CAAM,sBAAsB,CAAC,CAAA;AAE5D,QAAA,MAAMpD,WAAW,MAAMD,OAAAA,CAAQsD,MAAM,CAACC,WAAW,CAAC;AAC9C9D,YAAAA,KAAAA;AACAC,YAAAA,IAAAA;YACAc,KAAAA,EAAO,MAAA;YACPgD,QAAAA,EAAUC,IAAAA,CAAKC,GAAG,CAACL,KAAAA,EAAO,GAAA,CAAA;YAC1BM,IAAAA,EAAM,SAAA;YACNC,SAAAA,EAAW;AACf,SAAA,CAAA;AAEA,QAAA,MAAMN,MAAAA,GAASrD,QAAAA,CAASG,IAAI,CAAC2B,MAAM,CAAC8B,CAAAA,KAAAA,GAAS,CAACA,KAAAA,CAAMC,YAAY,CAAA,CAAA;QAEhE,IAAIR,MAAAA,CAAO7C,MAAM,KAAK,CAAA,EAAG;AACrBjC,YAAAA,MAAAA,CAAO8B,KAAK,CAAC,sBAAA,CAAA;YACb,OAAO,EAAA;AACX,QAAA;QAEA,MAAMyD,YAAAA,GAAeT,OAAOU,KAAK,CAAC,GAAGX,KAAAA,CAAAA,CAAOY,GAAG,CAACJ,CAAAA,KAAAA,GAAAA;AAU/BA,YAAAA,IAAAA,WAAAA;AATb,YAAA,MAAMK,SAASL,KAAAA,CAAMK,MAAM,CAACD,GAAG,CAACE,CAAAA,KAAAA,GAC5B,OAAOA,KAAAA,KAAU,WAAWA,KAAAA,GAAQA,KAAAA,CAAM/B,IAAI,CAAA,CAChDgC,IAAI,CAAC,IAAA,CAAA;YAEP,OAAO;gBACH,CAAC,OAAO,EAAEP,KAAAA,CAAMQ,MAAM,CAAC,EAAE,EAAER,KAAAA,CAAMjE,KAAK,CAAA,CAAE;gBACxC,CAAC,QAAQ,EAAEsE,MAAAA,IAAU,MAAA,CAAA,CAAQ;AAC7B,gBAAA,CAAC,SAAS,EAAEL,KAAAA,CAAMS,UAAU,CAAA,CAAE;AAC9B,gBAAA,CAAC,SAAS,EAAET,KAAAA,CAAMU,UAAU,CAAA,CAAE;gBAC9B,CAAC,MAAM,EAAEV,CAAAA,CAAAA,WAAAA,GAAAA,KAAAA,CAAMhE,IAAI,MAAA,IAAA,IAAVgE,WAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAYW,SAAS,CAAC,CAAA,EAAG,SAAQ,gBAAA,CAAA,EAAmBX,KAAAA,CAAMhE,IAAI,IAAIgE,KAAAA,CAAMhE,IAAI,CAACY,MAAM,GAAG,GAAA,GAAM,KAAA,GAAQ,EAAA,CAAA,CAAI;AACjH,gBAAA;AACH,aAAA,CAAC2D,IAAI,CAAC,IAAA,CAAA;AACX,QAAA,CAAA,CAAA;QAEA5F,MAAAA,CAAO8B,KAAK,CAAC,CAAC,QAAQ,EAAEgD,MAAAA,CAAO7C,MAAM,CAAC,YAAY,CAAC,CAAA;QACnD,OAAOsD,YAAAA,CAAaK,IAAI,CAAC,MAAA,CAAA;AAC7B,IAAA,CAAA,CAAE,OAAOtF,KAAAA,EAAY;AACjBN,QAAAA,MAAAA,CAAOiG,IAAI,CAAC,mCAAA,EAAqC3F,KAAAA,CAAM4B,OAAO,CAAA;QAC9D,OAAO,EAAA;AACX,IAAA;AACJ;AAEO,MAAMgE,WAAAA,GAAc,OACvB9E,KAAAA,EACAC,IAAAA,EACAqE,MAAAA,GAAAA;AAEA,IAAA,MAAMlE,OAAAA,GAAUzB,UAAAA,EAAAA;AAChB,IAAA,MAAM,EAAEkB,KAAK,EAAEC,IAAI,EAAE,GAAG,MAAMJ,cAAAA,EAAAA;AAE9B,IAAA,MAAMW,WAAW,MAAMD,OAAAA,CAAQsD,MAAM,CAACnD,MAAM,CAAC;AACzCV,QAAAA,KAAAA;AACAC,QAAAA,IAAAA;AACAE,QAAAA,KAAAA;AACAC,QAAAA,IAAAA;AACAqE,QAAAA,MAAAA,EAAQA,UAAU;AACtB,KAAA,CAAA;IAEA,OAAO;QACHG,MAAAA,EAAQpE,QAAAA,CAASG,IAAI,CAACiE,MAAM;QAC5BM,QAAAA,EAAU1E,QAAAA,CAASG,IAAI,CAACuE;AAC5B,KAAA;AACJ;;;;"}
1
+ {"version":3,"file":"github.js","sources":["../../src/util/github.ts"],"sourcesContent":["import { Octokit } from '@octokit/rest';\nimport { getLogger } from '../logging';\nimport { PullRequest, MergeMethod } from '../types';\nimport { run } from './child';\nimport { promptConfirmation } from './stdin';\n\nexport const getOctokit = (): Octokit => {\n const logger = getLogger();\n const token = process.env.GITHUB_TOKEN;\n\n if (!token) {\n logger.error('GITHUB_TOKEN environment variable is not set.');\n throw new Error('GITHUB_TOKEN is not set.');\n }\n\n return new Octokit({\n auth: token,\n });\n};\n\nexport const getCurrentBranchName = async (): Promise<string> => {\n const { stdout } = await run('git rev-parse --abbrev-ref HEAD');\n return stdout.trim();\n};\n\nexport const getRepoDetails = async (): Promise<{ owner: string; repo: string }> => {\n const { stdout } = await run('git remote get-url origin');\n const url = stdout.trim();\n // git@github.com:owner/repo.git or https://github.com/owner/repo.git\n const match = url.match(/github\\.com[/:]([\\w-]+)\\/([\\w.-]+)\\.git/);\n if (!match) {\n throw new Error(`Could not parse repository owner and name from origin URL: \"${url}\". Expected format: git@github.com:owner/repo.git or https://github.com/owner/repo.git`);\n }\n return { owner: match[1], repo: match[2] };\n};\n\nexport const createPullRequest = async (\n title: string,\n body: string,\n head: string,\n base: string = 'main'\n): Promise<PullRequest> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n\n const response = await octokit.pulls.create({\n owner,\n repo,\n title,\n body,\n head,\n base,\n });\n\n return response.data;\n};\n\nexport const findOpenPullRequestByHeadRef = async (head: string): Promise<PullRequest | null> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n try {\n logger.debug(`Searching for open pull requests with head: ${owner}:${head} in ${owner}/${repo}`);\n\n const response = await octokit.pulls.list({\n owner,\n repo,\n state: 'open',\n head: `${owner}:${head}`,\n });\n\n logger.debug(`Found ${response.data.length} open pull requests`);\n return response.data[0] ?? null;\n } catch (error: any) {\n logger.error(`Failed to find open pull requests: ${error.message}`);\n if (error.status === 404) {\n logger.error(`Repository ${owner}/${repo} not found or access denied. Please check your GITHUB_TOKEN permissions.`);\n }\n throw error;\n }\n};\n\nconst delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\n\n// Check if repository has GitHub Actions workflows configured\nconst hasWorkflowsConfigured = async (): Promise<boolean> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n\n try {\n const response = await octokit.actions.listRepoWorkflows({\n owner,\n repo,\n });\n\n return response.data.workflows.length > 0;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error: any) {\n // If we can't check workflows (e.g., no Actions permission), assume they might exist\n return true;\n }\n};\n\nexport const waitForPullRequestChecks = async (prNumber: number, options: { timeout?: number; skipUserConfirmation?: boolean } = {}): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n const timeout = options.timeout || 300000; // 5 minutes default timeout\n const skipUserConfirmation = options.skipUserConfirmation || false;\n\n const startTime = Date.now();\n let consecutiveNoChecksCount = 0;\n const maxConsecutiveNoChecks = 6; // 6 consecutive checks (1 minute) with no checks before asking user\n\n while (true) {\n const elapsedTime = Date.now() - startTime;\n\n // Check for timeout\n if (elapsedTime > timeout) {\n logger.warn(`Timeout reached (${timeout / 1000}s) while waiting for PR #${prNumber} checks.`);\n\n if (!skipUserConfirmation) {\n const proceedWithoutChecks = await promptConfirmation(\n `⚠️ Timeout reached while waiting for PR #${prNumber} checks.\\n` +\n `This might indicate that no checks are configured for this repository.\\n` +\n `Do you want to proceed with merging the PR without waiting for checks?`\n );\n\n if (proceedWithoutChecks) {\n logger.info('User chose to proceed without waiting for checks.');\n return;\n } else {\n throw new Error(`Timeout waiting for PR #${prNumber} checks. User chose not to proceed.`);\n }\n } else {\n throw new Error(`Timeout waiting for PR #${prNumber} checks (${timeout / 1000}s)`);\n }\n }\n\n const pr = await octokit.pulls.get({\n owner,\n repo,\n pull_number: prNumber,\n });\n\n const checkRunsResponse = await octokit.checks.listForRef({\n owner,\n repo,\n ref: pr.data.head.sha,\n });\n\n const checkRuns = checkRunsResponse.data.check_runs;\n\n if (checkRuns.length === 0) {\n consecutiveNoChecksCount++;\n logger.info(`PR #${prNumber}: No checks found (${consecutiveNoChecksCount}/${maxConsecutiveNoChecks}). Waiting...`);\n\n // After several consecutive \"no checks\" responses, check if workflows are configured\n if (consecutiveNoChecksCount >= maxConsecutiveNoChecks) {\n logger.info(`No checks detected for ${maxConsecutiveNoChecks} consecutive attempts. Checking repository configuration...`);\n\n const hasWorkflows = await hasWorkflowsConfigured();\n\n if (!hasWorkflows) {\n logger.warn(`No GitHub Actions workflows found in repository ${owner}/${repo}.`);\n\n if (!skipUserConfirmation) {\n const proceedWithoutChecks = await promptConfirmation(\n `⚠️ No GitHub Actions workflows or checks are configured for this repository.\\n` +\n `PR #${prNumber} will never have status checks to wait for.\\n` +\n `Do you want to proceed with merging the PR without checks?`\n );\n\n if (proceedWithoutChecks) {\n logger.info('User chose to proceed without checks (no workflows configured).');\n return;\n } else {\n throw new Error(`No checks configured for PR #${prNumber}. User chose not to proceed.`);\n }\n } else {\n // In non-interactive mode, proceed if no workflows are configured\n logger.info('No workflows configured, proceeding without checks.');\n return;\n }\n } else {\n logger.info('GitHub Actions workflows are configured. Continuing to wait for checks...');\n consecutiveNoChecksCount = 0; // Reset counter since workflows exist\n }\n }\n\n await delay(10000);\n continue;\n }\n\n // Reset the no-checks counter since we found some checks\n consecutiveNoChecksCount = 0;\n\n const failingChecks = checkRuns.filter(\n (cr) => cr.conclusion && ['failure', 'timed_out', 'cancelled'].includes(cr.conclusion)\n );\n\n if (failingChecks.length > 0) {\n logger.error(`PR #${prNumber} has failing checks:`);\n for (const check of failingChecks) {\n logger.error(`- ${check.name}: ${check.conclusion}`);\n }\n throw new Error(`PR #${prNumber} checks failed.`);\n }\n\n const allChecksCompleted = checkRuns.every((cr) => cr.status === 'completed');\n\n if (allChecksCompleted) {\n logger.info(`All checks for PR #${prNumber} have completed successfully.`);\n return;\n }\n\n const completedCount = checkRuns.filter(cr => cr.status === 'completed').length;\n logger.info(`PR #${prNumber} checks: ${completedCount}/${checkRuns.length} completed. Waiting...`);\n\n await delay(10000); // wait 10 seconds\n }\n};\n\nexport const mergePullRequest = async (prNumber: number, mergeMethod: MergeMethod = 'squash'): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n logger.info(`Merging PR #${prNumber} using ${mergeMethod} method...`);\n const pr = await octokit.pulls.get({\n owner,\n repo,\n pull_number: prNumber,\n });\n const headBranch = pr.data.head.ref;\n\n await octokit.pulls.merge({\n owner,\n repo,\n pull_number: prNumber,\n merge_method: mergeMethod,\n });\n logger.info(`PR #${prNumber} merged using ${mergeMethod} method.`);\n\n logger.info(`Deleting branch ${headBranch}...`);\n await octokit.git.deleteRef({\n owner,\n repo,\n ref: `heads/${headBranch}`,\n });\n logger.info(`Branch ${headBranch} deleted.`);\n};\n\nexport const createRelease = async (tagName: string, title: string, notes: string): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n logger.info(`Creating release for tag ${tagName}...`);\n await octokit.repos.createRelease({\n owner,\n repo,\n tag_name: tagName,\n name: title,\n body: notes,\n });\n logger.info(`Release ${tagName} created.`);\n};\n\nexport const getOpenIssues = async (limit: number = 20): Promise<string> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n try {\n logger.debug(`Fetching up to ${limit} open GitHub issues...`);\n\n const response = await octokit.issues.listForRepo({\n owner,\n repo,\n state: 'open',\n per_page: Math.min(limit, 100), // GitHub API limit\n sort: 'updated',\n direction: 'desc',\n });\n\n const issues = response.data.filter(issue => !issue.pull_request); // Filter out PRs\n\n if (issues.length === 0) {\n logger.debug('No open issues found');\n return '';\n }\n\n const issueStrings = issues.slice(0, limit).map(issue => {\n const labels = issue.labels.map(label =>\n typeof label === 'string' ? label : label.name\n ).join(', ');\n\n return [\n `Issue #${issue.number}: ${issue.title}`,\n `Labels: ${labels || 'none'}`,\n `Created: ${issue.created_at}`,\n `Updated: ${issue.updated_at}`,\n `Body: ${issue.body?.substring(0, 500) || 'No description'}${issue.body && issue.body.length > 500 ? '...' : ''}`,\n '---'\n ].join('\\n');\n });\n\n logger.debug(`Fetched ${issues.length} open issues`);\n return issueStrings.join('\\n\\n');\n } catch (error: any) {\n logger.warn('Failed to fetch GitHub issues: %s', error.message);\n return '';\n }\n};\n\nexport const createIssue = async (\n title: string,\n body: string,\n labels?: string[]\n): Promise<{ number: number; html_url: string }> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n\n const response = await octokit.issues.create({\n owner,\n repo,\n title,\n body,\n labels: labels || [],\n });\n\n return {\n number: response.data.number,\n html_url: response.data.html_url,\n };\n}; "],"names":["getOctokit","logger","getLogger","token","process","env","GITHUB_TOKEN","error","Error","Octokit","auth","getCurrentBranchName","stdout","run","trim","getRepoDetails","url","match","owner","repo","createPullRequest","title","body","head","base","octokit","response","pulls","create","data","findOpenPullRequestByHeadRef","debug","list","state","length","message","status","delay","ms","Promise","resolve","setTimeout","hasWorkflowsConfigured","actions","listRepoWorkflows","workflows","waitForPullRequestChecks","prNumber","options","timeout","skipUserConfirmation","startTime","Date","now","consecutiveNoChecksCount","maxConsecutiveNoChecks","elapsedTime","warn","proceedWithoutChecks","promptConfirmation","info","pr","get","pull_number","checkRunsResponse","checks","listForRef","ref","sha","checkRuns","check_runs","hasWorkflows","failingChecks","filter","cr","conclusion","includes","check","name","allChecksCompleted","every","completedCount","mergePullRequest","mergeMethod","headBranch","merge","merge_method","git","deleteRef","createRelease","tagName","notes","repos","tag_name","getOpenIssues","limit","issues","listForRepo","per_page","Math","min","sort","direction","issue","pull_request","issueStrings","slice","map","labels","label","join","number","created_at","updated_at","substring","createIssue","html_url"],"mappings":"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"}
@@ -96,6 +96,38 @@ async function readStdin() {
96
96
  process.stdin.resume();
97
97
  });
98
98
  }
99
+ // Function to prompt user for confirmation (y/n)
100
+ async function promptConfirmation(message) {
101
+ // In test environment, return true by default
102
+ if (process.env.NODE_ENV === 'test' || process.env.VITEST === 'true') {
103
+ return true;
104
+ }
105
+ // Use process.stdout.write instead of console.log to avoid linter issues
106
+ process.stdout.write(message + '\n');
107
+ process.stdout.write('Please enter "y" for yes or "n" for no: ');
108
+ return new Promise((resolve)=>{
109
+ const handleInput = (chunk)=>{
110
+ const input = chunk.toString().trim().toLowerCase();
111
+ if (input === 'y' || input === 'yes') {
112
+ cleanup();
113
+ resolve(true);
114
+ } else if (input === 'n' || input === 'no') {
115
+ cleanup();
116
+ resolve(false);
117
+ } else {
118
+ process.stdout.write('Please enter "y" for yes or "n" for no: ');
119
+ // Continue listening for input
120
+ }
121
+ };
122
+ const cleanup = ()=>{
123
+ process.stdin.removeListener('data', handleInput);
124
+ process.stdin.pause();
125
+ };
126
+ process.stdin.setEncoding('utf8');
127
+ process.stdin.on('data', handleInput);
128
+ process.stdin.resume();
129
+ });
130
+ }
99
131
 
100
- export { readStdin };
132
+ export { promptConfirmation, readStdin };
101
133
  //# sourceMappingURL=stdin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stdin.js","sources":["../../src/util/stdin.ts"],"sourcesContent":["// Function to read from STDIN if available\nexport async function readStdin(): Promise<string | null> {\n // In test environment, allow mocking to work by skipping TTY check\n if (process.env.NODE_ENV === 'test' || process.env.VITEST === 'true') {\n return new Promise((resolve) => {\n let input = '';\n let hasData = false;\n let resolved = false;\n\n const timeout = setTimeout(() => {\n if (!hasData && !resolved) {\n resolved = true;\n cleanup();\n resolve(null);\n }\n }, 10); // Very short timeout for tests\n\n const onData = (chunk: string) => {\n hasData = true;\n clearTimeout(timeout);\n input += chunk;\n };\n\n const onEnd = () => {\n if (!resolved) {\n resolved = true;\n cleanup();\n resolve(input.trim() || null);\n }\n };\n\n const onError = () => {\n if (!resolved) {\n resolved = true;\n clearTimeout(timeout);\n cleanup();\n resolve(null);\n }\n };\n\n const cleanup = () => {\n process.stdin.removeListener('data', onData);\n process.stdin.removeListener('end', onEnd);\n process.stdin.removeListener('error', onError);\n process.stdin.pause();\n };\n\n process.stdin.setEncoding('utf8');\n process.stdin.on('data', onData);\n process.stdin.on('end', onEnd);\n process.stdin.on('error', onError);\n process.stdin.resume();\n });\n }\n\n return new Promise((resolve) => {\n // Check if stdin is TTY (interactive terminal)\n if (process.stdin.isTTY) {\n resolve(null);\n return;\n }\n\n let input = '';\n let hasData = false;\n let resolved = false;\n\n const timeout = setTimeout(() => {\n if (!hasData && !resolved) {\n resolved = true;\n cleanup();\n resolve(null);\n }\n }, 100); // Short timeout to detect if data is available\n\n const onData = (chunk: string) => {\n hasData = true;\n clearTimeout(timeout);\n input += chunk;\n };\n\n const onEnd = () => {\n if (!resolved) {\n resolved = true;\n cleanup();\n resolve(input.trim() || null);\n }\n };\n\n const onError = () => {\n if (!resolved) {\n resolved = true;\n clearTimeout(timeout);\n cleanup();\n resolve(null);\n }\n };\n\n const cleanup = () => {\n process.stdin.removeListener('data', onData);\n process.stdin.removeListener('end', onEnd);\n process.stdin.removeListener('error', onError);\n process.stdin.pause();\n };\n\n process.stdin.setEncoding('utf8');\n process.stdin.on('data', onData);\n process.stdin.on('end', onEnd);\n process.stdin.on('error', onError);\n\n // If no data comes in quickly, assume no stdin\n process.stdin.resume();\n });\n} "],"names":["readStdin","process","env","NODE_ENV","VITEST","Promise","resolve","input","hasData","resolved","timeout","setTimeout","cleanup","onData","chunk","clearTimeout","onEnd","trim","onError","stdin","removeListener","pause","setEncoding","on","resume","isTTY"],"mappings":"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"}
1
+ {"version":3,"file":"stdin.js","sources":["../../src/util/stdin.ts"],"sourcesContent":["\n// Function to read from STDIN if available\nexport async function readStdin(): Promise<string | null> {\n // In test environment, allow mocking to work by skipping TTY check\n if (process.env.NODE_ENV === 'test' || process.env.VITEST === 'true') {\n return new Promise((resolve) => {\n let input = '';\n let hasData = false;\n let resolved = false;\n\n const timeout = setTimeout(() => {\n if (!hasData && !resolved) {\n resolved = true;\n cleanup();\n resolve(null);\n }\n }, 10); // Very short timeout for tests\n\n const onData = (chunk: string) => {\n hasData = true;\n clearTimeout(timeout);\n input += chunk;\n };\n\n const onEnd = () => {\n if (!resolved) {\n resolved = true;\n cleanup();\n resolve(input.trim() || null);\n }\n };\n\n const onError = () => {\n if (!resolved) {\n resolved = true;\n clearTimeout(timeout);\n cleanup();\n resolve(null);\n }\n };\n\n const cleanup = () => {\n process.stdin.removeListener('data', onData);\n process.stdin.removeListener('end', onEnd);\n process.stdin.removeListener('error', onError);\n process.stdin.pause();\n };\n\n process.stdin.setEncoding('utf8');\n process.stdin.on('data', onData);\n process.stdin.on('end', onEnd);\n process.stdin.on('error', onError);\n process.stdin.resume();\n });\n }\n\n return new Promise((resolve) => {\n // Check if stdin is TTY (interactive terminal)\n if (process.stdin.isTTY) {\n resolve(null);\n return;\n }\n\n let input = '';\n let hasData = false;\n let resolved = false;\n\n const timeout = setTimeout(() => {\n if (!hasData && !resolved) {\n resolved = true;\n cleanup();\n resolve(null);\n }\n }, 100); // Short timeout to detect if data is available\n\n const onData = (chunk: string) => {\n hasData = true;\n clearTimeout(timeout);\n input += chunk;\n };\n\n const onEnd = () => {\n if (!resolved) {\n resolved = true;\n cleanup();\n resolve(input.trim() || null);\n }\n };\n\n const onError = () => {\n if (!resolved) {\n resolved = true;\n clearTimeout(timeout);\n cleanup();\n resolve(null);\n }\n };\n\n const cleanup = () => {\n process.stdin.removeListener('data', onData);\n process.stdin.removeListener('end', onEnd);\n process.stdin.removeListener('error', onError);\n process.stdin.pause();\n };\n\n process.stdin.setEncoding('utf8');\n process.stdin.on('data', onData);\n process.stdin.on('end', onEnd);\n process.stdin.on('error', onError);\n\n // If no data comes in quickly, assume no stdin\n process.stdin.resume();\n });\n}\n\n// Function to prompt user for confirmation (y/n)\nexport async function promptConfirmation(message: string): Promise<boolean> {\n // In test environment, return true by default\n if (process.env.NODE_ENV === 'test' || process.env.VITEST === 'true') {\n return true;\n }\n\n // Use process.stdout.write instead of console.log to avoid linter issues\n process.stdout.write(message + '\\n');\n process.stdout.write('Please enter \"y\" for yes or \"n\" for no: ');\n\n return new Promise((resolve) => {\n const handleInput = (chunk: string) => {\n const input = chunk.toString().trim().toLowerCase();\n\n if (input === 'y' || input === 'yes') {\n cleanup();\n resolve(true);\n } else if (input === 'n' || input === 'no') {\n cleanup();\n resolve(false);\n } else {\n process.stdout.write('Please enter \"y\" for yes or \"n\" for no: ');\n // Continue listening for input\n }\n };\n\n const cleanup = () => {\n process.stdin.removeListener('data', handleInput);\n process.stdin.pause();\n };\n\n process.stdin.setEncoding('utf8');\n process.stdin.on('data', handleInput);\n process.stdin.resume();\n });\n} "],"names":["readStdin","process","env","NODE_ENV","VITEST","Promise","resolve","input","hasData","resolved","timeout","setTimeout","cleanup","onData","chunk","clearTimeout","onEnd","trim","onError","stdin","removeListener","pause","setEncoding","on","resume","isTTY","promptConfirmation","message","stdout","write","handleInput","toString","toLowerCase"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eldrforge/kodrdriv",
3
- "version": "0.0.25",
3
+ "version": "0.0.26",
4
4
  "description": "Create Intelligent Release Notes or Change Logs from Git",
5
5
  "main": "dist/main.js",
6
6
  "type": "module",
@@ -23,7 +23,7 @@
23
23
  "dependencies": {
24
24
  "@octokit/rest": "^22.0.0",
25
25
  "@riotprompt/riotprompt": "^0.0.7",
26
- "@theunwalked/cardigantime": "^0.0.14",
26
+ "@theunwalked/cardigantime": "^0.0.15",
27
27
  "@theunwalked/unplayable": "^0.0.20",
28
28
  "audify": "^1.9.0",
29
29
  "commander": "^14.0.0",