codeguard-testgen 1.0.10 → 1.0.12

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.
package/README.md CHANGED
@@ -2,11 +2,12 @@
2
2
 
3
3
  AI-powered code review and unit test generator with AST analysis for TypeScript/JavaScript projects. Automatically reviews code quality and generates comprehensive Jest tests using Claude, OpenAI, or Gemini.
4
4
 
5
- > **⚡ NEW: Unified Auto Mode** - Automatically review code quality AND generate tests for changed functions!
5
+ > **⚡ NEW: Unified Auto Mode** - Automatically review code quality AND generate tests for staged functions!
6
6
  > ```bash
7
7
  > testgen auto # Reviews code + generates tests
8
8
  > testgen review # Only code review
9
9
  > testgen test # Only test generation
10
+ > testgen doc # Generate API documentation
10
11
  > ```
11
12
 
12
13
  ## Features
@@ -31,6 +32,7 @@ AI-powered code review and unit test generator with AST analysis for TypeScript/
31
32
  - ⚡ **Auto Mode**: Reviews code quality + generates tests for changed functions
32
33
  - 🔄 **Git Integration**: Detects changes via git diff (staged and unstaged)
33
34
  - 🚀 **CI/CD Ready**: Non-interactive modes perfect for automation
35
+ - 📚 **Documentation Mode**: AI-powered OpenAPI/Swagger documentation generation
34
36
 
35
37
  ## Installation
36
38
 
@@ -63,10 +65,29 @@ Create a `codeguard.json` file in your project root:
63
65
  "openai": "gpt-4o-mini",
64
66
  "gemini": "gemini-2.0-flash-exp"
65
67
  },
68
+ "testEnv": "vitest/jest",
66
69
  "testDir": "src/tests",
67
- "extensions": [".ts", ".tsx", ".js", ".jsx"],
68
70
  "excludeDirs": ["node_modules", "dist", "build", ".git", "coverage"],
69
- "validationInterval": 5
71
+ "validationInterval": 5,
72
+ "reviewExecutionMode": "parallel",
73
+ "reviewSteps": [
74
+ {
75
+ "id": "code-quality",
76
+ "name": "Code Quality",
77
+ "category": "quality",
78
+ "type": "ai",
79
+ "enabled": true,
80
+ "ruleset": "code-quality.md"
81
+ },
82
+ {
83
+ "id": "security",
84
+ "name": "Security",
85
+ "category": "security",
86
+ "type": "ai",
87
+ "enabled": true,
88
+ "ruleset": "security.md"
89
+ }
90
+ ]
70
91
  }
71
92
  ```
72
93
 
@@ -81,6 +102,147 @@ Create a `codeguard.json` file in your project root:
81
102
  | `extensions` | No | File extensions to process (default: `.ts`, `.tsx`, `.js`, `.jsx`) |
82
103
  | `excludeDirs` | No | Directories to exclude from scanning |
83
104
  | `validationInterval` | No | Validation frequency in function-wise mode: `undefined` = no validation, `0` = only at end, `N` = validate every N functions |
105
+ | `docsDir` | No | Directory for generated documentation (default: `docs`) |
106
+ | `docFormat` | No | Documentation format: `json` or `yaml` (default: `json`) |
107
+ | `docTitle` | No | API documentation title (default: from package.json name) |
108
+ | `docVersion` | No | API version (default: from package.json version) |
109
+ | `includeGenericFunctions` | No | Include non-API functions in documentation (default: `true`) |
110
+ | `repoDoc` | No | Document entire repository (`true`) or only staged changes (`false`, default) |
111
+ | `reviewSteps` | No | Array of review steps with custom rulesets (see below) |
112
+ | `reviewExecutionMode` | No | How to execute review steps: `parallel` or `sequential` (default: `parallel`) |
113
+
114
+ ### Configurable Review Steps
115
+
116
+ Configure custom review steps with rulesets defined in markdown files. Each ruleset is stored in the `codeguard-ruleset/` folder at your project root.
117
+
118
+ ```json
119
+ {
120
+ "reviewExecutionMode": "parallel",
121
+ "reviewSteps": [
122
+ {
123
+ "id": "code-quality",
124
+ "name": "Code Quality",
125
+ "category": "quality",
126
+ "type": "ai",
127
+ "enabled": true,
128
+ "ruleset": "code-quality.md"
129
+ },
130
+ {
131
+ "id": "security",
132
+ "name": "Security Vulnerabilities",
133
+ "category": "security",
134
+ "type": "ai",
135
+ "enabled": true,
136
+ "ruleset": "security.md"
137
+ }
138
+ ]
139
+ }
140
+ ```
141
+
142
+ **Review Step Options:**
143
+
144
+ | Option | Required | Description |
145
+ |--------|----------|-------------|
146
+ | `id` | Yes | Unique identifier for the step |
147
+ | `name` | Yes | Display name for the review step |
148
+ | `category` | Yes | Category of the review (e.g., `quality`, `security`, `performance`) |
149
+ | `type` | Yes | Type of review (currently only `ai` supported) |
150
+ | `enabled` | Yes | Whether this step is active (`true` or `false`) |
151
+ | `ruleset` | Yes | Filename of markdown ruleset in `codeguard-ruleset/` folder |
152
+
153
+ **Ruleset Files:**
154
+
155
+ Rulesets are markdown files stored in `codeguard-ruleset/` at your project root:
156
+
157
+ ```
158
+ your-project/
159
+ ├── codeguard.json
160
+ ├── codeguard-ruleset/
161
+ │ ├── code-quality.md
162
+ │ ├── security.md
163
+ │ ├── performance.md
164
+ │ └── custom-rules.md
165
+ └── src/
166
+ ```
167
+
168
+ Each ruleset file can contain:
169
+ - Detailed review criteria
170
+ - Specific rules and guidelines
171
+ - Examples and code snippets
172
+ - Severity guidelines
173
+ - OWASP references (for security)
174
+ - Best practices documentation
175
+
176
+ **Example Ruleset File** (`codeguard-ruleset/code-quality.md`):
177
+
178
+ ```markdown
179
+ # Code Quality Review Ruleset
180
+
181
+ ## Review Criteria
182
+
183
+ ### 1. Naming Conventions
184
+ - Functions: Use clear, descriptive names
185
+ - Variables: Use meaningful names
186
+ - Boolean variables: Prefix with is, has, should
187
+
188
+ ### 2. Code Complexity
189
+ - Functions should be concise (< 50 lines)
190
+ - Cyclomatic complexity should be low (< 10)
191
+ - Avoid deeply nested conditionals
192
+
193
+ ...
194
+ ```
195
+
196
+ **Execution Modes:**
197
+
198
+ - **`parallel`** (default): All enabled review steps run simultaneously for faster completion
199
+ - **`sequential`**: Steps run one after another in the order defined
200
+
201
+ **Default Review Steps:**
202
+
203
+ If you don't specify `reviewSteps` in your config, CodeGuard uses these default steps:
204
+ - ✅ **Code Quality** (`code-quality.md`) - Naming, complexity, readability, best practices
205
+ - ✅ **Potential Bugs** (`potential-bugs.md`) - Logic errors, edge cases, type issues, async problems
206
+ - ✅ **Performance** (`performance.md`) - Algorithm efficiency, unnecessary computations, memory leaks
207
+ - ✅ **Security** (`security.md`) - Input validation, injection risks, OWASP vulnerabilities
208
+
209
+ **Included Ruleset Files:**
210
+
211
+ CodeGuard comes with comprehensive default rulesets in `codeguard-ruleset/`:
212
+ - `code-quality.md` - 8 categories including naming, complexity, patterns, error handling
213
+ - `potential-bugs.md` - 8 categories covering logic errors, edge cases, async issues
214
+ - `performance.md` - 8 categories for algorithms, caching, data structures, optimizations
215
+ - `security.md` - OWASP Top 10 coverage with specific checks and references
216
+
217
+ You can customize these files or create your own rulesets for project-specific requirements.
218
+
219
+ **Output Format:**
220
+
221
+ Reviews are organized by step in the final markdown file:
222
+
223
+ ```markdown
224
+ # Code Review
225
+
226
+ ## Summary
227
+ [Overall assessment]
228
+
229
+ ## Files Changed
230
+ [List of files]
231
+
232
+ ## Code Quality
233
+ [Findings from code quality step]
234
+
235
+ ## Security Vulnerabilities
236
+ [Findings from security step]
237
+
238
+ ## Performance Issues
239
+ [Findings from performance step]
240
+
241
+ ## Conclusion
242
+ [Final assessment]
243
+ ```
244
+
245
+ See `codeguard.example.json` for a complete configuration example with additional review steps like Accessibility and Documentation Quality.
84
246
 
85
247
  ### Validation Interval
86
248
 
@@ -258,6 +420,12 @@ cat reviews/user.service.review.md
258
420
  testgen test
259
421
  ```
260
422
 
423
+ **Documentation generation:**
424
+ ```bash
425
+ # Generate API documentation
426
+ testgen doc
427
+ ```
428
+
261
429
  **Output:**
262
430
  ```
263
431
  🧪 AI-Powered Unit Test Generator with AST Analysis
@@ -361,6 +529,128 @@ Test generation only:
361
529
  - Faster when you only need tests
362
530
  - Use: `testgen test`
363
531
 
532
+ #### 7. Documentation Mode
533
+ AI-powered API documentation generation:
534
+ - **Default**: Documents only staged/changed functions (like review/test modes)
535
+ - **Full Repo**: Set `"repoDoc": true` to document entire codebase
536
+ - Analyzes codebase using AST tools
537
+ - Auto-detects API endpoints (Express, NestJS, Fastify, Koa)
538
+ - Generates comprehensive OpenAPI 3.0 specification
539
+ - Documents both API routes and generic functions
540
+ - Smart merge with existing documentation
541
+ - Supports JSON and YAML formats
542
+ - Use: `testgen doc`
543
+
544
+ **Two modes:**
545
+
546
+ **1. Changed Files Only (Default)** - `"repoDoc": false` or omitted
547
+ - Works like `testgen review` and `testgen test`
548
+ - Only documents staged/changed functions
549
+ - Fast and targeted
550
+ - Perfect for incremental updates
551
+ - Requires git repository
552
+
553
+ **2. Full Repository** - `"repoDoc": true`
554
+ - Documents entire codebase
555
+ - Comprehensive documentation generation
556
+ - Useful for initial documentation or major updates
557
+ - No git requirement
558
+
559
+ **What it documents:**
560
+ - ✅ **API Endpoints**: All REST API routes with methods, paths, parameters
561
+ - ✅ **Request/Response Schemas**: Inferred from TypeScript types
562
+ - ✅ **Authentication**: Detects and documents auth requirements
563
+ - ✅ **Error Responses**: Documents error cases and status codes
564
+ - ✅ **Generic Functions**: Optional documentation for utility functions
565
+ - ✅ **Usage Examples**: AI-generated examples for each endpoint
566
+
567
+ **Supported Frameworks:**
568
+ - **Express**: `app.get()`, `router.post()`, route methods
569
+ - **NestJS**: `@Controller()`, `@Get()`, `@Post()`, decorators
570
+ - **Fastify**: `fastify.route()`, route configurations
571
+ - **Koa**: `router.get()`, middleware patterns
572
+
573
+ **Example usage:**
574
+ ```bash
575
+ # Document only changed/staged functions (default)
576
+ testgen doc
577
+
578
+ # Output:
579
+ # 📚 Documentation Mode: Generating API documentation
580
+ #
581
+ # 🔍 Scanning git changes for documentation...
582
+ #
583
+ # 📝 Found changes in 2 file(s)
584
+ #
585
+ # 🤖 Generating OpenAPI specification...
586
+ #
587
+ # ✅ Documentation generated successfully
588
+ #
589
+ # ============================================================
590
+ # 📊 Documentation Summary
591
+ # ============================================================
592
+ # ✅ API Endpoints documented: 5
593
+ # ✅ Generic functions documented: 8
594
+ # 📁 Output: docs/openapi.json
595
+ # ============================================================
596
+
597
+ # For full repository documentation, set in codeguard.json:
598
+ # {
599
+ # "repoDoc": true
600
+ # }
601
+ ```
602
+
603
+ **Generated OpenAPI spec:**
604
+ ```json
605
+ {
606
+ "openapi": "3.0.0",
607
+ "info": {
608
+ "title": "My API",
609
+ "version": "1.0.0"
610
+ },
611
+ "paths": {
612
+ "/users": {
613
+ "get": {
614
+ "summary": "Get all users",
615
+ "responses": {
616
+ "200": {
617
+ "description": "Success",
618
+ "content": {
619
+ "application/json": {
620
+ "schema": {
621
+ "type": "array",
622
+ "items": { "$ref": "#/components/schemas/User" }
623
+ }
624
+ }
625
+ }
626
+ }
627
+ }
628
+ }
629
+ }
630
+ },
631
+ "components": {
632
+ "schemas": {
633
+ "User": {
634
+ "type": "object",
635
+ "properties": {
636
+ "id": { "type": "string" },
637
+ "name": { "type": "string" },
638
+ "email": { "type": "string" }
639
+ }
640
+ }
641
+ }
642
+ }
643
+ }
644
+ ```
645
+
646
+ **Smart merging:**
647
+ When existing documentation is found, CodeGuard intelligently merges:
648
+ - ✅ Preserves manually edited descriptions and summaries
649
+ - ✅ Updates schemas with latest types from code
650
+ - ✅ Adds new endpoints without removing manual changes
651
+ - ✅ Maintains custom examples and documentation
652
+ - ✅ Tracks generation metadata and timestamps
653
+
364
654
  ## How It Works
365
655
 
366
656
  ### Code Review Process
@@ -395,6 +685,24 @@ Test generation only:
395
685
  - Type mismatches
396
686
  7. **Failure Detection**: Distinguishes between test bugs and source code bugs
397
687
 
688
+ ### Documentation Generation Process
689
+ 1. **File Scanning**: Recursively scans all source files in the project
690
+ 2. **AST Analysis**: Parses each file using Babel to understand structure
691
+ 3. **Endpoint Detection**: AI identifies API routes across different frameworks:
692
+ - Express: `app.METHOD()`, `router.METHOD()`
693
+ - NestJS: `@Controller()`, `@Get()`, `@Post()`, etc.
694
+ - Fastify: `fastify.route()`, route configurations
695
+ - Koa: `router.METHOD()`, middleware chains
696
+ 4. **Schema Inference**: Extracts TypeScript types for request/response schemas
697
+ 5. **AI Enhancement**: AI generates:
698
+ - Meaningful descriptions for each endpoint
699
+ - Parameter documentation
700
+ - Response examples
701
+ - Error scenarios
702
+ 6. **OpenAPI Generation**: Builds complete OpenAPI 3.0 specification
703
+ 7. **Smart Merge**: Intelligently merges with existing documentation
704
+ 8. **File Output**: Writes to `docs/openapi.json` or `.yaml`
705
+
398
706
  ## Generated Test Features
399
707
 
400
708
  The AI generates tests with:
package/dist/config.d.ts CHANGED
@@ -1,3 +1,11 @@
1
+ export interface ReviewStep {
2
+ id: string;
3
+ name: string;
4
+ category: string;
5
+ type: 'ai';
6
+ enabled: boolean;
7
+ ruleset: string;
8
+ }
1
9
  export interface CodeGuardConfig {
2
10
  aiProvider: 'openai' | 'gemini' | 'claude';
3
11
  apiKeys: {
@@ -11,14 +19,24 @@ export interface CodeGuardConfig {
11
19
  gemini?: string;
12
20
  };
13
21
  testDir?: string;
22
+ testEnv?: 'jest' | 'vitest';
14
23
  extensions?: string[];
15
24
  excludeDirs?: string[];
16
25
  validationInterval?: number;
26
+ docsDir?: string;
27
+ docFormat?: 'json' | 'yaml';
28
+ docTitle?: string;
29
+ docVersion?: string;
30
+ includeGenericFunctions?: boolean;
31
+ repoDoc?: boolean;
32
+ reviewSteps?: ReviewStep[];
33
+ reviewExecutionMode?: 'parallel' | 'sequential';
17
34
  }
18
35
  export interface Config {
19
36
  extensions: string[];
20
37
  excludeDirs: string[];
21
38
  testDir: string;
39
+ testEnv: 'jest' | 'vitest';
22
40
  aiProvider: 'openai' | 'gemini' | 'claude';
23
41
  apiKeys: {
24
42
  claude?: string;
@@ -31,6 +49,14 @@ export interface Config {
31
49
  gemini: string;
32
50
  };
33
51
  validationInterval?: number;
52
+ docsDir: string;
53
+ docFormat: 'json' | 'yaml';
54
+ docTitle: string;
55
+ docVersion: string;
56
+ includeGenericFunctions: boolean;
57
+ repoDoc: boolean;
58
+ reviewSteps: ReviewStep[];
59
+ reviewExecutionMode: 'parallel' | 'sequential';
34
60
  }
35
61
  export declare function loadConfig(): Config;
36
62
  export declare function validateConfig(config: Config): void;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3C,OAAO,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3C,OAAO,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAQD,wBAAgB,UAAU,IAAI,MAAM,CA6EnC;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAuBnD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3C,OAAO,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,mBAAmB,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;CACjD;AAED,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3C,OAAO,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB,EAAE,OAAO,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,mBAAmB,EAAE,UAAU,GAAG,YAAY,CAAC;CAChD;AA2CD,wBAAgB,UAAU,IAAI,MAAM,CA6GnC;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAuBnD"}
package/dist/config.js CHANGED
@@ -9,6 +9,40 @@ const DEFAULT_MODELS = {
9
9
  openai: 'gpt-5-mini',
10
10
  gemini: 'gemini-2.0-flash-lite'
11
11
  };
12
+ const DEFAULT_REVIEW_STEPS = [
13
+ {
14
+ id: 'code-quality',
15
+ name: 'Code Quality',
16
+ category: 'quality',
17
+ type: 'ai',
18
+ enabled: true,
19
+ ruleset: 'code-quality.md'
20
+ },
21
+ {
22
+ id: 'potential-bugs',
23
+ name: 'Potential Bugs',
24
+ category: 'bugs',
25
+ type: 'ai',
26
+ enabled: true,
27
+ ruleset: 'potential-bugs.md'
28
+ },
29
+ {
30
+ id: 'performance',
31
+ name: 'Performance Issues',
32
+ category: 'performance',
33
+ type: 'ai',
34
+ enabled: true,
35
+ ruleset: 'performance.md'
36
+ },
37
+ {
38
+ id: 'security',
39
+ name: 'Security Vulnerabilities',
40
+ category: 'security',
41
+ type: 'ai',
42
+ enabled: true,
43
+ ruleset: 'security.md'
44
+ }
45
+ ];
12
46
  function loadConfig() {
13
47
  const configPath = path.join(process.cwd(), 'codeguard.json');
14
48
  // Check if config file exists
@@ -20,6 +54,7 @@ function loadConfig() {
20
54
  return {
21
55
  aiProvider: 'claude',
22
56
  testDir: 'src/tests',
57
+ testEnv: 'jest',
23
58
  extensions: ['.ts', '.tsx', '.js', '.jsx'],
24
59
  excludeDirs: ['node_modules', 'dist', 'build', '.git', 'coverage', '__tests__'],
25
60
  apiKeys: {
@@ -27,7 +62,15 @@ function loadConfig() {
27
62
  openai: process.env.OPENAI_API_KEY,
28
63
  gemini: process.env.GEMINI_API_KEY
29
64
  },
30
- models: DEFAULT_MODELS
65
+ models: DEFAULT_MODELS,
66
+ docsDir: 'docs',
67
+ docFormat: 'json',
68
+ docTitle: 'API Documentation',
69
+ docVersion: '1.0.0',
70
+ includeGenericFunctions: true,
71
+ repoDoc: false,
72
+ reviewSteps: DEFAULT_REVIEW_STEPS,
73
+ reviewExecutionMode: 'parallel'
31
74
  };
32
75
  }
33
76
  // Load and parse config file
@@ -54,10 +97,25 @@ function loadConfig() {
54
97
  if (!selectedProviderKey) {
55
98
  throw new Error(`API key for "${config.aiProvider}" not found in codeguard.json`);
56
99
  }
100
+ // Try to read package.json for default title and version
101
+ let packageTitle = 'API Documentation';
102
+ let packageVersion = '1.0.0';
103
+ try {
104
+ const packagePath = path.join(process.cwd(), 'package.json');
105
+ if (fs.existsSync(packagePath)) {
106
+ const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf-8'));
107
+ packageTitle = packageJson.name || packageTitle;
108
+ packageVersion = packageJson.version || packageVersion;
109
+ }
110
+ }
111
+ catch {
112
+ // Ignore errors reading package.json
113
+ }
57
114
  // Build final config with defaults
58
115
  return {
59
116
  aiProvider: config.aiProvider,
60
117
  testDir: config.testDir || 'src/tests',
118
+ testEnv: config.testEnv || 'jest',
61
119
  extensions: config.extensions || ['.ts', '.tsx', '.js', '.jsx'],
62
120
  excludeDirs: config.excludeDirs || [
63
121
  'node_modules',
@@ -77,7 +135,15 @@ function loadConfig() {
77
135
  openai: config.models?.openai || DEFAULT_MODELS.openai,
78
136
  gemini: config.models?.gemini || DEFAULT_MODELS.gemini
79
137
  },
80
- validationInterval: config.validationInterval // undefined by default (no validation)
138
+ validationInterval: config.validationInterval, // undefined by default (no validation)
139
+ docsDir: config.docsDir || 'docs',
140
+ docFormat: config.docFormat || 'json',
141
+ docTitle: config.docTitle || packageTitle,
142
+ docVersion: config.docVersion || packageVersion,
143
+ includeGenericFunctions: config.includeGenericFunctions !== undefined ? config.includeGenericFunctions : true,
144
+ repoDoc: config.repoDoc !== undefined ? config.repoDoc : false,
145
+ reviewSteps: config.reviewSteps || DEFAULT_REVIEW_STEPS,
146
+ reviewExecutionMode: config.reviewExecutionMode || 'parallel'
81
147
  };
82
148
  }
83
149
  function validateConfig(config) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -23,7 +23,7 @@ interface Tool {
23
23
  };
24
24
  }
25
25
  declare const TOOLS: Tool[];
26
- declare function analyzeFileAST(filePath: string): any;
26
+ declare function analyzeFileAST(filePath: string, functionName?: string): any;
27
27
  declare function getFunctionAST(filePath: string, functionName: string): any;
28
28
  declare function getImportsAST(filePath: string): any;
29
29
  declare function getTypeDefinitions(filePath: string): any;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}