neuro-cli 4.2.0 → 5.0.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/advisor/advisor.d.ts +0 -0
- package/dist/advisor/advisor.js +0 -0
- package/dist/agents/base.d.ts +21 -2
- package/dist/agents/base.js +174 -31
- package/dist/agents/orchestrator.d.ts +3 -1
- package/dist/agents/orchestrator.js +32 -16
- package/dist/agents/team.d.ts +0 -0
- package/dist/agents/team.js +0 -0
- package/dist/api/models.d.ts +0 -0
- package/dist/api/models.js +0 -0
- package/dist/api/ollama.d.ts +0 -0
- package/dist/api/ollama.js +0 -0
- package/dist/api/openrouter.d.ts +0 -0
- package/dist/api/openrouter.js +0 -0
- package/dist/commands/commands.d.ts +0 -0
- package/dist/commands/commands.js +0 -0
- package/dist/config/config.d.ts +0 -0
- package/dist/config/config.js +18 -18
- package/dist/context/compaction.d.ts +0 -0
- package/dist/context/compaction.js +0 -0
- package/dist/context/custom-agents.d.ts +0 -0
- package/dist/context/custom-agents.js +0 -0
- package/dist/context/custom-tools.d.ts +0 -0
- package/dist/context/custom-tools.js +0 -0
- package/dist/context/git-checkpoint.d.ts +0 -0
- package/dist/context/git-checkpoint.js +0 -0
- package/dist/context/neuro-md.d.ts +0 -0
- package/dist/context/neuro-md.js +0 -0
- package/dist/context/neuroignore.d.ts +0 -0
- package/dist/context/neuroignore.js +0 -0
- package/dist/context/repo-map.d.ts +0 -0
- package/dist/context/repo-map.js +0 -0
- package/dist/context/skill-standard.d.ts +0 -0
- package/dist/context/skill-standard.js +0 -0
- package/dist/context/skill-system.d.ts +0 -0
- package/dist/context/skill-system.js +0 -0
- package/dist/context/tree-sitter.d.ts +0 -0
- package/dist/context/tree-sitter.js +0 -0
- package/dist/core/acp.d.ts +0 -0
- package/dist/core/acp.js +0 -0
- package/dist/core/api-server.d.ts +0 -0
- package/dist/core/api-server.js +0 -0
- package/dist/core/approval.d.ts +4 -0
- package/dist/core/approval.js +46 -27
- package/dist/core/auto-compact.d.ts +0 -0
- package/dist/core/auto-compact.js +0 -0
- package/dist/core/auto-mode.d.ts +0 -0
- package/dist/core/auto-mode.js +0 -0
- package/dist/core/background-session.d.ts +0 -0
- package/dist/core/background-session.js +0 -0
- package/dist/core/cicd.d.ts +0 -0
- package/dist/core/cicd.js +0 -0
- package/dist/core/cloud-sync.d.ts +0 -0
- package/dist/core/cloud-sync.js +0 -0
- package/dist/core/code-review.d.ts +0 -0
- package/dist/core/code-review.js +0 -0
- package/dist/core/completion.d.ts +0 -0
- package/dist/core/completion.js +0 -0
- package/dist/core/context.d.ts +0 -0
- package/dist/core/context.js +0 -0
- package/dist/core/diff-preview.d.ts +0 -0
- package/dist/core/diff-preview.js +8 -16
- package/dist/core/doom-loop.d.ts +0 -0
- package/dist/core/doom-loop.js +0 -0
- package/dist/core/engine.d.ts +6 -3
- package/dist/core/engine.js +58 -56
- package/dist/core/extended-thinking.d.ts +0 -0
- package/dist/core/extended-thinking.js +0 -0
- package/dist/core/fallback.d.ts +0 -0
- package/dist/core/fallback.js +0 -0
- package/dist/core/git-worktree.d.ts +0 -0
- package/dist/core/git-worktree.js +0 -0
- package/dist/core/headless.d.ts +0 -0
- package/dist/core/headless.js +0 -0
- package/dist/core/i18n.d.ts +0 -0
- package/dist/core/i18n.js +0 -0
- package/dist/core/linting.d.ts +0 -0
- package/dist/core/linting.js +0 -0
- package/dist/core/model-router.d.ts +0 -0
- package/dist/core/model-router.js +3 -3
- package/dist/core/multi-model.d.ts +0 -0
- package/dist/core/multi-model.js +0 -0
- package/dist/core/multi-session.d.ts +0 -0
- package/dist/core/multi-session.js +0 -0
- package/dist/core/multimodal.d.ts +0 -0
- package/dist/core/multimodal.js +0 -0
- package/dist/core/observability.d.ts +0 -0
- package/dist/core/observability.js +0 -0
- package/dist/core/os-sandbox.d.ts +0 -0
- package/dist/core/os-sandbox.js +0 -0
- package/dist/core/outcome-grading.d.ts +0 -0
- package/dist/core/outcome-grading.js +0 -0
- package/dist/core/output-styles.d.ts +0 -0
- package/dist/core/output-styles.js +0 -0
- package/dist/core/parallel-agents.d.ts +0 -0
- package/dist/core/parallel-agents.js +0 -0
- package/dist/core/plugin-bundle.d.ts +0 -0
- package/dist/core/plugin-bundle.js +0 -0
- package/dist/core/plugin-sdk.d.ts +0 -0
- package/dist/core/plugin-sdk.js +0 -0
- package/dist/core/prompt-cache.d.ts +0 -0
- package/dist/core/prompt-cache.js +0 -0
- package/dist/core/sandbox.d.ts +0 -0
- package/dist/core/sandbox.js +0 -0
- package/dist/core/scheduled-tasks.d.ts +0 -0
- package/dist/core/scheduled-tasks.js +0 -0
- package/dist/core/security-scanner.d.ts +0 -0
- package/dist/core/security-scanner.js +0 -0
- package/dist/core/session.d.ts +0 -0
- package/dist/core/session.js +0 -0
- package/dist/core/shell-completion.d.ts +0 -0
- package/dist/core/shell-completion.js +0 -0
- package/dist/core/smart-monitor.d.ts +0 -0
- package/dist/core/smart-monitor.js +0 -0
- package/dist/core/spec-driven.d.ts +0 -0
- package/dist/core/spec-driven.js +0 -0
- package/dist/core/spending-warnings.d.ts +0 -0
- package/dist/core/spending-warnings.js +0 -0
- package/dist/core/sub-agent.d.ts +0 -0
- package/dist/core/sub-agent.js +0 -0
- package/dist/core/telemetry.d.ts +0 -0
- package/dist/core/telemetry.js +0 -0
- package/dist/core/terminal-ux.d.ts +0 -0
- package/dist/core/terminal-ux.js +0 -0
- package/dist/core/testing.d.ts +0 -0
- package/dist/core/testing.js +0 -0
- package/dist/core/types.d.ts +1 -1
- package/dist/core/types.js +0 -0
- package/dist/core/undo-redo.d.ts +0 -0
- package/dist/core/undo-redo.js +0 -0
- package/dist/core/updater.d.ts +0 -0
- package/dist/core/updater.js +0 -0
- package/dist/core/vim-mode.d.ts +0 -0
- package/dist/core/vim-mode.js +0 -0
- package/dist/core/voice.d.ts +0 -0
- package/dist/core/voice.js +0 -0
- package/dist/core/web-dashboard.d.ts +0 -0
- package/dist/core/web-dashboard.js +0 -0
- package/dist/hooks/hooks.d.ts +0 -0
- package/dist/hooks/hooks.js +0 -0
- package/dist/hooks/llm-evaluator.d.ts +0 -0
- package/dist/hooks/llm-evaluator.js +0 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.js +5 -4
- package/dist/lsp/lsp-manager.d.ts +0 -0
- package/dist/lsp/lsp-manager.js +0 -0
- package/dist/mcp/client.d.ts +0 -0
- package/dist/mcp/client.js +0 -0
- package/dist/mcp/mcp-apps.d.ts +0 -0
- package/dist/mcp/mcp-apps.js +0 -0
- package/dist/tools/bash.d.ts +0 -0
- package/dist/tools/bash.js +0 -0
- package/dist/tools/browser.d.ts +0 -0
- package/dist/tools/browser.js +0 -0
- package/dist/tools/extended.d.ts +0 -0
- package/dist/tools/extended.js +0 -0
- package/dist/tools/file.d.ts +0 -0
- package/dist/tools/file.js +0 -0
- package/dist/tools/github.d.ts +0 -0
- package/dist/tools/github.js +0 -0
- package/dist/tools/index.d.ts +0 -0
- package/dist/tools/index.js +0 -0
- package/dist/tools/memory.d.ts +0 -0
- package/dist/tools/memory.js +0 -0
- package/dist/tools/registry.d.ts +0 -0
- package/dist/tools/registry.js +0 -0
- package/dist/tools/web.d.ts +0 -0
- package/dist/tools/web.js +0 -0
- package/dist/ui/renderer.d.ts +11 -64
- package/dist/ui/renderer.js +172 -156
- package/dist/ui/theme.d.ts +5 -0
- package/dist/ui/theme.js +99 -45
- package/dist/utils/crosspath.d.ts +0 -0
- package/dist/utils/crosspath.js +0 -0
- package/package.json +1 -1
package/dist/config/config.js
CHANGED
|
@@ -14,82 +14,82 @@ export const DEFAULT_CONFIG = {
|
|
|
14
14
|
planner: {
|
|
15
15
|
name: 'Planner',
|
|
16
16
|
description: 'Task decomposition and planning specialist',
|
|
17
|
-
systemPrompt: `You are an expert software architect and planner. Your job is to break down complex tasks into clear, actionable steps. For each step, specify which agent should handle it and what tools they should use. Be thorough but concise.`,
|
|
17
|
+
systemPrompt: `You are an expert software architect and planner. Your job is to break down complex tasks into clear, actionable steps. For each step, specify which agent should handle it and what tools they should use. Be thorough but concise. Keep working until you have a COMPLETE plan covering every aspect of the task.`,
|
|
18
18
|
model: 'qwen/qwen3-coder:free',
|
|
19
19
|
temperature: 0.7,
|
|
20
20
|
maxTokens: 4096,
|
|
21
21
|
tools: ['read_file', 'search_files', 'list_directory'],
|
|
22
|
-
maxIterations:
|
|
22
|
+
maxIterations: 0, // 0 = no limit, run until done
|
|
23
23
|
},
|
|
24
24
|
coder: {
|
|
25
25
|
name: 'Coder',
|
|
26
26
|
description: 'Code generation and modification specialist',
|
|
27
|
-
systemPrompt: `You are an expert software developer. You write clean, efficient, well-documented code. You understand design patterns, best practices, and can work with any programming language or framework. When modifying existing code, you make minimal, targeted changes. Always consider edge cases and error handling.`,
|
|
27
|
+
systemPrompt: `You are an expert software developer. You write clean, efficient, well-documented code. You understand design patterns, best practices, and can work with any programming language or framework. When modifying existing code, you make minimal, targeted changes. Always consider edge cases and error handling. IMPORTANT: You MUST keep working until the entire task is COMPLETE — do not stop after creating only some files. Create ALL necessary files, update ALL imports, and verify your work.`,
|
|
28
28
|
model: 'qwen/qwen3-coder:free',
|
|
29
29
|
temperature: 0.4,
|
|
30
30
|
maxTokens: 16384,
|
|
31
31
|
tools: ['read_file', 'write_file', 'edit_file', 'search_files', 'list_directory', 'run_command', 'apply_diff'],
|
|
32
|
-
maxIterations:
|
|
32
|
+
maxIterations: 0, // 0 = no limit, run until done
|
|
33
33
|
},
|
|
34
34
|
reviewer: {
|
|
35
35
|
name: 'Reviewer',
|
|
36
36
|
description: 'Code review and quality assurance specialist',
|
|
37
|
-
systemPrompt: `You are an expert code reviewer. You analyze code for bugs, security vulnerabilities, performance issues, and adherence to best practices. You provide specific, actionable feedback with line references. You categorize issues by severity (critical, warning, suggestion). You also check for test coverage and documentation.`,
|
|
37
|
+
systemPrompt: `You are an expert code reviewer. You analyze code for bugs, security vulnerabilities, performance issues, and adherence to best practices. You provide specific, actionable feedback with line references. You categorize issues by severity (critical, warning, suggestion). You also check for test coverage and documentation. Keep reviewing until you have checked ALL relevant files.`,
|
|
38
38
|
model: 'nvidia/nemotron-3-super-120b-a12b:free',
|
|
39
39
|
temperature: 0.3,
|
|
40
40
|
maxTokens: 8192,
|
|
41
41
|
tools: ['read_file', 'search_files', 'list_directory'],
|
|
42
|
-
maxIterations:
|
|
42
|
+
maxIterations: 0,
|
|
43
43
|
},
|
|
44
44
|
researcher: {
|
|
45
45
|
name: 'Researcher',
|
|
46
46
|
description: 'Information gathering and analysis specialist',
|
|
47
|
-
systemPrompt: `You are an expert researcher and analyst. You gather information from files, web resources, and codebases. You synthesize findings into clear, structured reports. You can explain complex technical concepts and find relevant examples or documentation.`,
|
|
47
|
+
systemPrompt: `You are an expert researcher and analyst. You gather information from files, web resources, and codebases. You synthesize findings into clear, structured reports. You can explain complex technical concepts and find relevant examples or documentation. Keep researching until you have a COMPLETE picture.`,
|
|
48
48
|
model: 'google/gemma-4-31b-it:free',
|
|
49
49
|
temperature: 0.5,
|
|
50
50
|
maxTokens: 8192,
|
|
51
51
|
tools: ['read_file', 'search_files', 'list_directory', 'web_search', 'web_fetch'],
|
|
52
|
-
maxIterations:
|
|
52
|
+
maxIterations: 0,
|
|
53
53
|
},
|
|
54
54
|
tester: {
|
|
55
55
|
name: 'Tester',
|
|
56
56
|
description: 'Test generation and execution specialist',
|
|
57
|
-
systemPrompt: `You are an expert QA engineer. You write comprehensive test suites covering unit tests, integration tests, and edge cases. You run tests and analyze failures to identify root causes. You ensure code meets quality standards before it's considered complete.`,
|
|
57
|
+
systemPrompt: `You are an expert QA engineer. You write comprehensive test suites covering unit tests, integration tests, and edge cases. You run tests and analyze failures to identify root causes. You ensure code meets quality standards before it's considered complete. Keep testing until ALL tests pass.`,
|
|
58
58
|
model: 'qwen/qwen3-coder:free',
|
|
59
59
|
temperature: 0.3,
|
|
60
60
|
maxTokens: 8192,
|
|
61
61
|
tools: ['read_file', 'write_file', 'search_files', 'run_command', 'list_directory'],
|
|
62
|
-
maxIterations:
|
|
62
|
+
maxIterations: 0,
|
|
63
63
|
},
|
|
64
64
|
debugger: {
|
|
65
65
|
name: 'Debugger',
|
|
66
66
|
description: 'Bug investigation and fixing specialist',
|
|
67
|
-
systemPrompt: `You are an expert debugger. You systematically investigate bugs by reading code, running diagnostic commands, analyzing error messages and stack traces. You identify root causes and implement targeted fixes. You verify fixes work before reporting completion.`,
|
|
67
|
+
systemPrompt: `You are an expert debugger. You systematically investigate bugs by reading code, running diagnostic commands, analyzing error messages and stack traces. You identify root causes and implement targeted fixes. You verify fixes work before reporting completion. Keep debugging until the bug is COMPLETELY fixed and verified.`,
|
|
68
68
|
model: 'qwen/qwen3-coder:free',
|
|
69
69
|
temperature: 0.2,
|
|
70
70
|
maxTokens: 8192,
|
|
71
71
|
tools: ['read_file', 'edit_file', 'search_files', 'run_command', 'list_directory', 'apply_diff'],
|
|
72
|
-
maxIterations:
|
|
72
|
+
maxIterations: 0,
|
|
73
73
|
},
|
|
74
74
|
architect: {
|
|
75
75
|
name: 'Architect',
|
|
76
76
|
description: 'System design and architecture specialist',
|
|
77
|
-
systemPrompt: `You are an expert software architect. You design scalable, maintainable system architectures. You make technology stack decisions, define component boundaries, and establish coding standards. You create detailed technical specifications that other agents can implement.`,
|
|
77
|
+
systemPrompt: `You are an expert software architect. You design scalable, maintainable system architectures. You make technology stack decisions, define component boundaries, and establish coding standards. You create detailed technical specifications that other agents can implement. Keep designing until the architecture is COMPLETE and all components are specified.`,
|
|
78
78
|
model: 'nvidia/nemotron-3-ultra-550b-a55b:free',
|
|
79
79
|
temperature: 0.7,
|
|
80
80
|
maxTokens: 8192,
|
|
81
81
|
tools: ['read_file', 'search_files', 'list_directory'],
|
|
82
|
-
maxIterations:
|
|
82
|
+
maxIterations: 0,
|
|
83
83
|
},
|
|
84
84
|
devops: {
|
|
85
85
|
name: 'DevOps',
|
|
86
86
|
description: 'Deployment and infrastructure specialist',
|
|
87
|
-
systemPrompt: `You are an expert DevOps engineer. You handle CI/CD pipelines, Docker configurations, cloud deployments, and infrastructure as code. You optimize build processes and ensure reliable deployments.`,
|
|
87
|
+
systemPrompt: `You are an expert DevOps engineer. You handle CI/CD pipelines, Docker configurations, cloud deployments, and infrastructure as code. You optimize build processes and ensure reliable deployments. Keep working until the deployment is FULLY configured and verified.`,
|
|
88
88
|
model: 'cohere/north-mini-code:free',
|
|
89
89
|
temperature: 0.3,
|
|
90
90
|
maxTokens: 8192,
|
|
91
91
|
tools: ['read_file', 'write_file', 'edit_file', 'run_command', 'search_files', 'list_directory'],
|
|
92
|
-
maxIterations:
|
|
92
|
+
maxIterations: 0,
|
|
93
93
|
},
|
|
94
94
|
},
|
|
95
95
|
tools: {
|
|
@@ -106,7 +106,7 @@ export const DEFAULT_CONFIG = {
|
|
|
106
106
|
maxHistory: 100,
|
|
107
107
|
},
|
|
108
108
|
ui: {
|
|
109
|
-
theme: '
|
|
109
|
+
theme: 'claude',
|
|
110
110
|
showTokenCount: true,
|
|
111
111
|
showCost: true,
|
|
112
112
|
streaming: true,
|
|
@@ -208,7 +208,7 @@ export const DEFAULT_CONFIG = {
|
|
|
208
208
|
autoMode: {
|
|
209
209
|
enabled: false,
|
|
210
210
|
safetyLevel: 'conservative',
|
|
211
|
-
maxIterations:
|
|
211
|
+
maxIterations: 0, // 0 = no limit, run until done (Claude Code style)
|
|
212
212
|
maxCost: 0,
|
|
213
213
|
maxTimeMs: 0,
|
|
214
214
|
blockedCommands: ['rm -rf /', 'mkfs', 'dd if=/dev/zero'],
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/context/neuro-md.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/context/repo-map.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/core/acp.d.ts
CHANGED
|
File without changes
|
package/dist/core/acp.js
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/core/api-server.js
CHANGED
|
File without changes
|
package/dist/core/approval.d.ts
CHANGED
|
@@ -64,6 +64,10 @@ export declare class ApprovalSystem {
|
|
|
64
64
|
requestBatchApproval(toolName: string, args: Record<string, unknown>, risk: 'low' | 'medium' | 'high', description?: string): Promise<ApprovalResult>;
|
|
65
65
|
private processBatch;
|
|
66
66
|
private isBlacklisted;
|
|
67
|
+
/**
|
|
68
|
+
* Format tool arguments as a compact one-liner for Claude Code-style display
|
|
69
|
+
*/
|
|
70
|
+
private formatCompactArgs;
|
|
67
71
|
private isWhitelisted;
|
|
68
72
|
private getPattern;
|
|
69
73
|
private getAlwaysKey;
|
package/dist/core/approval.js
CHANGED
|
@@ -171,27 +171,20 @@ export class ApprovalSystem {
|
|
|
171
171
|
// --- Interactive Prompt ---
|
|
172
172
|
async promptUser(toolName, args, risk, description) {
|
|
173
173
|
const riskColors = { low: chalk.green, medium: chalk.yellow, high: chalk.red };
|
|
174
|
-
const
|
|
174
|
+
const riskLabels = { low: 'low', medium: 'med', high: 'high' };
|
|
175
|
+
// Claude Code style: compact, minimal approval prompt
|
|
175
176
|
console.log();
|
|
176
|
-
console.log(` ${
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
177
|
+
console.log(` ${chalk.dim('┌─')} ${chalk.bold(toolName)} ${riskColors[risk](`[${riskLabels[risk]}]`)}`);
|
|
178
|
+
// Show key argument on one line
|
|
179
|
+
const keyArg = this.formatCompactArgs(toolName, args);
|
|
180
|
+
if (keyArg) {
|
|
181
|
+
console.log(` ${chalk.dim('│')} ${chalk.gray(keyArg)}`);
|
|
180
182
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
console.log(` ${chalk.cyan('Arguments:')}`);
|
|
184
|
-
for (const [key, value] of argEntries.slice(0, 5)) {
|
|
185
|
-
const val = typeof value === 'string' && value.length > 80 ? value.slice(0, 80) + '...' : String(value);
|
|
186
|
-
console.log(` ${chalk.gray(key)}: ${chalk.white(val)}`);
|
|
187
|
-
}
|
|
188
|
-
if (argEntries.length > 5) {
|
|
189
|
-
console.log(` ${chalk.gray(`...and ${argEntries.length - 5} more`)}`);
|
|
190
|
-
}
|
|
183
|
+
if (description) {
|
|
184
|
+
console.log(` ${chalk.dim('│')} ${chalk.gray(description.slice(0, 100))}`);
|
|
191
185
|
}
|
|
192
|
-
console.log();
|
|
193
|
-
|
|
194
|
-
const answer = await this.readline(`${riskIcons[risk]} Allow ${toolName}? [y/n/a/A/e/d]: `);
|
|
186
|
+
console.log(` ${chalk.dim('└─')} ${chalk.gray('y')}yes ${chalk.gray('n')}no ${chalk.gray('a')}session ${chalk.gray('A')}always ${chalk.gray('e')}edit ${chalk.gray('d')}diff`);
|
|
187
|
+
const answer = await this.readline(` ${riskColors[risk]('?')} Allow? `);
|
|
195
188
|
const startTime = Date.now();
|
|
196
189
|
switch (answer.toLowerCase().trim()) {
|
|
197
190
|
case 'y':
|
|
@@ -277,19 +270,18 @@ export class ApprovalSystem {
|
|
|
277
270
|
groups.get(item.toolName).push(item);
|
|
278
271
|
}
|
|
279
272
|
console.log();
|
|
280
|
-
console.log(chalk.bold
|
|
273
|
+
console.log(` ${chalk.dim('┌─')} ${chalk.bold(`Batch (${batch.length} ops)`)}`);
|
|
281
274
|
for (const [toolName, items] of groups) {
|
|
282
|
-
console.log(` ${chalk.
|
|
283
|
-
for (const item of items.slice(0,
|
|
275
|
+
console.log(` ${chalk.dim('│')} ${chalk.bold(toolName)} ${chalk.gray(`${items.length} ops`)}`);
|
|
276
|
+
for (const item of items.slice(0, 2)) {
|
|
284
277
|
const preview = item.args.path || item.args.command || item.description || '';
|
|
285
|
-
console.log(`
|
|
278
|
+
console.log(` ${chalk.dim('│')} ${chalk.gray(String(preview).slice(0, 60))}`);
|
|
286
279
|
}
|
|
287
|
-
if (items.length >
|
|
288
|
-
console.log(`
|
|
280
|
+
if (items.length > 2)
|
|
281
|
+
console.log(` ${chalk.dim('│')} ${chalk.gray(`+${items.length - 2} more`)}`);
|
|
289
282
|
}
|
|
290
|
-
console.log();
|
|
291
|
-
|
|
292
|
-
const answer = await this.readline(' Batch approve? [y/n/r]: ');
|
|
283
|
+
console.log(` ${chalk.dim('└─')} ${chalk.gray('y')}all ${chalk.gray('n')}none ${chalk.gray('r')}review`);
|
|
284
|
+
const answer = await this.readline(` ${chalk.yellow('?')} Batch? `);
|
|
293
285
|
switch (answer.toLowerCase().trim()) {
|
|
294
286
|
case 'y':
|
|
295
287
|
case 'yes':
|
|
@@ -314,6 +306,33 @@ export class ApprovalSystem {
|
|
|
314
306
|
}
|
|
315
307
|
// --- Helpers ---
|
|
316
308
|
isBlacklisted(toolName) { return this.blacklist.has(toolName); }
|
|
309
|
+
/**
|
|
310
|
+
* Format tool arguments as a compact one-liner for Claude Code-style display
|
|
311
|
+
*/
|
|
312
|
+
formatCompactArgs(toolName, args) {
|
|
313
|
+
switch (toolName) {
|
|
314
|
+
case 'read_file':
|
|
315
|
+
case 'edit_file':
|
|
316
|
+
case 'write_file':
|
|
317
|
+
case 'delete_file':
|
|
318
|
+
case 'apply_diff':
|
|
319
|
+
return String(args.path || '');
|
|
320
|
+
case 'run_command':
|
|
321
|
+
return String(args.command || '').slice(0, 80);
|
|
322
|
+
case 'search_files':
|
|
323
|
+
return `"${args.query || ''}" in ${args.path || '.'}`;
|
|
324
|
+
case 'list_directory':
|
|
325
|
+
return String(args.path || args.directory || '.');
|
|
326
|
+
case 'web_search':
|
|
327
|
+
return `"${args.query || ''}"`;
|
|
328
|
+
case 'web_fetch':
|
|
329
|
+
return String(args.url || '').slice(0, 60);
|
|
330
|
+
default: {
|
|
331
|
+
const entries = Object.entries(args).slice(0, 2);
|
|
332
|
+
return entries.map(([k, v]) => `${k}=${typeof v === 'string' ? v.slice(0, 40) : JSON.stringify(v)}`).join(' ');
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
317
336
|
isWhitelisted(toolName) {
|
|
318
337
|
if (this.whitelist.has(toolName))
|
|
319
338
|
return true;
|
|
File without changes
|
|
File without changes
|
package/dist/core/auto-mode.d.ts
CHANGED
|
File without changes
|
package/dist/core/auto-mode.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/core/cicd.d.ts
CHANGED
|
File without changes
|
package/dist/core/cicd.js
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/core/cloud-sync.js
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/core/code-review.js
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/core/completion.js
CHANGED
|
File without changes
|
package/dist/core/context.d.ts
CHANGED
|
File without changes
|
package/dist/core/context.js
CHANGED
|
File without changes
|
|
File without changes
|
|
@@ -65,10 +65,9 @@ export class DiffPreview {
|
|
|
65
65
|
*/
|
|
66
66
|
static renderDiff(diff, contextLines = 3) {
|
|
67
67
|
const { filePath, added, removed, lines } = diff;
|
|
68
|
+
// Claude Code style: clean diff header with +/-
|
|
68
69
|
console.log();
|
|
69
|
-
console.log(` ${chalk.
|
|
70
|
-
console.log(` ${chalk.white(filePath)} ${chalk.green(`+${added}`)} ${chalk.red(`-${removed}`)}`);
|
|
71
|
-
console.log(` ${chalk.gray('─'.repeat(50))}`);
|
|
70
|
+
console.log(` ${chalk.dim('───')} ${chalk.bold(filePath)} ${chalk.green(`+${added}`)} ${chalk.red(`-${removed}`)}`);
|
|
72
71
|
let inChange = false;
|
|
73
72
|
let contextCount = 0;
|
|
74
73
|
for (const line of lines) {
|
|
@@ -86,43 +85,36 @@ export class DiffPreview {
|
|
|
86
85
|
case 'context':
|
|
87
86
|
contextCount++;
|
|
88
87
|
if (inChange) {
|
|
89
|
-
// Show a few context lines after a change
|
|
90
88
|
if (contextCount <= contextLines) {
|
|
91
|
-
console.log(` ${chalk.
|
|
89
|
+
console.log(` ${chalk.dim(' ')} ${chalk.dim(line.content)}`);
|
|
92
90
|
}
|
|
93
91
|
else {
|
|
94
92
|
inChange = false;
|
|
95
|
-
console.log(` ${chalk.
|
|
93
|
+
console.log(` ${chalk.dim(' ...')}`);
|
|
96
94
|
}
|
|
97
95
|
}
|
|
98
96
|
else if (contextCount <= 1) {
|
|
99
|
-
|
|
100
|
-
console.log(` ${chalk.gray(' ')} ${chalk.gray(line.content)}`);
|
|
97
|
+
console.log(` ${chalk.dim(' ')} ${chalk.dim(line.content)}`);
|
|
101
98
|
}
|
|
102
99
|
break;
|
|
103
100
|
}
|
|
104
101
|
}
|
|
105
|
-
console.log(` ${chalk.
|
|
106
|
-
console.log(` ${chalk.green(`+${added} additions`)} ${chalk.red(`-${removed} deletions`)}`);
|
|
107
|
-
console.log();
|
|
102
|
+
console.log(` ${chalk.dim(`${chalk.green(`+${added}`)} ${chalk.red(`-${removed}`)}`)}`);
|
|
108
103
|
}
|
|
109
104
|
/**
|
|
110
105
|
* Render a compact summary of multiple diffs
|
|
111
106
|
*/
|
|
112
107
|
static renderSummary(diffs) {
|
|
113
108
|
console.log();
|
|
114
|
-
console.log(` ${chalk.bold.cyan('━━━ Changes Summary ━━━')}`);
|
|
115
109
|
for (const diff of diffs) {
|
|
116
110
|
const statusLabel = diff.added > 0 && diff.removed === 0 ? chalk.green('created') :
|
|
117
111
|
diff.added === 0 && diff.removed > 0 ? chalk.red('deleted') :
|
|
118
112
|
chalk.yellow('modified');
|
|
119
|
-
console.log(` ${statusLabel} ${diff.filePath
|
|
113
|
+
console.log(` ${statusLabel} ${diff.filePath} ${chalk.green(`+${diff.added}`)} ${chalk.red(`-${diff.removed}`)}`);
|
|
120
114
|
}
|
|
121
115
|
const totalAdded = diffs.reduce((s, d) => s + d.added, 0);
|
|
122
116
|
const totalRemoved = diffs.reduce((s, d) => s + d.removed, 0);
|
|
123
|
-
console.log(` ${chalk.
|
|
124
|
-
console.log(` ${chalk.bold('Total:')} ${chalk.green(`+${totalAdded}`)} ${chalk.red(`-${totalRemoved}`)}`);
|
|
125
|
-
console.log();
|
|
117
|
+
console.log(` ${chalk.dim(`${chalk.green(`+${totalAdded}`)} ${chalk.red(`-${totalRemoved}`)}`)}`);
|
|
126
118
|
}
|
|
127
119
|
/**
|
|
128
120
|
* Ask user to confirm diff changes
|
package/dist/core/doom-loop.d.ts
CHANGED
|
File without changes
|
package/dist/core/doom-loop.js
CHANGED
|
File without changes
|
package/dist/core/engine.d.ts
CHANGED
|
@@ -137,7 +137,9 @@ export declare class NeuroEngine {
|
|
|
137
137
|
*/
|
|
138
138
|
private initializeAgents;
|
|
139
139
|
/**
|
|
140
|
-
* Process a user message
|
|
140
|
+
* Process a user message — Claude Code style
|
|
141
|
+
* Every task is sent to the best agent which runs until completion.
|
|
142
|
+
* No arbitrary early termination — the agent keeps working until done.
|
|
141
143
|
*/
|
|
142
144
|
processMessage(message: string, mode?: 'auto' | 'agent' | 'direct', targetAgent?: string): Promise<{
|
|
143
145
|
content: string;
|
|
@@ -153,8 +155,9 @@ export declare class NeuroEngine {
|
|
|
153
155
|
*/
|
|
154
156
|
private handleApproval;
|
|
155
157
|
/**
|
|
156
|
-
* Assess task complexity
|
|
157
|
-
*
|
|
158
|
+
* Assess task complexity — delegates to ModelRouter
|
|
159
|
+
* Note: complexity no longer determines execution mode (all tasks run until complete)
|
|
160
|
+
* but is still used for model selection
|
|
158
161
|
*/
|
|
159
162
|
private assessComplexity;
|
|
160
163
|
/**
|