@eldrforge/kodrdriv 1.2.11 → 1.2.13

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.
@@ -1 +1 @@
1
- {"version":3,"file":"publish.js","sources":["../../src/commands/publish.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport path from 'path';\nimport * as Commit from './commit';\nimport * as Diff from '../content/diff';\nimport * as Release from './release';\n\nimport { getLogger, getDryRunLogger } from '../logging';\nimport { Config, PullRequest } from '../types';\nimport { run, runWithDryRunSupport, runSecure, validateGitRef } from '../util/child';\nimport * as GitHub from '../util/github';\nimport { create as createStorage } from '../util/storage';\nimport { incrementPatchVersion, getOutputPath, calculateTargetVersion, checkIfTagExists, confirmVersionInteractively, calculateBranchDependentVersion } from '../util/general';\nimport { DEFAULT_OUTPUT_DIRECTORY, KODRDRIV_DEFAULTS } from '../constants';\nimport { safeJsonParse, validatePackageJson } from '../util/validation';\nimport { isBranchInSyncWithRemote, safeSyncBranchWithRemote, localBranchExists } from '../util/git';\n\nconst scanNpmrcForEnvVars = async (storage: any): Promise<string[]> => {\n const logger = getLogger();\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\n } catch (error: any) {\n logger.warn(`Failed to read .npmrc file at ${npmrcPath}: ${error.message}`);\n logger.verbose('This may affect environment variable detection for publishing');\n }\n } else {\n logger.debug('.npmrc file not found, skipping environment variable scan');\n }\n\n return envVars;\n};\n\nconst validateEnvironmentVariables = (requiredEnvVars: string[], isDryRun: boolean): void => {\n const logger = getDryRunLogger(isDryRun);\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(`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, targetBranch?: string): Promise<void> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n const storage = createStorage({ log: logger.info });\n\n logger.info('Running prechecks...');\n\n // Check if we're in a git repository\n try {\n if (isDryRun) {\n logger.info('Would check git repository with: git rev-parse --git-dir');\n } else {\n await run('git rev-parse --git-dir');\n }\n\n } catch (error: any) {\n if (!isDryRun) {\n // Preserve the original error message to help with debugging\n const originalMessage = error.message || error.toString();\n throw new Error(`Not in a git repository or git command failed: ${originalMessage}. Please run this command from within a git repository.`);\n }\n }\n\n // Check for uncommitted changes\n logger.info('Checking for uncommitted changes...');\n try {\n if (isDryRun) {\n logger.info('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\n } catch (error: any) {\n if (!isDryRun) {\n // Preserve the original error message to help with debugging\n const originalMessage = error.message || error.toString();\n throw new Error(`Failed to check git status: ${originalMessage}. Please ensure you are in a valid git repository and try again.`);\n }\n }\n\n // Use the passed target branch or fallback to config/default\n const effectiveTargetBranch = targetBranch || runConfig.publish?.targetBranch || 'main';\n\n // Check that we're not running from the target branch\n logger.info('Checking current branch...');\n if (isDryRun) {\n logger.info(`Would verify current branch is not the target branch (${effectiveTargetBranch})`);\n } else {\n const currentBranch = await GitHub.getCurrentBranchName();\n if (currentBranch === effectiveTargetBranch) {\n throw new Error(`Cannot run publish from the target branch '${effectiveTargetBranch}'. Please switch to a different branch before running publish.`);\n }\n }\n\n // Check target branch sync with remote\n logger.info(`Checking target branch '${effectiveTargetBranch}' sync with remote...`);\n if (isDryRun) {\n logger.info(`Would verify target branch '${effectiveTargetBranch}' is in sync with remote origin`);\n } else {\n // Only check if local target branch exists (it's okay if it doesn't exist locally)\n const targetBranchExists = await localBranchExists(effectiveTargetBranch);\n if (targetBranchExists) {\n const syncStatus = await isBranchInSyncWithRemote(effectiveTargetBranch);\n\n if (!syncStatus.inSync) {\n logger.error(`❌ Target branch '${effectiveTargetBranch}' is not in sync with remote.`);\n logger.error('');\n\n if (syncStatus.error) {\n logger.error(` Error: ${syncStatus.error}`);\n } else if (syncStatus.localSha && syncStatus.remoteSha) {\n logger.error(` Local: ${syncStatus.localSha.substring(0, 8)}`);\n logger.error(` Remote: ${syncStatus.remoteSha.substring(0, 8)}`);\n }\n\n logger.error('');\n logger.error('📋 To resolve this issue:');\n logger.error(` 1. Switch to the target branch: git checkout ${effectiveTargetBranch}`);\n logger.error(` 2. Pull the latest changes: git pull origin ${effectiveTargetBranch}`);\n logger.error(' 3. Resolve any merge conflicts if they occur');\n logger.error(' 4. Switch back to your feature branch and re-run publish');\n logger.error('');\n logger.error('💡 Alternatively, run \"kodrdriv publish --sync-target\" to attempt automatic sync.');\n\n throw new Error(`Target branch '${effectiveTargetBranch}' is not in sync with remote. Please sync the branch before running publish.`);\n } else {\n logger.info(`✅ Target branch '${effectiveTargetBranch}' is in sync with remote.`);\n }\n } else {\n logger.info(`â„šī¸ Target branch '${effectiveTargetBranch}' does not exist locally - will be created when needed.`);\n }\n }\n\n // Check if prepublishOnly script exists in package.json\n logger.info('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('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 const parsed = safeJsonParse(packageJsonContents, packageJsonPath);\n packageJson = validatePackageJson(parsed, packageJsonPath);\n\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('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('prepublishOnly script is required in package.json but was not found.');\n }\n }\n }\n\n // Check required environment variables\n logger.verbose('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(`Required environment variables: ${allRequiredEnvVars.join(', ')}`);\n validateEnvironmentVariables(allRequiredEnvVars, isDryRun);\n } else {\n logger.verbose('No required environment variables specified.');\n }\n\n logger.info('All prechecks passed.');\n};\n\n// Helper: deep-sort object keys for stable comparison\nconst sortObjectKeys = (value: any): any => {\n if (Array.isArray(value)) {\n return value.map(sortObjectKeys);\n }\n if (value && typeof value === 'object') {\n const sorted: any = {};\n Object.keys(value).sort().forEach((key) => {\n sorted[key] = sortObjectKeys(value[key]);\n });\n return sorted;\n }\n return value;\n};\n\n// Determine if there are substantive changes compared to the target branch (beyond just version bump)\nconst isReleaseNecessaryComparedToTarget = async (targetBranch: string, isDryRun: boolean): Promise<{ necessary: boolean; reason: string }> => {\n const logger = getDryRunLogger(isDryRun);\n\n // We compare current HEAD branch to the provided target branch\n const currentBranch = await GitHub.getCurrentBranchName();\n\n // Check if target branch exists before trying to compare\n try {\n // Validate target branch exists and is accessible\n await runSecure('git', ['rev-parse', '--verify', targetBranch]);\n } catch (error: any) {\n // Target branch doesn't exist or isn't accessible\n logger.verbose(`Target branch '${targetBranch}' does not exist or is not accessible. Proceeding with publish.`);\n return { necessary: true, reason: `Target branch '${targetBranch}' does not exist; first release to this branch` };\n }\n\n // If branches are identical, nothing to release\n const { stdout: namesStdout } = await runSecure('git', ['diff', '--name-only', `${targetBranch}..${currentBranch}`]);\n const changedFiles = namesStdout.split('\\n').map(s => s.trim()).filter(Boolean);\n\n if (changedFiles.length === 0) {\n // No definitive signal; proceed with publish rather than skipping\n return { necessary: true, reason: 'No detectable changes via diff; proceeding conservatively' };\n }\n\n // If any files changed other than package.json or package-lock.json, a release is necessary\n const nonVersionFiles = changedFiles.filter(f => f !== 'package.json' && f !== 'package-lock.json');\n if (nonVersionFiles.length > 0) {\n return { necessary: true, reason: `Changed files beyond version bump: ${nonVersionFiles.join(', ')}` };\n }\n\n // Only package.json and/or package-lock.json changed. Verify package.json change is only the version field\n try {\n // Read package.json content from both branches\n const { stdout: basePkgStdout } = await runSecure('git', ['show', `${targetBranch}:package.json`]);\n const { stdout: headPkgStdout } = await runSecure('git', ['show', `${currentBranch}:package.json`]);\n\n const basePkg = validatePackageJson(safeJsonParse(basePkgStdout, `${targetBranch}:package.json`), `${targetBranch}:package.json`);\n const headPkg = validatePackageJson(safeJsonParse(headPkgStdout, `${currentBranch}:package.json`), `${currentBranch}:package.json`);\n\n const { version: _baseVersion, ...baseWithoutVersion } = basePkg;\n const { version: _headVersion, ...headWithoutVersion } = headPkg;\n\n const baseSorted = sortObjectKeys(baseWithoutVersion);\n const headSorted = sortObjectKeys(headWithoutVersion);\n\n const equalExceptVersion = JSON.stringify(baseSorted) === JSON.stringify(headSorted);\n if (equalExceptVersion) {\n return { necessary: false, reason: 'Only version changed in package.json (plus lockfile)' };\n }\n\n // Other fields changed inside package.json\n return { necessary: true, reason: 'package.json changes beyond version field' };\n } catch (error: any) {\n // Conservative: if we cannot prove it is only a version change, proceed with release\n logger.verbose(`Could not conclusively compare package.json changes: ${error.message}`);\n return { necessary: true, reason: 'Could not compare package.json safely' };\n }\n};\n\nconst handleTargetBranchSyncRecovery = async (runConfig: Config, targetBranch: string): Promise<void> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n\n logger.info(`🔄 Attempting to sync target branch '${targetBranch}' with remote...`);\n\n if (isDryRun) {\n logger.info(`Would attempt to sync '${targetBranch}' with remote`);\n return;\n }\n\n const syncResult = await safeSyncBranchWithRemote(targetBranch);\n\n if (syncResult.success) {\n logger.info(`✅ Successfully synced '${targetBranch}' with remote.`);\n logger.info('You can now re-run the publish command.');\n } else if (syncResult.conflictResolutionRequired) {\n logger.error(`❌ Failed to sync '${targetBranch}': conflicts detected.`);\n logger.error('');\n logger.error('📋 Manual conflict resolution required:');\n logger.error(` 1. Switch to the target branch: git checkout ${targetBranch}`);\n logger.error(` 2. Pull and resolve conflicts: git pull origin ${targetBranch}`);\n logger.error(' 3. Commit the resolved changes');\n logger.error(' 4. Switch back to your feature branch and re-run publish');\n logger.error('');\n throw new Error(`Target branch '${targetBranch}' has conflicts that require manual resolution.`);\n } else {\n logger.error(`❌ Failed to sync '${targetBranch}': ${syncResult.error}`);\n throw new Error(`Failed to sync target branch: ${syncResult.error}`);\n }\n};\n\nexport const execute = async (runConfig: Config): Promise<void> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n const storage = createStorage({ log: logger.info });\n\n // Get current branch for branch-dependent targeting\n let currentBranch: string;\n if (isDryRun) {\n currentBranch = 'mock-branch';\n } else {\n currentBranch = await GitHub.getCurrentBranchName();\n\n // Fetch latest remote information to avoid conflicts\n logger.info('📡 Fetching latest remote information to avoid conflicts...');\n try {\n await run('git fetch origin');\n logger.info('✅ Fetched latest remote information');\n } catch (error: any) {\n logger.warn(`âš ī¸ Could not fetch from remote: ${error.message}`);\n }\n\n // Sync current branch with remote to avoid conflicts\n logger.info(`🔄 Syncing ${currentBranch} with remote to avoid conflicts...`);\n try {\n const remoteExists = await run(`git ls-remote --exit-code --heads origin ${currentBranch}`).then(() => true).catch(() => false);\n\n if (remoteExists) {\n await run(`git pull origin ${currentBranch} --no-edit`);\n logger.info(`✅ Synced ${currentBranch} with remote`);\n } else {\n logger.info(`â„šī¸ No remote ${currentBranch} branch found, will be created on first push`);\n }\n } catch (error: any) {\n if (error.message && error.message.includes('CONFLICT')) {\n logger.error(`❌ Merge conflicts detected when syncing ${currentBranch} with remote`);\n logger.error(` Please resolve the conflicts manually and then run:`);\n logger.error(` 1. Resolve conflicts in the files`);\n logger.error(` 2. git add <resolved-files>`);\n logger.error(` 3. git commit`);\n logger.error(` 4. kodrdriv publish (to continue)`);\n throw new Error(`Merge conflicts detected when syncing ${currentBranch} with remote. Please resolve conflicts manually.`);\n } else {\n logger.warn(`âš ī¸ Could not sync with remote ${currentBranch}: ${error.message}`);\n }\n }\n }\n\n // Determine target branch and version strategy based on branch configuration\n let targetBranch = runConfig.publish?.targetBranch || 'main';\n let branchDependentVersioning = false;\n\n // Check for branches configuration\n if (runConfig.branches && runConfig.branches[currentBranch]) {\n branchDependentVersioning = true;\n\n const branchConfig = runConfig.branches[currentBranch];\n\n if (branchConfig.targetBranch) {\n targetBranch = branchConfig.targetBranch;\n }\n\n logger.info(`đŸŽ¯ Branch-dependent targeting enabled:`);\n logger.info(` Source branch: ${currentBranch}`);\n logger.info(` Target branch: ${targetBranch}`);\n\n // Look at target branch config to show version strategy\n const targetBranchConfig = runConfig.branches[targetBranch];\n if (targetBranchConfig?.version) {\n const versionType = targetBranchConfig.version.type;\n const versionTag = targetBranchConfig.version.tag;\n const versionIncrement = targetBranchConfig.version.increment;\n\n logger.info(` Target branch version strategy: ${versionType}${versionTag ? ` (tag: ${versionTag})` : ''}${versionIncrement ? ' with increment' : ''}`);\n }\n } else {\n logger.debug(`No branch-specific targeting configured for '${currentBranch}', using default target: ${targetBranch}`);\n }\n\n // Handle --sync-target flag\n if (runConfig.publish?.syncTarget) {\n await handleTargetBranchSyncRecovery(runConfig, targetBranch);\n return; // Exit after sync operation\n }\n\n // Check if target branch exists and create it if needed\n logger.info(`Checking if target branch '${targetBranch}' exists...`);\n if (isDryRun) {\n logger.info(`Would check if target branch '${targetBranch}' exists and create if needed`);\n } else {\n const targetBranchExists = await localBranchExists(targetBranch);\n if (!targetBranchExists) {\n logger.info(`🌟 Target branch '${targetBranch}' does not exist, creating it from current branch...`);\n try {\n // Create the target branch from the current HEAD\n await runSecure('git', ['branch', targetBranch, 'HEAD']);\n logger.info(`✅ Created target branch: ${targetBranch}`);\n\n // Push the new branch to origin\n await runSecure('git', ['push', 'origin', targetBranch]);\n logger.info(`✅ Pushed new target branch to origin: ${targetBranch}`);\n } catch (error: any) {\n throw new Error(`Failed to create target branch '${targetBranch}': ${error.message}`);\n }\n } else {\n logger.info(`✅ Target branch '${targetBranch}' already exists`);\n }\n }\n\n // Run prechecks before starting any work\n await runPrechecks(runConfig, targetBranch);\n\n // Early check: determine if a release is necessary compared to target branch\n logger.info('Evaluating if a release is necessary compared to target branch...');\n try {\n const necessity = await isReleaseNecessaryComparedToTarget(targetBranch, isDryRun);\n if (!necessity.necessary) {\n logger.info(`Skipping publish: ${necessity.reason}.`);\n // Emit a machine-readable marker so tree mode can detect skip and avoid propagating versions\n logger.info('KODRDRIV_PUBLISH_SKIPPED');\n return;\n } else {\n logger.verbose(`Proceeding with publish: ${necessity.reason}.`);\n }\n } catch (error: any) {\n // On unexpected errors, proceed with publish to avoid false negatives blocking releases\n logger.verbose(`Release necessity check encountered an issue (${error.message}). Proceeding with publish.`);\n }\n\n logger.info('Starting release process...');\n\n\n let pr: PullRequest | null = null;\n\n if (isDryRun) {\n logger.info('Would check for existing pull request');\n logger.info('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(`Found existing pull request for branch: ${pr.html_url}`);\n } else {\n logger.info('No open pull request found, starting new release publishing process...');\n\n // STEP 1: Prepare for release (update dependencies and run prepublish checks) with NO version bump yet\n logger.verbose('Preparing for release: switching from workspace to remote dependencies.');\n\n logger.verbose('Updating dependencies to latest versions from registry');\n const updatePatterns = runConfig.publish?.dependencyUpdatePatterns;\n if (updatePatterns && updatePatterns.length > 0) {\n logger.verbose(`Updating dependencies matching patterns: ${updatePatterns.join(', ')}`);\n const patternsArg = updatePatterns.join(' ');\n await runWithDryRunSupport(`npm update ${patternsArg}`, isDryRun);\n } else {\n logger.verbose('No dependency update patterns specified, updating all dependencies');\n await runWithDryRunSupport('npm update', isDryRun);\n }\n\n logger.info('Running prepublishOnly script...');\n await runWithDryRunSupport('npm run prepublishOnly', isDryRun, {}, true); // Use inherited stdio\n\n // STEP 2: Commit dependency updates if any (still no version bump)\n logger.verbose('Staging dependency updates for commit');\n await runWithDryRunSupport('git add package.json package-lock.json', isDryRun);\n\n logger.verbose('Checking for staged dependency updates...');\n if (isDryRun) {\n logger.verbose('Would create dependency update commit if changes are staged');\n } else {\n if (await Diff.hasStagedChanges()) {\n logger.verbose('Staged dependency changes found, creating commit...');\n await Commit.execute(runConfig);\n } else {\n logger.verbose('No dependency changes to commit, skipping commit.');\n }\n }\n\n // STEP 3: Merge target branch into working branch to avoid conflicts\n logger.info(`Merging target branch '${targetBranch}' into current branch to avoid version conflicts...`);\n if (isDryRun) {\n logger.info(`Would merge ${targetBranch} into current branch`);\n } else {\n // Fetch the latest target branch\n try {\n await run(`git fetch origin ${targetBranch}:${targetBranch}`);\n logger.info(`✅ Fetched latest ${targetBranch}`);\n } catch (fetchError: any) {\n logger.warn(`âš ī¸ Could not fetch ${targetBranch}: ${fetchError.message}`);\n logger.warn('Continuing without merge - PR may have conflicts...');\n }\n\n // Check if merge is needed (avoid unnecessary merge commits)\n try {\n const { stdout: mergeBase } = await run(`git merge-base HEAD ${targetBranch}`);\n const { stdout: targetCommit } = await run(`git rev-parse ${targetBranch}`);\n\n if (mergeBase.trim() === targetCommit.trim()) {\n logger.info(`â„šī¸ Already up-to-date with ${targetBranch}, no merge needed`);\n } else {\n // Try to merge target branch into current branch\n let mergeSucceeded = false;\n try {\n await run(`git merge ${targetBranch} --no-edit -m \"Merge ${targetBranch} to sync before version bump\"`);\n logger.info(`✅ Merged ${targetBranch} into current branch`);\n mergeSucceeded = true;\n } catch (mergeError: any) {\n // If merge conflicts occur, check if they're only in version-related files\n const errorText = [mergeError.message || '', mergeError.stdout || '', mergeError.stderr || ''].join(' ');\n if (errorText.includes('CONFLICT')) {\n logger.warn(`âš ī¸ Merge conflicts detected, attempting automatic resolution...`);\n\n // Get list of conflicted files\n const { stdout: conflictedFiles } = await run('git diff --name-only --diff-filter=U');\n const conflicts = conflictedFiles.trim().split('\\n').filter(Boolean);\n\n logger.verbose(`Conflicted files: ${conflicts.join(', ')}`);\n\n // Check if conflicts are only in package.json and package-lock.json\n const versionFiles = ['package.json', 'package-lock.json'];\n const nonVersionConflicts = conflicts.filter(f => !versionFiles.includes(f));\n\n if (nonVersionConflicts.length > 0) {\n logger.error(`❌ Cannot auto-resolve: conflicts in non-version files: ${nonVersionConflicts.join(', ')}`);\n logger.error('');\n logger.error('Please resolve conflicts manually:');\n logger.error(' 1. Resolve conflicts in the files listed above');\n logger.error(' 2. git add <resolved-files>');\n logger.error(' 3. git commit');\n logger.error(' 4. kodrdriv publish (to continue)');\n logger.error('');\n throw new Error(`Merge conflicts in non-version files. Please resolve manually.`);\n }\n\n // Auto-resolve version conflicts by accepting current branch versions\n // (keep our working branch's version, which is likely already updated)\n logger.info(`Auto-resolving version conflicts by keeping current branch versions...`);\n for (const file of conflicts) {\n if (versionFiles.includes(file)) {\n await run(`git checkout --ours ${file}`);\n await run(`git add ${file}`);\n logger.verbose(`Resolved ${file} using current branch version`);\n }\n }\n\n // Complete the merge\n await run(`git commit --no-edit -m \"Merge ${targetBranch} to sync before version bump (auto-resolved version conflicts)\"`);\n logger.info(`✅ Auto-resolved version conflicts and completed merge`);\n mergeSucceeded = true;\n } else {\n // Not a conflict error, re-throw\n throw mergeError;\n }\n }\n\n // Only run npm install if merge actually happened\n if (mergeSucceeded) {\n // Run npm install to update package-lock.json based on merged package.json\n logger.info('Running npm install after merge...');\n await run('npm install');\n logger.info('✅ npm install completed');\n\n // Commit any changes from npm install (e.g., package-lock.json updates)\n const { stdout: mergeChangesStatus } = await run('git status --porcelain');\n if (mergeChangesStatus.trim()) {\n logger.verbose('Staging post-merge changes for commit');\n await run('git add package.json package-lock.json');\n\n if (await Diff.hasStagedChanges()) {\n logger.verbose('Committing post-merge changes...');\n await Commit.execute(runConfig);\n }\n }\n }\n }\n } catch (error: any) {\n // Only catch truly unexpected errors here\n logger.error(`❌ Unexpected error during merge: ${error.message}`);\n throw error;\n }\n }\n\n // STEP 4: Determine and set target version AFTER checks, dependency commit, and target branch merge\n logger.info('Determining target version...');\n let newVersion: string;\n\n if (isDryRun) {\n logger.info('Would determine target version and update package.json');\n newVersion = '1.0.0'; // Mock version for dry run\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const parsed = safeJsonParse(packageJsonContents, 'package.json');\n const packageJson = validatePackageJson(parsed, 'package.json');\n const currentVersion = packageJson.version;\n\n let proposedVersion: string;\n let finalTargetBranch = targetBranch;\n\n if (branchDependentVersioning && runConfig.branches) {\n // Use branch-dependent versioning logic\n const branchDependentResult = await calculateBranchDependentVersion(\n currentVersion,\n currentBranch,\n runConfig.branches,\n targetBranch\n );\n proposedVersion = branchDependentResult.version;\n finalTargetBranch = branchDependentResult.targetBranch;\n\n logger.info(`đŸŽ¯ Branch-dependent version calculated: ${currentVersion} → ${proposedVersion}`);\n logger.info(`đŸŽ¯ Final target branch: ${finalTargetBranch}`);\n\n // Update targetBranch for the rest of the function\n targetBranch = finalTargetBranch;\n } else {\n // Use existing logic for backward compatibility\n const targetVersionInput = runConfig.publish?.targetVersion || 'patch';\n proposedVersion = calculateTargetVersion(currentVersion, targetVersionInput);\n }\n\n const targetTagName = `v${proposedVersion}`;\n const tagExists = await checkIfTagExists(targetTagName);\n if (tagExists) {\n throw new Error(`Tag ${targetTagName} already exists. Please choose a different version or delete the existing tag.`);\n }\n\n if (runConfig.publish?.interactive) {\n newVersion = await confirmVersionInteractively(currentVersion, proposedVersion, runConfig.publish?.targetVersion);\n const confirmedTagName = `v${newVersion}`;\n const confirmedTagExists = await checkIfTagExists(confirmedTagName);\n if (confirmedTagExists) {\n throw new Error(`Tag ${confirmedTagName} already exists. Please choose a different version or delete the existing tag.`);\n }\n } else {\n newVersion = proposedVersion;\n }\n\n logger.info(`Bumping version from ${currentVersion} to ${newVersion}`);\n packageJson.version = newVersion;\n await storage.writeFile('package.json', JSON.stringify(packageJson, null, 2) + '\\n', 'utf-8');\n logger.info(`Version updated in package.json: ${newVersion}`);\n }\n\n // STEP 5: Commit version bump as a separate commit\n logger.verbose('Staging version bump for commit');\n await runWithDryRunSupport('git add package.json package-lock.json', isDryRun);\n\n if (isDryRun) {\n logger.verbose('Would create version bump commit');\n } else {\n if (await Diff.hasStagedChanges()) {\n logger.verbose('Creating version bump commit...');\n await Commit.execute(runConfig);\n } else {\n logger.verbose('No version changes to commit.');\n }\n }\n\n logger.info('Generating release notes...');\n // Create a modified config for release notes generation that includes the publish --from, --interactive, and --from-main options\n const releaseConfig = { ...runConfig };\n if (runConfig.publish?.from || runConfig.publish?.interactive || runConfig.publish?.fromMain) {\n // Pass the publish options to the release config\n releaseConfig.release = {\n ...runConfig.release,\n ...(runConfig.publish.from && { from: runConfig.publish.from }),\n ...(runConfig.publish.interactive && { interactive: runConfig.publish.interactive }),\n ...(runConfig.publish.fromMain && { fromMain: runConfig.publish.fromMain })\n };\n if (runConfig.publish.from) {\n logger.verbose(`Using custom 'from' reference for release notes: ${runConfig.publish.from}`);\n }\n if (runConfig.publish.interactive) {\n logger.verbose('Interactive mode enabled for release notes generation');\n }\n if (runConfig.publish.fromMain) {\n logger.verbose('Forcing comparison against main branch for release notes');\n }\n }\n const releaseSummary = await Release.execute(releaseConfig);\n\n if (isDryRun) {\n logger.info('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('Pushing to origin...');\n // Get current branch name and push explicitly to avoid pushing to wrong remote/branch\n const branchName = await GitHub.getCurrentBranchName();\n await runWithDryRunSupport(`git push origin ${branchName}`, isDryRun);\n\n logger.info('Creating pull request...');\n if (isDryRun) {\n logger.info('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.', branchName, targetBranch);\n if (!pr) {\n throw new Error('Failed to create pull request.');\n }\n logger.info(`Pull request created: ${pr.html_url} (${branchName} → ${targetBranch})`);\n }\n }\n\n logger.info(`Waiting for PR #${pr!.number} checks to complete...`);\n if (!isDryRun) {\n // Configure timeout and user confirmation behavior\n const timeout = runConfig.publish?.checksTimeout || KODRDRIV_DEFAULTS.publish.checksTimeout;\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\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(`Would merge PR #${pr!.number} using ${mergeMethod} method`);\n } else {\n try {\n await GitHub.mergePullRequest(pr!.number, mergeMethod, false); // Don't delete branch\n } catch (error: any) {\n // Check if this is a merge conflict error\n if (error.message && (\n error.message.includes('not mergeable') ||\n error.message.includes('Pull Request is not mergeable') ||\n error.message.includes('merge conflict')\n )) {\n logger.error(`❌ Pull Request #${pr!.number} has merge conflicts that need to be resolved.`);\n logger.error('');\n logger.error('📋 To resolve this issue:');\n logger.error(` 1. Visit the Pull Request: ${pr!.html_url}`);\n logger.error(' 2. Resolve the merge conflicts through GitHub\\'s web interface or locally');\n logger.error(' 3. Once conflicts are resolved, re-run the publish command');\n logger.error('');\n logger.error('💡 The command will automatically detect the existing PR and continue from where it left off.');\n throw new Error(`Merge conflicts detected in PR #${pr!.number}. Please resolve conflicts and re-run the command.`);\n } else {\n // Re-throw other merge errors\n throw error;\n }\n }\n }\n\n // Switch to target branch and pull latest changes\n logger.info(`Checking out target branch: ${targetBranch}...`);\n\n // Check for uncommitted changes and stash them if necessary\n let hasStashedChanges = false;\n if (!isDryRun) {\n const { stdout: statusOutput } = await runSecure('git', ['status', '--porcelain']);\n if (statusOutput.trim()) {\n logger.info('đŸ“Ļ Stashing uncommitted changes before checkout...');\n await runSecure('git', ['stash', 'push', '-m', 'kodrdriv: stash before checkout target branch']);\n hasStashedChanges = true;\n logger.info('✅ Successfully stashed uncommitted changes');\n }\n }\n\n try {\n await runWithDryRunSupport(`git checkout ${targetBranch}`, isDryRun);\n\n // Sync target branch with remote to avoid conflicts during PR creation\n if (!isDryRun) {\n logger.info(`🔄 Syncing ${targetBranch} with remote to avoid PR conflicts...`);\n try {\n const remoteExists = await run(`git ls-remote --exit-code --heads origin ${targetBranch}`).then(() => true).catch(() => false);\n\n if (remoteExists) {\n await run(`git pull origin ${targetBranch} --no-edit`);\n logger.info(`✅ Synced ${targetBranch} with remote`);\n } else {\n logger.info(`â„šī¸ No remote ${targetBranch} branch found, will be created on first push`);\n }\n } catch (syncError: any) {\n if (syncError.message && syncError.message.includes('CONFLICT')) {\n logger.error(`❌ Merge conflicts detected when syncing ${targetBranch} with remote`);\n logger.error(` Please resolve the conflicts manually:`);\n logger.error(` 1. git checkout ${targetBranch}`);\n logger.error(` 2. git pull origin ${targetBranch}`);\n logger.error(` 3. Resolve conflicts in the files`);\n logger.error(` 4. git add <resolved-files>`);\n logger.error(` 5. git commit`);\n logger.error(` 6. git checkout ${currentBranch}`);\n logger.error(` 7. kodrdriv publish (to continue)`);\n throw syncError;\n } else {\n logger.warn(`âš ī¸ Could not sync ${targetBranch} with remote: ${syncError.message}`);\n // Continue with publish process, but log the warning\n }\n }\n } else {\n logger.info(`Would sync ${targetBranch} with remote to avoid PR conflicts`);\n }\n } catch (error: any) {\n // Check if this is a merge conflict or sync issue\n if (!isDryRun && (error.message.includes('conflict') ||\n error.message.includes('CONFLICT') ||\n error.message.includes('diverged') ||\n error.message.includes('non-fast-forward'))) {\n\n logger.error(`❌ Failed to sync target branch '${targetBranch}' with remote.`);\n logger.error('');\n logger.error('📋 Recovery options:');\n logger.error(` 1. Run 'kodrdriv publish --sync-target' to attempt automatic resolution`);\n logger.error(` 2. Manually resolve conflicts:`);\n logger.error(` - git checkout ${targetBranch}`);\n logger.error(` - git pull origin ${targetBranch}`);\n logger.error(` - Resolve any conflicts and commit`);\n logger.error(` - Re-run your original publish command`);\n logger.error('');\n logger.error('💡 The publish process has been stopped to prevent data loss.');\n\n throw new Error(`Target branch '${targetBranch}' sync failed. Use recovery options above to resolve.`);\n } else {\n // Re-throw other errors\n throw error;\n }\n }\n\n // Restore stashed changes if we stashed them\n if (hasStashedChanges) {\n logger.info('đŸ“Ļ Restoring previously stashed changes...');\n try {\n await runSecure('git', ['stash', 'pop']);\n logger.info('✅ Successfully restored stashed changes');\n } catch (stashError: any) {\n logger.warn(`âš ī¸ Warning: Could not restore stashed changes: ${stashError.message}`);\n logger.warn(' Your changes are still available in the git stash. Run \"git stash list\" to see them.');\n }\n }\n\n // Now create and push the tag on the target branch\n logger.info('Creating release tag...');\n let tagName: string;\n if (isDryRun) {\n logger.info('Would read package.json version and create git tag');\n tagName = 'v1.0.0'; // Mock version for dry run\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = safeJsonParse(packageJsonContents, 'package.json');\n tagName = `v${version}`;\n\n // Check if tag already exists locally\n try {\n // Validate tag name to prevent injection\n if (!validateGitRef(tagName)) {\n throw new Error(`Invalid tag name: ${tagName}`);\n }\n const { stdout } = await runSecure('git', ['tag', '-l', tagName]);\n if (stdout.trim() === tagName) {\n logger.info(`Tag ${tagName} already exists locally, skipping tag creation`);\n } else {\n await runSecure('git', ['tag', tagName]);\n logger.info(`Created local tag: ${tagName}`);\n }\n } catch (error) {\n // If git tag -l fails, create the tag anyway\n await runSecure('git', ['tag', tagName]);\n logger.info(`Created local tag: ${tagName}`);\n }\n\n // Check if tag exists on remote before pushing\n let tagWasPushed = false;\n try {\n const { stdout } = await runSecure('git', ['ls-remote', 'origin', `refs/tags/${tagName}`]);\n if (stdout.trim()) {\n logger.info(`Tag ${tagName} already exists on remote, skipping push`);\n } else {\n await runSecure('git', ['push', 'origin', tagName]);\n logger.info(`Pushed tag to remote: ${tagName}`);\n tagWasPushed = true;\n }\n } catch (error) {\n // If ls-remote fails, try to push anyway (might be a new remote)\n try {\n await runSecure('git', ['push', 'origin', tagName]);\n logger.info(`Pushed tag to remote: ${tagName}`);\n tagWasPushed = true;\n } catch (pushError: any) {\n if (pushError.message && pushError.message.includes('already exists')) {\n logger.info(`Tag ${tagName} already exists on remote, continuing...`);\n } else {\n throw pushError;\n }\n }\n }\n\n // If we just pushed a new tag, wait for GitHub to process it\n if (tagWasPushed) {\n logger.verbose('Waiting for GitHub to process the pushed tag...');\n await new Promise(resolve => setTimeout(resolve, 5000)); // 5 second delay\n }\n }\n\n logger.info('Creating GitHub release...');\n if (isDryRun) {\n logger.info('Would read package.json version and create GitHub release with retry logic');\n const milestonesEnabled = !runConfig.publish?.noMilestones;\n if (milestonesEnabled) {\n logger.info('Would close milestone for released version');\n } else {\n logger.info('Would skip milestone closure (--no-milestones)');\n }\n } else {\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\n // Create release with retry logic to handle GitHub tag processing delays\n let retries = 3;\n while (retries > 0) {\n try {\n await GitHub.createRelease(tagName, releaseTitle, releaseNotesContent);\n logger.info(`GitHub release created successfully for tag: ${tagName}`);\n\n // Close milestone for this version if enabled\n const milestonesEnabled = !runConfig.publish?.noMilestones;\n if (milestonesEnabled) {\n logger.info('🏁 Closing milestone for released version...');\n const version = tagName.replace(/^v/, ''); // Remove 'v' prefix if present\n await GitHub.closeMilestoneForVersion(version);\n } else {\n logger.debug('Milestone integration disabled via --no-milestones');\n }\n\n break; // Success - exit retry loop\n } catch (error: any) {\n // Check if this is a tag-not-found error that we can retry\n const isTagNotFoundError = error.message && (\n error.message.includes('not found') ||\n error.message.includes('does not exist') ||\n error.message.includes('Reference does not exist')\n );\n\n if (isTagNotFoundError && retries > 1) {\n logger.verbose(`Tag ${tagName} not yet available on GitHub, retrying in 3 seconds... (${retries - 1} retries left)`);\n await new Promise(resolve => setTimeout(resolve, 3000));\n retries--;\n } else if (isTagNotFoundError) {\n // Tag not found error and we're out of retries\n throw new Error(`Tag ${tagName} was not found on GitHub after ${3 - retries + 1} attempts. This may indicate a problem with tag creation or GitHub synchronization.`);\n } else {\n // Not a tag-not-found error - re-throw the original error\n throw error;\n }\n }\n }\n }\n\n // Wait for release workflows to complete (if enabled)\n const waitForWorkflows = runConfig.publish?.waitForReleaseWorkflows !== false; // default to true\n if (waitForWorkflows) {\n logger.info('Waiting for release workflows...');\n if (isDryRun) {\n logger.info('Would monitor GitHub Actions workflows triggered by release');\n } else {\n const workflowTimeout = runConfig.publish?.releaseWorkflowsTimeout || KODRDRIV_DEFAULTS.publish.releaseWorkflowsTimeout;\n const senditMode = runConfig.publish?.sendit || false;\n const skipUserConfirmation = senditMode || runConfig.publish?.skipUserConfirmation || false;\n\n // Get workflow names - either from config or auto-detect\n let workflowNames = runConfig.publish?.releaseWorkflowNames;\n\n if (!workflowNames || workflowNames.length === 0) {\n logger.info('No specific workflow names configured, auto-detecting workflows triggered by release events...');\n try {\n workflowNames = await GitHub.getWorkflowsTriggeredByRelease();\n if (workflowNames.length === 0) {\n logger.info('No workflows found that are triggered by release events.');\n } else {\n logger.info(`Auto-detected release workflows: ${workflowNames.join(', ')}`);\n }\n } catch (error: any) {\n logger.warn(`Failed to auto-detect release workflows: ${error.message}`);\n workflowNames = undefined; // Fall back to monitoring all workflows\n }\n }\n\n await GitHub.waitForReleaseWorkflows(tagName, {\n timeout: workflowTimeout,\n workflowNames,\n skipUserConfirmation\n });\n }\n } else {\n logger.verbose('Skipping waiting for release workflows (disabled in config).');\n }\n\n // Switch to target branch\n logger.info(`Switching to target branch: ${targetBranch}`);\n await runWithDryRunSupport(`git checkout ${targetBranch}`, isDryRun);\n\n logger.info('Publish process complete.');\n};\n"],"names":["scanNpmrcForEnvVars","storage","logger","getLogger","npmrcPath","path","join","process","cwd","envVars","exists","npmrcContent","readFile","envVarMatches","match","varName","replace","includes","push","error","warn","message","verbose","debug","validateEnvironmentVariables","requiredEnvVars","isDryRun","getDryRunLogger","missingEnvVars","envVar","env","length","Error","runPrechecks","runConfig","targetBranch","dryRun","createStorage","log","info","run","originalMessage","toString","stdout","trim","effectiveTargetBranch","publish","currentBranch","GitHub","targetBranchExists","localBranchExists","syncStatus","isBranchInSyncWithRemote","inSync","localSha","remoteSha","substring","packageJsonPath","packageJson","packageJsonContents","parsed","safeJsonParse","validatePackageJson","scripts","prepublishOnly","coreRequiredEnvVars","npmrcEnvVars","allRequiredEnvVars","Set","sortObjectKeys","value","Array","isArray","map","sorted","Object","keys","sort","forEach","key","isReleaseNecessaryComparedToTarget","runSecure","necessary","reason","namesStdout","changedFiles","split","s","filter","Boolean","nonVersionFiles","f","basePkgStdout","headPkgStdout","basePkg","headPkg","version","_baseVersion","baseWithoutVersion","_headVersion","headWithoutVersion","baseSorted","headSorted","equalExceptVersion","JSON","stringify","handleTargetBranchSyncRecovery","syncResult","safeSyncBranchWithRemote","success","conflictResolutionRequired","execute","remoteExists","then","catch","branchDependentVersioning","branches","branchConfig","targetBranchConfig","versionType","type","versionTag","tag","versionIncrement","increment","syncTarget","necessity","pr","branchName","html_url","updatePatterns","dependencyUpdatePatterns","patternsArg","runWithDryRunSupport","Diff","Commit","fetchError","mergeBase","targetCommit","mergeSucceeded","mergeError","errorText","stderr","conflictedFiles","conflicts","versionFiles","nonVersionConflicts","file","mergeChangesStatus","newVersion","currentVersion","proposedVersion","finalTargetBranch","branchDependentResult","calculateBranchDependentVersion","targetVersionInput","targetVersion","calculateTargetVersion","targetTagName","tagExists","checkIfTagExists","interactive","confirmVersionInteractively","confirmedTagName","confirmedTagExists","writeFile","releaseConfig","from","fromMain","release","releaseSummary","Release","outputDirectory","DEFAULT_OUTPUT_DIRECTORY","ensureDirectory","releaseNotesPath","getOutputPath","releaseTitlePath","body","title","number","labels","commitTitle","timeout","checksTimeout","KODRDRIV_DEFAULTS","senditMode","sendit","skipUserConfirmation","mergeMethod","hasStashedChanges","statusOutput","syncError","stashError","tagName","validateGitRef","tagWasPushed","pushError","Promise","resolve","setTimeout","milestonesEnabled","noMilestones","releaseNotesContent","releaseTitle","retries","isTagNotFoundError","waitForWorkflows","waitForReleaseWorkflows","workflowTimeout","releaseWorkflowsTimeout","workflowNames","releaseWorkflowNames","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"publish.js","sources":["../../src/commands/publish.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport path from 'path';\nimport * as Commit from './commit';\nimport * as Diff from '../content/diff';\nimport * as Release from './release';\n\nimport { getLogger, getDryRunLogger } from '../logging';\nimport { Config, PullRequest } from '../types';\nimport { run, runWithDryRunSupport, runSecure, validateGitRef } from '../util/child';\nimport * as GitHub from '../util/github';\nimport { create as createStorage } from '../util/storage';\nimport { incrementPatchVersion, getOutputPath, calculateTargetVersion, checkIfTagExists, confirmVersionInteractively, calculateBranchDependentVersion } from '../util/general';\nimport { DEFAULT_OUTPUT_DIRECTORY, KODRDRIV_DEFAULTS } from '../constants';\nimport { safeJsonParse, validatePackageJson } from '../util/validation';\nimport { isBranchInSyncWithRemote, safeSyncBranchWithRemote, localBranchExists } from '../util/git';\n\nconst scanNpmrcForEnvVars = async (storage: any): Promise<string[]> => {\n const logger = getLogger();\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\n } catch (error: any) {\n logger.warn(`Failed to read .npmrc file at ${npmrcPath}: ${error.message}`);\n logger.verbose('This may affect environment variable detection for publishing');\n }\n } else {\n logger.debug('.npmrc file not found, skipping environment variable scan');\n }\n\n return envVars;\n};\n\nconst validateEnvironmentVariables = (requiredEnvVars: string[], isDryRun: boolean): void => {\n const logger = getDryRunLogger(isDryRun);\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(`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, targetBranch?: string): Promise<void> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n const storage = createStorage({ log: logger.info });\n\n logger.info('Running prechecks...');\n\n // Check if we're in a git repository\n try {\n if (isDryRun) {\n logger.info('Would check git repository with: git rev-parse --git-dir');\n } else {\n await run('git rev-parse --git-dir');\n }\n\n } catch (error: any) {\n if (!isDryRun) {\n // Preserve the original error message to help with debugging\n const originalMessage = error.message || error.toString();\n throw new Error(`Not in a git repository or git command failed: ${originalMessage}. Please run this command from within a git repository.`);\n }\n }\n\n // Check for uncommitted changes\n logger.info('Checking for uncommitted changes...');\n try {\n if (isDryRun) {\n logger.info('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\n } catch (error: any) {\n if (!isDryRun) {\n // Preserve the original error message to help with debugging\n const originalMessage = error.message || error.toString();\n throw new Error(`Failed to check git status: ${originalMessage}. Please ensure you are in a valid git repository and try again.`);\n }\n }\n\n // Use the passed target branch or fallback to config/default\n const effectiveTargetBranch = targetBranch || runConfig.publish?.targetBranch || 'main';\n\n // Check that we're not running from the target branch\n logger.info('Checking current branch...');\n if (isDryRun) {\n logger.info(`Would verify current branch is not the target branch (${effectiveTargetBranch})`);\n } else {\n const currentBranch = await GitHub.getCurrentBranchName();\n if (currentBranch === effectiveTargetBranch) {\n throw new Error(`Cannot run publish from the target branch '${effectiveTargetBranch}'. Please switch to a different branch before running publish.`);\n }\n }\n\n // Check target branch sync with remote\n logger.info(`Checking target branch '${effectiveTargetBranch}' sync with remote...`);\n if (isDryRun) {\n logger.info(`Would verify target branch '${effectiveTargetBranch}' is in sync with remote origin`);\n } else {\n // Only check if local target branch exists (it's okay if it doesn't exist locally)\n const targetBranchExists = await localBranchExists(effectiveTargetBranch);\n if (targetBranchExists) {\n const syncStatus = await isBranchInSyncWithRemote(effectiveTargetBranch);\n\n if (!syncStatus.inSync) {\n logger.error(`❌ Target branch '${effectiveTargetBranch}' is not in sync with remote.`);\n logger.error('');\n\n if (syncStatus.error) {\n logger.error(` Error: ${syncStatus.error}`);\n } else if (syncStatus.localSha && syncStatus.remoteSha) {\n logger.error(` Local: ${syncStatus.localSha.substring(0, 8)}`);\n logger.error(` Remote: ${syncStatus.remoteSha.substring(0, 8)}`);\n }\n\n logger.error('');\n logger.error('📋 To resolve this issue:');\n logger.error(` 1. Switch to the target branch: git checkout ${effectiveTargetBranch}`);\n logger.error(` 2. Pull the latest changes: git pull origin ${effectiveTargetBranch}`);\n logger.error(' 3. Resolve any merge conflicts if they occur');\n logger.error(' 4. Switch back to your feature branch and re-run publish');\n logger.error('');\n logger.error('💡 Alternatively, run \"kodrdriv publish --sync-target\" to attempt automatic sync.');\n\n throw new Error(`Target branch '${effectiveTargetBranch}' is not in sync with remote. Please sync the branch before running publish.`);\n } else {\n logger.info(`✅ Target branch '${effectiveTargetBranch}' is in sync with remote.`);\n }\n } else {\n logger.info(`â„šī¸ Target branch '${effectiveTargetBranch}' does not exist locally - will be created when needed.`);\n }\n }\n\n // Check if prepublishOnly script exists in package.json\n logger.info('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('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 const parsed = safeJsonParse(packageJsonContents, packageJsonPath);\n packageJson = validatePackageJson(parsed, packageJsonPath);\n\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('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('prepublishOnly script is required in package.json but was not found.');\n }\n }\n }\n\n // Check required environment variables\n logger.verbose('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(`Required environment variables: ${allRequiredEnvVars.join(', ')}`);\n validateEnvironmentVariables(allRequiredEnvVars, isDryRun);\n } else {\n logger.verbose('No required environment variables specified.');\n }\n\n logger.info('All prechecks passed.');\n};\n\n// Helper: deep-sort object keys for stable comparison\nconst sortObjectKeys = (value: any): any => {\n if (Array.isArray(value)) {\n return value.map(sortObjectKeys);\n }\n if (value && typeof value === 'object') {\n const sorted: any = {};\n Object.keys(value).sort().forEach((key) => {\n sorted[key] = sortObjectKeys(value[key]);\n });\n return sorted;\n }\n return value;\n};\n\n// Determine if there are substantive changes compared to the target branch (beyond just version bump)\nconst isReleaseNecessaryComparedToTarget = async (targetBranch: string, isDryRun: boolean): Promise<{ necessary: boolean; reason: string }> => {\n const logger = getDryRunLogger(isDryRun);\n\n // We compare current HEAD branch to the provided target branch\n const currentBranch = await GitHub.getCurrentBranchName();\n\n // Check if target branch exists before trying to compare\n try {\n // Validate target branch exists and is accessible\n await runSecure('git', ['rev-parse', '--verify', targetBranch]);\n } catch (error: any) {\n // Target branch doesn't exist or isn't accessible\n logger.verbose(`Target branch '${targetBranch}' does not exist or is not accessible. Proceeding with publish.`);\n return { necessary: true, reason: `Target branch '${targetBranch}' does not exist; first release to this branch` };\n }\n\n // If branches are identical, nothing to release\n const { stdout: namesStdout } = await runSecure('git', ['diff', '--name-only', `${targetBranch}..${currentBranch}`]);\n const changedFiles = namesStdout.split('\\n').map(s => s.trim()).filter(Boolean);\n\n if (changedFiles.length === 0) {\n // No definitive signal; proceed with publish rather than skipping\n return { necessary: true, reason: 'No detectable changes via diff; proceeding conservatively' };\n }\n\n // If any files changed other than package.json or package-lock.json, a release is necessary\n const nonVersionFiles = changedFiles.filter(f => f !== 'package.json' && f !== 'package-lock.json');\n if (nonVersionFiles.length > 0) {\n return { necessary: true, reason: `Changed files beyond version bump: ${nonVersionFiles.join(', ')}` };\n }\n\n // Only package.json and/or package-lock.json changed. Verify package.json change is only the version field\n try {\n // Read package.json content from both branches\n const { stdout: basePkgStdout } = await runSecure('git', ['show', `${targetBranch}:package.json`]);\n const { stdout: headPkgStdout } = await runSecure('git', ['show', `${currentBranch}:package.json`]);\n\n const basePkg = validatePackageJson(safeJsonParse(basePkgStdout, `${targetBranch}:package.json`), `${targetBranch}:package.json`);\n const headPkg = validatePackageJson(safeJsonParse(headPkgStdout, `${currentBranch}:package.json`), `${currentBranch}:package.json`);\n\n const { version: _baseVersion, ...baseWithoutVersion } = basePkg;\n const { version: _headVersion, ...headWithoutVersion } = headPkg;\n\n const baseSorted = sortObjectKeys(baseWithoutVersion);\n const headSorted = sortObjectKeys(headWithoutVersion);\n\n const equalExceptVersion = JSON.stringify(baseSorted) === JSON.stringify(headSorted);\n if (equalExceptVersion) {\n return { necessary: false, reason: 'Only version changed in package.json (plus lockfile)' };\n }\n\n // Other fields changed inside package.json\n return { necessary: true, reason: 'package.json changes beyond version field' };\n } catch (error: any) {\n // Conservative: if we cannot prove it is only a version change, proceed with release\n logger.verbose(`Could not conclusively compare package.json changes: ${error.message}`);\n return { necessary: true, reason: 'Could not compare package.json safely' };\n }\n};\n\nconst handleTargetBranchSyncRecovery = async (runConfig: Config, targetBranch: string): Promise<void> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n\n logger.info(`🔄 Attempting to sync target branch '${targetBranch}' with remote...`);\n\n if (isDryRun) {\n logger.info(`Would attempt to sync '${targetBranch}' with remote`);\n return;\n }\n\n const syncResult = await safeSyncBranchWithRemote(targetBranch);\n\n if (syncResult.success) {\n logger.info(`✅ Successfully synced '${targetBranch}' with remote.`);\n logger.info('You can now re-run the publish command.');\n } else if (syncResult.conflictResolutionRequired) {\n logger.error(`❌ Failed to sync '${targetBranch}': conflicts detected.`);\n logger.error('');\n logger.error('📋 Manual conflict resolution required:');\n logger.error(` 1. Switch to the target branch: git checkout ${targetBranch}`);\n logger.error(` 2. Pull and resolve conflicts: git pull origin ${targetBranch}`);\n logger.error(' 3. Commit the resolved changes');\n logger.error(' 4. Switch back to your feature branch and re-run publish');\n logger.error('');\n throw new Error(`Target branch '${targetBranch}' has conflicts that require manual resolution.`);\n } else {\n logger.error(`❌ Failed to sync '${targetBranch}': ${syncResult.error}`);\n throw new Error(`Failed to sync target branch: ${syncResult.error}`);\n }\n};\n\nexport const execute = async (runConfig: Config): Promise<void> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n const storage = createStorage({ log: logger.info });\n\n // Get current branch for branch-dependent targeting\n let currentBranch: string;\n if (isDryRun) {\n currentBranch = 'mock-branch';\n } else {\n currentBranch = await GitHub.getCurrentBranchName();\n\n // Fetch latest remote information to avoid conflicts\n logger.info('📡 Fetching latest remote information to avoid conflicts...');\n try {\n await run('git fetch origin');\n logger.info('✅ Fetched latest remote information');\n } catch (error: any) {\n logger.warn(`âš ī¸ Could not fetch from remote: ${error.message}`);\n }\n\n // Sync current branch with remote to avoid conflicts\n logger.info(`🔄 Syncing ${currentBranch} with remote to avoid conflicts...`);\n try {\n const remoteExists = await run(`git ls-remote --exit-code --heads origin ${currentBranch}`).then(() => true).catch(() => false);\n\n if (remoteExists) {\n await run(`git pull origin ${currentBranch} --no-edit`);\n logger.info(`✅ Synced ${currentBranch} with remote`);\n } else {\n logger.info(`â„šī¸ No remote ${currentBranch} branch found, will be created on first push`);\n }\n } catch (error: any) {\n if (error.message && error.message.includes('CONFLICT')) {\n logger.error(`❌ Merge conflicts detected when syncing ${currentBranch} with remote`);\n logger.error(` Please resolve the conflicts manually and then run:`);\n logger.error(` 1. Resolve conflicts in the files`);\n logger.error(` 2. git add <resolved-files>`);\n logger.error(` 3. git commit`);\n logger.error(` 4. kodrdriv publish (to continue)`);\n throw new Error(`Merge conflicts detected when syncing ${currentBranch} with remote. Please resolve conflicts manually.`);\n } else {\n logger.warn(`âš ī¸ Could not sync with remote ${currentBranch}: ${error.message}`);\n }\n }\n }\n\n // Determine target branch and version strategy based on branch configuration\n let targetBranch = runConfig.publish?.targetBranch || 'main';\n let branchDependentVersioning = false;\n\n // Check for branches configuration\n if (runConfig.branches && runConfig.branches[currentBranch]) {\n branchDependentVersioning = true;\n\n const branchConfig = runConfig.branches[currentBranch];\n\n if (branchConfig.targetBranch) {\n targetBranch = branchConfig.targetBranch;\n }\n\n logger.info(`đŸŽ¯ Branch-dependent targeting enabled:`);\n logger.info(` Source branch: ${currentBranch}`);\n logger.info(` Target branch: ${targetBranch}`);\n\n // Look at target branch config to show version strategy\n const targetBranchConfig = runConfig.branches[targetBranch];\n if (targetBranchConfig?.version) {\n const versionType = targetBranchConfig.version.type;\n const versionTag = targetBranchConfig.version.tag;\n const versionIncrement = targetBranchConfig.version.increment;\n\n logger.info(` Target branch version strategy: ${versionType}${versionTag ? ` (tag: ${versionTag})` : ''}${versionIncrement ? ' with increment' : ''}`);\n }\n } else {\n logger.debug(`No branch-specific targeting configured for '${currentBranch}', using default target: ${targetBranch}`);\n }\n\n // Handle --sync-target flag\n if (runConfig.publish?.syncTarget) {\n await handleTargetBranchSyncRecovery(runConfig, targetBranch);\n return; // Exit after sync operation\n }\n\n // Check if target branch exists and create it if needed\n logger.info(`Checking if target branch '${targetBranch}' exists...`);\n if (isDryRun) {\n logger.info(`Would check if target branch '${targetBranch}' exists and create if needed`);\n } else {\n const targetBranchExists = await localBranchExists(targetBranch);\n if (!targetBranchExists) {\n logger.info(`🌟 Target branch '${targetBranch}' does not exist, creating it from current branch...`);\n try {\n // Create the target branch from the current HEAD\n await runSecure('git', ['branch', targetBranch, 'HEAD']);\n logger.info(`✅ Created target branch: ${targetBranch}`);\n\n // Push the new branch to origin\n await runSecure('git', ['push', 'origin', targetBranch]);\n logger.info(`✅ Pushed new target branch to origin: ${targetBranch}`);\n } catch (error: any) {\n throw new Error(`Failed to create target branch '${targetBranch}': ${error.message}`);\n }\n } else {\n logger.info(`✅ Target branch '${targetBranch}' already exists`);\n }\n }\n\n // Run prechecks before starting any work\n await runPrechecks(runConfig, targetBranch);\n\n // Early check: determine if a release is necessary compared to target branch\n logger.info('Evaluating if a release is necessary compared to target branch...');\n try {\n const necessity = await isReleaseNecessaryComparedToTarget(targetBranch, isDryRun);\n if (!necessity.necessary) {\n logger.info(`Skipping publish: ${necessity.reason}.`);\n // Emit a machine-readable marker so tree mode can detect skip and avoid propagating versions\n logger.info('KODRDRIV_PUBLISH_SKIPPED');\n return;\n } else {\n logger.verbose(`Proceeding with publish: ${necessity.reason}.`);\n }\n } catch (error: any) {\n // On unexpected errors, proceed with publish to avoid false negatives blocking releases\n logger.verbose(`Release necessity check encountered an issue (${error.message}). Proceeding with publish.`);\n }\n\n logger.info('Starting release process...');\n\n\n let pr: PullRequest | null = null;\n\n if (isDryRun) {\n logger.info('Would check for existing pull request');\n logger.info('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(`Found existing pull request for branch: ${pr.html_url}`);\n } else {\n logger.info('No open pull request found, starting new release publishing process...');\n\n // STEP 1: Prepare for release (update dependencies and run prepublish checks) with NO version bump yet\n logger.verbose('Preparing for release: switching from workspace to remote dependencies.');\n\n logger.verbose('Updating dependencies to latest versions from registry');\n const updatePatterns = runConfig.publish?.dependencyUpdatePatterns;\n if (updatePatterns && updatePatterns.length > 0) {\n logger.verbose(`Updating dependencies matching patterns: ${updatePatterns.join(', ')}`);\n const patternsArg = updatePatterns.join(' ');\n await runWithDryRunSupport(`npm update ${patternsArg}`, isDryRun);\n } else {\n logger.verbose('No dependency update patterns specified, updating all dependencies');\n await runWithDryRunSupport('npm update', isDryRun);\n }\n\n logger.info('Running prepublishOnly script...');\n await runWithDryRunSupport('npm run prepublishOnly', isDryRun, {}, true); // Use inherited stdio\n\n // STEP 2: Commit dependency updates if any (still no version bump)\n logger.verbose('Staging dependency updates for commit');\n await runWithDryRunSupport('git add package.json package-lock.json', isDryRun);\n\n logger.verbose('Checking for staged dependency updates...');\n if (isDryRun) {\n logger.verbose('Would create dependency update commit if changes are staged');\n } else {\n if (await Diff.hasStagedChanges()) {\n logger.verbose('Staged dependency changes found, creating commit...');\n await Commit.execute(runConfig);\n } else {\n logger.verbose('No dependency changes to commit, skipping commit.');\n }\n }\n\n // STEP 3: Merge target branch into working branch (optional - now skipped by default since post-publish sync keeps branches in sync)\n const skipPreMerge = runConfig.publish?.skipPrePublishMerge !== false; // Default to true (skip)\n\n if (skipPreMerge) {\n logger.verbose(`â­ī¸ Skipping pre-publish merge (post-publish sync will handle branch synchronization)`);\n } else {\n logger.info(`Merging target branch '${targetBranch}' into current branch to avoid version conflicts...`);\n if (isDryRun) {\n logger.info(`Would merge ${targetBranch} into current branch`);\n } else {\n // Fetch the latest target branch\n try {\n await run(`git fetch origin ${targetBranch}:${targetBranch}`);\n logger.info(`✅ Fetched latest ${targetBranch}`);\n } catch (fetchError: any) {\n logger.warn(`âš ī¸ Could not fetch ${targetBranch}: ${fetchError.message}`);\n logger.warn('Continuing without merge - PR may have conflicts...');\n }\n\n // Check if merge is needed (avoid unnecessary merge commits)\n try {\n const { stdout: mergeBase } = await run(`git merge-base HEAD ${targetBranch}`);\n const { stdout: targetCommit } = await run(`git rev-parse ${targetBranch}`);\n\n if (mergeBase.trim() === targetCommit.trim()) {\n logger.info(`â„šī¸ Already up-to-date with ${targetBranch}, no merge needed`);\n } else {\n // Try to merge target branch into current branch\n let mergeSucceeded = false;\n try {\n await run(`git merge ${targetBranch} --no-edit -m \"Merge ${targetBranch} to sync before version bump\"`);\n logger.info(`✅ Merged ${targetBranch} into current branch`);\n mergeSucceeded = true;\n } catch (mergeError: any) {\n // If merge conflicts occur, check if they're only in version-related files\n const errorText = [mergeError.message || '', mergeError.stdout || '', mergeError.stderr || ''].join(' ');\n if (errorText.includes('CONFLICT')) {\n logger.warn(`âš ī¸ Merge conflicts detected, attempting automatic resolution...`);\n\n // Get list of conflicted files\n const { stdout: conflictedFiles } = await run('git diff --name-only --diff-filter=U');\n const conflicts = conflictedFiles.trim().split('\\n').filter(Boolean);\n\n logger.verbose(`Conflicted files: ${conflicts.join(', ')}`);\n\n // Check if conflicts are only in package.json and package-lock.json\n const versionFiles = ['package.json', 'package-lock.json'];\n const nonVersionConflicts = conflicts.filter(f => !versionFiles.includes(f));\n\n if (nonVersionConflicts.length > 0) {\n logger.error(`❌ Cannot auto-resolve: conflicts in non-version files: ${nonVersionConflicts.join(', ')}`);\n logger.error('');\n logger.error('Please resolve conflicts manually:');\n logger.error(' 1. Resolve conflicts in the files listed above');\n logger.error(' 2. git add <resolved-files>');\n logger.error(' 3. git commit');\n logger.error(' 4. kodrdriv publish (to continue)');\n logger.error('');\n throw new Error(`Merge conflicts in non-version files. Please resolve manually.`);\n }\n\n // Auto-resolve version conflicts by accepting current branch versions\n // (keep our working branch's version, which is likely already updated)\n logger.info(`Auto-resolving version conflicts by keeping current branch versions...`);\n for (const file of conflicts) {\n if (versionFiles.includes(file)) {\n await run(`git checkout --ours ${file}`);\n await run(`git add ${file}`);\n logger.verbose(`Resolved ${file} using current branch version`);\n }\n }\n\n // Complete the merge\n await run(`git commit --no-edit -m \"Merge ${targetBranch} to sync before version bump (auto-resolved version conflicts)\"`);\n logger.info(`✅ Auto-resolved version conflicts and completed merge`);\n mergeSucceeded = true;\n } else {\n // Not a conflict error, re-throw\n throw mergeError;\n }\n }\n\n // Only run npm install if merge actually happened\n if (mergeSucceeded) {\n // Run npm install to update package-lock.json based on merged package.json\n logger.info('Running npm install after merge...');\n await run('npm install');\n logger.info('✅ npm install completed');\n\n // Commit any changes from npm install (e.g., package-lock.json updates)\n const { stdout: mergeChangesStatus } = await run('git status --porcelain');\n if (mergeChangesStatus.trim()) {\n logger.verbose('Staging post-merge changes for commit');\n await run('git add package.json package-lock.json');\n\n if (await Diff.hasStagedChanges()) {\n logger.verbose('Committing post-merge changes...');\n await Commit.execute(runConfig);\n }\n }\n }\n }\n } catch (error: any) {\n // Only catch truly unexpected errors here\n logger.error(`❌ Unexpected error during merge: ${error.message}`);\n throw error;\n }\n }\n }\n\n // STEP 4: Determine and set target version AFTER checks, dependency commit, and target branch merge\n logger.info('Determining target version...');\n let newVersion: string;\n\n if (isDryRun) {\n logger.info('Would determine target version and update package.json');\n newVersion = '1.0.0'; // Mock version for dry run\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const parsed = safeJsonParse(packageJsonContents, 'package.json');\n const packageJson = validatePackageJson(parsed, 'package.json');\n const currentVersion = packageJson.version;\n\n let proposedVersion: string;\n let finalTargetBranch = targetBranch;\n\n if (branchDependentVersioning && runConfig.branches) {\n // Use branch-dependent versioning logic\n const branchDependentResult = await calculateBranchDependentVersion(\n currentVersion,\n currentBranch,\n runConfig.branches,\n targetBranch\n );\n proposedVersion = branchDependentResult.version;\n finalTargetBranch = branchDependentResult.targetBranch;\n\n logger.info(`đŸŽ¯ Branch-dependent version calculated: ${currentVersion} → ${proposedVersion}`);\n logger.info(`đŸŽ¯ Final target branch: ${finalTargetBranch}`);\n\n // Update targetBranch for the rest of the function\n targetBranch = finalTargetBranch;\n } else {\n // Use existing logic for backward compatibility\n const targetVersionInput = runConfig.publish?.targetVersion || 'patch';\n proposedVersion = calculateTargetVersion(currentVersion, targetVersionInput);\n }\n\n const targetTagName = `v${proposedVersion}`;\n const tagExists = await checkIfTagExists(targetTagName);\n if (tagExists) {\n throw new Error(`Tag ${targetTagName} already exists. Please choose a different version or delete the existing tag.`);\n }\n\n if (runConfig.publish?.interactive) {\n newVersion = await confirmVersionInteractively(currentVersion, proposedVersion, runConfig.publish?.targetVersion);\n const confirmedTagName = `v${newVersion}`;\n const confirmedTagExists = await checkIfTagExists(confirmedTagName);\n if (confirmedTagExists) {\n throw new Error(`Tag ${confirmedTagName} already exists. Please choose a different version or delete the existing tag.`);\n }\n } else {\n newVersion = proposedVersion;\n }\n\n logger.info(`Bumping version from ${currentVersion} to ${newVersion}`);\n packageJson.version = newVersion;\n await storage.writeFile('package.json', JSON.stringify(packageJson, null, 2) + '\\n', 'utf-8');\n logger.info(`Version updated in package.json: ${newVersion}`);\n }\n\n // STEP 5: Commit version bump as a separate commit\n logger.verbose('Staging version bump for commit');\n await runWithDryRunSupport('git add package.json package-lock.json', isDryRun);\n\n if (isDryRun) {\n logger.verbose('Would create version bump commit');\n } else {\n if (await Diff.hasStagedChanges()) {\n logger.verbose('Creating version bump commit...');\n await Commit.execute(runConfig);\n } else {\n logger.verbose('No version changes to commit.');\n }\n }\n\n logger.info('Generating release notes...');\n // Create a modified config for release notes generation that includes the publish --from, --interactive, and --from-main options\n const releaseConfig = { ...runConfig };\n if (runConfig.publish?.from || runConfig.publish?.interactive || runConfig.publish?.fromMain) {\n // Pass the publish options to the release config\n releaseConfig.release = {\n ...runConfig.release,\n ...(runConfig.publish.from && { from: runConfig.publish.from }),\n ...(runConfig.publish.interactive && { interactive: runConfig.publish.interactive }),\n ...(runConfig.publish.fromMain && { fromMain: runConfig.publish.fromMain })\n };\n if (runConfig.publish.from) {\n logger.verbose(`Using custom 'from' reference for release notes: ${runConfig.publish.from}`);\n }\n if (runConfig.publish.interactive) {\n logger.verbose('Interactive mode enabled for release notes generation');\n }\n if (runConfig.publish.fromMain) {\n logger.verbose('Forcing comparison against main branch for release notes');\n }\n }\n const releaseSummary = await Release.execute(releaseConfig);\n\n if (isDryRun) {\n logger.info('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('Pushing to origin...');\n // Get current branch name and push explicitly to avoid pushing to wrong remote/branch\n const branchName = await GitHub.getCurrentBranchName();\n await runWithDryRunSupport(`git push origin ${branchName}`, isDryRun);\n\n logger.info('Creating pull request...');\n if (isDryRun) {\n logger.info('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.', branchName, targetBranch);\n if (!pr) {\n throw new Error('Failed to create pull request.');\n }\n logger.info(`Pull request created: ${pr.html_url} (${branchName} → ${targetBranch})`);\n }\n }\n\n logger.info(`Waiting for PR #${pr!.number} checks to complete...`);\n if (!isDryRun) {\n // Configure timeout and user confirmation behavior\n const timeout = runConfig.publish?.checksTimeout || KODRDRIV_DEFAULTS.publish.checksTimeout;\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\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(`Would merge PR #${pr!.number} using ${mergeMethod} method`);\n } else {\n try {\n await GitHub.mergePullRequest(pr!.number, mergeMethod, false); // Don't delete branch\n } catch (error: any) {\n // Check if this is a merge conflict error\n if (error.message && (\n error.message.includes('not mergeable') ||\n error.message.includes('Pull Request is not mergeable') ||\n error.message.includes('merge conflict')\n )) {\n logger.error(`❌ Pull Request #${pr!.number} has merge conflicts that need to be resolved.`);\n logger.error('');\n logger.error('📋 To resolve this issue:');\n logger.error(` 1. Visit the Pull Request: ${pr!.html_url}`);\n logger.error(' 2. Resolve the merge conflicts through GitHub\\'s web interface or locally');\n logger.error(' 3. Once conflicts are resolved, re-run the publish command');\n logger.error('');\n logger.error('💡 The command will automatically detect the existing PR and continue from where it left off.');\n throw new Error(`Merge conflicts detected in PR #${pr!.number}. Please resolve conflicts and re-run the command.`);\n } else {\n // Re-throw other merge errors\n throw error;\n }\n }\n }\n\n // Switch to target branch and pull latest changes\n logger.info(`Checking out target branch: ${targetBranch}...`);\n\n // Check for uncommitted changes and stash them if necessary\n let hasStashedChanges = false;\n if (!isDryRun) {\n const { stdout: statusOutput } = await runSecure('git', ['status', '--porcelain']);\n if (statusOutput.trim()) {\n logger.info('đŸ“Ļ Stashing uncommitted changes before checkout...');\n await runSecure('git', ['stash', 'push', '-m', 'kodrdriv: stash before checkout target branch']);\n hasStashedChanges = true;\n logger.info('✅ Successfully stashed uncommitted changes');\n }\n }\n\n try {\n await runWithDryRunSupport(`git checkout ${targetBranch}`, isDryRun);\n\n // Sync target branch with remote to avoid conflicts during PR creation\n if (!isDryRun) {\n logger.info(`🔄 Syncing ${targetBranch} with remote to avoid PR conflicts...`);\n try {\n const remoteExists = await run(`git ls-remote --exit-code --heads origin ${targetBranch}`).then(() => true).catch(() => false);\n\n if (remoteExists) {\n await run(`git pull origin ${targetBranch} --no-edit`);\n logger.info(`✅ Synced ${targetBranch} with remote`);\n } else {\n logger.info(`â„šī¸ No remote ${targetBranch} branch found, will be created on first push`);\n }\n } catch (syncError: any) {\n if (syncError.message && syncError.message.includes('CONFLICT')) {\n logger.error(`❌ Merge conflicts detected when syncing ${targetBranch} with remote`);\n logger.error(` Please resolve the conflicts manually:`);\n logger.error(` 1. git checkout ${targetBranch}`);\n logger.error(` 2. git pull origin ${targetBranch}`);\n logger.error(` 3. Resolve conflicts in the files`);\n logger.error(` 4. git add <resolved-files>`);\n logger.error(` 5. git commit`);\n logger.error(` 6. git checkout ${currentBranch}`);\n logger.error(` 7. kodrdriv publish (to continue)`);\n throw syncError;\n } else {\n logger.warn(`âš ī¸ Could not sync ${targetBranch} with remote: ${syncError.message}`);\n // Continue with publish process, but log the warning\n }\n }\n } else {\n logger.info(`Would sync ${targetBranch} with remote to avoid PR conflicts`);\n }\n } catch (error: any) {\n // Check if this is a merge conflict or sync issue\n if (!isDryRun && (error.message.includes('conflict') ||\n error.message.includes('CONFLICT') ||\n error.message.includes('diverged') ||\n error.message.includes('non-fast-forward'))) {\n\n logger.error(`❌ Failed to sync target branch '${targetBranch}' with remote.`);\n logger.error('');\n logger.error('📋 Recovery options:');\n logger.error(` 1. Run 'kodrdriv publish --sync-target' to attempt automatic resolution`);\n logger.error(` 2. Manually resolve conflicts:`);\n logger.error(` - git checkout ${targetBranch}`);\n logger.error(` - git pull origin ${targetBranch}`);\n logger.error(` - Resolve any conflicts and commit`);\n logger.error(` - Re-run your original publish command`);\n logger.error('');\n logger.error('💡 The publish process has been stopped to prevent data loss.');\n\n throw new Error(`Target branch '${targetBranch}' sync failed. Use recovery options above to resolve.`);\n } else {\n // Re-throw other errors\n throw error;\n }\n }\n\n // Restore stashed changes if we stashed them\n if (hasStashedChanges) {\n logger.info('đŸ“Ļ Restoring previously stashed changes...');\n try {\n await runSecure('git', ['stash', 'pop']);\n logger.info('✅ Successfully restored stashed changes');\n } catch (stashError: any) {\n logger.warn(`âš ī¸ Warning: Could not restore stashed changes: ${stashError.message}`);\n logger.warn(' Your changes are still available in the git stash. Run \"git stash list\" to see them.');\n }\n }\n\n // Now create and push the tag on the target branch\n logger.info('Creating release tag...');\n let tagName: string;\n if (isDryRun) {\n logger.info('Would read package.json version and create git tag');\n tagName = 'v1.0.0'; // Mock version for dry run\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = safeJsonParse(packageJsonContents, 'package.json');\n tagName = `v${version}`;\n\n // Check if tag already exists locally\n try {\n // Validate tag name to prevent injection\n if (!validateGitRef(tagName)) {\n throw new Error(`Invalid tag name: ${tagName}`);\n }\n const { stdout } = await runSecure('git', ['tag', '-l', tagName]);\n if (stdout.trim() === tagName) {\n logger.info(`Tag ${tagName} already exists locally, skipping tag creation`);\n } else {\n await runSecure('git', ['tag', tagName]);\n logger.info(`Created local tag: ${tagName}`);\n }\n } catch (error) {\n // If git tag -l fails, create the tag anyway\n await runSecure('git', ['tag', tagName]);\n logger.info(`Created local tag: ${tagName}`);\n }\n\n // Check if tag exists on remote before pushing\n let tagWasPushed = false;\n try {\n const { stdout } = await runSecure('git', ['ls-remote', 'origin', `refs/tags/${tagName}`]);\n if (stdout.trim()) {\n logger.info(`Tag ${tagName} already exists on remote, skipping push`);\n } else {\n await runSecure('git', ['push', 'origin', tagName]);\n logger.info(`Pushed tag to remote: ${tagName}`);\n tagWasPushed = true;\n }\n } catch (error) {\n // If ls-remote fails, try to push anyway (might be a new remote)\n try {\n await runSecure('git', ['push', 'origin', tagName]);\n logger.info(`Pushed tag to remote: ${tagName}`);\n tagWasPushed = true;\n } catch (pushError: any) {\n if (pushError.message && pushError.message.includes('already exists')) {\n logger.info(`Tag ${tagName} already exists on remote, continuing...`);\n } else {\n throw pushError;\n }\n }\n }\n\n // If we just pushed a new tag, wait for GitHub to process it\n if (tagWasPushed) {\n logger.verbose('Waiting for GitHub to process the pushed tag...');\n await new Promise(resolve => setTimeout(resolve, 5000)); // 5 second delay\n }\n }\n\n logger.info('Creating GitHub release...');\n if (isDryRun) {\n logger.info('Would read package.json version and create GitHub release with retry logic');\n const milestonesEnabled = !runConfig.publish?.noMilestones;\n if (milestonesEnabled) {\n logger.info('Would close milestone for released version');\n } else {\n logger.info('Would skip milestone closure (--no-milestones)');\n }\n } else {\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\n // Create release with retry logic to handle GitHub tag processing delays\n let retries = 3;\n while (retries > 0) {\n try {\n await GitHub.createRelease(tagName, releaseTitle, releaseNotesContent);\n logger.info(`GitHub release created successfully for tag: ${tagName}`);\n\n // Close milestone for this version if enabled\n const milestonesEnabled = !runConfig.publish?.noMilestones;\n if (milestonesEnabled) {\n logger.info('🏁 Closing milestone for released version...');\n const version = tagName.replace(/^v/, ''); // Remove 'v' prefix if present\n await GitHub.closeMilestoneForVersion(version);\n } else {\n logger.debug('Milestone integration disabled via --no-milestones');\n }\n\n break; // Success - exit retry loop\n } catch (error: any) {\n // Check if this is a tag-not-found error that we can retry\n const isTagNotFoundError = error.message && (\n error.message.includes('not found') ||\n error.message.includes('does not exist') ||\n error.message.includes('Reference does not exist')\n );\n\n if (isTagNotFoundError && retries > 1) {\n logger.verbose(`Tag ${tagName} not yet available on GitHub, retrying in 3 seconds... (${retries - 1} retries left)`);\n await new Promise(resolve => setTimeout(resolve, 3000));\n retries--;\n } else if (isTagNotFoundError) {\n // Tag not found error and we're out of retries\n throw new Error(`Tag ${tagName} was not found on GitHub after ${3 - retries + 1} attempts. This may indicate a problem with tag creation or GitHub synchronization.`);\n } else {\n // Not a tag-not-found error - re-throw the original error\n throw error;\n }\n }\n }\n }\n\n // Wait for release workflows to complete (if enabled)\n const waitForWorkflows = runConfig.publish?.waitForReleaseWorkflows !== false; // default to true\n if (waitForWorkflows) {\n logger.info('Waiting for release workflows...');\n if (isDryRun) {\n logger.info('Would monitor GitHub Actions workflows triggered by release');\n } else {\n const workflowTimeout = runConfig.publish?.releaseWorkflowsTimeout || KODRDRIV_DEFAULTS.publish.releaseWorkflowsTimeout;\n const senditMode = runConfig.publish?.sendit || false;\n const skipUserConfirmation = senditMode || runConfig.publish?.skipUserConfirmation || false;\n\n // Get workflow names - either from config or auto-detect\n let workflowNames = runConfig.publish?.releaseWorkflowNames;\n\n if (!workflowNames || workflowNames.length === 0) {\n logger.info('No specific workflow names configured, auto-detecting workflows triggered by release events...');\n try {\n workflowNames = await GitHub.getWorkflowsTriggeredByRelease();\n if (workflowNames.length === 0) {\n logger.info('No workflows found that are triggered by release events.');\n } else {\n logger.info(`Auto-detected release workflows: ${workflowNames.join(', ')}`);\n }\n } catch (error: any) {\n logger.warn(`Failed to auto-detect release workflows: ${error.message}`);\n workflowNames = undefined; // Fall back to monitoring all workflows\n }\n }\n\n await GitHub.waitForReleaseWorkflows(tagName, {\n timeout: workflowTimeout,\n workflowNames,\n skipUserConfirmation\n });\n }\n } else {\n logger.verbose('Skipping waiting for release workflows (disabled in config).');\n }\n\n // Switch back to source branch and sync with target\n logger.info('');\n logger.info('🔄 Syncing source branch with target after publish...');\n await runWithDryRunSupport(`git checkout ${currentBranch}`, isDryRun);\n\n if (!isDryRun) {\n // Merge target into source (should be fast-forward since PR just merged)\n logger.info(`Merging ${targetBranch} into ${currentBranch}...`);\n try {\n await run(`git merge ${targetBranch} --ff-only`);\n logger.info(`✅ Merged ${targetBranch} into ${currentBranch}`);\n } catch (error: any) {\n // If ff-only fails, something is wrong - source diverged somehow\n logger.error(`❌ Failed to fast-forward merge ${targetBranch} into ${currentBranch}`);\n logger.error(' This suggests the source branch has commits not in target.');\n logger.error(' This should not happen after a successful PR merge.');\n logger.warn('âš ī¸ Attempting regular merge...');\n await run(`git merge ${targetBranch} --no-edit`);\n }\n\n // Determine version bump based on branch configuration\n let versionCommand = 'prepatch'; // Default\n let versionTag = 'dev'; // Default\n\n if (branchDependentVersioning && runConfig.branches) {\n const sourceBranchConfig = runConfig.branches[currentBranch];\n if (sourceBranchConfig?.version) {\n // Use configured version strategy for source branch\n if (sourceBranchConfig.version.increment) {\n versionCommand = `pre${sourceBranchConfig.version.increment}`;\n }\n if (sourceBranchConfig.version.tag) {\n versionTag = sourceBranchConfig.version.tag;\n }\n }\n }\n\n // Bump to next development version\n logger.info(`Bumping to next development version...`);\n try {\n const { stdout: newVersion } = await run(`npm version ${versionCommand} --preid=${versionTag}`);\n logger.info(`✅ Version bumped to: ${newVersion.trim()}`);\n } catch (versionError: any) {\n logger.warn(`âš ī¸ Failed to bump version: ${versionError.message}`);\n logger.warn(' You may need to manually bump the version for next development cycle.');\n }\n\n // Push updated source branch\n logger.info(`Pushing updated ${currentBranch} branch...`);\n try {\n await run(`git push origin ${currentBranch}`);\n logger.info(`✅ Pushed ${currentBranch} to origin`);\n } catch (pushError: any) {\n logger.warn(`âš ī¸ Failed to push ${currentBranch}: ${pushError.message}`);\n logger.warn(` Please push manually: git push origin ${currentBranch}`);\n }\n } else {\n logger.info(`Would merge ${targetBranch} into ${currentBranch} with --ff-only`);\n logger.info(`Would bump version to next development version`);\n logger.info(`Would push ${currentBranch} to origin`);\n }\n\n logger.info('');\n logger.info(`✅ Publish complete - on ${currentBranch} with next development version`);\n};\n"],"names":["scanNpmrcForEnvVars","storage","logger","getLogger","npmrcPath","path","join","process","cwd","envVars","exists","npmrcContent","readFile","envVarMatches","match","varName","replace","includes","push","error","warn","message","verbose","debug","validateEnvironmentVariables","requiredEnvVars","isDryRun","getDryRunLogger","missingEnvVars","envVar","env","length","Error","runPrechecks","runConfig","targetBranch","dryRun","createStorage","log","info","run","originalMessage","toString","stdout","trim","effectiveTargetBranch","publish","currentBranch","GitHub","targetBranchExists","localBranchExists","syncStatus","isBranchInSyncWithRemote","inSync","localSha","remoteSha","substring","packageJsonPath","packageJson","packageJsonContents","parsed","safeJsonParse","validatePackageJson","scripts","prepublishOnly","coreRequiredEnvVars","npmrcEnvVars","allRequiredEnvVars","Set","sortObjectKeys","value","Array","isArray","map","sorted","Object","keys","sort","forEach","key","isReleaseNecessaryComparedToTarget","runSecure","necessary","reason","namesStdout","changedFiles","split","s","filter","Boolean","nonVersionFiles","f","basePkgStdout","headPkgStdout","basePkg","headPkg","version","_baseVersion","baseWithoutVersion","_headVersion","headWithoutVersion","baseSorted","headSorted","equalExceptVersion","JSON","stringify","handleTargetBranchSyncRecovery","syncResult","safeSyncBranchWithRemote","success","conflictResolutionRequired","execute","remoteExists","then","catch","branchDependentVersioning","branches","branchConfig","targetBranchConfig","versionType","type","versionTag","tag","versionIncrement","increment","syncTarget","necessity","pr","branchName","html_url","updatePatterns","dependencyUpdatePatterns","patternsArg","runWithDryRunSupport","Diff","Commit","skipPreMerge","skipPrePublishMerge","fetchError","mergeBase","targetCommit","mergeSucceeded","mergeError","errorText","stderr","conflictedFiles","conflicts","versionFiles","nonVersionConflicts","file","mergeChangesStatus","newVersion","currentVersion","proposedVersion","finalTargetBranch","branchDependentResult","calculateBranchDependentVersion","targetVersionInput","targetVersion","calculateTargetVersion","targetTagName","tagExists","checkIfTagExists","interactive","confirmVersionInteractively","confirmedTagName","confirmedTagExists","writeFile","releaseConfig","from","fromMain","release","releaseSummary","Release","outputDirectory","DEFAULT_OUTPUT_DIRECTORY","ensureDirectory","releaseNotesPath","getOutputPath","releaseTitlePath","body","title","number","labels","commitTitle","timeout","checksTimeout","KODRDRIV_DEFAULTS","senditMode","sendit","skipUserConfirmation","mergeMethod","hasStashedChanges","statusOutput","syncError","stashError","tagName","validateGitRef","tagWasPushed","pushError","Promise","resolve","setTimeout","milestonesEnabled","noMilestones","releaseNotesContent","releaseTitle","retries","isTagNotFoundError","waitForWorkflows","waitForReleaseWorkflows","workflowTimeout","releaseWorkflowsTimeout","workflowNames","releaseWorkflowNames","undefined","versionCommand","sourceBranchConfig","versionError"],"mappings":"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"}
@@ -329,6 +329,11 @@ const extractPublishedVersion = async (packageDir, packageLogger)=>{
329
329
  // Enhanced run function that can show output based on log level
330
330
  const runWithLogging = async (command, packageLogger, options = {}, showOutput = 'none')=>{
331
331
  const execPromise = util.promisify(exec);
332
+ // Ensure encoding is set to 'utf8' to get string output instead of Buffer
333
+ const execOptions = {
334
+ encoding: 'utf8',
335
+ ...options
336
+ };
332
337
  if (showOutput === 'full') {
333
338
  packageLogger.debug(`Executing command: ${command}`);
334
339
  // Use info level to show on console in debug mode
@@ -337,28 +342,34 @@ const runWithLogging = async (command, packageLogger, options = {}, showOutput =
337
342
  packageLogger.verbose(`Running: ${command}`);
338
343
  }
339
344
  try {
340
- const result = await execPromise(command, options);
345
+ const result = await execPromise(command, execOptions);
341
346
  if (showOutput === 'full') {
342
- if (result.stdout.trim()) {
347
+ const stdout = String(result.stdout);
348
+ const stderr = String(result.stderr);
349
+ if (stdout.trim()) {
343
350
  packageLogger.debug('STDOUT:');
344
- packageLogger.debug(result.stdout);
351
+ packageLogger.debug(stdout);
345
352
  // Show on console using info level for immediate feedback
346
353
  packageLogger.info(`📤 STDOUT:`);
347
- result.stdout.split('\n').forEach((line)=>{
354
+ stdout.split('\n').forEach((line)=>{
348
355
  if (line.trim()) packageLogger.info(`${line}`);
349
356
  });
350
357
  }
351
- if (result.stderr.trim()) {
358
+ if (stderr.trim()) {
352
359
  packageLogger.debug('STDERR:');
353
- packageLogger.debug(result.stderr);
360
+ packageLogger.debug(stderr);
354
361
  // Show on console using info level for immediate feedback
355
362
  packageLogger.info(`âš ī¸ STDERR:`);
356
- result.stderr.split('\n').forEach((line)=>{
363
+ stderr.split('\n').forEach((line)=>{
357
364
  if (line.trim()) packageLogger.info(`${line}`);
358
365
  });
359
366
  }
360
367
  }
361
- return result;
368
+ // Ensure result is properly typed as strings
369
+ return {
370
+ stdout: String(result.stdout),
371
+ stderr: String(result.stderr)
372
+ };
362
373
  } catch (error) {
363
374
  if (showOutput === 'full' || showOutput === 'minimal') {
364
375
  packageLogger.error(`Command failed: ${command}`);