@auto-engineer/release-automation 0.24.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 (117) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/LICENSE +10 -0
  3. package/README.md +560 -0
  4. package/dist/bin/release-automation.d.ts +3 -0
  5. package/dist/bin/release-automation.d.ts.map +1 -0
  6. package/dist/bin/release-automation.js +7 -0
  7. package/dist/bin/release-automation.js.map +1 -0
  8. package/dist/src/cli/commands/check.d.ts +3 -0
  9. package/dist/src/cli/commands/check.d.ts.map +1 -0
  10. package/dist/src/cli/commands/check.js +77 -0
  11. package/dist/src/cli/commands/check.js.map +1 -0
  12. package/dist/src/cli/commands/generate.d.ts +3 -0
  13. package/dist/src/cli/commands/generate.d.ts.map +1 -0
  14. package/dist/src/cli/commands/generate.js +100 -0
  15. package/dist/src/cli/commands/generate.js.map +1 -0
  16. package/dist/src/cli/commands/index.d.ts +3 -0
  17. package/dist/src/cli/commands/index.d.ts.map +1 -0
  18. package/dist/src/cli/commands/index.js +3 -0
  19. package/dist/src/cli/commands/index.js.map +1 -0
  20. package/dist/src/cli/index.d.ts +2 -0
  21. package/dist/src/cli/index.d.ts.map +1 -0
  22. package/dist/src/cli/index.js +15 -0
  23. package/dist/src/cli/index.js.map +1 -0
  24. package/dist/src/cli/utils/exit-codes.d.ts +11 -0
  25. package/dist/src/cli/utils/exit-codes.d.ts.map +1 -0
  26. package/dist/src/cli/utils/exit-codes.js +10 -0
  27. package/dist/src/cli/utils/exit-codes.js.map +1 -0
  28. package/dist/src/cli/utils/index.d.ts +3 -0
  29. package/dist/src/cli/utils/index.d.ts.map +1 -0
  30. package/dist/src/cli/utils/index.js +3 -0
  31. package/dist/src/cli/utils/index.js.map +1 -0
  32. package/dist/src/cli/utils/logger.d.ts +6 -0
  33. package/dist/src/cli/utils/logger.d.ts.map +1 -0
  34. package/dist/src/cli/utils/logger.js +17 -0
  35. package/dist/src/cli/utils/logger.js.map +1 -0
  36. package/dist/src/index.d.ts +3 -0
  37. package/dist/src/index.d.ts.map +1 -0
  38. package/dist/src/index.js +3 -0
  39. package/dist/src/index.js.map +1 -0
  40. package/dist/src/lib/changelog/generator.d.ts +10 -0
  41. package/dist/src/lib/changelog/generator.d.ts.map +1 -0
  42. package/dist/src/lib/changelog/generator.js +47 -0
  43. package/dist/src/lib/changelog/generator.js.map +1 -0
  44. package/dist/src/lib/changelog/index.d.ts +3 -0
  45. package/dist/src/lib/changelog/index.d.ts.map +1 -0
  46. package/dist/src/lib/changelog/index.js +3 -0
  47. package/dist/src/lib/changelog/index.js.map +1 -0
  48. package/dist/src/lib/changelog/providers/anthropic-api.d.ts +9 -0
  49. package/dist/src/lib/changelog/providers/anthropic-api.d.ts.map +1 -0
  50. package/dist/src/lib/changelog/providers/anthropic-api.js +77 -0
  51. package/dist/src/lib/changelog/providers/anthropic-api.js.map +1 -0
  52. package/dist/src/lib/changelog/providers/claude-cli.d.ts +7 -0
  53. package/dist/src/lib/changelog/providers/claude-cli.d.ts.map +1 -0
  54. package/dist/src/lib/changelog/providers/claude-cli.js +63 -0
  55. package/dist/src/lib/changelog/providers/claude-cli.js.map +1 -0
  56. package/dist/src/lib/changelog/providers/index.d.ts +4 -0
  57. package/dist/src/lib/changelog/providers/index.d.ts.map +1 -0
  58. package/dist/src/lib/changelog/providers/index.js +4 -0
  59. package/dist/src/lib/changelog/providers/index.js.map +1 -0
  60. package/dist/src/lib/changelog/providers/simple.d.ts +7 -0
  61. package/dist/src/lib/changelog/providers/simple.d.ts.map +1 -0
  62. package/dist/src/lib/changelog/providers/simple.js +33 -0
  63. package/dist/src/lib/changelog/providers/simple.js.map +1 -0
  64. package/dist/src/lib/changeset/index.d.ts +4 -0
  65. package/dist/src/lib/changeset/index.d.ts.map +1 -0
  66. package/dist/src/lib/changeset/index.js +4 -0
  67. package/dist/src/lib/changeset/index.js.map +1 -0
  68. package/dist/src/lib/changeset/parser.d.ts +18 -0
  69. package/dist/src/lib/changeset/parser.d.ts.map +1 -0
  70. package/dist/src/lib/changeset/parser.js +52 -0
  71. package/dist/src/lib/changeset/parser.js.map +1 -0
  72. package/dist/src/lib/changeset/semver.d.ts +15 -0
  73. package/dist/src/lib/changeset/semver.d.ts.map +1 -0
  74. package/dist/src/lib/changeset/semver.js +29 -0
  75. package/dist/src/lib/changeset/semver.js.map +1 -0
  76. package/dist/src/lib/changeset/writer.d.ts +17 -0
  77. package/dist/src/lib/changeset/writer.d.ts.map +1 -0
  78. package/dist/src/lib/changeset/writer.js +33 -0
  79. package/dist/src/lib/changeset/writer.js.map +1 -0
  80. package/dist/src/lib/config/index.d.ts +3 -0
  81. package/dist/src/lib/config/index.d.ts.map +1 -0
  82. package/dist/src/lib/config/index.js +2 -0
  83. package/dist/src/lib/config/index.js.map +1 -0
  84. package/dist/src/lib/config/loader.d.ts +23 -0
  85. package/dist/src/lib/config/loader.d.ts.map +1 -0
  86. package/dist/src/lib/config/loader.js +89 -0
  87. package/dist/src/lib/config/loader.js.map +1 -0
  88. package/dist/src/lib/config/types.d.ts +6 -0
  89. package/dist/src/lib/config/types.d.ts.map +1 -0
  90. package/dist/src/lib/config/types.js +2 -0
  91. package/dist/src/lib/config/types.js.map +1 -0
  92. package/dist/src/lib/git/commits.d.ts +33 -0
  93. package/dist/src/lib/git/commits.d.ts.map +1 -0
  94. package/dist/src/lib/git/commits.js +174 -0
  95. package/dist/src/lib/git/commits.js.map +1 -0
  96. package/dist/src/lib/git/index.d.ts +2 -0
  97. package/dist/src/lib/git/index.d.ts.map +1 -0
  98. package/dist/src/lib/git/index.js +2 -0
  99. package/dist/src/lib/git/index.js.map +1 -0
  100. package/dist/src/lib/index.d.ts +6 -0
  101. package/dist/src/lib/index.d.ts.map +1 -0
  102. package/dist/src/lib/index.js +6 -0
  103. package/dist/src/lib/index.js.map +1 -0
  104. package/dist/src/lib/packages/discovery.d.ts +18 -0
  105. package/dist/src/lib/packages/discovery.d.ts.map +1 -0
  106. package/dist/src/lib/packages/discovery.js +76 -0
  107. package/dist/src/lib/packages/discovery.js.map +1 -0
  108. package/dist/src/lib/packages/index.d.ts +2 -0
  109. package/dist/src/lib/packages/index.d.ts.map +1 -0
  110. package/dist/src/lib/packages/index.js +2 -0
  111. package/dist/src/lib/packages/index.js.map +1 -0
  112. package/dist/src/types/index.d.ts +54 -0
  113. package/dist/src/types/index.d.ts.map +1 -0
  114. package/dist/src/types/index.js +2 -0
  115. package/dist/src/types/index.js.map +1 -0
  116. package/dist/tsconfig.tsbuildinfo +1 -0
  117. package/package.json +66 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../src/cli/commands/check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const generateCommand: Command;
3
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,eAAO,MAAM,eAAe,SAmHxB,CAAC"}
@@ -0,0 +1,100 @@
1
+ import { Command } from 'commander';
2
+ import ora from 'ora';
3
+ import { createChangesetFile, determineBumpType, discoverPackages, generateChangelog, getCommitsSinceLastChangeset, isGitRepository, loadConfig, parseConventionalCommits, } from '../../lib/index.js';
4
+ import { EXIT_CODE, logError, logInfo, logStep, logSuccess, logWarning } from '../utils/index.js';
5
+ export const generateCommand = new Command('generate')
6
+ .description('Generate changeset from conventional commits')
7
+ .option('--since <ref>', 'Git reference to compare against')
8
+ .option('--provider <type>', 'Changelog provider (claude-cli|anthropic-api|simple|auto)', 'auto')
9
+ .option('--no-amend', 'Do not amend the last commit')
10
+ .option('--dry-run', 'Preview changeset without creating file')
11
+ .option('--config <path>', 'Path to release config file')
12
+ .option('--changeset-dir <path>', 'Changeset directory (default: .changeset)')
13
+ .option('--packages <names>', 'Comma-separated package names (overrides config)')
14
+ .action(async (options) => {
15
+ try {
16
+ // Check if we're in a git repository
17
+ if (!isGitRepository()) {
18
+ logError('Not a git repository');
19
+ process.exit(EXIT_CODE.GIT_ERROR);
20
+ }
21
+ logStep('Checking for commits that need changesets...');
22
+ // Load configuration
23
+ const config = await loadConfig({
24
+ changelogProvider: options.provider,
25
+ changesetDir: options.changesetDir,
26
+ autoAmend: options.amend,
27
+ packages: options.packages ? options.packages.split(',').map((p) => p.trim()) : undefined,
28
+ });
29
+ // Get commits since last changeset
30
+ const commitHashes = getCommitsSinceLastChangeset(config.changesetDir);
31
+ if (commitHashes.length === 0) {
32
+ logInfo('No new commits found. Nothing to do.');
33
+ process.exit(EXIT_CODE.NO_COMMITS);
34
+ }
35
+ logInfo(`Found ${commitHashes.length} commit(s) to process`);
36
+ // Parse conventional commits
37
+ const commits = parseConventionalCommits(commitHashes);
38
+ // Warn about non-conventional commits
39
+ const skippedCount = commitHashes.length - commits.length;
40
+ if (skippedCount > 0) {
41
+ logWarning(`Skipped ${skippedCount} non-conventional commit(s). Use format: type(scope): subject`);
42
+ }
43
+ if (commits.length === 0) {
44
+ logError('No conventional commits found. Skipping changeset generation.');
45
+ logInfo('Commits must follow format: type(scope): subject (e.g., feat(cli): add new command)');
46
+ process.exit(EXIT_CODE.NO_CONVENTIONAL_COMMITS);
47
+ }
48
+ logSuccess(`Found ${commits.length} valid conventional commit(s)`);
49
+ // Determine bump type
50
+ const bumpType = determineBumpType(commits);
51
+ logInfo(`Determined version bump: ${bumpType}`);
52
+ // Generate changelog
53
+ const spinner = ora('Generating changelog...').start();
54
+ const description = await generateChangelog(commits, config);
55
+ spinner.succeed('Changelog generated');
56
+ // Discover packages
57
+ let packages;
58
+ if (config.packages) {
59
+ packages = config.packages;
60
+ }
61
+ else {
62
+ packages = await discoverPackages(config.changesetConfigPath);
63
+ }
64
+ if (packages.length === 0) {
65
+ logError('No packages found. Check your changeset config.');
66
+ process.exit(EXIT_CODE.CONFIG_ERROR);
67
+ }
68
+ logInfo(`Found ${packages.length} package(s)`);
69
+ // Preview mode
70
+ if (options.dryRun) {
71
+ console.log('\n📋 Changeset Preview:');
72
+ console.log('---');
73
+ console.log(`Bump type: ${bumpType}`);
74
+ console.log(`Packages: ${packages.join(', ')}`);
75
+ console.log('\nChangelog:');
76
+ console.log(description);
77
+ console.log('---');
78
+ process.exit(EXIT_CODE.SUCCESS);
79
+ }
80
+ // Create changeset file
81
+ const result = createChangesetFile({
82
+ bumpType,
83
+ commits,
84
+ description,
85
+ }, packages, config.changesetDir);
86
+ logSuccess(`Created changeset: ${result.filename}`);
87
+ logInfo(` Bump type: ${bumpType}`);
88
+ logInfo(` Commits: ${commits.length}`);
89
+ console.log('\n📋 Changelog preview:');
90
+ console.log('---');
91
+ console.log(description);
92
+ console.log('---');
93
+ process.exit(EXIT_CODE.SUCCESS);
94
+ }
95
+ catch (error) {
96
+ logError(`Failed to generate changeset: ${error.message}`);
97
+ process.exit(EXIT_CODE.ERROR);
98
+ }
99
+ });
100
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { checkCommand } from './check.js';
2
+ export { generateCommand } from './generate.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { checkCommand } from './check.js';
2
+ export { generateCommand } from './generate.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runCli(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"AAKA,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAa1D"}
@@ -0,0 +1,15 @@
1
+ import { Command } from 'commander';
2
+ import { checkCommand, generateCommand } from './commands/index.js';
3
+ const VERSION = '0.22.0';
4
+ export async function runCli(argv) {
5
+ const program = new Command();
6
+ program
7
+ .name('release-automation')
8
+ .description('Automated release management with changesets and conventional commits')
9
+ .version(VERSION);
10
+ // Add commands
11
+ program.addCommand(generateCommand);
12
+ program.addCommand(checkCommand);
13
+ await program.parseAsync(argv);
14
+ }
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEpE,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEzB,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAc;IACzC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,oBAAoB,CAAC;SAC1B,WAAW,CAAC,uEAAuE,CAAC;SACpF,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB,eAAe;IACf,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IACpC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAEjC,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare const EXIT_CODE: {
2
+ readonly SUCCESS: 0;
3
+ readonly ERROR: 1;
4
+ readonly NO_CHANGESETS: 10;
5
+ readonly NO_COMMITS: 11;
6
+ readonly NO_CONVENTIONAL_COMMITS: 12;
7
+ readonly CONFIG_ERROR: 20;
8
+ readonly GIT_ERROR: 30;
9
+ };
10
+ export type ExitCode = (typeof EXIT_CODE)[keyof typeof EXIT_CODE];
11
+ //# sourceMappingURL=exit-codes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exit-codes.d.ts","sourceRoot":"","sources":["../../../../src/cli/utils/exit-codes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;;;CAQZ,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export const EXIT_CODE = {
2
+ SUCCESS: 0,
3
+ ERROR: 1,
4
+ NO_CHANGESETS: 10,
5
+ NO_COMMITS: 11,
6
+ NO_CONVENTIONAL_COMMITS: 12,
7
+ CONFIG_ERROR: 20,
8
+ GIT_ERROR: 30,
9
+ };
10
+ //# sourceMappingURL=exit-codes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exit-codes.js","sourceRoot":"","sources":["../../../../src/cli/utils/exit-codes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,aAAa,EAAE,EAAE;IACjB,UAAU,EAAE,EAAE;IACd,uBAAuB,EAAE,EAAE;IAC3B,YAAY,EAAE,EAAE;IAChB,SAAS,EAAE,EAAE;CACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './exit-codes.js';
2
+ export * from './logger.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './exit-codes.js';
2
+ export * from './logger.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function logSuccess(message: string): void;
2
+ export declare function logError(message: string): void;
3
+ export declare function logWarning(message: string): void;
4
+ export declare function logInfo(message: string): void;
5
+ export declare function logStep(message: string): void;
6
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/cli/utils/logger.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C"}
@@ -0,0 +1,17 @@
1
+ import chalk from 'chalk';
2
+ export function logSuccess(message) {
3
+ console.log(chalk.green(`✅ ${message}`));
4
+ }
5
+ export function logError(message) {
6
+ console.error(chalk.red(`❌ ${message}`));
7
+ }
8
+ export function logWarning(message) {
9
+ console.warn(chalk.yellow(`⚠️ ${message}`));
10
+ }
11
+ export function logInfo(message) {
12
+ console.log(chalk.cyan(`ℹ️ ${message}`));
13
+ }
14
+ export function logStep(message) {
15
+ console.log(chalk.gray(`🔄 ${message}`));
16
+ }
17
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../src/cli/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './lib/index.js';
2
+ export * from './types/index.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './lib/index.js';
2
+ export * from './types/index.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ChangelogProvider, ConventionalCommit, ReleaseConfig } from '../../types/index.js';
2
+ /**
3
+ * Generate changelog using configured provider with fallback cascade
4
+ */
5
+ export declare function generateChangelog(commits: ConventionalCommit[], config?: Partial<ReleaseConfig>): Promise<string>;
6
+ /**
7
+ * Get available changelog providers in priority order
8
+ */
9
+ export declare function getAvailableProviders(config?: Partial<ReleaseConfig>): ChangelogProvider[];
10
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../../src/lib/changelog/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGjG;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,kBAAkB,EAAE,EAC7B,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,iBAAiB,EAAE,CAU1F"}
@@ -0,0 +1,47 @@
1
+ import { AnthropicApiProvider, ClaudeCliProvider, SimpleProvider } from './providers/index.js';
2
+ /**
3
+ * Generate changelog using configured provider with fallback cascade
4
+ */
5
+ export async function generateChangelog(commits, config) {
6
+ const providers = getAvailableProviders(config);
7
+ for (const provider of providers) {
8
+ try {
9
+ if (await provider.isAvailable()) {
10
+ console.log(`✨ Generating changelog with ${provider.name}...`);
11
+ const result = await provider.generate(commits);
12
+ return result;
13
+ }
14
+ }
15
+ catch (error) {
16
+ console.warn(`⚠️ ${provider.name} failed:`, error.message);
17
+ // Continue to next provider
18
+ }
19
+ }
20
+ // Final fallback (should never reach here since SimpleProvider is always available)
21
+ console.log('📝 Using simple changelog generation');
22
+ const simple = new SimpleProvider();
23
+ return simple.generate(commits);
24
+ }
25
+ /**
26
+ * Get available changelog providers in priority order
27
+ */
28
+ export function getAvailableProviders(config) {
29
+ const provider = config?.changelogProvider || 'auto';
30
+ // If specific provider requested, try only that one
31
+ if (provider !== 'auto') {
32
+ return [createProvider(provider, config), new SimpleProvider()];
33
+ }
34
+ // Auto mode: try all providers in priority order
35
+ return [new ClaudeCliProvider(), new AnthropicApiProvider(config?.anthropicApiKey), new SimpleProvider()];
36
+ }
37
+ function createProvider(type, config) {
38
+ switch (type) {
39
+ case 'claude-cli':
40
+ return new ClaudeCliProvider();
41
+ case 'anthropic-api':
42
+ return new AnthropicApiProvider(config?.anthropicApiKey);
43
+ case 'simple':
44
+ return new SimpleProvider();
45
+ }
46
+ }
47
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../src/lib/changelog/generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE/F;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA6B,EAC7B,MAA+B;IAE/B,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAEhD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,IAAI,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,+BAA+B,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC;gBAC/D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAChD,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,IAAI,UAAU,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YACvE,4BAA4B;QAC9B,CAAC;IACH,CAAC;IAED,oFAAoF;IACpF,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;IACpC,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAA+B;IACnE,MAAM,QAAQ,GAAG,MAAM,EAAE,iBAAiB,IAAI,MAAM,CAAC;IAErD,oDAAoD;IACpD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,IAAI,cAAc,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,iDAAiD;IACjD,OAAO,CAAC,IAAI,iBAAiB,EAAE,EAAE,IAAI,oBAAoB,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,IAAI,cAAc,EAAE,CAAC,CAAC;AAC5G,CAAC;AAED,SAAS,cAAc,CACrB,IAA+C,EAC/C,MAA+B;IAE/B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,YAAY;YACf,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACjC,KAAK,eAAe;YAClB,OAAO,IAAI,oBAAoB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAC3D,KAAK,QAAQ;YACX,OAAO,IAAI,cAAc,EAAE,CAAC;IAChC,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { generateChangelog, getAvailableProviders } from './generator.js';
2
+ export * from './providers/index.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/changelog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { generateChangelog, getAvailableProviders } from './generator.js';
2
+ export * from './providers/index.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/changelog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ChangelogProvider, ConventionalCommit } from '../../../types/index.js';
2
+ export declare class AnthropicApiProvider implements ChangelogProvider {
3
+ private apiKey?;
4
+ name: string;
5
+ constructor(apiKey?: string | undefined);
6
+ isAvailable(): Promise<boolean>;
7
+ generate(commits: ConventionalCommit[]): Promise<string>;
8
+ }
9
+ //# sourceMappingURL=anthropic-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-api.d.ts","sourceRoot":"","sources":["../../../../../src/lib/changelog/providers/anthropic-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAErF,qBAAa,oBAAqB,YAAW,iBAAiB;IAGhD,OAAO,CAAC,MAAM,CAAC;IAF3B,IAAI,SAAmB;gBAEH,MAAM,CAAC,EAAE,MAAM,YAAA;IAE7B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAiD/D"}
@@ -0,0 +1,77 @@
1
+ export class AnthropicApiProvider {
2
+ constructor(apiKey) {
3
+ this.apiKey = apiKey;
4
+ this.name = 'anthropic-api';
5
+ }
6
+ async isAvailable() {
7
+ return !!this.apiKey || !!process.env.ANTHROPIC_API_KEY;
8
+ }
9
+ async generate(commits) {
10
+ const apiKey = this.apiKey || process.env.ANTHROPIC_API_KEY;
11
+ if (!apiKey) {
12
+ throw new Error('ANTHROPIC_API_KEY not provided');
13
+ }
14
+ const prompt = buildPrompt(commits);
15
+ const https = await import('node:https');
16
+ const data = JSON.stringify({
17
+ model: 'claude-3-5-haiku-20241022',
18
+ max_tokens: 500,
19
+ messages: [{ role: 'user', content: prompt }],
20
+ });
21
+ return new Promise((resolve, reject) => {
22
+ const options = {
23
+ hostname: 'api.anthropic.com',
24
+ port: 443,
25
+ path: '/v1/messages',
26
+ method: 'POST',
27
+ headers: {
28
+ 'Content-Type': 'application/json',
29
+ 'x-api-key': apiKey,
30
+ 'anthropic-version': '2023-06-01',
31
+ 'Content-Length': data.length,
32
+ },
33
+ };
34
+ const req = https.request(options, (res) => {
35
+ let body = '';
36
+ res.on('data', (chunk) => (body += chunk));
37
+ res.on('end', () => {
38
+ if (res.statusCode === 200) {
39
+ const response = JSON.parse(body);
40
+ resolve(response.content[0].text.trim());
41
+ }
42
+ else {
43
+ reject(new Error(`API error: ${res.statusCode} ${body}`));
44
+ }
45
+ });
46
+ });
47
+ req.on('error', reject);
48
+ req.write(data);
49
+ req.end();
50
+ });
51
+ }
52
+ }
53
+ function buildPrompt(commits) {
54
+ const commitSummary = commits
55
+ .map((c) => `- ${c.type}${c.scope ? `(${c.scope})` : ''}: ${c.subject}\n ${c.body || '(no additional details)'}`)
56
+ .join('\n\n');
57
+ return `You are analyzing git commits to generate a changelog entry. Here are the commits:
58
+
59
+ ${commitSummary}
60
+
61
+ Generate a concise changelog description as bullet points. Rules:
62
+ - Use 2-5 bullet points maximum
63
+ - Focus on user-facing changes and impact
64
+ - Group related changes together
65
+ - Use clear, non-technical language where possible
66
+ - Start each bullet with a dash and capitalize the first word
67
+ - Do NOT include commit hashes, types, or scopes
68
+ - Do NOT use markdown formatting besides the dashes
69
+
70
+ Example format:
71
+ - Added user authentication with OAuth support
72
+ - Fixed critical bug in data synchronization
73
+ - Improved performance of search queries by 50%
74
+
75
+ Now generate the changelog for the commits above:`;
76
+ }
77
+ //# sourceMappingURL=anthropic-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-api.js","sourceRoot":"","sources":["../../../../../src/lib/changelog/providers/anthropic-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ChangelogProvider, ConventionalCommit } from '../../../types/index.js';
2
+ export declare class ClaudeCliProvider implements ChangelogProvider {
3
+ name: string;
4
+ isAvailable(): Promise<boolean>;
5
+ generate(commits: ConventionalCommit[]): Promise<string>;
6
+ }
7
+ //# sourceMappingURL=claude-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-cli.d.ts","sourceRoot":"","sources":["../../../../../src/lib/changelog/providers/claude-cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAErF,qBAAa,iBAAkB,YAAW,iBAAiB;IACzD,IAAI,SAAgB;IAEd,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAsB/D"}
@@ -0,0 +1,63 @@
1
+ import { execSync } from 'node:child_process';
2
+ import { writeFileSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ export class ClaudeCliProvider {
5
+ constructor() {
6
+ this.name = 'claude-cli';
7
+ }
8
+ async isAvailable() {
9
+ try {
10
+ execSync('which claude', { stdio: 'pipe' });
11
+ return true;
12
+ }
13
+ catch {
14
+ return false;
15
+ }
16
+ }
17
+ async generate(commits) {
18
+ const prompt = buildPrompt(commits);
19
+ const tempFile = join(process.cwd(), `.changeset-prompt-${Date.now()}.txt`);
20
+ try {
21
+ writeFileSync(tempFile, prompt);
22
+ const result = execSync(`claude -p "$(cat ${tempFile})"`, {
23
+ encoding: 'utf8',
24
+ stdio: ['pipe', 'pipe', 'pipe'],
25
+ });
26
+ return result.trim();
27
+ }
28
+ finally {
29
+ // Always cleanup temp file
30
+ try {
31
+ execSync(`rm ${tempFile}`);
32
+ }
33
+ catch {
34
+ // Ignore cleanup errors
35
+ }
36
+ }
37
+ }
38
+ }
39
+ function buildPrompt(commits) {
40
+ const commitSummary = commits
41
+ .map((c) => `- ${c.type}${c.scope ? `(${c.scope})` : ''}: ${c.subject}\n ${c.body || '(no additional details)'}`)
42
+ .join('\n\n');
43
+ return `You are analyzing git commits to generate a changelog entry. Here are the commits:
44
+
45
+ ${commitSummary}
46
+
47
+ Generate a concise changelog description as bullet points. Rules:
48
+ - Use 2-5 bullet points maximum
49
+ - Focus on user-facing changes and impact
50
+ - Group related changes together
51
+ - Use clear, non-technical language where possible
52
+ - Start each bullet with a dash and capitalize the first word
53
+ - Do NOT include commit hashes, types, or scopes
54
+ - Do NOT use markdown formatting besides the dashes
55
+
56
+ Example format:
57
+ - Added user authentication with OAuth support
58
+ - Fixed critical bug in data synchronization
59
+ - Improved performance of search queries by 50%
60
+
61
+ Now generate the changelog for the commits above:`;
62
+ }
63
+ //# sourceMappingURL=claude-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-cli.js","sourceRoot":"","sources":["../../../../../src/lib/changelog/providers/claude-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,OAAO,iBAAiB;IAA9B;QACE,SAAI,GAAG,YAAY,CAAC;IAiCtB,CAAC;IA/BC,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,QAAQ,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAA6B;QAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE5E,IAAI,CAAC;YACH,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEhC,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,QAAQ,IAAI,EAAE;gBACxD,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;gBAAS,CAAC;YACT,2BAA2B;YAC3B,IAAI,CAAC;gBACH,QAAQ,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,SAAS,WAAW,CAAC,OAA6B;IAChD,MAAM,aAAa,GAAG,OAAO;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,IAAI,IAAI,yBAAyB,EAAE,CAAC;SACjH,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO;;EAEP,aAAa;;;;;;;;;;;;;;;;kDAgBmC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { AnthropicApiProvider } from './anthropic-api.js';
2
+ export { ClaudeCliProvider } from './claude-cli.js';
3
+ export { SimpleProvider } from './simple.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/changelog/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { AnthropicApiProvider } from './anthropic-api.js';
2
+ export { ClaudeCliProvider } from './claude-cli.js';
3
+ export { SimpleProvider } from './simple.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lib/changelog/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ChangelogProvider, ConventionalCommit } from '../../../types/index.js';
2
+ export declare class SimpleProvider implements ChangelogProvider {
3
+ name: string;
4
+ isAvailable(): Promise<boolean>;
5
+ generate(commits: ConventionalCommit[]): Promise<string>;
6
+ }
7
+ //# sourceMappingURL=simple.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple.d.ts","sourceRoot":"","sources":["../../../../../src/lib/changelog/providers/simple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAErF,qBAAa,cAAe,YAAW,iBAAiB;IACtD,IAAI,SAAY;IAEV,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAyB/D"}
@@ -0,0 +1,33 @@
1
+ export class SimpleProvider {
2
+ constructor() {
3
+ this.name = 'simple';
4
+ }
5
+ async isAvailable() {
6
+ return true; // Always available
7
+ }
8
+ async generate(commits) {
9
+ // Group commits by type
10
+ const features = commits.filter((c) => c.type === 'feat');
11
+ const fixes = commits.filter((c) => c.type === 'fix');
12
+ const others = commits.filter((c) => !['feat', 'fix'].includes(c.type));
13
+ const lines = [];
14
+ // Add features first
15
+ if (features.length > 0) {
16
+ lines.push(...features.map((c) => formatCommit(c)));
17
+ }
18
+ // Add fixes
19
+ if (fixes.length > 0) {
20
+ lines.push(...fixes.map((c) => formatCommit(c)));
21
+ }
22
+ // Add others if we have room (limit to 5 total)
23
+ if (others.length > 0 && lines.length < 5) {
24
+ lines.push(...others.map((c) => formatCommit(c)).slice(0, 5 - lines.length));
25
+ }
26
+ return lines.slice(0, 5).join('\n');
27
+ }
28
+ }
29
+ function formatCommit(commit) {
30
+ const scope = commit.scope ? `**${commit.scope}**: ` : '';
31
+ return `- ${scope}${commit.subject}`;
32
+ }
33
+ //# sourceMappingURL=simple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple.js","sourceRoot":"","sources":["../../../../../src/lib/changelog/providers/simple.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,cAAc;IAA3B;QACE,SAAI,GAAG,QAAQ,CAAC;IA+BlB,CAAC;IA7BC,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,CAAC,mBAAmB;IAClC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAA6B;QAC1C,wBAAwB;QACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAExE,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,qBAAqB;QACrB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,YAAY;QACZ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,gDAAgD;QAChD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/E,CAAC;QAED,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACF;AAED,SAAS,YAAY,CAAC,MAA0B;IAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,OAAO,KAAK,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;AACvC,CAAC"}