@codluv/versionguard 0.3.0 → 0.5.0

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 (54) hide show
  1. package/dist/calver.d.ts +66 -22
  2. package/dist/calver.d.ts.map +1 -1
  3. package/dist/changelog.d.ts +52 -0
  4. package/dist/changelog.d.ts.map +1 -1
  5. package/dist/chunks/{index-BrZJDWya.js → index-CwOyEn5L.js} +904 -176
  6. package/dist/chunks/index-CwOyEn5L.js.map +1 -0
  7. package/dist/ckm/engine.d.ts +92 -0
  8. package/dist/ckm/engine.d.ts.map +1 -0
  9. package/dist/ckm/index.d.ts +32 -0
  10. package/dist/ckm/index.d.ts.map +1 -0
  11. package/dist/ckm/types.d.ts +168 -0
  12. package/dist/ckm/types.d.ts.map +1 -0
  13. package/dist/cli.d.ts.map +1 -1
  14. package/dist/cli.js +1333 -27
  15. package/dist/cli.js.map +1 -1
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/feedback/index.d.ts +1 -1
  18. package/dist/feedback/index.d.ts.map +1 -1
  19. package/dist/fix/index.d.ts +6 -1
  20. package/dist/fix/index.d.ts.map +1 -1
  21. package/dist/guard.d.ts +45 -1
  22. package/dist/guard.d.ts.map +1 -1
  23. package/dist/hooks.d.ts +14 -7
  24. package/dist/hooks.d.ts.map +1 -1
  25. package/dist/index.d.ts +4 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +38 -32
  28. package/dist/init-wizard.d.ts +68 -0
  29. package/dist/init-wizard.d.ts.map +1 -0
  30. package/dist/project-root.d.ts +74 -0
  31. package/dist/project-root.d.ts.map +1 -0
  32. package/dist/project.d.ts +23 -2
  33. package/dist/project.d.ts.map +1 -1
  34. package/dist/sources/git-tag.d.ts +29 -0
  35. package/dist/sources/git-tag.d.ts.map +1 -1
  36. package/dist/sources/json.d.ts +31 -0
  37. package/dist/sources/json.d.ts.map +1 -1
  38. package/dist/sources/regex.d.ts +30 -0
  39. package/dist/sources/regex.d.ts.map +1 -1
  40. package/dist/sources/resolve.d.ts +27 -8
  41. package/dist/sources/resolve.d.ts.map +1 -1
  42. package/dist/sources/toml.d.ts +36 -1
  43. package/dist/sources/toml.d.ts.map +1 -1
  44. package/dist/sources/utils.d.ts +73 -0
  45. package/dist/sources/utils.d.ts.map +1 -0
  46. package/dist/sources/version-file.d.ts +28 -1
  47. package/dist/sources/version-file.d.ts.map +1 -1
  48. package/dist/sources/yaml.d.ts +29 -0
  49. package/dist/sources/yaml.d.ts.map +1 -1
  50. package/dist/tag/index.d.ts.map +1 -1
  51. package/dist/types.d.ts +89 -4
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +3 -2
  54. package/dist/chunks/index-BrZJDWya.js.map +0 -1
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport chalk from 'chalk';\nimport { Command } from 'commander';\n\nconst CLI_DIR = path.dirname(fileURLToPath(import.meta.url));\nconst CLI_VERSION: string = (\n JSON.parse(fs.readFileSync(path.join(CLI_DIR, '..', 'package.json'), 'utf-8')) as {\n version: string;\n }\n).version;\n\nimport * as feedback from './feedback';\nimport * as fix from './fix';\nimport * as guard from './guard';\nimport * as versionguard from './index';\nimport * as project from './project';\nimport * as tag from './tag';\n\nconst styles = {\n error: chalk.red,\n warning: chalk.yellow,\n success: chalk.green,\n info: chalk.blue,\n dim: chalk.gray,\n bold: chalk.bold,\n};\n\n/**\n * Creates the VersionGuard CLI program definition.\n *\n * @public\n * @since 0.1.0\n * @remarks\n * This function wires all commands, options, and handlers onto a fresh Commander\n * program instance without parsing arguments yet.\n *\n * @returns A configured Commander program for the VersionGuard CLI.\n *\n * @example\n * ```typescript\n * const program = createProgram();\n * console.log(program.name());\n * ```\n */\nexport function createProgram(): Command {\n const program = new Command();\n\n program\n .name('versionguard')\n .description('Strict versioning enforcement for SemVer and CalVer')\n .version(CLI_VERSION);\n\n program\n .command('init')\n .description('Initialize VersionGuard configuration')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .action((options: { cwd: string }) => {\n try {\n const configPath = versionguard.initConfig(options.cwd);\n console.log(styles.success(`✓ Created ${path.relative(options.cwd, configPath)}`));\n\n // Auto-install hooks using the newly created config\n try {\n const config = versionguard.getConfig(options.cwd);\n versionguard.installHooks(config.git, options.cwd);\n console.log(styles.success('✓ Git hooks installed'));\n } catch {\n // Non-fatal: hooks install may fail in non-git environments\n console.log(\n styles.info('ℹ Skipped hooks install (not a git repository or hooks disabled)'),\n );\n }\n\n console.log('');\n console.log(styles.info('Next steps:'));\n console.log(' 1. Edit .versionguard.yml to set your versioning type');\n console.log(' 2. Run: npx versionguard check');\n console.log('');\n console.log(\n styles.info('Tip: Add a prepare script to package.json for clone persistence:'),\n );\n console.log(' \"prepare\": \"npx versionguard hooks install\"');\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n program\n .command('check')\n .description('Check the current version with actionable feedback')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .option('--prev <version>', 'Previous version for comparison')\n .option('--json', 'Print machine-readable JSON output')\n .action((options: { cwd: string; prev?: string; json?: boolean }) => {\n try {\n const config = versionguard.getConfig(options.cwd);\n const version = versionguard.getPackageVersion(options.cwd, config.manifest);\n const result = feedback.getVersionFeedback(version, config, options.prev);\n\n if (options.json) {\n console.log(\n JSON.stringify(\n {\n version,\n versioningType: config.versioning.type,\n valid: result.valid,\n errors: result.errors,\n suggestions: result.suggestions,\n },\n null,\n 2,\n ),\n );\n if (!result.valid) {\n process.exit(1);\n }\n return;\n }\n\n console.log(styles.bold(`Current version: ${version}`));\n console.log(styles.dim(`Versioning type: ${config.versioning.type}`));\n console.log('');\n\n if (result.valid) {\n console.log(styles.success('✓ Version is valid'));\n return;\n }\n\n console.log(styles.error('✗ Version has issues:'));\n console.log('');\n for (const error of result.errors) {\n console.log(styles.error(` ✗ ${error.message}`));\n }\n if (result.suggestions.length > 0) {\n console.log('');\n console.log(styles.info('How to fix:'));\n for (const suggestion of result.suggestions) {\n console.log(` → ${suggestion.message}`);\n if (suggestion.fix) {\n console.log(styles.dim(` Run: ${suggestion.fix}`));\n }\n }\n }\n process.exit(1);\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n program\n .command('validate')\n .description('Run full validation with smart feedback')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .option('--hook <name>', 'Running as git hook')\n .option('--json', 'Print machine-readable JSON output')\n .option('--strict', 'Run guard checks and fail on any policy gap or bypass')\n .action((options: { cwd: string; hook?: string; json?: boolean; strict?: boolean }) => {\n try {\n const config = versionguard.getConfig(options.cwd);\n const version = versionguard.getPackageVersion(options.cwd, config.manifest);\n const result = versionguard.validate(config, options.cwd);\n\n let postTagResult: { success: boolean; message: string; actions: string[] } | undefined;\n let guardReport: guard.GuardReport | undefined;\n\n if (options.hook === 'post-tag') {\n postTagResult = tag.handlePostTag(config, options.cwd);\n }\n\n if (options.strict) {\n guardReport = guard.runGuardChecks(config, options.cwd);\n }\n\n if (options.json) {\n console.log(\n JSON.stringify(\n {\n ...result,\n hook: options.hook ?? null,\n postTag: postTagResult ?? null,\n guard: guardReport ?? null,\n },\n null,\n 2,\n ),\n );\n\n if (\n !result.valid ||\n (postTagResult && !postTagResult.success) ||\n (guardReport && !guardReport.safe)\n ) {\n process.exit(1);\n }\n\n return;\n }\n\n console.log(styles.bold(`Validating version ${version}...`));\n console.log('');\n\n if (!result.syncValid) {\n console.log(styles.error('Sync Issues:'));\n for (const error of result.errors.filter((item) => item.includes('mismatch'))) {\n const parts = error.match(\n /Version mismatch in (.+):(\\d+) - found \"(.+?)\" but expected \"(.+?)\"/,\n );\n if (!parts) {\n continue;\n }\n const suggestions = feedback.getSyncFeedback(parts[1], parts[3], parts[4]);\n console.log(styles.error(` ✗ ${parts[1]} has wrong version`));\n console.log(styles.dim(` Found: \"${parts[3]}\" Expected: \"${parts[4]}\"`));\n if (suggestions[0]?.fix) {\n console.log(styles.info(` Fix: ${suggestions[0].fix}`));\n }\n }\n console.log('');\n }\n\n if (config.changelog.enabled && !result.changelogValid) {\n console.log(styles.error('Changelog Issues:'));\n for (const error of result.errors.filter((item) =>\n item.toLowerCase().includes('changelog'),\n )) {\n console.log(styles.error(` ✗ ${error}`));\n }\n const suggestions = feedback.getChangelogFeedback(false, version);\n if (suggestions[0]?.fix) {\n console.log(styles.info(`Fix: ${suggestions[0].fix}`));\n }\n console.log('');\n }\n\n if (postTagResult) {\n if (!postTagResult.success) {\n console.log(styles.error(`✗ ${postTagResult.message}`));\n process.exit(1);\n }\n }\n\n if (guardReport && guardReport.warnings.length > 0) {\n console.log(styles.bold('Guard Checks:'));\n for (const warning of guardReport.warnings) {\n const icon = warning.severity === 'error' ? styles.error('✗') : styles.warning('⚠');\n console.log(` ${icon} [${warning.code}] ${warning.message}`);\n if (warning.fix) {\n console.log(styles.dim(` Fix: ${warning.fix}`));\n }\n }\n console.log('');\n }\n\n if (!result.valid || (guardReport && !guardReport.safe)) {\n console.log(styles.error('✗ Validation failed'));\n process.exit(1);\n }\n\n console.log(styles.success('✓ All validations passed'));\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n program\n .command('doctor')\n .description('Report repository readiness in one pass')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .option('--json', 'Print machine-readable JSON output')\n .option('--strict', 'Include guard checks for bypass detection')\n .action((options: { cwd: string; json?: boolean; strict?: boolean }) => {\n try {\n const config = versionguard.getConfig(options.cwd);\n const report = versionguard.doctor(config, options.cwd);\n const guardReport = options.strict ? guard.runGuardChecks(config, options.cwd) : undefined;\n\n if (options.json) {\n console.log(JSON.stringify({ ...report, guard: guardReport ?? null }, null, 2));\n if (!report.ready || (guardReport && !guardReport.safe)) {\n process.exit(1);\n }\n return;\n }\n\n console.log(styles.bold('VersionGuard Doctor'));\n console.log(` Version: ${report.version || '(missing)'}`);\n console.log(` Version valid: ${report.versionValid ? 'yes' : 'no'}`);\n console.log(` Files in sync: ${report.syncValid ? 'yes' : 'no'}`);\n console.log(` Changelog ready: ${report.changelogValid ? 'yes' : 'no'}`);\n console.log(` Git repository: ${report.gitRepository ? 'yes' : 'no'}`);\n console.log(\n ` Hooks installed: ${report.gitRepository ? (report.hooksInstalled ? 'yes' : 'no') : 'n/a'}`,\n );\n console.log(\n ` Worktree clean: ${report.gitRepository ? (report.worktreeClean ? 'yes' : 'no') : 'n/a'}`,\n );\n\n if (guardReport) {\n console.log(` Guard safe: ${guardReport.safe ? 'yes' : 'no'}`);\n }\n\n if (!report.ready || (guardReport && !guardReport.safe)) {\n console.log('');\n console.log(styles.error('Issues:'));\n for (const error of report.errors) {\n console.log(styles.error(` ✗ ${error}`));\n }\n if (guardReport) {\n for (const warning of guardReport.warnings) {\n const icon = warning.severity === 'error' ? '✗' : '⚠';\n console.log(styles.error(` ${icon} [${warning.code}] ${warning.message}`));\n if (warning.fix) {\n console.log(styles.dim(` Fix: ${warning.fix}`));\n }\n }\n }\n process.exit(1);\n }\n\n console.log('');\n console.log(styles.success('✓ Repository is ready'));\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n program\n .command('fix')\n .description('Auto-fix detected issues')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .action((options: { cwd: string }) => {\n try {\n const config = versionguard.getConfig(options.cwd);\n const version = versionguard.getPackageVersion(options.cwd, config.manifest);\n const results = fix.fixAll(config, version, options.cwd);\n\n console.log(styles.bold(`Fixing issues for version ${version}...`));\n console.log('');\n\n for (const result of results) {\n const printer = result.fixed ? styles.success : styles.dim;\n console.log(printer(`${result.fixed ? '✓' : '•'} ${result.message}`));\n }\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n program\n .command('sync')\n .description('Sync version to all configured files')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .action((options: { cwd: string }) => {\n try {\n const config = versionguard.getConfig(options.cwd);\n const version = versionguard.getPackageVersion(options.cwd, config.manifest);\n const results = fix.fixSyncIssues(config, options.cwd);\n\n console.log(styles.bold(`Syncing version ${version}...`));\n for (const result of results) {\n const printer = result.fixed ? styles.success : styles.dim;\n console.log(printer(`${result.fixed ? '✓' : '•'} ${result.message}`));\n }\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n program\n .command('bump')\n .description('Suggest and optionally apply the next version')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .option('-t, --type <type>', 'Bump type (major, minor, patch, auto)')\n .option('--apply', 'Apply the first suggested version')\n .action(\n (options: { cwd: string; type?: 'major' | 'minor' | 'patch' | 'auto'; apply?: boolean }) => {\n try {\n const config = versionguard.getConfig(options.cwd);\n const currentVersion = versionguard.getPackageVersion(options.cwd, config.manifest);\n const suggestions = fix.suggestNextVersion(currentVersion, config, options.type);\n\n console.log(styles.bold(`Current version: ${currentVersion}`));\n console.log('');\n for (const [index, suggestion] of suggestions.entries()) {\n console.log(` ${index + 1}. ${styles.bold(suggestion.version)}`);\n console.log(` ${styles.dim(suggestion.reason)}`);\n }\n\n if (options.apply) {\n const nextVersion = suggestions[0]?.version;\n if (!nextVersion) {\n throw new Error('No version suggestion available');\n }\n project.setPackageVersion(nextVersion, options.cwd, config.manifest);\n fix.fixAll(config, nextVersion, options.cwd);\n console.log(styles.success(`✓ Updated to ${nextVersion}`));\n }\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n },\n );\n\n program\n .command('tag')\n .description('Create a git tag with automation')\n .argument('[version]', 'Version to tag (defaults to manifest version)')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .option('-m, --message <msg>', 'Tag message')\n .option('--no-fix', 'Skip auto-fixing files before tagging')\n .action(\n (version: string | undefined, options: { cwd: string; message?: string; fix?: boolean }) => {\n try {\n const config = versionguard.getConfig(options.cwd);\n const tagVersion =\n version || versionguard.getPackageVersion(options.cwd, config.manifest);\n const result = tag.createTag(\n tagVersion,\n options.message,\n options.fix !== false,\n config,\n options.cwd,\n );\n\n if (!result.success) {\n console.log(styles.error(`✗ ${result.message}`));\n process.exit(1);\n }\n\n console.log(styles.success(`✓ ${result.message}`));\n for (const action of result.actions) {\n console.log(` • ${action}`);\n }\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n },\n );\n\n const hooksCommand = program.command('hooks').description('Manage git hooks');\n\n hooksCommand\n .command('install')\n .description('Install git hooks')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .action((options: { cwd: string }) => {\n try {\n const config = versionguard.getConfig(options.cwd);\n versionguard.installHooks(config.git, options.cwd);\n console.log(styles.success('✓ Git hooks installed'));\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n hooksCommand\n .command('uninstall')\n .description('Uninstall git hooks')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .action((options: { cwd: string }) => {\n try {\n versionguard.uninstallHooks(options.cwd);\n console.log(styles.success('✓ Git hooks uninstalled'));\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n hooksCommand\n .command('status')\n .description('Check if hooks are installed')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .action((options: { cwd: string }) => {\n try {\n if (versionguard.areHooksInstalled(options.cwd)) {\n console.log(styles.success('✓ VersionGuard hooks are installed'));\n return;\n }\n\n console.log(styles.warning('✗ VersionGuard hooks are not installed'));\n process.exit(1);\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n return program;\n}\n\n/**\n * Parses CLI arguments and executes the matching command.\n *\n * @public\n * @since 0.1.0\n * @remarks\n * This helper delegates argument parsing to the Commander program created by\n * {@link createProgram}. It resolves when the selected command finishes.\n *\n * @param argv - Full argument vector to parse.\n * @see {@link createProgram}\n *\n * @example\n * ```typescript\n * const argv = ['node', 'versionguard', 'check'];\n * await runCli(argv);\n * ```\n */\nexport async function runCli(argv: string[] = process.argv): Promise<void> {\n await createProgram().parseAsync(argv);\n}\n\n/**\n * Determines whether the current module is the invoked CLI entry point.\n *\n * @public\n * @since 0.1.0\n * @remarks\n * This helper compares the resolved script path from `argv` with the current\n * module URL so the CLI runs only during direct execution.\n *\n * @param argv - Full process argument vector.\n * @param metaUrl - Module URL to compare against the invoked entry path.\n * @returns `true` when the current module should launch the CLI.\n *\n * @example\n * ```typescript\n * const shouldRun = shouldRunCli(process.argv, import.meta.url);\n * console.log(shouldRun);\n * ```\n */\nexport function shouldRunCli(\n argv: string[] = process.argv,\n metaUrl: string = import.meta.url,\n): boolean {\n const entryPath = argv[1] ? path.resolve(argv[1]) : null;\n return entryPath === fileURLToPath(metaUrl);\n}\n\n/* v8 ignore start -- exercised only by direct CLI execution */\nif (shouldRunCli()) {\n void runCli();\n}\n/* v8 ignore stop */\n"],"names":["versionguard.initConfig","versionguard.getConfig","versionguard.installHooks","versionguard.getPackageVersion","feedback.getVersionFeedback","versionguard.validate","tag.handlePostTag","guard.runGuardChecks","feedback.getSyncFeedback","feedback.getChangelogFeedback","versionguard.doctor","fix.fixAll","fix.fixSyncIssues","fix.suggestNextVersion","project.setPackageVersion","tag.createTag","versionguard.uninstallHooks","versionguard.areHooksInstalled"],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sources":["../docs/ckm.json?raw","../docs/llms.txt?raw","../src/init-wizard.ts","../src/cli.ts"],"sourcesContent":["export default \"{\\n \\\"$schema\\\": \\\"https://forge-ts.dev/schemas/ckm/v1.json\\\",\\n \\\"version\\\": \\\"1.0.0\\\",\\n \\\"project\\\": \\\"@codluv/versionguard\\\",\\n \\\"generated\\\": \\\"2026-03-26T15:45:30.788Z\\\",\\n \\\"concepts\\\": [\\n {\\n \\\"id\\\": \\\"concept-ManifestConfig\\\",\\n \\\"name\\\": \\\"ManifestConfig\\\",\\n \\\"what\\\": \\\"Configures the version source manifest.\\\",\\n \\\"properties\\\": [\\n {\\n \\\"name\\\": \\\"source\\\",\\n \\\"type\\\": \\\"ManifestSourceType\\\",\\n \\\"description\\\": \\\"Manifest file to read the version from. Use `'auto'` for file-existence detection or a specific filename.\\\"\\n },\\n {\\n \\\"name\\\": \\\"path\\\",\\n \\\"type\\\": \\\"string | undefined\\\",\\n \\\"description\\\": \\\"Dotted key path to the version field within the manifest. For example `'version'` for package.json, `'package.version'` for Cargo.toml, or `'project.version'` for pyproject.toml.\\\"\\n },\\n {\\n \\\"name\\\": \\\"regex\\\",\\n \\\"type\\\": \\\"string | undefined\\\",\\n \\\"description\\\": \\\"Regex pattern to extract the version from source-code manifests. Capture group 1 must contain the version string.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"concept-CalVerConfig\\\",\\n \\\"name\\\": \\\"CalVerConfig\\\",\\n \\\"what\\\": \\\"Configures CalVer validation rules.\\\",\\n \\\"properties\\\": [\\n {\\n \\\"name\\\": \\\"format\\\",\\n \\\"type\\\": \\\"CalVerFormat\\\",\\n \\\"description\\\": \\\"Calendar format used when parsing and validating versions.\\\"\\n },\\n {\\n \\\"name\\\": \\\"preventFutureDates\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Rejects versions that point to a future date.\\\"\\n },\\n {\\n \\\"name\\\": \\\"strictMutualExclusion\\\",\\n \\\"type\\\": \\\"boolean | undefined\\\",\\n \\\"description\\\": \\\"Enforces that week tokens (WW/0W) cannot be mixed with month/day tokens.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"concept-SyncConfig\\\",\\n \\\"name\\\": \\\"SyncConfig\\\",\\n \\\"what\\\": \\\"Configures files and patterns that should stay in sync with the canonical version.\\\",\\n \\\"properties\\\": [\\n {\\n \\\"name\\\": \\\"files\\\",\\n \\\"type\\\": \\\"string[]\\\",\\n \\\"description\\\": \\\"File globs or paths that should be scanned for version updates.\\\"\\n },\\n {\\n \\\"name\\\": \\\"patterns\\\",\\n \\\"type\\\": \\\"SyncPattern[]\\\",\\n \\\"description\\\": \\\"Replacement patterns applied to matching files.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"concept-ChangelogConfig\\\",\\n \\\"name\\\": \\\"ChangelogConfig\\\",\\n \\\"what\\\": \\\"Controls changelog validation behavior.\\\",\\n \\\"properties\\\": [\\n {\\n \\\"name\\\": \\\"enabled\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Enables changelog validation.\\\"\\n },\\n {\\n \\\"name\\\": \\\"file\\\",\\n \\\"type\\\": \\\"string\\\",\\n \\\"description\\\": \\\"Path to the changelog file to inspect.\\\"\\n },\\n {\\n \\\"name\\\": \\\"strict\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Treats changelog problems as hard failures.\\\"\\n },\\n {\\n \\\"name\\\": \\\"requireEntry\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Requires an entry for the current version.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"concept-GitHooksConfig\\\",\\n \\\"name\\\": \\\"GitHooksConfig\\\",\\n \\\"what\\\": \\\"Toggles each supported git hook integration.\\\",\\n \\\"properties\\\": [\\n {\\n \\\"name\\\": \\\"'pre-commit'\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Enables validation during the `pre-commit` hook.\\\"\\n },\\n {\\n \\\"name\\\": \\\"'pre-push'\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Enables validation during the `pre-push` hook.\\\"\\n },\\n {\\n \\\"name\\\": \\\"'post-tag'\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Enables follow-up tasks after a tag is created.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"concept-GitConfig\\\",\\n \\\"name\\\": \\\"GitConfig\\\",\\n \\\"what\\\": \\\"Configures git-related enforcement.\\\",\\n \\\"properties\\\": [\\n {\\n \\\"name\\\": \\\"hooks\\\",\\n \\\"type\\\": \\\"GitHooksConfig\\\",\\n \\\"description\\\": \\\"Hook toggles used by the CLI and validation workflow.\\\"\\n },\\n {\\n \\\"name\\\": \\\"enforceHooks\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Fails validation when required hooks are missing.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"concept-VersioningConfig\\\",\\n \\\"name\\\": \\\"VersioningConfig\\\",\\n \\\"what\\\": \\\"Configures the active versioning mode.\\\",\\n \\\"properties\\\": [\\n {\\n \\\"name\\\": \\\"type\\\",\\n \\\"type\\\": \\\"VersioningType\\\",\\n \\\"description\\\": \\\"Versioning strategy used for the project.\\\"\\n },\\n {\\n \\\"name\\\": \\\"schemeRules\\\",\\n \\\"type\\\": \\\"SchemeRules | undefined\\\",\\n \\\"description\\\": \\\"Scheme-level validation rules applied regardless of versioning type.\\\"\\n },\\n {\\n \\\"name\\\": \\\"calver\\\",\\n \\\"type\\\": \\\"CalVerConfig | undefined\\\",\\n \\\"description\\\": \\\"CalVer-specific settings when `type` is `'calver'`.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"concept-VersionGuardConfig\\\",\\n \\\"name\\\": \\\"VersionGuardConfig\\\",\\n \\\"what\\\": \\\"Top-level configuration consumed by versionguard.\\\",\\n \\\"properties\\\": [\\n {\\n \\\"name\\\": \\\"versioning\\\",\\n \\\"type\\\": \\\"VersioningConfig\\\",\\n \\\"description\\\": \\\"Active versioning settings.\\\"\\n },\\n {\\n \\\"name\\\": \\\"manifest\\\",\\n \\\"type\\\": \\\"ManifestConfig\\\",\\n \\\"description\\\": \\\"Version source manifest settings.\\\"\\n },\\n {\\n \\\"name\\\": \\\"sync\\\",\\n \\\"type\\\": \\\"SyncConfig\\\",\\n \\\"description\\\": \\\"Synchronization settings for mirrored version strings.\\\"\\n },\\n {\\n \\\"name\\\": \\\"changelog\\\",\\n \\\"type\\\": \\\"ChangelogConfig\\\",\\n \\\"description\\\": \\\"Changelog validation settings.\\\"\\n },\\n {\\n \\\"name\\\": \\\"git\\\",\\n \\\"type\\\": \\\"GitConfig\\\",\\n \\\"description\\\": \\\"Git enforcement settings.\\\"\\n },\\n {\\n \\\"name\\\": \\\"ignore\\\",\\n \\\"type\\\": \\\"string[]\\\",\\n \\\"description\\\": \\\"Files or patterns excluded from validation.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"concept-ValidationResult\\\",\\n \\\"name\\\": \\\"ValidationResult\\\",\\n \\\"what\\\": \\\"Result returned by version parsing and validation helpers.\\\",\\n \\\"properties\\\": [\\n {\\n \\\"name\\\": \\\"valid\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Indicates whether validation completed without errors.\\\"\\n },\\n {\\n \\\"name\\\": \\\"errors\\\",\\n \\\"type\\\": \\\"ValidationError[]\\\",\\n \\\"description\\\": \\\"Collected validation issues.\\\"\\n },\\n {\\n \\\"name\\\": \\\"version\\\",\\n \\\"type\\\": \\\"ParsedVersion | undefined\\\",\\n \\\"description\\\": \\\"Parsed version details when validation succeeds.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"concept-SyncResult\\\",\\n \\\"name\\\": \\\"SyncResult\\\",\\n \\\"what\\\": \\\"Reports the result of synchronizing a single file.\\\",\\n \\\"properties\\\": [\\n {\\n \\\"name\\\": \\\"file\\\",\\n \\\"type\\\": \\\"string\\\",\\n \\\"description\\\": \\\"File that was inspected or updated.\\\"\\n },\\n {\\n \\\"name\\\": \\\"updated\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Indicates whether the file content changed.\\\"\\n },\\n {\\n \\\"name\\\": \\\"changes\\\",\\n \\\"type\\\": \\\"SyncChange[]\\\",\\n \\\"description\\\": \\\"Detailed replacements applied within the file.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"concept-FullValidationResult\\\",\\n \\\"name\\\": \\\"FullValidationResult\\\",\\n \\\"what\\\": \\\"Combined result from a full project validation run.\\\",\\n \\\"properties\\\": [\\n {\\n \\\"name\\\": \\\"valid\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Indicates whether all checks passed.\\\"\\n },\\n {\\n \\\"name\\\": \\\"version\\\",\\n \\\"type\\\": \\\"string\\\",\\n \\\"description\\\": \\\"Canonical version string used for validation.\\\"\\n },\\n {\\n \\\"name\\\": \\\"versionValid\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Indicates whether the root version string is valid.\\\"\\n },\\n {\\n \\\"name\\\": \\\"syncValid\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Indicates whether synchronized files are in sync.\\\"\\n },\\n {\\n \\\"name\\\": \\\"changelogValid\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Indicates whether changelog checks passed.\\\"\\n },\\n {\\n \\\"name\\\": \\\"errors\\\",\\n \\\"type\\\": \\\"string[]\\\",\\n \\\"description\\\": \\\"Human-readable validation failures collected during the run.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"concept-ChangelogValidationResult\\\",\\n \\\"name\\\": \\\"ChangelogValidationResult\\\",\\n \\\"what\\\": \\\"Describes the outcome of validating a changelog file.\\\",\\n \\\"properties\\\": [\\n {\\n \\\"name\\\": \\\"valid\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Indicates whether the changelog satisfies all requested checks.\\\"\\n },\\n {\\n \\\"name\\\": \\\"errors\\\",\\n \\\"type\\\": \\\"string[]\\\",\\n \\\"description\\\": \\\"Human-readable validation errors.\\\"\\n },\\n {\\n \\\"name\\\": \\\"hasEntryForVersion\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Indicates whether the changelog contains an entry for the requested version.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"concept-FeedbackResult\\\",\\n \\\"name\\\": \\\"FeedbackResult\\\",\\n \\\"what\\\": \\\"Aggregates validation errors with suggested next steps.\\\",\\n \\\"properties\\\": [\\n {\\n \\\"name\\\": \\\"valid\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Indicates whether the inspected version state is valid.\\\"\\n },\\n {\\n \\\"name\\\": \\\"errors\\\",\\n \\\"type\\\": \\\"ValidationError[]\\\",\\n \\\"description\\\": \\\"Validation errors collected during the check.\\\"\\n },\\n {\\n \\\"name\\\": \\\"suggestions\\\",\\n \\\"type\\\": \\\"Suggestion[]\\\",\\n \\\"description\\\": \\\"Suggested next steps for resolving the reported issues.\\\"\\n },\\n {\\n \\\"name\\\": \\\"canAutoFix\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Indicates whether at least one suggestion can be auto-applied.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"concept-FixResult\\\",\\n \\\"name\\\": \\\"FixResult\\\",\\n \\\"what\\\": \\\"Fix entry point exports for auto-remediation helpers.\\\",\\n \\\"properties\\\": [\\n {\\n \\\"name\\\": \\\"fixed\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Indicates whether the operation changed repository state.\\\"\\n },\\n {\\n \\\"name\\\": \\\"message\\\",\\n \\\"type\\\": \\\"string\\\",\\n \\\"description\\\": \\\"Human-readable description of the fix attempt.\\\"\\n },\\n {\\n \\\"name\\\": \\\"file\\\",\\n \\\"type\\\": \\\"string | undefined\\\",\\n \\\"description\\\": \\\"Absolute path to the file that was updated, when applicable.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"concept-ProjectRootResult\\\",\\n \\\"name\\\": \\\"ProjectRootResult\\\",\\n \\\"what\\\": \\\"Result of project root detection.\\\",\\n \\\"properties\\\": [\\n {\\n \\\"name\\\": \\\"found\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Whether a project root was found.\\\"\\n },\\n {\\n \\\"name\\\": \\\"root\\\",\\n \\\"type\\\": \\\"string\\\",\\n \\\"description\\\": \\\"The resolved project root directory, or the original cwd if not found.\\\"\\n },\\n {\\n \\\"name\\\": \\\"marker\\\",\\n \\\"type\\\": \\\"string | undefined\\\",\\n \\\"description\\\": \\\"Which marker file was found.\\\"\\n },\\n {\\n \\\"name\\\": \\\"hasConfig\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Whether the directory has a VersionGuard config.\\\"\\n },\\n {\\n \\\"name\\\": \\\"hasGit\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Whether the directory is inside a git repository.\\\"\\n },\\n {\\n \\\"name\\\": \\\"hasManifest\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Whether a version manifest file exists.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"concept-InitOptions\\\",\\n \\\"name\\\": \\\"InitOptions\\\",\\n \\\"what\\\": \\\"Options for headless (non-interactive) initialization.\\\",\\n \\\"properties\\\": [\\n {\\n \\\"name\\\": \\\"cwd\\\",\\n \\\"type\\\": \\\"string\\\",\\n \\\"description\\\": \\\"Working directory path.\\\"\\n },\\n {\\n \\\"name\\\": \\\"type\\\",\\n \\\"type\\\": \\\"\\\\\\\"semver\\\\\\\" | \\\\\\\"calver\\\\\\\" | undefined\\\",\\n \\\"description\\\": \\\"Versioning type (semver or calver).\\\"\\n },\\n {\\n \\\"name\\\": \\\"format\\\",\\n \\\"type\\\": \\\"string | undefined\\\",\\n \\\"description\\\": \\\"CalVer format string.\\\"\\n },\\n {\\n \\\"name\\\": \\\"manifest\\\",\\n \\\"type\\\": \\\"string | undefined\\\",\\n \\\"description\\\": \\\"Manifest source type.\\\"\\n },\\n {\\n \\\"name\\\": \\\"hooks\\\",\\n \\\"type\\\": \\\"boolean | undefined\\\",\\n \\\"description\\\": \\\"Whether to install git hooks.\\\"\\n },\\n {\\n \\\"name\\\": \\\"changelog\\\",\\n \\\"type\\\": \\\"boolean | undefined\\\",\\n \\\"description\\\": \\\"Whether to enable changelog validation.\\\"\\n },\\n {\\n \\\"name\\\": \\\"yes\\\",\\n \\\"type\\\": \\\"boolean | undefined\\\",\\n \\\"description\\\": \\\"Accept defaults without prompting.\\\"\\n },\\n {\\n \\\"name\\\": \\\"force\\\",\\n \\\"type\\\": \\\"boolean | undefined\\\",\\n \\\"description\\\": \\\"Overwrite existing config.\\\"\\n }\\n ]\\n }\\n ],\\n \\\"operations\\\": [\\n {\\n \\\"id\\\": \\\"op-validate\\\",\\n \\\"name\\\": \\\"validate\\\",\\n \\\"what\\\": \\\"Validates a CalVer string against formatting and date rules.\\\",\\n \\\"inputs\\\": [\\n {\\n \\\"name\\\": \\\"version\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Version string to validate.\\\"\\n },\\n {\\n \\\"name\\\": \\\"calverFormat\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Format expected for the version string.\\\"\\n },\\n {\\n \\\"name\\\": \\\"preventFutureDates\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Whether future dates should be reported as errors.\\\"\\n },\\n {\\n \\\"name\\\": \\\"schemeRules\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Optional scheme rules for modifier validation and segment count warnings.\\\"\\n }\\n ],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"A validation result containing any discovered errors and the parsed version on success.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-validateChangelog\\\",\\n \\\"name\\\": \\\"validateChangelog\\\",\\n \\\"what\\\": \\\"Validates a changelog file for release readiness.\\\",\\n \\\"inputs\\\": [\\n {\\n \\\"name\\\": \\\"changelogPath\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Path to the changelog file.\\\"\\n },\\n {\\n \\\"name\\\": \\\"version\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Version that must be present in the changelog.\\\"\\n },\\n {\\n \\\"name\\\": \\\"strict\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Whether to require compare links and dated release headings.\\\"\\n },\\n {\\n \\\"name\\\": \\\"requireEntry\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Whether the requested version must already have an entry.\\\"\\n }\\n ],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"The result of validating the changelog file.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-checkHardcodedVersions\\\",\\n \\\"name\\\": \\\"checkHardcodedVersions\\\",\\n \\\"what\\\": \\\"Checks configured files for hardcoded version mismatches.\\\",\\n \\\"inputs\\\": [\\n {\\n \\\"name\\\": \\\"expectedVersion\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Version all matching entries should use.\\\"\\n },\\n {\\n \\\"name\\\": \\\"config\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Sync configuration describing files and replacement patterns.\\\"\\n },\\n {\\n \\\"name\\\": \\\"ignorePatterns\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Glob patterns to exclude while scanning.\\\"\\n },\\n {\\n \\\"name\\\": \\\"cwd\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Project directory used to resolve file globs.\\\"\\n }\\n ],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"A list of detected version mismatches.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-generateHookScript\\\",\\n \\\"name\\\": \\\"generateHookScript\\\",\\n \\\"what\\\": \\\"Generates the shell script content for a Git hook.\\\",\\n \\\"inputs\\\": [\\n {\\n \\\"name\\\": \\\"hookName\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Name of the Git hook to generate.\\\"\\n }\\n ],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"Executable shell script contents for the hook.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-checkHooksPathOverride\\\",\\n \\\"name\\\": \\\"checkHooksPathOverride\\\",\\n \\\"what\\\": \\\"Checks whether git hooks have been redirected away from the repository.\\\",\\n \\\"inputs\\\": [\\n {\\n \\\"name\\\": \\\"cwd\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Repository directory to inspect.\\\"\\n }\\n ],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"A guard warning when a hooksPath override is detected.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-checkHuskyBypass\\\",\\n \\\"name\\\": \\\"checkHuskyBypass\\\",\\n \\\"what\\\": \\\"Checks whether the HUSKY environment variable is disabling hooks.\\\",\\n \\\"inputs\\\": [],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"A guard warning when the HUSKY bypass is detected.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-checkHookIntegrity\\\",\\n \\\"name\\\": \\\"checkHookIntegrity\\\",\\n \\\"what\\\": \\\"Verifies that installed hook scripts match the expected content.\\\",\\n \\\"inputs\\\": [\\n {\\n \\\"name\\\": \\\"config\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"VersionGuard configuration that defines which hooks should exist.\\\"\\n },\\n {\\n \\\"name\\\": \\\"cwd\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Repository directory to inspect.\\\"\\n }\\n ],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"Guard warnings for each hook that has been tampered with.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-checkEnforceHooksPolicy\\\",\\n \\\"name\\\": \\\"checkEnforceHooksPolicy\\\",\\n \\\"what\\\": \\\"Checks whether hooks are configured as required but not enforced.\\\",\\n \\\"inputs\\\": [\\n {\\n \\\"name\\\": \\\"config\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"VersionGuard configuration to inspect.\\\"\\n }\\n ],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"A guard warning when hooks are enabled but not enforced.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-runGuardChecks\\\",\\n \\\"name\\\": \\\"runGuardChecks\\\",\\n \\\"what\\\": \\\"Runs all guard checks and returns a consolidated report.\\\",\\n \\\"inputs\\\": [\\n {\\n \\\"name\\\": \\\"config\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"VersionGuard configuration.\\\"\\n },\\n {\\n \\\"name\\\": \\\"cwd\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Repository directory to inspect.\\\"\\n }\\n ],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"A guard report with all findings.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-initConfig\\\",\\n \\\"name\\\": \\\"initConfig\\\",\\n \\\"what\\\": \\\"Initializes a new VersionGuard config file in a project.\\\",\\n \\\"inputs\\\": [\\n {\\n \\\"name\\\": \\\"cwd\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Project directory where the config should be created.\\\"\\n }\\n ],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"The path to the created config file.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-createTag\\\",\\n \\\"name\\\": \\\"createTag\\\",\\n \\\"what\\\": \\\"Creates a release tag and optionally fixes version state first.\\\",\\n \\\"inputs\\\": [\\n {\\n \\\"name\\\": \\\"version\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Version to embed in the new tag name.\\\"\\n },\\n {\\n \\\"name\\\": \\\"message\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Custom annotated tag message.\\\"\\n },\\n {\\n \\\"name\\\": \\\"autoFix\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Whether to auto-fix version mismatches before tagging.\\\"\\n },\\n {\\n \\\"name\\\": \\\"config\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Loaded VersionGuard configuration used for validation and fixes.\\\"\\n },\\n {\\n \\\"name\\\": \\\"cwd\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Repository directory where git commands should run.\\\"\\n }\\n ],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"The tagging outcome and any actions performed along the way.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-validateTagForPush\\\",\\n \\\"name\\\": \\\"validateTagForPush\\\",\\n \\\"what\\\": \\\"Validates that a local tag is safe to push to the default remote.\\\",\\n \\\"inputs\\\": [\\n {\\n \\\"name\\\": \\\"tagName\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Name of the tag to validate.\\\"\\n },\\n {\\n \\\"name\\\": \\\"cwd\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Repository directory where git commands should run.\\\"\\n }\\n ],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"A validation result with an optional suggested fix command.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-validateVersion\\\",\\n \\\"name\\\": \\\"validateVersion\\\",\\n \\\"what\\\": \\\"Validates a version string against the active versioning strategy.\\\",\\n \\\"inputs\\\": [\\n {\\n \\\"name\\\": \\\"version\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Version string to validate.\\\"\\n },\\n {\\n \\\"name\\\": \\\"config\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"VersionGuard configuration that selects the validation rules.\\\"\\n }\\n ],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"The validation result for the provided version.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-runWizard\\\",\\n \\\"name\\\": \\\"runWizard\\\",\\n \\\"what\\\": \\\"Runs the interactive setup wizard.\\\",\\n \\\"inputs\\\": [\\n {\\n \\\"name\\\": \\\"cwd\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Project directory to initialize.\\\"\\n }\\n ],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"The path to the created config file, or `null` if cancelled.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-runHeadless\\\",\\n \\\"name\\\": \\\"runHeadless\\\",\\n \\\"what\\\": \\\"Initializes VersionGuard non-interactively using CLI flags.\\\",\\n \\\"inputs\\\": [\\n {\\n \\\"name\\\": \\\"options\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Headless initialization options.\\\"\\n }\\n ],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"The path to the created config file.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-createProgram\\\",\\n \\\"name\\\": \\\"createProgram\\\",\\n \\\"what\\\": \\\"Creates the VersionGuard CLI program definition.\\\",\\n \\\"inputs\\\": [],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"A configured Commander program for the VersionGuard CLI.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-runCli\\\",\\n \\\"name\\\": \\\"runCli\\\",\\n \\\"what\\\": \\\"Parses CLI arguments and executes the matching command.\\\",\\n \\\"inputs\\\": [\\n {\\n \\\"name\\\": \\\"argv\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Full argument vector to parse.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"op-createTempProject\\\",\\n \\\"name\\\": \\\"createTempProject\\\",\\n \\\"what\\\": \\\"Creates a temporary project directory with a minimal `package.json` fixture.\\\",\\n \\\"inputs\\\": [],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"The absolute path to the temporary project directory.\\\"\\n }\\n },\\n {\\n \\\"id\\\": \\\"op-initGitRepo\\\",\\n \\\"name\\\": \\\"initGitRepo\\\",\\n \\\"what\\\": \\\"Initializes a git repository in a fixture directory with a first commit.\\\",\\n \\\"inputs\\\": [\\n {\\n \\\"name\\\": \\\"cwd\\\",\\n \\\"type\\\": \\\"unknown\\\",\\n \\\"required\\\": true,\\n \\\"description\\\": \\\"Absolute path to the fixture repository.\\\"\\n }\\n ]\\n },\\n {\\n \\\"id\\\": \\\"op-createBareRemote\\\",\\n \\\"name\\\": \\\"createBareRemote\\\",\\n \\\"what\\\": \\\"Creates a bare git repository to use as a remote in integration tests.\\\",\\n \\\"inputs\\\": [],\\n \\\"outputs\\\": {\\n \\\"text\\\": \\\"The absolute path to the new bare repository.\\\"\\n }\\n }\\n ],\\n \\\"constraints\\\": [],\\n \\\"workflows\\\": [],\\n \\\"configSchema\\\": [\\n {\\n \\\"key\\\": \\\"ManifestConfig.source\\\",\\n \\\"type\\\": \\\"ManifestSourceType\\\",\\n \\\"description\\\": \\\"Manifest file to read the version from. Use `'auto'` for file-existence detection or a specific filename.\\\",\\n \\\"default\\\": \\\"'auto'\\\"\\n },\\n {\\n \\\"key\\\": \\\"ManifestConfig.path\\\",\\n \\\"type\\\": \\\"string | undefined\\\",\\n \\\"description\\\": \\\"Dotted key path to the version field within the manifest. For example `'version'` for package.json, `'package.version'` for Cargo.toml, or `'project.version'` for pyproject.toml.\\\",\\n \\\"default\\\": \\\"undefined (uses the provider's built-in default)\\\"\\n },\\n {\\n \\\"key\\\": \\\"ManifestConfig.regex\\\",\\n \\\"type\\\": \\\"string | undefined\\\",\\n \\\"description\\\": \\\"Regex pattern to extract the version from source-code manifests. Capture group 1 must contain the version string.\\\",\\n \\\"default\\\": \\\"undefined\\\"\\n },\\n {\\n \\\"key\\\": \\\"CalVerConfig.format\\\",\\n \\\"type\\\": \\\"CalVerFormat\\\",\\n \\\"description\\\": \\\"Calendar format used when parsing and validating versions.\\\"\\n },\\n {\\n \\\"key\\\": \\\"CalVerConfig.preventFutureDates\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Rejects versions that point to a future date.\\\",\\n \\\"default\\\": \\\"true\\\"\\n },\\n {\\n \\\"key\\\": \\\"CalVerConfig.strictMutualExclusion\\\",\\n \\\"type\\\": \\\"boolean | undefined\\\",\\n \\\"description\\\": \\\"Enforces that week tokens (WW/0W) cannot be mixed with month/day tokens.\\\",\\n \\\"default\\\": \\\"true\\\"\\n },\\n {\\n \\\"key\\\": \\\"SyncConfig.files\\\",\\n \\\"type\\\": \\\"string[]\\\",\\n \\\"description\\\": \\\"File globs or paths that should be scanned for version updates.\\\"\\n },\\n {\\n \\\"key\\\": \\\"SyncConfig.patterns\\\",\\n \\\"type\\\": \\\"SyncPattern[]\\\",\\n \\\"description\\\": \\\"Replacement patterns applied to matching files.\\\"\\n },\\n {\\n \\\"key\\\": \\\"ChangelogConfig.enabled\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Enables changelog validation.\\\",\\n \\\"default\\\": \\\"false\\\"\\n },\\n {\\n \\\"key\\\": \\\"ChangelogConfig.file\\\",\\n \\\"type\\\": \\\"string\\\",\\n \\\"description\\\": \\\"Path to the changelog file to inspect.\\\"\\n },\\n {\\n \\\"key\\\": \\\"ChangelogConfig.strict\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Treats changelog problems as hard failures.\\\",\\n \\\"default\\\": \\\"false\\\"\\n },\\n {\\n \\\"key\\\": \\\"ChangelogConfig.requireEntry\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Requires an entry for the current version.\\\",\\n \\\"default\\\": \\\"false\\\"\\n },\\n {\\n \\\"key\\\": \\\"GitHooksConfig.'pre-commit'\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Enables validation during the `pre-commit` hook.\\\",\\n \\\"default\\\": \\\"false\\\"\\n },\\n {\\n \\\"key\\\": \\\"GitHooksConfig.'pre-push'\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Enables validation during the `pre-push` hook.\\\",\\n \\\"default\\\": \\\"false\\\"\\n },\\n {\\n \\\"key\\\": \\\"GitHooksConfig.'post-tag'\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Enables follow-up tasks after a tag is created.\\\",\\n \\\"default\\\": \\\"false\\\"\\n },\\n {\\n \\\"key\\\": \\\"GitConfig.hooks\\\",\\n \\\"type\\\": \\\"GitHooksConfig\\\",\\n \\\"description\\\": \\\"Hook toggles used by the CLI and validation workflow.\\\"\\n },\\n {\\n \\\"key\\\": \\\"GitConfig.enforceHooks\\\",\\n \\\"type\\\": \\\"boolean\\\",\\n \\\"description\\\": \\\"Fails validation when required hooks are missing.\\\",\\n \\\"default\\\": \\\"false\\\"\\n },\\n {\\n \\\"key\\\": \\\"VersioningConfig.type\\\",\\n \\\"type\\\": \\\"VersioningType\\\",\\n \\\"description\\\": \\\"Versioning strategy used for the project.\\\"\\n },\\n {\\n \\\"key\\\": \\\"VersioningConfig.schemeRules\\\",\\n \\\"type\\\": \\\"SchemeRules | undefined\\\",\\n \\\"description\\\": \\\"Scheme-level validation rules applied regardless of versioning type.\\\",\\n \\\"default\\\": \\\"`{ maxNumericSegments: 3, allowedModifiers: ['dev', 'alpha', 'beta', 'rc'] }`\\\"\\n },\\n {\\n \\\"key\\\": \\\"VersioningConfig.calver\\\",\\n \\\"type\\\": \\\"CalVerConfig | undefined\\\",\\n \\\"description\\\": \\\"CalVer-specific settings when `type` is `'calver'`.\\\",\\n \\\"default\\\": \\\"undefined\\\"\\n },\\n {\\n \\\"key\\\": \\\"VersionGuardConfig.versioning\\\",\\n \\\"type\\\": \\\"VersioningConfig\\\",\\n \\\"description\\\": \\\"Active versioning settings.\\\"\\n },\\n {\\n \\\"key\\\": \\\"VersionGuardConfig.manifest\\\",\\n \\\"type\\\": \\\"ManifestConfig\\\",\\n \\\"description\\\": \\\"Version source manifest settings.\\\",\\n \\\"default\\\": \\\"`{ source: 'auto' }`\\\"\\n },\\n {\\n \\\"key\\\": \\\"VersionGuardConfig.sync\\\",\\n \\\"type\\\": \\\"SyncConfig\\\",\\n \\\"description\\\": \\\"Synchronization settings for mirrored version strings.\\\"\\n },\\n {\\n \\\"key\\\": \\\"VersionGuardConfig.changelog\\\",\\n \\\"type\\\": \\\"ChangelogConfig\\\",\\n \\\"description\\\": \\\"Changelog validation settings.\\\"\\n },\\n {\\n \\\"key\\\": \\\"VersionGuardConfig.git\\\",\\n \\\"type\\\": \\\"GitConfig\\\",\\n \\\"description\\\": \\\"Git enforcement settings.\\\"\\n },\\n {\\n \\\"key\\\": \\\"VersionGuardConfig.ignore\\\",\\n \\\"type\\\": \\\"string[]\\\",\\n \\\"description\\\": \\\"Files or patterns excluded from validation.\\\"\\n },\\n {\\n \\\"key\\\": \\\"InitOptions.cwd\\\",\\n \\\"type\\\": \\\"string\\\",\\n \\\"description\\\": \\\"Working directory path.\\\"\\n },\\n {\\n \\\"key\\\": \\\"InitOptions.type\\\",\\n \\\"type\\\": \\\"\\\\\\\"semver\\\\\\\" | \\\\\\\"calver\\\\\\\" | undefined\\\",\\n \\\"description\\\": \\\"Versioning type (semver or calver).\\\"\\n },\\n {\\n \\\"key\\\": \\\"InitOptions.format\\\",\\n \\\"type\\\": \\\"string | undefined\\\",\\n \\\"description\\\": \\\"CalVer format string.\\\"\\n },\\n {\\n \\\"key\\\": \\\"InitOptions.manifest\\\",\\n \\\"type\\\": \\\"string | undefined\\\",\\n \\\"description\\\": \\\"Manifest source type.\\\"\\n },\\n {\\n \\\"key\\\": \\\"InitOptions.hooks\\\",\\n \\\"type\\\": \\\"boolean | undefined\\\",\\n \\\"description\\\": \\\"Whether to install git hooks.\\\"\\n },\\n {\\n \\\"key\\\": \\\"InitOptions.changelog\\\",\\n \\\"type\\\": \\\"boolean | undefined\\\",\\n \\\"description\\\": \\\"Whether to enable changelog validation.\\\"\\n },\\n {\\n \\\"key\\\": \\\"InitOptions.yes\\\",\\n \\\"type\\\": \\\"boolean | undefined\\\",\\n \\\"description\\\": \\\"Accept defaults without prompting.\\\"\\n },\\n {\\n \\\"key\\\": \\\"InitOptions.force\\\",\\n \\\"type\\\": \\\"boolean | undefined\\\",\\n \\\"description\\\": \\\"Overwrite existing config.\\\"\\n }\\n ]\\n}\\n\"","export default \"# @codluv/versionguard\\n> Strict versioning enforcement for SemVer and CalVer with git hooks, changelog validation, and file sync from package.json\\n> Version: 0.4.0\\n\\n## Install\\n\\n```bash\\nnpm install -D @codluv/versionguard\\n```\\n\\n## Documentation\\n\\n- [API Reference](./api-reference.mdx): Full API documentation (MDX)\\n- [Full Context](./llms-full.txt): Complete symbol documentation for deep LLM consumption\\n\\n## Packages\\n\\n### main\\n90 functions, 42 types\\n\\n- getCalVerConfig() — Extracts the CalVer config from a VersionGuard config, throwing if missing.\\n- isValidCalVerFormat() — Validates that a CalVer format string is composed of valid tokens and follows structural rules.\\n- parseFormat() — Breaks a CalVer format string into its component tokens.\\n- getRegexForFormat() — Builds a regular expression that matches a supported CalVer format.\\n- parse() — Parses a CalVer string using the supplied format.\\n- validate() — Validates a CalVer string against formatting and date rules.\\n- format() — Formats a parsed CalVer object back into a version string.\\n- getCurrentVersion() — Creates the current CalVer string for a format.\\n- compare() — Compares two CalVer strings using a shared format.\\n- increment() — Increments a CalVer string.\\n- getNextVersions() — Returns the most likely next CalVer candidates.\\n- validateChangelog() — Validates a changelog file for release readiness.\\n- getLatestVersion() — Gets the most recent released version from a changelog.\\n- addVersionEntry() — Inserts a new version entry beneath the `[Unreleased]` section.\\n- isChangesetMangled() — Detects whether a changelog has been mangled by Changesets.\\n- fixChangesetMangling() — Fixes a Changesets-mangled changelog into proper Keep a Changelog format.\\n- parse() — Parses a semantic version string.\\n- validate() — Validates that a string is a supported semantic version.\\n- compare() — Compares two semantic version strings.\\n- gt() — Checks whether one semantic version is greater than another.\\n- lt() — Checks whether one semantic version is less than another.\\n- eq() — Checks whether two semantic versions are equal in precedence.\\n- increment() — Increments a semantic version string by release type.\\n- format() — Formats a parsed semantic version object.\\n- getVersionFeedback() — Generates actionable feedback for a version string.\\n- getSyncFeedback() — Generates suggestions for version sync mismatches in a file.\\n- getChangelogFeedback() — Generates suggestions for changelog-related validation issues.\\n- getTagFeedback() — Generates suggestions for git tag mismatches.\\n- getNestedValue() — Traverses a nested object using a dotted key path.\\n- setNestedValue() — Sets a value at a dotted key path, throwing if intermediate segments are missing.\\n- escapeRegExp() — Escapes special regex characters in a string for safe use in `new RegExp()`.\\n- resolveVersionSource() — Resolves the version source provider for a project.\\n- detectManifests() — Detects all manifest files present in a project directory.\\n- getPackageJsonPath() — Gets the `package.json` path for a project directory.\\n- readPackageJson() — Reads and parses a project's `package.json` file.\\n- writePackageJson() — Writes a `package.json` document back to disk.\\n- getPackageVersion() — Gets the version string from the project manifest. When a `manifest` config is provided, uses the configured version source provider (auto-detection or explicit). Falls back to `package.json` for backwards compatibility when no config is provided.\\n- setPackageVersion() — Sets the version field in the project manifest. When a `manifest` config is provided, uses the configured version source provider. Falls back to `package.json` for backwards compatibility when no config is provided.\\n- getVersionSource() — Resolves the version source provider for a project.\\n- syncVersion() — Synchronizes configured files to a single version string.\\n- syncFile() — Synchronizes a single file to a target version.\\n- checkHardcodedVersions() — Checks configured files for hardcoded version mismatches.\\n- fixPackageVersion() — Updates the `package.json` version field when needed.\\n- fixSyncIssues() — Synchronizes configured files to the package version.\\n- fixChangelog() — Ensures the changelog contains an entry for a version.\\n- fixAll() — Runs all configured auto-fix operations.\\n- suggestNextVersion() — Suggests candidate next versions for a release.\\n- installHooks() — Installs VersionGuard-managed Git hooks in a repository.\\n- uninstallHooks() — Removes VersionGuard-managed Git hooks from a repository.\\n- findGitDir() — Finds the nearest `.git` directory by walking up from a starting directory.\\n- areHooksInstalled() — Checks whether all VersionGuard-managed hooks are installed.\\n- generateHookScript() — Generates the shell script content for a Git hook.\\n- checkHooksPathOverride() — Checks whether git hooks have been redirected away from the repository.\\n- checkHuskyBypass() — Checks whether the HUSKY environment variable is disabling hooks.\\n- checkHookIntegrity() — Verifies that installed hook scripts match the expected content.\\n- checkEnforceHooksPolicy() — Checks whether hooks are configured as required but not enforced.\\n- runGuardChecks() — Runs all guard checks and returns a consolidated report.\\n- getTopicIndex() — Returns the topic index listing.\\n- getTopicContent() — Returns help content for a specific topic.\\n- getLlmContext() — Returns the full API context for LLM consumption.\\n- getHelpJson() — Returns the topic index as a JSON structure for machine parsing.\\n- getDefaultConfig() — Returns a deep-cloned copy of the built-in VersionGuard configuration.\\n- findConfig() — Finds the first supported VersionGuard config file in a directory.\\n- loadConfig() — Loads a VersionGuard config file from disk.\\n- getConfig() — Resolves the active VersionGuard configuration for a project.\\n- initConfig() — Initializes a new VersionGuard config file in a project.\\n- findProjectRoot() — Walks up from `startDir` to find the nearest project root.\\n- formatNotProjectError() — Formats a helpful error message when a command can't find a project.\\n- getLatestTag() — Returns the most recent reachable git tag for a repository.\\n- getAllTags() — Lists all tags in a repository.\\n- createTag() — Creates a release tag and optionally fixes version state first.\\n- handlePostTag() — Runs post-tag validation and sync checks.\\n- validateTagForPush() — Validates that a local tag is safe to push to the default remote.\\n- suggestTagMessage() — Suggests an annotated tag message from changelog content.\\n- validateVersion() — Validates a version string against the active versioning strategy.\\n- validate() — Validates the current project state against the supplied configuration.\\n- doctor() — Runs an extended readiness check for a project.\\n- sync() — Synchronizes configured files to the current package version.\\n- canBump() — Determines whether a project can move from one version to another.\\n- runWizard() — Runs the interactive setup wizard.\\n- runHeadless() — Initializes VersionGuard non-interactively using CLI flags.\\n- createProgram() — Creates the VersionGuard CLI program definition.\\n- runCli() — Parses CLI arguments and executes the matching command.\\n- shouldRunCli() — Determines whether the current module is the invoked CLI entry point.\\n- createTempProject() — Creates a temporary project directory with a minimal `package.json` fixture.\\n- initGitRepo() — Initializes a git repository in a fixture directory with a first commit.\\n- writeTextFile() — Writes a text fixture file relative to a temporary project directory.\\n- createBareRemote() — Creates a bare git repository to use as a remote in integration tests.\\n- addGitRemote() — Adds a local bare repository as the `origin` remote for a fixture repo.\\n- commitAll() — Stages all changes and creates a commit in a fixture repository.\\n\\n- VersioningType — Supported versioning strategies.\\n- ManifestSourceType — Supported manifest source types for version extraction.\\n- ManifestConfig — Configures the version source manifest.\\n- CalVerToken — Valid CalVer token names for building format strings.\\n- CalVerFormat — A CalVer format string composed of dot-separated tokens.\\n- SchemeRules — Configures scheme-level validation rules applied regardless of versioning type.\\n- CalVerConfig — Configures CalVer validation rules.\\n- SyncPattern — Describes a search-and-replace pattern used during version synchronization.\\n- SyncConfig — Configures files and patterns that should stay in sync with the canonical version.\\n- ChangelogConfig — Controls changelog validation behavior.\\n- GitHooksConfig — Toggles each supported git hook integration.\\n- GitConfig — Configures git-related enforcement.\\n- VersioningConfig — Configures the active versioning mode.\\n- VersionGuardConfig — Top-level configuration consumed by versionguard.\\n- SemVer — Parsed semantic version components.\\n- CalVer — Parsed calendar version components.\\n- ParsedSemVer — Parsed semantic version result wrapper.\\n- ParsedCalVer — Parsed calendar version result wrapper.\\n- ParsedVersion — Union of supported parsed version payloads.\\n- ValidationError — Describes a single validation problem.\\n- ValidationResult — Result returned by version parsing and validation helpers.\\n- SyncChange — Describes a single in-file version replacement.\\n- SyncResult — Reports the result of synchronizing a single file.\\n- VersionMismatch — Reports a discovered version mismatch.\\n- FullValidationResult — Combined result from a full project validation run.\\n- DoctorReport — Reports whether a project is ready to pass VersionGuard checks.\\n- ParsedCalVerFormat — Parsed token layout for a supported CalVer format string.\\n- ChangelogValidationResult — Describes the outcome of validating a changelog file.\\n- Suggestion — Feedback entry point exports for suggestion and guidance helpers.\\n- FeedbackResult — Aggregates validation errors with suggested next steps.\\n- VersionSourceProvider — Abstraction for reading and writing a version string from any manifest format.\\n- PackageJsonValue — JSON-compatible scalar, array, or object value used by package metadata.\\n- PackageJsonArray — Recursive array type used for arbitrary JSON-compatible package values.\\n- PackageJsonObject — Recursive object type used for arbitrary JSON-compatible package values.\\n- PackageJson — Minimal shape of a `package.json` document used by VersionGuard.\\n- FixResult — Fix entry point exports for auto-remediation helpers.\\n- GuardWarning — Describes a single guard finding.\\n- GuardReport — Result of a full guard check pass.\\n- HelpTopic — Embedded help topics for the CLI help system.\\n- ProjectRootResult — Result of project root detection.\\n- TagInfo — Tag entry point exports for release-tag management helpers.\\n- InitOptions — Options for headless (non-interactive) initialization.\\n\"","/**\n * Interactive setup wizard and headless init for VersionGuard.\n *\n * @packageDocumentation\n */\n\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\n\nimport * as p from '@clack/prompts';\nimport * as yaml from 'js-yaml';\n\nimport { isValidCalVerFormat } from './calver';\nimport type { VersionGuardConfig } from './types';\n\n/**\n * Options for headless (non-interactive) initialization.\n *\n * @public\n * @since 0.3.0\n */\nexport interface InitOptions {\n /** Working directory path. */\n cwd: string;\n /** Versioning type (semver or calver). */\n type?: 'semver' | 'calver';\n /** CalVer format string. */\n format?: string;\n /** Manifest source type. */\n manifest?: string;\n /** Whether to install git hooks. */\n hooks?: boolean;\n /** Whether to enable changelog validation. */\n changelog?: boolean;\n /** Accept defaults without prompting. */\n yes?: boolean;\n /** Overwrite existing config. */\n force?: boolean;\n}\n\n/**\n * Runs the interactive setup wizard.\n *\n * @remarks\n * Walks the user through versioning type, CalVer format, manifest source,\n * git hooks, and changelog configuration. Writes `.versionguard.yml` when done.\n *\n * @param cwd - Project directory to initialize.\n * @returns The path to the created config file, or `null` if cancelled.\n *\n * @example\n * ```ts\n * const configPath = await runWizard(process.cwd());\n * ```\n *\n * @public\n * @since 0.3.0\n */\nexport async function runWizard(cwd: string): Promise<string | null> {\n p.intro('VersionGuard Setup');\n\n const existingConfig = findExistingConfig(cwd);\n if (existingConfig) {\n p.log.warning(`Config already exists: ${path.relative(cwd, existingConfig)}`);\n const overwrite = await p.confirm({ message: 'Overwrite existing config?' });\n if (p.isCancel(overwrite) || !overwrite) {\n p.outro('Setup cancelled.');\n return null;\n }\n }\n\n // Step 1: Versioning type\n const type = await p.select({\n message: 'Versioning strategy',\n options: [\n { value: 'semver', label: 'SemVer', hint: 'MAJOR.MINOR.PATCH (e.g., 1.2.3)' },\n { value: 'calver', label: 'CalVer', hint: 'Calendar-based (e.g., 2026.3.0)' },\n ],\n });\n if (p.isCancel(type)) {\n p.outro('Setup cancelled.');\n return null;\n }\n\n // Step 2: CalVer format (if calver)\n let format: string | undefined;\n if (type === 'calver') {\n const selected = await selectCalVerFormat();\n if (!selected) {\n p.outro('Setup cancelled.');\n return null;\n }\n format = selected;\n }\n\n // Step 3: Manifest source\n const manifest = await selectManifest(cwd);\n if (manifest === null) {\n p.outro('Setup cancelled.');\n return null;\n }\n\n // Step 4: Git hooks\n const hooks = await p.confirm({\n message: 'Install git hooks? (pre-commit, pre-push, post-tag)',\n initialValue: true,\n });\n if (p.isCancel(hooks)) {\n p.outro('Setup cancelled.');\n return null;\n }\n\n // Step 5: Changelog\n const changelog = await p.confirm({\n message: 'Enable changelog validation?',\n initialValue: true,\n });\n if (p.isCancel(changelog)) {\n p.outro('Setup cancelled.');\n return null;\n }\n\n // Build and write config\n const config = buildConfig({\n type: type,\n format,\n manifest: manifest === 'auto' ? undefined : manifest,\n hooks: hooks,\n changelog: changelog,\n });\n\n const configPath = writeConfig(cwd, config);\n\n p.log.success(`Created ${path.relative(cwd, configPath)}`);\n p.outro('Run `versionguard validate` to verify your setup.');\n\n return configPath;\n}\n\n/**\n * Initializes VersionGuard non-interactively using CLI flags.\n *\n * @remarks\n * When `--yes` is passed, all defaults are used without prompting.\n * Individual flags override specific defaults.\n *\n * @param options - Headless initialization options.\n * @returns The path to the created config file.\n *\n * @example\n * ```ts\n * const configPath = runHeadless({ cwd: process.cwd(), type: 'calver', format: 'YYYY.M.MICRO' });\n * ```\n *\n * @public\n * @since 0.3.0\n */\nexport function runHeadless(options: InitOptions): string {\n const existingConfig = findExistingConfig(options.cwd);\n if (existingConfig && !options.force && !options.yes) {\n throw new Error(\n `Config already exists: ${existingConfig}. Use --force to overwrite or --yes to accept defaults.`,\n );\n }\n\n const config = buildConfig({\n type: options.type ?? 'semver',\n format: options.format,\n manifest: options.manifest,\n hooks: options.hooks ?? true,\n changelog: options.changelog ?? true,\n });\n\n return writeConfig(options.cwd, config);\n}\n\nasync function selectCalVerFormat(): Promise<string | null> {\n const preset = await p.select({\n message: 'CalVer format',\n options: [\n { value: 'YYYY.M.MICRO', label: 'YYYY.M.MICRO', hint: 'calver.org standard — 2026.3.0' },\n { value: 'YYYY.MM.MICRO', label: 'YYYY.MM.MICRO', hint: 'padded month — 2026.03.0' },\n { value: 'YY.0M.MICRO', label: 'YY.0M.MICRO', hint: 'Twisted/pip style — 26.03.0' },\n { value: 'YYYY.0M.0D', label: 'YYYY.0M.0D', hint: 'date-based — 2026.03.25' },\n {\n value: 'YYYY.0M.0D.MICRO',\n label: 'YYYY.0M.0D.MICRO',\n hint: 'youtube-dl style — 2026.03.25.0',\n },\n { value: 'YY.0M', label: 'YY.0M', hint: 'Ubuntu style — 26.03' },\n { value: 'custom', label: 'Custom...', hint: 'enter your own token format' },\n ],\n });\n if (p.isCancel(preset)) return null;\n\n if (preset === 'custom') {\n const custom = await p.text({\n message: 'Enter CalVer format (dot-separated tokens)',\n placeholder: 'YYYY.MM.MICRO',\n validate(value: string | undefined) {\n if (!value || !isValidCalVerFormat(value)) {\n return 'Invalid format. Use tokens: YYYY|YY|0Y, MM|M|0M, WW|0W, DD|D|0D, MICRO|PATCH';\n }\n },\n });\n if (p.isCancel(custom)) return null;\n return custom;\n }\n\n return preset as string;\n}\n\nasync function selectManifest(cwd: string): Promise<string | null> {\n // Detect what exists\n const detected: { value: string; label: string; hint?: string }[] = [];\n const checks = [\n { file: 'package.json', label: 'package.json', hint: 'Node.js / Bun' },\n { file: 'Cargo.toml', label: 'Cargo.toml', hint: 'Rust' },\n { file: 'pyproject.toml', label: 'pyproject.toml', hint: 'Python' },\n { file: 'pubspec.yaml', label: 'pubspec.yaml', hint: 'Dart / Flutter' },\n { file: 'composer.json', label: 'composer.json', hint: 'PHP' },\n { file: 'pom.xml', label: 'pom.xml', hint: 'Java / Maven' },\n { file: 'VERSION', label: 'VERSION', hint: 'Plain text file' },\n ];\n\n for (const check of checks) {\n if (fs.existsSync(path.join(cwd, check.file))) {\n detected.push({ value: check.file, label: `${check.label} (detected)`, hint: check.hint });\n }\n }\n\n const options = [\n { value: 'auto', label: 'Auto-detect', hint: 'scan for known manifests at runtime' },\n ...detected,\n ...checks\n .filter((c) => !detected.some((d) => d.value === c.file))\n .map((c) => ({ value: c.file, label: c.label, hint: c.hint })),\n { value: 'git-tag', label: 'Git tags', hint: 'Go / Swift — version from tags' },\n ];\n\n const result = await p.select({\n message: 'Version source',\n options,\n initialValue: detected.length === 1 ? detected[0].value : 'auto',\n });\n\n if (p.isCancel(result)) return null;\n return result;\n}\n\ninterface ConfigInput {\n type: 'semver' | 'calver';\n format?: string;\n manifest?: string;\n hooks: boolean;\n changelog: boolean;\n}\n\nfunction buildConfig(input: ConfigInput): Partial<VersionGuardConfig> {\n const config: Record<string, unknown> = {\n versioning: {\n type: input.type,\n ...(input.type === 'calver' && input.format\n ? {\n calver: {\n format: input.format,\n preventFutureDates: true,\n },\n }\n : {}),\n },\n };\n\n if (input.manifest) {\n config.manifest = { source: input.manifest };\n }\n\n config.sync = {\n files: ['README.md', 'CHANGELOG.md'],\n patterns: [\n {\n regex: '(version\\\\s*[=:]\\\\s*[\"\\'])(.+?)([\"\\'])',\n template: '$1{{version}}$3',\n },\n {\n regex: '(##\\\\s*\\\\[)(.+?)(\\\\])',\n template: '$1{{version}}$3',\n },\n ],\n };\n\n config.changelog = {\n enabled: input.changelog,\n file: 'CHANGELOG.md',\n strict: true,\n requireEntry: input.changelog,\n };\n\n config.git = {\n hooks: {\n 'pre-commit': input.hooks,\n 'pre-push': input.hooks,\n 'post-tag': input.hooks,\n },\n enforceHooks: input.hooks,\n };\n\n config.ignore = ['node_modules/**', 'dist/**', '.git/**', '*.lock', '.changeset/**'];\n\n return config;\n}\n\nfunction writeConfig(cwd: string, config: Partial<VersionGuardConfig>): string {\n const configPath = path.join(cwd, '.versionguard.yml');\n const content = yaml.dump(config, {\n indent: 2,\n lineWidth: 120,\n noRefs: true,\n quotingType: '\"',\n forceQuotes: false,\n });\n fs.writeFileSync(configPath, content, 'utf-8');\n return configPath;\n}\n\nfunction findExistingConfig(cwd: string): string | null {\n for (const name of [\n '.versionguard.yml',\n '.versionguard.yaml',\n 'versionguard.yml',\n 'versionguard.yaml',\n ]) {\n const full = path.join(cwd, name);\n if (fs.existsSync(full)) return full;\n }\n return null;\n}\n","#!/usr/bin/env node\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport chalk from 'chalk';\nimport { Command } from 'commander';\n\nconst CLI_DIR = path.dirname(fileURLToPath(import.meta.url));\nconst CLI_VERSION: string = (\n JSON.parse(fs.readFileSync(path.join(CLI_DIR, '..', 'package.json'), 'utf-8')) as {\n version: string;\n }\n).version;\n\n// Embedded at build time — no external files needed at runtime\nimport ckmRaw from '../docs/ckm.json?raw';\nimport llmsRaw from '../docs/llms.txt?raw';\nimport type { CkmManifest } from './ckm';\nimport { createCkmEngine } from './ckm';\nimport * as feedback from './feedback';\nimport * as fix from './fix';\nimport * as guard from './guard';\n\nconst ckmEngine = createCkmEngine(JSON.parse(ckmRaw) as CkmManifest);\n\nimport * as versionguard from './index';\nimport { runHeadless, runWizard } from './init-wizard';\nimport * as project from './project';\nimport { findProjectRoot, formatNotProjectError } from './project-root';\nimport * as tag from './tag';\n\nconst styles = {\n error: chalk.red,\n warning: chalk.yellow,\n success: chalk.green,\n info: chalk.blue,\n dim: chalk.gray,\n bold: chalk.bold,\n};\n\n/**\n * Resolves the effective project root, checking for project markers.\n * Exits with helpful guidance if not in a project directory.\n */\nfunction requireProject(cwd: string, command: string): string {\n const result = findProjectRoot(cwd);\n if (!result.found) {\n console.error(styles.error(formatNotProjectError(cwd, command)));\n process.exit(1);\n }\n return result.root;\n}\n\n/**\n * Creates the VersionGuard CLI program definition.\n *\n * @public\n * @since 0.1.0\n * @remarks\n * This function wires all commands, options, and handlers onto a fresh Commander\n * program instance without parsing arguments yet.\n *\n * @returns A configured Commander program for the VersionGuard CLI.\n *\n * @example\n * ```typescript\n * const program = createProgram();\n * console.log(program.name());\n * ```\n */\nexport function createProgram(): Command {\n const program = new Command();\n\n program\n .name('versionguard')\n .description('Strict versioning enforcement for SemVer and CalVer')\n .version(CLI_VERSION);\n\n program\n .command('init')\n .description('Initialize VersionGuard configuration (interactive wizard or headless)')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .option('-t, --type <type>', 'Versioning type: semver or calver')\n .option('-f, --format <format>', 'CalVer format tokens (e.g., YYYY.M.MICRO)')\n .option('--manifest <source>', 'Manifest source (e.g., Cargo.toml, pyproject.toml, auto)')\n .option('--hooks', 'Install git hooks (default: true)')\n .option('--no-hooks', 'Skip git hooks')\n .option('--changelog', 'Enable changelog validation (default: true)')\n .option('--no-changelog', 'Disable changelog validation')\n .option('-y, --yes', 'Accept all defaults, no prompts')\n .option('--force', 'Overwrite existing config file')\n .action(\n async (options: {\n cwd: string;\n type?: string;\n format?: string;\n manifest?: string;\n hooks?: boolean;\n changelog?: boolean;\n yes?: boolean;\n force?: boolean;\n }) => {\n try {\n const isHeadless = options.yes || options.type || options.format || options.manifest;\n\n let configPath: string | null;\n\n if (isHeadless) {\n // Headless mode: use flags, no prompts\n configPath = runHeadless({\n cwd: options.cwd,\n type: options.type as 'semver' | 'calver' | undefined,\n format: options.format,\n manifest: options.manifest,\n hooks: options.hooks,\n changelog: options.changelog,\n yes: options.yes,\n force: options.force,\n });\n console.log(styles.success(`✓ Created ${path.relative(options.cwd, configPath)}`));\n } else {\n // Interactive wizard\n configPath = await runWizard(options.cwd);\n if (!configPath) {\n process.exit(0);\n return;\n }\n }\n\n // Auto-install hooks if enabled\n try {\n const config = versionguard.getConfig(options.cwd);\n if (config.git.enforceHooks) {\n versionguard.installHooks(config.git, options.cwd);\n console.log(styles.success('✓ Git hooks installed'));\n }\n } catch {\n console.log(styles.info('ℹ Skipped hooks install (not a git repository)'));\n }\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n },\n );\n\n program\n .command('check')\n .description('Check the current version with actionable feedback')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .option('--prev <version>', 'Previous version for comparison')\n .option('--json', 'Print machine-readable JSON output')\n .action((options: { cwd: string; prev?: string; json?: boolean }) => {\n try {\n options.cwd = requireProject(options.cwd, 'check');\n const config = versionguard.getConfig(options.cwd);\n const version = versionguard.getPackageVersion(options.cwd, config.manifest);\n const result = feedback.getVersionFeedback(version, config, options.prev);\n\n if (options.json) {\n console.log(\n JSON.stringify(\n {\n version,\n versioningType: config.versioning.type,\n valid: result.valid,\n errors: result.errors,\n suggestions: result.suggestions,\n },\n null,\n 2,\n ),\n );\n if (!result.valid) {\n process.exit(1);\n }\n return;\n }\n\n console.log(styles.bold(`Current version: ${version}`));\n console.log(styles.dim(`Versioning type: ${config.versioning.type}`));\n console.log('');\n\n if (result.valid) {\n console.log(styles.success('✓ Version is valid'));\n return;\n }\n\n console.log(styles.error('✗ Version has issues:'));\n console.log('');\n for (const error of result.errors) {\n console.log(styles.error(` ✗ ${error.message}`));\n }\n if (result.suggestions.length > 0) {\n console.log('');\n console.log(styles.info('How to fix:'));\n for (const suggestion of result.suggestions) {\n console.log(` → ${suggestion.message}`);\n if (suggestion.fix) {\n console.log(styles.dim(` Run: ${suggestion.fix}`));\n }\n }\n }\n process.exit(1);\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n program\n .command('validate')\n .description('Run full validation with smart feedback')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .option('--hook <name>', 'Running as git hook')\n .option('--json', 'Print machine-readable JSON output')\n .option('--strict', 'Run guard checks and fail on any policy gap or bypass')\n .action((options: { cwd: string; hook?: string; json?: boolean; strict?: boolean }) => {\n try {\n options.cwd = requireProject(options.cwd, 'validate');\n const config = versionguard.getConfig(options.cwd);\n const version = versionguard.getPackageVersion(options.cwd, config.manifest);\n const result = versionguard.validate(config, options.cwd);\n\n let postTagResult: { success: boolean; message: string; actions: string[] } | undefined;\n let guardReport: guard.GuardReport | undefined;\n\n if (options.hook === 'post-tag') {\n postTagResult = tag.handlePostTag(config, options.cwd);\n }\n\n if (options.strict) {\n guardReport = guard.runGuardChecks(config, options.cwd);\n }\n\n if (options.json) {\n console.log(\n JSON.stringify(\n {\n ...result,\n hook: options.hook ?? null,\n postTag: postTagResult ?? null,\n guard: guardReport ?? null,\n },\n null,\n 2,\n ),\n );\n\n if (\n !result.valid ||\n (postTagResult && !postTagResult.success) ||\n (guardReport && !guardReport.safe)\n ) {\n process.exit(1);\n }\n\n return;\n }\n\n console.log(styles.bold(`Validating version ${version}...`));\n console.log('');\n\n if (!result.syncValid) {\n console.log(styles.error('Sync Issues:'));\n for (const error of result.errors.filter((item) => item.includes('mismatch'))) {\n const parts = error.match(\n /Version mismatch in (.+):(\\d+) - found \"(.+?)\" but expected \"(.+?)\"/,\n );\n if (!parts) {\n continue;\n }\n const suggestions = feedback.getSyncFeedback(parts[1], parts[3], parts[4]);\n console.log(styles.error(` ✗ ${parts[1]} has wrong version`));\n console.log(styles.dim(` Found: \"${parts[3]}\" Expected: \"${parts[4]}\"`));\n if (suggestions[0]?.fix) {\n console.log(styles.info(` Fix: ${suggestions[0].fix}`));\n }\n }\n console.log('');\n }\n\n if (config.changelog.enabled && !result.changelogValid) {\n console.log(styles.error('Changelog Issues:'));\n for (const error of result.errors.filter((item) =>\n item.toLowerCase().includes('changelog'),\n )) {\n console.log(styles.error(` ✗ ${error}`));\n }\n const suggestions = feedback.getChangelogFeedback(false, version);\n if (suggestions[0]?.fix) {\n console.log(styles.info(`Fix: ${suggestions[0].fix}`));\n }\n console.log('');\n }\n\n if (postTagResult) {\n if (!postTagResult.success) {\n console.log(styles.error(`✗ ${postTagResult.message}`));\n process.exit(1);\n }\n }\n\n if (guardReport && guardReport.warnings.length > 0) {\n console.log(styles.bold('Guard Checks:'));\n for (const warning of guardReport.warnings) {\n const icon = warning.severity === 'error' ? styles.error('✗') : styles.warning('⚠');\n console.log(` ${icon} [${warning.code}] ${warning.message}`);\n if (warning.fix) {\n console.log(styles.dim(` Fix: ${warning.fix}`));\n }\n }\n console.log('');\n }\n\n if (!result.valid || (guardReport && !guardReport.safe)) {\n console.log(styles.error('✗ Validation failed'));\n process.exit(1);\n }\n\n console.log(styles.success('✓ All validations passed'));\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n program\n .command('doctor')\n .description('Report repository readiness in one pass')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .option('--json', 'Print machine-readable JSON output')\n .option('--strict', 'Include guard checks for bypass detection')\n .action((options: { cwd: string; json?: boolean; strict?: boolean }) => {\n try {\n options.cwd = requireProject(options.cwd, 'doctor');\n const config = versionguard.getConfig(options.cwd);\n const report = versionguard.doctor(config, options.cwd);\n const guardReport = options.strict ? guard.runGuardChecks(config, options.cwd) : undefined;\n\n if (options.json) {\n console.log(JSON.stringify({ ...report, guard: guardReport ?? null }, null, 2));\n if (!report.ready || (guardReport && !guardReport.safe)) {\n process.exit(1);\n }\n return;\n }\n\n console.log(styles.bold('VersionGuard Doctor'));\n console.log(` Version: ${report.version || '(missing)'}`);\n console.log(` Version valid: ${report.versionValid ? 'yes' : 'no'}`);\n console.log(` Files in sync: ${report.syncValid ? 'yes' : 'no'}`);\n console.log(` Changelog ready: ${report.changelogValid ? 'yes' : 'no'}`);\n console.log(` Git repository: ${report.gitRepository ? 'yes' : 'no'}`);\n console.log(\n ` Hooks installed: ${report.gitRepository ? (report.hooksInstalled ? 'yes' : 'no') : 'n/a'}`,\n );\n console.log(\n ` Worktree clean: ${report.gitRepository ? (report.worktreeClean ? 'yes' : 'no') : 'n/a'}`,\n );\n\n if (guardReport) {\n console.log(` Guard safe: ${guardReport.safe ? 'yes' : 'no'}`);\n }\n\n if (!report.ready || (guardReport && !guardReport.safe)) {\n console.log('');\n console.log(styles.error('Issues:'));\n for (const error of report.errors) {\n console.log(styles.error(` ✗ ${error}`));\n }\n if (guardReport) {\n for (const warning of guardReport.warnings) {\n const icon = warning.severity === 'error' ? '✗' : '⚠';\n console.log(styles.error(` ${icon} [${warning.code}] ${warning.message}`));\n if (warning.fix) {\n console.log(styles.dim(` Fix: ${warning.fix}`));\n }\n }\n }\n process.exit(1);\n }\n\n console.log('');\n console.log(styles.success('✓ Repository is ready'));\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n program\n .command('fix')\n .description('Auto-fix detected issues')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .action((options: { cwd: string }) => {\n try {\n options.cwd = requireProject(options.cwd, 'fix');\n const config = versionguard.getConfig(options.cwd);\n const version = versionguard.getPackageVersion(options.cwd, config.manifest);\n const results = fix.fixAll(config, version, options.cwd);\n\n console.log(styles.bold(`Fixing issues for version ${version}...`));\n console.log('');\n\n for (const result of results) {\n const printer = result.fixed ? styles.success : styles.dim;\n console.log(printer(`${result.fixed ? '✓' : '•'} ${result.message}`));\n }\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n program\n .command('fix-changelog')\n .description('Fix Changesets-mangled changelog into Keep a Changelog format')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .action((options: { cwd: string }) => {\n try {\n options.cwd = requireProject(options.cwd, 'fix-changelog');\n const config = versionguard.getConfig(options.cwd);\n const changelogPath = path.join(options.cwd, config.changelog.file);\n\n if (!versionguard.isChangesetMangled(changelogPath)) {\n console.log(styles.dim('• Changelog is not mangled — no fix needed'));\n return;\n }\n\n const fixed = versionguard.fixChangesetMangling(changelogPath);\n if (fixed) {\n console.log(\n styles.success(`✓ Restructured ${config.changelog.file} to Keep a Changelog format`),\n );\n } else {\n console.log(styles.dim('• Could not auto-fix changelog structure'));\n }\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n program\n .command('sync')\n .description('Sync version to all configured files')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .action((options: { cwd: string }) => {\n try {\n options.cwd = requireProject(options.cwd, 'sync');\n const config = versionguard.getConfig(options.cwd);\n const version = versionguard.getPackageVersion(options.cwd, config.manifest);\n const results = fix.fixSyncIssues(config, options.cwd);\n\n console.log(styles.bold(`Syncing version ${version}...`));\n for (const result of results) {\n const printer = result.fixed ? styles.success : styles.dim;\n console.log(printer(`${result.fixed ? '✓' : '•'} ${result.message}`));\n }\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n program\n .command('bump')\n .description('Suggest and optionally apply the next version')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .option('-t, --type <type>', 'Bump type (major, minor, patch, auto)')\n .option('--apply', 'Apply the first suggested version')\n .action(\n (options: { cwd: string; type?: 'major' | 'minor' | 'patch' | 'auto'; apply?: boolean }) => {\n try {\n options.cwd = requireProject(options.cwd, 'bump');\n const config = versionguard.getConfig(options.cwd);\n const currentVersion = versionguard.getPackageVersion(options.cwd, config.manifest);\n const suggestions = fix.suggestNextVersion(currentVersion, config, options.type);\n\n console.log(styles.bold(`Current version: ${currentVersion}`));\n console.log('');\n for (const [index, suggestion] of suggestions.entries()) {\n console.log(` ${index + 1}. ${styles.bold(suggestion.version)}`);\n console.log(` ${styles.dim(suggestion.reason)}`);\n }\n\n if (options.apply) {\n const nextVersion = suggestions[0]?.version;\n if (!nextVersion) {\n throw new Error('No version suggestion available');\n }\n project.setPackageVersion(nextVersion, options.cwd, config.manifest);\n fix.fixAll(config, nextVersion, options.cwd);\n console.log(styles.success(`✓ Updated to ${nextVersion}`));\n }\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n },\n );\n\n program\n .command('tag')\n .description('Create a git tag with automation')\n .argument('[version]', 'Version to tag (defaults to manifest version)')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .option('-m, --message <msg>', 'Tag message')\n .option('--no-fix', 'Skip auto-fixing files before tagging')\n .action(\n (version: string | undefined, options: { cwd: string; message?: string; fix?: boolean }) => {\n try {\n options.cwd = requireProject(options.cwd, 'tag');\n const config = versionguard.getConfig(options.cwd);\n const tagVersion =\n version || versionguard.getPackageVersion(options.cwd, config.manifest);\n const result = tag.createTag(\n tagVersion,\n options.message,\n options.fix !== false,\n config,\n options.cwd,\n );\n\n if (!result.success) {\n console.log(styles.error(`✗ ${result.message}`));\n process.exit(1);\n }\n\n console.log(styles.success(`✓ ${result.message}`));\n for (const action of result.actions) {\n console.log(` • ${action}`);\n }\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n },\n );\n\n program\n .command('ckm [topic]')\n .description('Codebase Knowledge Manifest — auto-generated docs and help')\n .option('--json', 'Machine-readable CKM output for LLM agents')\n .option('--llm', 'Full API context (forge-ts llms.txt)')\n .action((topic: string | undefined, options: { json?: boolean; llm?: boolean }) => {\n if (options.llm) {\n console.log(llmsRaw);\n return;\n }\n\n if (options.json) {\n console.log(JSON.stringify(ckmEngine.getTopicJson(topic), null, 2));\n return;\n }\n\n if (topic) {\n const content = ckmEngine.getTopicContent(topic);\n if (!content) {\n console.error(styles.error(`Unknown topic: ${topic}`));\n console.log('');\n console.log(ckmEngine.getTopicIndex('versionguard'));\n process.exit(1);\n }\n console.log(content);\n } else {\n console.log(ckmEngine.getTopicIndex('versionguard'));\n }\n });\n\n const hooksCommand = program.command('hooks').description('Manage git hooks');\n\n hooksCommand\n .command('install')\n .description('Install git hooks')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .action((options: { cwd: string }) => {\n try {\n options.cwd = requireProject(options.cwd, 'hooks install');\n const config = versionguard.getConfig(options.cwd);\n versionguard.installHooks(config.git, options.cwd);\n console.log(styles.success('✓ Git hooks installed'));\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n hooksCommand\n .command('uninstall')\n .description('Uninstall git hooks')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .action((options: { cwd: string }) => {\n try {\n options.cwd = requireProject(options.cwd, 'hooks uninstall');\n versionguard.uninstallHooks(options.cwd);\n console.log(styles.success('✓ Git hooks uninstalled'));\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n hooksCommand\n .command('status')\n .description('Check if hooks are installed')\n .option('-c, --cwd <path>', 'Working directory', process.cwd())\n .action((options: { cwd: string }) => {\n try {\n options.cwd = requireProject(options.cwd, 'hooks status');\n if (versionguard.areHooksInstalled(options.cwd)) {\n console.log(styles.success('✓ VersionGuard hooks are installed'));\n return;\n }\n\n console.log(styles.warning('✗ VersionGuard hooks are not installed'));\n process.exit(1);\n } catch (error) {\n console.error(styles.error(`✗ ${(error as Error).message}`));\n process.exit(1);\n }\n });\n\n return program;\n}\n\n/**\n * Parses CLI arguments and executes the matching command.\n *\n * @public\n * @since 0.1.0\n * @remarks\n * This helper delegates argument parsing to the Commander program created by\n * {@link createProgram}. It resolves when the selected command finishes.\n *\n * @param argv - Full argument vector to parse.\n * @see {@link createProgram}\n *\n * @example\n * ```typescript\n * const argv = ['node', 'versionguard', 'check'];\n * await runCli(argv);\n * ```\n */\nexport async function runCli(argv: string[] = process.argv): Promise<void> {\n await createProgram().parseAsync(argv);\n}\n\n/**\n * Determines whether the current module is the invoked CLI entry point.\n *\n * @public\n * @since 0.1.0\n * @remarks\n * This helper compares the resolved script path from `argv` with the current\n * module URL so the CLI runs only during direct execution.\n *\n * @param argv - Full process argument vector.\n * @param metaUrl - Module URL to compare against the invoked entry path.\n * @returns `true` when the current module should launch the CLI.\n *\n * @example\n * ```typescript\n * const shouldRun = shouldRunCli(process.argv, import.meta.url);\n * console.log(shouldRun);\n * ```\n */\nexport function shouldRunCli(\n argv: string[] = process.argv,\n metaUrl: string = import.meta.url,\n): boolean {\n if (!argv[1]) return false;\n const metaPath = fileURLToPath(metaUrl);\n const resolved = path.resolve(argv[1]);\n // Try resolving through symlinks first (needed for global npm installs)\n try {\n return fs.realpathSync(resolved) === metaPath;\n } catch {\n // File may not exist in test contexts — fall back to direct comparison\n return resolved === metaPath;\n }\n}\n\n/* v8 ignore start -- exercised only by direct CLI execution */\nif (shouldRunCli()) {\n void runCli();\n}\n/* v8 ignore stop */\n"],"names":["versionguard.getConfig","versionguard.installHooks","versionguard.getPackageVersion","feedback.getVersionFeedback","versionguard.validate","tag.handlePostTag","guard.runGuardChecks","feedback.getSyncFeedback","feedback.getChangelogFeedback","versionguard.doctor","fix.fixAll","versionguard.isChangesetMangled","versionguard.fixChangesetMangling","fix.fixSyncIssues","fix.suggestNextVersion","project.setPackageVersion","tag.createTag","versionguard.uninstallHooks","versionguard.areHooksInstalled"],"mappings":";;;;;;;;;AAAA,MAAA,SAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAoDlD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,IAAI,kBAAkB,CAErD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CASrE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,CAajE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,GAAG,GAAE,MAAsB,GAAG,kBAAkB,CAGzE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAe9D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAyDlD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,IAAI,kBAAkB,CAErD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CASrE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,CAajE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,GAAG,GAAE,MAAsB,GAAG,kBAAkB,CAGzE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAe9D"}
@@ -1,4 +1,4 @@
1
- import type { ValidationError, VersionGuardConfig } from '../types';
1
+ import { type ValidationError, type VersionGuardConfig } from '../types';
2
2
  /**
3
3
  * Feedback helpers that turn validation failures into actionable suggestions.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/feedback/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAwB,eAAe,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE1F;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,MAAM,EAAE,eAAe,EAAE,CAAC;IAE1B;;OAEG;IACH,WAAW,EAAE,UAAU,EAAE,CAAC;IAE1B;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,kBAAkB,EAC1B,eAAe,CAAC,EAAE,MAAM,GACvB,cAAc,CAMhB;AA+PD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACtB,UAAU,EAAE,CAyBd;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,MAAM,EACf,sBAAsB,CAAC,EAAE,MAAM,GAC9B,UAAU,EAAE,CAyBd;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,OAAO,GACxB,UAAU,EAAE,CAoBd"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/feedback/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,UAAU,CAAC;AAElB;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,MAAM,EAAE,eAAe,EAAE,CAAC;IAE1B;;OAEG;IACH,WAAW,EAAE,UAAU,EAAE,CAAC;IAE1B;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,kBAAkB,EAC1B,eAAe,CAAC,EAAE,MAAM,GACvB,cAAc,CAMhB;AAuPD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACtB,UAAU,EAAE,CAyBd;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,MAAM,EACf,sBAAsB,CAAC,EAAE,MAAM,GAC9B,UAAU,EAAE,CAyBd;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,OAAO,GACxB,UAAU,EAAE,CAoBd"}
@@ -1,4 +1,4 @@
1
- import type { ManifestConfig, VersionGuardConfig } from '../types';
1
+ import { type ManifestConfig, type VersionGuardConfig } from '../types';
2
2
  /**
3
3
  * Auto-fix helpers for package versions, synced files, and changelog entries.
4
4
  *
@@ -40,12 +40,17 @@ export interface FixResult {
40
40
  *
41
41
  * @param targetVersion - Version that should be written to `package.json`.
42
42
  * @param cwd - Repository directory containing `package.json`.
43
+ * @param manifest - Optional manifest configuration for language-agnostic support.
43
44
  * @returns The result of the package version fix attempt.
44
45
  *
45
46
  * @example
46
47
  * ```typescript
48
+ * // Fix using legacy package.json fallback
47
49
  * const result = fixPackageVersion('1.2.3', process.cwd());
48
50
  * console.log(result.fixed);
51
+ *
52
+ * // Fix using a configured manifest source
53
+ * const result2 = fixPackageVersion('1.2.3', process.cwd(), { source: 'Cargo.toml' });
49
54
  * ```
50
55
  */
51
56
  export declare function fixPackageVersion(targetVersion: string, cwd?: string, manifest?: ManifestConfig): FixResult;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fix/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAgB,cAAc,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEjF;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,EACrB,GAAG,GAAE,MAAsB,EAC3B,QAAQ,CAAC,EAAE,cAAc,GACxB,SAAS,CA8CX;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,kBAAkB,EAC1B,GAAG,GAAE,MAAsB,GAC1B,SAAS,EAAE,CAeb;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,kBAAkB,EAC1B,GAAG,GAAE,MAAsB,GAC1B,SAAS,CA0BX;AA6BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,MAAM,CACpB,MAAM,EAAE,kBAAkB,EAC1B,aAAa,CAAC,EAAE,MAAM,EACtB,GAAG,GAAE,MAAsB,GAC1B,SAAS,EAAE,CAmBb;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,kBAAkB,EAC1B,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAChD;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,CA2CvC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fix/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAmB,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEzF;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,EACrB,GAAG,GAAE,MAAsB,EAC3B,QAAQ,CAAC,EAAE,cAAc,GACxB,SAAS,CA8CX;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,kBAAkB,EAC1B,GAAG,GAAE,MAAsB,GAC1B,SAAS,EAAE,CAeb;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,kBAAkB,EAC1B,GAAG,GAAE,MAAsB,GAC1B,SAAS,CA0BX;AA6BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,MAAM,CACpB,MAAM,EAAE,kBAAkB,EAC1B,aAAa,CAAC,EAAE,MAAM,EACtB,GAAG,GAAE,MAAsB,GAC1B,SAAS,EAAE,CAgCb;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,kBAAkB,EAC1B,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAChD;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,CA2CvC"}
package/dist/guard.d.ts CHANGED
@@ -12,7 +12,11 @@ export interface GuardWarning {
12
12
  severity: 'error' | 'warning';
13
13
  /** Human-readable description of the issue. */
14
14
  message: string;
15
- /** Suggested remediation command when available. */
15
+ /**
16
+ * Suggested remediation command when available.
17
+ *
18
+ * @defaultValue `undefined`
19
+ */
16
20
  fix?: string;
17
21
  }
18
22
  /**
@@ -37,6 +41,14 @@ export interface GuardReport {
37
41
  * @param cwd - Repository directory to inspect.
38
42
  * @returns A guard warning when a hooksPath override is detected.
39
43
  *
44
+ * @example
45
+ * ```ts
46
+ * import { checkHooksPathOverride } from './guard';
47
+ *
48
+ * const warning = checkHooksPathOverride(process.cwd());
49
+ * if (warning) console.warn(warning.message);
50
+ * ```
51
+ *
40
52
  * @public
41
53
  * @since 0.2.0
42
54
  */
@@ -51,6 +63,14 @@ export declare function checkHooksPathOverride(cwd: string): GuardWarning | null
51
63
  *
52
64
  * @returns A guard warning when the HUSKY bypass is detected.
53
65
  *
66
+ * @example
67
+ * ```ts
68
+ * import { checkHuskyBypass } from './guard';
69
+ *
70
+ * const warning = checkHuskyBypass();
71
+ * if (warning) console.warn(warning.message);
72
+ * ```
73
+ *
54
74
  * @public
55
75
  * @since 0.2.0
56
76
  */
@@ -67,6 +87,14 @@ export declare function checkHuskyBypass(): GuardWarning | null;
67
87
  * @param cwd - Repository directory to inspect.
68
88
  * @returns Guard warnings for each hook that has been tampered with.
69
89
  *
90
+ * @example
91
+ * ```ts
92
+ * import { checkHookIntegrity } from './guard';
93
+ *
94
+ * const warnings = checkHookIntegrity(config, process.cwd());
95
+ * for (const w of warnings) console.warn(w.code, w.message);
96
+ * ```
97
+ *
70
98
  * @public
71
99
  * @since 0.2.0
72
100
  */
@@ -81,6 +109,14 @@ export declare function checkHookIntegrity(config: VersionGuardConfig, cwd: stri
81
109
  * @param config - VersionGuard configuration to inspect.
82
110
  * @returns A guard warning when hooks are enabled but not enforced.
83
111
  *
112
+ * @example
113
+ * ```ts
114
+ * import { checkEnforceHooksPolicy } from './guard';
115
+ *
116
+ * const warning = checkEnforceHooksPolicy(config);
117
+ * if (warning) console.warn(warning.message);
118
+ * ```
119
+ *
84
120
  * @public
85
121
  * @since 0.2.0
86
122
  */
@@ -97,6 +133,14 @@ export declare function checkEnforceHooksPolicy(config: VersionGuardConfig): Gua
97
133
  * @param cwd - Repository directory to inspect.
98
134
  * @returns A guard report with all findings.
99
135
  *
136
+ * @example
137
+ * ```ts
138
+ * import { runGuardChecks } from './guard';
139
+ *
140
+ * const report = runGuardChecks(config, process.cwd());
141
+ * if (!report.safe) console.error('Guard check failed:', report.warnings);
142
+ * ```
143
+ *
100
144
  * @public
101
145
  * @since 0.2.0
102
146
  */
@@ -1 +1 @@
1
- {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAIlD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,kEAAkE;IAClE,IAAI,EAAE,OAAO,CAAC;IACd,yCAAyC;IACzC,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAkCvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAWtD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAkD1F;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CAcvF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CA2BnF"}
1
+ {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAIlD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,kEAAkE;IAClE,IAAI,EAAE,OAAO,CAAC;IACd,yCAAyC;IACzC,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAkCvE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAWtD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAkD1F;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CAcvF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CA2BnF"}
package/dist/hooks.d.ts CHANGED
@@ -6,8 +6,12 @@ declare const HOOK_NAMES: readonly ["pre-commit", "pre-push", "post-tag"];
6
6
  * @public
7
7
  * @since 0.1.0
8
8
  * @remarks
9
- * Only hooks enabled in `config.hooks` are written. Each installed hook runs
10
- * `versionguard validate` for its corresponding hook name.
9
+ * When a hook file already exists from another tool (Husky, lefthook, etc.),
10
+ * VersionGuard **appends** its validation block instead of overwriting.
11
+ * The block is delimited by markers so it can be cleanly removed later.
12
+ *
13
+ * If the hook already contains a VersionGuard block, it is replaced in-place
14
+ * (idempotent).
11
15
  *
12
16
  * @param config - Git configuration that selects which hooks to install.
13
17
  * @param cwd - Repository directory where hooks should be installed.
@@ -25,8 +29,9 @@ export declare function installHooks(config: GitConfig, cwd?: string): void;
25
29
  * @public
26
30
  * @since 0.1.0
27
31
  * @remarks
28
- * Only hook files containing `versionguard` are removed so unrelated custom
29
- * hooks are left untouched.
32
+ * Only the VersionGuard block (delimited by markers) is removed.
33
+ * Other hook content from Husky, lefthook, etc. is preserved.
34
+ * If the hook becomes empty after removal, the file is deleted.
30
35
  *
31
36
  * @param cwd - Repository directory whose hooks should be cleaned up.
32
37
  * @example
@@ -62,8 +67,9 @@ export declare function findGitDir(cwd: string): string | null;
62
67
  * @public
63
68
  * @since 0.1.0
64
69
  * @remarks
65
- * A hook counts as installed only when the file exists and contains the
66
- * `versionguard` invocation written by this package.
70
+ * A hook counts as installed when the file exists and contains the
71
+ * `versionguard` invocation either as a standalone hook or appended
72
+ * to an existing hook from another tool.
67
73
  *
68
74
  * @param cwd - Repository directory to inspect.
69
75
  * @returns `true` when every managed hook is installed.
@@ -82,7 +88,8 @@ export declare function areHooksInstalled(cwd?: string): boolean;
82
88
  * @since 0.1.0
83
89
  * @remarks
84
90
  * The generated script delegates to `npx versionguard validate` and exits with
85
- * the validation status code.
91
+ * the validation status code. Uses delimited block markers for cooperative
92
+ * installation with other hook tools.
86
93
  *
87
94
  * @param hookName - Name of the Git hook to generate.
88
95
  * @returns Executable shell script contents for the hook.
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,QAAA,MAAM,UAAU,iDAAkD,CAAC;AAEnE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CAejF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAsB,GAAG,IAAI,CAahE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAerD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAUtE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAahF"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,QAAA,MAAM,UAAU,iDAAkD,CAAC;AAMnE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CAyCjF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAsB,GAAG,IAAI,CAgChE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAerD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAUtE;AAsBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAEhF"}
package/dist/index.d.ts CHANGED
@@ -4,15 +4,17 @@
4
4
  * @packageDocumentation
5
5
  * @public
6
6
  */
7
- import type { DoctorReport, FullValidationResult, ValidationResult, VersionGuardConfig } from './types';
7
+ import { type DoctorReport, type FullValidationResult, type ValidationResult, type VersionGuardConfig } from './types';
8
8
  export * as calver from './calver';
9
- export { validateChangelog } from './changelog';
9
+ export { fixChangesetMangling, isChangesetMangled, validateChangelog } from './changelog';
10
+ export { type CkmEngine, createCkmEngine } from './ckm';
10
11
  export { getConfig, initConfig } from './config';
11
12
  export * from './feedback';
12
13
  export * from './fix';
13
14
  export * from './guard';
14
15
  export { areHooksInstalled, installHooks, uninstallHooks } from './hooks';
15
16
  export { getPackageVersion, getVersionSource } from './project';
17
+ export { findProjectRoot, formatNotProjectError } from './project-root';
16
18
  export * as semver from './semver';
17
19
  export * from './sources';
18
20
  export { checkHardcodedVersions, syncVersion } from './sync';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,KAAK,EAEV,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACjD,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC7D,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AAExB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,gBAAgB,CAO7F;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,kBAAkB,EAC1B,GAAG,GAAE,MAAsB,GAC1B,oBAAoB,CAwDtB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,GAAE,MAAsB,GAAG,YAAY,CA0B5F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CAGlF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,OAAO,CACrB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,kBAAkB,GACzB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAqCtC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EAEzB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACxB,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAE,KAAK,SAAS,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACjD,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC7D,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AAExB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,gBAAgB,CAY7F;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,kBAAkB,EAC1B,GAAG,GAAE,MAAsB,GAC1B,oBAAoB,CAwDtB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,GAAE,MAAsB,GAAG,YAAY,CA0B5F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CAGlF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,OAAO,CACrB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,kBAAkB,GACzB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAqCtC"}