@radkode/neo 1.1.2 → 1.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 +81 -9
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +46 -8
- package/dist/cli.js.map +1 -1
- package/dist/commands/agent/context/index.d.ts.map +1 -1
- package/dist/commands/agent/context/index.js +84 -78
- package/dist/commands/agent/context/index.js.map +1 -1
- package/dist/commands/agent/index.d.ts.map +1 -1
- package/dist/commands/agent/index.js +7 -1
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/agent/init/index.d.ts.map +1 -1
- package/dist/commands/agent/init/index.js +36 -33
- package/dist/commands/agent/init/index.js.map +1 -1
- package/dist/commands/alias/setup/index.d.ts.map +1 -1
- package/dist/commands/alias/setup/index.js +57 -52
- package/dist/commands/alias/setup/index.js.map +1 -1
- package/dist/commands/completions/index.d.ts.map +1 -1
- package/dist/commands/completions/index.js +20 -12
- package/dist/commands/completions/index.js.map +1 -1
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +173 -158
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/config/profile/index.d.ts.map +1 -1
- package/dist/commands/config/profile/index.js +169 -232
- package/dist/commands/config/profile/index.js.map +1 -1
- package/dist/commands/gh/pr/create/index.d.ts.map +1 -1
- package/dist/commands/gh/pr/create/index.js +86 -56
- package/dist/commands/gh/pr/create/index.js.map +1 -1
- package/dist/commands/git/branch/index.d.ts.map +1 -1
- package/dist/commands/git/branch/index.js +56 -43
- package/dist/commands/git/branch/index.js.map +1 -1
- package/dist/commands/git/commit/index.d.ts.map +1 -1
- package/dist/commands/git/commit/index.js +67 -45
- package/dist/commands/git/commit/index.js.map +1 -1
- package/dist/commands/git/pull/index.d.ts +7 -1
- package/dist/commands/git/pull/index.d.ts.map +1 -1
- package/dist/commands/git/pull/index.js +62 -70
- package/dist/commands/git/pull/index.js.map +1 -1
- package/dist/commands/git/push/index.d.ts +2 -0
- package/dist/commands/git/push/index.d.ts.map +1 -1
- package/dist/commands/git/push/index.js +61 -39
- package/dist/commands/git/push/index.js.map +1 -1
- package/dist/commands/git/stash/index.d.ts.map +1 -1
- package/dist/commands/git/stash/index.js +42 -11
- package/dist/commands/git/stash/index.js.map +1 -1
- package/dist/commands/git/worktree/add.d.ts.map +1 -1
- package/dist/commands/git/worktree/add.js +21 -15
- package/dist/commands/git/worktree/add.js.map +1 -1
- package/dist/commands/git/worktree/list.d.ts.map +1 -1
- package/dist/commands/git/worktree/list.js +32 -20
- package/dist/commands/git/worktree/list.js.map +1 -1
- package/dist/commands/git/worktree/remove.d.ts.map +1 -1
- package/dist/commands/git/worktree/remove.js +17 -8
- package/dist/commands/git/worktree/remove.js.map +1 -1
- package/dist/commands/git/worktree/switch.d.ts.map +1 -1
- package/dist/commands/git/worktree/switch.js +23 -9
- package/dist/commands/git/worktree/switch.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +53 -28
- package/dist/commands/init/index.js.map +1 -1
- package/dist/commands/pr/index.d.ts.map +1 -1
- package/dist/commands/pr/index.js +6 -20
- package/dist/commands/pr/index.js.map +1 -1
- package/dist/commands/schema/index.d.ts +44 -0
- package/dist/commands/schema/index.d.ts.map +1 -0
- package/dist/commands/schema/index.js +214 -0
- package/dist/commands/schema/index.js.map +1 -0
- package/dist/commands/update/index.d.ts.map +1 -1
- package/dist/commands/update/index.js +103 -91
- package/dist/commands/update/index.js.map +1 -1
- package/dist/services/ai/index.d.ts.map +1 -1
- package/dist/services/ai/index.js +9 -2
- package/dist/services/ai/index.js.map +1 -1
- package/dist/services/ai/prompts.d.ts +6 -1
- package/dist/services/ai/prompts.d.ts.map +1 -1
- package/dist/services/ai/prompts.js +10 -4
- package/dist/services/ai/prompts.js.map +1 -1
- package/dist/types/schemas.d.ts +3 -7
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +3 -3
- package/dist/types/schemas.js.map +1 -1
- package/dist/utils/agent.d.ts.map +1 -1
- package/dist/utils/agent.js +5 -11
- package/dist/utils/agent.js.map +1 -1
- package/dist/utils/config.js +1 -1
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/logger.d.ts +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +52 -11
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/output.d.ts +15 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +50 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/prompt.d.ts +17 -2
- package/dist/utils/prompt.d.ts.map +1 -1
- package/dist/utils/prompt.js +66 -11
- package/dist/utils/prompt.js.map +1 -1
- package/dist/utils/run-action.d.ts +3 -0
- package/dist/utils/run-action.d.ts.map +1 -0
- package/dist/utils/run-action.js +19 -0
- package/dist/utils/run-action.js.map +1 -0
- package/dist/utils/runtime-context.d.ts +27 -0
- package/dist/utils/runtime-context.d.ts.map +1 -0
- package/dist/utils/runtime-context.js +74 -0
- package/dist/utils/runtime-context.js.map +1 -0
- package/dist/utils/ui-types.d.ts +2 -0
- package/dist/utils/ui-types.d.ts.map +1 -1
- package/dist/utils/ui.d.ts +2 -0
- package/dist/utils/ui.d.ts.map +1 -1
- package/dist/utils/ui.js +96 -22
- package/dist/utils/ui.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { Command } from '@commander-js/extra-typings';
|
|
2
|
+
import packageJson from '../../../package.json' with { type: 'json' };
|
|
3
|
+
import { emitJson } from '../../utils/output.js';
|
|
4
|
+
import { ui } from '../../utils/ui.js';
|
|
5
|
+
function describeOption(opt) {
|
|
6
|
+
const o = opt;
|
|
7
|
+
const takesArg = /[<[]/.test(o.flags);
|
|
8
|
+
const schema = {
|
|
9
|
+
flags: o.flags,
|
|
10
|
+
description: o.description,
|
|
11
|
+
required: Boolean(o.required),
|
|
12
|
+
takesArg,
|
|
13
|
+
};
|
|
14
|
+
if (o.long)
|
|
15
|
+
schema.long = o.long;
|
|
16
|
+
if (o.short)
|
|
17
|
+
schema.short = o.short;
|
|
18
|
+
if (o.defaultValue !== undefined)
|
|
19
|
+
schema.defaultValue = o.defaultValue;
|
|
20
|
+
if (o.argChoices && o.argChoices.length > 0)
|
|
21
|
+
schema.choices = o.argChoices;
|
|
22
|
+
return schema;
|
|
23
|
+
}
|
|
24
|
+
function describeArguments(cmd) {
|
|
25
|
+
const args = cmd
|
|
26
|
+
.registeredArguments;
|
|
27
|
+
if (!args || args.length === 0)
|
|
28
|
+
return [];
|
|
29
|
+
return args.map((a) => ({
|
|
30
|
+
name: a.name(),
|
|
31
|
+
description: a.description,
|
|
32
|
+
required: a.required,
|
|
33
|
+
variadic: a.variadic,
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
function buildCommandSchema(cmd, parentPath = []) {
|
|
37
|
+
const name = cmd.name();
|
|
38
|
+
const path = [...parentPath, name].join(' ');
|
|
39
|
+
const options = (cmd.options ?? []).map(describeOption);
|
|
40
|
+
const schema = {
|
|
41
|
+
name,
|
|
42
|
+
path,
|
|
43
|
+
description: cmd.description() || '',
|
|
44
|
+
aliases: cmd.aliases(),
|
|
45
|
+
arguments: describeArguments(cmd),
|
|
46
|
+
options,
|
|
47
|
+
subcommands: cmd.commands
|
|
48
|
+
.filter((c) => c.name() !== 'help')
|
|
49
|
+
.map((c) => buildCommandSchema(c, [...parentPath, name])),
|
|
50
|
+
};
|
|
51
|
+
return schema;
|
|
52
|
+
}
|
|
53
|
+
export async function buildFullSchema(root) {
|
|
54
|
+
const globalOptions = (root.options ?? []).map(describeOption);
|
|
55
|
+
const commands = root.commands
|
|
56
|
+
.filter((c) => c.name() !== 'help' && c.name() !== 'schema')
|
|
57
|
+
.map((c) => buildCommandSchema(c));
|
|
58
|
+
return {
|
|
59
|
+
$schema: 'opencli-lite/v1',
|
|
60
|
+
name: root.name(),
|
|
61
|
+
version: packageJson.version,
|
|
62
|
+
description: packageJson.description ?? '',
|
|
63
|
+
globalOptions,
|
|
64
|
+
commands,
|
|
65
|
+
agentNotes: {
|
|
66
|
+
nonInteractive: 'Pass --json (implies --non-interactive and --quiet) or --yes to skip interactive prompts. Required fields that cannot be inferred will exit with code 2.',
|
|
67
|
+
json: 'stdout is reserved for final JSON payloads; logs/spinners/banners go to stderr. Under --json, errors emit as {"error": {...}} on stdout.',
|
|
68
|
+
exitCodes: {
|
|
69
|
+
'0': 'Success',
|
|
70
|
+
'1': 'Command failure',
|
|
71
|
+
'2': 'Non-interactive prompt required — missing flag',
|
|
72
|
+
},
|
|
73
|
+
envVars: {
|
|
74
|
+
NEO_JSON: 'Equivalent to --json',
|
|
75
|
+
NEO_YES: 'Equivalent to --yes',
|
|
76
|
+
NEO_NON_INTERACTIVE: 'Equivalent to --non-interactive',
|
|
77
|
+
NEO_QUIET: 'Equivalent to --quiet',
|
|
78
|
+
NO_COLOR: 'Standard — disables colors',
|
|
79
|
+
CI: 'When set, implies --non-interactive and suppresses banner/update-check',
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function getRootProgram(cmd) {
|
|
85
|
+
let current = cmd;
|
|
86
|
+
while (current.parent) {
|
|
87
|
+
current = current.parent;
|
|
88
|
+
}
|
|
89
|
+
return current;
|
|
90
|
+
}
|
|
91
|
+
function renderOptionMarkdown(opt) {
|
|
92
|
+
const parts = [`- \`${opt.flags}\``];
|
|
93
|
+
if (opt.description)
|
|
94
|
+
parts.push(`— ${opt.description}`);
|
|
95
|
+
const meta = [];
|
|
96
|
+
if (opt.required)
|
|
97
|
+
meta.push('required');
|
|
98
|
+
if (opt.defaultValue !== undefined)
|
|
99
|
+
meta.push(`default: \`${JSON.stringify(opt.defaultValue)}\``);
|
|
100
|
+
if (opt.choices && opt.choices.length > 0) {
|
|
101
|
+
meta.push(`choices: ${opt.choices.map((c) => `\`${c}\``).join(', ')}`);
|
|
102
|
+
}
|
|
103
|
+
if (meta.length > 0)
|
|
104
|
+
parts.push(`(${meta.join(', ')})`);
|
|
105
|
+
return parts.join(' ');
|
|
106
|
+
}
|
|
107
|
+
function renderArgumentMarkdown(arg) {
|
|
108
|
+
const decoration = arg.required ? '<>' : '[]';
|
|
109
|
+
const left = decoration[0];
|
|
110
|
+
const right = decoration[1];
|
|
111
|
+
const name = arg.variadic ? `${arg.name}...` : arg.name;
|
|
112
|
+
const parts = [`- \`${left}${name}${right}\``];
|
|
113
|
+
if (arg.description)
|
|
114
|
+
parts.push(`— ${arg.description}`);
|
|
115
|
+
return parts.join(' ');
|
|
116
|
+
}
|
|
117
|
+
function renderCommandMarkdown(cmd, depth) {
|
|
118
|
+
const heading = '#'.repeat(Math.min(depth, 6));
|
|
119
|
+
const lines = [`${heading} neo ${cmd.path}`, ''];
|
|
120
|
+
if (cmd.description) {
|
|
121
|
+
lines.push(cmd.description, '');
|
|
122
|
+
}
|
|
123
|
+
if (cmd.aliases.length > 0) {
|
|
124
|
+
lines.push(`**Aliases:** ${cmd.aliases.map((a) => `\`${a}\``).join(', ')}`, '');
|
|
125
|
+
}
|
|
126
|
+
if (cmd.arguments.length > 0) {
|
|
127
|
+
lines.push('**Arguments:**', '');
|
|
128
|
+
for (const arg of cmd.arguments) {
|
|
129
|
+
lines.push(renderArgumentMarkdown(arg));
|
|
130
|
+
}
|
|
131
|
+
lines.push('');
|
|
132
|
+
}
|
|
133
|
+
if (cmd.options.length > 0) {
|
|
134
|
+
lines.push('**Options:**', '');
|
|
135
|
+
for (const opt of cmd.options) {
|
|
136
|
+
lines.push(renderOptionMarkdown(opt));
|
|
137
|
+
}
|
|
138
|
+
lines.push('');
|
|
139
|
+
}
|
|
140
|
+
for (const sub of cmd.subcommands) {
|
|
141
|
+
lines.push(...renderCommandMarkdown(sub, depth + 1));
|
|
142
|
+
}
|
|
143
|
+
return lines;
|
|
144
|
+
}
|
|
145
|
+
function renderSchemaMarkdown(schema) {
|
|
146
|
+
const lines = [
|
|
147
|
+
`# ${schema.name}`,
|
|
148
|
+
'',
|
|
149
|
+
`**Version:** ${schema.version}`,
|
|
150
|
+
'',
|
|
151
|
+
];
|
|
152
|
+
if (schema.description) {
|
|
153
|
+
lines.push(schema.description, '');
|
|
154
|
+
}
|
|
155
|
+
if (schema.globalOptions.length > 0) {
|
|
156
|
+
lines.push('## Global options', '');
|
|
157
|
+
for (const opt of schema.globalOptions) {
|
|
158
|
+
lines.push(renderOptionMarkdown(opt));
|
|
159
|
+
}
|
|
160
|
+
lines.push('');
|
|
161
|
+
}
|
|
162
|
+
lines.push('## Agent notes', '');
|
|
163
|
+
lines.push(`- **Non-interactive:** ${schema.agentNotes.nonInteractive}`);
|
|
164
|
+
lines.push(`- **JSON:** ${schema.agentNotes.json}`);
|
|
165
|
+
lines.push('', '**Exit codes:**', '');
|
|
166
|
+
for (const [code, desc] of Object.entries(schema.agentNotes.exitCodes)) {
|
|
167
|
+
lines.push(`- \`${code}\` — ${desc}`);
|
|
168
|
+
}
|
|
169
|
+
lines.push('', '**Environment variables:**', '');
|
|
170
|
+
for (const [name, desc] of Object.entries(schema.agentNotes.envVars)) {
|
|
171
|
+
lines.push(`- \`${name}\` — ${desc}`);
|
|
172
|
+
}
|
|
173
|
+
lines.push('', '## Commands', '');
|
|
174
|
+
for (const cmd of schema.commands) {
|
|
175
|
+
lines.push(...renderCommandMarkdown(cmd, 3));
|
|
176
|
+
}
|
|
177
|
+
return lines.join('\n').replace(/\n{3,}/g, '\n\n').trimEnd() + '\n';
|
|
178
|
+
}
|
|
179
|
+
export function createSchemaCommand() {
|
|
180
|
+
const command = new Command('schema');
|
|
181
|
+
command
|
|
182
|
+
.description('Emit a machine-readable description of every command and option')
|
|
183
|
+
.option('--pretty', 'pretty-print the JSON')
|
|
184
|
+
.option('--markdown', 'emit markdown documentation instead of JSON')
|
|
185
|
+
.addHelpText('after', `
|
|
186
|
+
Agents: use this to discover commands and flags dynamically.
|
|
187
|
+
|
|
188
|
+
Example:
|
|
189
|
+
$ neo schema | jq '.commands[] | .path'
|
|
190
|
+
$ neo schema --pretty > neo-schema.json
|
|
191
|
+
$ neo schema --markdown > AGENTS.md
|
|
192
|
+
`)
|
|
193
|
+
.action(async (opts) => {
|
|
194
|
+
const root = getRootProgram(command);
|
|
195
|
+
const schema = await buildFullSchema(root);
|
|
196
|
+
if (opts.markdown) {
|
|
197
|
+
process.stdout.write(renderSchemaMarkdown(schema));
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if (opts.pretty) {
|
|
201
|
+
process.stdout.write(`${JSON.stringify(schema, null, 2)}\n`);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
emitJson(schema, {
|
|
205
|
+
text: () => process.stdout.write(`${JSON.stringify(schema)}\n`),
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
if (process.stdout.isTTY) {
|
|
209
|
+
ui.muted('Tip: pipe through `jq` to filter. Use --pretty or --markdown for human output.');
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
return command;
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/schema/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AA0FtD,wBAAgB,mBAAmB,IAAI,OAAO,CAgK7C"}
|
|
@@ -4,9 +4,13 @@ import inquirer from 'inquirer';
|
|
|
4
4
|
import packageJson from '../../../package.json' with { type: 'json' };
|
|
5
5
|
import { logger } from '../../utils/logger.js';
|
|
6
6
|
import { ui } from '../../utils/ui.js';
|
|
7
|
-
import { validate
|
|
7
|
+
import { validate } from '../../utils/validation.js';
|
|
8
8
|
import { updateOptionsSchema } from '../../types/schemas.js';
|
|
9
9
|
import { compareVersions, fetchLatestCliVersion } from '../../utils/update-check.js';
|
|
10
|
+
import { getRuntimeContext } from '../../utils/runtime-context.js';
|
|
11
|
+
import { emitJson } from '../../utils/output.js';
|
|
12
|
+
import { NonInteractiveError } from '../../utils/prompt.js';
|
|
13
|
+
import { runAction } from '../../utils/run-action.js';
|
|
10
14
|
function getCurrentVersion() {
|
|
11
15
|
try {
|
|
12
16
|
return packageJson.version;
|
|
@@ -55,7 +59,7 @@ async function executeUpdate(packageManager, force) {
|
|
|
55
59
|
}
|
|
56
60
|
}
|
|
57
61
|
await execa(packageManager, commands[packageManager], {
|
|
58
|
-
stdio: '
|
|
62
|
+
stdio: ['ignore', process.stderr, process.stderr],
|
|
59
63
|
});
|
|
60
64
|
}
|
|
61
65
|
export function createUpdateCommand() {
|
|
@@ -64,76 +68,85 @@ export function createUpdateCommand() {
|
|
|
64
68
|
.description('Update Neo CLI to the latest version')
|
|
65
69
|
.option('--check-only', 'only check for updates without installing')
|
|
66
70
|
.option('--force', 'force update even if already on latest version')
|
|
67
|
-
.action(async (options) => {
|
|
68
|
-
|
|
71
|
+
.action(runAction(async (options) => {
|
|
72
|
+
const validatedOptions = validate(updateOptionsSchema, options, 'update options');
|
|
73
|
+
const currentVersion = getCurrentVersion();
|
|
74
|
+
logger.debug(`Current version: ${currentVersion}`);
|
|
75
|
+
const spinner = ui.spinner('Checking for updates');
|
|
76
|
+
spinner.start();
|
|
77
|
+
let latestVersion;
|
|
69
78
|
try {
|
|
70
|
-
|
|
79
|
+
latestVersion = await getLatestVersion();
|
|
71
80
|
}
|
|
72
|
-
catch
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
throw error;
|
|
81
|
+
catch {
|
|
82
|
+
spinner.fail('Failed to check for updates');
|
|
83
|
+
throw new Error('Could not connect to npm registry. Please check your internet connection.');
|
|
77
84
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
latestVersion = await getLatestVersion();
|
|
86
|
-
}
|
|
87
|
-
catch {
|
|
88
|
-
spinner.fail('Failed to check for updates');
|
|
89
|
-
ui.error('Could not connect to npm registry. Please check your internet connection');
|
|
90
|
-
process.exit(1);
|
|
91
|
-
}
|
|
92
|
-
logger.debug(`Latest version: ${latestVersion}`);
|
|
93
|
-
const comparison = compareVersions(latestVersion, currentVersion);
|
|
94
|
-
if (comparison === 0) {
|
|
95
|
-
spinner.succeed('You are already on the latest version!');
|
|
96
|
-
ui.info(`Current version: ${currentVersion}`);
|
|
97
|
-
if (!validatedOptions.force) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
ui.warn('--force flag detected, proceeding with reinstall');
|
|
85
|
+
logger.debug(`Latest version: ${latestVersion}`);
|
|
86
|
+
const comparison = compareVersions(latestVersion, currentVersion);
|
|
87
|
+
if (comparison === 0) {
|
|
88
|
+
spinner.succeed('You are already on the latest version!');
|
|
89
|
+
ui.info(`Current version: ${currentVersion}`);
|
|
90
|
+
if (!validatedOptions.force) {
|
|
91
|
+
return;
|
|
101
92
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
default: false,
|
|
111
|
-
},
|
|
112
|
-
]);
|
|
113
|
-
if (!shouldDowngrade) {
|
|
114
|
-
ui.muted('Update cancelled');
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
93
|
+
ui.warn('--force flag detected, proceeding with reinstall');
|
|
94
|
+
}
|
|
95
|
+
else if (comparison < 0) {
|
|
96
|
+
spinner.warn(`You are on a newer version (${currentVersion}) than the latest stable (${latestVersion})`);
|
|
97
|
+
if (!validatedOptions.force && !validatedOptions.checkOnly) {
|
|
98
|
+
const rtCtx = getRuntimeContext();
|
|
99
|
+
if (rtCtx.nonInteractive || rtCtx.yes) {
|
|
100
|
+
throw new NonInteractiveError(`Downgrade from ${currentVersion} to ${latestVersion} requires explicit --force`, '--force');
|
|
117
101
|
}
|
|
118
|
-
|
|
102
|
+
const { shouldDowngrade } = await inquirer.prompt([
|
|
103
|
+
{
|
|
104
|
+
type: 'confirm',
|
|
105
|
+
name: 'shouldDowngrade',
|
|
106
|
+
message: 'Do you want to downgrade to the latest stable version?',
|
|
107
|
+
default: false,
|
|
108
|
+
},
|
|
109
|
+
]);
|
|
110
|
+
if (!shouldDowngrade) {
|
|
111
|
+
ui.muted('Update cancelled');
|
|
119
112
|
return;
|
|
120
113
|
}
|
|
121
114
|
}
|
|
122
|
-
else {
|
|
123
|
-
spinner.succeed('Update available!');
|
|
124
|
-
ui.keyValue([
|
|
125
|
-
['Current version', currentVersion],
|
|
126
|
-
['Latest version', latestVersion],
|
|
127
|
-
]);
|
|
128
|
-
}
|
|
129
|
-
if (validatedOptions.checkOnly) {
|
|
130
|
-
if (comparison > 0) {
|
|
131
|
-
ui.muted('Run neo update to install the latest version');
|
|
132
|
-
}
|
|
115
|
+
else if (!validatedOptions.force) {
|
|
133
116
|
return;
|
|
134
117
|
}
|
|
135
|
-
|
|
136
|
-
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
spinner.succeed('Update available!');
|
|
121
|
+
ui.keyValue([
|
|
122
|
+
['Current version', currentVersion],
|
|
123
|
+
['Latest version', latestVersion],
|
|
124
|
+
]);
|
|
125
|
+
}
|
|
126
|
+
if (validatedOptions.checkOnly) {
|
|
127
|
+
emitJson({
|
|
128
|
+
ok: true,
|
|
129
|
+
command: 'update',
|
|
130
|
+
currentVersion,
|
|
131
|
+
latestVersion,
|
|
132
|
+
updateAvailable: comparison > 0,
|
|
133
|
+
});
|
|
134
|
+
if (comparison > 0) {
|
|
135
|
+
ui.muted('Run neo update to install the latest version');
|
|
136
|
+
}
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (!validatedOptions.force && comparison !== 0) {
|
|
140
|
+
const rtCtx = getRuntimeContext();
|
|
141
|
+
let confirm;
|
|
142
|
+
if (rtCtx.yes) {
|
|
143
|
+
confirm = true;
|
|
144
|
+
}
|
|
145
|
+
else if (rtCtx.nonInteractive) {
|
|
146
|
+
throw new NonInteractiveError(`Update to ${latestVersion} requires confirmation`, '--yes');
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
const answer = await inquirer.prompt([
|
|
137
150
|
{
|
|
138
151
|
type: 'confirm',
|
|
139
152
|
name: 'confirm',
|
|
@@ -141,41 +154,40 @@ export function createUpdateCommand() {
|
|
|
141
154
|
default: true,
|
|
142
155
|
},
|
|
143
156
|
]);
|
|
144
|
-
|
|
145
|
-
ui.muted('Update cancelled');
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
const updateSpinner = ui.spinner('Detecting package manager');
|
|
150
|
-
updateSpinner.start();
|
|
151
|
-
const packageManager = await detectPackageManager();
|
|
152
|
-
updateSpinner.text = `Updating via ${packageManager}...`;
|
|
153
|
-
logger.debug(`Using package manager: ${packageManager}`);
|
|
154
|
-
try {
|
|
155
|
-
await executeUpdate(packageManager, validatedOptions.force || false);
|
|
156
|
-
updateSpinner.succeed(`Successfully updated to version ${latestVersion}!`);
|
|
157
|
-
ui.muted('Run neo --version to verify the installation');
|
|
157
|
+
confirm = Boolean(answer.confirm);
|
|
158
158
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
if (errorMessage.includes('EACCES') || errorMessage.includes('permission denied')) {
|
|
163
|
-
ui.error('Permission denied. Try running with sudo:');
|
|
164
|
-
ui.muted(` sudo ${packageManager} ${packageManager === 'npm' ? 'install' : 'add'} -g @radkode/neo@latest`);
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
ui.error(`Update failed: ${errorMessage}`);
|
|
168
|
-
ui.muted(`Try updating manually: ${packageManager} ${packageManager === 'npm' ? 'install' : 'add'} -g @radkode/neo@latest`);
|
|
169
|
-
}
|
|
170
|
-
process.exit(1);
|
|
159
|
+
if (!confirm) {
|
|
160
|
+
ui.muted('Update cancelled');
|
|
161
|
+
return;
|
|
171
162
|
}
|
|
172
163
|
}
|
|
164
|
+
const updateSpinner = ui.spinner('Detecting package manager');
|
|
165
|
+
updateSpinner.start();
|
|
166
|
+
const packageManager = await detectPackageManager();
|
|
167
|
+
updateSpinner.text = `Updating via ${packageManager}...`;
|
|
168
|
+
logger.debug(`Using package manager: ${packageManager}`);
|
|
169
|
+
try {
|
|
170
|
+
await executeUpdate(packageManager, validatedOptions.force || false);
|
|
171
|
+
updateSpinner.succeed(`Successfully updated to version ${latestVersion}!`);
|
|
172
|
+
emitJson({
|
|
173
|
+
ok: true,
|
|
174
|
+
command: 'update',
|
|
175
|
+
from: currentVersion,
|
|
176
|
+
to: latestVersion,
|
|
177
|
+
packageManager,
|
|
178
|
+
});
|
|
179
|
+
ui.muted('Run neo --version to verify the installation');
|
|
180
|
+
}
|
|
173
181
|
catch (error) {
|
|
182
|
+
updateSpinner.fail('Update failed');
|
|
174
183
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
175
|
-
|
|
176
|
-
|
|
184
|
+
const installCmd = `${packageManager} ${packageManager === 'npm' ? 'install' : 'add'} -g @radkode/neo@latest`;
|
|
185
|
+
if (errorMessage.includes('EACCES') || errorMessage.includes('permission denied')) {
|
|
186
|
+
throw new Error(`Permission denied. Try running with sudo: sudo ${installCmd}`);
|
|
187
|
+
}
|
|
188
|
+
throw new Error(`Update failed: ${errorMessage}. Try updating manually: ${installCmd}`);
|
|
177
189
|
}
|
|
178
|
-
});
|
|
190
|
+
}));
|
|
179
191
|
return command;
|
|
180
192
|
}
|
|
181
193
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/update/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/ai/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAoB,MAAM,wBAAwB,CAAC;AAIvE,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/ai/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAoB,MAAM,wBAAwB,CAAC;AAIvE,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAEtB,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAsLhD,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAsBvG;AAKD,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG5D"}
|
|
@@ -16,7 +16,7 @@ async function getApiKey() {
|
|
|
16
16
|
}
|
|
17
17
|
async function getModel() {
|
|
18
18
|
const config = await configManager.read();
|
|
19
|
-
return config.ai.model || 'claude-
|
|
19
|
+
return config.ai.model || 'claude-haiku-4-5-20251001';
|
|
20
20
|
}
|
|
21
21
|
async function callAnthropicAPI(prompt, retries = 3) {
|
|
22
22
|
const apiKey = await getApiKey();
|
|
@@ -37,10 +37,17 @@ async function callAnthropicAPI(prompt, retries = 3) {
|
|
|
37
37
|
body: JSON.stringify({
|
|
38
38
|
model,
|
|
39
39
|
max_tokens: MAX_TOKENS,
|
|
40
|
+
system: [
|
|
41
|
+
{
|
|
42
|
+
type: 'text',
|
|
43
|
+
text: prompt.system,
|
|
44
|
+
cache_control: { type: 'ephemeral' },
|
|
45
|
+
},
|
|
46
|
+
],
|
|
40
47
|
messages: [
|
|
41
48
|
{
|
|
42
49
|
role: 'user',
|
|
43
|
-
content: prompt,
|
|
50
|
+
content: prompt.user,
|
|
44
51
|
},
|
|
45
52
|
],
|
|
46
53
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/ai/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/ai/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,12 @@ export interface AICommitResponse {
|
|
|
12
12
|
body?: string;
|
|
13
13
|
breaking: boolean;
|
|
14
14
|
}
|
|
15
|
-
export
|
|
15
|
+
export interface StructuredCommitPrompt {
|
|
16
|
+
system: string;
|
|
17
|
+
user: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function getCommitSystemPrompt(): string;
|
|
20
|
+
export declare function buildCommitPrompt(request: AICommitRequest): StructuredCommitPrompt;
|
|
16
21
|
export declare function parseCommitResponse(response: string): AICommitResponse;
|
|
17
22
|
export declare function isDiffTooLarge(diff: string): boolean;
|
|
18
23
|
export declare function getDiffSize(diff: string): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/services/ai/prompts.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKrD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAKD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/services/ai/prompts.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKrD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAKD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AA+CD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAsBD,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAKD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,sBAAsB,CAuBlF;AAKD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAqCtE;AAKD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIpD;AAKD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD"}
|
|
@@ -24,9 +24,7 @@ function truncateDiff(diff) {
|
|
|
24
24
|
}
|
|
25
25
|
return result.join('\n');
|
|
26
26
|
}
|
|
27
|
-
|
|
28
|
-
const truncatedDiff = truncateDiff(request.diff);
|
|
29
|
-
const systemPrompt = `You are a commit message generator. Generate a conventional commit message based on the staged changes.
|
|
27
|
+
const COMMIT_SYSTEM_PROMPT = `You are a commit message generator. Generate a conventional commit message based on the staged changes.
|
|
30
28
|
|
|
31
29
|
Conventional commit format:
|
|
32
30
|
- type(scope): message
|
|
@@ -45,6 +43,11 @@ Rules:
|
|
|
45
43
|
|
|
46
44
|
Respond with ONLY a JSON object in this exact format (no markdown, no explanation):
|
|
47
45
|
{"type":"feat","scope":"optional-scope","message":"lowercase imperative description","body":"optional longer explanation","breaking":false}`;
|
|
46
|
+
export function getCommitSystemPrompt() {
|
|
47
|
+
return COMMIT_SYSTEM_PROMPT;
|
|
48
|
+
}
|
|
49
|
+
export function buildCommitPrompt(request) {
|
|
50
|
+
const truncatedDiff = truncateDiff(request.diff);
|
|
48
51
|
const contextParts = [];
|
|
49
52
|
if (request.branchName && request.branchName !== 'main' && request.branchName !== 'master') {
|
|
50
53
|
contextParts.push(`Current branch: ${request.branchName}`);
|
|
@@ -56,7 +59,10 @@ Respond with ONLY a JSON object in this exact format (no markdown, no explanatio
|
|
|
56
59
|
contextParts.push(`Staged files (${request.stagedFiles.length}):\n${request.stagedFiles.slice(0, 20).join('\n')}`);
|
|
57
60
|
}
|
|
58
61
|
const context = contextParts.length > 0 ? contextParts.join('\n\n') + '\n\n' : '';
|
|
59
|
-
return
|
|
62
|
+
return {
|
|
63
|
+
system: COMMIT_SYSTEM_PROMPT,
|
|
64
|
+
user: `${context}Staged diff:\n\`\`\`\n${truncatedDiff}\n\`\`\``,
|
|
65
|
+
};
|
|
60
66
|
}
|
|
61
67
|
export function parseCommitResponse(response) {
|
|
62
68
|
let jsonStr = response.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/services/ai/prompts.ts"],"names":[],"mappings":"AA+BA,MAAM,aAAa,GAAG,KAAK,CAAC;AAK5B,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,IAAI,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtF,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,YAAY,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,IAAI,YAAY,IAAI,WAAW,GAAG,aAAa,GAAG,GAAG,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,WAAW,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAKD,MAAM,UAAU,iBAAiB,CAAC,OAAwB;IACxD,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjD,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/services/ai/prompts.ts"],"names":[],"mappings":"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"}
|