@eldrforge/kodrdriv 0.0.9 → 0.0.11

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.
Files changed (48) hide show
  1. package/README.md +65 -707
  2. package/dist/arguments.js +79 -55
  3. package/dist/arguments.js.map +1 -1
  4. package/dist/commands/commit.js +28 -16
  5. package/dist/commands/commit.js.map +1 -1
  6. package/dist/commands/link.js +18 -18
  7. package/dist/commands/link.js.map +1 -1
  8. package/dist/commands/publish.js +170 -93
  9. package/dist/commands/publish.js.map +1 -1
  10. package/dist/commands/release.js +8 -0
  11. package/dist/commands/release.js.map +1 -1
  12. package/dist/commands/unlink.js +20 -20
  13. package/dist/commands/unlink.js.map +1 -1
  14. package/dist/constants.js +4 -2
  15. package/dist/constants.js.map +1 -1
  16. package/dist/logging.js +35 -23
  17. package/dist/logging.js.map +1 -1
  18. package/dist/main.js +49 -3
  19. package/dist/main.js.map +1 -1
  20. package/dist/util/child.js +13 -1
  21. package/dist/util/child.js.map +1 -1
  22. package/docs/index.html +17 -0
  23. package/docs/package.json +36 -0
  24. package/docs/public/README.md +132 -0
  25. package/docs/public/advanced-usage.md +188 -0
  26. package/docs/public/code-icon.svg +4 -0
  27. package/docs/public/commands.md +116 -0
  28. package/docs/public/configuration.md +274 -0
  29. package/docs/public/examples.md +352 -0
  30. package/docs/public/kodrdriv-logo.svg +62 -0
  31. package/docs/src/App.css +387 -0
  32. package/docs/src/App.tsx +60 -0
  33. package/docs/src/components/DocumentPage.tsx +56 -0
  34. package/docs/src/components/ErrorMessage.tsx +15 -0
  35. package/docs/src/components/LoadingSpinner.tsx +14 -0
  36. package/docs/src/components/MarkdownRenderer.tsx +56 -0
  37. package/docs/src/components/Navigation.css +73 -0
  38. package/docs/src/components/Navigation.tsx +36 -0
  39. package/docs/src/index.css +61 -0
  40. package/docs/src/main.tsx +10 -0
  41. package/docs/src/test/setup.ts +1 -0
  42. package/docs/src/vite-env.d.ts +10 -0
  43. package/docs/tsconfig.node.json +13 -0
  44. package/docs/vite.config.ts +15 -0
  45. package/docs/vitest.config.ts +15 -0
  46. package/eslint.config.mjs +1 -0
  47. package/package.json +10 -5
  48. package/vitest.config.ts +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"publish.js","sources":["../../src/commands/publish.ts"],"sourcesContent":["import path from 'path';\nimport * as Commit from './commit';\nimport * as Diff from '../content/diff';\nimport * as Release from './release';\nimport * as Link from './link';\nimport * as Unlink from './unlink';\nimport { getLogger } from '../logging';\nimport { Config, PullRequest } from '../types';\nimport { run } from '../util/child';\nimport * as GitHub from '../util/github';\nimport { create as createStorage } from '../util/storage';\nimport { incrementPatchVersion } from '../util/general';\n\nconst scanNpmrcForEnvVars = async (storage: any): Promise<string[]> => {\n const npmrcPath = path.join(process.cwd(), '.npmrc');\n const envVars: string[] = [];\n\n if (await storage.exists(npmrcPath)) {\n try {\n const npmrcContent = await storage.readFile(npmrcPath, 'utf-8');\n // Match environment variable patterns like ${VAR_NAME} or $VAR_NAME\n const envVarMatches = npmrcContent.match(/\\$\\{([^}]+)\\}|\\$([A-Z_][A-Z0-9_]*)/g);\n\n if (envVarMatches) {\n for (const match of envVarMatches) {\n // Extract variable name from ${VAR_NAME} or $VAR_NAME format\n const varName = match.replace(/\\$\\{|\\}|\\$/g, '');\n if (varName && !envVars.includes(varName)) {\n envVars.push(varName);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n // If we can't read .npmrc, that's okay - just continue\n }\n }\n\n return envVars;\n};\n\nconst validateEnvironmentVariables = (requiredEnvVars: string[]): void => {\n const logger = getLogger();\n const missingEnvVars: string[] = [];\n\n for (const envVar of requiredEnvVars) {\n if (!process.env[envVar]) {\n missingEnvVars.push(envVar);\n }\n }\n\n if (missingEnvVars.length > 0) {\n 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\nconst runPrechecks = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\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 await run('git rev-parse --git-dir');\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n throw new Error('Not in a git repository. Please run this command from within a git repository.');\n }\n\n // Check for uncommitted changes\n logger.info('Checking for uncommitted changes...');\n try {\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n throw new Error('Failed to check git status. Please ensure you are in a valid git repository.');\n }\n\n // Check if we're on a release branch\n logger.info('Checking current branch...');\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 // 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 throw new Error('package.json not found in current directory.');\n }\n\n let packageJson;\n try {\n const packageJsonContents = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContents);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n throw new Error('Failed to parse package.json. Please ensure it contains valid JSON.');\n }\n\n if (!packageJson.scripts?.prepublishOnly) {\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 }\n\n // Check required environment variables\n logger.info('Checking required environment variables...');\n const coreRequiredEnvVars = runConfig.publish?.requiredEnvVars || [];\n const npmrcEnvVars = await scanNpmrcForEnvVars(storage);\n const allRequiredEnvVars = [...new Set([...coreRequiredEnvVars, ...npmrcEnvVars])];\n\n if (allRequiredEnvVars.length > 0) {\n logger.info(`Required environment variables: ${allRequiredEnvVars.join(', ')}`);\n validateEnvironmentVariables(allRequiredEnvVars);\n } else {\n logger.info('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 logger = getLogger();\n const storage = createStorage({ log: logger.info });\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.info('Unlinking workspace packages...');\n await Unlink.execute(runConfig);\n } else {\n logger.info('Skipping unlink workspace packages (disabled in config).');\n }\n\n const branchName = await GitHub.getCurrentBranchName();\n let pr: PullRequest | null = await GitHub.findOpenPullRequestByHeadRef(branchName);\n\n if (pr) {\n logger.info(`Found existing pull request for branch ${branchName}: ${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.info('Preparing for release: switching from workspace to remote dependencies.');\n\n logger.info('Updating dependencies to latest versions from registry');\n const updatePatterns = runConfig.publish?.dependencyUpdatePatterns;\n if (updatePatterns && updatePatterns.length > 0) {\n logger.info(`Updating dependencies matching patterns: ${updatePatterns.join(', ')}`);\n const patternsArg = updatePatterns.join(' ');\n await run(`pnpm update --latest ${patternsArg}`);\n } else {\n logger.info('No dependency update patterns specified, updating all dependencies');\n await run('pnpm update --latest');\n }\n\n logger.info('Staging changes for release commit');\n await run('git add package.json pnpm-lock.yaml');\n\n logger.info('Running prepublishOnly script...');\n await run('pnpm run prepublishOnly');\n\n logger.info('Checking for staged changes...');\n if (await Diff.hasStagedChanges()) {\n logger.info('Staged changes found, creating commit...');\n await Commit.execute(runConfig);\n } else {\n logger.info('No changes to commit, skipping commit.');\n }\n\n logger.info('Bumping version...');\n await run('pnpm version patch');\n\n logger.info('Generating release notes...');\n const releaseSummary = await Release.execute(runConfig);\n await storage.writeFile('RELEASE_NOTES.md', releaseSummary.body, 'utf-8');\n await storage.writeFile('RELEASE_TITLE.md', releaseSummary.title, 'utf-8');\n logger.info('Release notes and title generated and saved to RELEASE_NOTES.md and RELEASE_TITLE.md.');\n\n logger.info('Pushing to origin...');\n await run('git push --follow-tags');\n\n logger.info('Creating pull request...');\n const { stdout: commitTitle } = await run('git log -1 --pretty=%B');\n pr = await GitHub.createPullRequest(commitTitle, 'Automated release PR.', branchName);\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 logger.info(`Waiting for PR #${pr.number} checks to complete...`);\n await GitHub.waitForPullRequestChecks(pr.number);\n\n const mergeMethod = runConfig.publish?.mergeMethod || 'squash';\n await GitHub.mergePullRequest(pr.number, mergeMethod);\n\n logger.info('Checking out main branch...');\n await run('git checkout main');\n await run('git pull origin main');\n\n logger.info('Creating GitHub release...');\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const tagName = `v${version}`;\n const releaseNotesContent = await storage.readFile('RELEASE_NOTES.md', 'utf-8');\n const releaseTitle = await storage.readFile('RELEASE_TITLE.md', 'utf-8');\n await GitHub.createRelease(tagName, releaseTitle, releaseNotesContent);\n\n logger.info('Creating new release branch...');\n const nextVersion = incrementPatchVersion(version);\n const newBranchName = `release/${nextVersion}`;\n await run(`git checkout -b ${newBranchName}`);\n await run(`git push -u origin ${newBranchName}`);\n logger.info(`Branch ${newBranchName} created and pushed to origin.`);\n\n logger.info('Preparation complete.');\n } finally {\n // Restore linked packages (if enabled)\n const shouldLink = runConfig.publish?.linkWorkspacePackages !== false; // default to true\n if (shouldLink) {\n logger.info('Restoring linked packages...');\n await Link.execute(runConfig);\n } else {\n logger.info('Skipping restore linked packages (disabled in config).');\n }\n }\n}; "],"names":["scanNpmrcForEnvVars","storage","npmrcPath","path","join","process","cwd","envVars","exists","npmrcContent","readFile","envVarMatches","match","varName","replace","includes","push","error","validateEnvironmentVariables","requiredEnvVars","logger","getLogger","missingEnvVars","envVar","env","length","Error","runPrechecks","runConfig","packageJson","createStorage","log","info","run","stdout","trim","currentBranch","GitHub","startsWith","packageJsonPath","packageJsonContents","JSON","parse","scripts","prepublishOnly","coreRequiredEnvVars","publish","npmrcEnvVars","allRequiredEnvVars","Set","execute","shouldUnlink","unlinkWorkspacePackages","Unlink","branchName","pr","html_url","updatePatterns","dependencyUpdatePatterns","patternsArg","Diff","Commit","releaseSummary","Release","writeFile","body","title","commitTitle","number","mergeMethod","version","tagName","releaseNotesContent","releaseTitle","nextVersion","incrementPatchVersion","newBranchName","shouldLink","linkWorkspacePackages","Link"],"mappings":"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"}
1
+ {"version":3,"file":"publish.js","sources":["../../src/commands/publish.ts"],"sourcesContent":["import path from 'path';\nimport * as Commit from './commit';\nimport * as Diff from '../content/diff';\nimport * as Release from './release';\nimport * as Link from './link';\nimport * as Unlink from './unlink';\nimport { getLogger } from '../logging';\nimport { Config, PullRequest } from '../types';\nimport { run, runWithDryRunSupport } from '../util/child';\nimport * as GitHub from '../util/github';\nimport { create as createStorage } from '../util/storage';\nimport { incrementPatchVersion } from '../util/general';\n\nconst scanNpmrcForEnvVars = async (storage: any): Promise<string[]> => {\n const npmrcPath = path.join(process.cwd(), '.npmrc');\n const envVars: string[] = [];\n\n if (await storage.exists(npmrcPath)) {\n try {\n const npmrcContent = await storage.readFile(npmrcPath, 'utf-8');\n // Match environment variable patterns like ${VAR_NAME} or $VAR_NAME\n const envVarMatches = npmrcContent.match(/\\$\\{([^}]+)\\}|\\$([A-Z_][A-Z0-9_]*)/g);\n\n if (envVarMatches) {\n for (const match of envVarMatches) {\n // Extract variable name from ${VAR_NAME} or $VAR_NAME format\n const varName = match.replace(/\\$\\{|\\}|\\$/g, '');\n if (varName && !envVars.includes(varName)) {\n envVars.push(varName);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n // If we can't read .npmrc, that's okay - just continue\n }\n }\n\n return envVars;\n};\n\nconst validateEnvironmentVariables = (requiredEnvVars: string[], isDryRun: boolean): void => {\n const logger = getLogger();\n const missingEnvVars: string[] = [];\n\n for (const envVar of requiredEnvVars) {\n if (!process.env[envVar]) {\n missingEnvVars.push(envVar);\n }\n }\n\n if (missingEnvVars.length > 0) {\n if (isDryRun) {\n logger.warn(`DRY RUN: Missing required environment variables: ${missingEnvVars.join(', ')}`);\n } else {\n logger.error(`Missing required environment variables: ${missingEnvVars.join(', ')}`);\n throw new Error(`Missing required environment variables: ${missingEnvVars.join(', ')}. Please set these environment variables before running publish.`);\n }\n }\n};\n\nconst runPrechecks = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n const isDryRun = runConfig.dryRun || false;\n\n logger.info(isDryRun ? 'DRY RUN: Running prechecks...' : 'Running prechecks...');\n\n // Check if we're in a git repository\n try {\n if (isDryRun) {\n logger.info('DRY RUN: Would check git repository with: git rev-parse --git-dir');\n } else {\n await run('git rev-parse --git-dir');\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Not in a git repository. Please run this command from within a git repository.');\n }\n }\n\n // Check for uncommitted changes\n logger.info(isDryRun ? 'DRY RUN: Would check for uncommitted changes...' : 'Checking for uncommitted changes...');\n try {\n if (isDryRun) {\n logger.info('DRY RUN: Would check git status with: git status --porcelain');\n } else {\n const { stdout } = await run('git status --porcelain');\n if (stdout.trim()) {\n throw new Error('Working directory has uncommitted changes. Please commit or stash your changes before running publish.');\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Failed to check git status. Please ensure you are in a valid git repository.');\n }\n }\n\n // Check if we're on a release branch\n logger.info(isDryRun ? 'DRY RUN: Would check current branch...' : 'Checking current branch...');\n if (isDryRun) {\n logger.info('DRY RUN: Would verify current branch is a release branch (starts with \"release/\")');\n } else {\n const currentBranch = await GitHub.getCurrentBranchName();\n if (!currentBranch.startsWith('release/')) {\n throw new Error(`Current branch '${currentBranch}' is not a release branch. Please switch to a release branch (e.g., release/1.0.0) before running publish.`);\n }\n }\n\n // Check if prepublishOnly script exists in package.json\n logger.info(isDryRun ? 'DRY RUN: Would check for prepublishOnly script...' : 'Checking for prepublishOnly script...');\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n\n if (!await storage.exists(packageJsonPath)) {\n if (!isDryRun) {\n throw new Error('package.json not found in current directory.');\n } else {\n logger.warn('DRY RUN: package.json not found in current directory.');\n }\n } else {\n let packageJson;\n try {\n const packageJsonContents = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContents);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Failed to parse package.json. Please ensure it contains valid JSON.');\n } else {\n logger.warn('DRY RUN: Failed to parse package.json. Please ensure it contains valid JSON.');\n }\n }\n\n if (packageJson && !packageJson.scripts?.prepublishOnly) {\n if (!isDryRun) {\n throw new Error('prepublishOnly script is required in package.json but was not found. Please add a prepublishOnly script that runs your pre-flight checks (e.g., clean, lint, build, test).');\n } else {\n logger.warn('DRY RUN: prepublishOnly script is required in package.json but was not found.');\n }\n }\n }\n\n // Check required environment variables\n logger.verbose(isDryRun ? 'DRY RUN: Would check required environment variables...' : 'Checking required environment variables...');\n const coreRequiredEnvVars = runConfig.publish?.requiredEnvVars || [];\n const npmrcEnvVars = isDryRun ? [] : await scanNpmrcForEnvVars(storage); // Skip .npmrc scan in dry run\n const allRequiredEnvVars = [...new Set([...coreRequiredEnvVars, ...npmrcEnvVars])];\n\n if (allRequiredEnvVars.length > 0) {\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Required environment variables: ${allRequiredEnvVars.join(', ')}`);\n validateEnvironmentVariables(allRequiredEnvVars, isDryRun);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: No required environment variables specified.' : 'No required environment variables specified.');\n }\n\n logger.info(isDryRun ? 'DRY RUN: All prechecks would pass.' : 'All prechecks passed.');\n};\n\nexport const execute = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n const isDryRun = runConfig.dryRun || false;\n\n // Run prechecks before starting any work\n await runPrechecks(runConfig);\n\n logger.info(isDryRun ? 'DRY RUN: Would start release process...' : 'Starting release process...');\n\n try {\n // Unlink all workspace packages before starting (if enabled)\n const shouldUnlink = runConfig.publish?.unlinkWorkspacePackages !== false; // default to true\n if (shouldUnlink) {\n logger.verbose(isDryRun ? 'DRY RUN: Would unlink workspace packages...' : 'Unlinking workspace packages...');\n await Unlink.execute(runConfig);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: Would skip unlink workspace packages (disabled in config).' : 'Skipping unlink workspace packages (disabled in config).');\n }\n\n let pr: PullRequest | null = null;\n\n if (isDryRun) {\n logger.info('DRY RUN: Would check for existing pull request');\n logger.info('DRY RUN: Assuming no existing PR found for demo purposes');\n } else {\n const branchName = await GitHub.getCurrentBranchName();\n pr = await GitHub.findOpenPullRequestByHeadRef(branchName);\n }\n\n if (pr) {\n logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Found existing pull request for branch: ${pr.html_url}`);\n } else {\n logger.info(isDryRun ? 'DRY RUN: No open pull request found, would start new release publishing process...' : 'No open pull request found, starting new release publishing process...');\n // 1. Prepare for release\n logger.verbose(isDryRun ? 'DRY RUN: Would prepare for release: switching from workspace to remote dependencies.' : 'Preparing for release: switching from workspace to remote dependencies.');\n\n logger.verbose(isDryRun ? 'DRY RUN: Would update dependencies to latest versions from registry' : 'Updating dependencies to latest versions from registry');\n const updatePatterns = runConfig.publish?.dependencyUpdatePatterns;\n if (updatePatterns && updatePatterns.length > 0) {\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Updating dependencies matching patterns: ${updatePatterns.join(', ')}`);\n const patternsArg = updatePatterns.join(' ');\n await runWithDryRunSupport(`pnpm update --latest ${patternsArg}`, isDryRun);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: No dependency update patterns specified, would update all dependencies' : 'No dependency update patterns specified, updating all dependencies');\n await runWithDryRunSupport('pnpm update --latest', isDryRun);\n }\n\n logger.verbose(isDryRun ? 'DRY RUN: Would stage changes for release commit' : 'Staging changes for release commit');\n await runWithDryRunSupport('git add package.json pnpm-lock.yaml', isDryRun);\n\n logger.info(isDryRun ? 'DRY RUN: Would run prepublishOnly script...' : 'Running prepublishOnly script...');\n await runWithDryRunSupport('pnpm run prepublishOnly', isDryRun);\n\n logger.verbose(isDryRun ? 'DRY RUN: Would check for staged changes...' : 'Checking for staged changes...');\n if (isDryRun) {\n logger.verbose('DRY RUN: Assuming staged changes exist for demo purposes');\n logger.verbose('DRY RUN: Would create commit...');\n await Commit.execute(runConfig);\n } else {\n if (await Diff.hasStagedChanges()) {\n logger.verbose('Staged changes found, creating commit...');\n await Commit.execute(runConfig);\n } else {\n logger.verbose('No changes to commit, skipping commit.');\n }\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would bump version...' : 'Bumping version...');\n await runWithDryRunSupport('pnpm version patch', isDryRun);\n\n logger.info(isDryRun ? 'DRY RUN: Would generate release notes...' : 'Generating release notes...');\n const releaseSummary = await Release.execute(runConfig);\n\n if (isDryRun) {\n logger.info('DRY RUN: Would write release notes to RELEASE_NOTES.md and RELEASE_TITLE.md');\n } else {\n await storage.writeFile('RELEASE_NOTES.md', releaseSummary.body, 'utf-8');\n await storage.writeFile('RELEASE_TITLE.md', releaseSummary.title, 'utf-8');\n logger.info('Release notes and title generated and saved to RELEASE_NOTES.md and RELEASE_TITLE.md.');\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would push to origin...' : 'Pushing to origin...');\n await runWithDryRunSupport('git push --follow-tags', isDryRun);\n\n logger.info(isDryRun ? 'DRY RUN: Would create pull request...' : 'Creating pull request...');\n if (isDryRun) {\n logger.info('DRY RUN: Would get commit title and create PR with GitHub API');\n pr = { number: 123, html_url: 'https://github.com/mock/repo/pull/123', labels: [] } as PullRequest;\n } else {\n const { stdout: commitTitle } = await run('git log -1 --pretty=%B');\n pr = await GitHub.createPullRequest(commitTitle, 'Automated release PR.', await GitHub.getCurrentBranchName());\n if (!pr) {\n throw new Error('Failed to create pull request.');\n }\n logger.info(`Pull request created: ${pr.html_url}`);\n }\n }\n\n logger.info(`${isDryRun ? 'DRY RUN: Would wait for' : 'Waiting for'} PR #${pr!.number} checks to complete...`);\n if (!isDryRun) {\n await GitHub.waitForPullRequestChecks(pr!.number);\n }\n\n const mergeMethod = runConfig.publish?.mergeMethod || 'squash';\n if (isDryRun) {\n logger.info(`DRY RUN: Would merge PR #${pr!.number} using ${mergeMethod} method`);\n } else {\n await GitHub.mergePullRequest(pr!.number, mergeMethod);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would checkout main branch...' : 'Checking out main branch...');\n await runWithDryRunSupport('git checkout main', isDryRun);\n await runWithDryRunSupport('git pull origin main', isDryRun);\n\n logger.info(isDryRun ? 'DRY RUN: Would create GitHub release...' : 'Creating GitHub release...');\n if (isDryRun) {\n logger.info('DRY RUN: Would read package.json version and create GitHub release');\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const tagName = `v${version}`;\n const releaseNotesContent = await storage.readFile('RELEASE_NOTES.md', 'utf-8');\n const releaseTitle = await storage.readFile('RELEASE_TITLE.md', 'utf-8');\n await GitHub.createRelease(tagName, releaseTitle, releaseNotesContent);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would create new release branch...' : 'Creating new release branch...');\n if (isDryRun) {\n logger.info('DRY RUN: Would create next release branch (e.g., release/1.0.1) and push to origin');\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const nextVersion = incrementPatchVersion(version);\n const newBranchName = `release/${nextVersion}`;\n await run(`git checkout -b ${newBranchName}`);\n await run(`git push -u origin ${newBranchName}`);\n logger.info(`Branch ${newBranchName} created and pushed to origin.`);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Preparation would be complete.' : 'Preparation complete.');\n } finally {\n // Restore linked packages (if enabled)\n const shouldLink = runConfig.publish?.linkWorkspacePackages !== false; // default to true\n if (shouldLink) {\n logger.verbose(isDryRun ? 'DRY RUN: Would restore linked packages...' : 'Restoring linked packages...');\n await Link.execute(runConfig);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: Would skip restore linked packages (disabled in config).' : 'Skipping restore linked packages (disabled in config).');\n }\n }\n}; "],"names":["scanNpmrcForEnvVars","storage","npmrcPath","path","join","process","cwd","envVars","exists","npmrcContent","readFile","envVarMatches","match","varName","replace","includes","push","error","validateEnvironmentVariables","requiredEnvVars","isDryRun","logger","getLogger","missingEnvVars","envVar","env","length","warn","Error","runPrechecks","runConfig","createStorage","log","info","dryRun","run","stdout","trim","currentBranch","GitHub","startsWith","packageJsonPath","packageJson","packageJsonContents","JSON","parse","scripts","prepublishOnly","verbose","coreRequiredEnvVars","publish","npmrcEnvVars","allRequiredEnvVars","Set","execute","shouldUnlink","unlinkWorkspacePackages","Unlink","pr","branchName","html_url","updatePatterns","dependencyUpdatePatterns","patternsArg","runWithDryRunSupport","Commit","Diff","releaseSummary","Release","writeFile","body","title","number","labels","commitTitle","mergeMethod","version","tagName","releaseNotesContent","releaseTitle","nextVersion","incrementPatchVersion","newBranchName","shouldLink","linkWorkspacePackages","Link"],"mappings":"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"}
@@ -5,10 +5,13 @@ import { create as create$1 } from '../content/log.js';
5
5
  import { create as create$2 } from '../content/diff.js';
6
6
  import { create } from '../prompt/prompts.js';
7
7
  import { createCompletion } from '../util/openai.js';
8
+ import { getLogger } from '../logging.js';
8
9
 
9
10
  const execute = async (runConfig)=>{
10
11
  var _runConfig_release, _runConfig_release1, _runConfig_release2, _runConfig_release3, _runConfig_release4;
12
+ const logger = getLogger();
11
13
  const prompts = await create(runConfig.model, runConfig);
14
+ const isDryRun = runConfig.dryRun || false;
12
15
  var _runConfig_release_from, _runConfig_release_to;
13
16
  const log = await create$1({
14
17
  from: (_runConfig_release_from = (_runConfig_release = runConfig.release) === null || _runConfig_release === void 0 ? void 0 : _runConfig_release.from) !== null && _runConfig_release_from !== void 0 ? _runConfig_release_from : DEFAULT_FROM_COMMIT_ALIAS,
@@ -32,6 +35,11 @@ const execute = async (runConfig)=>{
32
35
  type: 'json_object'
33
36
  }
34
37
  });
38
+ if (isDryRun) {
39
+ logger.info('DRY RUN: Generated release summary:');
40
+ logger.info('Title: %s', summary.title);
41
+ logger.info('Body: %s', summary.body);
42
+ }
35
43
  return summary;
36
44
  };
37
45
 
@@ -1 +1 @@
1
- {"version":3,"file":"release.js","sources":["../../src/commands/release.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Model, Request } from '@riotprompt/riotprompt';\nimport 'dotenv/config';\nimport { ChatCompletionMessageParam } from 'openai/resources';\nimport { DEFAULT_EXCLUDED_PATTERNS, DEFAULT_FROM_COMMIT_ALIAS, DEFAULT_TO_COMMIT_ALIAS } from '../constants';\nimport * as Log from '../content/log';\nimport * as Diff from '../content/diff';\nimport * as Prompts from '../prompt/prompts';\nimport { Config, ReleaseSummary } from '../types';\nimport { createCompletion } from '../util/openai';\n\nexport const execute = async (runConfig: Config): Promise<ReleaseSummary> => {\n const prompts = await Prompts.create(runConfig.model as Model, runConfig);\n\n const log = await Log.create({ from: runConfig.release?.from ?? DEFAULT_FROM_COMMIT_ALIAS, to: runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS });\n let logContent = '';\n\n const diff = await Diff.create({ from: runConfig.release?.from ?? DEFAULT_FROM_COMMIT_ALIAS, to: runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS, excludedPatterns: runConfig.excludedPatterns ?? DEFAULT_EXCLUDED_PATTERNS });\n let diffContent = '';\n\n diffContent = await diff.get();\n logContent = await log.get();\n\n const prompt = await prompts.createReleasePrompt(logContent, diffContent, runConfig.release?.context);\n\n const request: Request = prompts.format(prompt);\n\n const summary = await createCompletion(\n request.messages as ChatCompletionMessageParam[],\n {\n model: runConfig.model,\n responseFormat: { type: 'json_object' }\n }\n );\n\n return summary as ReleaseSummary;\n}\n"],"names":["execute","runConfig","prompts","Prompts","model","log","Log","from","release","DEFAULT_FROM_COMMIT_ALIAS","to","DEFAULT_TO_COMMIT_ALIAS","logContent","diff","Diff","excludedPatterns","DEFAULT_EXCLUDED_PATTERNS","diffContent","get","prompt","createReleasePrompt","context","request","format","summary","createCompletion","messages","responseFormat","type"],"mappings":"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AAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAA2BQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAA2BC,CAAAA,CAAAA,CAAAA,CAAIT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAjBP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmBS,CAAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAArBT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,qBAAAA,CAAAA,CAAAA,CAAyBU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAwB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAIC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAa,CAAA,CAAA,CAAA;AAEsBX,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAA0DA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAoEA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAArK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMY,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,QAAW,CAAC,CAAA;QAAEP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAMN,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAjBP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmBM,IAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAvBN,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAA2BQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAA2BC,CAAAA,CAAAA,CAAAA,CAAIT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAjBP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmBS,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAArBT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAyBU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAyBI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAAAA,CAAAA,CAAkBd,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,SAAAA,CAAUc,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAA1Bd,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,eAAAA,2BAAAA,CAAAA,CAAAA,CAA8Be,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAA0B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC7N,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAIC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAc,CAAA,CAAA,CAAA;IAElBA,WAAAA,CAAAA,CAAAA,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMJ,CAAAA,CAAAA,CAAAA,EAAKK,GAAG,CAAA,CAAA,CAAA;IAC5BN,UAAAA,CAAAA,CAAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMP,CAAAA,CAAAA,EAAIa,GAAG,CAAA,CAAA,CAAA;AAE1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMjB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQkB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmB,CAACR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAYK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAahB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAjBP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAmBoB,OAAO,CAAA,CAAA;IAEpG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,OAAAA,CAAAA,CAAAA,CAAmBpB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQqB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAACJ,MAAAA,CAAAA,CAAAA;AAExC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMK,OAAAA,CAAAA,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,gBAAAA,CAClBH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAA,CAChB,CAAA;AACItB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAUG,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAA;QACtBuB,cAAAA,CAAAA,CAAgB,CAAA;YAAEC,IAAAA,CAAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC1C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IAGJ,OAAOJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACX,CAAA,CAAA;;"}
1
+ {"version":3,"file":"release.js","sources":["../../src/commands/release.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Model, Request } from '@riotprompt/riotprompt';\nimport 'dotenv/config';\nimport { ChatCompletionMessageParam } from 'openai/resources';\nimport { DEFAULT_EXCLUDED_PATTERNS, DEFAULT_FROM_COMMIT_ALIAS, DEFAULT_TO_COMMIT_ALIAS } from '../constants';\nimport * as Log from '../content/log';\nimport * as Diff from '../content/diff';\nimport * as Prompts from '../prompt/prompts';\nimport { Config, ReleaseSummary } from '../types';\nimport { createCompletion } from '../util/openai';\nimport { getLogger } from '../logging';\n\nexport const execute = async (runConfig: Config): Promise<ReleaseSummary> => {\n const logger = getLogger();\n const prompts = await Prompts.create(runConfig.model as Model, runConfig);\n const isDryRun = runConfig.dryRun || false;\n\n const log = await Log.create({ from: runConfig.release?.from ?? DEFAULT_FROM_COMMIT_ALIAS, to: runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS });\n let logContent = '';\n\n const diff = await Diff.create({ from: runConfig.release?.from ?? DEFAULT_FROM_COMMIT_ALIAS, to: runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS, excludedPatterns: runConfig.excludedPatterns ?? DEFAULT_EXCLUDED_PATTERNS });\n let diffContent = '';\n\n diffContent = await diff.get();\n logContent = await log.get();\n\n const prompt = await prompts.createReleasePrompt(logContent, diffContent, runConfig.release?.context);\n\n const request: Request = prompts.format(prompt);\n\n const summary = await createCompletion(\n request.messages as ChatCompletionMessageParam[],\n {\n model: runConfig.model,\n responseFormat: { type: 'json_object' }\n }\n );\n\n if (isDryRun) {\n logger.info('DRY RUN: Generated release summary:');\n logger.info('Title: %s', (summary as ReleaseSummary).title);\n logger.info('Body: %s', (summary as ReleaseSummary).body);\n }\n\n return summary as ReleaseSummary;\n}\n"],"names":["execute","runConfig","logger","getLogger","prompts","Prompts","model","isDryRun","dryRun","log","Log","from","release","DEFAULT_FROM_COMMIT_ALIAS","to","DEFAULT_TO_COMMIT_ALIAS","logContent","diff","Diff","excludedPatterns","DEFAULT_EXCLUDED_PATTERNS","diffContent","get","prompt","createReleasePrompt","context","request","format","summary","createCompletion","messages","responseFormat","type","info","title","body"],"mappings":"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AAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmBU,IAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAvBV,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAA2BY,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAA2BC,CAAAA,CAAAA,CAAAA,CAAIb,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,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AAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmBU,IAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAvBV,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAA2BY,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAA2BC,CAAAA,CAAAA,CAAAA,CAAIb,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,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"}
@@ -8,9 +8,9 @@ const scanDirectoryForPackages = async (rootDir, storage)=>{
8
8
  const logger = getLogger();
9
9
  const packageMap = new Map(); // packageName -> relativePath
10
10
  const absoluteRootDir = path.resolve(process.cwd(), rootDir);
11
- logger.debug(`Scanning directory for packages: ${absoluteRootDir}`);
11
+ logger.verbose(`Scanning directory for packages: ${absoluteRootDir}`);
12
12
  if (!await storage.exists(absoluteRootDir) || !await storage.isDirectory(absoluteRootDir)) {
13
- logger.debug(`Root directory does not exist or is not a directory: ${absoluteRootDir}`);
13
+ logger.verbose(`Root directory does not exist or is not a directory: ${absoluteRootDir}`);
14
14
  return packageMap;
15
15
  }
16
16
  try {
@@ -43,11 +43,11 @@ const scanDirectoryForPackages = async (rootDir, storage)=>{
43
43
  const findPackagesToUnlink = async (scopeRoots, storage)=>{
44
44
  const logger = getLogger();
45
45
  const packagesToUnlink = [];
46
- logger.debug(`Finding packages to unlink from scope roots: ${JSON.stringify(scopeRoots)}`);
46
+ logger.silly(`Finding packages to unlink from scope roots: ${JSON.stringify(scopeRoots)}`);
47
47
  // Scan all scope roots to build a comprehensive map of packages that should be unlinked
48
48
  const allScopePackages = new Map(); // packageName -> relativePath
49
49
  for (const [scope, rootDir] of Object.entries(scopeRoots)){
50
- logger.debug(`Scanning scope ${scope} at root directory: ${rootDir}`);
50
+ logger.verbose(`Scanning scope ${scope} at root directory: ${rootDir}`);
51
51
  const scopePackages = await scanDirectoryForPackages(rootDir, storage);
52
52
  // Add packages from this scope to the overall map
53
53
  for (const [packageName, packagePath] of scopePackages){
@@ -90,7 +90,7 @@ const execute = async (runConfig)=>{
90
90
  const storage = create({
91
91
  log: logger.info
92
92
  });
93
- logger.info('Starting pnpm workspace unlink management...');
93
+ logger.verbose('Starting pnpm workspace unlink management...');
94
94
  // Read current package.json
95
95
  const packageJsonPath = path.join(process.cwd(), 'package.json');
96
96
  if (!await storage.exists(packageJsonPath)) {
@@ -103,31 +103,31 @@ const execute = async (runConfig)=>{
103
103
  } catch (error) {
104
104
  throw new Error(`Failed to parse package.json: ${error}`);
105
105
  }
106
- logger.info(`Processing package: ${packageJson.name || 'unnamed'}`);
106
+ logger.verbose(`Processing package: ${packageJson.name || 'unnamed'}`);
107
107
  // Get configuration
108
108
  const scopeRoots = ((_runConfig_link = runConfig.link) === null || _runConfig_link === void 0 ? void 0 : _runConfig_link.scopeRoots) || {};
109
109
  const workspaceFileName = ((_runConfig_link1 = runConfig.link) === null || _runConfig_link1 === void 0 ? void 0 : _runConfig_link1.workspaceFile) || 'pnpm-workspace.yaml';
110
110
  const isDryRun = runConfig.dryRun || ((_runConfig_link2 = runConfig.link) === null || _runConfig_link2 === void 0 ? void 0 : _runConfig_link2.dryRun) || false;
111
- logger.debug('Extracted scopeRoots:', JSON.stringify(scopeRoots));
111
+ logger.silly('Extracted scopeRoots:', JSON.stringify(scopeRoots));
112
112
  logger.debug('Extracted workspaceFileName:', workspaceFileName);
113
113
  logger.debug('Extracted isDryRun:', isDryRun);
114
114
  if (Object.keys(scopeRoots).length === 0) {
115
- logger.info('No scope roots configured. Skipping unlink management.');
115
+ logger.verbose('No scope roots configured. Skipping unlink management.');
116
116
  return 'No scope roots configured. Skipping unlink management.';
117
117
  }
118
- logger.info(`Configured scope roots: ${JSON.stringify(scopeRoots)}`);
118
+ logger.silly(`Configured scope roots: ${JSON.stringify(scopeRoots)}`);
119
119
  // Find packages to unlink based on scope roots
120
120
  const packagesToUnlinkPaths = await findPackagesToUnlink(scopeRoots, storage);
121
121
  if (packagesToUnlinkPaths.length === 0) {
122
- logger.info('No packages found matching scope roots for unlinking.');
122
+ logger.verbose('No packages found matching scope roots for unlinking.');
123
123
  return 'No packages found matching scope roots for unlinking.';
124
124
  }
125
- logger.info(`Found ${packagesToUnlinkPaths.length} packages that could be unlinked: ${packagesToUnlinkPaths.join(', ')}`);
125
+ logger.verbose(`Found ${packagesToUnlinkPaths.length} packages that could be unlinked: ${packagesToUnlinkPaths.join(', ')}`);
126
126
  // Read existing workspace configuration
127
127
  const workspaceFilePath = path.join(process.cwd(), workspaceFileName);
128
128
  const workspaceConfig = await readCurrentWorkspaceFile(workspaceFilePath, storage);
129
- if (!workspaceConfig.overrides) {
130
- logger.info('No overrides found in workspace file. Nothing to do.');
129
+ if (!workspaceConfig.overrides || Object.keys(workspaceConfig.overrides).length === 0) {
130
+ logger.verbose('No overrides found in workspace file. Nothing to do.');
131
131
  return 'No overrides found in workspace file. Nothing to do.';
132
132
  }
133
133
  // Filter out packages that match our scope roots from overrides
@@ -143,7 +143,7 @@ const execute = async (runConfig)=>{
143
143
  }
144
144
  }
145
145
  if (actuallyRemovedPackages.length === 0) {
146
- logger.info('No linked packages found in workspace file that match scope roots.');
146
+ logger.verbose('No linked packages found in workspace file that match scope roots.');
147
147
  return 'No linked packages found in workspace file that match scope roots.';
148
148
  }
149
149
  const updatedConfig = {
@@ -155,19 +155,19 @@ const execute = async (runConfig)=>{
155
155
  }
156
156
  // Write the updated workspace file
157
157
  if (isDryRun) {
158
- logger.info('DRY RUN: Would write the following workspace configuration:');
159
- logger.info(yaml.dump(updatedConfig, {
158
+ logger.verbose('DRY RUN: Would write the following workspace configuration:');
159
+ logger.silly(yaml.dump(updatedConfig, {
160
160
  indent: 2
161
161
  }));
162
- logger.info(`DRY RUN: Would remove ${actuallyRemovedPackages.length} packages: ${actuallyRemovedPackages.join(', ')}`);
162
+ logger.verbose(`DRY RUN: Would remove ${actuallyRemovedPackages.length} packages: ${actuallyRemovedPackages.join(', ')}`);
163
163
  } else {
164
164
  await writeWorkspaceFile(workspaceFilePath, updatedConfig, storage);
165
- logger.info(`Updated ${workspaceFileName} - removed ${actuallyRemovedPackages.length} linked packages from overrides.`);
165
+ logger.verbose(`Updated ${workspaceFileName} - removed ${actuallyRemovedPackages.length} linked packages from overrides.`);
166
166
  // Rebuild pnpm lock file and node_modules
167
- logger.info('Rebuilding pnpm lock file and node_modules...');
167
+ logger.verbose('Rebuilding pnpm lock file and node_modules...');
168
168
  try {
169
169
  await run('pnpm install');
170
- logger.info('Successfully rebuilt pnpm lock file and node_modules');
170
+ logger.verbose('Successfully rebuilt pnpm lock file and node_modules');
171
171
  } catch (error) {
172
172
  logger.warn(`Failed to rebuild dependencies: ${error}. You may need to run 'pnpm install' manually.`);
173
173
  }
@@ -1 +1 @@
1
- {"version":3,"file":"unlink.js","sources":["../../src/commands/unlink.ts"],"sourcesContent":["import path from 'path';\nimport yaml from 'js-yaml';\nimport { getLogger } from '../logging';\nimport { Config } from '../types';\nimport { create as createStorage } from '../util/storage';\nimport { run } from '../util/child';\n\ninterface PackageJson {\n name?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n}\n\ninterface PnpmWorkspaceFile {\n packages?: string[];\n overrides?: Record<string, string>;\n}\n\nconst scanDirectoryForPackages = async (rootDir: string, storage: any): Promise<Map<string, string>> => {\n const logger = getLogger();\n const packageMap = new Map<string, string>(); // packageName -> relativePath\n\n const absoluteRootDir = path.resolve(process.cwd(), rootDir);\n logger.debug(`Scanning directory for packages: ${absoluteRootDir}`);\n\n if (!await storage.exists(absoluteRootDir) || !await storage.isDirectory(absoluteRootDir)) {\n logger.debug(`Root directory does not exist or is not a directory: ${absoluteRootDir}`);\n return packageMap;\n }\n\n try {\n // Get all subdirectories in the root directory\n const items = await storage.listFiles(absoluteRootDir);\n\n for (const item of items) {\n const itemPath = path.join(absoluteRootDir, item);\n\n if (await storage.isDirectory(itemPath)) {\n const packageJsonPath = path.join(itemPath, 'package.json');\n\n if (await storage.exists(packageJsonPath)) {\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent) as PackageJson;\n\n if (packageJson.name) {\n const relativePath = path.relative(process.cwd(), itemPath);\n packageMap.set(packageJson.name, relativePath);\n logger.debug(`Found package: ${packageJson.name} at ${relativePath}`);\n }\n } catch (error) {\n logger.debug(`Failed to parse package.json at ${packageJsonPath}: ${error}`);\n }\n }\n }\n }\n } catch (error) {\n logger.warn(`Failed to read directory ${absoluteRootDir}: ${error}`);\n }\n\n return packageMap;\n};\n\nconst findPackagesToUnlink = async (scopeRoots: Record<string, string>, storage: any): Promise<string[]> => {\n const logger = getLogger();\n const packagesToUnlink: string[] = [];\n\n logger.debug(`Finding packages to unlink from scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Scan all scope roots to build a comprehensive map of packages that should be unlinked\n const allScopePackages = new Map<string, string>(); // packageName -> relativePath\n\n for (const [scope, rootDir] of Object.entries(scopeRoots)) {\n logger.debug(`Scanning scope ${scope} at root directory: ${rootDir}`);\n const scopePackages = await scanDirectoryForPackages(rootDir, storage);\n\n // Add packages from this scope to the overall map\n for (const [packageName, packagePath] of scopePackages) {\n if (packageName.startsWith(scope)) {\n allScopePackages.set(packageName, packagePath);\n packagesToUnlink.push(packagePath);\n logger.debug(`Package to unlink: ${packageName} -> ${packagePath}`);\n }\n }\n }\n\n return packagesToUnlink;\n};\n\nconst readCurrentWorkspaceFile = async (workspaceFilePath: string, storage: any): Promise<PnpmWorkspaceFile> => {\n if (await storage.exists(workspaceFilePath)) {\n try {\n const content = await storage.readFile(workspaceFilePath, 'utf-8');\n return (yaml.load(content) as PnpmWorkspaceFile) || {};\n } catch (error) {\n throw new Error(`Failed to parse existing workspace file: ${error}`);\n }\n }\n return {};\n};\n\nconst writeWorkspaceFile = async (workspaceFilePath: string, config: PnpmWorkspaceFile, storage: any): Promise<void> => {\n let yamlContent = yaml.dump(config, {\n indent: 2,\n lineWidth: -1,\n noRefs: true,\n sortKeys: false,\n quotingType: \"'\",\n forceQuotes: true\n });\n\n // Post-process to fix numeric values that shouldn't be quoted\n yamlContent = yamlContent.replace(/: '(\\d+(?:\\.\\d+)*)'/g, ': $1');\n\n await storage.writeFile(workspaceFilePath, yamlContent, 'utf-8');\n};\n\nexport const execute = async (runConfig: Config): Promise<string> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n logger.info('Starting pnpm workspace unlink management...');\n\n // Read current package.json\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n if (!await storage.exists(packageJsonPath)) {\n throw new Error('package.json not found in current directory.');\n }\n\n let packageJson: PackageJson;\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContent);\n } catch (error) {\n throw new Error(`Failed to parse package.json: ${error}`);\n }\n\n logger.info(`Processing package: ${packageJson.name || 'unnamed'}`);\n\n // Get configuration\n const scopeRoots = runConfig.link?.scopeRoots || {};\n const workspaceFileName = runConfig.link?.workspaceFile || 'pnpm-workspace.yaml';\n const isDryRun = runConfig.dryRun || runConfig.link?.dryRun || false;\n\n logger.debug('Extracted scopeRoots:', JSON.stringify(scopeRoots));\n logger.debug('Extracted workspaceFileName:', workspaceFileName);\n logger.debug('Extracted isDryRun:', isDryRun);\n\n if (Object.keys(scopeRoots).length === 0) {\n logger.info('No scope roots configured. Skipping unlink management.');\n return 'No scope roots configured. Skipping unlink management.';\n }\n\n logger.info(`Configured scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Find packages to unlink based on scope roots\n const packagesToUnlinkPaths = await findPackagesToUnlink(scopeRoots, storage);\n\n if (packagesToUnlinkPaths.length === 0) {\n logger.info('No packages found matching scope roots for unlinking.');\n return 'No packages found matching scope roots for unlinking.';\n }\n\n logger.info(`Found ${packagesToUnlinkPaths.length} packages that could be unlinked: ${packagesToUnlinkPaths.join(', ')}`);\n\n // Read existing workspace configuration\n const workspaceFilePath = path.join(process.cwd(), workspaceFileName);\n const workspaceConfig = await readCurrentWorkspaceFile(workspaceFilePath, storage);\n\n if (!workspaceConfig.overrides) {\n logger.info('No overrides found in workspace file. Nothing to do.');\n return 'No overrides found in workspace file. Nothing to do.';\n }\n\n // Filter out packages that match our scope roots from overrides\n const existingOverrides = workspaceConfig.overrides || {};\n const remainingOverrides: Record<string, string> = {};\n const actuallyRemovedPackages: string[] = [];\n const packagesToUnlinkSet = new Set(packagesToUnlinkPaths.map(p => `link:${p}`));\n\n for (const [pkgName, pkgLink] of Object.entries(existingOverrides)) {\n if (packagesToUnlinkSet.has(pkgLink)) {\n actuallyRemovedPackages.push(pkgName);\n } else {\n remainingOverrides[pkgName] = pkgLink;\n }\n }\n\n if (actuallyRemovedPackages.length === 0) {\n logger.info('No linked packages found in workspace file that match scope roots.');\n return 'No linked packages found in workspace file that match scope roots.';\n }\n\n const updatedConfig: PnpmWorkspaceFile = {\n ...workspaceConfig,\n overrides: remainingOverrides\n };\n\n if (Object.keys(remainingOverrides).length === 0) {\n delete updatedConfig.overrides;\n }\n\n // Write the updated workspace file\n if (isDryRun) {\n logger.info('DRY RUN: Would write the following workspace configuration:');\n logger.info(yaml.dump(updatedConfig, { indent: 2 }));\n logger.info(`DRY RUN: Would remove ${actuallyRemovedPackages.length} packages: ${actuallyRemovedPackages.join(', ')}`);\n } else {\n await writeWorkspaceFile(workspaceFilePath, updatedConfig, storage);\n logger.info(`Updated ${workspaceFileName} - removed ${actuallyRemovedPackages.length} linked packages from overrides.`);\n\n // Rebuild pnpm lock file and node_modules\n logger.info('Rebuilding pnpm lock file and node_modules...');\n try {\n await run('pnpm install');\n logger.info('Successfully rebuilt pnpm lock file and node_modules');\n } catch (error) {\n logger.warn(`Failed to rebuild dependencies: ${error}. You may need to run 'pnpm install' manually.`);\n }\n }\n\n const summary = `Successfully unlinked ${actuallyRemovedPackages.length} sibling packages:\\n${actuallyRemovedPackages.map(pkg => ` - ${pkg}`).join('\\n')}`;\n\n return summary;\n};\n"],"names":["scanDirectoryForPackages","rootDir","storage","logger","getLogger","packageMap","Map","absoluteRootDir","path","resolve","process","cwd","debug","exists","isDirectory","items","listFiles","item","itemPath","join","packageJsonPath","packageJsonContent","readFile","packageJson","JSON","parse","name","relativePath","relative","set","error","warn","findPackagesToUnlink","scopeRoots","packagesToUnlink","stringify","allScopePackages","scope","Object","entries","scopePackages","packageName","packagePath","startsWith","push","readCurrentWorkspaceFile","workspaceFilePath","content","yaml","load","Error","writeWorkspaceFile","config","yamlContent","dump","indent","lineWidth","noRefs","sortKeys","quotingType","forceQuotes","replace","writeFile","execute","runConfig","createStorage","log","info","link","workspaceFileName","workspaceFile","isDryRun","dryRun","keys","length","packagesToUnlinkPaths","workspaceConfig","overrides","existingOverrides","remainingOverrides","actuallyRemovedPackages","packagesToUnlinkSet","Set","map","p","pkgName","pkgLink","has","updatedConfig","run","summary","pkg"],"mappings":"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"}
1
+ {"version":3,"file":"unlink.js","sources":["../../src/commands/unlink.ts"],"sourcesContent":["import path from 'path';\nimport yaml from 'js-yaml';\nimport { getLogger } from '../logging';\nimport { Config } from '../types';\nimport { create as createStorage } from '../util/storage';\nimport { run } from '../util/child';\n\ninterface PackageJson {\n name?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n}\n\ninterface PnpmWorkspaceFile {\n packages?: string[];\n overrides?: Record<string, string>;\n}\n\nconst scanDirectoryForPackages = async (rootDir: string, storage: any): Promise<Map<string, string>> => {\n const logger = getLogger();\n const packageMap = new Map<string, string>(); // packageName -> relativePath\n\n const absoluteRootDir = path.resolve(process.cwd(), rootDir);\n logger.verbose(`Scanning directory for packages: ${absoluteRootDir}`);\n\n if (!await storage.exists(absoluteRootDir) || !await storage.isDirectory(absoluteRootDir)) {\n logger.verbose(`Root directory does not exist or is not a directory: ${absoluteRootDir}`);\n return packageMap;\n }\n\n try {\n // Get all subdirectories in the root directory\n const items = await storage.listFiles(absoluteRootDir);\n\n for (const item of items) {\n const itemPath = path.join(absoluteRootDir, item);\n\n if (await storage.isDirectory(itemPath)) {\n const packageJsonPath = path.join(itemPath, 'package.json');\n\n if (await storage.exists(packageJsonPath)) {\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent) as PackageJson;\n\n if (packageJson.name) {\n const relativePath = path.relative(process.cwd(), itemPath);\n packageMap.set(packageJson.name, relativePath);\n logger.debug(`Found package: ${packageJson.name} at ${relativePath}`);\n }\n } catch (error) {\n logger.debug(`Failed to parse package.json at ${packageJsonPath}: ${error}`);\n }\n }\n }\n }\n } catch (error) {\n logger.warn(`Failed to read directory ${absoluteRootDir}: ${error}`);\n }\n\n return packageMap;\n};\n\nconst findPackagesToUnlink = async (scopeRoots: Record<string, string>, storage: any): Promise<string[]> => {\n const logger = getLogger();\n const packagesToUnlink: string[] = [];\n\n logger.silly(`Finding packages to unlink from scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Scan all scope roots to build a comprehensive map of packages that should be unlinked\n const allScopePackages = new Map<string, string>(); // packageName -> relativePath\n\n for (const [scope, rootDir] of Object.entries(scopeRoots)) {\n logger.verbose(`Scanning scope ${scope} at root directory: ${rootDir}`);\n const scopePackages = await scanDirectoryForPackages(rootDir, storage);\n\n // Add packages from this scope to the overall map\n for (const [packageName, packagePath] of scopePackages) {\n if (packageName.startsWith(scope)) {\n allScopePackages.set(packageName, packagePath);\n packagesToUnlink.push(packagePath);\n logger.debug(`Package to unlink: ${packageName} -> ${packagePath}`);\n }\n }\n }\n\n return packagesToUnlink;\n};\n\nconst readCurrentWorkspaceFile = async (workspaceFilePath: string, storage: any): Promise<PnpmWorkspaceFile> => {\n if (await storage.exists(workspaceFilePath)) {\n try {\n const content = await storage.readFile(workspaceFilePath, 'utf-8');\n return (yaml.load(content) as PnpmWorkspaceFile) || {};\n } catch (error) {\n throw new Error(`Failed to parse existing workspace file: ${error}`);\n }\n }\n return {};\n};\n\nconst writeWorkspaceFile = async (workspaceFilePath: string, config: PnpmWorkspaceFile, storage: any): Promise<void> => {\n let yamlContent = yaml.dump(config, {\n indent: 2,\n lineWidth: -1,\n noRefs: true,\n sortKeys: false,\n quotingType: \"'\",\n forceQuotes: true\n });\n\n // Post-process to fix numeric values that shouldn't be quoted\n yamlContent = yamlContent.replace(/: '(\\d+(?:\\.\\d+)*)'/g, ': $1');\n\n await storage.writeFile(workspaceFilePath, yamlContent, 'utf-8');\n};\n\nexport const execute = async (runConfig: Config): Promise<string> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n logger.verbose('Starting pnpm workspace unlink management...');\n\n // Read current package.json\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n if (!await storage.exists(packageJsonPath)) {\n throw new Error('package.json not found in current directory.');\n }\n\n let packageJson: PackageJson;\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContent);\n } catch (error) {\n throw new Error(`Failed to parse package.json: ${error}`);\n }\n\n logger.verbose(`Processing package: ${packageJson.name || 'unnamed'}`);\n\n // Get configuration\n const scopeRoots = runConfig.link?.scopeRoots || {};\n const workspaceFileName = runConfig.link?.workspaceFile || 'pnpm-workspace.yaml';\n const isDryRun = runConfig.dryRun || runConfig.link?.dryRun || false;\n\n logger.silly('Extracted scopeRoots:', JSON.stringify(scopeRoots));\n logger.debug('Extracted workspaceFileName:', workspaceFileName);\n logger.debug('Extracted isDryRun:', isDryRun);\n\n if (Object.keys(scopeRoots).length === 0) {\n logger.verbose('No scope roots configured. Skipping unlink management.');\n return 'No scope roots configured. Skipping unlink management.';\n }\n\n logger.silly(`Configured scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Find packages to unlink based on scope roots\n const packagesToUnlinkPaths = await findPackagesToUnlink(scopeRoots, storage);\n\n if (packagesToUnlinkPaths.length === 0) {\n logger.verbose('No packages found matching scope roots for unlinking.');\n return 'No packages found matching scope roots for unlinking.';\n }\n\n logger.verbose(`Found ${packagesToUnlinkPaths.length} packages that could be unlinked: ${packagesToUnlinkPaths.join(', ')}`);\n\n // Read existing workspace configuration\n const workspaceFilePath = path.join(process.cwd(), workspaceFileName);\n const workspaceConfig = await readCurrentWorkspaceFile(workspaceFilePath, storage);\n\n if (!workspaceConfig.overrides || Object.keys(workspaceConfig.overrides).length === 0) {\n logger.verbose('No overrides found in workspace file. Nothing to do.');\n return 'No overrides found in workspace file. Nothing to do.';\n }\n\n // Filter out packages that match our scope roots from overrides\n const existingOverrides = workspaceConfig.overrides || {};\n const remainingOverrides: Record<string, string> = {};\n const actuallyRemovedPackages: string[] = [];\n const packagesToUnlinkSet = new Set(packagesToUnlinkPaths.map(p => `link:${p}`));\n\n for (const [pkgName, pkgLink] of Object.entries(existingOverrides)) {\n if (packagesToUnlinkSet.has(pkgLink)) {\n actuallyRemovedPackages.push(pkgName);\n } else {\n remainingOverrides[pkgName] = pkgLink;\n }\n }\n\n if (actuallyRemovedPackages.length === 0) {\n logger.verbose('No linked packages found in workspace file that match scope roots.');\n return 'No linked packages found in workspace file that match scope roots.';\n }\n\n const updatedConfig: PnpmWorkspaceFile = {\n ...workspaceConfig,\n overrides: remainingOverrides\n };\n\n if (Object.keys(remainingOverrides).length === 0) {\n delete updatedConfig.overrides;\n }\n\n // Write the updated workspace file\n if (isDryRun) {\n logger.verbose('DRY RUN: Would write the following workspace configuration:');\n logger.silly(yaml.dump(updatedConfig, { indent: 2 }));\n logger.verbose(`DRY RUN: Would remove ${actuallyRemovedPackages.length} packages: ${actuallyRemovedPackages.join(', ')}`);\n } else {\n await writeWorkspaceFile(workspaceFilePath, updatedConfig, storage);\n logger.verbose(`Updated ${workspaceFileName} - removed ${actuallyRemovedPackages.length} linked packages from overrides.`);\n\n // Rebuild pnpm lock file and node_modules\n logger.verbose('Rebuilding pnpm lock file and node_modules...');\n try {\n await run('pnpm install');\n logger.verbose('Successfully rebuilt pnpm lock file and node_modules');\n } catch (error) {\n logger.warn(`Failed to rebuild dependencies: ${error}. You may need to run 'pnpm install' manually.`);\n }\n }\n\n const summary = `Successfully unlinked ${actuallyRemovedPackages.length} sibling packages:\\n${actuallyRemovedPackages.map(pkg => ` - ${pkg}`).join('\\n')}`;\n\n return summary;\n};\n"],"names":["scanDirectoryForPackages","rootDir","storage","logger","getLogger","packageMap","Map","absoluteRootDir","path","resolve","process","cwd","verbose","exists","isDirectory","items","listFiles","item","itemPath","join","packageJsonPath","packageJsonContent","readFile","packageJson","JSON","parse","name","relativePath","relative","set","debug","error","warn","findPackagesToUnlink","scopeRoots","packagesToUnlink","silly","stringify","allScopePackages","scope","Object","entries","scopePackages","packageName","packagePath","startsWith","push","readCurrentWorkspaceFile","workspaceFilePath","content","yaml","load","Error","writeWorkspaceFile","config","yamlContent","dump","indent","lineWidth","noRefs","sortKeys","quotingType","forceQuotes","replace","writeFile","execute","runConfig","createStorage","log","info","link","workspaceFileName","workspaceFile","isDryRun","dryRun","keys","length","packagesToUnlinkPaths","workspaceConfig","overrides","existingOverrides","remainingOverrides","actuallyRemovedPackages","packagesToUnlinkSet","Set","map","p","pkgName","pkgLink","has","updatedConfig","run","summary","pkg"],"mappings":"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"}
package/dist/constants.js CHANGED
@@ -1,4 +1,4 @@
1
- const VERSION = '0.0.9 (HEAD/ad6d978 T:v0.0.9 2025-06-30 15:27:19 -0700) linux x64 v22.16.0';
1
+ const VERSION = '0.0.11 (HEAD/cce32bb T:v0.0.11 2025-07-01 08:08:26 -0700) linux x64 v22.16.0';
2
2
  const PROGRAM_NAME = 'kodrdriv';
3
3
  const DEFAULT_CHARACTER_ENCODING = 'utf-8';
4
4
  const DEFAULT_OVERRIDES = false;
@@ -13,6 +13,8 @@ const COMMAND_RELEASE = 'release';
13
13
  const COMMAND_PUBLISH = 'publish';
14
14
  const COMMAND_LINK = 'link';
15
15
  const COMMAND_UNLINK = 'unlink';
16
+ const COMMAND_CHECK_CONFIG = 'check-config';
17
+ const COMMAND_INIT_CONFIG = 'init-config';
16
18
  const ALLOWED_COMMANDS = [
17
19
  COMMAND_COMMIT,
18
20
  COMMAND_RELEASE,
@@ -116,5 +118,5 @@ const KODRDRIV_DEFAULTS = {
116
118
  excludedPatterns: DEFAULT_EXCLUDED_PATTERNS
117
119
  };
118
120
 
119
- export { ALLOWED_COMMANDS, COMMAND_COMMIT, COMMAND_LINK, COMMAND_PUBLISH, COMMAND_RELEASE, COMMAND_UNLINK, DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS, DEFAULT_ADD, DEFAULT_CACHED, DEFAULT_CHARACTER_ENCODING, DEFAULT_COMMAND, DEFAULT_CONFIG_DIR, DEFAULT_CONTEXT_DIRECTORIES, DEFAULT_DEBUG, DEFAULT_DRY_RUN, DEFAULT_EXCLUDED_PATTERNS, DEFAULT_FROM_COMMIT_ALIAS, DEFAULT_INSTRUCTIONS_COMMIT_FILE, DEFAULT_INSTRUCTIONS_DIR, DEFAULT_INSTRUCTIONS_RELEASE_FILE, DEFAULT_MERGE_METHOD, DEFAULT_MESSAGE_LIMIT, DEFAULT_MODEL, DEFAULT_OVERRIDES, DEFAULT_PERSONAS_DIR, DEFAULT_PERSONA_COMMITTER_FILE, DEFAULT_PERSONA_RELEASER_FILE, DEFAULT_SENDIT_MODE, DEFAULT_TO_COMMIT_ALIAS, DEFAULT_VERBOSE, KODRDRIV_DEFAULTS, PROGRAM_NAME, VERSION };
121
+ export { ALLOWED_COMMANDS, COMMAND_CHECK_CONFIG, COMMAND_COMMIT, COMMAND_INIT_CONFIG, COMMAND_LINK, COMMAND_PUBLISH, COMMAND_RELEASE, COMMAND_UNLINK, DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS, DEFAULT_ADD, DEFAULT_CACHED, DEFAULT_CHARACTER_ENCODING, DEFAULT_COMMAND, DEFAULT_CONFIG_DIR, DEFAULT_CONTEXT_DIRECTORIES, DEFAULT_DEBUG, DEFAULT_DRY_RUN, DEFAULT_EXCLUDED_PATTERNS, DEFAULT_FROM_COMMIT_ALIAS, DEFAULT_INSTRUCTIONS_COMMIT_FILE, DEFAULT_INSTRUCTIONS_DIR, DEFAULT_INSTRUCTIONS_RELEASE_FILE, DEFAULT_MERGE_METHOD, DEFAULT_MESSAGE_LIMIT, DEFAULT_MODEL, DEFAULT_OVERRIDES, DEFAULT_PERSONAS_DIR, DEFAULT_PERSONA_COMMITTER_FILE, DEFAULT_PERSONA_RELEASER_FILE, DEFAULT_SENDIT_MODE, DEFAULT_TO_COMMIT_ALIAS, DEFAULT_VERBOSE, KODRDRIV_DEFAULTS, PROGRAM_NAME, VERSION };
120
122
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["export 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_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_CONTEXT_DIRECTORIES: string[] = [];\n\nexport const COMMAND_COMMIT = 'commit';\nexport const COMMAND_RELEASE = 'release';\nexport const COMMAND_PUBLISH = 'publish';\nexport const COMMAND_LINK = 'link';\nexport const COMMAND_UNLINK = 'unlink';\nexport const ALLOWED_COMMANDS = [COMMAND_COMMIT, COMMAND_RELEASE, COMMAND_PUBLISH, COMMAND_LINK, COMMAND_UNLINK];\nexport const DEFAULT_COMMAND = COMMAND_COMMIT;\n\nexport const DEFAULT_CONFIG_DIR = `.${PROGRAM_NAME}`;\n\nexport const DEFAULT_PERSONAS_DIR = `/personas`;\n\nexport const DEFAULT_PERSONA_COMMITTER_FILE = `${DEFAULT_PERSONAS_DIR}/committer.md`;\nexport const DEFAULT_PERSONA_RELEASER_FILE = `${DEFAULT_PERSONAS_DIR}/releaser.md`;\n\nexport const DEFAULT_INSTRUCTIONS_DIR = `/instructions`;\n\nexport const DEFAULT_INSTRUCTIONS_COMMIT_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/commit.md`;\nexport const DEFAULT_INSTRUCTIONS_RELEASE_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/release.md`;\n\nexport const DEFAULT_CACHED = false;\n\nexport const DEFAULT_ADD = false;\n\nexport const DEFAULT_SENDIT_MODE = false;\n\nexport const DEFAULT_FROM_COMMIT_ALIAS = 'main';\nexport const DEFAULT_TO_COMMIT_ALIAS = 'HEAD';\nexport const DEFAULT_VERSION = '1.0.0';\nexport const DEFAULT_MESSAGE_LIMIT = 10;\nexport const DEFAULT_MERGE_METHOD = 'squash' as const;\n\nexport const DEFAULT_EXCLUDED_PATTERNS: string[] = [\n // Node modules & dependency files\n \"node_modules\",\n \"pnpm-lock.yaml\",\n \"package-lock.json\",\n \"yarn.lock\",\n \"bun.lockb\",\n \"composer.lock\",\n \"Cargo.lock\",\n \"Gemfile.lock\",\n\n // Build output\n \"dist\",\n \"build\",\n \"out\",\n \".next\",\n \".nuxt\",\n \"coverage\",\n\n // IDE & OS files\n \".vscode\",\n \".idea\",\n \".DS_Store\",\n\n // Version control\n \".git\",\n \".gitignore\",\n\n // Logs, caches, and temp\n \"logs\",\n \"tmp\",\n \".cache\",\n \"*.log\",\n\n // Sensitive data\n \".env\",\n \".env.*\",\n \"*.pem\",\n \"*.crt\",\n \"*.key\",\n\n // Binary and database files\n \"*.sqlite\",\n \"*.db\",\n \"*.zip\",\n \"*.tar\",\n \"*.gz\",\n \"*.exe\",\n \"*.bin\",\n];\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 instructions: DEFAULT_INSTRUCTIONS_DIR,\n contextDirectories: DEFAULT_CONTEXT_DIRECTORIES,\n commandName: DEFAULT_COMMAND,\n configDirectory: DEFAULT_CONFIG_DIR,\n commit: {\n add: DEFAULT_ADD,\n cached: DEFAULT_CACHED,\n sendit: DEFAULT_SENDIT_MODE,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n release: {\n from: DEFAULT_FROM_COMMIT_ALIAS,\n to: DEFAULT_TO_COMMIT_ALIAS,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n publish: {\n mergeMethod: DEFAULT_MERGE_METHOD,\n requiredEnvVars: ['GITHUB_TOKEN', 'OPENAI_API_KEY'],\n },\n link: {\n scopeRoots: {},\n workspaceFile: 'pnpm-workspace.yaml',\n dryRun: false,\n },\n excludedPatterns: DEFAULT_EXCLUDED_PATTERNS,\n};"],"names":["VERSION","PROGRAM_NAME","DEFAULT_CHARACTER_ENCODING","DEFAULT_OVERRIDES","DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS","DEFAULT_VERBOSE","DEFAULT_DRY_RUN","DEFAULT_DEBUG","DEFAULT_MODEL","DEFAULT_CONTEXT_DIRECTORIES","COMMAND_COMMIT","COMMAND_RELEASE","COMMAND_PUBLISH","COMMAND_LINK","COMMAND_UNLINK","ALLOWED_COMMANDS","DEFAULT_COMMAND","DEFAULT_CONFIG_DIR","DEFAULT_PERSONAS_DIR","DEFAULT_PERSONA_COMMITTER_FILE","DEFAULT_PERSONA_RELEASER_FILE","DEFAULT_INSTRUCTIONS_DIR","DEFAULT_INSTRUCTIONS_COMMIT_FILE","DEFAULT_INSTRUCTIONS_RELEASE_FILE","DEFAULT_CACHED","DEFAULT_ADD","DEFAULT_SENDIT_MODE","DEFAULT_FROM_COMMIT_ALIAS","DEFAULT_TO_COMMIT_ALIAS","DEFAULT_MESSAGE_LIMIT","DEFAULT_MERGE_METHOD","DEFAULT_EXCLUDED_PATTERNS","KODRDRIV_DEFAULTS","dryRun","verbose","debug","overrides","model","instructions","contextDirectories","commandName","configDirectory","commit","add","cached","sendit","messageLimit","release","from","to","publish","mergeMethod","requiredEnvVars","link","scopeRoots","workspaceFile","excludedPatterns"],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["export 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_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_CONTEXT_DIRECTORIES: string[] = [];\n\nexport const COMMAND_COMMIT = 'commit';\nexport const COMMAND_RELEASE = 'release';\nexport const COMMAND_PUBLISH = 'publish';\nexport const COMMAND_LINK = 'link';\nexport const COMMAND_UNLINK = 'unlink';\nexport const COMMAND_CHECK_CONFIG = 'check-config';\nexport const COMMAND_INIT_CONFIG = 'init-config';\nexport const ALLOWED_COMMANDS = [COMMAND_COMMIT, COMMAND_RELEASE, COMMAND_PUBLISH, COMMAND_LINK, COMMAND_UNLINK];\nexport const DEFAULT_COMMAND = COMMAND_COMMIT;\n\nexport const DEFAULT_CONFIG_DIR = `.${PROGRAM_NAME}`;\n\nexport const DEFAULT_PERSONAS_DIR = `/personas`;\n\nexport const DEFAULT_PERSONA_COMMITTER_FILE = `${DEFAULT_PERSONAS_DIR}/committer.md`;\nexport const DEFAULT_PERSONA_RELEASER_FILE = `${DEFAULT_PERSONAS_DIR}/releaser.md`;\n\nexport const DEFAULT_INSTRUCTIONS_DIR = `/instructions`;\n\nexport const DEFAULT_INSTRUCTIONS_COMMIT_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/commit.md`;\nexport const DEFAULT_INSTRUCTIONS_RELEASE_FILE = `${DEFAULT_INSTRUCTIONS_DIR}/release.md`;\n\nexport const DEFAULT_CACHED = false;\n\nexport const DEFAULT_ADD = false;\n\nexport const DEFAULT_SENDIT_MODE = false;\n\nexport const DEFAULT_FROM_COMMIT_ALIAS = 'main';\nexport const DEFAULT_TO_COMMIT_ALIAS = 'HEAD';\nexport const DEFAULT_VERSION = '1.0.0';\nexport const DEFAULT_MESSAGE_LIMIT = 10;\nexport const DEFAULT_MERGE_METHOD = 'squash' as const;\n\nexport const DEFAULT_EXCLUDED_PATTERNS: string[] = [\n // Node modules & dependency files\n \"node_modules\",\n \"pnpm-lock.yaml\",\n \"package-lock.json\",\n \"yarn.lock\",\n \"bun.lockb\",\n \"composer.lock\",\n \"Cargo.lock\",\n \"Gemfile.lock\",\n\n // Build output\n \"dist\",\n \"build\",\n \"out\",\n \".next\",\n \".nuxt\",\n \"coverage\",\n\n // IDE & OS files\n \".vscode\",\n \".idea\",\n \".DS_Store\",\n\n // Version control\n \".git\",\n \".gitignore\",\n\n // Logs, caches, and temp\n \"logs\",\n \"tmp\",\n \".cache\",\n \"*.log\",\n\n // Sensitive data\n \".env\",\n \".env.*\",\n \"*.pem\",\n \"*.crt\",\n \"*.key\",\n\n // Binary and database files\n \"*.sqlite\",\n \"*.db\",\n \"*.zip\",\n \"*.tar\",\n \"*.gz\",\n \"*.exe\",\n \"*.bin\",\n];\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 instructions: DEFAULT_INSTRUCTIONS_DIR,\n contextDirectories: DEFAULT_CONTEXT_DIRECTORIES,\n commandName: DEFAULT_COMMAND,\n configDirectory: DEFAULT_CONFIG_DIR,\n commit: {\n add: DEFAULT_ADD,\n cached: DEFAULT_CACHED,\n sendit: DEFAULT_SENDIT_MODE,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n release: {\n from: DEFAULT_FROM_COMMIT_ALIAS,\n to: DEFAULT_TO_COMMIT_ALIAS,\n messageLimit: DEFAULT_MESSAGE_LIMIT,\n },\n publish: {\n mergeMethod: DEFAULT_MERGE_METHOD,\n requiredEnvVars: ['GITHUB_TOKEN', 'OPENAI_API_KEY'],\n },\n link: {\n scopeRoots: {},\n workspaceFile: 'pnpm-workspace.yaml',\n dryRun: false,\n },\n excludedPatterns: DEFAULT_EXCLUDED_PATTERNS,\n};"],"names":["VERSION","PROGRAM_NAME","DEFAULT_CHARACTER_ENCODING","DEFAULT_OVERRIDES","DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS","DEFAULT_VERBOSE","DEFAULT_DRY_RUN","DEFAULT_DEBUG","DEFAULT_MODEL","DEFAULT_CONTEXT_DIRECTORIES","COMMAND_COMMIT","COMMAND_RELEASE","COMMAND_PUBLISH","COMMAND_LINK","COMMAND_UNLINK","COMMAND_CHECK_CONFIG","COMMAND_INIT_CONFIG","ALLOWED_COMMANDS","DEFAULT_COMMAND","DEFAULT_CONFIG_DIR","DEFAULT_PERSONAS_DIR","DEFAULT_PERSONA_COMMITTER_FILE","DEFAULT_PERSONA_RELEASER_FILE","DEFAULT_INSTRUCTIONS_DIR","DEFAULT_INSTRUCTIONS_COMMIT_FILE","DEFAULT_INSTRUCTIONS_RELEASE_FILE","DEFAULT_CACHED","DEFAULT_ADD","DEFAULT_SENDIT_MODE","DEFAULT_FROM_COMMIT_ALIAS","DEFAULT_TO_COMMIT_ALIAS","DEFAULT_MESSAGE_LIMIT","DEFAULT_MERGE_METHOD","DEFAULT_EXCLUDED_PATTERNS","KODRDRIV_DEFAULTS","dryRun","verbose","debug","overrides","model","instructions","contextDirectories","commandName","configDirectory","commit","add","cached","sendit","messageLimit","release","from","to","publish","mergeMethod","requiredEnvVars","link","scopeRoots","workspaceFile","excludedPatterns"],"mappings":"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"}
package/dist/logging.js CHANGED
@@ -1,13 +1,17 @@
1
1
  import winston from 'winston';
2
- import { DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS, PROGRAM_NAME } from './constants.js';
2
+ import { PROGRAM_NAME, DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS } from './constants.js';
3
3
 
4
- const createLogger = (level = 'info')=>{
5
- let format = winston.format.combine(winston.format.timestamp({
6
- format: DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS
7
- }), winston.format.errors({
8
- stack: true
9
- }), winston.format.splat(), winston.format.json());
10
- let transports = [
4
+ const createTransports = (level)=>{
5
+ if (level === 'info') {
6
+ return [
7
+ new winston.transports.Console({
8
+ format: winston.format.combine(winston.format.colorize(), winston.format.printf(({ level, message })=>{
9
+ return `${level}: ${message}`;
10
+ }))
11
+ })
12
+ ];
13
+ }
14
+ return [
11
15
  new winston.transports.Console({
12
16
  format: winston.format.combine(winston.format.colorize(), winston.format.printf(({ timestamp, level, message, ...meta })=>{
13
17
  const metaStr = Object.keys(meta).length ? ` ${JSON.stringify(meta)}` : '';
@@ -15,31 +19,39 @@ const createLogger = (level = 'info')=>{
15
19
  }))
16
20
  })
17
21
  ];
22
+ };
23
+ const createFormat = (level)=>{
18
24
  if (level === 'info') {
19
- format = winston.format.combine(winston.format.errors({
25
+ return winston.format.combine(winston.format.errors({
20
26
  stack: true
21
27
  }), winston.format.splat());
22
- transports = [
23
- new winston.transports.Console({
24
- format: winston.format.combine(winston.format.colorize(), winston.format.printf(({ level, message })=>{
25
- return `${level}: ${message}`;
26
- }))
27
- })
28
- ];
29
28
  }
30
- return winston.createLogger({
29
+ return winston.format.combine(winston.format.timestamp({
30
+ format: DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS
31
+ }), winston.format.errors({
32
+ stack: true
33
+ }), winston.format.splat(), winston.format.json());
34
+ };
35
+ // Create the logger instance once
36
+ const logger = winston.createLogger({
37
+ level: 'info',
38
+ format: createFormat('info'),
39
+ defaultMeta: {
40
+ service: PROGRAM_NAME
41
+ },
42
+ transports: createTransports('info')
43
+ });
44
+ const setLogLevel = (level)=>{
45
+ // Reconfigure the existing logger instead of creating a new one
46
+ logger.configure({
31
47
  level,
32
- format,
48
+ format: createFormat(level),
33
49
  defaultMeta: {
34
50
  service: PROGRAM_NAME
35
51
  },
36
- transports
52
+ transports: createTransports(level)
37
53
  });
38
54
  };
39
- let logger = createLogger();
40
- const setLogLevel = (level)=>{
41
- logger = createLogger(level);
42
- };
43
55
  const getLogger = ()=>logger;
44
56
 
45
57
  export { getLogger, setLogLevel };