codingbuddy 0.0.0-canary.20251219125853.fb2b0fd → 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 (99) hide show
  1. package/README.md +16 -140
  2. package/dist/src/keyword/keyword.service.spec.d.ts +1 -0
  3. package/dist/src/keyword/keyword.service.spec.js +225 -0
  4. package/dist/src/keyword/keyword.service.spec.js.map +1 -0
  5. package/dist/src/main.js +0 -0
  6. package/dist/src/mcp/mcp.module.js +1 -2
  7. package/dist/src/mcp/mcp.module.js.map +1 -1
  8. package/dist/src/mcp/mcp.service.d.ts +1 -10
  9. package/dist/src/mcp/mcp.service.js +65 -140
  10. package/dist/src/mcp/mcp.service.js.map +1 -1
  11. package/dist/src/rules/rules.service.js +2 -2
  12. package/dist/src/rules/rules.service.js.map +1 -1
  13. package/dist/tsconfig.tsbuildinfo +1 -0
  14. package/package.json +6 -8
  15. package/dist/src/analyzer/analyzer.module.d.ts +0 -2
  16. package/dist/src/analyzer/analyzer.module.js +0 -21
  17. package/dist/src/analyzer/analyzer.module.js.map +0 -1
  18. package/dist/src/analyzer/analyzer.service.d.ts +0 -10
  19. package/dist/src/analyzer/analyzer.service.js +0 -73
  20. package/dist/src/analyzer/analyzer.service.js.map +0 -1
  21. package/dist/src/analyzer/analyzer.types.d.ts +0 -70
  22. package/dist/src/analyzer/analyzer.types.js +0 -3
  23. package/dist/src/analyzer/analyzer.types.js.map +0 -1
  24. package/dist/src/analyzer/code.sampler.d.ts +0 -7
  25. package/dist/src/analyzer/code.sampler.js +0 -158
  26. package/dist/src/analyzer/code.sampler.js.map +0 -1
  27. package/dist/src/analyzer/config.analyzer.d.ts +0 -7
  28. package/dist/src/analyzer/config.analyzer.js +0 -172
  29. package/dist/src/analyzer/config.analyzer.js.map +0 -1
  30. package/dist/src/analyzer/directory.analyzer.d.ts +0 -12
  31. package/dist/src/analyzer/directory.analyzer.js +0 -140
  32. package/dist/src/analyzer/directory.analyzer.js.map +0 -1
  33. package/dist/src/analyzer/index.d.ts +0 -7
  34. package/dist/src/analyzer/index.js +0 -32
  35. package/dist/src/analyzer/index.js.map +0 -1
  36. package/dist/src/analyzer/package.analyzer.d.ts +0 -12
  37. package/dist/src/analyzer/package.analyzer.js +0 -121
  38. package/dist/src/analyzer/package.analyzer.js.map +0 -1
  39. package/dist/src/cli/cli.d.ts +0 -10
  40. package/dist/src/cli/cli.js +0 -98
  41. package/dist/src/cli/cli.js.map +0 -1
  42. package/dist/src/cli/cli.types.d.ts +0 -18
  43. package/dist/src/cli/cli.types.js +0 -3
  44. package/dist/src/cli/cli.types.js.map +0 -1
  45. package/dist/src/cli/index.d.ts +0 -6
  46. package/dist/src/cli/index.js +0 -15
  47. package/dist/src/cli/index.js.map +0 -1
  48. package/dist/src/cli/init/config.generator.d.ts +0 -16
  49. package/dist/src/cli/init/config.generator.js +0 -70
  50. package/dist/src/cli/init/config.generator.js.map +0 -1
  51. package/dist/src/cli/init/config.writer.d.ts +0 -10
  52. package/dist/src/cli/init/config.writer.js +0 -40
  53. package/dist/src/cli/init/config.writer.js.map +0 -1
  54. package/dist/src/cli/init/index.d.ts +0 -5
  55. package/dist/src/cli/init/index.js +0 -16
  56. package/dist/src/cli/init/index.js.map +0 -1
  57. package/dist/src/cli/init/init.command.d.ts +0 -3
  58. package/dist/src/cli/init/init.command.js +0 -80
  59. package/dist/src/cli/init/init.command.js.map +0 -1
  60. package/dist/src/cli/init/prompt.builder.d.ts +0 -7
  61. package/dist/src/cli/init/prompt.builder.js +0 -222
  62. package/dist/src/cli/init/prompt.builder.js.map +0 -1
  63. package/dist/src/cli/utils/console.d.ts +0 -11
  64. package/dist/src/cli/utils/console.js +0 -33
  65. package/dist/src/cli/utils/console.js.map +0 -1
  66. package/dist/src/cli/utils/index.d.ts +0 -2
  67. package/dist/src/cli/utils/index.js +0 -7
  68. package/dist/src/cli/utils/index.js.map +0 -1
  69. package/dist/src/config/config.loader.d.ts +0 -22
  70. package/dist/src/config/config.loader.js +0 -105
  71. package/dist/src/config/config.loader.js.map +0 -1
  72. package/dist/src/config/config.module.d.ts +0 -2
  73. package/dist/src/config/config.module.js +0 -21
  74. package/dist/src/config/config.module.js.map +0 -1
  75. package/dist/src/config/config.schema.d.ts +0 -544
  76. package/dist/src/config/config.schema.js +0 -96
  77. package/dist/src/config/config.schema.js.map +0 -1
  78. package/dist/src/config/config.service.d.ts +0 -33
  79. package/dist/src/config/config.service.js +0 -126
  80. package/dist/src/config/config.service.js.map +0 -1
  81. package/dist/src/config/config.types.d.ts +0 -2
  82. package/dist/src/config/config.types.js +0 -6
  83. package/dist/src/config/config.types.js.map +0 -1
  84. package/dist/src/config/context.loader.d.ts +0 -23
  85. package/dist/src/config/context.loader.js +0 -146
  86. package/dist/src/config/context.loader.js.map +0 -1
  87. package/dist/src/config/ignore.parser.d.ts +0 -12
  88. package/dist/src/config/ignore.parser.js +0 -132
  89. package/dist/src/config/ignore.parser.js.map +0 -1
  90. package/dist/src/config/index.d.ts +0 -13
  91. package/dist/src/config/index.js +0 -41
  92. package/dist/src/config/index.js.map +0 -1
  93. package/dist/src/shared/file.utils.d.ts +0 -4
  94. package/dist/src/shared/file.utils.js +0 -37
  95. package/dist/src/shared/file.utils.js.map +0 -1
  96. package/dist/src/shared/path.utils.d.ts +0 -2
  97. package/dist/src/shared/path.utils.js +0 -14
  98. package/dist/src/shared/path.utils.js.map +0 -1
  99. package/dist/tsconfig.build.tsbuildinfo +0 -1
@@ -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,121 +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
- { name: 'Biome', packageName: '@biomejs/biome', category: 'linting', devOnly: true },
53
- {
54
- name: 'Tailwind CSS',
55
- packageName: 'tailwindcss',
56
- category: 'styling',
57
- devOnly: true,
58
- },
59
- {
60
- name: 'Styled Components',
61
- packageName: 'styled-components',
62
- category: 'styling',
63
- },
64
- { name: 'Emotion', packageName: '@emotion/react', category: 'styling' },
65
- { name: 'Sass', packageName: 'sass', category: 'styling', devOnly: true },
66
- { name: 'Prisma', packageName: '@prisma/client', category: 'database' },
67
- { name: 'TypeORM', packageName: 'typeorm', category: 'database' },
68
- { name: 'Drizzle', packageName: 'drizzle-orm', category: 'database' },
69
- { name: 'Mongoose', packageName: 'mongoose', category: 'database' },
70
- ];
71
- function parsePackageJson(content) {
72
- const raw = JSON.parse(content);
73
- return {
74
- name: raw.name ?? 'unknown',
75
- version: raw.version ?? '0.0.0',
76
- description: raw.description,
77
- type: raw.type,
78
- dependencies: raw.dependencies ?? {},
79
- devDependencies: raw.devDependencies ?? {},
80
- scripts: raw.scripts ?? {},
81
- };
82
- }
83
- function detectFrameworks(dependencies, devDependencies) {
84
- const allDeps = { ...dependencies, ...devDependencies };
85
- const detected = [];
86
- for (const def of exports.FRAMEWORK_DEFINITIONS) {
87
- const version = def.devOnly
88
- ? devDependencies[def.packageName]
89
- : allDeps[def.packageName];
90
- if (version) {
91
- detected.push({
92
- name: def.name,
93
- category: def.category,
94
- version,
95
- });
96
- }
97
- }
98
- return detected;
99
- }
100
- async function analyzePackage(projectRoot) {
101
- const packagePath = path.join(projectRoot, 'package.json');
102
- if (!(0, fs_1.existsSync)(packagePath)) {
103
- return null;
104
- }
105
- const content = await (0, file_utils_1.safeReadFile)(packagePath);
106
- if (content === null) {
107
- return null;
108
- }
109
- try {
110
- const parsed = parsePackageJson(content);
111
- const frameworks = detectFrameworks(parsed.dependencies, parsed.devDependencies);
112
- return {
113
- ...parsed,
114
- detectedFrameworks: frameworks,
115
- };
116
- }
117
- catch {
118
- return null;
119
- }
120
- }
121
- //# 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;AAGlD,+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,8CAwBC;AA1ED,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,CAAC,6BAA6B,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClF,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,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAE5E,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>;
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CONFIG_FILE_NAMES = void 0;
4
- exports.formatConfigAsJs = formatConfigAsJs;
5
- exports.formatConfigAsJson = formatConfigAsJson;
6
- exports.findExistingConfig = findExistingConfig;
7
- exports.writeConfig = writeConfig;
8
- const fs = require("fs/promises");
9
- const path = require("path");
10
- exports.CONFIG_FILE_NAMES = ['codingbuddy.config.js', 'codingbuddy.config.json'];
11
- function formatConfigAsJs(config) {
12
- const jsonContent = JSON.stringify(config, null, 2);
13
- return `/** @type {import('codingbuddy').CodingBuddyConfig} */
14
- module.exports = ${jsonContent};
15
- `;
16
- }
17
- function formatConfigAsJson(config) {
18
- return JSON.stringify(config, null, 2) + '\n';
19
- }
20
- async function findExistingConfig(projectRoot) {
21
- for (const fileName of exports.CONFIG_FILE_NAMES) {
22
- const filePath = path.join(projectRoot, fileName);
23
- try {
24
- await fs.access(filePath);
25
- return filePath;
26
- }
27
- catch {
28
- }
29
- }
30
- return null;
31
- }
32
- async function writeConfig(projectRoot, config, options = {}) {
33
- const format = options.format ?? 'js';
34
- const fileName = format === 'json' ? 'codingbuddy.config.json' : 'codingbuddy.config.js';
35
- const content = format === 'json' ? formatConfigAsJson(config) : formatConfigAsJs(config);
36
- const filePath = path.join(projectRoot, fileName);
37
- await fs.writeFile(filePath, content, 'utf-8');
38
- return filePath;
39
- }
40
- //# sourceMappingURL=config.writer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.writer.js","sourceRoot":"","sources":["../../../../src/cli/init/config.writer.ts"],"names":[],"mappings":";;;AA+BA,4CAMC;AAKD,gDAEC;AAOD,gDAWC;AAUD,kCAgBC;AAlFD,kCAAkC;AAClC,6BAA6B;AAMhB,QAAA,iBAAiB,GAAG,CAAC,uBAAuB,EAAE,yBAAyB,CAAU,CAAC;AAkB/F,SAAgB,gBAAgB,CAAC,MAAyB;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEpD,OAAO;mBACU,WAAW;CAC7B,CAAC;AACF,CAAC;AAKD,SAAgB,kBAAkB,CAAC,MAAyB;IAC1D,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AAChD,CAAC;AAOM,KAAK,UAAU,kBAAkB,CAAC,WAAmB;IAC1D,KAAK,MAAM,QAAQ,IAAI,yBAAiB,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAUM,KAAK,UAAU,WAAW,CAC/B,WAAmB,EACnB,MAAyB,EACzB,UAA8B,EAAE;IAEhC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;IAEtC,MAAM,QAAQ,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,uBAAuB,CAAC;IAEzF,MAAM,OAAO,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAE1F,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAElD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE/C,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,5 +0,0 @@
1
- export { runInit, getApiKey } from './init.command';
2
- export { buildSystemPrompt, buildAnalysisPrompt } from './prompt.builder';
3
- export { ConfigGenerator } from './config.generator';
4
- export { writeConfig, findExistingConfig, CONFIG_FILE_NAMES } from './config.writer';
5
- export type { ConfigFormat, WriteConfigOptions } from './config.writer';
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CONFIG_FILE_NAMES = exports.findExistingConfig = exports.writeConfig = exports.ConfigGenerator = exports.buildAnalysisPrompt = exports.buildSystemPrompt = exports.getApiKey = exports.runInit = void 0;
4
- var init_command_1 = require("./init.command");
5
- Object.defineProperty(exports, "runInit", { enumerable: true, get: function () { return init_command_1.runInit; } });
6
- Object.defineProperty(exports, "getApiKey", { enumerable: true, get: function () { return init_command_1.getApiKey; } });
7
- var prompt_builder_1 = require("./prompt.builder");
8
- Object.defineProperty(exports, "buildSystemPrompt", { enumerable: true, get: function () { return prompt_builder_1.buildSystemPrompt; } });
9
- Object.defineProperty(exports, "buildAnalysisPrompt", { enumerable: true, get: function () { return prompt_builder_1.buildAnalysisPrompt; } });
10
- var config_generator_1 = require("./config.generator");
11
- Object.defineProperty(exports, "ConfigGenerator", { enumerable: true, get: function () { return config_generator_1.ConfigGenerator; } });
12
- var config_writer_1 = require("./config.writer");
13
- Object.defineProperty(exports, "writeConfig", { enumerable: true, get: function () { return config_writer_1.writeConfig; } });
14
- Object.defineProperty(exports, "findExistingConfig", { enumerable: true, get: function () { return config_writer_1.findExistingConfig; } });
15
- Object.defineProperty(exports, "CONFIG_FILE_NAMES", { enumerable: true, get: function () { return config_writer_1.CONFIG_FILE_NAMES; } });
16
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/init/index.ts"],"names":[],"mappings":";;;AAAA,+CAAoD;AAA3C,uGAAA,OAAO,OAAA;AAAE,yGAAA,SAAS,OAAA;AAC3B,mDAA0E;AAAjE,mHAAA,iBAAiB,OAAA;AAAE,qHAAA,mBAAmB,OAAA;AAC/C,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AACxB,iDAAqF;AAA5E,4GAAA,WAAW,OAAA;AAAE,mHAAA,kBAAkB,OAAA;AAAE,kHAAA,iBAAiB,OAAA"}
@@ -1,3 +0,0 @@
1
- import type { InitOptions, InitResult } from '../cli.types';
2
- export declare function getApiKey(options: InitOptions): string | null;
3
- export declare function runInit(options: InitOptions): Promise<InitResult>;
@@ -1,80 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getApiKey = getApiKey;
4
- exports.runInit = runInit;
5
- const analyzer_1 = require("../../analyzer");
6
- const config_generator_1 = require("./config.generator");
7
- const config_writer_1 = require("./config.writer");
8
- const console_1 = require("../utils/console");
9
- function getApiKey(options) {
10
- if (options.apiKey) {
11
- return options.apiKey;
12
- }
13
- if (process.env.ANTHROPIC_API_KEY) {
14
- return process.env.ANTHROPIC_API_KEY;
15
- }
16
- return null;
17
- }
18
- async function runInit(options) {
19
- const console = (0, console_1.createConsoleUtils)();
20
- try {
21
- const apiKey = getApiKey(options);
22
- if (!apiKey) {
23
- console.log.error('No API key provided.');
24
- console.log.info('Set ANTHROPIC_API_KEY environment variable or use --api-key option.');
25
- return {
26
- success: false,
27
- error: 'No API key provided. Set ANTHROPIC_API_KEY environment variable.',
28
- };
29
- }
30
- const existingConfig = await (0, config_writer_1.findExistingConfig)(options.projectRoot);
31
- if (existingConfig && !options.force) {
32
- console.log.error(`Configuration file already exists: ${existingConfig}`);
33
- console.log.info('Use --force to overwrite.');
34
- return {
35
- success: false,
36
- error: `Configuration file already exists: ${existingConfig}`,
37
- };
38
- }
39
- if (existingConfig && options.force) {
40
- console.log.warn(`Overwriting existing config: ${existingConfig}`);
41
- }
42
- console.log.step('🔍', 'Analyzing project...');
43
- const analyzer = new analyzer_1.AnalyzerService();
44
- const analysis = await analyzer.analyzeProject(options.projectRoot);
45
- console.log.success('Project analysis complete');
46
- if (analysis.packageInfo) {
47
- console.log.step('📦', `Package: ${analysis.packageInfo.name}`);
48
- }
49
- if (analysis.detectedPatterns.length > 0) {
50
- console.log.step('🏗️', `Patterns: ${analysis.detectedPatterns.join(', ')}`);
51
- }
52
- console.log.step('📁', `Files: ${analysis.directoryStructure.totalFiles}`);
53
- console.log.step('🤖', 'AI is generating configuration...');
54
- const generator = new config_generator_1.ConfigGenerator({ apiKey });
55
- const config = await generator.generate(analysis);
56
- console.log.success('Configuration generated');
57
- console.log.step('💾', 'Writing configuration file...');
58
- const configPath = await (0, config_writer_1.writeConfig)(options.projectRoot, config, {
59
- format: options.format,
60
- });
61
- console.log.success(`Configuration saved to ${configPath}`);
62
- console.log.success('');
63
- console.log.step('✅', `codingbuddy.config.${options.format} created!`);
64
- console.log.info('');
65
- console.log.info('Please review the generated configuration.');
66
- return {
67
- success: true,
68
- configPath,
69
- };
70
- }
71
- catch (error) {
72
- const message = error instanceof Error ? error.message : String(error);
73
- console.log.error(message);
74
- return {
75
- success: false,
76
- error: message,
77
- };
78
- }
79
- }
80
- //# sourceMappingURL=init.command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.command.js","sourceRoot":"","sources":["../../../../src/cli/init/init.command.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { ProjectAnalysis, PackageInfo, DirectoryAnalysis, ConfigFilesSummary, CodeSample } from '../../analyzer';
2
- export declare function buildSystemPrompt(): string;
3
- export declare function buildAnalysisPrompt(analysis: ProjectAnalysis): string;
4
- export declare function formatPackageInfo(info: PackageInfo): string;
5
- export declare function formatDirectoryStructure(dir: DirectoryAnalysis): string;
6
- export declare function formatConfigFiles(config: ConfigFilesSummary): string;
7
- export declare function formatCodeSamples(samples: CodeSample[]): string;