ai-cmds 0.1.1 → 0.3.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.
- package/README.md +109 -16
- package/dist/{index-CuuBIk7l.d.ts → index-VeIKmeup.d.ts} +167 -13
- package/dist/index.js +2 -2
- package/dist/main.js +4 -2
- package/dist/{review-pr-Dh5esOtl.js → review-pr-yDp8Hdx1.js} +1934 -1013
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,14 +5,17 @@ AI-powered CLI tool that uses OpenAI and Google Gemini models to review code cha
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
7
|
- Multiple AI models: GPT-5, GPT-5-mini, GPT-4o-mini, Gemini 2.5 Pro, Gemini 2.0 Flash
|
|
8
|
-
- Configurable review setups from
|
|
9
|
-
- Custom setups with full control over reviewer
|
|
10
|
-
-
|
|
11
|
-
- Parallel reviews with validation pass for higher accuracy
|
|
8
|
+
- Configurable review setups from light to heavy
|
|
9
|
+
- Custom setups with full control over reviewer and validator models
|
|
10
|
+
- Five commands: `commit` for AI commit messages, `review-code-changes` for local development, `advanced-review-changes` for guided/customized local review focus, `review-pr` for CI, `create-pr` for PR creation
|
|
11
|
+
- Parallel reviews with a single structured validation pass for higher accuracy
|
|
12
|
+
- Optional provider-aware concurrency limits for reviewer fan-out
|
|
13
|
+
- AI-generated commit messages with interactive editing
|
|
12
14
|
- AI-generated PR titles and descriptions
|
|
13
15
|
- Automatic filtering of import-only changes
|
|
14
16
|
- Custom review instructions support
|
|
15
17
|
- Token usage tracking and cost awareness
|
|
18
|
+
- Improved review visualization with severity totals, issue IDs (`C1`, `P1`, `S1`), and impacted file counts
|
|
16
19
|
|
|
17
20
|
## Installation
|
|
18
21
|
|
|
@@ -31,6 +34,27 @@ pnpm add ai-cmds
|
|
|
31
34
|
|
|
32
35
|
## Commands
|
|
33
36
|
|
|
37
|
+
### `commit` - AI Commit Messages
|
|
38
|
+
|
|
39
|
+
Generate commit messages from staged changes using AI (Gemini primary, GPT-5-mini fallback).
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Generate commit message and commit
|
|
43
|
+
ai-cmds commit
|
|
44
|
+
|
|
45
|
+
# Preview message without committing
|
|
46
|
+
ai-cmds commit --dry-run
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Arguments:**
|
|
50
|
+
- `--dry-run` - Preview the generated message without committing
|
|
51
|
+
|
|
52
|
+
**Behavior:**
|
|
53
|
+
- If no files are staged, automatically stages all changes before generating
|
|
54
|
+
- Lockfiles are excluded from the diff sent to AI by default
|
|
55
|
+
- After generation, choose to: **Commit**, **Edit**, **Regenerate**, or **Cancel**
|
|
56
|
+
- If the primary model fails, automatically retries with the fallback model
|
|
57
|
+
|
|
34
58
|
### `review-code-changes` - Local Development
|
|
35
59
|
|
|
36
60
|
Review local code changes (staged or all changes vs base branch). Best for local development workflow.
|
|
@@ -47,12 +71,45 @@ ai-cmds review-code-changes --setup light
|
|
|
47
71
|
|
|
48
72
|
# Specify base branch
|
|
49
73
|
ai-cmds review-code-changes --scope all --base-branch develop
|
|
74
|
+
|
|
75
|
+
# Save review to a custom file path
|
|
76
|
+
ai-cmds review-code-changes --scope all --output reviews/local-review.md
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Arguments:**
|
|
80
|
+
- `--scope` - Review scope: `all`, `staged`, `globs`, `unViewed`, or custom scope id
|
|
81
|
+
- `--setup` - Review setup: `light`, `medium`, `heavy`, or custom setup id
|
|
82
|
+
- `--base-branch` - Base branch for diff comparison (if not specified, prompts for selection)
|
|
83
|
+
- `--output` - Output file path for the generated review markdown (default: `pr-review.md`)
|
|
84
|
+
|
|
85
|
+
### `advanced-review-changes` - Advanced Local Development
|
|
86
|
+
|
|
87
|
+
Review local code changes with the same flow as `review-code-changes`, plus extra control over review guidance.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Guided mode (prompts for custom instruction and instruction inclusion)
|
|
91
|
+
ai-cmds advanced-review-changes
|
|
92
|
+
|
|
93
|
+
# Pass a custom review focus instruction
|
|
94
|
+
ai-cmds advanced-review-changes --custom-review-instruction "Focus on authentication and authorization issues"
|
|
95
|
+
|
|
96
|
+
# Disable default/configured instructions and only use your custom instruction
|
|
97
|
+
ai-cmds advanced-review-changes \
|
|
98
|
+
--custom-review-instruction "Focus on performance bottlenecks and N+1 queries" \
|
|
99
|
+
--include-default-review-instructions false
|
|
50
100
|
```
|
|
51
101
|
|
|
52
102
|
**Arguments:**
|
|
53
103
|
- `--scope` - Review scope: `all`, `staged`, `globs`, `unViewed`, or custom scope id
|
|
54
104
|
- `--setup` - Review setup: `light`, `medium`, `heavy`, or custom setup id
|
|
55
105
|
- `--base-branch` - Base branch for diff comparison (if not specified, prompts for selection)
|
|
106
|
+
- `--output` - Output file path for the generated review markdown (default: `pr-review.md`)
|
|
107
|
+
- `--custom-review-instruction` - Extra custom instruction that tells reviewers what to focus on
|
|
108
|
+
- `--include-default-review-instructions` - Whether to include configured/default instructions (`true` or `false`)
|
|
109
|
+
|
|
110
|
+
**Interactive behavior:**
|
|
111
|
+
- If `--include-default-review-instructions` is not provided, the CLI shows a confirm dialog.
|
|
112
|
+
- If `--custom-review-instruction` is not provided, the CLI asks whether you want to add one and prompts for it if confirmed.
|
|
56
113
|
|
|
57
114
|
### `review-pr` - CI/PR Review
|
|
58
115
|
|
|
@@ -71,13 +128,15 @@ ai-cmds review-pr --pr 123 --setup heavy
|
|
|
71
128
|
|
|
72
129
|
**Arguments:**
|
|
73
130
|
- `--pr` - PR number to review (**required**)
|
|
74
|
-
- `--setup` - Review setup: `light`, `medium`, `heavy`, or custom setup
|
|
131
|
+
- `--setup` - Review setup: `light`, `medium`, `heavy`, or custom setup id
|
|
75
132
|
- `--test` - Test mode: skip posting review to PR, just save to file
|
|
76
133
|
- `--skip-previous-check` - Skip checking if previous review issues are still present
|
|
77
134
|
|
|
78
135
|
**Behavior:**
|
|
79
136
|
- In GitHub Actions (`GITHUB_ACTIONS` env set): Posts review as PR comment
|
|
80
137
|
- With `--test` flag or locally: Saves review to `pr-review-test.md`
|
|
138
|
+
- If the filtered diff has no reviewable code (for example import/export-only changes), the command skips AI calls and emits a no-issues review
|
|
139
|
+
- Reviewer fan-out respects `codeReview.concurrencyPerProvider` when configured
|
|
81
140
|
|
|
82
141
|
**Previous Review Check:**
|
|
83
142
|
|
|
@@ -127,12 +186,9 @@ ai-cmds create-pr --title "Fix login validation"
|
|
|
127
186
|
|
|
128
187
|
| Setup | Reviewers | Description |
|
|
129
188
|
|-------|-----------|-------------|
|
|
130
|
-
| `veryLight` | 1× GPT-5-mini | Fastest, lowest cost |
|
|
131
189
|
| `light` | 1× GPT-5 | Balanced |
|
|
132
190
|
| `medium` | 2× GPT-5 (high reasoning) | More thorough |
|
|
133
191
|
| `heavy` | 4× GPT-5 (high reasoning) | Most comprehensive |
|
|
134
|
-
| `lightGoogle` | 1× Gemini 2.5 Pro | Google alternative |
|
|
135
|
-
| `mediumGoogle` | 2× Gemini 2.5 Pro | Google thorough |
|
|
136
192
|
|
|
137
193
|
## Review Scopes
|
|
138
194
|
|
|
@@ -169,7 +225,7 @@ This requires an open PR for the current branch. It uses the GitHub GraphQL API
|
|
|
169
225
|
|
|
170
226
|
## Configuration
|
|
171
227
|
|
|
172
|
-
Create `ai-
|
|
228
|
+
Create `ai-cmds.config.ts` in your project root:
|
|
173
229
|
|
|
174
230
|
```typescript
|
|
175
231
|
import { defineConfig } from 'ai-cmds';
|
|
@@ -179,12 +235,22 @@ export default defineConfig({
|
|
|
179
235
|
baseBranch: 'main',
|
|
180
236
|
codeReviewDiffExcludePatterns: ['pnpm-lock.yaml', '**/*.svg', '**/*.test.ts'],
|
|
181
237
|
reviewInstructionsPath: '.github/PR_REVIEW_AGENT.md',
|
|
238
|
+
includeAgentsFileInReviewPrompt: true,
|
|
239
|
+
concurrencyPerProvider: {
|
|
240
|
+
'openai.responses': 2,
|
|
241
|
+
'google.generative-ai': 1,
|
|
242
|
+
},
|
|
182
243
|
},
|
|
183
244
|
createPR: {
|
|
184
245
|
baseBranch: 'main',
|
|
185
246
|
diffExcludePatterns: ['pnpm-lock.yaml'],
|
|
186
247
|
descriptionInstructions: 'Always mention Jira ticket if present in branch name',
|
|
187
248
|
},
|
|
249
|
+
commit: {
|
|
250
|
+
maxDiffTokens: 10000,
|
|
251
|
+
excludePatterns: ['dist/**'],
|
|
252
|
+
instructions: 'Always include the Jira ticket number from the branch name',
|
|
253
|
+
},
|
|
188
254
|
});
|
|
189
255
|
```
|
|
190
256
|
|
|
@@ -216,6 +282,7 @@ By default, `.env` is loaded automatically before the config file is imported, a
|
|
|
216
282
|
| `loadDotEnv` | Controls `.env` file loading. `true` (default): load `.env`, `false`: skip, `string`: additional file path, `string[]`: multiple files (later override earlier) |
|
|
217
283
|
| `codeReview` | Configuration for the review commands (see below) |
|
|
218
284
|
| `createPR` | Configuration for the create-pr command (see below) |
|
|
285
|
+
| `commit` | Configuration for the commit command (see below) |
|
|
219
286
|
|
|
220
287
|
#### `codeReview` Options
|
|
221
288
|
|
|
@@ -224,11 +291,13 @@ By default, `.env` is loaded automatically before the config file is imported, a
|
|
|
224
291
|
| `baseBranch` | Base branch for diff comparison. Can be a string or function `(currentBranch) => string`. If not set, prompts for selection |
|
|
225
292
|
| `codeReviewDiffExcludePatterns` | Glob patterns for files to exclude from review |
|
|
226
293
|
| `reviewInstructionsPath` | Path to custom review instructions markdown file |
|
|
294
|
+
| `includeAgentsFileInReviewPrompt` | Include `<git-root>/AGENTS.md` content in reviewer prompts (default: `true`) |
|
|
295
|
+
| `reviewOutputPath` | Default output file path for `review-code-changes` (can be overridden by `--output`) |
|
|
227
296
|
| `setup` | Array of custom named setups (see below) |
|
|
228
297
|
| `scope` | Array of custom named scopes (see below) |
|
|
229
298
|
| `defaultValidator` | Default validator model for custom setups |
|
|
230
|
-
| `
|
|
231
|
-
| `logsDir` | Directory for
|
|
299
|
+
| `concurrencyPerProvider` | Reviewer concurrency limit. Use a number for all providers or `{ [providerId]: number }` for per-provider limits (keys come from `model.provider`, e.g. `openai.responses`; unspecified providers default to unlimited) |
|
|
300
|
+
| `logsDir` | Directory for review run artifacts (can also use `AI_CLI_LOGS_DIR` env var) |
|
|
232
301
|
|
|
233
302
|
#### `createPR` Options
|
|
234
303
|
|
|
@@ -241,6 +310,24 @@ By default, `.env` is loaded automatically before the config file is imported, a
|
|
|
241
310
|
| `diffExcludePatterns` | Glob patterns for files to exclude from diff |
|
|
242
311
|
| `maxDiffTokens` | Maximum tokens from diff to include in AI prompt (default: 50000) |
|
|
243
312
|
|
|
313
|
+
#### `commit` Options
|
|
314
|
+
|
|
315
|
+
| Option | Description |
|
|
316
|
+
|--------|-------------|
|
|
317
|
+
| `primaryModel` | Custom AI model for commit message generation (default: Gemini 2.5 Flash) |
|
|
318
|
+
| `fallbackModel` | Fallback AI model if primary fails (default: GPT-5-mini) |
|
|
319
|
+
| `maxDiffTokens` | Maximum tokens from diff to include in AI prompt (default: 10000) |
|
|
320
|
+
| `excludePatterns` | Additional glob patterns to exclude from diff (merged with default lockfile patterns) |
|
|
321
|
+
| `instructions` | Custom instructions for AI commit message generation |
|
|
322
|
+
|
|
323
|
+
When `codeReview.logsDir` (or `AI_CLI_LOGS_DIR`) is set, each review run stores artifacts under:
|
|
324
|
+
|
|
325
|
+
- `<logsDir>/advanced-review-changes/<run-id>/...` for advanced local reviews
|
|
326
|
+
- `<logsDir>/review-code-changes/<run-id>/...` for local reviews
|
|
327
|
+
- `<logsDir>/review-pr/<run-id>/...` for PR reviews
|
|
328
|
+
|
|
329
|
+
Each run includes `context.yaml`, `changed-files.txt`, `diff.diff`, `reviewers/*.md`, `reviewers/*-debug.yaml`, `validator.yaml`, `final-review.md`, and `summary.yaml`.
|
|
330
|
+
|
|
244
331
|
### Dynamic Base Branch
|
|
245
332
|
|
|
246
333
|
The `baseBranch` option can be a function that receives the current branch name:
|
|
@@ -256,7 +343,7 @@ export default defineConfig({
|
|
|
256
343
|
|
|
257
344
|
### Custom Setups
|
|
258
345
|
|
|
259
|
-
Define custom named setups with full control over which models are used. **When custom setups are configured, they replace built-in options** (
|
|
346
|
+
Define custom named setups with full control over which models are used. **When custom setups are configured, they replace built-in options** (light, medium, heavy).
|
|
260
347
|
|
|
261
348
|
```typescript
|
|
262
349
|
import { defineConfig } from 'ai-cmds';
|
|
@@ -267,24 +354,24 @@ export default defineConfig({
|
|
|
267
354
|
codeReview: {
|
|
268
355
|
setup: [
|
|
269
356
|
{
|
|
357
|
+
id: 'myCustomSetup',
|
|
270
358
|
label: 'myCustomSetup',
|
|
271
359
|
reviewers: [
|
|
272
360
|
{ label: 'GPT-5', model: openai('gpt-5.2'), providerOptions: { reasoningEffort: 'high' } },
|
|
273
361
|
{ model: google('gemini-2.5-pro') },
|
|
274
362
|
],
|
|
275
363
|
validator: { model: openai('gpt-5.2') },
|
|
276
|
-
formatter: { model: openai('gpt-5-mini') },
|
|
277
364
|
},
|
|
278
365
|
{
|
|
366
|
+
id: 'fastReview',
|
|
279
367
|
label: 'fastReview',
|
|
280
368
|
reviewers: [{ model: openai('gpt-5-mini') }],
|
|
281
|
-
// validator
|
|
369
|
+
// validator uses defaultValidator
|
|
282
370
|
},
|
|
283
371
|
],
|
|
284
372
|
|
|
285
|
-
//
|
|
373
|
+
// Default validator for custom setups that don't specify one
|
|
286
374
|
defaultValidator: { model: openai('gpt-5.2'), providerOptions: { reasoningEffort: 'high' } },
|
|
287
|
-
defaultFormatter: { model: openai('gpt-5-mini') },
|
|
288
375
|
},
|
|
289
376
|
});
|
|
290
377
|
```
|
|
@@ -324,11 +411,13 @@ export default defineConfig({
|
|
|
324
411
|
{
|
|
325
412
|
id: 'src-only',
|
|
326
413
|
label: 'Source files only',
|
|
414
|
+
diffSource: 'branch',
|
|
327
415
|
getFiles: (ctx) => ctx.allFiles.filter((f) => f.startsWith('src/')),
|
|
328
416
|
},
|
|
329
417
|
{
|
|
330
418
|
id: 'no-tests',
|
|
331
419
|
label: 'Exclude tests',
|
|
420
|
+
diffSource: 'branch',
|
|
332
421
|
getFiles: (ctx) => ctx.allFiles.filter((f) => !f.includes('.test.')),
|
|
333
422
|
},
|
|
334
423
|
],
|
|
@@ -340,6 +429,10 @@ The `getFiles` function receives a context object with:
|
|
|
340
429
|
- `stagedFiles`: Files currently staged for commit
|
|
341
430
|
- `allFiles`: All files changed compared to base branch
|
|
342
431
|
|
|
432
|
+
The optional `diffSource` field controls which git diff source the scope uses:
|
|
433
|
+
- `'branch'` (default): compare against selected base branch
|
|
434
|
+
- `'staged'`: use staged changes
|
|
435
|
+
|
|
343
436
|
To include built-in options alongside your custom scopes, use `BUILT_IN_SCOPE_OPTIONS`:
|
|
344
437
|
|
|
345
438
|
```typescript
|
|
@@ -26,9 +26,13 @@ type SetupConfig = {
|
|
|
26
26
|
reviewers: CustomModelConfig[];
|
|
27
27
|
/** Model that validates and consolidates findings from all reviewers. Defaults to first reviewer if not specified. */
|
|
28
28
|
validator?: CustomModelConfig;
|
|
29
|
-
/** Model that formats the final output to structured JSON. Defaults to gpt-5-mini if not specified. */
|
|
30
|
-
formatter?: CustomModelConfig;
|
|
31
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Review concurrency settings.
|
|
32
|
+
* - number: applies the same concurrency limit to all providers
|
|
33
|
+
* - object: sets per-provider concurrency limits (fallback for unspecified providers is unlimited)
|
|
34
|
+
*/
|
|
35
|
+
type ReviewConcurrencyConfig = number | Record<string, number>;
|
|
32
36
|
/**
|
|
33
37
|
* Context provided to scope's getFiles function with all available file lists.
|
|
34
38
|
*/
|
|
@@ -47,6 +51,13 @@ type ScopeConfig = {
|
|
|
47
51
|
id: string;
|
|
48
52
|
/** Display label shown in UI */
|
|
49
53
|
label: string;
|
|
54
|
+
/**
|
|
55
|
+
* Which git diff source this scope should use.
|
|
56
|
+
* - `branch` compares against the selected base branch
|
|
57
|
+
* - `staged` reviews staged changes
|
|
58
|
+
* @default 'branch'
|
|
59
|
+
*/
|
|
60
|
+
diffSource?: 'branch' | 'staged';
|
|
50
61
|
/** Function that receives available file lists and returns the files to review */
|
|
51
62
|
getFiles: (ctx: ScopeContext) => string[] | Promise<string[]>;
|
|
52
63
|
showFileCount?: boolean;
|
|
@@ -73,7 +84,21 @@ type ReviewCodeChangesConfig = {
|
|
|
73
84
|
*/
|
|
74
85
|
reviewInstructionsPath?: string;
|
|
75
86
|
/**
|
|
76
|
-
*
|
|
87
|
+
* Whether to include the repository AGENTS.md content in reviewer prompts.
|
|
88
|
+
* Uses `<git-root>/AGENTS.md` when available.
|
|
89
|
+
* @default true
|
|
90
|
+
*/
|
|
91
|
+
includeAgentsFileInReviewPrompt?: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Output file path for local review markdown generated by
|
|
94
|
+
* `review-code-changes` or `advanced-review-changes`.
|
|
95
|
+
* Can be overridden via `--output`.
|
|
96
|
+
* @default 'pr-review.md'
|
|
97
|
+
* @example './reviews/local-review.md'
|
|
98
|
+
*/
|
|
99
|
+
reviewOutputPath?: string;
|
|
100
|
+
/**
|
|
101
|
+
* Array of custom named setups with full control over reviewer and validator models.
|
|
77
102
|
* Each setup has a label that can be selected via the CLI --setup flag.
|
|
78
103
|
* Custom setups take precedence over built-in presets when labels match.
|
|
79
104
|
*/
|
|
@@ -89,17 +114,26 @@ type ReviewCodeChangesConfig = {
|
|
|
89
114
|
* Falls back to first reviewer in the setup if not specified.
|
|
90
115
|
*/
|
|
91
116
|
defaultValidator?: CustomModelConfig;
|
|
92
|
-
/**
|
|
93
|
-
* Default formatter model used when a setup doesn't specify one.
|
|
94
|
-
* Falls back to gpt-5-mini if not specified.
|
|
95
|
-
*/
|
|
96
|
-
defaultFormatter?: CustomModelConfig;
|
|
97
117
|
/**
|
|
98
118
|
* Directory for storing review logs.
|
|
99
119
|
* Can also be set via `AI_CLI_LOGS_DIR` environment variable.
|
|
100
120
|
* Config value takes precedence over env var.
|
|
101
121
|
*/
|
|
102
122
|
logsDir?: string;
|
|
123
|
+
/**
|
|
124
|
+
* Concurrency limit for running independent reviewer models.
|
|
125
|
+
*
|
|
126
|
+
* - `number`: same limit for all providers
|
|
127
|
+
* - `Record<string, number>`: per-provider limits keyed by provider id
|
|
128
|
+
*
|
|
129
|
+
* Provider ids come from `model.provider` (for example, `openai.responses` and `google.generative-ai`).
|
|
130
|
+
* Unspecified providers default to unlimited concurrency.
|
|
131
|
+
*
|
|
132
|
+
* @default Number.POSITIVE_INFINITY
|
|
133
|
+
* @example 2
|
|
134
|
+
* @example { 'openai.responses': 2, 'google.generative-ai': 1 }
|
|
135
|
+
*/
|
|
136
|
+
concurrencyPerProvider?: ReviewConcurrencyConfig;
|
|
103
137
|
};
|
|
104
138
|
type CreatePRConfig = {
|
|
105
139
|
/**
|
|
@@ -137,15 +171,48 @@ type CreatePRConfig = {
|
|
|
137
171
|
*/
|
|
138
172
|
maxDiffTokens?: number;
|
|
139
173
|
};
|
|
174
|
+
type CommitConfig = {
|
|
175
|
+
/**
|
|
176
|
+
* Custom AI model for generating commit messages.
|
|
177
|
+
* Defaults to Google Gemini 2.5 Flash.
|
|
178
|
+
*/
|
|
179
|
+
primaryModel?: CustomModelConfig;
|
|
180
|
+
/**
|
|
181
|
+
* Fallback AI model if the primary model fails.
|
|
182
|
+
* Defaults to OpenAI GPT-5-mini.
|
|
183
|
+
*/
|
|
184
|
+
fallbackModel?: CustomModelConfig;
|
|
185
|
+
/**
|
|
186
|
+
* Maximum number of tokens from the diff to include in the AI prompt.
|
|
187
|
+
* @default 10000
|
|
188
|
+
*/
|
|
189
|
+
maxDiffTokens?: number;
|
|
190
|
+
/**
|
|
191
|
+
* Additional glob patterns to exclude from the diff sent to AI.
|
|
192
|
+
* Merged with default lockfile patterns (package-lock.json, yarn.lock, etc.).
|
|
193
|
+
* @example ['dist/**', '*.generated.ts']
|
|
194
|
+
*/
|
|
195
|
+
excludePatterns?: string[];
|
|
196
|
+
/**
|
|
197
|
+
* Custom instructions to include in the AI prompt for generating commit messages.
|
|
198
|
+
* @example 'Always include the Jira ticket number from the branch name'
|
|
199
|
+
*/
|
|
200
|
+
instructions?: string;
|
|
201
|
+
};
|
|
140
202
|
type Config = {
|
|
141
203
|
/**
|
|
142
|
-
* Configuration for the review-code-changes
|
|
204
|
+
* Configuration for the review-code-changes, advanced-review-changes, and
|
|
205
|
+
* review-pr commands.
|
|
143
206
|
*/
|
|
144
207
|
codeReview?: ReviewCodeChangesConfig;
|
|
145
208
|
/**
|
|
146
209
|
* Configuration for the create-pr command.
|
|
147
210
|
*/
|
|
148
211
|
createPR?: CreatePRConfig;
|
|
212
|
+
/**
|
|
213
|
+
* Configuration for the commit command.
|
|
214
|
+
*/
|
|
215
|
+
commit?: CommitConfig;
|
|
149
216
|
/**
|
|
150
217
|
* Controls loading of environment variables from `.env` files.
|
|
151
218
|
*
|
|
@@ -178,24 +245,28 @@ declare const DEFAULT_SCOPES: {
|
|
|
178
245
|
readonly all: {
|
|
179
246
|
readonly id: "all";
|
|
180
247
|
readonly label: "All changes";
|
|
248
|
+
readonly diffSource: "branch";
|
|
181
249
|
readonly showFileCount: true;
|
|
182
250
|
readonly getFiles: (ctx: ScopeContext) => string[];
|
|
183
251
|
};
|
|
184
252
|
readonly staged: {
|
|
185
253
|
readonly id: "staged";
|
|
186
254
|
readonly label: "Staged changes";
|
|
255
|
+
readonly diffSource: "staged";
|
|
187
256
|
readonly showFileCount: true;
|
|
188
257
|
readonly getFiles: (ctx: ScopeContext) => string[];
|
|
189
258
|
};
|
|
190
259
|
readonly globs: {
|
|
191
260
|
readonly id: "globs";
|
|
192
261
|
readonly label: "Select files using glob patterns (use !pattern to exclude)";
|
|
262
|
+
readonly diffSource: "branch";
|
|
193
263
|
readonly showFileCount: false;
|
|
194
264
|
readonly getFiles: (ctx: ScopeContext) => Promise<string[]>;
|
|
195
265
|
};
|
|
196
266
|
readonly unViewed: {
|
|
197
267
|
readonly id: "unViewed";
|
|
198
268
|
readonly label: "Unviewed files in PR";
|
|
269
|
+
readonly diffSource: "branch";
|
|
199
270
|
readonly showFileCount: false;
|
|
200
271
|
readonly getFiles: () => Promise<string[]>;
|
|
201
272
|
};
|
|
@@ -233,7 +304,84 @@ declare const BUILT_IN_SETUP_OPTIONS: SetupConfig[];
|
|
|
233
304
|
* Converts setup configs to CLI select options.
|
|
234
305
|
*/
|
|
235
306
|
//#endregion
|
|
236
|
-
//#region src/commands/
|
|
307
|
+
//#region src/commands/advanced-review-changes/advanced-review-changes.d.ts
|
|
308
|
+
declare const advancedReviewChangesCommand: {
|
|
309
|
+
short: string | undefined;
|
|
310
|
+
description: string;
|
|
311
|
+
run: (cmdArgs: {
|
|
312
|
+
setup: string | undefined;
|
|
313
|
+
scope: string | undefined;
|
|
314
|
+
baseBranch: string | undefined;
|
|
315
|
+
output: string | undefined;
|
|
316
|
+
customReviewInstruction: string | undefined;
|
|
317
|
+
includeDefaultReviewInstructions: string | undefined;
|
|
318
|
+
}) => Promise<void> | void;
|
|
319
|
+
args: {
|
|
320
|
+
setup: {
|
|
321
|
+
type: "value-string-flag";
|
|
322
|
+
name: string;
|
|
323
|
+
description: string;
|
|
324
|
+
};
|
|
325
|
+
scope: {
|
|
326
|
+
type: "value-string-flag";
|
|
327
|
+
name: string;
|
|
328
|
+
description: string;
|
|
329
|
+
};
|
|
330
|
+
baseBranch: {
|
|
331
|
+
type: "value-string-flag";
|
|
332
|
+
name: string;
|
|
333
|
+
description: string;
|
|
334
|
+
};
|
|
335
|
+
output: {
|
|
336
|
+
type: "value-string-flag";
|
|
337
|
+
name: string;
|
|
338
|
+
description: string;
|
|
339
|
+
};
|
|
340
|
+
customReviewInstruction: {
|
|
341
|
+
type: "value-string-flag";
|
|
342
|
+
name: string;
|
|
343
|
+
description: string;
|
|
344
|
+
};
|
|
345
|
+
includeDefaultReviewInstructions: {
|
|
346
|
+
type: "value-string-flag";
|
|
347
|
+
name: string;
|
|
348
|
+
description: string;
|
|
349
|
+
};
|
|
350
|
+
} | undefined;
|
|
351
|
+
examples: {
|
|
352
|
+
args: string[];
|
|
353
|
+
description: string;
|
|
354
|
+
}[] | undefined;
|
|
355
|
+
};
|
|
356
|
+
//#endregion
|
|
357
|
+
//#region src/commands/commit/commit.d.ts
|
|
358
|
+
declare const commitCommand: {
|
|
359
|
+
short: string | undefined;
|
|
360
|
+
description: string;
|
|
361
|
+
run: (cmdArgs: {
|
|
362
|
+
dryRun: boolean;
|
|
363
|
+
yes: boolean;
|
|
364
|
+
}) => Promise<void> | void;
|
|
365
|
+
args: {
|
|
366
|
+
dryRun: {
|
|
367
|
+
type: "flag";
|
|
368
|
+
name: string;
|
|
369
|
+
description: string;
|
|
370
|
+
};
|
|
371
|
+
yes: {
|
|
372
|
+
type: "flag";
|
|
373
|
+
name: string;
|
|
374
|
+
description: string;
|
|
375
|
+
short: string;
|
|
376
|
+
};
|
|
377
|
+
} | undefined;
|
|
378
|
+
examples: {
|
|
379
|
+
args: string[];
|
|
380
|
+
description: string;
|
|
381
|
+
}[] | undefined;
|
|
382
|
+
};
|
|
383
|
+
//#endregion
|
|
384
|
+
//#region src/commands/create-pr/create-pr.d.ts
|
|
237
385
|
declare const createPRCommand: {
|
|
238
386
|
short: string | undefined;
|
|
239
387
|
description: string;
|
|
@@ -271,7 +419,7 @@ declare const createPRCommand: {
|
|
|
271
419
|
}[] | undefined;
|
|
272
420
|
};
|
|
273
421
|
//#endregion
|
|
274
|
-
//#region src/commands/review-code-changes/
|
|
422
|
+
//#region src/commands/review-code-changes/review-code-changes.d.ts
|
|
275
423
|
declare const reviewCodeChangesCommand: {
|
|
276
424
|
short: string | undefined;
|
|
277
425
|
description: string;
|
|
@@ -279,6 +427,7 @@ declare const reviewCodeChangesCommand: {
|
|
|
279
427
|
setup: string | undefined;
|
|
280
428
|
scope: string | undefined;
|
|
281
429
|
baseBranch: string | undefined;
|
|
430
|
+
output: string | undefined;
|
|
282
431
|
}) => Promise<void> | void;
|
|
283
432
|
args: {
|
|
284
433
|
setup: {
|
|
@@ -296,6 +445,11 @@ declare const reviewCodeChangesCommand: {
|
|
|
296
445
|
name: string;
|
|
297
446
|
description: string;
|
|
298
447
|
};
|
|
448
|
+
output: {
|
|
449
|
+
type: "value-string-flag";
|
|
450
|
+
name: string;
|
|
451
|
+
description: string;
|
|
452
|
+
};
|
|
299
453
|
} | undefined;
|
|
300
454
|
examples: {
|
|
301
455
|
args: string[];
|
|
@@ -303,7 +457,7 @@ declare const reviewCodeChangesCommand: {
|
|
|
303
457
|
}[] | undefined;
|
|
304
458
|
};
|
|
305
459
|
//#endregion
|
|
306
|
-
//#region src/commands/review-pr/
|
|
460
|
+
//#region src/commands/review-pr/review-pr.d.ts
|
|
307
461
|
declare const reviewPRCommand: {
|
|
308
462
|
short: string | undefined;
|
|
309
463
|
description: string;
|
|
@@ -341,4 +495,4 @@ declare const reviewPRCommand: {
|
|
|
341
495
|
}[] | undefined;
|
|
342
496
|
};
|
|
343
497
|
//#endregion
|
|
344
|
-
export { BUILT_IN_SCOPE_OPTIONS, BUILT_IN_SETUP_OPTIONS, type Config, type CreatePRConfig, type CustomModelConfig, DEFAULT_SCOPES, type ReviewCodeChangesConfig, type ScopeConfig, type ScopeContext, type SetupConfig, createPRCommand, defineConfig, reviewCodeChangesCommand, reviewPRCommand };
|
|
498
|
+
export { BUILT_IN_SCOPE_OPTIONS, BUILT_IN_SETUP_OPTIONS, type CommitConfig, type Config, type CreatePRConfig, type CustomModelConfig, DEFAULT_SCOPES, type ReviewCodeChangesConfig, type ReviewConcurrencyConfig, type ScopeConfig, type ScopeContext, type SetupConfig, advancedReviewChangesCommand, commitCommand, createPRCommand, defineConfig, reviewCodeChangesCommand, reviewPRCommand };
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as
|
|
1
|
+
import { a as reviewCodeChangesCommand, c as DEFAULT_SCOPES, i as advancedReviewChangesCommand, l as defineConfig, n as createPRCommand, o as BUILT_IN_SETUP_OPTIONS, r as commitCommand, s as BUILT_IN_SCOPE_OPTIONS, t as reviewPRCommand } from "./review-pr-yDp8Hdx1.js";
|
|
2
2
|
|
|
3
|
-
export { BUILT_IN_SCOPE_OPTIONS, BUILT_IN_SETUP_OPTIONS, DEFAULT_SCOPES, createPRCommand, defineConfig, reviewCodeChangesCommand, reviewPRCommand };
|
|
3
|
+
export { BUILT_IN_SCOPE_OPTIONS, BUILT_IN_SETUP_OPTIONS, DEFAULT_SCOPES, advancedReviewChangesCommand, commitCommand, createPRCommand, defineConfig, reviewCodeChangesCommand, reviewPRCommand };
|
package/dist/main.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { a as reviewCodeChangesCommand, i as advancedReviewChangesCommand, n as createPRCommand, r as commitCommand, t as reviewPRCommand } from "./review-pr-yDp8Hdx1.js";
|
|
3
3
|
import { createCLI } from "@ls-stack/cli";
|
|
4
4
|
|
|
5
5
|
//#region src/main.ts
|
|
@@ -7,9 +7,11 @@ await createCLI({
|
|
|
7
7
|
name: "✨ ai-cmds",
|
|
8
8
|
baseCmd: "ai-cmds"
|
|
9
9
|
}, {
|
|
10
|
+
commit: commitCommand,
|
|
10
11
|
"review-code-changes": reviewCodeChangesCommand,
|
|
11
12
|
"review-pr": reviewPRCommand,
|
|
12
|
-
"create-pr": createPRCommand
|
|
13
|
+
"create-pr": createPRCommand,
|
|
14
|
+
"advanced-review-changes": advancedReviewChangesCommand
|
|
13
15
|
});
|
|
14
16
|
|
|
15
17
|
//#endregion
|