@entro314labs/ai-changelog-generator 3.0.5 → 3.2.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 (51) hide show
  1. package/CHANGELOG.md +383 -785
  2. package/README.md +30 -3
  3. package/ai-changelog-mcp.sh +0 -0
  4. package/ai-changelog.sh +0 -0
  5. package/bin/ai-changelog-dxt.js +9 -9
  6. package/bin/ai-changelog-mcp.js +19 -17
  7. package/bin/ai-changelog.js +6 -6
  8. package/package.json +84 -52
  9. package/src/ai-changelog-generator.js +83 -81
  10. package/src/application/orchestrators/changelog.orchestrator.js +1040 -296
  11. package/src/application/services/application.service.js +145 -123
  12. package/src/cli.js +76 -57
  13. package/src/domains/ai/ai-analysis.service.js +289 -209
  14. package/src/domains/analysis/analysis.engine.js +253 -193
  15. package/src/domains/changelog/changelog.service.js +1062 -784
  16. package/src/domains/changelog/workspace-changelog.service.js +420 -249
  17. package/src/domains/git/git-repository.analyzer.js +348 -258
  18. package/src/domains/git/git.service.js +132 -112
  19. package/src/infrastructure/cli/cli.controller.js +415 -247
  20. package/src/infrastructure/config/configuration.manager.js +220 -190
  21. package/src/infrastructure/interactive/interactive-staging.service.js +332 -0
  22. package/src/infrastructure/interactive/interactive-workflow.service.js +200 -159
  23. package/src/infrastructure/mcp/mcp-server.service.js +208 -207
  24. package/src/infrastructure/metrics/metrics.collector.js +140 -123
  25. package/src/infrastructure/providers/core/base-provider.js +87 -40
  26. package/src/infrastructure/providers/implementations/anthropic.js +101 -99
  27. package/src/infrastructure/providers/implementations/azure.js +124 -101
  28. package/src/infrastructure/providers/implementations/bedrock.js +136 -126
  29. package/src/infrastructure/providers/implementations/dummy.js +23 -23
  30. package/src/infrastructure/providers/implementations/google.js +123 -114
  31. package/src/infrastructure/providers/implementations/huggingface.js +94 -87
  32. package/src/infrastructure/providers/implementations/lmstudio.js +75 -60
  33. package/src/infrastructure/providers/implementations/mock.js +69 -73
  34. package/src/infrastructure/providers/implementations/ollama.js +89 -66
  35. package/src/infrastructure/providers/implementations/openai.js +88 -89
  36. package/src/infrastructure/providers/implementations/vertex.js +227 -197
  37. package/src/infrastructure/providers/provider-management.service.js +245 -207
  38. package/src/infrastructure/providers/provider-manager.service.js +145 -125
  39. package/src/infrastructure/providers/utils/base-provider-helpers.js +308 -302
  40. package/src/infrastructure/providers/utils/model-config.js +220 -195
  41. package/src/infrastructure/providers/utils/provider-utils.js +105 -100
  42. package/src/infrastructure/validation/commit-message-validation.service.js +556 -0
  43. package/src/shared/constants/colors.js +467 -172
  44. package/src/shared/utils/cli-demo.js +285 -0
  45. package/src/shared/utils/cli-entry-utils.js +257 -249
  46. package/src/shared/utils/cli-ui.js +447 -0
  47. package/src/shared/utils/diff-processor.js +513 -0
  48. package/src/shared/utils/error-classes.js +125 -156
  49. package/src/shared/utils/json-utils.js +93 -89
  50. package/src/shared/utils/utils.js +1299 -775
  51. package/types/index.d.ts +353 -344
package/README.md CHANGED
@@ -108,7 +108,8 @@ npm install
108
108
 
109
109
  ### Basic Usage
110
110
 
111
- #### Using installed package:
111
+ #### Using installed package
112
+
112
113
  ```bash
113
114
  # Generate changelog from recent commits
114
115
  ai-changelog
@@ -126,7 +127,8 @@ ai-changelog-mcp
126
127
  ai-changelog --help
127
128
  ```
128
129
 
129
- #### Using bash wrappers (from source):
130
+ #### Using bash wrappers (from source)
131
+
130
132
  ```bash
131
133
  # Generate changelog from recent commits
132
134
  ./ai-changelog.sh
@@ -148,6 +150,30 @@ ai-changelog --help
148
150
 
149
151
  That's it! Your AI-powered changelog is ready to generate.
150
152
 
153
+ ## Demo
154
+
155
+ ### Interactive Mode
156
+
157
+ See the tool in action with our interactive mode demo:
158
+
159
+ ![Interactive Demo](docs/media/demo-interactive-optimized.gif)
160
+
161
+ *Interactive mode with guided setup and provider selection*
162
+
163
+ ### Quick Generation
164
+
165
+ Watch how fast you can generate professional changelogs:
166
+
167
+ ![Quick Demo](docs/media/demo-quick-real.gif)
168
+
169
+ *Generate changelogs from recent commits in seconds*
170
+
171
+ ### Video Walkthrough
172
+
173
+ For a complete walkthrough of features and capabilities:
174
+
175
+ [📺 Watch Full Demo Video](docs/media/demo-interactive.mp4)
176
+
151
177
  ## How It Works
152
178
 
153
179
  1. **Code Analysis**: Analyzes actual git diffs and file changes using advanced AI models
@@ -326,6 +352,7 @@ ai-changelog health --detailed
326
352
  - **[Configuration Reference](./docs/configuration.md)** - All YAML and environment options
327
353
  - **[MCP Integration](./docs/mcp-integration.md)** - Claude Desktop and MCP server setup
328
354
  - **[API Reference](./docs/api-reference.md)** - All commands, options, and programmatic usage
355
+ - **[Demo Media](./docs/media/)** - Interactive demos, GIFs, and video walkthroughs
329
356
 
330
357
  ## Contributing
331
358
 
@@ -390,4 +417,4 @@ MIT License - see the [LICENSE](LICENSE) file for details.
390
417
 
391
418
  [GitHub](https://github.com/entro314-labs) • [NPM Package](https://www.npmjs.com/package/@entro314labs/ai-changelog-generator) • [Issues](https://github.com/entro314-labs/AI-changelog-generator/issues) • [Discussions](https://github.com/entro314-labs/AI-changelog-generator/discussions)
392
419
 
393
- </div>
420
+ </div>
File without changes
package/ai-changelog.sh CHANGED
File without changes
@@ -5,11 +5,11 @@
5
5
  * Optimized for DXT packaging and Claude Desktop integration
6
6
  */
7
7
 
8
- import AIChangelogMCPServer from '../src/infrastructure/mcp/mcp-server.service.js';
9
- import { runMCPServer, setupProcessErrorHandlers } from '../src/shared/utils/cli-entry-utils.js';
8
+ import AIChangelogMCPServer from '../src/infrastructure/mcp/mcp-server.service.js'
9
+ import { runMCPServer, setupProcessErrorHandlers } from '../src/shared/utils/cli-entry-utils.js'
10
10
 
11
11
  // Setup error handlers for DXT environment
12
- setupProcessErrorHandlers('AI Changelog Generator - Claude Desktop Extension');
12
+ setupProcessErrorHandlers('AI Changelog Generator - Claude Desktop Extension')
13
13
 
14
14
  // DXT-specific initialization
15
15
  async function initializeDXTServer() {
@@ -19,17 +19,17 @@ async function initializeDXTServer() {
19
19
  AIChangelogMCPServer,
20
20
  {
21
21
  tools: ['generate_changelog', 'get_git_info', 'analyze_commits', 'list_providers'],
22
- debugMode: process.env.DEBUG === 'true'
22
+ debugMode: process.env.DEBUG === 'true',
23
23
  }
24
- );
24
+ )
25
25
  }
26
26
 
27
27
  // Start the server
28
28
  if (import.meta.url === `file://${process.argv[1]}`) {
29
29
  initializeDXTServer().catch((error) => {
30
- console.error('💥 Fatal error starting AI Changelog Generator:', error);
31
- process.exit(1);
32
- });
30
+ console.error('💥 Fatal error starting AI Changelog Generator:', error)
31
+ process.exit(1)
32
+ })
33
33
  }
34
34
 
35
- export { initializeDXTServer };
35
+ export { initializeDXTServer }
@@ -5,30 +5,32 @@
5
5
  * Model Context Protocol server for AI changelog generation
6
6
  */
7
7
 
8
- import AIChangelogMCPServer from '../src/infrastructure/mcp/mcp-server.service.js';
8
+ import AIChangelogMCPServer from '../src/infrastructure/mcp/mcp-server.service.js'
9
9
 
10
10
  // Setup error handlers
11
11
  process.on('uncaughtException', (error) => {
12
- console.error('MCP Server - Uncaught Exception:', error);
13
- process.exit(1);
14
- });
12
+ console.error('MCP Server - Uncaught Exception:', error)
13
+ process.exit(1)
14
+ })
15
15
 
16
16
  process.on('unhandledRejection', (reason, promise) => {
17
- console.error('MCP Server - Unhandled Rejection at:', promise, 'reason:', reason);
18
- process.exit(1);
19
- });
17
+ console.error('MCP Server - Unhandled Rejection at:', promise, 'reason:', reason)
18
+ process.exit(1)
19
+ })
20
20
 
21
21
  // Start the MCP server with new architecture
22
22
  if (import.meta.url === `file://${process.argv[1]}`) {
23
- try {
24
- console.error('🚀 Starting AI Changelog Generator MCP Server )...');
25
- const server = new AIChangelogMCPServer();
26
- server.run();
27
- } catch (error) {
28
- console.error('❌ Failed to start MCP Server:', error.message);
29
- if (process.env.DEBUG) {
30
- console.error(error.stack);
23
+ (async () => {
24
+ try {
25
+ console.error('🚀 Starting AI Changelog Generator MCP Server )...')
26
+ const server = new AIChangelogMCPServer()
27
+ await server.run()
28
+ } catch (error) {
29
+ console.error('❌ Failed to start MCP Server:', error.message)
30
+ if (process.env.DEBUG) {
31
+ console.error(error.stack)
32
+ }
33
+ process.exit(1)
31
34
  }
32
- process.exit(1);
33
- }
35
+ })().catch(() => process.exit(1))
34
36
  }
@@ -5,14 +5,14 @@
5
5
  * Main command-line interface (Updated for refactored architecture)
6
6
  */
7
7
 
8
- import { CLIController } from '../src/infrastructure/cli/cli.controller.js';
8
+ import { CLIController } from '../src/infrastructure/cli/cli.controller.js'
9
9
 
10
10
  // Run the CLI with new refactored architecture using proper CLI controller
11
- const cliController = new CLIController();
11
+ const cliController = new CLIController()
12
12
  cliController.runCLI().catch((error) => {
13
- console.error('❌ CLI Error:', error.message);
13
+ console.error('❌ CLI Error:', error.message)
14
14
  if (process.env.DEBUG) {
15
- console.error(error.stack);
15
+ console.error(error.stack)
16
16
  }
17
- process.exit(1);
18
- });
17
+ process.exit(1)
18
+ })
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@entro314labs/ai-changelog-generator",
3
3
  "displayName": "AI Changelog Generator",
4
- "version": "3.0.5",
4
+ "version": "3.2.0",
5
5
  "type": "module",
6
6
  "description": "AI-powered changelog generator with MCP server support - works with most providers, online and local models",
7
7
  "main": "src/ai-changelog-generator.js",
@@ -20,29 +20,88 @@
20
20
  "LICENSE",
21
21
  "CHANGELOG.md"
22
22
  ],
23
+ "scripts": {
24
+ "start": "node bin/ai-changelog.js",
25
+ "changelog": "node bin/ai-changelog.js",
26
+ "changelog:detailed": "node bin/ai-changelog.js --detailed",
27
+ "changelog:enterprise": "node bin/ai-changelog.js --enterprise",
28
+ "changelog:interactive": "node bin/ai-changelog.js --interactive",
29
+ "changelog:analyze": "node bin/ai-changelog.js --analyze",
30
+ "changelog:preview": "node bin/ai-changelog.js --dry-run",
31
+ "changelog:no-color": "node bin/ai-changelog.js --no-color",
32
+ "mcp": "node bin/ai-changelog-mcp.js",
33
+ "mcp:start": "node bin/ai-changelog-mcp.js",
34
+ "demo": "node test/test-end-to-end-full.js",
35
+ "lint": "exec biome lint src/",
36
+ "lint:fix": "exec biome lint --write src/",
37
+ "lint:fix-unsafe": "exec biome lint --unsafe --write src/",
38
+ "format": "exec biome format --write src/",
39
+ "format:unsafe": "exec biome format --write src/",
40
+ "format:check": "exec biome format src/",
41
+ "check": "exec biome check src/",
42
+ "check:fix": "exec biome check --write src/",
43
+ "test": "vitest run",
44
+ "test:watch": "vitest",
45
+ "test:ui": "vitest --ui",
46
+ "test:coverage": "vitest run --coverage",
47
+ "test:providers": "vitest run test/providers.test.js",
48
+ "test:cli": "vitest run test/cli.test.js",
49
+ "test:core": "vitest run test/core.test.js",
50
+ "test:services": "vitest run test/services.test.js",
51
+ "test:utils": "vitest run test/utils.test.js",
52
+ "test:integration": "vitest run test/integration.test.js",
53
+ "test:mcp": "vitest run test/mcp.test.js",
54
+ "test:styling": "vitest run test/cli-ui.test.js test/colors.test.js test/styling-integration.test.js",
55
+ "test:styling-e2e": "vitest run test/cli-styling-e2e.test.js --testTimeout=60000",
56
+ "test:legacy": "node test/test-runner.js comprehensive",
57
+ "test:git": "node src/domains/git/git.service.js info",
58
+ "setup": "node scripts/setup-azure-openai.js",
59
+ "config:create": "node src/infrastructure/config/configuration.manager.js create-sample",
60
+ "config:validate": "node src/infrastructure/config/configuration.manager.js validate",
61
+ "config:test-models": "node src/infrastructure/config/configuration.manager.js model-test",
62
+ "providers:test": "node test/test-providers.js",
63
+ "providers:validate": "node test/test-provider-switching.js",
64
+ "git:info": "node src/domains/git/git.service.js info",
65
+ "git:commits": "node src/domains/git/git.service.js commits 10",
66
+ "git:stats": "node src/domains/git/git.service.js stats 5",
67
+ "dxt:init": "npx @anthropic-ai/dxt init",
68
+ "dxt:pack": "npm run dxt:prepack && npx @anthropic-ai/dxt pack",
69
+ "dxt:prepack": "node -e \"const fs=require('fs'),path=require('path'); const src='node_modules/@modelcontextprotocol/sdk/dist', dest='node_modules/@modelcontextprotocol/sdk/dist'; if(fs.existsSync(src)) console.log('MCP SDK dist exists'); else console.error('MCP SDK dist missing');\"",
70
+ "dxt:validate": "npx @anthropic-ai/dxt validate",
71
+ "postinstall": "node -e \"console.log('\\n🎉 AI Changelog Generator installed!\\n\\n⚡ Quick Start:\\n ai-changelog - Generate changelog\\n ai-changelog --detailed - Detailed analysis\\n ai-changelog --interactive - Interactive mode\\n ai-changelog-mcp - Start MCP server\\n\\n🤖 AI Models Supported:\\n • GPT-4.1 series (1M context, 75% cost reduction)\\n • o3/o4 reasoning models (Azure-only)\\n • Automatic model selection\\n\\n📖 Docs: https://github.com/entro314-labs/AI-changelog-generator\\n\\n© All trademarks belong to their respective owners.\\n')\""
72
+ },
23
73
  "dependencies": {
24
- "@anthropic-ai/sdk": "^0.57.0",
25
- "@aws-sdk/client-bedrock-runtime": "^3.857.0",
26
- "@azure/identity": "^4.10.2",
74
+ "@anthropic-ai/sdk": "^0.59.0",
75
+ "@aws-sdk/client-bedrock-runtime": "^3.864.0",
76
+ "@azure/identity": "^4.11.1",
27
77
  "@clack/prompts": "^0.11.0",
28
- "@google/genai": "^1.12.0",
78
+ "@google/genai": "^1.13.0",
29
79
  "@google/generative-ai": "^0.24.1",
30
- "@huggingface/hub": "^2.4.0",
80
+ "@huggingface/hub": "^2.4.1",
31
81
  "@huggingface/inference": "^4.6.1",
32
82
  "@lmstudio/sdk": "^1.4.0",
33
- "@modelcontextprotocol/sdk": "^1.17.0",
34
- "@modelcontextprotocol/server-filesystem": "2025.7.1",
35
- "chalk": "^5.4.1",
83
+ "@modelcontextprotocol/sdk": "^1.17.2",
84
+ "@modelcontextprotocol/server-filesystem": "2025.7.29",
85
+ "boxen": "^8.0.1",
86
+ "chalk": "^5.5.0",
87
+ "cli-table3": "^0.6.5",
36
88
  "dotenv": "^17.2.1",
37
- "google-auth-library": "^10.2.0",
89
+ "figures": "^6.1.0",
90
+ "google-auth-library": "^10.2.1",
91
+ "gradient-string": "^3.0.0",
38
92
  "js-yaml": "^4.1.0",
39
- "ollama": "^0.5.16",
40
- "openai": "^5.11.0",
93
+ "ollama": "^0.5.17",
94
+ "openai": "^5.12.2",
95
+ "ora": "^8.2.0",
41
96
  "yargs": "^18.0.0"
42
97
  },
43
98
  "devDependencies": {
44
99
  "@anthropic-ai/dxt": "^0.2.6",
45
- "@types/node": "22.15.30"
100
+ "@types/node": "24.2.1",
101
+ "@vitest/coverage-v8": "^3.2.4",
102
+ "@vitest/ui": "^3.2.4",
103
+ "tempy": "^3.1.0",
104
+ "vitest": "^3.2.4"
46
105
  },
47
106
  "keywords": [
48
107
  "changelog",
@@ -78,12 +137,15 @@
78
137
  "bugs": {
79
138
  "url": "https://github.com/entro314-labs/AI-changelog-generator/issues"
80
139
  },
81
- "homepage": "https://github.com/entro314-labs/AI-changelog-generatorp#readme",
140
+ "homepage": "https://github.com/entro314-labs/AI-changelog-generator#readme",
82
141
  "license": "MIT",
83
142
  "publishConfig": {
84
143
  "access": "public"
85
144
  },
86
- "engines": {},
145
+ "engines": {
146
+ "node": ">=22.0.0",
147
+ "pnpm": ">=8.0.0"
148
+ },
87
149
  "funding": {
88
150
  "type": "github",
89
151
  "url": "https://github.com/sponsors/entro314-labs"
@@ -94,42 +156,12 @@
94
156
  }
95
157
  },
96
158
  "volta": {
97
- "node": "22.15.30",
98
- "npm": "11.4.1"
159
+ "node": "22.17.1",
160
+ "pnpm": "9.17.0"
99
161
  },
100
- "scripts": {
101
- "start": "node bin/ai-changelog.js",
102
- "changelog": "node bin/ai-changelog.js",
103
- "changelog:detailed": "node bin/ai-changelog.js --detailed",
104
- "changelog:enterprise": "node bin/ai-changelog.js --enterprise",
105
- "changelog:interactive": "node bin/ai-changelog.js --interactive",
106
- "changelog:analyze": "node bin/ai-changelog.js --analyze",
107
- "changelog:preview": "node bin/ai-changelog.js --dry-run",
108
- "changelog:no-color": "node bin/ai-changelog.js --no-color",
109
- "mcp": "node bin/ai-changelog-mcp.js",
110
- "mcp:start": "node bin/ai-changelog-mcp.js",
111
- "demo": "node test/test-end-to-end-full.js",
112
- "test": "node test/test-runner.js comprehensive",
113
- "test:comprehensive": "node test/test-runner.js comprehensive",
114
- "test:providers": "node test/test-runner.js providers",
115
- "test:mcp": "node test/test-runner.js mcp",
116
- "test:errors": "node test/test-runner.js errors",
117
- "test:switching": "node test/test-runner.js switching",
118
- "test:individual": "node test/test-mcp-tools.js",
119
- "test:git": "node src/domains/git/git.service.js info",
120
- "setup": "node scripts/setup-azure-openai.js",
121
- "config:create": "node src/infrastructure/config/configuration.manager.js create-sample",
122
- "config:validate": "node src/infrastructure/config/configuration.manager.js validate",
123
- "config:test-models": "node src/infrastructure/config/configuration.manager.js model-test",
124
- "providers:test": "node test/test-providers.js",
125
- "providers:validate": "node test/test-provider-switching.js",
126
- "git:info": "node src/domains/git/git.service.js info",
127
- "git:commits": "node src/domains/git/git.service.js commits 10",
128
- "git:stats": "node src/domains/git/git.service.js stats 5",
129
- "dxt:init": "npx @anthropic-ai/dxt init",
130
- "dxt:pack": "npm run dxt:prepack && npx @anthropic-ai/dxt pack",
131
- "dxt:prepack": "node -e \"const fs=require('fs'),path=require('path'); const src='node_modules/@modelcontextprotocol/sdk/dist', dest='node_modules/@modelcontextprotocol/sdk/dist'; if(fs.existsSync(src)) console.log('MCP SDK dist exists'); else console.error('MCP SDK dist missing');\"",
132
- "dxt:validate": "npx @anthropic-ai/dxt validate",
133
- "postinstall": "node -e \"console.log('\\n🎉 AI Changelog Generator installed!\\n\\n⚡ Quick Start:\\n ai-changelog - Generate changelog\\n ai-changelog --detailed - Detailed analysis\\n ai-changelog --interactive - Interactive mode\\n ai-changelog-mcp - Start MCP server\\n\\n🤖 AI Models Supported:\\n • GPT-4.1 series (1M context, 75% cost reduction)\\n • o3/o4 reasoning models (Azure-only)\\n • Automatic model selection\\n\\n📖 Docs: https://github.com/entro314-labs/AI-changelog-generator\\n\\n© All trademarks belong to their respective owners.\\n')\""
162
+ "pnpm": {
163
+ "overrides": {
164
+ "tmp@<=0.2.3": ">=0.2.4"
165
+ }
134
166
  }
135
- }
167
+ }