@eldrforge/kodrdriv 0.0.38 → 0.0.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/arguments.js +8 -5
- package/dist/arguments.js.map +1 -1
- package/dist/commands/publish-tree.js +223 -44
- package/dist/commands/publish-tree.js.map +1 -1
- package/dist/commands/publish.js +25 -9
- package/dist/commands/publish.js.map +1 -1
- package/dist/constants.js +3 -2
- package/dist/constants.js.map +1 -1
- package/dist/types.js +2 -1
- package/dist/types.js.map +1 -1
- package/dist/util/github.js +78 -34
- package/dist/util/github.js.map +1 -1
- package/package.json +1 -1
|
@@ -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';\nimport * as Link from './link';\nimport * as Unlink from './unlink';\nimport { getLogger, getDryRunLogger } from '../logging';\nimport { Config, PullRequest } from '../types';\nimport { run, runWithDryRunSupport } from '../util/child';\nimport * as GitHub from '../util/github';\nimport { create as createStorage } from '../util/storage';\nimport { incrementPatchVersion, getOutputPath } from '../util/general';\nimport { DEFAULT_OUTPUT_DIRECTORY } from '../constants';\nimport { safeJsonParse, validatePackageJson } from '../util/validation';\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): 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) {\n if (!isDryRun) {\n throw new Error('Not in a git repository. Please run this command from within a git repository.');\n }\n }\n\n // Check for uncommitted changes\n logger.info('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) {\n if (!isDryRun) {\n throw new Error('Failed to check git status. Please ensure you are in a valid git repository.');\n }\n }\n\n // Check if we're on a release branch\n logger.info('Checking current branch...');\n if (isDryRun) {\n logger.info('Would verify current branch is a release branch (starts with \"release/\")');\n } else {\n const currentBranch = await GitHub.getCurrentBranchName();\n if (!currentBranch.startsWith('release/')) {\n throw new Error(`Current branch '${currentBranch}' is not a release branch. Please switch to a release branch (e.g., release/1.0.0) before running publish.`);\n }\n }\n\n // Check if prepublishOnly script exists in package.json\n logger.info('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\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 // Track whether the publish process completed successfully\n let publishCompleted = false;\n\n // Run prechecks before starting any work\n await runPrechecks(runConfig);\n\n logger.info('Starting release process...');\n\n try {\n // Unlink all workspace packages before starting (if enabled)\n const shouldUnlink = runConfig.publish?.unlinkWorkspacePackages !== false; // default to true\n if (shouldUnlink) {\n logger.verbose('Unlinking workspace packages...');\n await Unlink.execute(runConfig);\n } else {\n logger.verbose('Skipping unlink workspace packages (disabled in config).');\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 // 1. Prepare for release\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.verbose('Staging changes for release commit');\n await runWithDryRunSupport('git add package.json package-lock.json', isDryRun);\n\n logger.info('Running prepublishOnly script...');\n await runWithDryRunSupport('npm run prepublishOnly', isDryRun);\n\n logger.verbose('Checking for staged changes...');\n if (isDryRun) {\n logger.verbose('Assuming staged changes exist for demo purposes');\n logger.verbose('Would create commit...');\n await Commit.execute(runConfig);\n } else {\n if (await Diff.hasStagedChanges()) {\n logger.verbose('Staged changes found, creating commit...');\n await Commit.execute(runConfig);\n } else {\n logger.verbose('No changes to commit, skipping commit.');\n }\n }\n\n logger.info('Bumping version...');\n // Manually increment version without creating a tag\n if (isDryRun) {\n logger.info('Would manually increment patch version in package.json and commit');\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 const newVersion = incrementPatchVersion(currentVersion);\n packageJson.version = newVersion;\n await storage.writeFile('package.json', JSON.stringify(packageJson, null, 2) + '\\n', 'utf-8');\n logger.info(`Version bumped from ${currentVersion} to ${newVersion}`);\n\n // Stage and commit the version change\n await run('git add package.json');\n await run(`git commit -m \"chore: bump version to ${newVersion}\"`);\n logger.info(`Version change committed: ${newVersion}`);\n }\n\n logger.info('Generating release notes...');\n const releaseSummary = await Release.execute(runConfig);\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 currentBranch = await GitHub.getCurrentBranchName();\n await runWithDryRunSupport(`git push origin ${currentBranch}`, 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.', await GitHub.getCurrentBranchName());\n if (!pr) {\n throw new Error('Failed to create pull request.');\n }\n logger.info(`Pull request created: ${pr.html_url}`);\n }\n }\n\n logger.info(`Waiting for PR #${pr!.number} checks to complete...`);\n if (!isDryRun) {\n // Configure timeout and user confirmation behavior\n const timeout = runConfig.publish?.checksTimeout || 300000; // 5 minutes default\n const senditMode = runConfig.publish?.sendit || false;\n // sendit flag overrides skipUserConfirmation - if sendit is true, skip confirmation\n const skipUserConfirmation = senditMode || runConfig.publish?.skipUserConfirmation || false;\n\n await GitHub.waitForPullRequestChecks(pr!.number, {\n timeout,\n skipUserConfirmation\n });\n }\n\n const mergeMethod = runConfig.publish?.mergeMethod || 'squash';\n if (isDryRun) {\n logger.info(`Would merge PR #${pr!.number} using ${mergeMethod} method`);\n } else {\n await GitHub.mergePullRequest(pr!.number, mergeMethod);\n }\n\n logger.info('Checking out main branch...');\n await runWithDryRunSupport('git checkout main', isDryRun);\n await runWithDryRunSupport('git pull origin main', isDryRun);\n\n // Now create and push the tag on the main 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 } = JSON.parse(packageJsonContents);\n tagName = `v${version}`;\n\n // Check if tag already exists locally\n try {\n const { stdout } = await run(`git tag -l ${tagName}`);\n if (stdout.trim() === tagName) {\n logger.info(`Tag ${tagName} already exists locally, skipping tag creation`);\n } else {\n await run(`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 run(`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 run(`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 run(`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 run(`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 } 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 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 || 600000; // 10 minutes default\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 logger.info('Creating new release branch...');\n if (isDryRun) {\n logger.info('Would create next release branch (e.g., release/1.0.1) and push to origin');\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const nextVersion = incrementPatchVersion(version);\n const newBranchName = `release/${nextVersion}`;\n\n // Check if branch already exists locally\n let branchExists = false;\n try {\n await run(`git show-ref --verify --quiet refs/heads/${newBranchName}`);\n branchExists = true;\n } catch {\n // Branch doesn't exist locally\n branchExists = false;\n }\n\n if (branchExists) {\n // Branch exists, switch to it\n await run(`git checkout ${newBranchName}`);\n logger.info(`Switched to existing branch ${newBranchName}`);\n } else {\n // Branch doesn't exist, create it\n await run(`git checkout -b ${newBranchName}`);\n logger.info(`Created new branch ${newBranchName}`);\n }\n\n // Check if branch exists on remote before pushing\n let remoteExists = false;\n try {\n const { stdout } = await run(`git ls-remote origin refs/heads/${newBranchName}`);\n remoteExists = stdout.trim() !== '';\n } catch {\n // Assume remote doesn't exist if ls-remote fails\n remoteExists = false;\n }\n\n if (remoteExists) {\n logger.info(`Branch ${newBranchName} already exists on remote, skipping push`);\n } else {\n await run(`git push -u origin ${newBranchName}`);\n logger.info(`Branch ${newBranchName} pushed to origin.`);\n }\n }\n\n logger.info('Preparation complete.');\n publishCompleted = true; // Mark as completed only if we reach this point\n } finally {\n // Always restore linked packages if enabled, regardless of success/failure\n // This ensures we don't leave the repository with file: dependencies\n const shouldLink = runConfig.publish?.linkWorkspacePackages !== false; // default to true\n if (shouldLink) {\n if (publishCompleted) {\n logger.verbose('Restoring linked packages after successful publish...');\n } else {\n logger.verbose('Restoring linked packages after failed publish to avoid leaving file: dependencies...');\n }\n await Link.execute(runConfig);\n } else {\n logger.verbose('Skipping restore linked packages (disabled in config).');\n }\n }\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","dryRun","createStorage","log","info","run","stdout","trim","currentBranch","GitHub","startsWith","packageJsonPath","packageJson","packageJsonContents","parsed","safeJsonParse","validatePackageJson","scripts","prepublishOnly","coreRequiredEnvVars","publish","npmrcEnvVars","allRequiredEnvVars","Set","execute","publishCompleted","shouldUnlink","unlinkWorkspacePackages","Unlink","pr","branchName","html_url","updatePatterns","dependencyUpdatePatterns","patternsArg","runWithDryRunSupport","Commit","Diff","currentVersion","version","newVersion","incrementPatchVersion","writeFile","JSON","stringify","releaseSummary","Release","outputDirectory","DEFAULT_OUTPUT_DIRECTORY","ensureDirectory","releaseNotesPath","getOutputPath","releaseTitlePath","body","title","number","labels","commitTitle","timeout","checksTimeout","senditMode","sendit","skipUserConfirmation","mergeMethod","tagName","parse","tagWasPushed","pushError","Promise","resolve","setTimeout","releaseNotesContent","releaseTitle","retries","isTagNotFoundError","waitForWorkflows","waitForReleaseWorkflows","workflowTimeout","releaseWorkflowsTimeout","workflowNames","releaseWorkflowNames","undefined","nextVersion","newBranchName","branchExists","remoteExists","shouldLink","linkWorkspacePackages","Link"],"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';\nimport * as Link from './link';\nimport * as Unlink from './unlink';\nimport { getLogger, getDryRunLogger } from '../logging';\nimport { Config, PullRequest } from '../types';\nimport { run, runWithDryRunSupport } from '../util/child';\nimport * as GitHub from '../util/github';\nimport { create as createStorage } from '../util/storage';\nimport { incrementPatchVersion, getOutputPath } from '../util/general';\nimport { DEFAULT_OUTPUT_DIRECTORY } from '../constants';\nimport { safeJsonParse, validatePackageJson } from '../util/validation';\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): 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) {\n if (!isDryRun) {\n throw new Error('Not in a git repository. Please run this command from within a git repository.');\n }\n }\n\n // Check for uncommitted changes\n logger.info('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) {\n if (!isDryRun) {\n throw new Error('Failed to check git status. Please ensure you are in a valid git repository.');\n }\n }\n\n // Check if we're on a release branch\n logger.info('Checking current branch...');\n if (isDryRun) {\n logger.info('Would verify current branch is a release branch (starts with \"release/\")');\n } else {\n const currentBranch = await GitHub.getCurrentBranchName();\n if (!currentBranch.startsWith('release/')) {\n throw new Error(`Current branch '${currentBranch}' is not a release branch. Please switch to a release branch (e.g., release/1.0.0) before running publish.`);\n }\n }\n\n // Check if prepublishOnly script exists in package.json\n logger.info('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\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 // Track whether the publish process completed successfully\n let publishCompleted = false;\n // Track whether we've unlinked packages (and thus need to restore them)\n let packagesUnlinked = false;\n\n // Run prechecks before starting any work\n await runPrechecks(runConfig);\n\n logger.info('Starting release process...');\n\n try {\n // Unlink all workspace packages before starting (if enabled)\n const shouldUnlink = runConfig.publish?.unlinkWorkspacePackages !== false; // default to true\n if (shouldUnlink) {\n logger.verbose('Unlinking workspace packages...');\n await Unlink.execute(runConfig);\n packagesUnlinked = true;\n } else {\n logger.verbose('Skipping unlink workspace packages (disabled in config).');\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 // 1. Prepare for release\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.verbose('Staging changes for release commit');\n await runWithDryRunSupport('git add package.json package-lock.json', isDryRun);\n\n logger.info('Running prepublishOnly script...');\n await runWithDryRunSupport('npm run prepublishOnly', isDryRun);\n\n logger.verbose('Checking for staged changes...');\n if (isDryRun) {\n logger.verbose('Assuming staged changes exist for demo purposes');\n logger.verbose('Would create commit...');\n await Commit.execute(runConfig);\n } else {\n if (await Diff.hasStagedChanges()) {\n logger.verbose('Staged changes found, creating commit...');\n await Commit.execute(runConfig);\n } else {\n logger.verbose('No changes to commit, skipping commit.');\n }\n }\n\n logger.info('Bumping version...');\n // Manually increment version without creating a tag\n if (isDryRun) {\n logger.info('Would manually increment patch version in package.json and commit');\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 const newVersion = incrementPatchVersion(currentVersion);\n packageJson.version = newVersion;\n await storage.writeFile('package.json', JSON.stringify(packageJson, null, 2) + '\\n', 'utf-8');\n logger.info(`Version bumped from ${currentVersion} to ${newVersion}`);\n\n // Stage and commit the version change\n await run('git add package.json');\n await run(`git commit -m \"chore: bump version to ${newVersion}\"`);\n logger.info(`Version change committed: ${newVersion}`);\n }\n\n logger.info('Generating release notes...');\n const releaseSummary = await Release.execute(runConfig);\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 currentBranch = await GitHub.getCurrentBranchName();\n await runWithDryRunSupport(`git push origin ${currentBranch}`, 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.', await GitHub.getCurrentBranchName());\n if (!pr) {\n throw new Error('Failed to create pull request.');\n }\n logger.info(`Pull request created: ${pr.html_url}`);\n }\n }\n\n logger.info(`Waiting for PR #${pr!.number} checks to complete...`);\n if (!isDryRun) {\n // Configure timeout and user confirmation behavior\n const timeout = runConfig.publish?.checksTimeout || 300000; // 5 minutes default\n const senditMode = runConfig.publish?.sendit || false;\n // sendit flag overrides skipUserConfirmation - if sendit is true, skip confirmation\n const skipUserConfirmation = senditMode || runConfig.publish?.skipUserConfirmation || false;\n\n await GitHub.waitForPullRequestChecks(pr!.number, {\n timeout,\n skipUserConfirmation\n });\n }\n\n const mergeMethod = runConfig.publish?.mergeMethod || 'squash';\n if (isDryRun) {\n logger.info(`Would merge PR #${pr!.number} using ${mergeMethod} method`);\n } else {\n try {\n await GitHub.mergePullRequest(pr!.number, mergeMethod);\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 logger.info('Checking out main branch...');\n await runWithDryRunSupport('git checkout main', isDryRun);\n await runWithDryRunSupport('git pull origin main', isDryRun);\n\n // Now create and push the tag on the main 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 } = JSON.parse(packageJsonContents);\n tagName = `v${version}`;\n\n // Check if tag already exists locally\n try {\n const { stdout } = await run(`git tag -l ${tagName}`);\n if (stdout.trim() === tagName) {\n logger.info(`Tag ${tagName} already exists locally, skipping tag creation`);\n } else {\n await run(`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 run(`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 run(`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 run(`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 run(`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 } 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 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 || 600000; // 10 minutes default\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 logger.info('Creating new release branch...');\n if (isDryRun) {\n logger.info('Would create next release branch (e.g., release/1.0.1) and push to origin');\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const nextVersion = incrementPatchVersion(version);\n const newBranchName = `release/${nextVersion}`;\n\n // Check if branch already exists locally\n let branchExists = false;\n try {\n await run(`git show-ref --verify --quiet refs/heads/${newBranchName}`);\n branchExists = true;\n } catch {\n // Branch doesn't exist locally\n branchExists = false;\n }\n\n if (branchExists) {\n // Branch exists, switch to it\n await run(`git checkout ${newBranchName}`);\n logger.info(`Switched to existing branch ${newBranchName}`);\n } else {\n // Branch doesn't exist, create it\n await run(`git checkout -b ${newBranchName}`);\n logger.info(`Created new branch ${newBranchName}`);\n }\n\n // Check if branch exists on remote before pushing\n let remoteExists = false;\n try {\n const { stdout } = await run(`git ls-remote origin refs/heads/${newBranchName}`);\n remoteExists = stdout.trim() !== '';\n } catch {\n // Assume remote doesn't exist if ls-remote fails\n remoteExists = false;\n }\n\n if (remoteExists) {\n logger.info(`Branch ${newBranchName} already exists on remote, skipping push`);\n } else {\n await run(`git push -u origin ${newBranchName}`);\n logger.info(`Branch ${newBranchName} pushed to origin.`);\n }\n }\n\n logger.info('Preparation complete.');\n publishCompleted = true; // Mark as completed only if we reach this point\n } finally {\n // Link packages if linking is enabled, regardless of whether we unlinked them\n const shouldLink = runConfig.publish?.linkWorkspacePackages !== false; // default to true\n if (shouldLink) {\n logger.verbose('Ensuring linked packages are properly set up...');\n await Link.execute(runConfig);\n } else {\n logger.verbose('Skipping link packages (disabled in config).');\n }\n }\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","dryRun","createStorage","log","info","run","stdout","trim","currentBranch","GitHub","startsWith","packageJsonPath","packageJson","packageJsonContents","parsed","safeJsonParse","validatePackageJson","scripts","prepublishOnly","coreRequiredEnvVars","publish","npmrcEnvVars","allRequiredEnvVars","Set","execute","publishCompleted","packagesUnlinked","shouldUnlink","unlinkWorkspacePackages","Unlink","pr","branchName","html_url","updatePatterns","dependencyUpdatePatterns","patternsArg","runWithDryRunSupport","Commit","Diff","currentVersion","version","newVersion","incrementPatchVersion","writeFile","JSON","stringify","releaseSummary","Release","outputDirectory","DEFAULT_OUTPUT_DIRECTORY","ensureDirectory","releaseNotesPath","getOutputPath","releaseTitlePath","body","title","number","labels","commitTitle","timeout","checksTimeout","senditMode","sendit","skipUserConfirmation","mergeMethod","tagName","parse","tagWasPushed","pushError","Promise","resolve","setTimeout","releaseNotesContent","releaseTitle","retries","isTagNotFoundError","waitForWorkflows","waitForReleaseWorkflows","workflowTimeout","releaseWorkflowsTimeout","workflowNames","releaseWorkflowNames","undefined","nextVersion","newBranchName","branchExists","remoteExists","shouldLink","linkWorkspacePackages","Link"],"mappings":"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"}
|
package/dist/constants.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import os from 'os';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
|
|
4
|
-
const VERSION = '0.0.
|
|
4
|
+
const VERSION = '0.0.40 (HEAD/b6767c0 T:v0.0.40 2025-07-26 17:07:06 -0700) linux x64 v22.17.1';
|
|
5
5
|
const PROGRAM_NAME = 'kodrdriv';
|
|
6
6
|
const DEFAULT_OVERRIDES = false;
|
|
7
7
|
const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS = 'YYYY-MM-DD-HHmmss.SSS';
|
|
@@ -158,7 +158,8 @@ const KODRDRIV_DEFAULTS = {
|
|
|
158
158
|
startFrom: undefined,
|
|
159
159
|
script: undefined,
|
|
160
160
|
cmd: undefined,
|
|
161
|
-
publish: false
|
|
161
|
+
publish: false,
|
|
162
|
+
parallel: false
|
|
162
163
|
},
|
|
163
164
|
excludedPatterns: DEFAULT_EXCLUDED_PATTERNS
|
|
164
165
|
};
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["import { MergeMethod } from './types';\nimport os from 'os';\nimport path from 'path';\n\nexport const VERSION = '__VERSION__ (__GIT_BRANCH__/__GIT_COMMIT__ __GIT_TAGS__ __GIT_COMMIT_DATE__) __SYSTEM_INFO__';\nexport const PROGRAM_NAME = 'kodrdriv';\nexport const DEFAULT_CHARACTER_ENCODING = 'utf-8';\nexport const DEFAULT_BINARY_TO_TEXT_ENCODING = 'base64';\nexport const DEFAULT_DIFF = true;\nexport const DEFAULT_LOG = false;\nexport const DEFAULT_OVERRIDES = false;\nexport const DATE_FORMAT_MONTH_DAY = 'MM-DD';\nexport const DATE_FORMAT_YEAR = 'YYYY';\nexport const DATE_FORMAT_YEAR_MONTH = 'YYYY-MM';\nexport const DATE_FORMAT_YEAR_MONTH_DAY = 'YYYY-MM-DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_SLASH = 'YYYY/MM/DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES = 'YYYY-MM-DD-HHmm';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS = 'YYYY-MM-DD-HHmmss';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS = 'YYYY-MM-DD-HHmmss.SSS';\nexport const DATE_FORMAT_SHORT_TIMESTAMP = 'YYMMdd-HHmm';\nexport const DATE_FORMAT_MONTH = 'MM';\nexport const DATE_FORMAT_DAY = 'DD';\nexport const DATE_FORMAT_HOURS = 'HHmm';\nexport const DATE_FORMAT_MINUTES = 'mm';\nexport const DATE_FORMAT_SECONDS = 'ss';\nexport const DATE_FORMAT_MILLISECONDS = 'SSS';\nexport const DEFAULT_VERBOSE = false;\nexport const DEFAULT_DRY_RUN = false;\nexport const DEFAULT_DEBUG = false;\nexport const DEFAULT_MODEL = 'gpt-4o-mini';\nexport const DEFAULT_MODEL_STRONG = 'gpt-4o';\nexport const DEFAULT_OUTPUT_DIRECTORY = 'output/kodrdriv';\n\n// Buffer size for git commands that may produce large output (like git log)\nexport const DEFAULT_GIT_COMMAND_MAX_BUFFER = 50 * 1024 * 1024; // 50MB\n\nexport const DEFAULT_CONTEXT_DIRECTORIES: string[] = [];\n\nexport const DEFAULT_CONFIG_DIR = '.kodrdriv';\nexport const DEFAULT_PREFERENCES_DIRECTORY = path.join(os.homedir(), '.kodrdriv');\n\nexport const DEFAULT_FROM_COMMIT_ALIAS = 'origin/HEAD';\nexport const DEFAULT_TO_COMMIT_ALIAS = 'HEAD';\n\nexport const DEFAULT_ADD = false;\nexport const DEFAULT_CACHED = false;\nexport const DEFAULT_SENDIT_MODE = false;\nexport const DEFAULT_MESSAGE_LIMIT = 50;\n\nexport const DEFAULT_MERGE_METHOD: MergeMethod = 'squash';\n\nexport const DEFAULT_EXCLUDED_PATTERNS = [\n 'node_modules', 'package-lock.json', 'yarn.lock', 'bun.lockb',\n 'composer.lock', 'Cargo.lock', 'Gemfile.lock',\n 'dist', 'build', 'out', '.next', '.nuxt', 'coverage',\n '.vscode', '.idea', '.DS_Store', '.git', '.gitignore',\n 'logs', 'tmp', '.cache', '*.log', '.env', '.env.*',\n '*.pem', '*.crt', '*.key', '*.sqlite', '*.db',\n '*.zip', '*.tar', '*.gz', '*.exe', '*.bin'\n];\n\nexport const COMMAND_COMMIT = 'commit';\nexport const COMMAND_AUDIO_COMMIT = 'audio-commit';\nexport const COMMAND_SELECT_AUDIO = 'select-audio';\nexport const COMMAND_RELEASE = 'release';\nexport const COMMAND_REVIEW = 'review';\nexport const COMMAND_AUDIO_REVIEW = 'audio-review';\nexport const COMMAND_PUBLISH = 'publish';\nexport const COMMAND_PUBLISH_TREE = 'publish-tree';\nexport const COMMAND_LINK = 'link';\nexport const COMMAND_UNLINK = 'unlink';\nexport const COMMAND_CLEAN = 'clean';\nexport const COMMAND_CHECK_CONFIG = 'check-config';\nexport const COMMAND_INIT_CONFIG = 'init-config';\n\nexport const ALLOWED_COMMANDS = [\n COMMAND_COMMIT,\n COMMAND_AUDIO_COMMIT,\n COMMAND_SELECT_AUDIO,\n COMMAND_RELEASE,\n COMMAND_REVIEW,\n COMMAND_AUDIO_REVIEW,\n COMMAND_PUBLISH,\n COMMAND_PUBLISH_TREE,\n COMMAND_LINK,\n COMMAND_UNLINK,\n COMMAND_CLEAN\n];\n\nexport const DEFAULT_COMMAND = COMMAND_COMMIT;\n\nexport const DEFAULT_INSTRUCTIONS_DIR = `instructions`;\n\nexport const DEFAULT_PERSONA_DIR = `personas`;\n\nexport const DEFAULT_INSTRUCTIONS_COMMIT_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/commit.md`;\nexport const DEFAULT_INSTRUCTIONS_RELEASE_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/release.md`;\nexport const DEFAULT_INSTRUCTIONS_REVIEW_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/review.md`;\n\nexport const DEFAULT_PERSONA_RELEASER_FILE = `${DEFAULT_PERSONA_DIR}/releaser.md`;\nexport const DEFAULT_PERSONA_YOU_FILE = `${DEFAULT_PERSONA_DIR}/you.md`;\n\n// Default instructions for each persona\nexport const DEFAULT_INSTRUCTIONS_MAP = {\n [COMMAND_COMMIT]: DEFAULT_INSTRUCTIONS_COMMIT_FILE,\n [COMMAND_AUDIO_COMMIT]: DEFAULT_INSTRUCTIONS_COMMIT_FILE, // Reuse commit instructions\n [COMMAND_RELEASE]: DEFAULT_INSTRUCTIONS_RELEASE_FILE,\n [COMMAND_REVIEW]: DEFAULT_INSTRUCTIONS_REVIEW_FILE, // Reuse audio-review instructions for now\n [COMMAND_AUDIO_REVIEW]: DEFAULT_INSTRUCTIONS_REVIEW_FILE,\n};\n\n// Default personas for each command\nexport const DEFAULT_PERSONA_MAP = {\n [COMMAND_COMMIT]: DEFAULT_PERSONA_YOU_FILE,\n [COMMAND_AUDIO_COMMIT]: DEFAULT_PERSONA_YOU_FILE, // Use You persona\n [COMMAND_RELEASE]: DEFAULT_PERSONA_RELEASER_FILE,\n [COMMAND_REVIEW]: DEFAULT_PERSONA_YOU_FILE, // Use You persona\n [COMMAND_AUDIO_REVIEW]: DEFAULT_PERSONA_YOU_FILE,\n};\n\n// Used by child process to create paths\nexport const DEFAULT_PATH_SEPARATOR = '/';\n\n// Used by util/general for file filtering\nexport const DEFAULT_IGNORE_PATTERNS = [\n 'node_modules/**',\n '**/*.log',\n '.git/**',\n 'dist/**',\n 'build/**',\n 'coverage/**',\n '.DS_Store',\n '*.tmp',\n '*.cache',\n];\n\n// Used by util/storage for directory names\nexport const DEFAULT_DIRECTORY_PREFIX = '.kodrdriv';\n\n// Used by other commands but not exposed in CLI\nexport const INTERNAL_DEFAULT_OUTPUT_FILE = 'output.txt';\n\nexport const INTERNAL_DATETIME_FORMAT = 'YYYY-MM-DD_HH-mm-ss';\n\n// Define defaults in one place\nexport const KODRDRIV_DEFAULTS = {\n dryRun: DEFAULT_DRY_RUN,\n verbose: DEFAULT_VERBOSE,\n debug: DEFAULT_DEBUG,\n overrides: DEFAULT_OVERRIDES,\n model: DEFAULT_MODEL,\n contextDirectories: DEFAULT_CONTEXT_DIRECTORIES,\n commandName: DEFAULT_COMMAND,\n configDirectory: DEFAULT_CONFIG_DIR,\n outputDirectory: DEFAULT_OUTPUT_DIRECTORY,\n preferencesDirectory: DEFAULT_PREFERENCES_DIRECTORY,\n commit: {\n add: DEFAULT_ADD,\n cached: DEFAULT_CACHED,\n sendit: DEFAULT_SENDIT_MODE,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n skipFileCheck: false,\n },\n release: {\n from: DEFAULT_FROM_COMMIT_ALIAS,\n to: DEFAULT_TO_COMMIT_ALIAS,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n audioCommit: {\n maxRecordingTime: 300, // 5 minutes default\n audioDevice: undefined, // Auto-detect by default\n },\n review: {\n includeCommitHistory: true,\n includeRecentDiffs: true,\n includeReleaseNotes: false,\n includeGithubIssues: true,\n commitHistoryLimit: 10,\n diffHistoryLimit: 5,\n releaseNotesLimit: 3,\n githubIssuesLimit: 20,\n sendit: DEFAULT_SENDIT_MODE,\n },\n audioReview: {\n includeCommitHistory: true,\n includeRecentDiffs: true,\n includeReleaseNotes: false,\n includeGithubIssues: true,\n commitHistoryLimit: 10,\n diffHistoryLimit: 5,\n releaseNotesLimit: 3,\n githubIssuesLimit: 20,\n sendit: DEFAULT_SENDIT_MODE,\n maxRecordingTime: 300, // 5 minutes default\n audioDevice: undefined, // Auto-detect by default\n directory: undefined, // No default directory\n },\n publish: {\n mergeMethod: DEFAULT_MERGE_METHOD,\n requiredEnvVars: ['GITHUB_TOKEN', 'OPENAI_API_KEY'],\n linkWorkspacePackages: true,\n unlinkWorkspacePackages: true,\n sendit: DEFAULT_SENDIT_MODE,\n },\n link: {\n scopeRoots: {},\n dryRun: false,\n },\n publishTree: {\n directory: undefined,\n excludedPatterns: undefined,\n startFrom: undefined,\n script: undefined,\n cmd: undefined,\n publish: false,\n },\n excludedPatterns: DEFAULT_EXCLUDED_PATTERNS,\n};\n"],"names":["VERSION","PROGRAM_NAME","DEFAULT_OVERRIDES","DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS","DEFAULT_VERBOSE","DEFAULT_DRY_RUN","DEFAULT_DEBUG","DEFAULT_MODEL","DEFAULT_OUTPUT_DIRECTORY","DEFAULT_GIT_COMMAND_MAX_BUFFER","DEFAULT_CONTEXT_DIRECTORIES","DEFAULT_CONFIG_DIR","DEFAULT_PREFERENCES_DIRECTORY","path","join","os","homedir","DEFAULT_FROM_COMMIT_ALIAS","DEFAULT_TO_COMMIT_ALIAS","DEFAULT_ADD","DEFAULT_CACHED","DEFAULT_SENDIT_MODE","DEFAULT_MESSAGE_LIMIT","DEFAULT_MERGE_METHOD","DEFAULT_EXCLUDED_PATTERNS","COMMAND_COMMIT","COMMAND_AUDIO_COMMIT","COMMAND_SELECT_AUDIO","COMMAND_RELEASE","COMMAND_REVIEW","COMMAND_AUDIO_REVIEW","COMMAND_PUBLISH","COMMAND_PUBLISH_TREE","COMMAND_LINK","COMMAND_UNLINK","COMMAND_CLEAN","COMMAND_CHECK_CONFIG","COMMAND_INIT_CONFIG","ALLOWED_COMMANDS","DEFAULT_COMMAND","KODRDRIV_DEFAULTS","dryRun","verbose","debug","overrides","model","contextDirectories","commandName","configDirectory","outputDirectory","preferencesDirectory","commit","add","cached","sendit","messageLimit","skipFileCheck","release","from","to","audioCommit","maxRecordingTime","audioDevice","undefined","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","audioReview","directory","publish","mergeMethod","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","link","scopeRoots","publishTree","excludedPatterns","startFrom","script","cmd"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["import { MergeMethod } from './types';\nimport os from 'os';\nimport path from 'path';\n\nexport const VERSION = '__VERSION__ (__GIT_BRANCH__/__GIT_COMMIT__ __GIT_TAGS__ __GIT_COMMIT_DATE__) __SYSTEM_INFO__';\nexport const PROGRAM_NAME = 'kodrdriv';\nexport const DEFAULT_CHARACTER_ENCODING = 'utf-8';\nexport const DEFAULT_BINARY_TO_TEXT_ENCODING = 'base64';\nexport const DEFAULT_DIFF = true;\nexport const DEFAULT_LOG = false;\nexport const DEFAULT_OVERRIDES = false;\nexport const DATE_FORMAT_MONTH_DAY = 'MM-DD';\nexport const DATE_FORMAT_YEAR = 'YYYY';\nexport const DATE_FORMAT_YEAR_MONTH = 'YYYY-MM';\nexport const DATE_FORMAT_YEAR_MONTH_DAY = 'YYYY-MM-DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_SLASH = 'YYYY/MM/DD';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES = 'YYYY-MM-DD-HHmm';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS = 'YYYY-MM-DD-HHmmss';\nexport const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS = 'YYYY-MM-DD-HHmmss.SSS';\nexport const DATE_FORMAT_SHORT_TIMESTAMP = 'YYMMdd-HHmm';\nexport const DATE_FORMAT_MONTH = 'MM';\nexport const DATE_FORMAT_DAY = 'DD';\nexport const DATE_FORMAT_HOURS = 'HHmm';\nexport const DATE_FORMAT_MINUTES = 'mm';\nexport const DATE_FORMAT_SECONDS = 'ss';\nexport const DATE_FORMAT_MILLISECONDS = 'SSS';\nexport const DEFAULT_VERBOSE = false;\nexport const DEFAULT_DRY_RUN = false;\nexport const DEFAULT_DEBUG = false;\nexport const DEFAULT_MODEL = 'gpt-4o-mini';\nexport const DEFAULT_MODEL_STRONG = 'gpt-4o';\nexport const DEFAULT_OUTPUT_DIRECTORY = 'output/kodrdriv';\n\n// Buffer size for git commands that may produce large output (like git log)\nexport const DEFAULT_GIT_COMMAND_MAX_BUFFER = 50 * 1024 * 1024; // 50MB\n\nexport const DEFAULT_CONTEXT_DIRECTORIES: string[] = [];\n\nexport const DEFAULT_CONFIG_DIR = '.kodrdriv';\nexport const DEFAULT_PREFERENCES_DIRECTORY = path.join(os.homedir(), '.kodrdriv');\n\nexport const DEFAULT_FROM_COMMIT_ALIAS = 'origin/HEAD';\nexport const DEFAULT_TO_COMMIT_ALIAS = 'HEAD';\n\nexport const DEFAULT_ADD = false;\nexport const DEFAULT_CACHED = false;\nexport const DEFAULT_SENDIT_MODE = false;\nexport const DEFAULT_MESSAGE_LIMIT = 50;\n\nexport const DEFAULT_MERGE_METHOD: MergeMethod = 'squash';\n\nexport const DEFAULT_EXCLUDED_PATTERNS = [\n 'node_modules', 'package-lock.json', 'yarn.lock', 'bun.lockb',\n 'composer.lock', 'Cargo.lock', 'Gemfile.lock',\n 'dist', 'build', 'out', '.next', '.nuxt', 'coverage',\n '.vscode', '.idea', '.DS_Store', '.git', '.gitignore',\n 'logs', 'tmp', '.cache', '*.log', '.env', '.env.*',\n '*.pem', '*.crt', '*.key', '*.sqlite', '*.db',\n '*.zip', '*.tar', '*.gz', '*.exe', '*.bin'\n];\n\nexport const COMMAND_COMMIT = 'commit';\nexport const COMMAND_AUDIO_COMMIT = 'audio-commit';\nexport const COMMAND_SELECT_AUDIO = 'select-audio';\nexport const COMMAND_RELEASE = 'release';\nexport const COMMAND_REVIEW = 'review';\nexport const COMMAND_AUDIO_REVIEW = 'audio-review';\nexport const COMMAND_PUBLISH = 'publish';\nexport const COMMAND_PUBLISH_TREE = 'publish-tree';\nexport const COMMAND_LINK = 'link';\nexport const COMMAND_UNLINK = 'unlink';\nexport const COMMAND_CLEAN = 'clean';\nexport const COMMAND_CHECK_CONFIG = 'check-config';\nexport const COMMAND_INIT_CONFIG = 'init-config';\n\nexport const ALLOWED_COMMANDS = [\n COMMAND_COMMIT,\n COMMAND_AUDIO_COMMIT,\n COMMAND_SELECT_AUDIO,\n COMMAND_RELEASE,\n COMMAND_REVIEW,\n COMMAND_AUDIO_REVIEW,\n COMMAND_PUBLISH,\n COMMAND_PUBLISH_TREE,\n COMMAND_LINK,\n COMMAND_UNLINK,\n COMMAND_CLEAN\n];\n\nexport const DEFAULT_COMMAND = COMMAND_COMMIT;\n\nexport const DEFAULT_INSTRUCTIONS_DIR = `instructions`;\n\nexport const DEFAULT_PERSONA_DIR = `personas`;\n\nexport const DEFAULT_INSTRUCTIONS_COMMIT_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/commit.md`;\nexport const DEFAULT_INSTRUCTIONS_RELEASE_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/release.md`;\nexport const DEFAULT_INSTRUCTIONS_REVIEW_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/review.md`;\n\nexport const DEFAULT_PERSONA_RELEASER_FILE = `${DEFAULT_PERSONA_DIR}/releaser.md`;\nexport const DEFAULT_PERSONA_YOU_FILE = `${DEFAULT_PERSONA_DIR}/you.md`;\n\n// Default instructions for each persona\nexport const DEFAULT_INSTRUCTIONS_MAP = {\n [COMMAND_COMMIT]: DEFAULT_INSTRUCTIONS_COMMIT_FILE,\n [COMMAND_AUDIO_COMMIT]: DEFAULT_INSTRUCTIONS_COMMIT_FILE, // Reuse commit instructions\n [COMMAND_RELEASE]: DEFAULT_INSTRUCTIONS_RELEASE_FILE,\n [COMMAND_REVIEW]: DEFAULT_INSTRUCTIONS_REVIEW_FILE, // Reuse audio-review instructions for now\n [COMMAND_AUDIO_REVIEW]: DEFAULT_INSTRUCTIONS_REVIEW_FILE,\n};\n\n// Default personas for each command\nexport const DEFAULT_PERSONA_MAP = {\n [COMMAND_COMMIT]: DEFAULT_PERSONA_YOU_FILE,\n [COMMAND_AUDIO_COMMIT]: DEFAULT_PERSONA_YOU_FILE, // Use You persona\n [COMMAND_RELEASE]: DEFAULT_PERSONA_RELEASER_FILE,\n [COMMAND_REVIEW]: DEFAULT_PERSONA_YOU_FILE, // Use You persona\n [COMMAND_AUDIO_REVIEW]: DEFAULT_PERSONA_YOU_FILE,\n};\n\n// Used by child process to create paths\nexport const DEFAULT_PATH_SEPARATOR = '/';\n\n// Used by util/general for file filtering\nexport const DEFAULT_IGNORE_PATTERNS = [\n 'node_modules/**',\n '**/*.log',\n '.git/**',\n 'dist/**',\n 'build/**',\n 'coverage/**',\n '.DS_Store',\n '*.tmp',\n '*.cache',\n];\n\n// Used by util/storage for directory names\nexport const DEFAULT_DIRECTORY_PREFIX = '.kodrdriv';\n\n// Used by other commands but not exposed in CLI\nexport const INTERNAL_DEFAULT_OUTPUT_FILE = 'output.txt';\n\nexport const INTERNAL_DATETIME_FORMAT = 'YYYY-MM-DD_HH-mm-ss';\n\n// Define defaults in one place\nexport const KODRDRIV_DEFAULTS = {\n dryRun: DEFAULT_DRY_RUN,\n verbose: DEFAULT_VERBOSE,\n debug: DEFAULT_DEBUG,\n overrides: DEFAULT_OVERRIDES,\n model: DEFAULT_MODEL,\n contextDirectories: DEFAULT_CONTEXT_DIRECTORIES,\n commandName: DEFAULT_COMMAND,\n configDirectory: DEFAULT_CONFIG_DIR,\n outputDirectory: DEFAULT_OUTPUT_DIRECTORY,\n preferencesDirectory: DEFAULT_PREFERENCES_DIRECTORY,\n commit: {\n add: DEFAULT_ADD,\n cached: DEFAULT_CACHED,\n sendit: DEFAULT_SENDIT_MODE,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n skipFileCheck: false,\n },\n release: {\n from: DEFAULT_FROM_COMMIT_ALIAS,\n to: DEFAULT_TO_COMMIT_ALIAS,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n audioCommit: {\n maxRecordingTime: 300, // 5 minutes default\n audioDevice: undefined, // Auto-detect by default\n },\n review: {\n includeCommitHistory: true,\n includeRecentDiffs: true,\n includeReleaseNotes: false,\n includeGithubIssues: true,\n commitHistoryLimit: 10,\n diffHistoryLimit: 5,\n releaseNotesLimit: 3,\n githubIssuesLimit: 20,\n sendit: DEFAULT_SENDIT_MODE,\n },\n audioReview: {\n includeCommitHistory: true,\n includeRecentDiffs: true,\n includeReleaseNotes: false,\n includeGithubIssues: true,\n commitHistoryLimit: 10,\n diffHistoryLimit: 5,\n releaseNotesLimit: 3,\n githubIssuesLimit: 20,\n sendit: DEFAULT_SENDIT_MODE,\n maxRecordingTime: 300, // 5 minutes default\n audioDevice: undefined, // Auto-detect by default\n directory: undefined, // No default directory\n },\n publish: {\n mergeMethod: DEFAULT_MERGE_METHOD,\n requiredEnvVars: ['GITHUB_TOKEN', 'OPENAI_API_KEY'],\n linkWorkspacePackages: true,\n unlinkWorkspacePackages: true,\n sendit: DEFAULT_SENDIT_MODE,\n },\n link: {\n scopeRoots: {},\n dryRun: false,\n },\n publishTree: {\n directory: undefined,\n excludedPatterns: undefined,\n startFrom: undefined,\n script: undefined,\n cmd: undefined,\n publish: false,\n parallel: false,\n },\n excludedPatterns: DEFAULT_EXCLUDED_PATTERNS,\n};\n"],"names":["VERSION","PROGRAM_NAME","DEFAULT_OVERRIDES","DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS","DEFAULT_VERBOSE","DEFAULT_DRY_RUN","DEFAULT_DEBUG","DEFAULT_MODEL","DEFAULT_OUTPUT_DIRECTORY","DEFAULT_GIT_COMMAND_MAX_BUFFER","DEFAULT_CONTEXT_DIRECTORIES","DEFAULT_CONFIG_DIR","DEFAULT_PREFERENCES_DIRECTORY","path","join","os","homedir","DEFAULT_FROM_COMMIT_ALIAS","DEFAULT_TO_COMMIT_ALIAS","DEFAULT_ADD","DEFAULT_CACHED","DEFAULT_SENDIT_MODE","DEFAULT_MESSAGE_LIMIT","DEFAULT_MERGE_METHOD","DEFAULT_EXCLUDED_PATTERNS","COMMAND_COMMIT","COMMAND_AUDIO_COMMIT","COMMAND_SELECT_AUDIO","COMMAND_RELEASE","COMMAND_REVIEW","COMMAND_AUDIO_REVIEW","COMMAND_PUBLISH","COMMAND_PUBLISH_TREE","COMMAND_LINK","COMMAND_UNLINK","COMMAND_CLEAN","COMMAND_CHECK_CONFIG","COMMAND_INIT_CONFIG","ALLOWED_COMMANDS","DEFAULT_COMMAND","KODRDRIV_DEFAULTS","dryRun","verbose","debug","overrides","model","contextDirectories","commandName","configDirectory","outputDirectory","preferencesDirectory","commit","add","cached","sendit","messageLimit","skipFileCheck","release","from","to","audioCommit","maxRecordingTime","audioDevice","undefined","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","audioReview","directory","publish","mergeMethod","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","link","scopeRoots","publishTree","excludedPatterns","startFrom","script","cmd","parallel"],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -95,7 +95,8 @@ const ConfigSchema = z.object({
|
|
|
95
95
|
startFrom: z.string().optional(),
|
|
96
96
|
script: z.string().optional(),
|
|
97
97
|
cmd: z.string().optional(),
|
|
98
|
-
publish: z.boolean().optional()
|
|
98
|
+
publish: z.boolean().optional(),
|
|
99
|
+
parallel: z.boolean().optional()
|
|
99
100
|
}).optional(),
|
|
100
101
|
excludedPatterns: z.array(z.string()).optional()
|
|
101
102
|
});
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import * as Cardigantime from '@theunwalked/cardigantime';\nimport { z } from \"zod\";\n\nexport const ConfigSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n outputDirectory: z.string().optional(),\n preferencesDirectory: z.string().optional(),\n commit: z.object({\n add: z.boolean().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n direction: z.string().optional(),\n skipFileCheck: z.boolean().optional(),\n }).optional(),\n audioCommit: z.object({\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n release: z.object({\n from: z.string().optional(),\n to: z.string().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n focus: z.string().optional(),\n }).optional(),\n review: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n note: z.string().optional(),\n editorTimeout: z.number().optional(),\n maxContextErrors: z.number().optional(),\n }).optional(),\n audioReview: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n directory: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n publish: z.object({\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n dependencyUpdatePatterns: z.array(z.string()).optional(),\n requiredEnvVars: z.array(z.string()).optional(),\n linkWorkspacePackages: z.boolean().optional(),\n unlinkWorkspacePackages: z.boolean().optional(),\n checksTimeout: z.number().optional(),\n skipUserConfirmation: z.boolean().optional(),\n sendit: z.boolean().optional(),\n waitForReleaseWorkflows: z.boolean().optional(),\n releaseWorkflowsTimeout: z.number().optional(),\n releaseWorkflowNames: z.array(z.string()).optional(),\n }).optional(),\n link: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n dryRun: z.boolean().optional(),\n }).optional(),\n unlink: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n workspaceFile: z.string().optional(),\n dryRun: z.boolean().optional(),\n }).optional(),\n publishTree: z.object({\n directory: z.string().optional(),\n excludedPatterns: z.array(z.string()).optional(),\n startFrom: z.string().optional(),\n script: z.string().optional(),\n cmd: z.string().optional(),\n publish: z.boolean().optional(),\n }).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport const CommandConfigSchema = z.object({\n commandName: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\nexport type CommandConfig = z.infer<typeof CommandConfigSchema>;\n\nexport type MergeMethod = 'merge' | 'squash' | 'rebase';\n\nexport interface PullRequest {\n html_url: string;\n number: number;\n labels: {\n name: string;\n }[];\n}\n\nexport type ReleaseSummary = {\n title: string;\n body: string;\n}\n\nexport type ReleaseConfig = {\n from?: string;\n to?: string;\n context?: string;\n focus?: string;\n messageLimit?: number;\n}\n\nexport type ReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n note?: string;\n editorTimeout?: number;\n maxContextErrors?: number;\n}\n\nexport type AudioReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n directory?: string;\n keepTemp?: boolean;\n}\n\nexport type AudioCommitConfig = {\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n keepTemp?: boolean;\n}\n\nexport type UnlinkConfig = {\n scopeRoots?: Record<string, string>;\n workspaceFile?: string;\n dryRun?: boolean;\n}\n\nexport type PublishConfig = {\n from?: string;\n to?: string;\n}\n"],"names":["ConfigSchema","z","object","dryRun","boolean","optional","verbose","debug","overrides","model","string","contextDirectories","array","outputDirectory","preferencesDirectory","commit","add","cached","sendit","messageLimit","number","context","direction","skipFileCheck","audioCommit","maxRecordingTime","audioDevice","file","keepTemp","release","from","to","focus","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","note","editorTimeout","maxContextErrors","audioReview","directory","publish","mergeMethod","enum","dependencyUpdatePatterns","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","checksTimeout","skipUserConfirmation","waitForReleaseWorkflows","releaseWorkflowsTimeout","releaseWorkflowNames","link","scopeRoots","record","unlink","workspaceFile","publishTree","excludedPatterns","startFrom","script","cmd","openaiApiKey","commandName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import * as Cardigantime from '@theunwalked/cardigantime';\nimport { z } from \"zod\";\n\nexport const ConfigSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n outputDirectory: z.string().optional(),\n preferencesDirectory: z.string().optional(),\n commit: z.object({\n add: z.boolean().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n direction: z.string().optional(),\n skipFileCheck: z.boolean().optional(),\n }).optional(),\n audioCommit: z.object({\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n release: z.object({\n from: z.string().optional(),\n to: z.string().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n focus: z.string().optional(),\n }).optional(),\n review: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n note: z.string().optional(),\n editorTimeout: z.number().optional(),\n maxContextErrors: z.number().optional(),\n }).optional(),\n audioReview: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n directory: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n publish: z.object({\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n dependencyUpdatePatterns: z.array(z.string()).optional(),\n requiredEnvVars: z.array(z.string()).optional(),\n linkWorkspacePackages: z.boolean().optional(),\n unlinkWorkspacePackages: z.boolean().optional(),\n checksTimeout: z.number().optional(),\n skipUserConfirmation: z.boolean().optional(),\n sendit: z.boolean().optional(),\n waitForReleaseWorkflows: z.boolean().optional(),\n releaseWorkflowsTimeout: z.number().optional(),\n releaseWorkflowNames: z.array(z.string()).optional(),\n }).optional(),\n link: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n dryRun: z.boolean().optional(),\n }).optional(),\n unlink: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n workspaceFile: z.string().optional(),\n dryRun: z.boolean().optional(),\n }).optional(),\n publishTree: z.object({\n directory: z.string().optional(),\n excludedPatterns: z.array(z.string()).optional(),\n startFrom: z.string().optional(),\n script: z.string().optional(),\n cmd: z.string().optional(),\n publish: z.boolean().optional(),\n parallel: z.boolean().optional(),\n }).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport const CommandConfigSchema = z.object({\n commandName: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\nexport type CommandConfig = z.infer<typeof CommandConfigSchema>;\n\nexport type MergeMethod = 'merge' | 'squash' | 'rebase';\n\nexport interface PullRequest {\n html_url: string;\n number: number;\n labels: {\n name: string;\n }[];\n}\n\nexport type ReleaseSummary = {\n title: string;\n body: string;\n}\n\nexport type ReleaseConfig = {\n from?: string;\n to?: string;\n context?: string;\n focus?: string;\n messageLimit?: number;\n}\n\nexport type ReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n note?: string;\n editorTimeout?: number;\n maxContextErrors?: number;\n}\n\nexport type AudioReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n directory?: string;\n keepTemp?: boolean;\n}\n\nexport type AudioCommitConfig = {\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n keepTemp?: boolean;\n}\n\nexport type UnlinkConfig = {\n scopeRoots?: Record<string, string>;\n workspaceFile?: string;\n dryRun?: boolean;\n}\n\nexport type PublishConfig = {\n from?: string;\n to?: string;\n}\n"],"names":["ConfigSchema","z","object","dryRun","boolean","optional","verbose","debug","overrides","model","string","contextDirectories","array","outputDirectory","preferencesDirectory","commit","add","cached","sendit","messageLimit","number","context","direction","skipFileCheck","audioCommit","maxRecordingTime","audioDevice","file","keepTemp","release","from","to","focus","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","note","editorTimeout","maxContextErrors","audioReview","directory","publish","mergeMethod","enum","dependencyUpdatePatterns","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","checksTimeout","skipUserConfirmation","waitForReleaseWorkflows","releaseWorkflowsTimeout","releaseWorkflowNames","link","scopeRoots","record","unlink","workspaceFile","publishTree","excludedPatterns","startFrom","script","cmd","parallel","openaiApiKey","commandName"],"mappings":"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"}
|
package/dist/util/github.js
CHANGED
|
@@ -360,15 +360,22 @@ const getWorkflowRunsTriggeredByRelease = async (tagName, workflowNames)=>{
|
|
|
360
360
|
logger.debug(`Fetching workflow runs triggered by release ${tagName}...`);
|
|
361
361
|
// Get release information to filter by creation time and commit SHA
|
|
362
362
|
let releaseInfo;
|
|
363
|
+
let releaseCreatedAt;
|
|
364
|
+
let releaseCommitSha;
|
|
363
365
|
try {
|
|
364
366
|
releaseInfo = await getReleaseByTagName(tagName);
|
|
367
|
+
releaseCreatedAt = releaseInfo === null || releaseInfo === void 0 ? void 0 : releaseInfo.created_at;
|
|
368
|
+
releaseCommitSha = releaseInfo === null || releaseInfo === void 0 ? void 0 : releaseInfo.target_commitish;
|
|
365
369
|
} catch (error) {
|
|
366
|
-
logger.
|
|
370
|
+
logger.debug(`Could not get release info for ${tagName}: ${error.message}. Using more permissive filtering.`);
|
|
367
371
|
}
|
|
368
|
-
const releaseCreatedAt = releaseInfo === null || releaseInfo === void 0 ? void 0 : releaseInfo.created_at;
|
|
369
|
-
const releaseCommitSha = releaseInfo === null || releaseInfo === void 0 ? void 0 : releaseInfo.target_commitish;
|
|
370
372
|
if (releaseCreatedAt) {
|
|
371
373
|
logger.debug(`Release ${tagName} was created at ${releaseCreatedAt}, filtering workflows created after this time`);
|
|
374
|
+
} else {
|
|
375
|
+
logger.debug(`No release creation time available for ${tagName}, using more permissive time filtering`);
|
|
376
|
+
}
|
|
377
|
+
if (releaseCommitSha) {
|
|
378
|
+
logger.debug(`Release ${tagName} targets commit ${releaseCommitSha}`);
|
|
372
379
|
}
|
|
373
380
|
// Get all workflows
|
|
374
381
|
const workflowsResponse = await octokit.actions.listRepoWorkflows({
|
|
@@ -392,13 +399,16 @@ const getWorkflowRunsTriggeredByRelease = async (tagName, workflowNames)=>{
|
|
|
392
399
|
owner,
|
|
393
400
|
repo,
|
|
394
401
|
workflow_id: workflow.id,
|
|
395
|
-
per_page:
|
|
402
|
+
per_page: 30
|
|
396
403
|
});
|
|
404
|
+
logger.debug(`Checking ${runsResponse.data.workflow_runs.length} recent runs for workflow "${workflow.name}"`);
|
|
397
405
|
// Filter runs that were triggered by our specific release
|
|
398
406
|
const releaseRuns = runsResponse.data.workflow_runs.filter((run)=>{
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
407
|
+
var _run_head_sha;
|
|
408
|
+
logger.debug(`Evaluating run ${run.id} for workflow "${workflow.name}": event=${run.event}, head_branch=${run.head_branch}, created_at=${run.created_at}, head_sha=${(_run_head_sha = run.head_sha) === null || _run_head_sha === void 0 ? void 0 : _run_head_sha.substring(0, 7)}`);
|
|
409
|
+
// Must be a release or push event (tag pushes trigger workflows with event=push)
|
|
410
|
+
if (run.event !== 'release' && run.event !== 'push') {
|
|
411
|
+
logger.debug(`Excluding workflow run ${run.id}: not a release or push event (${run.event})`);
|
|
402
412
|
return false;
|
|
403
413
|
}
|
|
404
414
|
// Must have required data
|
|
@@ -406,35 +416,67 @@ const getWorkflowRunsTriggeredByRelease = async (tagName, workflowNames)=>{
|
|
|
406
416
|
logger.debug(`Excluding workflow run ${run.id}: missing required data (head_sha: ${run.head_sha}, created_at: ${run.created_at})`);
|
|
407
417
|
return false;
|
|
408
418
|
}
|
|
409
|
-
// If we have release info, filter by creation time
|
|
419
|
+
// If we have release info, filter by creation time and commit SHA
|
|
410
420
|
if (releaseCreatedAt) {
|
|
411
421
|
const runCreatedAt = new Date(run.created_at).getTime();
|
|
412
422
|
const releaseCreatedAtTime = new Date(releaseCreatedAt).getTime();
|
|
413
|
-
//
|
|
414
|
-
// This
|
|
423
|
+
// Allow runs created up to 2 minutes before release (for races) and up to 20 minutes after
|
|
424
|
+
// This is more permissive than before to account for various timing scenarios
|
|
415
425
|
const timeDiff = runCreatedAt - releaseCreatedAtTime;
|
|
416
|
-
if (timeDiff < -
|
|
426
|
+
if (timeDiff < -120000 || timeDiff > 1200000) {
|
|
417
427
|
logger.debug(`Excluding workflow run ${run.id}: outside time window (run: ${run.created_at}, release: ${releaseCreatedAt}, diff: ${timeDiff}ms)`);
|
|
418
428
|
return false;
|
|
419
429
|
}
|
|
430
|
+
// For release events, require exact commit SHA match if available
|
|
431
|
+
if (run.event === 'release' && releaseCommitSha && run.head_sha !== releaseCommitSha) {
|
|
432
|
+
logger.debug(`Excluding release event workflow run ${run.id}: commit SHA mismatch (run: ${run.head_sha}, release: ${releaseCommitSha})`);
|
|
433
|
+
return false;
|
|
434
|
+
}
|
|
435
|
+
// For push events, be more permissive - don't require exact SHA match as the tag push might be slightly different
|
|
436
|
+
if (run.event === 'push') {
|
|
437
|
+
// Check if this looks like a tag push:
|
|
438
|
+
// 1. head_branch is null (most common for tag pushes)
|
|
439
|
+
// 2. OR head_branch matches the tag pattern
|
|
440
|
+
// 3. OR commit SHA matches (in case head_branch behavior is inconsistent)
|
|
441
|
+
const looksLikeTagPush = run.head_branch === null || run.head_branch && run.head_branch.includes(tagName.replace('v', '')) || releaseCommitSha && run.head_sha === releaseCommitSha;
|
|
442
|
+
if (!looksLikeTagPush) {
|
|
443
|
+
logger.debug(`Excluding push event workflow run ${run.id}: doesn't look like tag push (head_branch: ${run.head_branch})`);
|
|
444
|
+
return false;
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
} else {
|
|
448
|
+
// No release info available - use more permissive fallback filtering
|
|
449
|
+
logger.debug(`Using permissive filtering for run ${run.id} due to missing release info`);
|
|
450
|
+
// For release events without release info, look for recent runs only
|
|
451
|
+
if (run.event === 'release') {
|
|
452
|
+
const runAge = Date.now() - new Date(run.created_at).getTime();
|
|
453
|
+
if (runAge > 1800000) {
|
|
454
|
+
logger.debug(`Excluding old release event workflow run ${run.id}: created ${run.created_at}`);
|
|
455
|
+
return false;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
// For push events without release info, be more permissive but still look for tag-like patterns
|
|
459
|
+
if (run.event === 'push') {
|
|
460
|
+
const runAge = Date.now() - new Date(run.created_at).getTime();
|
|
461
|
+
if (runAge > 1800000) {
|
|
462
|
+
logger.debug(`Excluding old push event workflow run ${run.id}: created ${run.created_at}`);
|
|
463
|
+
return false;
|
|
464
|
+
}
|
|
465
|
+
// Accept if head_branch is null (likely tag push) or if it's a recent run
|
|
466
|
+
// This is more permissive than the original logic
|
|
467
|
+
if (run.head_branch !== null && !run.head_branch.includes(tagName.replace('v', ''))) {
|
|
468
|
+
logger.debug(`Push event run ${run.id} has head_branch '${run.head_branch}' which doesn't look like tag '${tagName}', but including due to permissive filtering`);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
420
471
|
}
|
|
421
|
-
|
|
422
|
-
if (releaseCommitSha && run.head_sha !== releaseCommitSha) {
|
|
423
|
-
logger.debug(`Excluding workflow run ${run.id}: commit SHA mismatch (run: ${run.head_sha}, release: ${releaseCommitSha})`);
|
|
424
|
-
return false; // Be strict about commit SHA matching
|
|
425
|
-
}
|
|
426
|
-
// If we don't have release info but it's a release event, check if it matches our tag name
|
|
427
|
-
// Look for the tag name in run references (this is a fallback when we can't get release info)
|
|
428
|
-
if (!releaseCreatedAt && run.head_branch && !run.head_branch.includes(tagName.replace('v', ''))) {
|
|
429
|
-
logger.debug(`Excluding workflow run ${run.id}: branch doesn't match tag pattern (branch: ${run.head_branch}, tag: ${tagName})`);
|
|
430
|
-
return false;
|
|
431
|
-
}
|
|
432
|
-
logger.debug(`Including workflow run ${run.id}: ${run.name} (${run.status}/${run.conclusion}) created ${run.created_at}`);
|
|
472
|
+
logger.debug(`Including workflow run ${run.id}: ${workflow.name} (${run.status}/${run.conclusion || 'pending'}) created ${run.created_at}`);
|
|
433
473
|
return true;
|
|
434
474
|
});
|
|
435
475
|
allRuns.push(...releaseRuns);
|
|
436
476
|
if (releaseRuns.length > 0) {
|
|
437
477
|
logger.debug(`Found ${releaseRuns.length} relevant workflow runs for ${workflow.name}`);
|
|
478
|
+
} else {
|
|
479
|
+
logger.debug(`No relevant workflow runs found for ${workflow.name}`);
|
|
438
480
|
}
|
|
439
481
|
} catch (error) {
|
|
440
482
|
logger.warn(`Failed to get runs for workflow ${workflow.name}: ${error.message}`);
|
|
@@ -453,16 +495,9 @@ const getWorkflowRunsTriggeredByRelease = async (tagName, workflowNames)=>{
|
|
|
453
495
|
return new Date(b.created_at).getTime() - new Date(a.created_at).getTime();
|
|
454
496
|
});
|
|
455
497
|
logger.debug(`Found ${allRuns.length} workflow runs triggered by release ${tagName}`);
|
|
456
|
-
if (allRuns.length > 0 && releaseCreatedAt) {
|
|
457
|
-
logger.debug(`Workflow runs created after release ${tagName}:`);
|
|
458
|
-
allRuns.forEach((run)=>{
|
|
459
|
-
var _run_head_sha;
|
|
460
|
-
logger.debug(`- ${run.name}: created ${run.created_at}, commit ${(_run_head_sha = run.head_sha) === null || _run_head_sha === void 0 ? void 0 : _run_head_sha.substring(0, 7)}`);
|
|
461
|
-
});
|
|
462
|
-
}
|
|
463
498
|
return allRuns;
|
|
464
499
|
} catch (error) {
|
|
465
|
-
logger.
|
|
500
|
+
logger.error(`Failed to get workflow runs for release ${tagName}: ${error.message}`);
|
|
466
501
|
return [];
|
|
467
502
|
}
|
|
468
503
|
};
|
|
@@ -471,9 +506,9 @@ const waitForReleaseWorkflows = async (tagName, options = {})=>{
|
|
|
471
506
|
const timeout = options.timeout || 600000; // 10 minutes default
|
|
472
507
|
const skipUserConfirmation = options.skipUserConfirmation || false;
|
|
473
508
|
logger.info(`Waiting for workflows triggered by release ${tagName}...`);
|
|
474
|
-
// Wait
|
|
475
|
-
logger.debug('Waiting
|
|
476
|
-
await delay(
|
|
509
|
+
// Wait longer for workflows to start (GitHub can take time to process the release and trigger workflows)
|
|
510
|
+
logger.debug('Waiting 60 seconds for workflows to start...');
|
|
511
|
+
await delay(60000);
|
|
477
512
|
const startTime = Date.now();
|
|
478
513
|
let workflowRuns = [];
|
|
479
514
|
let consecutiveNoWorkflowsCount = 0;
|
|
@@ -500,6 +535,15 @@ const waitForReleaseWorkflows = async (tagName, options = {})=>{
|
|
|
500
535
|
if (workflowRuns.length === 0) {
|
|
501
536
|
consecutiveNoWorkflowsCount++;
|
|
502
537
|
logger.info(`No release workflows found (${consecutiveNoWorkflowsCount}/${maxConsecutiveNoWorkflows}). Waiting...`);
|
|
538
|
+
// Add debug info about what we're looking for
|
|
539
|
+
if (consecutiveNoWorkflowsCount === 1) {
|
|
540
|
+
logger.debug(`Looking for workflows triggered by release ${tagName}`);
|
|
541
|
+
if (options.workflowNames && options.workflowNames.length > 0) {
|
|
542
|
+
logger.debug(`Specific workflows to monitor: ${options.workflowNames.join(', ')}`);
|
|
543
|
+
} else {
|
|
544
|
+
logger.debug('Monitoring all workflows that might be triggered by releases');
|
|
545
|
+
}
|
|
546
|
+
}
|
|
503
547
|
// After several attempts with no workflows, ask user if they want to continue
|
|
504
548
|
if (consecutiveNoWorkflowsCount >= maxConsecutiveNoWorkflows) {
|
|
505
549
|
logger.warn(`No workflows triggered by release ${tagName} after ${maxConsecutiveNoWorkflows} attempts.`);
|