codingbuddy 0.0.0-canary.20251219151055.e4122b3 → 0.0.0-dev.20251217094948.321eff2

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 (100) hide show
  1. package/README.md +16 -140
  2. package/dist/src/keyword/keyword.module.js.map +1 -1
  3. package/dist/src/keyword/keyword.service.spec.d.ts +1 -0
  4. package/dist/src/keyword/keyword.service.spec.js +225 -0
  5. package/dist/src/keyword/keyword.service.spec.js.map +1 -0
  6. package/dist/src/main.js +0 -0
  7. package/dist/src/mcp/mcp.module.js +1 -2
  8. package/dist/src/mcp/mcp.module.js.map +1 -1
  9. package/dist/src/mcp/mcp.service.d.ts +7 -16
  10. package/dist/src/mcp/mcp.service.js +65 -140
  11. package/dist/src/mcp/mcp.service.js.map +1 -1
  12. package/dist/src/rules/rules.service.js +2 -2
  13. package/dist/src/rules/rules.service.js.map +1 -1
  14. package/dist/tsconfig.tsbuildinfo +1 -0
  15. package/package.json +7 -22
  16. package/dist/src/analyzer/analyzer.module.d.ts +0 -2
  17. package/dist/src/analyzer/analyzer.module.js +0 -21
  18. package/dist/src/analyzer/analyzer.module.js.map +0 -1
  19. package/dist/src/analyzer/analyzer.service.d.ts +0 -10
  20. package/dist/src/analyzer/analyzer.service.js +0 -74
  21. package/dist/src/analyzer/analyzer.service.js.map +0 -1
  22. package/dist/src/analyzer/analyzer.types.d.ts +0 -70
  23. package/dist/src/analyzer/analyzer.types.js +0 -3
  24. package/dist/src/analyzer/analyzer.types.js.map +0 -1
  25. package/dist/src/analyzer/code.sampler.d.ts +0 -7
  26. package/dist/src/analyzer/code.sampler.js +0 -161
  27. package/dist/src/analyzer/code.sampler.js.map +0 -1
  28. package/dist/src/analyzer/config.analyzer.d.ts +0 -7
  29. package/dist/src/analyzer/config.analyzer.js +0 -182
  30. package/dist/src/analyzer/config.analyzer.js.map +0 -1
  31. package/dist/src/analyzer/directory.analyzer.d.ts +0 -12
  32. package/dist/src/analyzer/directory.analyzer.js +0 -156
  33. package/dist/src/analyzer/directory.analyzer.js.map +0 -1
  34. package/dist/src/analyzer/index.d.ts +0 -7
  35. package/dist/src/analyzer/index.js +0 -32
  36. package/dist/src/analyzer/index.js.map +0 -1
  37. package/dist/src/analyzer/package.analyzer.d.ts +0 -12
  38. package/dist/src/analyzer/package.analyzer.js +0 -126
  39. package/dist/src/analyzer/package.analyzer.js.map +0 -1
  40. package/dist/src/cli/cli.d.ts +0 -10
  41. package/dist/src/cli/cli.js +0 -98
  42. package/dist/src/cli/cli.js.map +0 -1
  43. package/dist/src/cli/cli.types.d.ts +0 -18
  44. package/dist/src/cli/cli.types.js +0 -3
  45. package/dist/src/cli/cli.types.js.map +0 -1
  46. package/dist/src/cli/index.d.ts +0 -6
  47. package/dist/src/cli/index.js +0 -15
  48. package/dist/src/cli/index.js.map +0 -1
  49. package/dist/src/cli/init/config.generator.d.ts +0 -16
  50. package/dist/src/cli/init/config.generator.js +0 -70
  51. package/dist/src/cli/init/config.generator.js.map +0 -1
  52. package/dist/src/cli/init/config.writer.d.ts +0 -10
  53. package/dist/src/cli/init/config.writer.js +0 -43
  54. package/dist/src/cli/init/config.writer.js.map +0 -1
  55. package/dist/src/cli/init/index.d.ts +0 -5
  56. package/dist/src/cli/init/index.js +0 -16
  57. package/dist/src/cli/init/index.js.map +0 -1
  58. package/dist/src/cli/init/init.command.d.ts +0 -3
  59. package/dist/src/cli/init/init.command.js +0 -80
  60. package/dist/src/cli/init/init.command.js.map +0 -1
  61. package/dist/src/cli/init/prompt.builder.d.ts +0 -7
  62. package/dist/src/cli/init/prompt.builder.js +0 -225
  63. package/dist/src/cli/init/prompt.builder.js.map +0 -1
  64. package/dist/src/cli/utils/console.d.ts +0 -11
  65. package/dist/src/cli/utils/console.js +0 -33
  66. package/dist/src/cli/utils/console.js.map +0 -1
  67. package/dist/src/cli/utils/index.d.ts +0 -2
  68. package/dist/src/cli/utils/index.js +0 -7
  69. package/dist/src/cli/utils/index.js.map +0 -1
  70. package/dist/src/config/config.loader.d.ts +0 -22
  71. package/dist/src/config/config.loader.js +0 -105
  72. package/dist/src/config/config.loader.js.map +0 -1
  73. package/dist/src/config/config.module.d.ts +0 -2
  74. package/dist/src/config/config.module.js +0 -21
  75. package/dist/src/config/config.module.js.map +0 -1
  76. package/dist/src/config/config.schema.d.ts +0 -544
  77. package/dist/src/config/config.schema.js +0 -98
  78. package/dist/src/config/config.schema.js.map +0 -1
  79. package/dist/src/config/config.service.d.ts +0 -33
  80. package/dist/src/config/config.service.js +0 -126
  81. package/dist/src/config/config.service.js.map +0 -1
  82. package/dist/src/config/config.types.d.ts +0 -2
  83. package/dist/src/config/config.types.js +0 -6
  84. package/dist/src/config/config.types.js.map +0 -1
  85. package/dist/src/config/context.loader.d.ts +0 -23
  86. package/dist/src/config/context.loader.js +0 -146
  87. package/dist/src/config/context.loader.js.map +0 -1
  88. package/dist/src/config/ignore.parser.d.ts +0 -12
  89. package/dist/src/config/ignore.parser.js +0 -132
  90. package/dist/src/config/ignore.parser.js.map +0 -1
  91. package/dist/src/config/index.d.ts +0 -13
  92. package/dist/src/config/index.js +0 -41
  93. package/dist/src/config/index.js.map +0 -1
  94. package/dist/src/shared/file.utils.d.ts +0 -4
  95. package/dist/src/shared/file.utils.js +0 -37
  96. package/dist/src/shared/file.utils.js.map +0 -1
  97. package/dist/src/shared/path.utils.d.ts +0 -2
  98. package/dist/src/shared/path.utils.js +0 -14
  99. package/dist/src/shared/path.utils.js.map +0 -1
  100. package/dist/tsconfig.build.tsbuildinfo +0 -1
@@ -1,156 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ARCHITECTURE_PATTERNS = void 0;
4
- exports.categorizeDirectory = categorizeDirectory;
5
- exports.detectArchitecturePatterns = detectArchitecturePatterns;
6
- exports.analyzeDirectory = analyzeDirectory;
7
- const fs_1 = require("fs");
8
- const path = require("path");
9
- const ignore_parser_1 = require("../config/ignore.parser");
10
- const file_utils_1 = require("../shared/file.utils");
11
- exports.ARCHITECTURE_PATTERNS = [
12
- {
13
- name: 'Next.js App Router',
14
- indicators: ['app', 'components', 'lib', 'public'],
15
- minIndicators: 2,
16
- },
17
- {
18
- name: 'Next.js Pages Router',
19
- indicators: ['pages', 'components', 'styles', 'public'],
20
- minIndicators: 2,
21
- },
22
- {
23
- name: 'NestJS Modular',
24
- indicators: ['src/modules', 'src/common', 'src/config', 'src/shared'],
25
- minIndicators: 2,
26
- },
27
- {
28
- name: 'Feature-Sliced Design',
29
- indicators: [
30
- 'src/features',
31
- 'src/entities',
32
- 'src/shared',
33
- 'src/widgets',
34
- 'src/app',
35
- ],
36
- minIndicators: 3,
37
- },
38
- {
39
- name: 'Component-Based',
40
- indicators: ['src/components', 'src/hooks', 'src/utils', 'src/services'],
41
- minIndicators: 2,
42
- },
43
- {
44
- name: 'Monorepo',
45
- indicators: ['packages', 'apps', 'libs'],
46
- minIndicators: 1,
47
- },
48
- {
49
- name: 'Clean Architecture',
50
- indicators: [
51
- 'src/domain',
52
- 'src/application',
53
- 'src/infrastructure',
54
- 'src/presentation',
55
- ],
56
- minIndicators: 3,
57
- },
58
- ];
59
- function categorizeDirectory(dirName) {
60
- const lower = dirName.toLowerCase();
61
- if (['src', 'lib', 'source', 'app'].includes(lower)) {
62
- return 'source';
63
- }
64
- if (['test', 'tests', '__tests__', 'spec', 'specs', '__mocks__'].includes(lower)) {
65
- return 'test';
66
- }
67
- if (lower === 'config' || lower.startsWith('.config')) {
68
- return 'config';
69
- }
70
- if (['dist', 'build', 'out', '.next', '.nuxt', 'coverage', '.output'].includes(lower)) {
71
- return 'build';
72
- }
73
- if (lower === 'node_modules' || lower === 'vendor') {
74
- return 'dependencies';
75
- }
76
- if (['public', 'static', 'assets', 'images', 'media'].includes(lower)) {
77
- return 'static';
78
- }
79
- return 'other';
80
- }
81
- function detectArchitecturePatterns(directories) {
82
- const detected = [];
83
- const normalizedDirs = new Set(directories.map(d => d.toLowerCase()));
84
- for (const pattern of exports.ARCHITECTURE_PATTERNS) {
85
- const matchingIndicators = pattern.indicators.filter(indicator => normalizedDirs.has(indicator.toLowerCase()));
86
- if (matchingIndicators.length >= pattern.minIndicators) {
87
- const confidence = matchingIndicators.length / pattern.indicators.length;
88
- detected.push({
89
- name: pattern.name,
90
- confidence,
91
- indicators: matchingIndicators,
92
- });
93
- }
94
- }
95
- return detected.sort((a, b) => b.confidence - a.confidence);
96
- }
97
- async function scanDirectory(rootPath, ignorePatterns, relativePath = '') {
98
- const files = [];
99
- const dirs = [];
100
- const currentPath = relativePath
101
- ? path.join(rootPath, relativePath)
102
- : rootPath;
103
- if (!(0, fs_1.existsSync)(currentPath)) {
104
- return { files, dirs };
105
- }
106
- const entries = await (0, file_utils_1.safeReadDirWithTypes)(currentPath);
107
- for (const entry of entries) {
108
- const entryRelativePath = relativePath
109
- ? `${relativePath}/${entry.name}`
110
- : entry.name;
111
- if ((0, ignore_parser_1.shouldIgnore)(entryRelativePath, ignorePatterns)) {
112
- continue;
113
- }
114
- if (entry.isDirectory()) {
115
- dirs.push(entryRelativePath);
116
- const subResult = await scanDirectory(rootPath, ignorePatterns, entryRelativePath);
117
- files.push(...subResult.files);
118
- dirs.push(...subResult.dirs);
119
- }
120
- else if (entry.isFile()) {
121
- files.push(entryRelativePath);
122
- }
123
- }
124
- return { files, dirs };
125
- }
126
- async function analyzeDirectory(projectRoot, customIgnorePatterns = []) {
127
- const ignorePatterns = [
128
- ...(0, ignore_parser_1.getDefaultIgnorePatterns)(),
129
- ...customIgnorePatterns,
130
- ];
131
- const { files, dirs } = await scanDirectory(projectRoot, ignorePatterns);
132
- if (files.length === 0 && dirs.length === 0) {
133
- if (!(0, fs_1.existsSync)(projectRoot)) {
134
- return {
135
- rootDirs: [],
136
- rootFiles: [],
137
- allFiles: [],
138
- patterns: [],
139
- totalFiles: 0,
140
- totalDirs: 0,
141
- };
142
- }
143
- }
144
- const rootFiles = files.filter(f => !f.includes('/'));
145
- const rootDirs = dirs.filter(d => !d.includes('/'));
146
- const patterns = detectArchitecturePatterns(dirs);
147
- return {
148
- rootDirs,
149
- rootFiles,
150
- allFiles: files,
151
- patterns,
152
- totalFiles: files.length,
153
- totalDirs: dirs.length,
154
- };
155
- }
156
- //# sourceMappingURL=directory.analyzer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"directory.analyzer.js","sourceRoot":"","sources":["../../../src/analyzer/directory.analyzer.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- export type { ProjectAnalysis, PackageInfo, DetectedFramework, FrameworkCategory, DirectoryAnalysis, ArchitecturePattern, ConfigFilesSummary, TsConfigSummary, EslintSummary, PrettierSummary, CodeSample, CodeCategory, } from './analyzer.types';
2
- export { analyzePackage, parsePackageJson, detectFrameworks, FRAMEWORK_DEFINITIONS, } from './package.analyzer';
3
- export { analyzeDirectory, detectArchitecturePatterns, categorizeDirectory, ARCHITECTURE_PATTERNS, } from './directory.analyzer';
4
- export { analyzeConfigs, parseTsConfig, parseEslintConfig, parsePrettierConfig, detectConfigFiles, CONFIG_FILE_PATTERNS, } from './config.analyzer';
5
- export { sampleCode, selectSampleFiles, categorizeFile, detectLanguage, isCodeFile, LANGUAGE_EXTENSIONS, } from './code.sampler';
6
- export { AnalyzerService, type AnalyzeOptions } from './analyzer.service';
7
- export { AnalyzerModule } from './analyzer.module';
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AnalyzerModule = exports.AnalyzerService = exports.LANGUAGE_EXTENSIONS = exports.isCodeFile = exports.detectLanguage = exports.categorizeFile = exports.selectSampleFiles = exports.sampleCode = exports.CONFIG_FILE_PATTERNS = exports.detectConfigFiles = exports.parsePrettierConfig = exports.parseEslintConfig = exports.parseTsConfig = exports.analyzeConfigs = exports.ARCHITECTURE_PATTERNS = exports.categorizeDirectory = exports.detectArchitecturePatterns = exports.analyzeDirectory = exports.FRAMEWORK_DEFINITIONS = exports.detectFrameworks = exports.parsePackageJson = exports.analyzePackage = void 0;
4
- var package_analyzer_1 = require("./package.analyzer");
5
- Object.defineProperty(exports, "analyzePackage", { enumerable: true, get: function () { return package_analyzer_1.analyzePackage; } });
6
- Object.defineProperty(exports, "parsePackageJson", { enumerable: true, get: function () { return package_analyzer_1.parsePackageJson; } });
7
- Object.defineProperty(exports, "detectFrameworks", { enumerable: true, get: function () { return package_analyzer_1.detectFrameworks; } });
8
- Object.defineProperty(exports, "FRAMEWORK_DEFINITIONS", { enumerable: true, get: function () { return package_analyzer_1.FRAMEWORK_DEFINITIONS; } });
9
- var directory_analyzer_1 = require("./directory.analyzer");
10
- Object.defineProperty(exports, "analyzeDirectory", { enumerable: true, get: function () { return directory_analyzer_1.analyzeDirectory; } });
11
- Object.defineProperty(exports, "detectArchitecturePatterns", { enumerable: true, get: function () { return directory_analyzer_1.detectArchitecturePatterns; } });
12
- Object.defineProperty(exports, "categorizeDirectory", { enumerable: true, get: function () { return directory_analyzer_1.categorizeDirectory; } });
13
- Object.defineProperty(exports, "ARCHITECTURE_PATTERNS", { enumerable: true, get: function () { return directory_analyzer_1.ARCHITECTURE_PATTERNS; } });
14
- var config_analyzer_1 = require("./config.analyzer");
15
- Object.defineProperty(exports, "analyzeConfigs", { enumerable: true, get: function () { return config_analyzer_1.analyzeConfigs; } });
16
- Object.defineProperty(exports, "parseTsConfig", { enumerable: true, get: function () { return config_analyzer_1.parseTsConfig; } });
17
- Object.defineProperty(exports, "parseEslintConfig", { enumerable: true, get: function () { return config_analyzer_1.parseEslintConfig; } });
18
- Object.defineProperty(exports, "parsePrettierConfig", { enumerable: true, get: function () { return config_analyzer_1.parsePrettierConfig; } });
19
- Object.defineProperty(exports, "detectConfigFiles", { enumerable: true, get: function () { return config_analyzer_1.detectConfigFiles; } });
20
- Object.defineProperty(exports, "CONFIG_FILE_PATTERNS", { enumerable: true, get: function () { return config_analyzer_1.CONFIG_FILE_PATTERNS; } });
21
- var code_sampler_1 = require("./code.sampler");
22
- Object.defineProperty(exports, "sampleCode", { enumerable: true, get: function () { return code_sampler_1.sampleCode; } });
23
- Object.defineProperty(exports, "selectSampleFiles", { enumerable: true, get: function () { return code_sampler_1.selectSampleFiles; } });
24
- Object.defineProperty(exports, "categorizeFile", { enumerable: true, get: function () { return code_sampler_1.categorizeFile; } });
25
- Object.defineProperty(exports, "detectLanguage", { enumerable: true, get: function () { return code_sampler_1.detectLanguage; } });
26
- Object.defineProperty(exports, "isCodeFile", { enumerable: true, get: function () { return code_sampler_1.isCodeFile; } });
27
- Object.defineProperty(exports, "LANGUAGE_EXTENSIONS", { enumerable: true, get: function () { return code_sampler_1.LANGUAGE_EXTENSIONS; } });
28
- var analyzer_service_1 = require("./analyzer.service");
29
- Object.defineProperty(exports, "AnalyzerService", { enumerable: true, get: function () { return analyzer_service_1.AnalyzerService; } });
30
- var analyzer_module_1 = require("./analyzer.module");
31
- Object.defineProperty(exports, "AnalyzerModule", { enumerable: true, get: function () { return analyzer_module_1.AnalyzerModule; } });
32
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analyzer/index.ts"],"names":[],"mappings":";;;AAiBA,uDAK4B;AAJ1B,kHAAA,cAAc,OAAA;AACd,oHAAA,gBAAgB,OAAA;AAChB,oHAAA,gBAAgB,OAAA;AAChB,yHAAA,qBAAqB,OAAA;AAGvB,2DAK8B;AAJ5B,sHAAA,gBAAgB,OAAA;AAChB,gIAAA,0BAA0B,OAAA;AAC1B,yHAAA,mBAAmB,OAAA;AACnB,2HAAA,qBAAqB,OAAA;AAGvB,qDAO2B;AANzB,iHAAA,cAAc,OAAA;AACd,gHAAA,aAAa,OAAA;AACb,oHAAA,iBAAiB,OAAA;AACjB,sHAAA,mBAAmB,OAAA;AACnB,oHAAA,iBAAiB,OAAA;AACjB,uHAAA,oBAAoB,OAAA;AAGtB,+CAOwB;AANtB,0GAAA,UAAU,OAAA;AACV,iHAAA,iBAAiB,OAAA;AACjB,8GAAA,cAAc,OAAA;AACd,8GAAA,cAAc,OAAA;AACd,0GAAA,UAAU,OAAA;AACV,mHAAA,mBAAmB,OAAA;AAIrB,uDAA0E;AAAjE,mHAAA,eAAe,OAAA;AACxB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA"}
@@ -1,12 +0,0 @@
1
- import type { PackageInfo, DetectedFramework, FrameworkCategory } from './analyzer.types';
2
- interface FrameworkDefinition {
3
- name: string;
4
- packageName: string;
5
- category: FrameworkCategory;
6
- devOnly?: boolean;
7
- }
8
- export declare const FRAMEWORK_DEFINITIONS: FrameworkDefinition[];
9
- export declare function parsePackageJson(content: string): Omit<PackageInfo, 'detectedFrameworks'>;
10
- export declare function detectFrameworks(dependencies: Record<string, string>, devDependencies: Record<string, string>): DetectedFramework[];
11
- export declare function analyzePackage(projectRoot: string): Promise<PackageInfo | null>;
12
- export {};
@@ -1,126 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FRAMEWORK_DEFINITIONS = void 0;
4
- exports.parsePackageJson = parsePackageJson;
5
- exports.detectFrameworks = detectFrameworks;
6
- exports.analyzePackage = analyzePackage;
7
- const fs_1 = require("fs");
8
- const path = require("path");
9
- const file_utils_1 = require("../shared/file.utils");
10
- exports.FRAMEWORK_DEFINITIONS = [
11
- { name: 'React', packageName: 'react', category: 'frontend' },
12
- { name: 'Vue', packageName: 'vue', category: 'frontend' },
13
- { name: 'Angular', packageName: '@angular/core', category: 'frontend' },
14
- { name: 'Svelte', packageName: 'svelte', category: 'frontend' },
15
- { name: 'Solid', packageName: 'solid-js', category: 'frontend' },
16
- { name: 'Next.js', packageName: 'next', category: 'fullstack' },
17
- { name: 'Nuxt', packageName: 'nuxt', category: 'fullstack' },
18
- { name: 'Remix', packageName: '@remix-run/react', category: 'fullstack' },
19
- { name: 'Astro', packageName: 'astro', category: 'fullstack' },
20
- { name: 'NestJS', packageName: '@nestjs/core', category: 'backend' },
21
- { name: 'Express', packageName: 'express', category: 'backend' },
22
- { name: 'Fastify', packageName: 'fastify', category: 'backend' },
23
- { name: 'Hono', packageName: 'hono', category: 'backend' },
24
- { name: 'Koa', packageName: 'koa', category: 'backend' },
25
- { name: 'Jest', packageName: 'jest', category: 'testing', devOnly: true },
26
- { name: 'Vitest', packageName: 'vitest', category: 'testing', devOnly: true },
27
- { name: 'Mocha', packageName: 'mocha', category: 'testing', devOnly: true },
28
- {
29
- name: 'Playwright',
30
- packageName: '@playwright/test',
31
- category: 'testing',
32
- devOnly: true,
33
- },
34
- {
35
- name: 'Cypress',
36
- packageName: 'cypress',
37
- category: 'testing',
38
- devOnly: true,
39
- },
40
- { name: 'Vite', packageName: 'vite', category: 'build', devOnly: true },
41
- { name: 'Webpack', packageName: 'webpack', category: 'build', devOnly: true },
42
- { name: 'esbuild', packageName: 'esbuild', category: 'build', devOnly: true },
43
- { name: 'Rollup', packageName: 'rollup', category: 'build', devOnly: true },
44
- { name: 'Turbopack', packageName: 'turbo', category: 'build', devOnly: true },
45
- { name: 'ESLint', packageName: 'eslint', category: 'linting', devOnly: true },
46
- {
47
- name: 'Prettier',
48
- packageName: 'prettier',
49
- category: 'linting',
50
- devOnly: true,
51
- },
52
- {
53
- name: 'Biome',
54
- packageName: '@biomejs/biome',
55
- category: 'linting',
56
- devOnly: true,
57
- },
58
- {
59
- name: 'Tailwind CSS',
60
- packageName: 'tailwindcss',
61
- category: 'styling',
62
- devOnly: true,
63
- },
64
- {
65
- name: 'Styled Components',
66
- packageName: 'styled-components',
67
- category: 'styling',
68
- },
69
- { name: 'Emotion', packageName: '@emotion/react', category: 'styling' },
70
- { name: 'Sass', packageName: 'sass', category: 'styling', devOnly: true },
71
- { name: 'Prisma', packageName: '@prisma/client', category: 'database' },
72
- { name: 'TypeORM', packageName: 'typeorm', category: 'database' },
73
- { name: 'Drizzle', packageName: 'drizzle-orm', category: 'database' },
74
- { name: 'Mongoose', packageName: 'mongoose', category: 'database' },
75
- ];
76
- function parsePackageJson(content) {
77
- const raw = JSON.parse(content);
78
- return {
79
- name: raw.name ?? 'unknown',
80
- version: raw.version ?? '0.0.0',
81
- description: raw.description,
82
- type: raw.type,
83
- dependencies: raw.dependencies ?? {},
84
- devDependencies: raw.devDependencies ?? {},
85
- scripts: raw.scripts ?? {},
86
- };
87
- }
88
- function detectFrameworks(dependencies, devDependencies) {
89
- const allDeps = { ...dependencies, ...devDependencies };
90
- const detected = [];
91
- for (const def of exports.FRAMEWORK_DEFINITIONS) {
92
- const version = def.devOnly
93
- ? devDependencies[def.packageName]
94
- : allDeps[def.packageName];
95
- if (version) {
96
- detected.push({
97
- name: def.name,
98
- category: def.category,
99
- version,
100
- });
101
- }
102
- }
103
- return detected;
104
- }
105
- async function analyzePackage(projectRoot) {
106
- const packagePath = path.join(projectRoot, 'package.json');
107
- if (!(0, fs_1.existsSync)(packagePath)) {
108
- return null;
109
- }
110
- const content = await (0, file_utils_1.safeReadFile)(packagePath);
111
- if (content === null) {
112
- return null;
113
- }
114
- try {
115
- const parsed = parsePackageJson(content);
116
- const frameworks = detectFrameworks(parsed.dependencies, parsed.devDependencies);
117
- return {
118
- ...parsed,
119
- detectedFrameworks: frameworks,
120
- };
121
- }
122
- catch {
123
- return null;
124
- }
125
- }
126
- //# sourceMappingURL=package.analyzer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package.analyzer.js","sourceRoot":"","sources":["../../../src/analyzer/package.analyzer.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env node
2
- import type { InitOptions } from './cli.types';
3
- export interface ParsedArgs {
4
- command: 'init' | 'help' | 'version';
5
- options: Partial<InitOptions>;
6
- }
7
- export declare function parseArgs(args: string[]): ParsedArgs;
8
- export declare function printUsage(): void;
9
- export declare function printVersion(): void;
10
- export declare function main(args?: string[]): Promise<void>;
@@ -1,98 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.parseArgs = parseArgs;
5
- exports.printUsage = printUsage;
6
- exports.printVersion = printVersion;
7
- exports.main = main;
8
- const init_1 = require("./init");
9
- const VERSION = '1.0.0';
10
- function parseArgs(args) {
11
- const options = {
12
- projectRoot: process.cwd(),
13
- format: 'js',
14
- force: false,
15
- };
16
- if (args.includes('--help') || args.includes('-h')) {
17
- return { command: 'help', options };
18
- }
19
- if (args.includes('--version') || args.includes('-v')) {
20
- return { command: 'version', options };
21
- }
22
- const command = args[0];
23
- if (command !== 'init') {
24
- return { command: 'help', options };
25
- }
26
- for (let i = 1; i < args.length; i++) {
27
- const arg = args[i];
28
- if (arg === '--force' || arg === '-f') {
29
- options.force = true;
30
- }
31
- else if (arg === '--format') {
32
- const format = args[++i];
33
- if (format === 'js' || format === 'json') {
34
- options.format = format;
35
- }
36
- }
37
- else if (arg === '--api-key') {
38
- options.apiKey = args[++i];
39
- }
40
- else if (!arg.startsWith('-')) {
41
- options.projectRoot = arg;
42
- }
43
- }
44
- return { command: 'init', options };
45
- }
46
- function printUsage() {
47
- const usage = `
48
- CodingBuddy CLI - AI-powered project configuration generator
49
-
50
- Usage:
51
- codingbuddy init [path] [options] Initialize configuration
52
- codingbuddy --help Show this help
53
- codingbuddy --version Show version
54
-
55
- Options:
56
- --format <js|json> Output format (default: js)
57
- --force, -f Overwrite existing config
58
- --api-key <key> Anthropic API key (or set ANTHROPIC_API_KEY env)
59
-
60
- Examples:
61
- codingbuddy init Initialize in current directory
62
- codingbuddy init ./my-project Initialize in specific directory
63
- codingbuddy init --format json Generate JSON config
64
- codingbuddy init --force Overwrite existing config
65
-
66
- Environment:
67
- ANTHROPIC_API_KEY API key for AI generation
68
- `;
69
- process.stdout.write(usage + '\n');
70
- }
71
- function printVersion() {
72
- process.stdout.write(`codingbuddy v${VERSION}\n`);
73
- }
74
- async function main(args = process.argv.slice(2)) {
75
- const { command, options } = parseArgs(args);
76
- switch (command) {
77
- case 'help':
78
- printUsage();
79
- break;
80
- case 'version':
81
- printVersion();
82
- break;
83
- case 'init': {
84
- const result = await (0, init_1.runInit)(options);
85
- if (!result.success) {
86
- process.exitCode = 1;
87
- }
88
- break;
89
- }
90
- }
91
- }
92
- if (require.main === module) {
93
- main().catch(error => {
94
- console.error('Fatal error:', error);
95
- process.exitCode = 1;
96
- });
97
- }
98
- //# sourceMappingURL=cli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli/cli.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- export type CommandHandler = (args: string[]) => Promise<void>;
2
- export interface CliCommand {
3
- name: string;
4
- description: string;
5
- handler: CommandHandler;
6
- }
7
- export interface InitOptions {
8
- projectRoot: string;
9
- format: 'js' | 'json';
10
- force: boolean;
11
- apiKey?: string;
12
- }
13
- export interface InitResult {
14
- success: boolean;
15
- configPath?: string;
16
- error?: string;
17
- }
18
- export type LogLevel = 'info' | 'success' | 'warn' | 'error';
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=cli.types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.types.js","sourceRoot":"","sources":["../../../src/cli/cli.types.ts"],"names":[],"mappings":""}
@@ -1,6 +0,0 @@
1
- export { main, parseArgs, printUsage, printVersion } from './cli';
2
- export type { ParsedArgs } from './cli';
3
- export type { InitOptions, InitResult, CliCommand, CommandHandler, LogLevel, } from './cli.types';
4
- export { runInit, getApiKey } from './init';
5
- export { createConsoleUtils, consoleUtils } from './utils';
6
- export type { ConsoleUtils } from './utils';
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.consoleUtils = exports.createConsoleUtils = exports.getApiKey = exports.runInit = exports.printVersion = exports.printUsage = exports.parseArgs = exports.main = void 0;
4
- var cli_1 = require("./cli");
5
- Object.defineProperty(exports, "main", { enumerable: true, get: function () { return cli_1.main; } });
6
- Object.defineProperty(exports, "parseArgs", { enumerable: true, get: function () { return cli_1.parseArgs; } });
7
- Object.defineProperty(exports, "printUsage", { enumerable: true, get: function () { return cli_1.printUsage; } });
8
- Object.defineProperty(exports, "printVersion", { enumerable: true, get: function () { return cli_1.printVersion; } });
9
- var init_1 = require("./init");
10
- Object.defineProperty(exports, "runInit", { enumerable: true, get: function () { return init_1.runInit; } });
11
- Object.defineProperty(exports, "getApiKey", { enumerable: true, get: function () { return init_1.getApiKey; } });
12
- var utils_1 = require("./utils");
13
- Object.defineProperty(exports, "createConsoleUtils", { enumerable: true, get: function () { return utils_1.createConsoleUtils; } });
14
- Object.defineProperty(exports, "consoleUtils", { enumerable: true, get: function () { return utils_1.consoleUtils; } });
15
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":";;;AAAA,6BAAkE;AAAzD,2FAAA,IAAI,OAAA;AAAE,gGAAA,SAAS,OAAA;AAAE,iGAAA,UAAU,OAAA;AAAE,mGAAA,YAAY,OAAA;AASlD,+BAA4C;AAAnC,+FAAA,OAAO,OAAA;AAAE,iGAAA,SAAS,OAAA;AAC3B,iCAA2D;AAAlD,2GAAA,kBAAkB,OAAA;AAAE,qGAAA,YAAY,OAAA"}
@@ -1,16 +0,0 @@
1
- import type { ProjectAnalysis } from '../../analyzer';
2
- import type { CodingBuddyConfig } from '../../config';
3
- export interface ConfigGeneratorOptions {
4
- apiKey: string;
5
- model?: string;
6
- maxTokens?: number;
7
- }
8
- export declare function extractJsonFromResponse(response: string): string | null;
9
- export declare function parseJsonResponse(response: string): CodingBuddyConfig;
10
- export declare class ConfigGenerator {
11
- private client;
12
- private model;
13
- private maxTokens;
14
- constructor(options: ConfigGeneratorOptions);
15
- generate(analysis: ProjectAnalysis): Promise<CodingBuddyConfig>;
16
- }
@@ -1,70 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ConfigGenerator = void 0;
4
- exports.extractJsonFromResponse = extractJsonFromResponse;
5
- exports.parseJsonResponse = parseJsonResponse;
6
- const sdk_1 = require("@anthropic-ai/sdk");
7
- const config_schema_1 = require("../../config/config.schema");
8
- const prompt_builder_1 = require("./prompt.builder");
9
- const DEFAULT_MODEL = 'claude-sonnet-4-20250514';
10
- const DEFAULT_MAX_TOKENS = 4096;
11
- function extractJsonFromResponse(response) {
12
- const codeBlockMatch = response.match(/```(?:json)?\s*([\s\S]*?)```/);
13
- if (codeBlockMatch) {
14
- return codeBlockMatch[1].trim();
15
- }
16
- const jsonMatch = response.match(/\{[\s\S]*\}/);
17
- if (jsonMatch) {
18
- return jsonMatch[0];
19
- }
20
- return null;
21
- }
22
- function parseJsonResponse(response) {
23
- const jsonString = extractJsonFromResponse(response);
24
- if (!jsonString) {
25
- throw new Error('No valid JSON found in response');
26
- }
27
- let parsed;
28
- try {
29
- parsed = JSON.parse(jsonString);
30
- }
31
- catch {
32
- throw new Error(`Invalid JSON in response: ${jsonString.substring(0, 100)}...`);
33
- }
34
- const validation = (0, config_schema_1.validateConfig)(parsed);
35
- if (!validation.success) {
36
- console.warn('Config validation warnings:', validation.errors);
37
- }
38
- return validation.data ?? parsed;
39
- }
40
- class ConfigGenerator {
41
- constructor(options) {
42
- this.client = new sdk_1.default({
43
- apiKey: options.apiKey,
44
- });
45
- this.model = options.model ?? DEFAULT_MODEL;
46
- this.maxTokens = options.maxTokens ?? DEFAULT_MAX_TOKENS;
47
- }
48
- async generate(analysis) {
49
- const systemPrompt = (0, prompt_builder_1.buildSystemPrompt)();
50
- const userPrompt = (0, prompt_builder_1.buildAnalysisPrompt)(analysis);
51
- const response = await this.client.messages.create({
52
- model: this.model,
53
- max_tokens: this.maxTokens,
54
- system: systemPrompt,
55
- messages: [
56
- {
57
- role: 'user',
58
- content: userPrompt,
59
- },
60
- ],
61
- });
62
- const textContent = response.content.find(block => block.type === 'text');
63
- if (!textContent || textContent.type !== 'text') {
64
- throw new Error('No text content in AI response');
65
- }
66
- return parseJsonResponse(textContent.text);
67
- }
68
- }
69
- exports.ConfigGenerator = ConfigGenerator;
70
- //# sourceMappingURL=config.generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.generator.js","sourceRoot":"","sources":["../../../../src/cli/init/config.generator.ts"],"names":[],"mappings":";;;AAqCA,0DAcC;AAKD,8CA0BC;AA5ED,2CAA0C;AAG1C,8DAA4D;AAC5D,qDAA0E;AAiB1E,MAAM,aAAa,GAAG,0BAA0B,CAAC;AAKjD,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAKhC,SAAgB,uBAAuB,CAAC,QAAgB;IAEtD,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACtE,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IAGD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAChD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAKD,SAAgB,iBAAiB,CAAC,QAAgB;IAChD,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAErD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,6BAA6B,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAC/D,CAAC;IACJ,CAAC;IAGD,MAAM,UAAU,GAAG,IAAA,8BAAc,EAAC,MAAM,CAAC,CAAC;IAE1C,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAGxB,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,UAAU,CAAC,IAAI,IAAK,MAA4B,CAAC;AAC1D,CAAC;AAKD,MAAa,eAAe;IAK1B,YAAY,OAA+B;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,aAAS,CAAC;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAC3D,CAAC;IAKD,KAAK,CAAC,QAAQ,CAAC,QAAyB;QACtC,MAAM,YAAY,GAAG,IAAA,kCAAiB,GAAE,CAAC;QACzC,MAAM,UAAU,GAAG,IAAA,oCAAmB,EAAC,QAAQ,CAAC,CAAC;QAEjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,MAAM,EAAE,YAAY;YACpB,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,UAAU;iBACpB;aACF;SACF,CAAC,CAAC;QAGH,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAE1E,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;CACF;AAzCD,0CAyCC"}
@@ -1,10 +0,0 @@
1
- import type { CodingBuddyConfig } from '../../config';
2
- export declare const CONFIG_FILE_NAMES: readonly ["codingbuddy.config.js", "codingbuddy.config.json"];
3
- export type ConfigFormat = 'js' | 'json';
4
- export interface WriteConfigOptions {
5
- format?: ConfigFormat;
6
- }
7
- export declare function formatConfigAsJs(config: CodingBuddyConfig): string;
8
- export declare function formatConfigAsJson(config: CodingBuddyConfig): string;
9
- export declare function findExistingConfig(projectRoot: string): Promise<string | null>;
10
- export declare function writeConfig(projectRoot: string, config: CodingBuddyConfig, options?: WriteConfigOptions): Promise<string>;