@radkode/neo 1.3.0 → 1.5.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/dist/commands/ai/index.d.ts +3 -0
- package/dist/commands/ai/index.d.ts.map +1 -0
- package/dist/commands/ai/index.js +21 -0
- package/dist/commands/ai/index.js.map +1 -0
- package/dist/commands/ai/pr/index.d.ts +19 -0
- package/dist/commands/ai/pr/index.d.ts.map +1 -0
- package/dist/commands/ai/pr/index.js +225 -0
- package/dist/commands/ai/pr/index.js.map +1 -0
- package/dist/commands/changeset/index.d.ts +17 -0
- package/dist/commands/changeset/index.d.ts.map +1 -0
- package/dist/commands/changeset/index.js +251 -0
- package/dist/commands/changeset/index.js.map +1 -0
- package/dist/commands/doctor/index.d.ts +16 -0
- package/dist/commands/doctor/index.d.ts.map +1 -0
- package/dist/commands/doctor/index.js +313 -0
- package/dist/commands/doctor/index.js.map +1 -0
- package/dist/commands/index.d.ts +5 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +15 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/sync/index.d.ts +18 -0
- package/dist/commands/sync/index.d.ts.map +1 -0
- package/dist/commands/sync/index.js +193 -0
- package/dist/commands/sync/index.js.map +1 -0
- package/dist/commands/verify/index.d.ts +23 -0
- package/dist/commands/verify/index.d.ts.map +1 -0
- package/dist/commands/verify/index.js +155 -0
- package/dist/commands/verify/index.js.map +1 -0
- package/dist/services/ai/index.d.ts +9 -1
- package/dist/services/ai/index.d.ts.map +1 -1
- package/dist/services/ai/index.js +23 -3
- package/dist/services/ai/index.js.map +1 -1
- package/dist/services/ai/pr-prompts.d.ts +17 -0
- package/dist/services/ai/pr-prompts.d.ts.map +1 -0
- package/dist/services/ai/pr-prompts.js +68 -0
- package/dist/services/ai/pr-prompts.js.map +1 -0
- package/dist/services/ai/prompts.d.ts +3 -2
- package/dist/services/ai/prompts.d.ts.map +1 -1
- package/dist/services/ai/prompts.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/ai/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAGtD,wBAAgB,eAAe,IAAI,OAAO,CAuBzC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Command } from '@commander-js/extra-typings';
|
|
2
|
+
import { createAiPrCommand } from '../ai/pr/index.js';
|
|
3
|
+
export function createAiCommand() {
|
|
4
|
+
const command = new Command('ai');
|
|
5
|
+
command
|
|
6
|
+
.description('AI-powered helpers (pr description, review, etc.)')
|
|
7
|
+
.addHelpText('after', `
|
|
8
|
+
Subcommands:
|
|
9
|
+
pr Generate a PR title + body from the current branch
|
|
10
|
+
|
|
11
|
+
Examples:
|
|
12
|
+
Generate a PR description and open it:
|
|
13
|
+
$ neo ai pr
|
|
14
|
+
|
|
15
|
+
Agent-friendly (emits { title, body } on stdout):
|
|
16
|
+
$ neo ai pr --json --no-create
|
|
17
|
+
`);
|
|
18
|
+
command.addCommand(createAiPrCommand());
|
|
19
|
+
return command;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/ai/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC,OAAO;SACJ,WAAW,CAAC,mDAAmD,CAAC;SAChE,WAAW,CACV,OAAO,EACP;;;;;;;;;;CAUL,CACI,CAAC;IAEJ,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAExC,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Command } from '@commander-js/extra-typings';
|
|
2
|
+
interface AiPrOptions {
|
|
3
|
+
base?: string;
|
|
4
|
+
create?: boolean;
|
|
5
|
+
draft?: boolean;
|
|
6
|
+
}
|
|
7
|
+
interface AiPrResult {
|
|
8
|
+
title: string;
|
|
9
|
+
body: string;
|
|
10
|
+
base: string;
|
|
11
|
+
branch: string;
|
|
12
|
+
commits: number;
|
|
13
|
+
prUrl?: string;
|
|
14
|
+
created: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare function executeAiPr(options: AiPrOptions): Promise<AiPrResult>;
|
|
17
|
+
export declare function createAiPrCommand(): Command;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/ai/pr/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAStD,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAmED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA2G3E;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CA6E3C"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { Command } from '@commander-js/extra-typings';
|
|
2
|
+
import { execa } from 'execa';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import { ui } from '../../../utils/ui.js';
|
|
5
|
+
import { emitJson } from '../../../utils/output.js';
|
|
6
|
+
import { runAction } from '../../../utils/run-action.js';
|
|
7
|
+
import { NonInteractiveError, mayPrompt } from '../../../utils/prompt.js';
|
|
8
|
+
import { generatePrDescription } from '../../../services/ai/index.js';
|
|
9
|
+
async function detectDefaultBranch() {
|
|
10
|
+
try {
|
|
11
|
+
const { stdout } = await execa('git', ['symbolic-ref', 'refs/remotes/origin/HEAD']);
|
|
12
|
+
return stdout.replace('refs/remotes/origin/', '').trim();
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
for (const name of ['main', 'master']) {
|
|
16
|
+
try {
|
|
17
|
+
await execa('git', ['show-ref', '--verify', '--quiet', `refs/remotes/origin/${name}`]);
|
|
18
|
+
return name;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
throw new Error('Could not detect default branch. Pass --base <name> or run `git remote set-head origin --auto`.');
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async function getCurrentBranch() {
|
|
28
|
+
const { stdout } = await execa('git', ['branch', '--show-current']);
|
|
29
|
+
return stdout.trim();
|
|
30
|
+
}
|
|
31
|
+
async function getCommits(base) {
|
|
32
|
+
const { stdout } = await execa('git', [
|
|
33
|
+
'log',
|
|
34
|
+
`origin/${base}..HEAD`,
|
|
35
|
+
'--pretty=format:%h %s%n%b',
|
|
36
|
+
'--reverse',
|
|
37
|
+
]);
|
|
38
|
+
return stdout.split('\n').filter((line) => line.trim().length > 0);
|
|
39
|
+
}
|
|
40
|
+
async function getDiffStat(base) {
|
|
41
|
+
const { stdout } = await execa('git', ['diff', `origin/${base}...HEAD`, '--stat']);
|
|
42
|
+
return stdout.trim();
|
|
43
|
+
}
|
|
44
|
+
async function getDiff(base) {
|
|
45
|
+
const { stdout } = await execa('git', ['diff', `origin/${base}...HEAD`]);
|
|
46
|
+
return stdout;
|
|
47
|
+
}
|
|
48
|
+
async function existingPrUrl() {
|
|
49
|
+
try {
|
|
50
|
+
const { stdout } = await execa('gh', ['pr', 'view', '--json', 'url', '-q', '.url'], {
|
|
51
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
52
|
+
});
|
|
53
|
+
const url = stdout.trim();
|
|
54
|
+
return url.length > 0 ? url : null;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async function ghInstalled() {
|
|
61
|
+
try {
|
|
62
|
+
await execa('gh', ['--version'], { stdio: ['ignore', 'pipe', 'pipe'] });
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export async function executeAiPr(options) {
|
|
70
|
+
const branch = await getCurrentBranch();
|
|
71
|
+
if (!branch) {
|
|
72
|
+
throw new Error('Detached HEAD — check out a branch before running `neo ai pr`.');
|
|
73
|
+
}
|
|
74
|
+
const base = options.base ?? (await detectDefaultBranch());
|
|
75
|
+
if (branch === base) {
|
|
76
|
+
throw new Error(`Already on base branch "${base}" — nothing to describe.`);
|
|
77
|
+
}
|
|
78
|
+
const [commits, diffStat, diff] = await Promise.all([
|
|
79
|
+
getCommits(base),
|
|
80
|
+
getDiffStat(base),
|
|
81
|
+
getDiff(base),
|
|
82
|
+
]);
|
|
83
|
+
if (commits.length === 0) {
|
|
84
|
+
throw new Error(`No commits on ${branch} that aren't already on origin/${base}. Commit and push first.`);
|
|
85
|
+
}
|
|
86
|
+
const request = {
|
|
87
|
+
branchName: branch,
|
|
88
|
+
baseBranch: base,
|
|
89
|
+
commits,
|
|
90
|
+
diffStat,
|
|
91
|
+
diff,
|
|
92
|
+
};
|
|
93
|
+
const generateSpinner = ui.spinner('Generating PR description');
|
|
94
|
+
generateSpinner.start();
|
|
95
|
+
const result = await generatePrDescription(request);
|
|
96
|
+
if (!result.success) {
|
|
97
|
+
generateSpinner.fail('PR description generation failed');
|
|
98
|
+
throw result.error;
|
|
99
|
+
}
|
|
100
|
+
generateSpinner.succeed('Generated PR description');
|
|
101
|
+
const { title, body } = result.data;
|
|
102
|
+
const commitCount = commits.filter((c) => /^[0-9a-f]{7,}\s/.test(c)).length;
|
|
103
|
+
const shouldCreate = options.create !== false;
|
|
104
|
+
const created = {
|
|
105
|
+
title,
|
|
106
|
+
body,
|
|
107
|
+
base,
|
|
108
|
+
branch,
|
|
109
|
+
commits: commitCount,
|
|
110
|
+
created: false,
|
|
111
|
+
};
|
|
112
|
+
if (!shouldCreate)
|
|
113
|
+
return created;
|
|
114
|
+
if (!(await ghInstalled())) {
|
|
115
|
+
ui.warn('gh CLI not found — skipping PR creation. Install from https://cli.github.com.');
|
|
116
|
+
return created;
|
|
117
|
+
}
|
|
118
|
+
const existing = await existingPrUrl();
|
|
119
|
+
if (existing) {
|
|
120
|
+
ui.warn(`PR already exists for this branch: ${existing}`);
|
|
121
|
+
ui.muted('Use `gh pr edit` to update title/body.');
|
|
122
|
+
return { ...created, prUrl: existing };
|
|
123
|
+
}
|
|
124
|
+
if (mayPrompt('Create PR with this title + body?', '--yes')) {
|
|
125
|
+
ui.newline();
|
|
126
|
+
ui.section('Preview');
|
|
127
|
+
ui.muted(`Title: ${title}`);
|
|
128
|
+
ui.muted('Body:');
|
|
129
|
+
ui.muted(body);
|
|
130
|
+
ui.newline();
|
|
131
|
+
const { confirm } = await inquirer.prompt([
|
|
132
|
+
{
|
|
133
|
+
type: 'confirm',
|
|
134
|
+
name: 'confirm',
|
|
135
|
+
message: 'Create PR?',
|
|
136
|
+
default: true,
|
|
137
|
+
},
|
|
138
|
+
]);
|
|
139
|
+
if (!confirm) {
|
|
140
|
+
ui.muted('Skipped PR creation.');
|
|
141
|
+
return created;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
const createSpinner = ui.spinner('Creating PR');
|
|
145
|
+
createSpinner.start();
|
|
146
|
+
try {
|
|
147
|
+
const args = ['pr', 'create', '--base', base, '--title', title, '--body', body];
|
|
148
|
+
if (options.draft)
|
|
149
|
+
args.push('--draft');
|
|
150
|
+
const { stdout } = await execa('gh', args);
|
|
151
|
+
const url = stdout.trim().split('\n').pop() ?? '';
|
|
152
|
+
createSpinner.succeed(`Created PR: ${url}`);
|
|
153
|
+
return { ...created, prUrl: url, created: true };
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
createSpinner.fail('Failed to create PR');
|
|
157
|
+
const stderr = error.stderr ?? '';
|
|
158
|
+
if (stderr)
|
|
159
|
+
ui.muted(stderr.trim().split('\n').slice(-10).join('\n'));
|
|
160
|
+
throw new Error('gh pr create failed. Run with --json to inspect the generated title/body.');
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
export function createAiPrCommand() {
|
|
164
|
+
const command = new Command('pr');
|
|
165
|
+
command
|
|
166
|
+
.description('Generate a PR title + body from the current branch and (optionally) create it via gh')
|
|
167
|
+
.option('--base <branch>', 'base branch to diff against (default: origin HEAD)')
|
|
168
|
+
.option('--draft', 'open the PR as a draft')
|
|
169
|
+
.option('--no-create', 'generate the description only — do not call gh pr create')
|
|
170
|
+
.addHelpText('after', `
|
|
171
|
+
Examples:
|
|
172
|
+
Generate + preview + create (interactive):
|
|
173
|
+
$ neo ai pr
|
|
174
|
+
|
|
175
|
+
Generate only, no PR created (print title/body):
|
|
176
|
+
$ neo ai pr --no-create
|
|
177
|
+
|
|
178
|
+
Agent-friendly (emits { ok, title, body } on stdout, no PR side-effect):
|
|
179
|
+
$ neo ai pr --json --no-create
|
|
180
|
+
|
|
181
|
+
Skip confirmation, open as draft:
|
|
182
|
+
$ neo ai pr --yes --draft
|
|
183
|
+
`)
|
|
184
|
+
.action(runAction(async (options) => {
|
|
185
|
+
const { getRuntimeContext } = await import('../../../utils/runtime-context.js');
|
|
186
|
+
const ctx = getRuntimeContext();
|
|
187
|
+
const effectiveOptions = { ...options };
|
|
188
|
+
if (ctx.format === 'json' && !ctx.yes && effectiveOptions.create !== false) {
|
|
189
|
+
effectiveOptions.create = false;
|
|
190
|
+
}
|
|
191
|
+
if (ctx.nonInteractive && !ctx.yes && effectiveOptions.create !== false) {
|
|
192
|
+
throw new NonInteractiveError('PR creation confirmation', '--yes (or --no-create to skip)');
|
|
193
|
+
}
|
|
194
|
+
const result = await executeAiPr(effectiveOptions);
|
|
195
|
+
emitJson({
|
|
196
|
+
ok: true,
|
|
197
|
+
command: 'ai pr',
|
|
198
|
+
branch: result.branch,
|
|
199
|
+
base: result.base,
|
|
200
|
+
commits: result.commits,
|
|
201
|
+
title: result.title,
|
|
202
|
+
body: result.body,
|
|
203
|
+
created: result.created,
|
|
204
|
+
prUrl: result.prUrl,
|
|
205
|
+
}, {
|
|
206
|
+
text: () => {
|
|
207
|
+
if (result.created && result.prUrl) {
|
|
208
|
+
ui.success(`PR opened: ${result.prUrl}`);
|
|
209
|
+
}
|
|
210
|
+
else if (result.prUrl) {
|
|
211
|
+
ui.muted(`Existing PR: ${result.prUrl}`);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
ui.newline();
|
|
215
|
+
ui.section('Generated PR');
|
|
216
|
+
ui.muted(`Title: ${result.title}`);
|
|
217
|
+
ui.muted('Body:');
|
|
218
|
+
ui.muted(result.body);
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
});
|
|
222
|
+
}));
|
|
223
|
+
return command;
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/ai/pr/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from '@commander-js/extra-typings';
|
|
2
|
+
type BumpType = 'major' | 'minor' | 'patch' | 'empty';
|
|
3
|
+
interface ChangesetOptions {
|
|
4
|
+
bump?: string;
|
|
5
|
+
summary?: string;
|
|
6
|
+
package?: string;
|
|
7
|
+
}
|
|
8
|
+
interface ChangesetResult {
|
|
9
|
+
path: string;
|
|
10
|
+
bump: BumpType;
|
|
11
|
+
packages: string[];
|
|
12
|
+
summary: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function executeChangeset(cwd: string, options: ChangesetOptions): Promise<ChangesetResult>;
|
|
15
|
+
export declare function createChangesetCommand(): Command;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/changeset/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAUtD,KAAK,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAItD,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AA6JD,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAmF1B;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAsDhD"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { Command } from '@commander-js/extra-typings';
|
|
2
|
+
import inquirer from 'inquirer';
|
|
3
|
+
import { access, readFile, readdir, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { ui } from '../../utils/ui.js';
|
|
6
|
+
import { emitJson } from '../../utils/output.js';
|
|
7
|
+
import { runAction } from '../../utils/run-action.js';
|
|
8
|
+
import { NonInteractiveError, promptSelect } from '../../utils/prompt.js';
|
|
9
|
+
import { getRuntimeContext } from '../../utils/runtime-context.js';
|
|
10
|
+
const BUMP_VALUES = ['major', 'minor', 'patch', 'empty'];
|
|
11
|
+
async function pathExists(p) {
|
|
12
|
+
try {
|
|
13
|
+
await access(p);
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
async function readJson(path) {
|
|
21
|
+
const raw = await readFile(path, 'utf-8');
|
|
22
|
+
return JSON.parse(raw);
|
|
23
|
+
}
|
|
24
|
+
async function discoverPackages(cwd) {
|
|
25
|
+
const rootPkg = await readJson(join(cwd, 'package.json'));
|
|
26
|
+
const workspacePatterns = [];
|
|
27
|
+
if (Array.isArray(rootPkg.workspaces)) {
|
|
28
|
+
workspacePatterns.push(...rootPkg.workspaces);
|
|
29
|
+
}
|
|
30
|
+
else if (rootPkg.workspaces?.packages) {
|
|
31
|
+
workspacePatterns.push(...rootPkg.workspaces.packages);
|
|
32
|
+
}
|
|
33
|
+
const pnpmWorkspacePath = join(cwd, 'pnpm-workspace.yaml');
|
|
34
|
+
if (await pathExists(pnpmWorkspacePath)) {
|
|
35
|
+
const yaml = await readFile(pnpmWorkspacePath, 'utf-8');
|
|
36
|
+
const lines = yaml.split('\n');
|
|
37
|
+
let inPackages = false;
|
|
38
|
+
for (const line of lines) {
|
|
39
|
+
if (/^packages\s*:/.test(line)) {
|
|
40
|
+
inPackages = true;
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (inPackages) {
|
|
44
|
+
const match = line.match(/^\s*-\s*['"]?([^'"]+?)['"]?\s*$/);
|
|
45
|
+
if (match?.[1])
|
|
46
|
+
workspacePatterns.push(match[1]);
|
|
47
|
+
else if (line.trim() && !line.startsWith(' ') && !line.startsWith('\t'))
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (workspacePatterns.length === 0) {
|
|
53
|
+
if (rootPkg.name && !rootPkg.private)
|
|
54
|
+
return [rootPkg.name];
|
|
55
|
+
if (rootPkg.name)
|
|
56
|
+
return [rootPkg.name];
|
|
57
|
+
throw new Error('Root package.json is missing a "name" field.');
|
|
58
|
+
}
|
|
59
|
+
const names = new Set();
|
|
60
|
+
for (const pattern of workspacePatterns) {
|
|
61
|
+
const trimmed = pattern.replace(/\/\*$/, '');
|
|
62
|
+
const base = join(cwd, trimmed);
|
|
63
|
+
if (!(await pathExists(base)))
|
|
64
|
+
continue;
|
|
65
|
+
const isGlob = pattern.endsWith('/*');
|
|
66
|
+
const candidates = isGlob
|
|
67
|
+
? (await readdir(base, { withFileTypes: true }))
|
|
68
|
+
.filter((d) => d.isDirectory())
|
|
69
|
+
.map((d) => join(base, d.name))
|
|
70
|
+
: [base];
|
|
71
|
+
for (const dir of candidates) {
|
|
72
|
+
const pkgPath = join(dir, 'package.json');
|
|
73
|
+
if (!(await pathExists(pkgPath)))
|
|
74
|
+
continue;
|
|
75
|
+
try {
|
|
76
|
+
const pkg = await readJson(pkgPath);
|
|
77
|
+
if (pkg.name && !pkg.private)
|
|
78
|
+
names.add(pkg.name);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (names.size === 0) {
|
|
86
|
+
throw new Error('No publishable packages found in workspaces.');
|
|
87
|
+
}
|
|
88
|
+
return [...names];
|
|
89
|
+
}
|
|
90
|
+
const ADJECTIVES = [
|
|
91
|
+
'brisk', 'bright', 'bold', 'busy', 'calm', 'clever', 'curious', 'eager',
|
|
92
|
+
'fierce', 'gentle', 'happy', 'jolly', 'keen', 'lucky', 'mellow', 'nimble',
|
|
93
|
+
'quiet', 'quick', 'rapid', 'silent', 'snappy', 'spry', 'swift', 'tidy',
|
|
94
|
+
'vivid', 'warm', 'witty', 'zesty',
|
|
95
|
+
];
|
|
96
|
+
const ANIMALS = [
|
|
97
|
+
'ants', 'bees', 'cats', 'crows', 'deer', 'dogs', 'eels', 'foxes',
|
|
98
|
+
'frogs', 'geckos', 'goats', 'hares', 'hawks', 'jays', 'lions', 'lynx',
|
|
99
|
+
'moles', 'moths', 'newts', 'owls', 'pandas', 'pigs', 'quails', 'rabbits',
|
|
100
|
+
'seals', 'tigers', 'wolves', 'yaks',
|
|
101
|
+
];
|
|
102
|
+
const VERBS = [
|
|
103
|
+
'bake', 'bounce', 'cheer', 'dance', 'dream', 'glow', 'hike', 'jump',
|
|
104
|
+
'laugh', 'march', 'paint', 'race', 'sing', 'skate', 'smile', 'sparkle',
|
|
105
|
+
'swim', 'think', 'wander', 'wave',
|
|
106
|
+
];
|
|
107
|
+
function pick(list) {
|
|
108
|
+
return list[Math.floor(Math.random() * list.length)];
|
|
109
|
+
}
|
|
110
|
+
function generateChangesetName() {
|
|
111
|
+
return `${pick(ADJECTIVES)}-${pick(ANIMALS)}-${pick(VERBS)}`;
|
|
112
|
+
}
|
|
113
|
+
function parseBump(raw) {
|
|
114
|
+
if (!raw)
|
|
115
|
+
return undefined;
|
|
116
|
+
const normalized = raw.trim().toLowerCase();
|
|
117
|
+
if (BUMP_VALUES.includes(normalized)) {
|
|
118
|
+
return normalized;
|
|
119
|
+
}
|
|
120
|
+
throw new Error(`Invalid --bump "${raw}". Expected one of: ${BUMP_VALUES.join(', ')}.`);
|
|
121
|
+
}
|
|
122
|
+
async function ensureUniquePath(cwd) {
|
|
123
|
+
for (let attempt = 0; attempt < 8; attempt++) {
|
|
124
|
+
const name = generateChangesetName();
|
|
125
|
+
const path = join(cwd, '.changeset', `${name}.md`);
|
|
126
|
+
if (!(await pathExists(path)))
|
|
127
|
+
return path;
|
|
128
|
+
}
|
|
129
|
+
return join(cwd, '.changeset', `neo-${Date.now()}.md`);
|
|
130
|
+
}
|
|
131
|
+
function formatChangesetBody(bump, packages, summary) {
|
|
132
|
+
if (bump === 'empty') {
|
|
133
|
+
return '---\n---\n';
|
|
134
|
+
}
|
|
135
|
+
const lines = packages.map((name) => `'${name}': ${bump}`);
|
|
136
|
+
return `---\n${lines.join('\n')}\n---\n\n${summary.trim()}\n`;
|
|
137
|
+
}
|
|
138
|
+
export async function executeChangeset(cwd, options) {
|
|
139
|
+
const configPath = join(cwd, '.changeset', 'config.json');
|
|
140
|
+
if (!(await pathExists(configPath))) {
|
|
141
|
+
throw new Error('No .changeset/config.json found. Run `pnpm dlx @changesets/cli init` first.');
|
|
142
|
+
}
|
|
143
|
+
const ctx = getRuntimeContext();
|
|
144
|
+
const bumpArg = parseBump(options.bump);
|
|
145
|
+
const bump = bumpArg ??
|
|
146
|
+
(await promptSelect({
|
|
147
|
+
message: 'What kind of change is this?',
|
|
148
|
+
flag: '--bump',
|
|
149
|
+
choices: [
|
|
150
|
+
{ label: 'patch — bugfix, no behavior change for consumers', value: 'patch' },
|
|
151
|
+
{ label: 'minor — backwards-compatible feature', value: 'minor' },
|
|
152
|
+
{ label: 'major — breaking change', value: 'major' },
|
|
153
|
+
{ label: 'empty — no package version bump (tooling/docs only)', value: 'empty' },
|
|
154
|
+
],
|
|
155
|
+
defaultValue: 'patch',
|
|
156
|
+
}));
|
|
157
|
+
let packages = [];
|
|
158
|
+
if (bump !== 'empty') {
|
|
159
|
+
const discovered = await discoverPackages(cwd);
|
|
160
|
+
if (options.package) {
|
|
161
|
+
const requested = options.package.split(',').map((s) => s.trim()).filter(Boolean);
|
|
162
|
+
const unknown = requested.filter((name) => !discovered.includes(name));
|
|
163
|
+
if (unknown.length > 0) {
|
|
164
|
+
throw new Error(`Unknown package(s): ${unknown.join(', ')}. Known: ${discovered.join(', ')}.`);
|
|
165
|
+
}
|
|
166
|
+
packages = requested;
|
|
167
|
+
}
|
|
168
|
+
else if (discovered.length === 1) {
|
|
169
|
+
packages = discovered;
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
if (ctx.yes || ctx.nonInteractive) {
|
|
173
|
+
throw new NonInteractiveError('Select package(s) to bump', '--package <name>[,<name>...]');
|
|
174
|
+
}
|
|
175
|
+
const { selected } = await inquirer.prompt([
|
|
176
|
+
{
|
|
177
|
+
type: 'checkbox',
|
|
178
|
+
name: 'selected',
|
|
179
|
+
message: 'Which packages are affected?',
|
|
180
|
+
choices: discovered.map((name) => ({ name, value: name })),
|
|
181
|
+
validate: (choices) => choices.length > 0 ? true : 'Pick at least one package.',
|
|
182
|
+
},
|
|
183
|
+
]);
|
|
184
|
+
packages = selected;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
let summary = options.summary?.trim() ?? '';
|
|
188
|
+
if (bump !== 'empty' && !summary) {
|
|
189
|
+
if (ctx.yes || ctx.nonInteractive) {
|
|
190
|
+
throw new NonInteractiveError('Changeset summary', '--summary "<text>"');
|
|
191
|
+
}
|
|
192
|
+
const answer = await inquirer.prompt([
|
|
193
|
+
{
|
|
194
|
+
type: 'input',
|
|
195
|
+
name: 'summary',
|
|
196
|
+
message: 'One-line summary (shown in the changelog):',
|
|
197
|
+
validate: (input) => (input.trim() ? true : 'Summary cannot be empty.'),
|
|
198
|
+
},
|
|
199
|
+
]);
|
|
200
|
+
summary = answer.summary.trim();
|
|
201
|
+
}
|
|
202
|
+
const path = await ensureUniquePath(cwd);
|
|
203
|
+
const body = formatChangesetBody(bump, packages, summary);
|
|
204
|
+
await writeFile(path, body, 'utf-8');
|
|
205
|
+
return { path, bump, packages, summary };
|
|
206
|
+
}
|
|
207
|
+
export function createChangesetCommand() {
|
|
208
|
+
const command = new Command('changeset');
|
|
209
|
+
command
|
|
210
|
+
.description('Create a changeset file (bump type + summary) under .changeset/')
|
|
211
|
+
.option('--bump <level>', 'bump level: major, minor, patch, or empty')
|
|
212
|
+
.option('--summary <text>', 'one-line summary for the changelog')
|
|
213
|
+
.option('--package <names>', 'comma-separated package names (monorepos)')
|
|
214
|
+
.addHelpText('after', `
|
|
215
|
+
Examples:
|
|
216
|
+
Interactive (prompts for bump + summary):
|
|
217
|
+
$ neo changeset
|
|
218
|
+
|
|
219
|
+
Non-interactive minor bump with summary:
|
|
220
|
+
$ neo changeset --yes --bump minor --summary "Add neo sync command"
|
|
221
|
+
|
|
222
|
+
Empty changeset (CLAUDE.md rule for tooling/docs-only changes):
|
|
223
|
+
$ neo changeset --yes --bump empty
|
|
224
|
+
|
|
225
|
+
Agent-friendly:
|
|
226
|
+
$ neo changeset --yes --json --bump patch --summary "Fix parse edge case"
|
|
227
|
+
`)
|
|
228
|
+
.action(runAction(async (options) => {
|
|
229
|
+
const result = await executeChangeset(process.cwd(), options);
|
|
230
|
+
emitJson({
|
|
231
|
+
ok: true,
|
|
232
|
+
command: 'changeset',
|
|
233
|
+
path: result.path,
|
|
234
|
+
bump: result.bump,
|
|
235
|
+
packages: result.packages,
|
|
236
|
+
summary: result.summary,
|
|
237
|
+
}, {
|
|
238
|
+
text: () => {
|
|
239
|
+
ui.success(`Wrote ${result.path}`);
|
|
240
|
+
if (result.bump === 'empty') {
|
|
241
|
+
ui.muted('Empty changeset — no package version bump.');
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
ui.muted(`${result.bump} bump for ${result.packages.join(', ')}`);
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
});
|
|
248
|
+
}));
|
|
249
|
+
return command;
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/changeset/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from '@commander-js/extra-typings';
|
|
2
|
+
type CheckStatus = 'ok' | 'warn' | 'fail';
|
|
3
|
+
interface CheckResult {
|
|
4
|
+
name: string;
|
|
5
|
+
status: CheckStatus;
|
|
6
|
+
message: string;
|
|
7
|
+
suggestion?: string;
|
|
8
|
+
}
|
|
9
|
+
interface DoctorResult {
|
|
10
|
+
ok: boolean;
|
|
11
|
+
checks: CheckResult[];
|
|
12
|
+
}
|
|
13
|
+
export declare function executeDoctor(cwd: string): Promise<DoctorResult>;
|
|
14
|
+
export declare function createDoctorCommand(): Command;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AActD,KAAK,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,YAAY;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAkQD,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAatE;AAwBD,wBAAgB,mBAAmB,IAAI,OAAO,CAqC7C"}
|