grok-cli-hurry-mode 1.0.4 → 1.0.5

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 (80) hide show
  1. package/dist/hooks/use-input-handler.js +588 -0
  2. package/dist/hooks/use-input-handler.js.map +1 -1
  3. package/dist/subagents/subagent-framework.d.ts +66 -0
  4. package/dist/subagents/subagent-framework.js +349 -0
  5. package/dist/subagents/subagent-framework.js.map +1 -0
  6. package/dist/tools/documentation/agent-system-generator.d.ts +30 -0
  7. package/dist/tools/documentation/agent-system-generator.js +816 -0
  8. package/dist/tools/documentation/agent-system-generator.js.map +1 -0
  9. package/dist/tools/documentation/api-docs-generator.d.ts +89 -0
  10. package/dist/tools/documentation/api-docs-generator.js +344 -0
  11. package/dist/tools/documentation/api-docs-generator.js.map +1 -0
  12. package/dist/tools/documentation/auto-update-system.d.ts +47 -0
  13. package/dist/tools/documentation/auto-update-system.js +278 -0
  14. package/dist/tools/documentation/auto-update-system.js.map +1 -0
  15. package/dist/tools/documentation/changelog-generator.d.ts +39 -0
  16. package/dist/tools/documentation/changelog-generator.js +255 -0
  17. package/dist/tools/documentation/changelog-generator.js.map +1 -0
  18. package/dist/tools/documentation/claude-md-parser.d.ts +25 -0
  19. package/dist/tools/documentation/claude-md-parser.js +108 -0
  20. package/dist/tools/documentation/claude-md-parser.js.map +1 -0
  21. package/dist/tools/documentation/comments-generator.d.ts +55 -0
  22. package/dist/tools/documentation/comments-generator.js +238 -0
  23. package/dist/tools/documentation/comments-generator.js.map +1 -0
  24. package/dist/tools/documentation/docs-menu.d.ts +9 -0
  25. package/dist/tools/documentation/docs-menu.js +57 -0
  26. package/dist/tools/documentation/docs-menu.js.map +1 -0
  27. package/dist/tools/documentation/readme-generator.d.ts +31 -0
  28. package/dist/tools/documentation/readme-generator.js +244 -0
  29. package/dist/tools/documentation/readme-generator.js.map +1 -0
  30. package/dist/tools/documentation/self-healing-system.d.ts +66 -0
  31. package/dist/tools/documentation/self-healing-system.js +444 -0
  32. package/dist/tools/documentation/self-healing-system.js.map +1 -0
  33. package/dist/tools/documentation/smart-prd-assistant.d.ts +45 -0
  34. package/dist/tools/documentation/smart-prd-assistant.js +325 -0
  35. package/dist/tools/documentation/smart-prd-assistant.js.map +1 -0
  36. package/dist/tools/documentation/update-agent-docs.d.ts +37 -0
  37. package/dist/tools/documentation/update-agent-docs.js +275 -0
  38. package/dist/tools/documentation/update-agent-docs.js.map +1 -0
  39. package/dist/tools/intelligence/ast-parser.js +22 -4
  40. package/dist/tools/intelligence/ast-parser.js.map +1 -1
  41. package/dist/ui/app.d.ts +2 -1
  42. package/dist/ui/app.js +27 -6
  43. package/dist/ui/app.js.map +1 -1
  44. package/dist/ui/components/api-key-input.d.ts +2 -1
  45. package/dist/ui/components/api-key-input.js +18 -3
  46. package/dist/ui/components/api-key-input.js.map +1 -1
  47. package/dist/ui/components/chat-history.d.ts +2 -1
  48. package/dist/ui/components/chat-history.js +35 -13
  49. package/dist/ui/components/chat-history.js.map +1 -1
  50. package/dist/ui/components/chat-input.d.ts +2 -1
  51. package/dist/ui/components/chat-input.js +36 -15
  52. package/dist/ui/components/chat-input.js.map +1 -1
  53. package/dist/ui/components/chat-interface.d.ts +2 -1
  54. package/dist/ui/components/chat-interface.js +39 -5
  55. package/dist/ui/components/chat-interface.js.map +1 -1
  56. package/dist/ui/components/command-suggestions.d.ts +2 -1
  57. package/dist/ui/components/command-suggestions.js +8 -3
  58. package/dist/ui/components/command-suggestions.js.map +1 -1
  59. package/dist/ui/components/confirmation-dialog.d.ts +2 -1
  60. package/dist/ui/components/confirmation-dialog.js +39 -4
  61. package/dist/ui/components/confirmation-dialog.js.map +1 -1
  62. package/dist/ui/components/diff-renderer.js +66 -57
  63. package/dist/ui/components/diff-renderer.js.map +1 -1
  64. package/dist/ui/components/loading-spinner.d.ts +2 -1
  65. package/dist/ui/components/loading-spinner.js +13 -3
  66. package/dist/ui/components/loading-spinner.js.map +1 -1
  67. package/dist/ui/components/mcp-status.d.ts +2 -1
  68. package/dist/ui/components/mcp-status.js +6 -3
  69. package/dist/ui/components/mcp-status.js.map +1 -1
  70. package/dist/ui/components/model-selection.d.ts +2 -1
  71. package/dist/ui/components/model-selection.js +11 -2
  72. package/dist/ui/components/model-selection.js.map +1 -1
  73. package/dist/ui/shared/max-sized-box.js +2 -2
  74. package/dist/ui/shared/max-sized-box.js.map +1 -1
  75. package/dist/ui/utils/code-colorizer.js +2 -2
  76. package/dist/ui/utils/code-colorizer.js.map +1 -1
  77. package/dist/ui/utils/markdown-renderer.d.ts +2 -1
  78. package/dist/ui/utils/markdown-renderer.js +3 -3
  79. package/dist/ui/utils/markdown-renderer.js.map +1 -1
  80. package/package.json +21 -12
@@ -0,0 +1,278 @@
1
+ import path from 'path';
2
+ import fs from 'fs/promises';
3
+ import { existsSync } from 'fs';
4
+ export class AutoUpdateSystem {
5
+ constructor(rootPath, config) {
6
+ this.tokenCount = 0;
7
+ this.lastUpdateTime = Date.now();
8
+ this.rootPath = rootPath;
9
+ this.config = {
10
+ enabled: true,
11
+ triggers: {
12
+ keyFiles: true,
13
+ tokenThreshold: 1000,
14
+ sessionEnd: true,
15
+ gitCommits: true
16
+ },
17
+ keyFiles: [
18
+ 'package.json',
19
+ 'tsconfig.json',
20
+ 'src/**/*.ts',
21
+ 'README.md',
22
+ '*.config.*',
23
+ '.grok/**'
24
+ ],
25
+ reminderStyle: 'gentle',
26
+ autoPrompt: true,
27
+ updateFrequency: 'smart',
28
+ ...config
29
+ };
30
+ }
31
+ async loadConfigFromSettings() {
32
+ try {
33
+ const settingsPath = path.join(this.rootPath, '.grok', 'settings.json');
34
+ if (existsSync(settingsPath)) {
35
+ const settings = JSON.parse(await fs.readFile(settingsPath, 'utf-8'));
36
+ if (settings.documentation?.autoUpdate) {
37
+ this.config = { ...this.config, ...settings.documentation.autoUpdate };
38
+ }
39
+ }
40
+ }
41
+ catch (error) {
42
+ // Use default config
43
+ }
44
+ }
45
+ async saveConfigToSettings() {
46
+ try {
47
+ const settingsPath = path.join(this.rootPath, '.grok', 'settings.json');
48
+ let settings = {};
49
+ if (existsSync(settingsPath)) {
50
+ settings = JSON.parse(await fs.readFile(settingsPath, 'utf-8'));
51
+ }
52
+ const updatedSettings = {
53
+ ...settings,
54
+ documentation: {
55
+ ...(settings.documentation || {}),
56
+ autoUpdate: this.config
57
+ }
58
+ };
59
+ // Ensure .grok directory exists
60
+ const grokDir = path.join(this.rootPath, '.grok');
61
+ if (!existsSync(grokDir)) {
62
+ await fs.mkdir(grokDir, { recursive: true });
63
+ }
64
+ await fs.writeFile(settingsPath, JSON.stringify(updatedSettings, null, 2));
65
+ }
66
+ catch (error) {
67
+ // Fail silently for now
68
+ }
69
+ }
70
+ updateTokenCount(count) {
71
+ this.tokenCount = count;
72
+ }
73
+ async checkTriggers() {
74
+ if (!this.config.enabled) {
75
+ return [];
76
+ }
77
+ const triggers = [];
78
+ // Check key file changes
79
+ if (this.config.triggers.keyFiles) {
80
+ const keyFileChanges = await this.checkKeyFileChanges();
81
+ if (keyFileChanges) {
82
+ triggers.push({
83
+ type: 'keyFiles',
84
+ message: '💡 Key files have been modified. Consider updating documentation?',
85
+ priority: 'medium',
86
+ actionSuggested: '/update-agent-docs'
87
+ });
88
+ }
89
+ }
90
+ // Check token threshold
91
+ if (this.config.triggers.tokenThreshold && this.tokenCount >= this.config.triggers.tokenThreshold) {
92
+ triggers.push({
93
+ type: 'tokenThreshold',
94
+ message: `🔢 Token threshold reached (${this.tokenCount}/${this.config.triggers.tokenThreshold}). Consider updating docs?`,
95
+ priority: 'low',
96
+ actionSuggested: '/update-agent-docs'
97
+ });
98
+ }
99
+ // Check git commits
100
+ if (this.config.triggers.gitCommits) {
101
+ const recentCommits = await this.checkRecentCommits();
102
+ if (recentCommits) {
103
+ triggers.push({
104
+ type: 'gitCommits',
105
+ message: '📝 Recent commits detected. Update documentation to stay current?',
106
+ priority: 'medium',
107
+ actionSuggested: '/update-agent-docs'
108
+ });
109
+ }
110
+ }
111
+ return this.filterTriggersByFrequency(triggers);
112
+ }
113
+ async checkKeyFileChanges() {
114
+ try {
115
+ const fiveMinutesAgo = Date.now() - (5 * 60 * 1000);
116
+ for (const pattern of this.config.keyFiles) {
117
+ const files = await this.expandGlobPattern(pattern);
118
+ for (const file of files) {
119
+ const fullPath = path.join(this.rootPath, file);
120
+ if (existsSync(fullPath)) {
121
+ const stats = await fs.stat(fullPath);
122
+ if (stats.mtime.getTime() > fiveMinutesAgo && stats.mtime.getTime() > this.lastUpdateTime) {
123
+ return true;
124
+ }
125
+ }
126
+ }
127
+ }
128
+ return false;
129
+ }
130
+ catch (error) {
131
+ return false;
132
+ }
133
+ }
134
+ async expandGlobPattern(pattern) {
135
+ // Simple glob expansion - could be enhanced with a proper glob library
136
+ if (pattern.includes('**')) {
137
+ return await this.findFilesRecursively(pattern);
138
+ }
139
+ else if (pattern.includes('*')) {
140
+ return await this.findFilesWithWildcard(pattern);
141
+ }
142
+ else {
143
+ return [pattern];
144
+ }
145
+ }
146
+ async findFilesRecursively(pattern) {
147
+ const files = [];
148
+ const basePath = pattern.split('**')[0];
149
+ const extension = pattern.includes('.') ? pattern.split('.').pop() : '';
150
+ const scanDir = async (dirPath) => {
151
+ try {
152
+ const entries = await fs.readdir(dirPath, { withFileTypes: true });
153
+ for (const entry of entries) {
154
+ const fullPath = path.join(dirPath, entry.name);
155
+ const relativePath = path.relative(this.rootPath, fullPath);
156
+ if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'node_modules') {
157
+ await scanDir(fullPath);
158
+ }
159
+ else if (entry.isFile() && (!extension || entry.name.endsWith(`.${extension}`))) {
160
+ files.push(relativePath);
161
+ }
162
+ }
163
+ }
164
+ catch (error) {
165
+ // Skip directories we can't read
166
+ }
167
+ };
168
+ const searchPath = path.join(this.rootPath, basePath);
169
+ if (existsSync(searchPath)) {
170
+ await scanDir(searchPath);
171
+ }
172
+ return files;
173
+ }
174
+ async findFilesWithWildcard(pattern) {
175
+ // Simple wildcard matching - just check if file exists for exact patterns
176
+ if (existsSync(path.join(this.rootPath, pattern.replace('*', '')))) {
177
+ return [pattern.replace('*', '')];
178
+ }
179
+ return [];
180
+ }
181
+ async checkRecentCommits() {
182
+ try {
183
+ const { execSync } = require('child_process');
184
+ const oneHourAgo = new Date(Date.now() - 60 * 60 * 1000).toISOString();
185
+ const commits = execSync(`git log --since="${oneHourAgo}" --oneline`, {
186
+ cwd: this.rootPath,
187
+ encoding: 'utf-8'
188
+ });
189
+ return commits.trim().length > 0;
190
+ }
191
+ catch (error) {
192
+ return false;
193
+ }
194
+ }
195
+ filterTriggersByFrequency(triggers) {
196
+ switch (this.config.updateFrequency) {
197
+ case 'manual':
198
+ return []; // No automatic triggers
199
+ case 'aggressive':
200
+ return triggers; // All triggers
201
+ case 'smart':
202
+ default:
203
+ // Filter to only medium/high priority or if multiple low priority
204
+ const highPriority = triggers.filter(t => t.priority === 'high' || t.priority === 'medium');
205
+ const lowPriority = triggers.filter(t => t.priority === 'low');
206
+ if (highPriority.length > 0) {
207
+ return highPriority;
208
+ }
209
+ else if (lowPriority.length >= 2) {
210
+ return [lowPriority[0]]; // Show one low priority if multiple
211
+ }
212
+ return [];
213
+ }
214
+ }
215
+ formatTriggerMessage(trigger) {
216
+ switch (this.config.reminderStyle) {
217
+ case 'persistent':
218
+ return `🔔 **${trigger.message}**\n\n💡 Run: \`${trigger.actionSuggested}\``;
219
+ case 'gentle':
220
+ return `${trigger.message}\n\n*Suggestion: \`${trigger.actionSuggested}\`*`;
221
+ case 'off':
222
+ default:
223
+ return '';
224
+ }
225
+ }
226
+ async markUpdateCompleted() {
227
+ this.lastUpdateTime = Date.now();
228
+ this.tokenCount = 0; // Reset token count after update
229
+ }
230
+ // Configuration methods
231
+ setEnabled(enabled) {
232
+ this.config.enabled = enabled;
233
+ }
234
+ setTrigger(trigger, enabled) {
235
+ if (trigger === 'tokenThreshold' && typeof enabled === 'number') {
236
+ this.config.triggers[trigger] = enabled;
237
+ }
238
+ else if (typeof enabled === 'boolean') {
239
+ this.config.triggers[trigger] = enabled;
240
+ }
241
+ }
242
+ setTokenThreshold(threshold) {
243
+ this.config.triggers.tokenThreshold = threshold;
244
+ }
245
+ setReminderStyle(style) {
246
+ this.config.reminderStyle = style;
247
+ }
248
+ setUpdateFrequency(frequency) {
249
+ this.config.updateFrequency = frequency;
250
+ }
251
+ addKeyFile(pattern) {
252
+ if (!this.config.keyFiles.includes(pattern)) {
253
+ this.config.keyFiles.push(pattern);
254
+ }
255
+ }
256
+ removeKeyFile(pattern) {
257
+ this.config.keyFiles = this.config.keyFiles.filter(f => f !== pattern);
258
+ }
259
+ getConfig() {
260
+ return { ...this.config };
261
+ }
262
+ getConfigSummary() {
263
+ return `📊 **Auto-Update Configuration:**
264
+
265
+ **Status:** ${this.config.enabled ? '✅ Enabled' : '❌ Disabled'}
266
+ **Style:** ${this.config.reminderStyle}
267
+ **Frequency:** ${this.config.updateFrequency}
268
+
269
+ **Triggers:**
270
+ - Key files: ${this.config.triggers.keyFiles ? '✅' : '❌'}
271
+ - Token threshold: ${this.config.triggers.tokenThreshold} tokens
272
+ - Session end: ${this.config.triggers.sessionEnd ? '✅' : '❌'}
273
+ - Git commits: ${this.config.triggers.gitCommits ? '✅' : '❌'}
274
+
275
+ **Monitored files:** ${this.config.keyFiles.length} patterns`;
276
+ }
277
+ }
278
+ //# sourceMappingURL=auto-update-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-update-system.js","sourceRoot":"","sources":["../../../src/tools/documentation/auto-update-system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ export interface ChangelogConfig {
2
+ rootPath: string;
3
+ sinceVersion?: string;
4
+ commitCount?: number;
5
+ format: 'conventional' | 'simple';
6
+ includeBreaking: boolean;
7
+ }
8
+ export interface CommitInfo {
9
+ hash: string;
10
+ date: string;
11
+ author: string;
12
+ message: string;
13
+ type?: string;
14
+ scope?: string;
15
+ breaking: boolean;
16
+ body?: string;
17
+ }
18
+ export interface ChangelogSection {
19
+ title: string;
20
+ commits: CommitInfo[];
21
+ }
22
+ export declare class ChangelogGenerator {
23
+ private config;
24
+ constructor(config: ChangelogConfig);
25
+ generateChangelog(): Promise<{
26
+ success: boolean;
27
+ message: string;
28
+ content?: string;
29
+ }>;
30
+ private getGitCommits;
31
+ private parseCommit;
32
+ private organizeCommits;
33
+ private organizeConventionalCommits;
34
+ private organizeSimpleCommits;
35
+ private generateChangelogHeader;
36
+ private generateChangelogContent;
37
+ private generateVersionNumber;
38
+ private extractBreakingChangeDetails;
39
+ }
@@ -0,0 +1,255 @@
1
+ import path from 'path';
2
+ import fs from 'fs/promises';
3
+ import { existsSync } from 'fs';
4
+ export class ChangelogGenerator {
5
+ constructor(config) {
6
+ this.config = config;
7
+ }
8
+ async generateChangelog() {
9
+ try {
10
+ // Check if we're in a git repository
11
+ const gitPath = path.join(this.config.rootPath, '.git');
12
+ if (!existsSync(gitPath)) {
13
+ return {
14
+ success: false,
15
+ message: 'Not a git repository. Changelog generation requires git history.'
16
+ };
17
+ }
18
+ // Get git commits
19
+ const commits = await this.getGitCommits();
20
+ if (commits.length === 0) {
21
+ return {
22
+ success: false,
23
+ message: 'No git commits found.'
24
+ };
25
+ }
26
+ // Parse commits and organize by type
27
+ const sections = this.organizeCommits(commits);
28
+ // Generate changelog content
29
+ const content = this.generateChangelogContent(sections);
30
+ // Write to CHANGELOG.md
31
+ const changelogPath = path.join(this.config.rootPath, 'CHANGELOG.md');
32
+ const exists = existsSync(changelogPath);
33
+ if (exists) {
34
+ // Prepend to existing changelog
35
+ const existingContent = await fs.readFile(changelogPath, 'utf-8');
36
+ const newContent = content + '\n\n' + existingContent;
37
+ await fs.writeFile(changelogPath, newContent);
38
+ }
39
+ else {
40
+ // Create new changelog
41
+ const fullContent = this.generateChangelogHeader() + content;
42
+ await fs.writeFile(changelogPath, fullContent);
43
+ }
44
+ return {
45
+ success: true,
46
+ message: exists
47
+ ? `✅ Updated CHANGELOG.md with ${commits.length} new entries`
48
+ : `✅ Created CHANGELOG.md with ${commits.length} entries`,
49
+ content
50
+ };
51
+ }
52
+ catch (error) {
53
+ return {
54
+ success: false,
55
+ message: `Failed to generate changelog: ${error.message}`
56
+ };
57
+ }
58
+ }
59
+ async getGitCommits() {
60
+ const { execSync } = require('child_process');
61
+ try {
62
+ let gitCommand = 'git log --pretty=format:"%H|%ad|%an|%s|%b" --date=short';
63
+ if (this.config.sinceVersion) {
64
+ gitCommand += ` ${this.config.sinceVersion}..HEAD`;
65
+ }
66
+ else if (this.config.commitCount) {
67
+ gitCommand += ` -n ${this.config.commitCount}`;
68
+ }
69
+ else {
70
+ gitCommand += ' -n 50'; // Default to last 50 commits
71
+ }
72
+ const output = execSync(gitCommand, {
73
+ cwd: this.config.rootPath,
74
+ encoding: 'utf-8'
75
+ });
76
+ const lines = output.trim().split('\n').filter((line) => line.trim());
77
+ return lines.map((line) => {
78
+ const [hash, date, author, message, ...bodyParts] = line.split('|');
79
+ const body = bodyParts.join('|').trim();
80
+ return this.parseCommit({
81
+ hash: hash.substring(0, 7), // Short hash
82
+ date,
83
+ author,
84
+ message,
85
+ body: body || undefined,
86
+ breaking: false,
87
+ type: undefined,
88
+ scope: undefined
89
+ });
90
+ });
91
+ }
92
+ catch (error) {
93
+ return [];
94
+ }
95
+ }
96
+ parseCommit(commit) {
97
+ if (this.config.format !== 'conventional') {
98
+ return commit;
99
+ }
100
+ // Parse conventional commit format: type(scope): description
101
+ const conventionalMatch = commit.message.match(/^(\w+)(?:\(([^)]+)\))?: (.+)/);
102
+ if (conventionalMatch) {
103
+ const [, type, scope, description] = conventionalMatch;
104
+ commit.type = type;
105
+ commit.scope = scope;
106
+ commit.message = description;
107
+ }
108
+ // Check for breaking changes
109
+ commit.breaking = commit.message.includes('BREAKING CHANGE') ||
110
+ commit.message.includes('!:') ||
111
+ Boolean(commit.body && commit.body.includes('BREAKING CHANGE'));
112
+ return commit;
113
+ }
114
+ organizeCommits(commits) {
115
+ if (this.config.format === 'conventional') {
116
+ return this.organizeConventionalCommits(commits);
117
+ }
118
+ else {
119
+ return this.organizeSimpleCommits(commits);
120
+ }
121
+ }
122
+ organizeConventionalCommits(commits) {
123
+ const sections = [];
124
+ // Breaking changes (always first)
125
+ const breaking = commits.filter(c => c.breaking);
126
+ if (breaking.length > 0) {
127
+ sections.push({
128
+ title: '⚠️ BREAKING CHANGES',
129
+ commits: breaking
130
+ });
131
+ }
132
+ // Features
133
+ const features = commits.filter(c => c.type === 'feat' && !c.breaking);
134
+ if (features.length > 0) {
135
+ sections.push({
136
+ title: '✨ Features',
137
+ commits: features
138
+ });
139
+ }
140
+ // Bug fixes
141
+ const fixes = commits.filter(c => c.type === 'fix' && !c.breaking);
142
+ if (fixes.length > 0) {
143
+ sections.push({
144
+ title: '🐛 Bug Fixes',
145
+ commits: fixes
146
+ });
147
+ }
148
+ // Documentation
149
+ const docs = commits.filter(c => c.type === 'docs');
150
+ if (docs.length > 0) {
151
+ sections.push({
152
+ title: '📚 Documentation',
153
+ commits: docs
154
+ });
155
+ }
156
+ // Performance improvements
157
+ const perf = commits.filter(c => c.type === 'perf');
158
+ if (perf.length > 0) {
159
+ sections.push({
160
+ title: '⚡ Performance',
161
+ commits: perf
162
+ });
163
+ }
164
+ // Refactoring
165
+ const refactor = commits.filter(c => c.type === 'refactor');
166
+ if (refactor.length > 0) {
167
+ sections.push({
168
+ title: '♻️ Code Refactoring',
169
+ commits: refactor
170
+ });
171
+ }
172
+ // Tests
173
+ const tests = commits.filter(c => c.type === 'test');
174
+ if (tests.length > 0) {
175
+ sections.push({
176
+ title: '✅ Tests',
177
+ commits: tests
178
+ });
179
+ }
180
+ // Build/CI
181
+ const build = commits.filter(c => ['build', 'ci', 'chore'].includes(c.type || ''));
182
+ if (build.length > 0) {
183
+ sections.push({
184
+ title: '🔧 Build & CI',
185
+ commits: build
186
+ });
187
+ }
188
+ // Other changes
189
+ const other = commits.filter(c => !c.breaking &&
190
+ !['feat', 'fix', 'docs', 'perf', 'refactor', 'test', 'build', 'ci', 'chore'].includes(c.type || ''));
191
+ if (other.length > 0) {
192
+ sections.push({
193
+ title: '📝 Other Changes',
194
+ commits: other
195
+ });
196
+ }
197
+ return sections;
198
+ }
199
+ organizeSimpleCommits(commits) {
200
+ return [{
201
+ title: '📝 Changes',
202
+ commits
203
+ }];
204
+ }
205
+ generateChangelogHeader() {
206
+ return `# Changelog
207
+
208
+ All notable changes to this project will be documented in this file.
209
+
210
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
211
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
212
+
213
+ `;
214
+ }
215
+ generateChangelogContent(sections) {
216
+ const version = this.generateVersionNumber();
217
+ const date = new Date().toISOString().split('T')[0];
218
+ let content = `## [${version}] - ${date}\n\n`;
219
+ sections.forEach(section => {
220
+ if (section.commits.length > 0) {
221
+ content += `### ${section.title}\n\n`;
222
+ section.commits.forEach(commit => {
223
+ const scope = commit.scope ? `**${commit.scope}**: ` : '';
224
+ const hash = `([${commit.hash}])`;
225
+ if (this.config.format === 'conventional') {
226
+ content += `- ${scope}${commit.message} ${hash}\n`;
227
+ }
228
+ else {
229
+ content += `- ${commit.message} - ${commit.author} ${hash}\n`;
230
+ }
231
+ // Add breaking change details
232
+ if (commit.breaking && commit.body) {
233
+ const breakingDetails = this.extractBreakingChangeDetails(commit.body);
234
+ if (breakingDetails) {
235
+ content += ` - ⚠️ ${breakingDetails}\n`;
236
+ }
237
+ }
238
+ });
239
+ content += '\n';
240
+ }
241
+ });
242
+ return content;
243
+ }
244
+ generateVersionNumber() {
245
+ // Simple version generation - could be enhanced to read from package.json
246
+ // and increment based on commit types
247
+ const now = new Date();
248
+ return `${now.getFullYear()}.${now.getMonth() + 1}.${now.getDate()}`;
249
+ }
250
+ extractBreakingChangeDetails(body) {
251
+ const match = body.match(/BREAKING CHANGE:\s*(.+)/);
252
+ return match ? match[1].trim() : null;
253
+ }
254
+ }
255
+ //# sourceMappingURL=changelog-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog-generator.js","sourceRoot":"","sources":["../../../src/tools/documentation/changelog-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export interface ClaudeMdParser {
2
+ parseClaude(rootPath: string): Promise<{
3
+ exists: boolean;
4
+ content: string;
5
+ hasDocumentationSection: boolean;
6
+ }>;
7
+ updateClaude(rootPath: string, documentationSection: string): Promise<{
8
+ success: boolean;
9
+ message: string;
10
+ }>;
11
+ generateDocumentationSection(): string;
12
+ }
13
+ export declare class ClaudeMdParserImpl implements ClaudeMdParser {
14
+ parseClaude(rootPath: string): Promise<{
15
+ exists: boolean;
16
+ content: string;
17
+ hasDocumentationSection: boolean;
18
+ }>;
19
+ updateClaude(rootPath: string, documentationSection: string): Promise<{
20
+ success: boolean;
21
+ message: string;
22
+ }>;
23
+ generateDocumentationSection(): string;
24
+ }
25
+ export declare const claudeMdParser: ClaudeMdParserImpl;