@eldrforge/kodrdriv 1.2.28 → 1.2.123
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/application.js +16 -13
- package/dist/application.js.map +1 -1
- package/dist/arguments.js +5 -5
- package/dist/arguments.js.map +1 -1
- package/dist/commands/audio-review.js +2 -5
- package/dist/commands/audio-review.js.map +1 -1
- package/dist/commands/clean.js +2 -4
- package/dist/commands/clean.js.map +1 -1
- package/dist/commands/commit.js +3 -6
- package/dist/commands/commit.js.map +1 -1
- package/dist/commands/development.js +7 -7
- package/dist/commands/development.js.map +1 -1
- package/dist/commands/link.js +3 -7
- package/dist/commands/link.js.map +1 -1
- package/dist/commands/precommit.js +99 -0
- package/dist/commands/precommit.js.map +1 -0
- package/dist/commands/publish.js +47 -32
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/release.js +3 -7
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/review.js +4 -6
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/tree.js +271 -88
- package/dist/commands/tree.js.map +1 -1
- package/dist/commands/unlink.js +3 -7
- package/dist/commands/unlink.js.map +1 -1
- package/dist/commands/updates.js +2 -4
- package/dist/commands/updates.js.map +1 -1
- package/dist/commands/versions.js +3 -7
- package/dist/commands/versions.js.map +1 -1
- package/dist/constants.js +4 -2
- package/dist/constants.js.map +1 -1
- package/dist/content/files.js +2 -4
- package/dist/content/files.js.map +1 -1
- package/dist/execution/CommandValidator.js +33 -1
- package/dist/execution/CommandValidator.js.map +1 -1
- package/dist/execution/DynamicTaskPool.js +96 -9
- package/dist/execution/DynamicTaskPool.js.map +1 -1
- package/dist/execution/ResourceMonitor.js +26 -1
- package/dist/execution/ResourceMonitor.js.map +1 -1
- package/dist/execution/TreeExecutionAdapter.js +6 -3
- package/dist/execution/TreeExecutionAdapter.js.map +1 -1
- package/dist/util/checkpointManager.js +2 -4
- package/dist/util/checkpointManager.js.map +1 -1
- package/dist/util/dependencyGraph.js +2 -4
- package/dist/util/dependencyGraph.js.map +1 -1
- package/dist/util/general.js +7 -107
- package/dist/util/general.js.map +1 -1
- package/dist/util/gitMutex.js +63 -18
- package/dist/util/gitMutex.js.map +1 -1
- package/dist/util/precommitOptimizations.js +310 -0
- package/dist/util/precommitOptimizations.js.map +1 -0
- package/dist/util/storageAdapter.js +2 -6
- package/dist/util/storageAdapter.js.map +1 -1
- package/dist/utils/branchState.js +178 -45
- package/dist/utils/branchState.js.map +1 -1
- package/package.json +6 -5
- package/AI-FRIENDLY-LOGGING-GUIDE.md +0 -237
- package/AI-LOGGING-MIGRATION-COMPLETE.md +0 -371
- package/ALREADY-PUBLISHED-PACKAGES-FIX.md +0 -264
- package/AUDIT-BRANCHES-PROGRESS-FIX.md +0 -90
- package/AUDIT-EXAMPLE-OUTPUT.md +0 -113
- package/CHECKPOINT-RECOVERY-FIX.md +0 -450
- package/LOGGING-MIGRATION-STATUS.md +0 -186
- package/MONOREPO-PUBLISH-IMPROVEMENTS.md +0 -281
- package/PARALLEL-EXECUTION-FIXES.md +0 -132
- package/PARALLEL-PUBLISH-FIXES-IMPLEMENTED.md +0 -405
- package/PARALLEL-PUBLISH-IMPROVEMENTS-IMPLEMENTED.md +0 -439
- package/PARALLEL-PUBLISH-QUICK-REFERENCE.md +0 -375
- package/PARALLEL_EXECUTION_FIX.md +0 -146
- package/PUBLISH_IMPROVEMENTS_IMPLEMENTED.md +0 -294
- package/RECOVERY-FIXES.md +0 -72
- package/SUBMODULE-LOCK-FIX.md +0 -132
- package/VERSION-AUDIT-FIX.md +0 -333
- package/WORKFLOW-PRECHECK-IMPLEMENTATION.md +0 -239
- package/WORKFLOW-SKIP-SUMMARY.md +0 -121
- package/dist/util/safety.js +0 -166
- package/dist/util/safety.js.map +0 -1
- package/dist/util/stdin.js +0 -133
- package/dist/util/stdin.js.map +0 -1
- package/dist/util/storage.js +0 -187
- package/dist/util/storage.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branchState.js","sources":["../../src/utils/branchState.ts"],"sourcesContent":["import { run } from '@eldrforge/git-tools';\nimport { getLogger } from '../logging';\n\nexport interface BranchStatus {\n name: string;\n isOnExpectedBranch: boolean;\n expectedBranch?: string;\n ahead: number;\n behind: number;\n hasUnpushedCommits: boolean;\n needsSync: boolean;\n remoteExists: boolean;\n hasMergeConflicts?: boolean;\n conflictsWith?: string;\n hasOpenPR?: boolean;\n prUrl?: string;\n prNumber?: number;\n}\n\nexport interface VersionStatus {\n version: string;\n isValid: boolean;\n issue?: string;\n fix?: string;\n}\n\nexport interface TargetBranchSyncStatus {\n targetBranch: string;\n localExists: boolean;\n remoteExists: boolean;\n localSha?: string;\n remoteSha?: string;\n exactMatch: boolean;\n canFastForward: boolean;\n needsReset: boolean;\n error?: string;\n}\n\nexport interface PackageBranchAudit {\n packageName: string;\n path: string;\n status: BranchStatus;\n versionStatus?: VersionStatus;\n targetBranchSync?: TargetBranchSyncStatus;\n issues: string[];\n fixes: string[];\n}\n\nexport interface BranchAuditResult {\n totalPackages: number;\n goodPackages: number;\n issuesFound: number;\n versionIssues: number;\n targetBranchSyncIssues: number;\n audits: PackageBranchAudit[];\n}\n\n/**\n * Check the branch status for a package\n */\nexport async function checkBranchStatus(\n packagePath: string,\n expectedBranch?: string,\n targetBranch: string = 'main',\n checkPR: boolean = false\n): Promise<BranchStatus> {\n const logger = getLogger();\n const originalCwd = process.cwd();\n\n try {\n process.chdir(packagePath);\n\n // Get current branch\n const { stdout: currentBranch } = await run('git rev-parse --abbrev-ref HEAD');\n const branch = currentBranch.trim();\n\n // Check if remote exists\n let remoteExists = false;\n try {\n await run(`git ls-remote --exit-code --heads origin ${branch}`);\n remoteExists = true;\n } catch {\n remoteExists = false;\n }\n\n // Get ahead/behind counts if remote exists\n let ahead = 0;\n let behind = 0;\n\n if (remoteExists) {\n try {\n const { stdout: revList } = await run(`git rev-list --left-right --count origin/${branch}...HEAD`);\n const [behindStr, aheadStr] = revList.trim().split('\\t');\n behind = parseInt(behindStr, 10) || 0;\n ahead = parseInt(aheadStr, 10) || 0;\n } catch (error) {\n logger.verbose(`Could not get ahead/behind counts for ${packagePath}: ${error}`);\n }\n }\n\n // Check for merge conflicts with target branch\n let hasMergeConflicts = false;\n let conflictsWith: string | undefined;\n\n if (branch !== targetBranch) {\n try {\n // Fetch latest to ensure we're checking against current target\n logger.verbose(` Fetching latest from origin for ${packagePath}...`);\n await run('git fetch origin --quiet');\n\n logger.verbose(` Checking for merge conflicts with ${targetBranch}...`);\n // Use git merge-tree to test for conflicts without actually merging\n const { stdout: mergeTree } = await run(`git merge-tree $(git merge-base ${branch} origin/${targetBranch}) ${branch} origin/${targetBranch}`);\n\n // If merge-tree output contains conflict markers, there are conflicts\n if (mergeTree.includes('<<<<<<<') || mergeTree.includes('=======') || mergeTree.includes('>>>>>>>')) {\n hasMergeConflicts = true;\n conflictsWith = targetBranch;\n logger.verbose(` ⚠️ Merge conflicts detected with ${targetBranch}`);\n }\n } catch (error: any) {\n // If merge-tree fails, might be due to git version or other issues\n logger.verbose(`Could not check merge conflicts for ${packagePath}: ${error.message}`);\n }\n }\n\n // Check for existing PR if requested\n let hasOpenPR = false;\n let prUrl: string | undefined;\n let prNumber: number | undefined;\n\n if (checkPR) {\n try {\n logger.verbose(` Checking GitHub for existing PRs...`);\n const { findOpenPullRequestByHeadRef } = await import('@eldrforge/github-tools');\n const pr = await findOpenPullRequestByHeadRef(branch);\n if (pr) {\n hasOpenPR = true;\n prUrl = pr.html_url;\n prNumber = pr.number;\n logger.verbose(` Found existing PR #${prNumber}: ${prUrl}`);\n }\n } catch (error: any) {\n logger.verbose(`Could not check for PR for ${packagePath}: ${error.message}`);\n }\n }\n\n const isOnExpectedBranch = !expectedBranch || branch === expectedBranch;\n const hasUnpushedCommits = ahead > 0;\n const needsSync = behind > 0;\n\n return {\n name: branch,\n isOnExpectedBranch,\n expectedBranch,\n ahead,\n behind,\n hasUnpushedCommits,\n needsSync,\n remoteExists,\n hasMergeConflicts,\n conflictsWith,\n hasOpenPR,\n prUrl,\n prNumber,\n };\n } finally {\n process.chdir(originalCwd);\n }\n}\n\n/**\n * Check if target branch (e.g., main) is exactly in sync with remote\n */\nexport async function checkTargetBranchSync(\n packagePath: string,\n targetBranch: string = 'main'\n): Promise<TargetBranchSyncStatus> {\n const logger = getLogger();\n const originalCwd = process.cwd();\n\n try {\n process.chdir(packagePath);\n\n // Fetch latest from origin to ensure we have current info\n try {\n await run('git fetch origin --quiet');\n } catch (error: any) {\n logger.verbose(`Could not fetch from origin in ${packagePath}: ${error.message}`);\n }\n\n // Check if local target branch exists\n let localExists = false;\n let localSha: string | undefined;\n try {\n const { stdout } = await run(`git rev-parse --verify ${targetBranch}`);\n localSha = stdout.trim();\n localExists = true;\n } catch {\n localExists = false;\n }\n\n // Check if remote target branch exists\n let remoteExists = false;\n let remoteSha: string | undefined;\n try {\n const { stdout } = await run(`git ls-remote origin ${targetBranch}`);\n if (stdout.trim()) {\n remoteSha = stdout.split(/\\s+/)[0];\n remoteExists = true;\n }\n } catch {\n remoteExists = false;\n }\n\n // Determine sync status\n const exactMatch = localExists && remoteExists && localSha === remoteSha;\n let canFastForward = false;\n let needsReset = false;\n\n if (localExists && remoteExists && !exactMatch) {\n // Check if local is ancestor of remote (can fast-forward)\n try {\n await run(`git merge-base --is-ancestor ${targetBranch} origin/${targetBranch}`);\n canFastForward = true;\n needsReset = false;\n } catch {\n // Local is not ancestor of remote, need reset\n canFastForward = false;\n needsReset = true;\n }\n }\n\n return {\n targetBranch,\n localExists,\n remoteExists,\n localSha,\n remoteSha,\n exactMatch,\n canFastForward,\n needsReset,\n };\n } catch (error: any) {\n return {\n targetBranch,\n localExists: false,\n remoteExists: false,\n exactMatch: false,\n canFastForward: false,\n needsReset: false,\n error: error.message,\n };\n } finally {\n process.chdir(originalCwd);\n }\n}\n\n/**\n * Audit branch state across multiple packages\n */\nexport async function auditBranchState(\n packages: Array<{ name: string; path: string }>,\n expectedBranch?: string,\n options: {\n targetBranch?: string;\n checkPR?: boolean;\n checkConflicts?: boolean;\n checkVersions?: boolean;\n } = {}\n): Promise<BranchAuditResult> {\n const logger = getLogger();\n const audits: PackageBranchAudit[] = [];\n const targetBranch = options.targetBranch || 'main';\n const checkPR = options.checkPR !== false; // Default true\n const checkConflicts = options.checkConflicts !== false; // Default true\n const checkVersions = options.checkVersions !== false; // Default true\n\n logger.info(`BRANCH_STATE_AUDIT: Auditing branch state for packages | Package Count: ${packages.length} | Purpose: Verify synchronization`);\n\n // If no expected branch specified, find the most common branch\n let actualExpectedBranch = expectedBranch;\n if (!expectedBranch) {\n const branchCounts = new Map<string, number>();\n\n logger.info('📋 Phase 1/2: Detecting most common branch across packages...');\n\n // First pass: collect all branch names\n for (let i = 0; i < packages.length; i++) {\n const pkg = packages[i];\n logger.info(` [${i + 1}/${packages.length}] Checking branch: ${pkg.name}`);\n const status = await checkBranchStatus(pkg.path);\n branchCounts.set(status.name, (branchCounts.get(status.name) || 0) + 1);\n }\n\n // Find most common branch\n let maxCount = 0;\n for (const [branch, count] of branchCounts.entries()) {\n if (count > maxCount) {\n maxCount = count;\n actualExpectedBranch = branch;\n }\n }\n\n logger.info(`✓ Most common branch: ${actualExpectedBranch} (${maxCount}/${packages.length} packages)`);\n }\n\n logger.info(`\\n📋 Phase 2/2: Auditing package state (checking git status, conflicts, PRs, versions)...`);\n for (let i = 0; i < packages.length; i++) {\n const pkg = packages[i];\n logger.info(` [${i + 1}/${packages.length}] Auditing: ${pkg.name}`);\n\n const status = await checkBranchStatus(\n pkg.path,\n actualExpectedBranch,\n targetBranch,\n checkPR\n );\n const issues: string[] = [];\n const fixes: string[] = [];\n let versionStatus: VersionStatus | undefined;\n\n // Check for issues\n if (!status.isOnExpectedBranch && actualExpectedBranch) {\n issues.push(`On branch '${status.name}' (most packages are on '${actualExpectedBranch}')`);\n fixes.push(`cd ${pkg.path} && git checkout ${actualExpectedBranch}`);\n }\n\n if (checkConflicts && status.hasMergeConflicts && status.conflictsWith) {\n issues.push(`⚠️ MERGE CONFLICTS with '${status.conflictsWith}'`);\n fixes.push(`cd ${pkg.path} && git merge origin/${status.conflictsWith} # Resolve conflicts manually`);\n }\n\n if (checkPR && status.hasOpenPR) {\n issues.push(`Has existing PR #${status.prNumber}: ${status.prUrl}`);\n fixes.push(`# Review PR: ${status.prUrl}`);\n }\n\n if (status.hasUnpushedCommits) {\n issues.push(`Ahead of remote by ${status.ahead} commit(s)`);\n fixes.push(`cd ${pkg.path} && git push origin ${status.name}`);\n }\n\n if (status.needsSync) {\n issues.push(`Behind remote by ${status.behind} commit(s)`);\n fixes.push(`cd ${pkg.path} && git pull origin ${status.name}`);\n }\n\n if (!status.remoteExists) {\n issues.push(`Remote branch does not exist`);\n fixes.push(`cd ${pkg.path} && git push -u origin ${status.name}`);\n }\n\n // Check version consistency if enabled\n if (checkVersions) {\n try {\n const { validateVersionForBranch } = await import('../util/general');\n const fs = await import('fs/promises');\n const pathModule = await import('path');\n\n const packageJsonPath = pathModule.join(pkg.path, 'package.json');\n const packageJsonContent = await fs.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent);\n const version = packageJson.version;\n\n const validation = validateVersionForBranch(version, status.name);\n\n versionStatus = {\n version,\n isValid: validation.valid,\n issue: validation.issue,\n fix: validation.fix\n };\n\n if (!validation.valid) {\n issues.push(`Version: ${version} - ${validation.issue}`);\n fixes.push(`cd ${pkg.path} && kodrdriv development # ${validation.fix}`);\n }\n } catch (error: any) {\n logger.verbose(`Could not check version for ${pkg.name}: ${error.message}`);\n }\n }\n\n // Check target branch sync (e.g., is local main exactly in sync with remote main?)\n const targetBranchSync = await checkTargetBranchSync(pkg.path, targetBranch);\n\n if (targetBranchSync.localExists && targetBranchSync.remoteExists && !targetBranchSync.exactMatch) {\n if (targetBranchSync.needsReset) {\n issues.push(`Target branch '${targetBranch}' is NOT in sync with remote (local has diverged)`);\n fixes.push(`cd ${pkg.path} && git checkout ${targetBranch} && git reset --hard origin/${targetBranch} && git checkout ${status.name}`);\n } else if (targetBranchSync.canFastForward) {\n issues.push(`Target branch '${targetBranch}' is behind remote (can fast-forward)`);\n fixes.push(`cd ${pkg.path} && git checkout ${targetBranch} && git pull origin ${targetBranch} && git checkout ${status.name}`);\n } else {\n issues.push(`Target branch '${targetBranch}' is NOT in exact sync with remote`);\n fixes.push(`cd ${pkg.path} && git checkout ${targetBranch} && git pull origin ${targetBranch} && git checkout ${status.name}`);\n }\n } else if (!targetBranchSync.localExists && targetBranchSync.remoteExists) {\n // Local target branch doesn't exist (this is OK - will be created during publish)\n logger.verbose(`Local ${targetBranch} doesn't exist in ${pkg.name} - will be created when needed`);\n } else if (targetBranchSync.error) {\n logger.verbose(`Could not check target branch sync for ${pkg.name}: ${targetBranchSync.error}`);\n }\n\n audits.push({\n packageName: pkg.name,\n path: pkg.path,\n status,\n versionStatus,\n targetBranchSync,\n issues,\n fixes,\n });\n }\n\n const issuesFound = audits.filter(a => a.issues.length > 0).length;\n const versionIssues = audits.filter(a => a.versionStatus && !a.versionStatus.isValid).length;\n const targetBranchSyncIssues = audits.filter(a => a.targetBranchSync && !a.targetBranchSync.exactMatch && a.targetBranchSync.localExists && a.targetBranchSync.remoteExists).length;\n const goodPackages = audits.filter(a => a.issues.length === 0).length;\n\n logger.info(`✓ Audit complete: ${goodPackages}/${packages.length} packages have no issues`);\n if (issuesFound > 0) {\n logger.info(` Issues found in ${issuesFound} package(s)`);\n }\n\n return {\n totalPackages: packages.length,\n goodPackages,\n issuesFound,\n versionIssues,\n targetBranchSyncIssues,\n audits,\n };\n}\n\n/**\n * Format audit results for display with detailed fix instructions\n */\nexport function formatAuditResults(result: BranchAuditResult): string {\n const lines: string[] = [];\n\n // Determine the common branch if any\n const branchCounts = new Map<string, number>();\n for (const audit of result.audits) {\n const branch = audit.status.name;\n branchCounts.set(branch, (branchCounts.get(branch) || 0) + 1);\n }\n\n let commonBranch: string | undefined;\n let maxCount = 0;\n for (const [branch, count] of branchCounts.entries()) {\n if (count > maxCount) {\n maxCount = count;\n commonBranch = branch;\n }\n }\n\n lines.push('╔══════════════════════════════════════════════════════════════╗');\n lines.push(`║ Branch State Audit (${result.totalPackages} packages)`.padEnd(63) + '║');\n if (commonBranch && maxCount === result.totalPackages) {\n lines.push(`║ All packages on: ${commonBranch}`.padEnd(63) + '║');\n } else if (commonBranch) {\n lines.push(`║ Most packages on: ${commonBranch} (${maxCount}/${result.totalPackages})`.padEnd(63) + '║');\n }\n lines.push('╠══════════════════════════════════════════════════════════════╣');\n lines.push('');\n\n if (result.goodPackages > 0) {\n lines.push(`✅ Good State (${result.goodPackages} package${result.goodPackages === 1 ? '' : 's'}):`);\n\n const goodAudits = result.audits.filter(a => a.issues.length === 0);\n const displayCount = Math.min(goodAudits.length, 5);\n goodAudits.slice(0, displayCount).forEach(audit => {\n const versionInfo = audit.versionStatus ? ` (v${audit.versionStatus.version})` : '';\n lines.push(` ${audit.packageName}${versionInfo}`);\n });\n\n if (goodAudits.length > displayCount) {\n lines.push(` ... and ${goodAudits.length - displayCount} more`);\n }\n lines.push('');\n }\n\n // Show version issues prominently if any\n if (result.versionIssues > 0) {\n lines.push(`⚠️ Version Issues (${result.versionIssues} package${result.versionIssues === 1 ? '' : 's'}):`);\n\n const versionIssueAudits = result.audits.filter(a => a.versionStatus && !a.versionStatus.isValid);\n versionIssueAudits.forEach(audit => {\n lines.push(` ${audit.packageName}`);\n lines.push(` - Branch: ${audit.status.name}`);\n lines.push(` - Version: ${audit.versionStatus!.version}`);\n lines.push(` - Issue: ${audit.versionStatus!.issue}`);\n lines.push(` - Fix: ${audit.versionStatus!.fix}`);\n lines.push('');\n });\n }\n\n // Show target branch sync issues prominently if any\n if (result.targetBranchSyncIssues > 0) {\n lines.push(`🚨 Target Branch Sync Issues (${result.targetBranchSyncIssues} package${result.targetBranchSyncIssues === 1 ? '' : 's'}):`);\n lines.push(` ⚠️ ${result.targetBranchSyncIssues} package${result.targetBranchSyncIssues === 1 ? '' : 's'} with target branch NOT in sync with remote`);\n lines.push(` This will cause \"branch out of sync\" errors during parallel publish!`);\n lines.push('');\n\n const targetSyncIssueAudits = result.audits.filter(a => a.targetBranchSync && !a.targetBranchSync.exactMatch && a.targetBranchSync.localExists && a.targetBranchSync.remoteExists);\n targetSyncIssueAudits.forEach(audit => {\n const sync = audit.targetBranchSync!;\n lines.push(` ${audit.packageName}`);\n lines.push(` - Target Branch: ${sync.targetBranch}`);\n lines.push(` - Local SHA: ${sync.localSha?.substring(0, 8)}...`);\n lines.push(` - Remote SHA: ${sync.remoteSha?.substring(0, 8)}...`);\n if (sync.needsReset) {\n lines.push(` - Action: RESET REQUIRED (local has diverged)`);\n } else if (sync.canFastForward) {\n lines.push(` - Action: Pull to fast-forward`);\n }\n lines.push('');\n });\n }\n\n if (result.issuesFound > 0) {\n // Count critical issues (merge conflicts, existing PRs, target branch sync)\n const conflictCount = result.audits.filter(a => a.status.hasMergeConflicts).length;\n const prCount = result.audits.filter(a => a.status.hasOpenPR).length;\n const branchInconsistentCount = result.audits.filter(a => !a.status.isOnExpectedBranch).length;\n const unpushedCount = result.audits.filter(a => a.status.hasUnpushedCommits).length;\n const behindCount = result.audits.filter(a => a.status.needsSync).length;\n const noRemoteCount = result.audits.filter(a => !a.status.remoteExists).length;\n\n if (conflictCount > 0 || prCount > 0 || result.targetBranchSyncIssues > 0) {\n lines.push(`🚨 CRITICAL ISSUES:`);\n if (result.targetBranchSyncIssues > 0) {\n lines.push(` 🔄 ${result.targetBranchSyncIssues} package${result.targetBranchSyncIssues === 1 ? '' : 's'} with target branch sync issues`);\n }\n if (conflictCount > 0) {\n lines.push(` ⚠️ ${conflictCount} package${conflictCount === 1 ? '' : 's'} with merge conflicts`);\n }\n if (prCount > 0) {\n lines.push(` 📋 ${prCount} package${prCount === 1 ? '' : 's'} with existing PRs`);\n }\n lines.push('');\n }\n\n lines.push(`⚠️ Issues Summary:`);\n if (result.targetBranchSyncIssues > 0) lines.push(` • ${result.targetBranchSyncIssues} target branch sync issue${result.targetBranchSyncIssues === 1 ? '' : 's'}`);\n if (conflictCount > 0) lines.push(` • ${conflictCount} merge conflict${conflictCount === 1 ? '' : 's'}`);\n if (prCount > 0) lines.push(` • ${prCount} existing PR${prCount === 1 ? '' : 's'}`);\n if (branchInconsistentCount > 0) lines.push(` • ${branchInconsistentCount} branch inconsistenc${branchInconsistentCount === 1 ? 'y' : 'ies'}`);\n if (unpushedCount > 0) lines.push(` • ${unpushedCount} package${unpushedCount === 1 ? '' : 's'} with unpushed commits`);\n if (behindCount > 0) lines.push(` • ${behindCount} package${behindCount === 1 ? '' : 's'} behind remote`);\n if (noRemoteCount > 0) lines.push(` • ${noRemoteCount} package${noRemoteCount === 1 ? '' : 's'} with no remote branch`);\n lines.push('');\n\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('📋 DETAILED ISSUES AND FIXES:');\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('');\n\n // Sort issues by severity: conflicts first, then PRs, then others\n const auditsWithIssues = result.audits.filter(a => a.issues.length > 0);\n const sortedAudits = auditsWithIssues.sort((a, b) => {\n const aScore = (a.status.hasMergeConflicts ? 1000 : 0) + (a.status.hasOpenPR ? 100 : 0);\n const bScore = (b.status.hasMergeConflicts ? 1000 : 0) + (b.status.hasOpenPR ? 100 : 0);\n return bScore - aScore;\n });\n\n sortedAudits.forEach((audit, index) => {\n // Highlight critical issues\n const hasCritical = audit.status.hasMergeConflicts || audit.status.hasOpenPR;\n const prefix = hasCritical ? '🚨 CRITICAL' : '⚠️ WARNING';\n\n lines.push(`${prefix} [${index + 1}/${sortedAudits.length}] ${audit.packageName}`);\n lines.push(`Location: ${audit.path}`);\n lines.push(`Branch: ${audit.status.name}`);\n\n if (audit.status.remoteExists) {\n const syncStatus = [];\n if (audit.status.ahead > 0) syncStatus.push(`ahead ${audit.status.ahead}`);\n if (audit.status.behind > 0) syncStatus.push(`behind ${audit.status.behind}`);\n if (syncStatus.length > 0) {\n lines.push(`Sync: ${syncStatus.join(', ')}`);\n }\n } else {\n lines.push(`Remote: Does not exist`);\n }\n\n lines.push('');\n lines.push('Issues:');\n audit.issues.forEach(issue => {\n const icon = issue.includes('MERGE CONFLICTS') ? '⚠️ ' : issue.includes('PR') ? '📋 ' : '❌ ';\n lines.push(` ${icon} ${issue}`);\n });\n\n lines.push('');\n lines.push('Fix Commands (execute in order):');\n audit.fixes.forEach((fix, fixIndex) => {\n lines.push(` ${fixIndex + 1}. ${fix}`);\n });\n\n // Add context-specific guidance\n if (audit.status.hasMergeConflicts) {\n lines.push('');\n lines.push(' ⚠️ Merge Conflict Resolution:');\n lines.push(' After running the merge command above, you will need to:');\n lines.push(' a) Manually edit conflicting files to resolve conflicts');\n lines.push(' b) Stage resolved files: git add <file>');\n lines.push(' c) Complete the merge: git commit');\n lines.push(' d) Push the resolved merge: git push origin ' + audit.status.name);\n lines.push(' e) Re-run audit to verify: kodrdriv tree publish --audit-branches');\n }\n\n if (audit.status.hasOpenPR) {\n lines.push('');\n lines.push(' 📋 Existing PR Handling:');\n lines.push(' You have options:');\n lines.push(' a) Continue with existing PR (kodrdriv publish will detect and use it)');\n lines.push(' b) Close the PR if no longer needed');\n lines.push(' c) Merge the PR if ready, then create new one');\n }\n\n lines.push('');\n lines.push('─────────────────────────────────────────────────────────────');\n lines.push('');\n });\n\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('📝 RECOMMENDED WORKFLOW:');\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('');\n\n let stepNumber = 1;\n\n // Target branch sync is FIRST and most critical\n if (result.targetBranchSyncIssues > 0) {\n lines.push(`${stepNumber}️⃣ SYNC TARGET BRANCHES (CRITICAL - Do this FIRST):`);\n stepNumber++;\n const targetSyncIssueAudits = result.audits.filter(a => a.targetBranchSync && !a.targetBranchSync.exactMatch && a.targetBranchSync.localExists && a.targetBranchSync.remoteExists);\n targetSyncIssueAudits.forEach(audit => {\n const sync = audit.targetBranchSync!;\n if (sync.needsReset) {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git checkout ${sync.targetBranch} && git reset --hard origin/${sync.targetBranch} && git checkout ${audit.status.name}`);\n } else {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git checkout ${sync.targetBranch} && git pull origin ${sync.targetBranch} && git checkout ${audit.status.name}`);\n }\n });\n lines.push('');\n }\n\n if (conflictCount > 0) {\n lines.push(`${stepNumber}️⃣ RESOLVE MERGE CONFLICTS FIRST (blocking):`);\n stepNumber++;\n sortedAudits.filter(a => a.status.hasMergeConflicts).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git merge origin/${audit.status.conflictsWith}`);\n });\n lines.push(' Then resolve conflicts, commit, and push.');\n lines.push('');\n }\n\n if (result.versionIssues > 0) {\n lines.push(`${stepNumber}️⃣ FIX VERSION ISSUES (recommended before publish):`);\n stepNumber++;\n sortedAudits.filter(a => a.versionStatus && !a.versionStatus.isValid).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && kodrdriv development`);\n });\n lines.push('');\n }\n\n if (prCount > 0) {\n lines.push(`${stepNumber}️⃣ HANDLE EXISTING PRS:`);\n stepNumber++;\n sortedAudits.filter(a => a.status.hasOpenPR).forEach(audit => {\n lines.push(` • ${audit.packageName}: Review ${audit.status.prUrl}`);\n lines.push(` Option: Continue (publish will reuse PR) or close/merge it first`);\n });\n lines.push('');\n }\n\n if (branchInconsistentCount > 0) {\n lines.push(`${stepNumber}️⃣ ALIGN BRANCHES (if needed):`);\n stepNumber++;\n sortedAudits.filter(a => !a.status.isOnExpectedBranch).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git checkout ${audit.status.expectedBranch}`);\n });\n lines.push('');\n }\n\n if (behindCount > 0) {\n lines.push(`${stepNumber}️⃣ SYNC WITH REMOTE:`);\n stepNumber++;\n sortedAudits.filter(a => a.status.needsSync && !a.status.hasMergeConflicts).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git pull origin ${audit.status.name}`);\n });\n lines.push('');\n }\n\n if (unpushedCount > 0) {\n lines.push(`${stepNumber}️⃣ PUSH LOCAL COMMITS:`);\n stepNumber++;\n sortedAudits.filter(a => a.status.hasUnpushedCommits && !a.status.hasMergeConflicts).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git push origin ${audit.status.name}`);\n });\n lines.push('');\n }\n\n if (noRemoteCount > 0) {\n lines.push(`${stepNumber}️⃣ CREATE REMOTE BRANCHES:`);\n stepNumber++;\n sortedAudits.filter(a => !a.status.remoteExists).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git push -u origin ${audit.status.name}`);\n });\n lines.push('');\n }\n\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('');\n lines.push('🔄 After fixing issues, re-run audit to verify:');\n lines.push(' kodrdriv tree publish --audit-branches');\n lines.push('');\n lines.push('✅ Once all clear, proceed with publish:');\n lines.push(' kodrdriv tree publish --parallel --model \"gpt-5-mini\"');\n }\n\n lines.push('╚══════════════════════════════════════════════════════════════╝');\n\n return lines.join('\\n');\n}\n\n/**\n * Auto-sync a package's branch with remote\n */\nexport async function autoSyncBranch(\n packagePath: string,\n options: {\n push?: boolean;\n pull?: boolean;\n checkout?: string;\n } = {}\n): Promise<{ success: boolean; actions: string[]; error?: string }> {\n const logger = getLogger();\n const originalCwd = process.cwd();\n const actions: string[] = [];\n\n try {\n process.chdir(packagePath);\n\n // Checkout if requested\n if (options.checkout) {\n logger.verbose(`Checking out ${options.checkout}...`);\n await run(`git checkout ${options.checkout}`);\n actions.push(`Checked out ${options.checkout}`);\n }\n\n // Pull if requested\n if (options.pull) {\n logger.verbose(`Pulling from remote...`);\n try {\n await run('git pull --ff-only');\n actions.push('Pulled from remote');\n } catch (error: any) {\n if (error.message.includes('not possible to fast-forward')) {\n logger.warn(`BRANCH_STATE_NO_FAST_FORWARD: Cannot fast-forward merge | Reason: Divergent history | Resolution: May need manual merge`);\n return { success: false, actions, error: 'Fast-forward not possible' };\n }\n throw error;\n }\n }\n\n // Push if requested\n if (options.push) {\n logger.verbose(`Pushing to remote...`);\n await run('git push');\n actions.push('Pushed to remote');\n }\n\n return { success: true, actions };\n } catch (error: any) {\n logger.error(`BRANCH_STATE_AUTO_SYNC_FAILED: Failed to auto-sync package | Path: ${packagePath} | Error: ${error.message}`);\n return { success: false, actions, error: error.message };\n } finally {\n process.chdir(originalCwd);\n }\n}\n\n"],"names":["checkBranchStatus","packagePath","expectedBranch","targetBranch","checkPR","logger","getLogger","originalCwd","process","cwd","chdir","stdout","currentBranch","run","branch","trim","remoteExists","ahead","behind","revList","behindStr","aheadStr","split","parseInt","error","verbose","hasMergeConflicts","conflictsWith","mergeTree","includes","message","hasOpenPR","prUrl","prNumber","findOpenPullRequestByHeadRef","pr","html_url","number","isOnExpectedBranch","hasUnpushedCommits","needsSync","name","checkTargetBranchSync","localExists","localSha","remoteSha","exactMatch","canFastForward","needsReset","auditBranchState","packages","options","audits","checkConflicts","checkVersions","info","length","actualExpectedBranch","branchCounts","Map","i","pkg","status","path","set","get","maxCount","count","entries","issues","fixes","versionStatus","push","validateVersionForBranch","fs","pathModule","packageJsonPath","join","packageJsonContent","readFile","packageJson","JSON","parse","version","validation","isValid","valid","issue","fix","targetBranchSync","packageName","issuesFound","filter","a","versionIssues","targetBranchSyncIssues","goodPackages","totalPackages","formatAuditResults","result","lines","audit","commonBranch","padEnd","goodAudits","displayCount","Math","min","slice","forEach","versionInfo","versionIssueAudits","targetSyncIssueAudits","sync","substring","conflictCount","prCount","branchInconsistentCount","unpushedCount","behindCount","noRemoteCount","auditsWithIssues","sortedAudits","sort","b","aScore","bScore","index","hasCritical","prefix","syncStatus","icon","fixIndex","stepNumber"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"branchState.js","sources":["../../src/utils/branchState.ts"],"sourcesContent":["import { run } from '@eldrforge/git-tools';\nimport { getLogger } from '../logging';\nimport { getGitRepositoryRoot, isInGitRepository } from '../util/gitMutex';\n\nexport interface BranchStatus {\n name: string;\n isOnExpectedBranch: boolean;\n expectedBranch?: string;\n ahead: number;\n behind: number;\n hasUnpushedCommits: boolean;\n needsSync: boolean;\n remoteExists: boolean;\n hasMergeConflicts?: boolean;\n conflictsWith?: string;\n hasOpenPR?: boolean;\n prUrl?: string;\n prNumber?: number;\n}\n\nexport interface VersionStatus {\n version: string;\n isValid: boolean;\n issue?: string;\n fix?: string;\n}\n\nexport interface TargetBranchSyncStatus {\n targetBranch: string;\n localExists: boolean;\n remoteExists: boolean;\n localSha?: string;\n remoteSha?: string;\n exactMatch: boolean;\n canFastForward: boolean;\n needsReset: boolean;\n error?: string;\n}\n\nexport interface PackageBranchAudit {\n packageName: string;\n path: string;\n status: BranchStatus;\n versionStatus?: VersionStatus;\n targetBranchSync?: TargetBranchSyncStatus;\n issues: string[];\n fixes: string[];\n}\n\nexport interface BranchAuditResult {\n totalPackages: number;\n goodPackages: number;\n issuesFound: number;\n versionIssues: number;\n targetBranchSyncIssues: number;\n audits: PackageBranchAudit[];\n}\n\n/**\n * Check the branch status for a package\n */\nexport async function checkBranchStatus(\n packagePath: string,\n expectedBranch?: string,\n targetBranch: string = 'main',\n checkPR: boolean = false,\n options: { skipFetch?: boolean } = {}\n): Promise<BranchStatus> {\n const logger = getLogger();\n\n // Check if path is in a git repository\n if (!isInGitRepository(packagePath)) {\n logger.debug(`Path is not in a git repository: ${packagePath}. Skipping branch status check.`);\n return {\n name: 'non-git',\n isOnExpectedBranch: true,\n ahead: 0,\n behind: 0,\n hasUnpushedCommits: false,\n needsSync: false,\n remoteExists: false,\n };\n }\n\n try {\n // Get current branch\n const { stdout: currentBranch } = await run('git rev-parse --abbrev-ref HEAD', { cwd: packagePath, suppressErrorLogging: true });\n const branch = currentBranch.trim();\n\n // Check if remote exists\n let remoteExists = false;\n try {\n await run(`git ls-remote --exit-code --heads origin ${branch}`, { cwd: packagePath, suppressErrorLogging: true });\n remoteExists = true;\n } catch {\n remoteExists = false;\n }\n\n // Get ahead/behind counts if remote exists\n let ahead = 0;\n let behind = 0;\n\n if (remoteExists) {\n try {\n const { stdout: revList } = await run(`git rev-list --left-right --count origin/${branch}...HEAD`, { cwd: packagePath, suppressErrorLogging: true });\n const [behindStr, aheadStr] = revList.trim().split('\\t');\n behind = parseInt(behindStr, 10) || 0;\n ahead = parseInt(aheadStr, 10) || 0;\n } catch (error) {\n logger.verbose(`Could not get ahead/behind counts for ${packagePath}: ${error}`);\n }\n }\n\n // Check for merge conflicts with target branch\n let hasMergeConflicts = false;\n let conflictsWith: string | undefined;\n\n if (branch !== targetBranch) {\n try {\n // Fetch latest to ensure we're checking against current target\n if (!options.skipFetch) {\n logger.verbose(` Fetching latest from origin for ${packagePath}...`);\n await run('git fetch origin --quiet', { cwd: packagePath, suppressErrorLogging: true });\n }\n\n logger.verbose(` Checking for merge conflicts with ${targetBranch}...`);\n // Use git merge-tree to test for conflicts without actually merging\n const { stdout: mergeTree } = await run(`git merge-tree $(git merge-base ${branch} origin/${targetBranch}) ${branch} origin/${targetBranch}`, { cwd: packagePath, suppressErrorLogging: true });\n\n // If merge-tree output contains conflict markers, there are conflicts\n if (mergeTree.includes('<<<<<<<') || mergeTree.includes('=======') || mergeTree.includes('>>>>>>>')) {\n hasMergeConflicts = true;\n conflictsWith = targetBranch;\n logger.verbose(` ⚠️ Merge conflicts detected with ${targetBranch}`);\n }\n } catch (error: any) {\n // If merge-tree fails, might be due to git version or other issues\n logger.verbose(`Could not check merge conflicts for ${packagePath}: ${error.message}`);\n }\n }\n\n // Check for existing PR if requested\n let hasOpenPR = false;\n let prUrl: string | undefined;\n let prNumber: number | undefined;\n\n if (checkPR) {\n try {\n logger.verbose(` Checking GitHub for existing PRs...`);\n const { findOpenPullRequestByHeadRef } = await import('@eldrforge/github-tools');\n const pr = await (findOpenPullRequestByHeadRef as any)(branch, packagePath);\n if (pr) {\n hasOpenPR = true;\n prUrl = pr.html_url;\n prNumber = pr.number;\n logger.verbose(` Found existing PR #${prNumber}: ${prUrl}`);\n }\n } catch (error: any) {\n logger.verbose(`Could not check for PR for ${packagePath}: ${error.message}`);\n }\n }\n\n const isOnExpectedBranch = !expectedBranch || branch === expectedBranch;\n const hasUnpushedCommits = ahead > 0;\n const needsSync = behind > 0;\n\n return {\n name: branch,\n isOnExpectedBranch,\n expectedBranch,\n ahead,\n behind,\n hasUnpushedCommits,\n needsSync,\n remoteExists,\n hasMergeConflicts,\n conflictsWith,\n hasOpenPR,\n prUrl,\n prNumber,\n };\n } catch (error: any) {\n logger.error(`Error checking branch status for ${packagePath}: ${error.message}`);\n return {\n name: 'unknown',\n isOnExpectedBranch: false,\n ahead: 0,\n behind: 0,\n hasUnpushedCommits: false,\n needsSync: false,\n remoteExists: false,\n };\n }\n}\n\n/**\n * Check if target branch (e.g., main) is exactly in sync with remote\n */\nexport async function checkTargetBranchSync(\n packagePath: string,\n targetBranch: string = 'main',\n options: { skipFetch?: boolean } = {}\n): Promise<TargetBranchSyncStatus> {\n const logger = getLogger();\n\n // Check if path is in a git repository\n if (!isInGitRepository(packagePath)) {\n return {\n targetBranch,\n localExists: false,\n remoteExists: false,\n exactMatch: true, // Treat as match if not in git\n canFastForward: false,\n needsReset: false,\n };\n }\n\n try {\n // Fetch latest from origin to ensure we have current info\n if (!options.skipFetch) {\n try {\n await run('git fetch origin --quiet', { cwd: packagePath, suppressErrorLogging: true });\n } catch (error: any) {\n logger.verbose(`Could not fetch from origin in ${packagePath}: ${error.message}`);\n }\n }\n\n // Check if local target branch exists\n let localExists = false;\n let localSha: string | undefined;\n try {\n const { stdout } = await run(`git rev-parse --verify ${targetBranch}`, { cwd: packagePath, suppressErrorLogging: true });\n localSha = stdout.trim();\n localExists = true;\n } catch {\n localExists = false;\n }\n\n // Check if remote target branch exists\n let remoteExists = false;\n let remoteSha: string | undefined;\n try {\n const { stdout } = await run(`git ls-remote origin ${targetBranch}`, { cwd: packagePath, suppressErrorLogging: true });\n if (stdout.trim()) {\n remoteSha = stdout.split(/\\s+/)[0];\n remoteExists = true;\n }\n } catch {\n remoteExists = false;\n }\n\n // Determine sync status\n const exactMatch = localExists && remoteExists && localSha === remoteSha;\n let canFastForward = false;\n let needsReset = false;\n\n if (localExists && remoteExists && !exactMatch) {\n // Check if local is ancestor of remote (can fast-forward)\n try {\n await run(`git merge-base --is-ancestor ${targetBranch} origin/${targetBranch}`, { cwd: packagePath, suppressErrorLogging: true });\n canFastForward = true;\n needsReset = false;\n } catch {\n // Local is not ancestor of remote, need reset\n canFastForward = false;\n needsReset = true;\n }\n }\n\n return {\n targetBranch,\n localExists,\n remoteExists,\n localSha,\n remoteSha,\n exactMatch,\n canFastForward,\n needsReset,\n };\n } catch (error: any) {\n return {\n targetBranch,\n localExists: false,\n remoteExists: false,\n exactMatch: false,\n canFastForward: false,\n needsReset: false,\n error: error.message,\n };\n }\n}\n\n/**\n * Audit branch state across multiple packages\n */\nexport async function auditBranchState(\n packages: Array<{ name: string; path: string }>,\n expectedBranch?: string,\n options: {\n targetBranch?: string;\n checkPR?: boolean;\n checkConflicts?: boolean;\n checkVersions?: boolean;\n concurrency?: number;\n } = {}\n): Promise<BranchAuditResult> {\n const logger = getLogger();\n const targetBranch = options.targetBranch || 'main';\n const checkPR = options.checkPR !== false; // Default true\n const checkConflicts = options.checkConflicts !== false; // Default true\n const checkVersions = options.checkVersions !== false; // Default true\n const concurrency = options.concurrency || 5;\n\n logger.info(`BRANCH_STATE_AUDIT: Auditing branch state for packages | Package Count: ${packages.length} | Concurrency: ${concurrency} | Purpose: Verify synchronization`);\n\n // Helper for concurrency-limited parallel map\n const parallelMap = async <T, R>(items: T[], fn: (item: T, index: number) => Promise<R>): Promise<R[]> => {\n const results: R[] = new Array(items.length);\n const queue = items.map((item, index) => ({ item, index }));\n let nextIndex = 0;\n\n const workers = Array(Math.min(concurrency, items.length)).fill(null).map(async () => {\n while (nextIndex < queue.length) {\n const task = queue[nextIndex++];\n results[task.index] = await fn(task.item, task.index);\n }\n });\n\n await Promise.all(workers);\n return results;\n };\n\n // If no expected branch specified, find the most common branch\n let actualExpectedBranch = expectedBranch;\n if (!expectedBranch) {\n logger.info('📋 Phase 1/3: Detecting most common branch across packages (optimized)...');\n\n const branchNames = await parallelMap(packages, async (pkg) => {\n if (!isInGitRepository(pkg.path)) {\n return 'non-git';\n }\n try {\n const { stdout } = await run('git rev-parse --abbrev-ref HEAD', { cwd: pkg.path, suppressErrorLogging: true });\n return stdout.trim();\n } catch {\n return 'unknown';\n }\n });\n\n const branchCounts = new Map<string, number>();\n for (const name of branchNames) {\n branchCounts.set(name, (branchCounts.get(name) || 0) + 1);\n }\n\n // Find most common branch\n let maxCount = 0;\n for (const [branch, count] of branchCounts.entries()) {\n if (count > maxCount && branch !== 'unknown' && branch !== 'non-git') {\n maxCount = count;\n actualExpectedBranch = branch;\n }\n }\n\n if (!actualExpectedBranch) actualExpectedBranch = 'main';\n logger.info(`✓ Most common branch: ${actualExpectedBranch} (${maxCount}/${packages.length} packages)`);\n }\n\n // Phase 2: Identify unique repos and fetch once per repo\n logger.info(`\\n📋 Phase 2/3: Fetching latest from remotes (one fetch per repository)...`);\n const repoRoots = new Set<string>();\n for (const pkg of packages) {\n const root = getGitRepositoryRoot(pkg.path);\n if (root) repoRoots.add(root);\n }\n\n const repoList = Array.from(repoRoots);\n await parallelMap(repoList, async (repo, i) => {\n try {\n logger.verbose(` [${i + 1}/${repoList.length}] Fetching in: ${repo}`);\n await run('git fetch origin --quiet', { cwd: repo, suppressErrorLogging: true });\n } catch (error: any) {\n logger.debug(`Could not fetch in ${repo}: ${error.message}`);\n }\n });\n logger.info(`✓ Fetched latest information for ${repoList.length} unique repositories`);\n\n // Phase 3: Full audit in parallel\n logger.info(`\\n📋 Phase 3/3: Auditing package state (git status, conflicts, PRs, versions)...`);\n let completedCount = 0;\n const audits = await parallelMap(packages, async (pkg) => {\n // Check target branch sync (e.g., is local main exactly in sync with remote main?)\n const targetBranchSync = await checkTargetBranchSync(pkg.path, targetBranch, { skipFetch: true });\n\n const status = await checkBranchStatus(\n pkg.path,\n actualExpectedBranch,\n targetBranch,\n checkPR,\n { skipFetch: true }\n );\n\n const issues: string[] = [];\n const fixes: string[] = [];\n let versionStatus: VersionStatus | undefined;\n\n // Skip issues for non-git repositories\n if (status.name === 'non-git') {\n completedCount++;\n if (completedCount % 5 === 0 || completedCount === packages.length) {\n logger.info(` Progress: ${completedCount}/${packages.length} packages audited`);\n }\n return {\n packageName: pkg.name,\n path: pkg.path,\n status,\n versionStatus,\n targetBranchSync,\n issues,\n fixes,\n };\n }\n\n // Check for issues\n if (!status.isOnExpectedBranch && actualExpectedBranch) {\n issues.push(`On branch '${status.name}' (most packages are on '${actualExpectedBranch}')`);\n fixes.push(`cd ${pkg.path} && git checkout ${actualExpectedBranch}`);\n }\n\n if (checkConflicts && status.hasMergeConflicts && status.conflictsWith) {\n issues.push(`⚠️ MERGE CONFLICTS with '${status.conflictsWith}'`);\n fixes.push(`cd ${pkg.path} && git merge origin/${status.conflictsWith} # Resolve conflicts manually`);\n }\n\n if (checkPR && status.hasOpenPR) {\n issues.push(`Has existing PR #${status.prNumber}: ${status.prUrl}`);\n fixes.push(`# Review PR: ${status.prUrl}`);\n }\n\n if (status.hasUnpushedCommits) {\n issues.push(`Ahead of remote by ${status.ahead} commit(s)`);\n fixes.push(`cd ${pkg.path} && git push origin ${status.name}`);\n }\n\n if (status.needsSync) {\n issues.push(`Behind remote by ${status.behind} commit(s)`);\n fixes.push(`cd ${pkg.path} && git pull origin ${status.name}`);\n }\n\n if (!status.remoteExists) {\n issues.push(`Remote branch does not exist`);\n fixes.push(`cd ${pkg.path} && git push -u origin ${status.name}`);\n }\n\n // Check version consistency if enabled\n if (checkVersions) {\n try {\n const { validateVersionForBranch } = await import('../util/general');\n const fs = await import('fs/promises');\n const pathModule = await import('path');\n\n const packageJsonPath = pathModule.join(pkg.path, 'package.json');\n const packageJsonContent = await fs.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent);\n const version = packageJson.version;\n\n const validation = validateVersionForBranch(version, status.name);\n\n versionStatus = {\n version,\n isValid: validation.valid,\n issue: validation.issue,\n fix: validation.fix\n };\n\n if (!validation.valid) {\n issues.push(`Version: ${version} - ${validation.issue}`);\n fixes.push(`cd ${pkg.path} && kodrdriv development # ${validation.fix}`);\n }\n } catch (error: any) {\n logger.verbose(`Could not check version for ${pkg.name}: ${error.message}`);\n }\n }\n\n // Check target branch sync (e.g., is local main exactly in sync with remote main?)\n if (targetBranchSync.localExists && targetBranchSync.remoteExists && !targetBranchSync.exactMatch) {\n if (targetBranchSync.needsReset) {\n issues.push(`Target branch '${targetBranch}' is NOT in sync with remote (local has diverged)`);\n fixes.push(`cd ${pkg.path} && git checkout ${targetBranch} && git reset --hard origin/${targetBranch} && git checkout ${status.name}`);\n } else if (targetBranchSync.canFastForward) {\n issues.push(`Target branch '${targetBranch}' is behind remote (can fast-forward)`);\n fixes.push(`cd ${pkg.path} && git checkout ${targetBranch} && git pull origin ${targetBranch} && git checkout ${status.name}`);\n } else {\n issues.push(`Target branch '${targetBranch}' is NOT in exact sync with remote`);\n fixes.push(`cd ${pkg.path} && git checkout ${targetBranch} && git pull origin ${targetBranch} && git checkout ${status.name}`);\n }\n } else if (!targetBranchSync.localExists && targetBranchSync.remoteExists) {\n // Local target branch doesn't exist but exists on remote\n issues.push(`Target branch '${targetBranch}' does not exist locally (exists on remote)`);\n fixes.push(`cd ${pkg.path} && git branch ${targetBranch} origin/${targetBranch}`);\n } else if (targetBranchSync.error) {\n logger.verbose(`Could not check target branch sync for ${pkg.name}: ${targetBranchSync.error}`);\n }\n\n completedCount++;\n if (completedCount % 5 === 0 || completedCount === packages.length) {\n logger.info(` Progress: ${completedCount}/${packages.length} packages audited`);\n }\n\n return {\n packageName: pkg.name,\n path: pkg.path,\n status,\n versionStatus,\n targetBranchSync,\n issues,\n fixes,\n };\n });\n\n const issuesFound = audits.filter(a => a.issues.length > 0).length;\n const versionIssues = audits.filter(a => a.versionStatus && !a.versionStatus.isValid).length;\n const targetBranchSyncIssues = audits.filter(a => a.targetBranchSync && !a.targetBranchSync.exactMatch && a.targetBranchSync.localExists && a.targetBranchSync.remoteExists).length;\n const goodPackages = audits.filter(a => a.issues.length === 0).length;\n\n logger.info(`✓ Audit complete: ${goodPackages}/${packages.length} packages have no issues`);\n if (issuesFound > 0) {\n logger.info(` Issues found in ${issuesFound} package(s)`);\n }\n\n return {\n totalPackages: packages.length,\n goodPackages,\n issuesFound,\n versionIssues,\n targetBranchSyncIssues,\n audits,\n };\n}\n\n/**\n * Format audit results for display with detailed fix instructions\n */\nexport function formatAuditResults(result: BranchAuditResult): string {\n const lines: string[] = [];\n\n // Determine the common branch if any\n const branchCounts = new Map<string, number>();\n for (const audit of result.audits) {\n const branch = audit.status.name;\n branchCounts.set(branch, (branchCounts.get(branch) || 0) + 1);\n }\n\n let commonBranch: string | undefined;\n let maxCount = 0;\n for (const [branch, count] of branchCounts.entries()) {\n if (count > maxCount) {\n maxCount = count;\n commonBranch = branch;\n }\n }\n\n lines.push('╔══════════════════════════════════════════════════════════════╗');\n lines.push(`║ Branch State Audit (${result.totalPackages} packages)`.padEnd(63) + '║');\n if (commonBranch && maxCount === result.totalPackages) {\n lines.push(`║ All packages on: ${commonBranch}`.padEnd(63) + '║');\n } else if (commonBranch) {\n lines.push(`║ Most packages on: ${commonBranch} (${maxCount}/${result.totalPackages})`.padEnd(63) + '║');\n }\n lines.push('╠══════════════════════════════════════════════════════════════╣');\n lines.push('');\n\n if (result.goodPackages > 0) {\n lines.push(`✅ Good State (${result.goodPackages} package${result.goodPackages === 1 ? '' : 's'}):`);\n\n const goodAudits = result.audits.filter(a => a.issues.length === 0);\n const displayCount = Math.min(goodAudits.length, 5);\n goodAudits.slice(0, displayCount).forEach(audit => {\n const versionInfo = audit.versionStatus ? ` (v${audit.versionStatus.version})` : '';\n lines.push(` ${audit.packageName}${versionInfo}`);\n });\n\n if (goodAudits.length > displayCount) {\n lines.push(` ... and ${goodAudits.length - displayCount} more`);\n }\n lines.push('');\n }\n\n // Show version issues prominently if any\n if (result.versionIssues > 0) {\n lines.push(`⚠️ Version Issues (${result.versionIssues} package${result.versionIssues === 1 ? '' : 's'}):`);\n\n const versionIssueAudits = result.audits.filter(a => a.versionStatus && !a.versionStatus.isValid);\n versionIssueAudits.forEach(audit => {\n lines.push(` ${audit.packageName}`);\n lines.push(` - Branch: ${audit.status.name}`);\n lines.push(` - Version: ${audit.versionStatus!.version}`);\n lines.push(` - Issue: ${audit.versionStatus!.issue}`);\n lines.push(` - Fix: ${audit.versionStatus!.fix}`);\n lines.push('');\n });\n }\n\n // Show target branch sync issues prominently if any\n if (result.targetBranchSyncIssues > 0) {\n lines.push(`🚨 Target Branch Sync Issues (${result.targetBranchSyncIssues} package${result.targetBranchSyncIssues === 1 ? '' : 's'}):`);\n lines.push(` ⚠️ ${result.targetBranchSyncIssues} package${result.targetBranchSyncIssues === 1 ? '' : 's'} with target branch NOT in sync with remote`);\n lines.push(` This will cause \"branch out of sync\" errors during parallel publish!`);\n lines.push('');\n\n const targetSyncIssueAudits = result.audits.filter(a => a.targetBranchSync && !a.targetBranchSync.exactMatch && a.targetBranchSync.localExists && a.targetBranchSync.remoteExists);\n targetSyncIssueAudits.forEach(audit => {\n const sync = audit.targetBranchSync!;\n lines.push(` ${audit.packageName}`);\n lines.push(` - Target Branch: ${sync.targetBranch}`);\n lines.push(` - Local SHA: ${sync.localSha?.substring(0, 8)}...`);\n lines.push(` - Remote SHA: ${sync.remoteSha?.substring(0, 8)}...`);\n if (sync.needsReset) {\n lines.push(` - Action: RESET REQUIRED (local has diverged)`);\n } else if (sync.canFastForward) {\n lines.push(` - Action: Pull to fast-forward`);\n }\n lines.push('');\n });\n }\n\n if (result.issuesFound > 0) {\n // Count critical issues (merge conflicts, existing PRs, target branch sync)\n const conflictCount = result.audits.filter(a => a.status.hasMergeConflicts).length;\n const prCount = result.audits.filter(a => a.status.hasOpenPR).length;\n const branchInconsistentCount = result.audits.filter(a => !a.status.isOnExpectedBranch).length;\n const unpushedCount = result.audits.filter(a => a.status.hasUnpushedCommits).length;\n const behindCount = result.audits.filter(a => a.status.needsSync).length;\n const noRemoteCount = result.audits.filter(a => !a.status.remoteExists).length;\n\n if (conflictCount > 0 || prCount > 0 || result.targetBranchSyncIssues > 0) {\n lines.push(`🚨 CRITICAL ISSUES:`);\n if (result.targetBranchSyncIssues > 0) {\n lines.push(` 🔄 ${result.targetBranchSyncIssues} package${result.targetBranchSyncIssues === 1 ? '' : 's'} with target branch sync issues`);\n }\n if (conflictCount > 0) {\n lines.push(` ⚠️ ${conflictCount} package${conflictCount === 1 ? '' : 's'} with merge conflicts`);\n }\n if (prCount > 0) {\n lines.push(` 📋 ${prCount} package${prCount === 1 ? '' : 's'} with existing PRs`);\n }\n lines.push('');\n }\n\n lines.push(`⚠️ Issues Summary:`);\n if (result.targetBranchSyncIssues > 0) lines.push(` • ${result.targetBranchSyncIssues} target branch sync issue${result.targetBranchSyncIssues === 1 ? '' : 's'}`);\n if (conflictCount > 0) lines.push(` • ${conflictCount} merge conflict${conflictCount === 1 ? '' : 's'}`);\n if (prCount > 0) lines.push(` • ${prCount} existing PR${prCount === 1 ? '' : 's'}`);\n if (branchInconsistentCount > 0) lines.push(` • ${branchInconsistentCount} branch inconsistenc${branchInconsistentCount === 1 ? 'y' : 'ies'}`);\n if (unpushedCount > 0) lines.push(` • ${unpushedCount} package${unpushedCount === 1 ? '' : 's'} with unpushed commits`);\n if (behindCount > 0) lines.push(` • ${behindCount} package${behindCount === 1 ? '' : 's'} behind remote`);\n if (noRemoteCount > 0) lines.push(` • ${noRemoteCount} package${noRemoteCount === 1 ? '' : 's'} with no remote branch`);\n lines.push('');\n\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('📋 DETAILED ISSUES AND FIXES:');\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('');\n\n // Sort issues by severity: conflicts first, then PRs, then others\n const auditsWithIssues = result.audits.filter(a => a.issues.length > 0);\n const sortedAudits = auditsWithIssues.sort((a, b) => {\n const aScore = (a.status.hasMergeConflicts ? 1000 : 0) + (a.status.hasOpenPR ? 100 : 0);\n const bScore = (b.status.hasMergeConflicts ? 1000 : 0) + (b.status.hasOpenPR ? 100 : 0);\n return bScore - aScore;\n });\n\n sortedAudits.forEach((audit, index) => {\n // Highlight critical issues\n const hasCritical = audit.status.hasMergeConflicts || audit.status.hasOpenPR;\n const prefix = hasCritical ? '🚨 CRITICAL' : '⚠️ WARNING';\n\n lines.push(`${prefix} [${index + 1}/${sortedAudits.length}] ${audit.packageName}`);\n lines.push(`Location: ${audit.path}`);\n lines.push(`Branch: ${audit.status.name}`);\n\n if (audit.status.remoteExists) {\n const syncStatus = [];\n if (audit.status.ahead > 0) syncStatus.push(`ahead ${audit.status.ahead}`);\n if (audit.status.behind > 0) syncStatus.push(`behind ${audit.status.behind}`);\n if (syncStatus.length > 0) {\n lines.push(`Sync: ${syncStatus.join(', ')}`);\n }\n } else {\n lines.push(`Remote: Does not exist`);\n }\n\n lines.push('');\n lines.push('Issues:');\n audit.issues.forEach(issue => {\n const icon = issue.includes('MERGE CONFLICTS') ? '⚠️ ' : issue.includes('PR') ? '📋 ' : '❌ ';\n lines.push(` ${icon} ${issue}`);\n });\n\n lines.push('');\n lines.push('Fix Commands (execute in order):');\n audit.fixes.forEach((fix, fixIndex) => {\n lines.push(` ${fixIndex + 1}. ${fix}`);\n });\n\n // Add context-specific guidance\n if (audit.status.hasMergeConflicts) {\n lines.push('');\n lines.push(' ⚠️ Merge Conflict Resolution:');\n lines.push(' After running the merge command above, you will need to:');\n lines.push(' a) Manually edit conflicting files to resolve conflicts');\n lines.push(' b) Stage resolved files: git add <file>');\n lines.push(' c) Complete the merge: git commit');\n lines.push(' d) Push the resolved merge: git push origin ' + audit.status.name);\n lines.push(' e) Re-run audit to verify: kodrdriv tree publish --audit-branches');\n }\n\n if (audit.status.hasOpenPR) {\n lines.push('');\n lines.push(' 📋 Existing PR Handling:');\n lines.push(' You have options:');\n lines.push(' a) Continue with existing PR (kodrdriv publish will detect and use it)');\n lines.push(' b) Close the PR if no longer needed');\n lines.push(' c) Merge the PR if ready, then create new one');\n }\n\n lines.push('');\n lines.push('─────────────────────────────────────────────────────────────');\n lines.push('');\n });\n\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('📝 RECOMMENDED WORKFLOW:');\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('');\n\n let stepNumber = 1;\n\n // Target branch sync is FIRST and most critical\n if (result.targetBranchSyncIssues > 0) {\n lines.push(`${stepNumber}️⃣ SYNC TARGET BRANCHES (CRITICAL - Do this FIRST):`);\n stepNumber++;\n const targetSyncIssueAudits = result.audits.filter(a => a.targetBranchSync && !a.targetBranchSync.exactMatch && a.targetBranchSync.localExists && a.targetBranchSync.remoteExists);\n targetSyncIssueAudits.forEach(audit => {\n const sync = audit.targetBranchSync!;\n if (sync.needsReset) {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git checkout ${sync.targetBranch} && git reset --hard origin/${sync.targetBranch} && git checkout ${audit.status.name}`);\n } else {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git checkout ${sync.targetBranch} && git pull origin ${sync.targetBranch} && git checkout ${audit.status.name}`);\n }\n });\n lines.push('');\n }\n\n if (conflictCount > 0) {\n lines.push(`${stepNumber}️⃣ RESOLVE MERGE CONFLICTS FIRST (blocking):`);\n stepNumber++;\n sortedAudits.filter(a => a.status.hasMergeConflicts).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git merge origin/${audit.status.conflictsWith}`);\n });\n lines.push(' Then resolve conflicts, commit, and push.');\n lines.push('');\n }\n\n if (result.versionIssues > 0) {\n lines.push(`${stepNumber}️⃣ FIX VERSION ISSUES (recommended before publish):`);\n stepNumber++;\n sortedAudits.filter(a => a.versionStatus && !a.versionStatus.isValid).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && kodrdriv development`);\n });\n lines.push('');\n }\n\n if (prCount > 0) {\n lines.push(`${stepNumber}️⃣ HANDLE EXISTING PRS:`);\n stepNumber++;\n sortedAudits.filter(a => a.status.hasOpenPR).forEach(audit => {\n lines.push(` • ${audit.packageName}: Review ${audit.status.prUrl}`);\n lines.push(` Option: Continue (publish will reuse PR) or close/merge it first`);\n });\n lines.push('');\n }\n\n if (branchInconsistentCount > 0) {\n lines.push(`${stepNumber}️⃣ ALIGN BRANCHES (if needed):`);\n stepNumber++;\n sortedAudits.filter(a => !a.status.isOnExpectedBranch).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git checkout ${audit.status.expectedBranch}`);\n });\n lines.push('');\n }\n\n if (behindCount > 0) {\n lines.push(`${stepNumber}️⃣ SYNC WITH REMOTE:`);\n stepNumber++;\n sortedAudits.filter(a => a.status.needsSync && !a.status.hasMergeConflicts).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git pull origin ${audit.status.name}`);\n });\n lines.push('');\n }\n\n if (unpushedCount > 0) {\n lines.push(`${stepNumber}️⃣ PUSH LOCAL COMMITS:`);\n stepNumber++;\n sortedAudits.filter(a => a.status.hasUnpushedCommits && !a.status.hasMergeConflicts).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git push origin ${audit.status.name}`);\n });\n lines.push('');\n }\n\n if (noRemoteCount > 0) {\n lines.push(`${stepNumber}️⃣ CREATE REMOTE BRANCHES:`);\n stepNumber++;\n sortedAudits.filter(a => !a.status.remoteExists).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git push -u origin ${audit.status.name}`);\n });\n lines.push('');\n }\n\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('');\n lines.push('🔄 After fixing issues, re-run audit to verify:');\n lines.push(' kodrdriv tree publish --audit-branches');\n lines.push('');\n lines.push('✅ Once all clear, proceed with publish:');\n lines.push(' kodrdriv tree publish --parallel --model \"gpt-5-mini\"');\n }\n\n lines.push('╚══════════════════════════════════════════════════════════════╝');\n\n return lines.join('\\n');\n}\n\n/**\n * Auto-sync a package's branch with remote\n */\nexport async function autoSyncBranch(\n packagePath: string,\n options: {\n push?: boolean;\n pull?: boolean;\n checkout?: string;\n } = {}\n): Promise<{ success: boolean; actions: string[]; error?: string }> {\n const logger = getLogger();\n const actions: string[] = [];\n\n try {\n // Checkout if requested\n if (options.checkout) {\n logger.verbose(`Checking out ${options.checkout}...`);\n await run(`git checkout ${options.checkout}`, { cwd: packagePath });\n actions.push(`Checked out ${options.checkout}`);\n }\n\n // Pull if requested\n if (options.pull) {\n logger.verbose(`Pulling from remote...`);\n try {\n await run('git pull --ff-only', { cwd: packagePath });\n actions.push('Pulled from remote');\n } catch (error: any) {\n if (error.message.includes('not possible to fast-forward')) {\n logger.warn(`BRANCH_STATE_NO_FAST_FORWARD: Cannot fast-forward merge | Reason: Divergent history | Resolution: May need manual merge`);\n return { success: false, actions, error: 'Fast-forward not possible' };\n }\n throw error;\n }\n }\n\n // Push if requested\n if (options.push) {\n logger.verbose(`Pushing to remote...`);\n await run('git push', { cwd: packagePath });\n actions.push('Pushed to remote');\n }\n\n return { success: true, actions };\n } catch (error: any) {\n logger.error(`BRANCH_STATE_AUTO_SYNC_FAILED: Failed to auto-sync package | Path: ${packagePath} | Error: ${error.message}`);\n return { success: false, actions, error: error.message };\n }\n}\n\n"],"names":["checkBranchStatus","packagePath","expectedBranch","targetBranch","checkPR","options","logger","getLogger","isInGitRepository","debug","name","isOnExpectedBranch","ahead","behind","hasUnpushedCommits","needsSync","remoteExists","stdout","currentBranch","run","cwd","suppressErrorLogging","branch","trim","revList","behindStr","aheadStr","split","parseInt","error","verbose","hasMergeConflicts","conflictsWith","skipFetch","mergeTree","includes","message","hasOpenPR","prUrl","prNumber","findOpenPullRequestByHeadRef","pr","html_url","number","checkTargetBranchSync","localExists","exactMatch","canFastForward","needsReset","localSha","remoteSha","auditBranchState","packages","checkConflicts","checkVersions","concurrency","info","length","parallelMap","items","fn","results","Array","queue","map","item","index","nextIndex","workers","Math","min","fill","task","Promise","all","actualExpectedBranch","branchNames","pkg","path","branchCounts","Map","set","get","maxCount","count","entries","repoRoots","Set","root","getGitRepositoryRoot","add","repoList","from","repo","i","completedCount","audits","targetBranchSync","status","issues","fixes","versionStatus","packageName","push","validateVersionForBranch","fs","pathModule","packageJsonPath","join","packageJsonContent","readFile","packageJson","JSON","parse","version","validation","isValid","valid","issue","fix","issuesFound","filter","a","versionIssues","targetBranchSyncIssues","goodPackages","totalPackages","formatAuditResults","result","lines","audit","commonBranch","padEnd","goodAudits","displayCount","slice","forEach","versionInfo","versionIssueAudits","targetSyncIssueAudits","sync","substring","conflictCount","prCount","branchInconsistentCount","unpushedCount","behindCount","noRemoteCount","auditsWithIssues","sortedAudits","sort","b","aScore","bScore","hasCritical","prefix","syncStatus","icon","fixIndex","stepNumber"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eldrforge/kodrdriv",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.123",
|
|
4
4
|
"description": "Create Intelligent Release Notes or Change Logs from Git",
|
|
5
5
|
"main": "dist/main.js",
|
|
6
6
|
"type": "module",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"start": "dist/main.js",
|
|
17
17
|
"dev": "vite",
|
|
18
18
|
"watch": "vite build --watch",
|
|
19
|
-
"test": "NODE_OPTIONS='--max-old-space-size=
|
|
19
|
+
"test": "NODE_OPTIONS='--max-old-space-size=4096' vitest run --coverage",
|
|
20
20
|
"lint": "eslint . --ext .ts",
|
|
21
21
|
"lint:fix": "eslint . --ext .ts --fix",
|
|
22
22
|
"clean": "rm -rf dist",
|
|
@@ -38,9 +38,10 @@
|
|
|
38
38
|
"author": "Calen Varek <calenvarek@gmail.com>",
|
|
39
39
|
"license": "Apache-2.0",
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@eldrforge/ai-service": "^0.1.
|
|
42
|
-
"@eldrforge/git-tools": "^0.1.
|
|
43
|
-
"@eldrforge/github-tools": "^0.1.
|
|
41
|
+
"@eldrforge/ai-service": "^0.1.8",
|
|
42
|
+
"@eldrforge/git-tools": "^0.1.11",
|
|
43
|
+
"@eldrforge/github-tools": "^0.1.14",
|
|
44
|
+
"@eldrforge/shared": "^0.1.1",
|
|
44
45
|
"@octokit/rest": "^22.0.0",
|
|
45
46
|
"@riotprompt/riotprompt": "^0.0.8",
|
|
46
47
|
"@theunwalked/cardigantime": "^0.0.16",
|
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
# AI-Friendly Logging Guide for KodrDriv
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
All log messages in KodrDriv follow a structured pattern to be easily understood by AI agents, MCP-driven tools, and automated systems. This guide documents the standard patterns and provides examples.
|
|
6
|
-
|
|
7
|
-
## Message Format
|
|
8
|
-
|
|
9
|
-
```
|
|
10
|
-
OPERATION_STATE: Human-readable description | Key: value | Key2: value2 | Purpose: explanation
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
### Components:
|
|
14
|
-
|
|
15
|
-
1. **Structured Prefix** (`OPERATION_STATE`): Machine-readable operation identifier
|
|
16
|
-
2. **Description**: Human-readable explanation of what's happening
|
|
17
|
-
3. **Key-Value Pairs**: Contextual information separated by pipes (`|`)
|
|
18
|
-
4. **Purpose/Impact/Action**: Why this is happening or what to do next
|
|
19
|
-
|
|
20
|
-
## Naming Conventions
|
|
21
|
-
|
|
22
|
-
###Snake_Case Prefixes
|
|
23
|
-
|
|
24
|
-
All operation prefixes use `SNAKE_CASE` with underscores:
|
|
25
|
-
- ✅ `PACKAGE_STARTED`
|
|
26
|
-
- ✅ `GIT_FETCH_SUCCESS`
|
|
27
|
-
- ❌ `PackageStarted`
|
|
28
|
-
- ❌ `package-started`
|
|
29
|
-
|
|
30
|
-
### Common Suffixes
|
|
31
|
-
|
|
32
|
-
Use consistent suffixes to indicate operation state:
|
|
33
|
-
- `_STARTING` / `_STARTED`: Operation beginning
|
|
34
|
-
- `_COMPLETE` / `_COMPLETED`: Operation finished successfully
|
|
35
|
-
- `_SUCCESS`: Successful completion
|
|
36
|
-
- `_FAILED`: Operation failed
|
|
37
|
-
- `_ERROR`: Error occurred
|
|
38
|
-
- `_WARNING`: Warning condition
|
|
39
|
-
- `_SKIPPED`: Operation bypassed
|
|
40
|
-
- `_ABORTED`: Operation cancelled
|
|
41
|
-
- `_RETRYING` / `_ATTEMPTING`: Retry in progress
|
|
42
|
-
|
|
43
|
-
### Domain Prefixes
|
|
44
|
-
|
|
45
|
-
Group related operations with consistent prefixes:
|
|
46
|
-
- **Git Operations**: `GIT_FETCH`, `GIT_ADD`, `GIT_COMMIT`, `GIT_PUSH`
|
|
47
|
-
- **Branch Operations**: `BRANCH_SYNC`, `BRANCH_CREATE`, `BRANCH_SWITCH`
|
|
48
|
-
- **NPM Operations**: `NPM_INSTALL`, `NPM_LINK`, `NPM_LOCK`
|
|
49
|
-
- **Package Operations**: `PACKAGE_STARTED`, `PACKAGE_COMPLETED`, `PACKAGE_FAILED`
|
|
50
|
-
- **Merge Operations**: `MERGE_STARTING`, `MERGE_CONFLICTS`, `MERGE_SUCCESS`
|
|
51
|
-
- **Precheck Operations**: `PRECHECK_STARTING`, `PRECHECK_GIT_STATUS`, `PRECHECK_COMPLETE`
|
|
52
|
-
|
|
53
|
-
## Standard Keys
|
|
54
|
-
|
|
55
|
-
Use these standardized keys in key-value pairs:
|
|
56
|
-
|
|
57
|
-
| Key | Usage | Example |
|
|
58
|
-
|-----|-------|---------|
|
|
59
|
-
| `Package` | Package name | `Package: @scope/name` |
|
|
60
|
-
| `Status` | Current state | `Status: success` |
|
|
61
|
-
| `Error` | Error message | `Error: Connection timeout` |
|
|
62
|
-
| `Purpose` | Why operation exists | `Purpose: Validate dependencies` |
|
|
63
|
-
| `Action` | What to do next | `Action: Retry operation` |
|
|
64
|
-
| `Path` | File/directory path | `Path: /path/to/file` |
|
|
65
|
-
| `Command` | Command being run | `Command: npm install` |
|
|
66
|
-
| `Branch` | Git branch name | `Branch: main` |
|
|
67
|
-
| `Remote` | Git remote name | `Remote: origin` |
|
|
68
|
-
| `Count` | Number of items | `Count: 10` |
|
|
69
|
-
| `Progress` | Current progress | `Progress: [5/10]` |
|
|
70
|
-
| `Duration` | Time taken | `Duration: 1500ms` |
|
|
71
|
-
| `Mode` | Operation mode | `Mode: dry-run` |
|
|
72
|
-
| `Type` | Item type | `Type: relative_file_dependency` |
|
|
73
|
-
| `Reason` | Why something happened | `Reason: No changes detected` |
|
|
74
|
-
| `Impact` | Effect of operation | `Impact: Recovery may be affected` |
|
|
75
|
-
|
|
76
|
-
## Examples by Category
|
|
77
|
-
|
|
78
|
-
### Package Execution
|
|
79
|
-
|
|
80
|
-
```typescript
|
|
81
|
-
// Starting
|
|
82
|
-
logger.info('PACKAGE_STARTED: Package execution initiated | Package: @scope/name | Status: running');
|
|
83
|
-
|
|
84
|
-
// Progress
|
|
85
|
-
logger.info('PACKAGE_EXECUTING: Running command | Package: test | Progress: [3/10] | Command: npm test');
|
|
86
|
-
|
|
87
|
-
// Success
|
|
88
|
-
logger.info('PACKAGE_COMPLETED: Package finished successfully | Package: test | Duration: 1500ms | Status: success');
|
|
89
|
-
|
|
90
|
-
// Failure
|
|
91
|
-
logger.error('PACKAGE_FAILED: Package execution failed | Package: test | Error: Test timeout | Status: failed');
|
|
92
|
-
|
|
93
|
-
// Skip
|
|
94
|
-
logger.info('PACKAGE_SKIPPED_NO_CHANGES: Package skipped | Package: test | Reason: no-code-changes');
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Git Operations
|
|
98
|
-
|
|
99
|
-
```typescript
|
|
100
|
-
// Fetch
|
|
101
|
-
logger.info('GIT_FETCH_STARTING: Fetching remote information | Remote: origin | Purpose: Avoid conflicts');
|
|
102
|
-
logger.info('GIT_FETCH_SUCCESS: Fetched remote successfully | Remote: origin | Status: up-to-date');
|
|
103
|
-
logger.warn('GIT_FETCH_FAILED: Unable to fetch remote | Remote: origin | Error: Connection timeout');
|
|
104
|
-
|
|
105
|
-
// Branch Sync
|
|
106
|
-
logger.info('BRANCH_SYNC_ATTEMPTING: Initiating branch sync | Branch: main | Remote: origin | Operation: fetch + merge');
|
|
107
|
-
logger.info('BRANCH_SYNC_SUCCESS: Branch synchronized | Branch: main | Remote: origin | Status: in-sync');
|
|
108
|
-
logger.error('BRANCH_SYNC_FAILED: Sync operation failed | Branch: main | Error: Conflicts detected | Impact: Cannot proceed');
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### NPM Operations
|
|
112
|
-
|
|
113
|
-
```typescript
|
|
114
|
-
logger.info('NPM_LINK_DETECTED: Found npm link references | File: package-lock.json | Type: relative_file_dependency');
|
|
115
|
-
logger.info('NPM_LINK_CLEANUP_REQUIRED: Npm links must be cleaned | Impact: Must clean before publish');
|
|
116
|
-
logger.info('NPM_LOCK_REGENERATED: Successfully regenerated package-lock.json | Path: ./package-lock.json | Status: clean');
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### Merge Operations
|
|
120
|
-
|
|
121
|
-
```typescript
|
|
122
|
-
logger.info('MERGE_STARTING: Initiating merge operation | Target: main | Source: feature-branch');
|
|
123
|
-
logger.warn('MERGE_CONFLICTS_DETECTED: Conflicts found | Files: package.json, package-lock.json | Strategy: auto-resolve');
|
|
124
|
-
logger.info('MERGE_AUTO_RESOLVING: Automatically resolving conflicts | Strategy: Keep current branch | Files: 2');
|
|
125
|
-
logger.info('MERGE_SUCCESS: Merge completed successfully | Target: main | Conflicts Resolved: 2');
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
### Error Handling
|
|
129
|
-
|
|
130
|
-
```typescript
|
|
131
|
-
// Recoverable
|
|
132
|
-
logger.error('ERROR_RECOVERABLE: This error is recoverable | Action: Retry operation | Status: can-retry');
|
|
133
|
-
|
|
134
|
-
// Unexpected
|
|
135
|
-
logger.error('ERROR_UNEXPECTED: Unexpected error occurred | Command: publish | Error: message | Type: unexpected');
|
|
136
|
-
|
|
137
|
-
// Resolution Steps
|
|
138
|
-
logger.error('CONFLICT_RESOLUTION_REQUIRED: Manual intervention needed');
|
|
139
|
-
logger.error(' Step 1: Resolve conflicts in files');
|
|
140
|
-
logger.error(' Step 2: Stage resolved files | Command: git add <files>');
|
|
141
|
-
logger.error(' Step 3: Complete merge | Command: git commit');
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
### Dry Run Mode
|
|
145
|
-
|
|
146
|
-
```typescript
|
|
147
|
-
// Always indicate dry-run clearly
|
|
148
|
-
logger.info('GIT_ADD_DRY_RUN: Would stage all changes | Mode: dry-run | Command: git add -A');
|
|
149
|
-
logger.info('PUSH_DRY_RUN: Would push to remote | Mode: dry-run | Remote: origin | Command: git push');
|
|
150
|
-
logger.info('PRECHECK_GIT_REPO: Would verify git repository | Mode: dry-run | Command: git rev-parse --git-dir');
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
### Progress and Metrics
|
|
154
|
-
|
|
155
|
-
```typescript
|
|
156
|
-
logger.info('PARALLEL_EXECUTION_STARTING: Initiating parallel execution | Package Count: 10 | Mode: parallel');
|
|
157
|
-
logger.info('PROGRESS: [5/10] Package completed: @scope/package');
|
|
158
|
-
logger.info('PARALLEL_EXECUTION_COMPLETED: Execution finished | Duration: 45s | Status: completed');
|
|
159
|
-
|
|
160
|
-
logger.info('EXECUTION_METRICS: Performance statistics:');
|
|
161
|
-
logger.info(' METRIC_TOTAL_PACKAGES: 10');
|
|
162
|
-
logger.info(' METRIC_COMPLETED: 8 packages successfully completed');
|
|
163
|
-
logger.info(' METRIC_FAILED: 2 packages failed');
|
|
164
|
-
logger.info(' METRIC_PEAK_CONCURRENCY: 4 packages running simultaneously');
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
### User Interaction
|
|
168
|
-
|
|
169
|
-
```typescript
|
|
170
|
-
logger.info('SENDIT_MODE_ACTIVE: SendIt mode enabled | Action: Commit will execute automatically | Staged Changes: Available');
|
|
171
|
-
logger.info('USER_CANCELLATION: Operation cancelled by user | Reason: User aborted | Status: cancelled');
|
|
172
|
-
logger.info('COMMIT_NO_ACTION: No commit will be performed | Status: aborted | Next: User can retry');
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
## Migration Checklist
|
|
176
|
-
|
|
177
|
-
When updating log messages:
|
|
178
|
-
|
|
179
|
-
- [ ] Add structured prefix with SNAKE_CASE
|
|
180
|
-
- [ ] Include human-readable description
|
|
181
|
-
- [ ] Add relevant key-value pairs with pipe separators
|
|
182
|
-
- [ ] Include Purpose, Action, Impact, or Reason when applicable
|
|
183
|
-
- [ ] Use consistent key names from standard list
|
|
184
|
-
- [ ] Indicate dry-run mode explicitly
|
|
185
|
-
- [ ] Provide resolution steps for errors
|
|
186
|
-
- [ ] Include progress for iterative operations
|
|
187
|
-
- [ ] Add status indicators
|
|
188
|
-
- [ ] Remove emojis from structured prefixes (can keep in description)
|
|
189
|
-
|
|
190
|
-
## Bad vs Good Examples
|
|
191
|
-
|
|
192
|
-
### ❌ Bad
|
|
193
|
-
```typescript
|
|
194
|
-
logger.info('✅ Completed: test');
|
|
195
|
-
logger.warn('⚠️ Could not fetch from remote: timeout');
|
|
196
|
-
logger.info('Running command...');
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
### ✅ Good
|
|
200
|
-
```typescript
|
|
201
|
-
logger.info('PACKAGE_COMPLETED: Package execution finished | Package: test | Status: success');
|
|
202
|
-
logger.warn('GIT_FETCH_FAILED: Unable to fetch from remote | Remote: origin | Error: timeout | Impact: May cause conflicts');
|
|
203
|
-
logger.info('PACKAGE_EXECUTING: Running command for package | Package: test | Command: npm test');
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
## Testing
|
|
207
|
-
|
|
208
|
-
Run the logging pattern tests:
|
|
209
|
-
```bash
|
|
210
|
-
npm test -- tests/logging/aiFriendlyLogging.test.ts
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
All 27 tests should pass, validating:
|
|
214
|
-
- Message format
|
|
215
|
-
- Prefix naming
|
|
216
|
-
- Key-value pairs
|
|
217
|
-
- Semantic operations
|
|
218
|
-
- Context inclusion
|
|
219
|
-
- Error recovery info
|
|
220
|
-
- Machine-readable markers
|
|
221
|
-
|
|
222
|
-
## Benefits for AI Agents
|
|
223
|
-
|
|
224
|
-
1. **Easy Parsing**: Structured format enables regex-based extraction
|
|
225
|
-
2. **State Tracking**: Operation prefixes indicate current workflow state
|
|
226
|
-
3. **Context Understanding**: Key-value pairs provide necessary details
|
|
227
|
-
4. **Decision Making**: Action/Impact fields guide next steps
|
|
228
|
-
5. **Error Recovery**: Explicit resolution steps and alternatives
|
|
229
|
-
6. **Progress Monitoring**: Standardized progress indicators
|
|
230
|
-
|
|
231
|
-
## References
|
|
232
|
-
|
|
233
|
-
- Test Suite: `tests/logging/aiFriendlyLogging.test.ts`
|
|
234
|
-
- Implementation Examples: All `src/commands/*.ts` files
|
|
235
|
-
- Execution Logging: `src/execution/TreeExecutionAdapter.ts`
|
|
236
|
-
- Error Handling: `src/util/errorHandler.ts`
|
|
237
|
-
|