mustard-claude 2.0.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 (72) hide show
  1. package/README.md +198 -0
  2. package/bin/mustard.js +5 -0
  3. package/dist/analyzers/llm.d.ts +13 -0
  4. package/dist/analyzers/llm.js +339 -0
  5. package/dist/analyzers/llm.js.map +1 -0
  6. package/dist/analyzers/semantic.d.ts +13 -0
  7. package/dist/analyzers/semantic.js +215 -0
  8. package/dist/analyzers/semantic.js.map +1 -0
  9. package/dist/cli.d.ts +1 -0
  10. package/dist/cli.js +42 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/commands/init.d.ts +5 -0
  13. package/dist/commands/init.js +377 -0
  14. package/dist/commands/init.js.map +1 -0
  15. package/dist/commands/sync.d.ts +5 -0
  16. package/dist/commands/sync.js +235 -0
  17. package/dist/commands/sync.js.map +1 -0
  18. package/dist/commands/update.d.ts +8 -0
  19. package/dist/commands/update.js +237 -0
  20. package/dist/commands/update.js.map +1 -0
  21. package/dist/generators/claude-md-llm.d.ts +5 -0
  22. package/dist/generators/claude-md-llm.js +101 -0
  23. package/dist/generators/claude-md-llm.js.map +1 -0
  24. package/dist/generators/claude-md-template.d.ts +5 -0
  25. package/dist/generators/claude-md-template.js +273 -0
  26. package/dist/generators/claude-md-template.js.map +1 -0
  27. package/dist/generators/commands.d.ts +17 -0
  28. package/dist/generators/commands.js +845 -0
  29. package/dist/generators/commands.js.map +1 -0
  30. package/dist/generators/context.d.ts +11 -0
  31. package/dist/generators/context.js +621 -0
  32. package/dist/generators/context.js.map +1 -0
  33. package/dist/generators/hooks.d.ts +5 -0
  34. package/dist/generators/hooks.js +128 -0
  35. package/dist/generators/hooks.js.map +1 -0
  36. package/dist/generators/index.d.ts +11 -0
  37. package/dist/generators/index.js +541 -0
  38. package/dist/generators/index.js.map +1 -0
  39. package/dist/generators/prompts.d.ts +13 -0
  40. package/dist/generators/prompts.js +579 -0
  41. package/dist/generators/prompts.js.map +1 -0
  42. package/dist/generators/registry.d.ts +5 -0
  43. package/dist/generators/registry.js +93 -0
  44. package/dist/generators/registry.js.map +1 -0
  45. package/dist/scanners/dependencies.d.ts +7 -0
  46. package/dist/scanners/dependencies.js +195 -0
  47. package/dist/scanners/dependencies.js.map +1 -0
  48. package/dist/scanners/index.d.ts +6 -0
  49. package/dist/scanners/index.js +37 -0
  50. package/dist/scanners/index.js.map +1 -0
  51. package/dist/scanners/samples.d.ts +8 -0
  52. package/dist/scanners/samples.js +193 -0
  53. package/dist/scanners/samples.js.map +1 -0
  54. package/dist/scanners/stack.d.ts +5 -0
  55. package/dist/scanners/stack.js +294 -0
  56. package/dist/scanners/stack.js.map +1 -0
  57. package/dist/scanners/structure.d.ts +5 -0
  58. package/dist/scanners/structure.js +274 -0
  59. package/dist/scanners/structure.js.map +1 -0
  60. package/dist/services/grepai.d.ts +25 -0
  61. package/dist/services/grepai.js +89 -0
  62. package/dist/services/grepai.js.map +1 -0
  63. package/dist/services/ollama.d.ts +22 -0
  64. package/dist/services/ollama.js +86 -0
  65. package/dist/services/ollama.js.map +1 -0
  66. package/dist/services/package-manager.d.ts +95 -0
  67. package/dist/services/package-manager.js +164 -0
  68. package/dist/services/package-manager.js.map +1 -0
  69. package/dist/types.d.ts +233 -0
  70. package/dist/types.js +5 -0
  71. package/dist/types.js.map +1 -0
  72. package/package.json +56 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { SyncOptions } from '../types.js';
2
+ /**
3
+ * Sync command - syncs prompts and context with current codebase state
4
+ */
5
+ export declare function syncCommand(options: SyncOptions): Promise<void>;
@@ -0,0 +1,235 @@
1
+ import { existsSync } from 'fs';
2
+ import { readFile, writeFile, readdir, mkdir } from 'fs/promises';
3
+ import { join, resolve } from 'path';
4
+ import chalk from 'chalk';
5
+ import ora from 'ora';
6
+ import inquirer from 'inquirer';
7
+ import { scanProject } from '../scanners/index.js';
8
+ import * as ollamaService from '../services/ollama.js';
9
+ import * as grepaiService from '../services/grepai.js';
10
+ import * as semanticAnalyzer from '../analyzers/semantic.js';
11
+ import { generateContext } from '../generators/context.js';
12
+ import { generateRegistry } from '../generators/registry.js';
13
+ import { generateAutoSection, mergePromptContext } from '../generators/prompts.js';
14
+ /**
15
+ * Sync command - syncs prompts and context with current codebase state
16
+ */
17
+ export async function syncCommand(options) {
18
+ const projectPath = resolve(process.cwd());
19
+ const claudePath = join(projectPath, '.claude');
20
+ console.log(chalk.bold('\n🌿 Mustard CLI v2.0 - Sync\n'));
21
+ // 1. Check .claude/ exists
22
+ if (!existsSync(claudePath)) {
23
+ console.log(chalk.red('❌ No .claude/ directory found.'));
24
+ console.log(chalk.gray(' Run "mustard init" first.\n'));
25
+ return;
26
+ }
27
+ // Determine scope
28
+ const syncAll = !options.prompts && !options.context && !options.registry;
29
+ const syncPrompts = syncAll || options.prompts;
30
+ const syncContext = syncAll || options.context;
31
+ const syncRegistry = syncAll || options.registry;
32
+ // Show plan
33
+ console.log(chalk.white('📋 Sync plan:\n'));
34
+ if (syncPrompts)
35
+ console.log(chalk.green(' ✓ Prompts (merge with existing)'));
36
+ if (syncContext)
37
+ console.log(chalk.green(' ✓ Context files (regenerate)'));
38
+ if (syncRegistry)
39
+ console.log(chalk.green(' ✓ Entity registry (update)'));
40
+ console.log(chalk.yellow('\n ⚡ Preserved: CLAUDE.md, commands/, hooks/\n'));
41
+ // Confirm
42
+ if (!options.force) {
43
+ const { proceed } = await inquirer.prompt([{
44
+ type: 'confirm',
45
+ name: 'proceed',
46
+ message: 'Proceed with sync?',
47
+ default: true
48
+ }]);
49
+ if (!proceed) {
50
+ console.log(chalk.yellow('\n⚠️ Cancelled.\n'));
51
+ return;
52
+ }
53
+ }
54
+ // 2. Check dependencies
55
+ const deps = await checkDependencies(options);
56
+ // 3. Scan project
57
+ const scanSpinner = ora('Scanning project...').start();
58
+ let projectInfo;
59
+ try {
60
+ projectInfo = await scanProject(projectPath, { verbose: options.verbose });
61
+ scanSpinner.succeed('Project scanned');
62
+ }
63
+ catch (error) {
64
+ scanSpinner.fail('Scan failed');
65
+ const message = error instanceof Error ? error.message : 'Unknown error';
66
+ console.error(chalk.red(message));
67
+ return;
68
+ }
69
+ // 4. Semantic analysis (if grepai available)
70
+ let patterns = {
71
+ services: [],
72
+ repositories: [],
73
+ endpoints: [],
74
+ components: [],
75
+ hooks: [],
76
+ entities: [],
77
+ callGraph: null
78
+ };
79
+ if (deps.grepai && options.grepai !== false) {
80
+ const semanticSpinner = ora('Analyzing codebase (grepai)...').start();
81
+ try {
82
+ patterns = await semanticAnalyzer.discoverPatterns({
83
+ stacks: projectInfo.stacks,
84
+ verbose: options.verbose
85
+ });
86
+ const entities = await semanticAnalyzer.discoverEntities(projectInfo.stacks);
87
+ patterns.entities = entities;
88
+ semanticSpinner.succeed(`Found ${patterns.entities.length} entities`);
89
+ }
90
+ catch (error) {
91
+ semanticSpinner.warn('Semantic analysis limited');
92
+ if (options.verbose) {
93
+ const message = error instanceof Error ? error.message : 'Unknown error';
94
+ console.log(chalk.gray(` ${message}`));
95
+ }
96
+ }
97
+ }
98
+ // 5. Build analysis object
99
+ const analysis = {
100
+ architecture: projectInfo.structure?.architecture ?? { type: 'unknown', confidence: 'low' },
101
+ patterns: [],
102
+ rules: [],
103
+ entities: patterns.entities
104
+ };
105
+ // 6. Sync prompts
106
+ let promptsUpdated = 0;
107
+ if (syncPrompts) {
108
+ const promptsSpinner = ora('Syncing prompts...').start();
109
+ try {
110
+ promptsUpdated = await syncPromptsWithContext(claudePath, projectInfo, analysis, patterns);
111
+ promptsSpinner.succeed(`Updated ${promptsUpdated} prompts`);
112
+ }
113
+ catch (error) {
114
+ promptsSpinner.fail('Prompt sync failed');
115
+ const message = error instanceof Error ? error.message : 'Unknown error';
116
+ console.error(chalk.red(message));
117
+ }
118
+ }
119
+ // 7. Sync context
120
+ if (syncContext) {
121
+ const contextSpinner = ora('Syncing context files...').start();
122
+ try {
123
+ await generateContext(claudePath, projectInfo, analysis, {}, {
124
+ useOllama: deps.ollama && options.ollama !== false,
125
+ model: deps.ollamaModel ?? undefined,
126
+ verbose: options.verbose
127
+ });
128
+ contextSpinner.succeed('Context files updated');
129
+ }
130
+ catch (error) {
131
+ contextSpinner.fail('Context sync failed');
132
+ const message = error instanceof Error ? error.message : 'Unknown error';
133
+ console.error(chalk.red(message));
134
+ }
135
+ }
136
+ // 8. Sync registry
137
+ if (syncRegistry) {
138
+ const registrySpinner = ora('Updating entity registry...').start();
139
+ try {
140
+ const registry = generateRegistry(projectInfo, analysis);
141
+ const registryPath = join(claudePath, 'entity-registry.json');
142
+ await writeFile(registryPath, JSON.stringify(registry, null, 2));
143
+ registrySpinner.succeed(`Entity registry updated (${Object.keys(registry.e).length} entities)`);
144
+ }
145
+ catch (error) {
146
+ registrySpinner.fail('Registry sync failed');
147
+ const message = error instanceof Error ? error.message : 'Unknown error';
148
+ console.error(chalk.red(message));
149
+ }
150
+ }
151
+ // Done!
152
+ console.log(chalk.green.bold('\n✅ Sync complete!\n'));
153
+ // Show summary
154
+ const changes = [];
155
+ if (syncPrompts && promptsUpdated > 0)
156
+ changes.push(`${promptsUpdated} prompts`);
157
+ if (syncContext)
158
+ changes.push('context files');
159
+ if (syncRegistry)
160
+ changes.push('entity registry');
161
+ if (changes.length > 0) {
162
+ console.log(chalk.gray(` Updated: ${changes.join(', ')}`));
163
+ }
164
+ console.log(chalk.gray(' Run "mustard sync --help" for more options.\n'));
165
+ }
166
+ /**
167
+ * Check available dependencies
168
+ */
169
+ async function checkDependencies(options) {
170
+ const deps = {
171
+ ollama: false,
172
+ ollamaModel: null,
173
+ grepai: false
174
+ };
175
+ if (options.ollama !== false) {
176
+ const ollamaSpinner = ora('Checking Ollama...').start();
177
+ const ollamaAvailable = await ollamaService.checkOllamaAvailable();
178
+ if (ollamaAvailable) {
179
+ const models = await ollamaService.getAvailableModels();
180
+ if (models.length > 0) {
181
+ deps.ollama = true;
182
+ deps.ollamaModel = await ollamaService.selectBestModel(models);
183
+ ollamaSpinner.succeed(`Ollama: ${deps.ollamaModel}`);
184
+ }
185
+ else {
186
+ ollamaSpinner.warn('Ollama running but no models');
187
+ }
188
+ }
189
+ else {
190
+ ollamaSpinner.warn('Ollama not available');
191
+ }
192
+ }
193
+ if (options.grepai !== false) {
194
+ const grepaiSpinner = ora('Checking grepai...').start();
195
+ const grepaiAvailable = await grepaiService.checkGrepaiAvailable();
196
+ if (grepaiAvailable) {
197
+ deps.grepai = true;
198
+ grepaiSpinner.succeed('grepai: available');
199
+ }
200
+ else {
201
+ grepaiSpinner.warn('grepai not available');
202
+ }
203
+ }
204
+ return deps;
205
+ }
206
+ /**
207
+ * Sync prompts with current project context
208
+ */
209
+ async function syncPromptsWithContext(claudePath, projectInfo, analysis, patterns) {
210
+ const promptsPath = join(claudePath, 'prompts');
211
+ // Create prompts directory if it doesn't exist
212
+ if (!existsSync(promptsPath)) {
213
+ await mkdir(promptsPath, { recursive: true });
214
+ return 0;
215
+ }
216
+ const files = await readdir(promptsPath);
217
+ let updated = 0;
218
+ for (const file of files) {
219
+ if (!file.endsWith('.md') || file === '_index.md')
220
+ continue;
221
+ const filePath = join(promptsPath, file);
222
+ const content = await readFile(filePath, 'utf-8');
223
+ // Generate new auto section based on prompt type
224
+ const promptType = file.replace('.md', '');
225
+ const autoSection = generateAutoSection(promptType, projectInfo, analysis, patterns);
226
+ // Merge: replace auto section, preserve rest
227
+ const merged = mergePromptContext(content, autoSection);
228
+ if (merged !== content) {
229
+ await writeFile(filePath, merged, 'utf-8');
230
+ updated++;
231
+ }
232
+ }
233
+ return updated;
234
+ }
235
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { InitOptions } from '../types.js';
2
+ export interface UpdateOptions extends InitOptions {
3
+ includeClaudeMd?: boolean;
4
+ }
5
+ /**
6
+ * Update command - updates Mustard core files while preserving client customizations
7
+ */
8
+ export declare function updateCommand(options: UpdateOptions): Promise<void>;
@@ -0,0 +1,237 @@
1
+ import { existsSync } from 'fs';
2
+ import { rm, cp } from 'fs/promises';
3
+ import { join, resolve } from 'path';
4
+ import chalk from 'chalk';
5
+ import ora from 'ora';
6
+ import inquirer from 'inquirer';
7
+ import { scanProject } from '../scanners/index.js';
8
+ import * as ollamaService from '../services/ollama.js';
9
+ import * as grepaiService from '../services/grepai.js';
10
+ import * as semanticAnalyzer from '../analyzers/semantic.js';
11
+ import { generateCoreOnly } from '../generators/index.js';
12
+ import { MUSTARD_COMMANDS_FOLDER } from '../generators/commands.js';
13
+ /**
14
+ * Update command - updates Mustard core files while preserving client customizations
15
+ */
16
+ export async function updateCommand(options) {
17
+ const projectPath = resolve(process.cwd());
18
+ const claudePath = join(projectPath, '.claude');
19
+ console.log(chalk.bold('\n🌿 Mustard CLI v2.0 - Update\n'));
20
+ // Check if .claude/ exists
21
+ if (!existsSync(claudePath)) {
22
+ console.log(chalk.red('❌ No .claude/ directory found.'));
23
+ console.log(chalk.gray(' Run "mustard init" first to initialize the project.\n'));
24
+ return;
25
+ }
26
+ // Show what will be updated vs preserved
27
+ console.log(chalk.white('📋 Update plan:\n'));
28
+ console.log(chalk.green(' ✓ Will update (core files):'));
29
+ console.log(chalk.gray(' • commands/mustard/*.md (Mustard commands)'));
30
+ console.log(chalk.gray(' • hooks/*.js'));
31
+ console.log(chalk.gray(' • core/*.md'));
32
+ console.log(chalk.gray(' • scripts/*.js'));
33
+ console.log(chalk.gray(' • context/README.md'));
34
+ console.log(chalk.gray(' • entity-registry.json'));
35
+ console.log(chalk.gray(' • settings.json (merged)'));
36
+ console.log(chalk.yellow('\n ⚡ Will preserve (client files):'));
37
+ console.log(chalk.gray(' • CLAUDE.md'));
38
+ console.log(chalk.gray(' • commands/*.md (user commands)'));
39
+ console.log(chalk.gray(' • prompts/*.md'));
40
+ console.log(chalk.gray(' • context/*.md (user files)'));
41
+ console.log(chalk.gray(' • docs/*'));
42
+ if (options.includeClaudeMd) {
43
+ console.log(chalk.cyan('\n ℹ️ --include-claude-md: CLAUDE.md will also be updated'));
44
+ }
45
+ // Create backup unless --force
46
+ if (!options.force) {
47
+ const { proceed } = await inquirer.prompt([
48
+ {
49
+ type: 'confirm',
50
+ name: 'proceed',
51
+ message: 'Create backup and proceed with update?',
52
+ default: true
53
+ }
54
+ ]);
55
+ if (!proceed) {
56
+ console.log(chalk.yellow('\n⚠️ Cancelled.\n'));
57
+ return;
58
+ }
59
+ await backupExistingClaude(claudePath);
60
+ }
61
+ // Check dependencies
62
+ const deps = await checkDependencies(options);
63
+ // Scan project
64
+ const scanSpinner = ora('Scanning project...').start();
65
+ let projectInfo;
66
+ try {
67
+ projectInfo = await scanProject(projectPath, { verbose: options.verbose });
68
+ scanSpinner.succeed('Project scanned');
69
+ }
70
+ catch (error) {
71
+ scanSpinner.fail('Scan failed');
72
+ const message = error instanceof Error ? error.message : 'Unknown error';
73
+ console.error(chalk.red(message));
74
+ return;
75
+ }
76
+ // Semantic analysis (if grepai available)
77
+ let patterns = {
78
+ services: [],
79
+ repositories: [],
80
+ endpoints: [],
81
+ components: [],
82
+ hooks: [],
83
+ entities: [],
84
+ callGraph: null
85
+ };
86
+ if (deps.grepai && options.grepai !== false) {
87
+ const semanticSpinner = ora('Analyzing codebase (grepai)...').start();
88
+ try {
89
+ patterns = await semanticAnalyzer.discoverPatterns({
90
+ stacks: projectInfo.stacks,
91
+ verbose: options.verbose
92
+ });
93
+ const entities = await semanticAnalyzer.discoverEntities(projectInfo.stacks);
94
+ patterns.entities = entities;
95
+ semanticSpinner.succeed(`Found ${patterns.entities.length} entities`);
96
+ }
97
+ catch (error) {
98
+ semanticSpinner.warn('Semantic analysis limited');
99
+ if (options.verbose) {
100
+ const message = error instanceof Error ? error.message : 'Unknown error';
101
+ console.log(chalk.gray(` ${message}`));
102
+ }
103
+ }
104
+ }
105
+ // Build analysis object
106
+ const analysis = {
107
+ architecture: projectInfo.structure?.architecture ?? { type: 'unknown', confidence: 'low' },
108
+ patterns: [],
109
+ rules: [],
110
+ entities: patterns.entities
111
+ };
112
+ // Clean mustard commands folder before regenerating
113
+ // This ensures old Mustard commands are removed while preserving user commands in commands/
114
+ const mustardCommandsPath = join(claudePath, 'commands', MUSTARD_COMMANDS_FOLDER);
115
+ if (existsSync(mustardCommandsPath)) {
116
+ await rm(mustardCommandsPath, { recursive: true, force: true });
117
+ }
118
+ // Generate core files only
119
+ const genSpinner = ora('Updating core files...').start();
120
+ try {
121
+ const files = await generateCoreOnly(projectPath, projectInfo, analysis, {
122
+ useOllama: deps.ollama && options.ollama !== false,
123
+ model: deps.ollamaModel ?? undefined,
124
+ hasGrepai: deps.grepai,
125
+ verbose: options.verbose,
126
+ overwriteClaudeMd: options.includeClaudeMd ?? false
127
+ });
128
+ genSpinner.succeed(`Updated ${files.length} files`);
129
+ // Display updated files
130
+ console.log(chalk.gray('\n Updated files:'));
131
+ const grouped = groupFiles(files);
132
+ for (const [dir, dirFiles] of Object.entries(grouped)) {
133
+ if (dir === '') {
134
+ for (const file of dirFiles) {
135
+ console.log(chalk.gray(` .claude/${file}`));
136
+ }
137
+ }
138
+ else {
139
+ console.log(chalk.gray(` .claude/${dir}/`));
140
+ for (const file of dirFiles) {
141
+ console.log(chalk.gray(` ${file}`));
142
+ }
143
+ }
144
+ }
145
+ }
146
+ catch (error) {
147
+ genSpinner.fail('Update failed');
148
+ const message = error instanceof Error ? error.message : 'Unknown error';
149
+ console.error(chalk.red(message));
150
+ if (options.verbose && error instanceof Error) {
151
+ console.error(error.stack);
152
+ }
153
+ return;
154
+ }
155
+ // Done!
156
+ console.log(chalk.green.bold('\n✅ Update complete!\n'));
157
+ console.log(chalk.gray(' Your customizations in CLAUDE.md, context/, and commands/ were preserved.'));
158
+ console.log(chalk.gray(' Mustard commands are in commands/mustard/ (safe to overwrite on updates).'));
159
+ console.log(chalk.gray(' A backup was created in case you need to restore.\n'));
160
+ }
161
+ /**
162
+ * Check available dependencies
163
+ */
164
+ async function checkDependencies(options) {
165
+ const deps = {
166
+ ollama: false,
167
+ ollamaModel: null,
168
+ grepai: false
169
+ };
170
+ if (options.ollama !== false) {
171
+ const ollamaSpinner = ora('Checking Ollama...').start();
172
+ const ollamaAvailable = await ollamaService.checkOllamaAvailable();
173
+ if (ollamaAvailable) {
174
+ const models = await ollamaService.getAvailableModels();
175
+ if (models.length > 0) {
176
+ deps.ollama = true;
177
+ deps.ollamaModel = await ollamaService.selectBestModel(models);
178
+ ollamaSpinner.succeed(`Ollama: ${deps.ollamaModel}`);
179
+ }
180
+ else {
181
+ ollamaSpinner.warn('Ollama running but no models');
182
+ }
183
+ }
184
+ else {
185
+ ollamaSpinner.warn('Ollama not available');
186
+ }
187
+ }
188
+ if (options.grepai !== false) {
189
+ const grepaiSpinner = ora('Checking grepai...').start();
190
+ const grepaiAvailable = await grepaiService.checkGrepaiAvailable();
191
+ if (grepaiAvailable) {
192
+ deps.grepai = true;
193
+ grepaiSpinner.succeed('grepai: available');
194
+ }
195
+ else {
196
+ grepaiSpinner.warn('grepai not available');
197
+ }
198
+ }
199
+ return deps;
200
+ }
201
+ /**
202
+ * Backup existing .claude directory
203
+ */
204
+ async function backupExistingClaude(claudePath) {
205
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
206
+ const backupPath = `${claudePath}.backup.${timestamp}`;
207
+ const spinner = ora('Creating backup...').start();
208
+ try {
209
+ await cp(claudePath, backupPath, { recursive: true });
210
+ spinner.succeed(`Backup: ${backupPath}`);
211
+ }
212
+ catch (error) {
213
+ spinner.fail('Backup failed');
214
+ throw error;
215
+ }
216
+ }
217
+ /**
218
+ * Group files by directory for display
219
+ */
220
+ function groupFiles(files) {
221
+ const grouped = {};
222
+ for (const file of files) {
223
+ const parts = file.split('/');
224
+ if (parts.length === 1) {
225
+ grouped[''] = grouped[''] ?? [];
226
+ grouped[''].push(file);
227
+ }
228
+ else {
229
+ const dir = parts[0];
230
+ const name = parts.slice(1).join('/');
231
+ grouped[dir] = grouped[dir] ?? [];
232
+ grouped[dir].push(name);
233
+ }
234
+ }
235
+ return grouped;
236
+ }
237
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ProjectInfo, Analysis, GeneratorOptions } from '../types.js';
2
+ /**
3
+ * Generate CLAUDE.md using Ollama LLM
4
+ */
5
+ export declare function generateClaudeMd(projectInfo: ProjectInfo, analysis: Analysis, options?: GeneratorOptions): Promise<string | null>;
@@ -0,0 +1,101 @@
1
+ import * as ollama from '../services/ollama.js';
2
+ /**
3
+ * Generate CLAUDE.md using Ollama LLM
4
+ */
5
+ export async function generateClaudeMd(projectInfo, analysis, options = {}) {
6
+ const { model = 'llama3.2', verbose = false } = options;
7
+ // Build context for the LLM
8
+ const stackList = projectInfo.stacks
9
+ .map(s => `- ${s.name}${s.version ? ` ${s.version}` : ''} (${s.path})`)
10
+ .join('\n');
11
+ const patternsDetected = (analysis.patterns ?? []).join(', ') || 'none detected';
12
+ const namingInfo = projectInfo.patterns
13
+ ? `Classes: ${projectInfo.patterns.classes ?? 'PascalCase'}
14
+ Files: ${typeof projectInfo.patterns.files === 'object' ? JSON.stringify(projectInfo.patterns.files) : projectInfo.patterns.files}
15
+ Folders: ${projectInfo.patterns.folders ?? 'plural'}`
16
+ : 'Using defaults';
17
+ const architectureInfo = analysis.architecture
18
+ ? `Type: ${analysis.architecture.type}\nDescription: ${analysis.architecture.description ?? 'N/A'}`
19
+ : 'Unknown';
20
+ const rulesDetected = (analysis.rules ?? []).length > 0
21
+ ? analysis.rules.map(r => `- ${r}`).join('\n')
22
+ : 'No specific rules detected';
23
+ const prompt = `You are generating a CLAUDE.md file for a software project. This file will be used by Claude Code (an AI coding assistant) to understand the project. Generate ALL content in English.
24
+
25
+ ## Project Information
26
+
27
+ **Name:** ${projectInfo.name}
28
+ **Type:** ${projectInfo.type}
29
+ **Package Manager:** ${projectInfo.packageManager ?? 'npm'}
30
+
31
+ **Stacks:**
32
+ ${stackList}
33
+
34
+ **Architecture:**
35
+ ${architectureInfo}
36
+
37
+ **Patterns Detected:**
38
+ ${patternsDetected}
39
+
40
+ **Naming Conventions:**
41
+ ${namingInfo}
42
+
43
+ **Rules:**
44
+ ${rulesDetected}
45
+
46
+ ## Requirements
47
+
48
+ Generate a comprehensive CLAUDE.md IN ENGLISH that includes ALL of the following sections:
49
+
50
+ 1. **Header** - Project name and brief description
51
+ 2. **Quick Reference** - Table with naming conventions for entities, tables, endpoints, components, hooks
52
+ 3. **Project State** - Table with projects, technologies, ports, and status
53
+ 4. **Delegation via Task Tool** - Explain that Claude should delegate to specialized agents
54
+ 5. **Available Commands** - List commands like /mtd-pipeline-feature, /mtd-pipeline-bugfix, /mtd-git-commit, /mtd-validate-build, /mtd-validate-status
55
+ 6. **Pipeline** - Explain the development pipeline (Explore → Spec → Implement → Review → Complete)
56
+ 7. **Entity Registry** - Explain to always check .claude/entity-registry.json before searching for files
57
+ 8. **grepai** - Explain that grepai should be used for semantic code search
58
+ 9. **Rules** - Project-specific rules and patterns to follow
59
+ 10. **Links** - Links to prompts, commands, and core documentation
60
+
61
+ ## Format
62
+
63
+ Use markdown with:
64
+ - Tables where appropriate
65
+ - Code blocks for examples
66
+ - Clear section headers with ##
67
+ - Bullet points for lists
68
+
69
+ ## Important
70
+
71
+ - ALL content must be in English
72
+ - Be specific to this project's stack (${projectInfo.stacks.map(s => s.name).join(', ')})
73
+ - Include actual commands appropriate for the detected stack
74
+ - Reference the correct file patterns for this project
75
+ - Keep it concise but comprehensive
76
+
77
+ Return ONLY the markdown content. Do not wrap it in code blocks.`;
78
+ try {
79
+ const response = await ollama.generate(prompt, { model });
80
+ // Clean up response if it's wrapped in code blocks
81
+ let content = response;
82
+ if (content.startsWith('```markdown')) {
83
+ content = content.slice(11);
84
+ }
85
+ if (content.startsWith('```')) {
86
+ content = content.slice(3);
87
+ }
88
+ if (content.endsWith('```')) {
89
+ content = content.slice(0, -3);
90
+ }
91
+ return content.trim();
92
+ }
93
+ catch (error) {
94
+ if (verbose) {
95
+ const message = error instanceof Error ? error.message : 'Unknown error';
96
+ console.error('Ollama CLAUDE.md generation failed:', message);
97
+ }
98
+ return null;
99
+ }
100
+ }
101
+ //# sourceMappingURL=claude-md-llm.js.map