neuro-cli 4.1.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.
Files changed (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +510 -0
  3. package/dist/advisor/advisor.d.ts +50 -0
  4. package/dist/advisor/advisor.js +178 -0
  5. package/dist/agents/base.d.ts +62 -0
  6. package/dist/agents/base.js +215 -0
  7. package/dist/agents/orchestrator.d.ts +46 -0
  8. package/dist/agents/orchestrator.js +192 -0
  9. package/dist/agents/team.d.ts +51 -0
  10. package/dist/agents/team.js +210 -0
  11. package/dist/api/models.d.ts +23 -0
  12. package/dist/api/models.js +514 -0
  13. package/dist/api/ollama.d.ts +153 -0
  14. package/dist/api/ollama.js +751 -0
  15. package/dist/api/openrouter.d.ts +55 -0
  16. package/dist/api/openrouter.js +223 -0
  17. package/dist/commands/commands.d.ts +43 -0
  18. package/dist/commands/commands.js +308 -0
  19. package/dist/config/config.d.ts +8 -0
  20. package/dist/config/config.js +311 -0
  21. package/dist/context/compaction.d.ts +54 -0
  22. package/dist/context/compaction.js +251 -0
  23. package/dist/context/custom-agents.d.ts +107 -0
  24. package/dist/context/custom-agents.js +397 -0
  25. package/dist/context/custom-tools.d.ts +120 -0
  26. package/dist/context/custom-tools.js +564 -0
  27. package/dist/context/git-checkpoint.d.ts +52 -0
  28. package/dist/context/git-checkpoint.js +240 -0
  29. package/dist/context/neuro-md.d.ts +48 -0
  30. package/dist/context/neuro-md.js +202 -0
  31. package/dist/context/neuroignore.d.ts +102 -0
  32. package/dist/context/neuroignore.js +441 -0
  33. package/dist/context/repo-map.d.ts +38 -0
  34. package/dist/context/repo-map.js +220 -0
  35. package/dist/context/skill-standard.d.ts +262 -0
  36. package/dist/context/skill-standard.js +1156 -0
  37. package/dist/context/skill-system.d.ts +75 -0
  38. package/dist/context/skill-system.js +578 -0
  39. package/dist/context/tree-sitter.d.ts +99 -0
  40. package/dist/context/tree-sitter.js +1956 -0
  41. package/dist/core/acp.d.ts +325 -0
  42. package/dist/core/acp.js +1498 -0
  43. package/dist/core/api-server.d.ts +143 -0
  44. package/dist/core/api-server.js +550 -0
  45. package/dist/core/approval.d.ts +81 -0
  46. package/dist/core/approval.js +432 -0
  47. package/dist/core/auto-compact.d.ts +127 -0
  48. package/dist/core/auto-compact.js +436 -0
  49. package/dist/core/auto-mode.d.ts +232 -0
  50. package/dist/core/auto-mode.js +831 -0
  51. package/dist/core/background-session.d.ts +166 -0
  52. package/dist/core/background-session.js +696 -0
  53. package/dist/core/cicd.d.ts +257 -0
  54. package/dist/core/cicd.js +1443 -0
  55. package/dist/core/cloud-sync.d.ts +156 -0
  56. package/dist/core/cloud-sync.js +582 -0
  57. package/dist/core/code-review.d.ts +132 -0
  58. package/dist/core/code-review.js +1191 -0
  59. package/dist/core/completion.d.ts +49 -0
  60. package/dist/core/completion.js +384 -0
  61. package/dist/core/context.d.ts +38 -0
  62. package/dist/core/context.js +144 -0
  63. package/dist/core/diff-preview.d.ts +35 -0
  64. package/dist/core/diff-preview.js +173 -0
  65. package/dist/core/doom-loop.d.ts +51 -0
  66. package/dist/core/doom-loop.js +179 -0
  67. package/dist/core/engine.d.ts +183 -0
  68. package/dist/core/engine.js +942 -0
  69. package/dist/core/extended-thinking.d.ts +103 -0
  70. package/dist/core/extended-thinking.js +269 -0
  71. package/dist/core/fallback.d.ts +54 -0
  72. package/dist/core/fallback.js +104 -0
  73. package/dist/core/git-worktree.d.ts +139 -0
  74. package/dist/core/git-worktree.js +614 -0
  75. package/dist/core/headless.d.ts +30 -0
  76. package/dist/core/headless.js +101 -0
  77. package/dist/core/i18n.d.ts +83 -0
  78. package/dist/core/i18n.js +739 -0
  79. package/dist/core/linting.d.ts +129 -0
  80. package/dist/core/linting.js +699 -0
  81. package/dist/core/model-router.d.ts +109 -0
  82. package/dist/core/model-router.js +581 -0
  83. package/dist/core/multi-model.d.ts +243 -0
  84. package/dist/core/multi-model.js +1099 -0
  85. package/dist/core/multi-session.d.ts +144 -0
  86. package/dist/core/multi-session.js +442 -0
  87. package/dist/core/multimodal.d.ts +125 -0
  88. package/dist/core/multimodal.js +286 -0
  89. package/dist/core/observability.d.ts +93 -0
  90. package/dist/core/observability.js +737 -0
  91. package/dist/core/os-sandbox.d.ts +122 -0
  92. package/dist/core/os-sandbox.js +1193 -0
  93. package/dist/core/outcome-grading.d.ts +228 -0
  94. package/dist/core/outcome-grading.js +1123 -0
  95. package/dist/core/output-styles.d.ts +57 -0
  96. package/dist/core/output-styles.js +382 -0
  97. package/dist/core/parallel-agents.d.ts +183 -0
  98. package/dist/core/parallel-agents.js +563 -0
  99. package/dist/core/plugin-bundle.d.ts +236 -0
  100. package/dist/core/plugin-bundle.js +887 -0
  101. package/dist/core/plugin-sdk.d.ts +139 -0
  102. package/dist/core/plugin-sdk.js +273 -0
  103. package/dist/core/prompt-cache.d.ts +163 -0
  104. package/dist/core/prompt-cache.js +599 -0
  105. package/dist/core/sandbox.d.ts +127 -0
  106. package/dist/core/sandbox.js +369 -0
  107. package/dist/core/scheduled-tasks.d.ts +151 -0
  108. package/dist/core/scheduled-tasks.js +502 -0
  109. package/dist/core/security-scanner.d.ts +160 -0
  110. package/dist/core/security-scanner.js +1494 -0
  111. package/dist/core/session.d.ts +83 -0
  112. package/dist/core/session.js +269 -0
  113. package/dist/core/shell-completion.d.ts +51 -0
  114. package/dist/core/shell-completion.js +674 -0
  115. package/dist/core/smart-monitor.d.ts +146 -0
  116. package/dist/core/smart-monitor.js +1199 -0
  117. package/dist/core/spec-driven.d.ts +233 -0
  118. package/dist/core/spec-driven.js +1485 -0
  119. package/dist/core/spending-warnings.d.ts +123 -0
  120. package/dist/core/spending-warnings.js +456 -0
  121. package/dist/core/sub-agent.d.ts +298 -0
  122. package/dist/core/sub-agent.js +1023 -0
  123. package/dist/core/telemetry.d.ts +157 -0
  124. package/dist/core/telemetry.js +412 -0
  125. package/dist/core/terminal-ux.d.ts +134 -0
  126. package/dist/core/terminal-ux.js +649 -0
  127. package/dist/core/testing.d.ts +146 -0
  128. package/dist/core/testing.js +1200 -0
  129. package/dist/core/types.d.ts +439 -0
  130. package/dist/core/types.js +6 -0
  131. package/dist/core/undo-redo.d.ts +112 -0
  132. package/dist/core/undo-redo.js +290 -0
  133. package/dist/core/updater.d.ts +159 -0
  134. package/dist/core/updater.js +608 -0
  135. package/dist/core/vim-mode.d.ts +151 -0
  136. package/dist/core/vim-mode.js +771 -0
  137. package/dist/core/voice.d.ts +137 -0
  138. package/dist/core/voice.js +538 -0
  139. package/dist/core/web-dashboard.d.ts +109 -0
  140. package/dist/core/web-dashboard.js +484 -0
  141. package/dist/hooks/hooks.d.ts +74 -0
  142. package/dist/hooks/hooks.js +160 -0
  143. package/dist/hooks/llm-evaluator.d.ts +165 -0
  144. package/dist/hooks/llm-evaluator.js +560 -0
  145. package/dist/index.d.ts +3 -0
  146. package/dist/index.js +1186 -0
  147. package/dist/lsp/lsp-manager.d.ts +63 -0
  148. package/dist/lsp/lsp-manager.js +351 -0
  149. package/dist/mcp/client.d.ts +133 -0
  150. package/dist/mcp/client.js +684 -0
  151. package/dist/mcp/mcp-apps.d.ts +70 -0
  152. package/dist/mcp/mcp-apps.js +1007 -0
  153. package/dist/tools/bash.d.ts +5 -0
  154. package/dist/tools/bash.js +195 -0
  155. package/dist/tools/browser.d.ts +92 -0
  156. package/dist/tools/browser.js +1570 -0
  157. package/dist/tools/extended.d.ts +6 -0
  158. package/dist/tools/extended.js +191 -0
  159. package/dist/tools/file.d.ts +10 -0
  160. package/dist/tools/file.js +382 -0
  161. package/dist/tools/github.d.ts +389 -0
  162. package/dist/tools/github.js +759 -0
  163. package/dist/tools/index.d.ts +9 -0
  164. package/dist/tools/index.js +40 -0
  165. package/dist/tools/memory.d.ts +6 -0
  166. package/dist/tools/memory.js +197 -0
  167. package/dist/tools/registry.d.ts +29 -0
  168. package/dist/tools/registry.js +64 -0
  169. package/dist/tools/web.d.ts +6 -0
  170. package/dist/tools/web.js +150 -0
  171. package/dist/ui/renderer.d.ts +97 -0
  172. package/dist/ui/renderer.js +279 -0
  173. package/dist/ui/theme.d.ts +27 -0
  174. package/dist/ui/theme.js +106 -0
  175. package/package.json +83 -0
@@ -0,0 +1,279 @@
1
+ // ============================================================
2
+ // NeuroCLI - Terminal UI Renderer
3
+ // Beautiful terminal output with streaming support
4
+ // ============================================================
5
+ import { getTheme } from './theme.js';
6
+ import { MODELS } from '../api/models.js';
7
+ export class TerminalUI {
8
+ theme;
9
+ showTokens;
10
+ showCost;
11
+ constructor(themeName = 'dracula', showTokens = true, showCost = true) {
12
+ this.theme = getTheme(themeName);
13
+ this.showTokens = showTokens;
14
+ this.showCost = showCost;
15
+ }
16
+ /**
17
+ * Print the banner / splash screen
18
+ */
19
+ banner() {
20
+ const banner = `
21
+ ${this.theme.primary(' ╔══════════════════════════════════════════╗')}
22
+ ${this.theme.primary(' ║')} ${this.theme.accent.bold('🧠 NeuroCLI')} ${this.theme.muted('v1.0.0')} ${this.theme.primary('║')}
23
+ ${this.theme.primary(' ║')} ${this.theme.secondary('Advanced AI Terminal Coding Assistant')} ${this.theme.primary('║')}
24
+ ${this.theme.primary(' ╠══════════════════════════════════════════╣')}
25
+ ${this.theme.primary(' ║')} ${this.theme.muted('OpenRouter')} ${this.theme.success('●')} ${this.theme.muted('Multi-Agent')} ${this.theme.success('●')} ${this.theme.muted('Streaming')} ${this.theme.success('●')} ${this.theme.primary('║')}
26
+ ${this.theme.primary(' ╚══════════════════════════════════════════╝')}
27
+ `;
28
+ console.log(banner);
29
+ }
30
+ /**
31
+ * Print user message
32
+ */
33
+ userMessage(content) {
34
+ console.log(`\n${this.theme.user('❯')} ${this.theme.user.bold('You')}`);
35
+ console.log(` ${content}\n`);
36
+ }
37
+ /**
38
+ * Print assistant message with markdown-like formatting
39
+ */
40
+ assistantMessage(content) {
41
+ console.log(`${this.theme.accent('◈')} ${this.theme.bold('Neuro')}`);
42
+ // Simple markdown rendering
43
+ const lines = content.split('\n');
44
+ for (const line of lines) {
45
+ if (line.startsWith('```')) {
46
+ continue; // Code block markers handled separately
47
+ }
48
+ else if (line.startsWith('# ')) {
49
+ console.log(` ${this.theme.bold(line)}`);
50
+ }
51
+ else if (line.startsWith('## ')) {
52
+ console.log(` ${this.theme.primary(line)}`);
53
+ }
54
+ else if (line.startsWith('### ')) {
55
+ console.log(` ${this.theme.accent(line)}`);
56
+ }
57
+ else if (line.startsWith('- ') || line.startsWith('* ')) {
58
+ console.log(` ${this.theme.muted('•')} ${line.slice(2)}`);
59
+ }
60
+ else if (line.startsWith('> ')) {
61
+ console.log(` ${this.theme.thinking(line)}`);
62
+ }
63
+ else {
64
+ console.log(` ${line}`);
65
+ }
66
+ }
67
+ console.log();
68
+ }
69
+ /**
70
+ * Print streaming token
71
+ */
72
+ streamingToken(token) {
73
+ process.stdout.write(token);
74
+ }
75
+ /**
76
+ * Start streaming block
77
+ */
78
+ startStreaming() {
79
+ process.stdout.write(`${this.theme.accent('◈')} ${this.theme.bold('Neuro')} `);
80
+ }
81
+ /**
82
+ * End streaming block
83
+ */
84
+ endStreaming() {
85
+ console.log('\n');
86
+ }
87
+ /**
88
+ * Print thinking indicator
89
+ */
90
+ thinking(message) {
91
+ console.log(`${this.theme.thinking(' ○')} ${this.theme.thinking(message)}`);
92
+ }
93
+ /**
94
+ * Print tool call
95
+ */
96
+ toolCall(name, args) {
97
+ const argsStr = Object.entries(args)
98
+ .map(([k, v]) => {
99
+ const val = typeof v === 'string' && v.length > 60
100
+ ? `"${v.slice(0, 60)}..."`
101
+ : JSON.stringify(v);
102
+ return `${this.theme.muted(k)}=${val}`;
103
+ })
104
+ .join(' ');
105
+ console.log(` ${this.theme.tool('⚡')} ${this.theme.tool.bold(name)} ${this.theme.muted(argsStr)}`);
106
+ }
107
+ /**
108
+ * Print tool result
109
+ */
110
+ toolResult(name, result, isError) {
111
+ if (isError) {
112
+ console.log(` ${this.theme.error('✗')} ${this.theme.error(name)}: ${this.theme.error(result.slice(0, 200))}`);
113
+ }
114
+ else {
115
+ const preview = result.length > 200 ? result.slice(0, 200) + '...' : result;
116
+ console.log(` ${this.theme.success('✓')} ${this.theme.muted(name)}: ${this.theme.muted(preview)}`);
117
+ }
118
+ }
119
+ /**
120
+ * Print approval request
121
+ */
122
+ approvalRequest(toolName, args, risk) {
123
+ const riskColors = {
124
+ low: this.theme.success,
125
+ medium: this.theme.warning,
126
+ high: this.theme.error,
127
+ };
128
+ const riskIcons = { low: '🟢', medium: '🟡', high: '🔴' };
129
+ console.log(`\n ${riskIcons[risk]} ${riskColors[risk].bold(`Approval needed [${risk} risk]`)}`);
130
+ console.log(` Tool: ${this.theme.tool(toolName)}`);
131
+ console.log(` Args: ${this.theme.muted(JSON.stringify(args, null, 2).slice(0, 300))}`);
132
+ return true;
133
+ }
134
+ /**
135
+ * Print token usage
136
+ */
137
+ tokenUsage(usage, modelId) {
138
+ if (!this.showTokens && !this.showCost)
139
+ return;
140
+ const parts = [];
141
+ if (this.showTokens) {
142
+ parts.push(`in: ${usage.inputTokens.toLocaleString()}`);
143
+ parts.push(`out: ${usage.outputTokens.toLocaleString()}`);
144
+ }
145
+ if (this.showCost) {
146
+ parts.push(`cost: $${usage.cost.toFixed(4)}`);
147
+ }
148
+ const model = MODELS[modelId];
149
+ const modelName = model?.name || modelId;
150
+ console.log(` ${this.theme.muted(`📊 ${modelName} | ${parts.join(' | ')}`)}`);
151
+ }
152
+ /**
153
+ * Print session stats
154
+ */
155
+ sessionStats(totalInput, totalOutput, totalCost) {
156
+ console.log(`\n ${this.theme.muted('━━━ Session Stats ━━━')}`);
157
+ console.log(` ${this.theme.muted(`Total tokens: ${totalInput.toLocaleString()} in + ${totalOutput.toLocaleString()} out`)}`);
158
+ console.log(` ${this.theme.muted(`Total cost: $${totalCost.toFixed(4)}`)}`);
159
+ }
160
+ /**
161
+ * Print agent activity
162
+ */
163
+ agentActivity(agentName, status) {
164
+ const icons = {
165
+ starting: '🚀',
166
+ working: '⚙️',
167
+ done: '✅',
168
+ error: '❌',
169
+ };
170
+ const colors = {
171
+ starting: this.theme.primary,
172
+ working: this.theme.warning,
173
+ done: this.theme.success,
174
+ error: this.theme.error,
175
+ };
176
+ console.log(` ${icons[status]} ${colors[status](`${agentName}: ${status}`)}`);
177
+ }
178
+ /**
179
+ * Print error
180
+ */
181
+ error(message) {
182
+ console.error(`\n ${this.theme.error('✗ Error:')} ${this.theme.error(message)}\n`);
183
+ }
184
+ /**
185
+ * Print info
186
+ */
187
+ info(message) {
188
+ console.log(` ${this.theme.primary('ℹ')} ${this.theme.primary(message)}`);
189
+ }
190
+ /**
191
+ * Print success
192
+ */
193
+ success(message) {
194
+ console.log(` ${this.theme.success('✓')} ${this.theme.success(message)}`);
195
+ }
196
+ /**
197
+ * Print warning
198
+ */
199
+ warning(message) {
200
+ console.log(` ${this.theme.warning('⚠')} ${this.theme.warning(message)}`);
201
+ }
202
+ /**
203
+ * Print separator
204
+ */
205
+ separator() {
206
+ console.log(` ${this.theme.dim('─'.repeat(50))}`);
207
+ }
208
+ /**
209
+ * Print code block
210
+ */
211
+ codeBlock(code, language) {
212
+ const header = language ? ` ${language} ` : '';
213
+ console.log(` ${this.theme.dim('┌' + '─'.repeat(48) + '┐')}`);
214
+ if (header) {
215
+ console.log(` ${this.theme.dim('│')} ${this.theme.keyword(header)}${' '.repeat(47 - header.length)}${this.theme.dim('│')}`);
216
+ }
217
+ for (const line of code.split('\n')) {
218
+ const truncated = line.length > 46 ? line.slice(0, 46) + '…' : line;
219
+ console.log(` ${this.theme.dim('│')} ${this.theme.code(truncated)}${' '.repeat(Math.max(0, 47 - truncated.length))}${this.theme.dim('│')}`);
220
+ }
221
+ console.log(` ${this.theme.dim('└' + '─'.repeat(48) + '┘')}`);
222
+ }
223
+ /**
224
+ * Print model selection menu
225
+ */
226
+ modelList(selectedModel) {
227
+ console.log(`\n ${this.theme.bold('Available Models:')}\n`);
228
+ const categories = {
229
+ '🆓 Free (Best for Coding)': [
230
+ 'qwen/qwen3-coder:free',
231
+ 'nvidia/nemotron-3-super-120b-a12b:free',
232
+ 'nvidia/nemotron-3-ultra-550b-a55b:free',
233
+ 'cohere/north-mini-code:free',
234
+ ],
235
+ '🆓 Free (Large Context)': [
236
+ 'nvidia/nemotron-3-super-120b-a12b:free',
237
+ 'nvidia/nemotron-3-ultra-550b-a55b:free',
238
+ 'tencent/hy3:free',
239
+ 'meta-llama/llama-3.3-70b-instruct:free',
240
+ ],
241
+ '🆓 Free (Vision + Tools)': [
242
+ 'google/gemma-4-31b-it:free',
243
+ 'nvidia/nemotron-nano-12b-v2-vl:free',
244
+ 'openai/gpt-oss-20b:free',
245
+ 'poolside/laguna-m.1:free',
246
+ ],
247
+ '💎 Premium Flagship': ['anthropic/claude-opus-4', 'openai/o3', 'google/gemini-2.5-pro'],
248
+ '💎 Premium Balanced': ['anthropic/claude-sonnet-4', 'openai/gpt-4o', 'deepseek/deepseek-r1'],
249
+ '💎 Premium Fast': ['anthropic/claude-3.5-haiku', 'openai/gpt-4o-mini', 'google/gemini-2.5-flash', 'deepseek/deepseek-chat'],
250
+ };
251
+ for (const [category, models] of Object.entries(categories)) {
252
+ console.log(` ${this.theme.primary.bold(category)}`);
253
+ for (const modelId of models) {
254
+ const model = MODELS[modelId];
255
+ if (!model)
256
+ continue;
257
+ const selected = modelId === selectedModel ? this.theme.accent(' ◀ current') : '';
258
+ const isFree = model.inputPrice === 0 && model.outputPrice === 0;
259
+ const price = isFree ? 'FREE' : `$${model.inputPrice}/${model.outputPrice}`;
260
+ const priceColored = isFree ? this.theme.success(price.padEnd(12)) : this.theme.muted(price.padEnd(12));
261
+ console.log(` ${this.theme.muted('•')} ${this.theme.tool(model.name.padEnd(35))} ${priceColored} ${this.theme.muted(`${(model.contextWindow / 1000).toFixed(0)}K ctx`)}${model.supportsTools ? this.theme.muted(' 🔧') : ''}${selected}`);
262
+ }
263
+ console.log();
264
+ }
265
+ }
266
+ /**
267
+ * Print agent list
268
+ */
269
+ agentList(agents) {
270
+ console.log(`\n ${this.theme.bold('Available Agents:')}\n`);
271
+ for (const agent of agents) {
272
+ const model = MODELS[agent.model];
273
+ console.log(` ${this.theme.tool('◆')} ${this.theme.bold(agent.name.padEnd(12))} ${this.theme.muted('- ' + agent.description)}`);
274
+ console.log(` ${this.theme.muted(`Model: ${model?.name || agent.model}`)}`);
275
+ }
276
+ console.log();
277
+ }
278
+ }
279
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1,27 @@
1
+ import chalk from 'chalk';
2
+ export interface Theme {
3
+ name: string;
4
+ primary: typeof chalk;
5
+ secondary: typeof chalk;
6
+ accent: typeof chalk;
7
+ success: typeof chalk;
8
+ warning: typeof chalk;
9
+ error: typeof chalk;
10
+ muted: typeof chalk;
11
+ dim: typeof chalk;
12
+ bold: typeof chalk;
13
+ user: typeof chalk;
14
+ assistant: typeof chalk;
15
+ system: typeof chalk;
16
+ tool: typeof chalk;
17
+ thinking: typeof chalk;
18
+ code: typeof chalk;
19
+ number: typeof chalk;
20
+ string: typeof chalk;
21
+ keyword: typeof chalk;
22
+ comment: typeof chalk;
23
+ border: typeof chalk;
24
+ }
25
+ export declare function getTheme(name: string): Theme;
26
+ export declare function listThemes(): string[];
27
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1,106 @@
1
+ // ============================================================
2
+ // NeuroCLI - Terminal UI Theme
3
+ // Beautiful color themes for the terminal
4
+ // ============================================================
5
+ import chalk from 'chalk';
6
+ const themes = {
7
+ dracula: {
8
+ name: 'dracula',
9
+ primary: chalk.hex('#bd93f9'),
10
+ secondary: chalk.hex('#6272a4'),
11
+ accent: chalk.hex('#ff79c6'),
12
+ success: chalk.hex('#50fa7b'),
13
+ warning: chalk.hex('#f1fa8c'),
14
+ error: chalk.hex('#ff5555'),
15
+ muted: chalk.hex('#6272a4'),
16
+ dim: chalk.hex('#44475a'),
17
+ bold: chalk.bold.hex('#f8f8f2'),
18
+ user: chalk.hex('#8be9fd'),
19
+ assistant: chalk.hex('#f8f8f2'),
20
+ system: chalk.hex('#6272a4'),
21
+ tool: chalk.hex('#ffb86c'),
22
+ thinking: chalk.hex('#6272a4').italic,
23
+ code: chalk.hex('#f1fa8c'),
24
+ number: chalk.hex('#bd93f9'),
25
+ string: chalk.hex('#f1fa8c'),
26
+ keyword: chalk.hex('#ff79c6'),
27
+ comment: chalk.hex('#6272a4').italic,
28
+ border: chalk.hex('#44475a'),
29
+ },
30
+ dark: {
31
+ name: 'dark',
32
+ primary: chalk.blue,
33
+ secondary: chalk.gray,
34
+ accent: chalk.cyan,
35
+ success: chalk.green,
36
+ warning: chalk.yellow,
37
+ error: chalk.red,
38
+ muted: chalk.gray,
39
+ dim: chalk.dim,
40
+ bold: chalk.bold.white,
41
+ user: chalk.cyan,
42
+ assistant: chalk.white,
43
+ system: chalk.gray,
44
+ tool: chalk.yellow,
45
+ thinking: chalk.gray.italic,
46
+ code: chalk.green,
47
+ number: chalk.magenta,
48
+ string: chalk.green,
49
+ keyword: chalk.blue,
50
+ comment: chalk.gray.italic,
51
+ border: chalk.dim,
52
+ },
53
+ nord: {
54
+ name: 'nord',
55
+ primary: chalk.hex('#88c0d0'),
56
+ secondary: chalk.hex('#4c566a'),
57
+ accent: chalk.hex('#81a1c1'),
58
+ success: chalk.hex('#a3be8c'),
59
+ warning: chalk.hex('#ebcb8b'),
60
+ error: chalk.hex('#bf616a'),
61
+ muted: chalk.hex('#4c566a'),
62
+ dim: chalk.hex('#3b4252'),
63
+ bold: chalk.bold.hex('#eceff4'),
64
+ user: chalk.hex('#88c0d0'),
65
+ assistant: chalk.hex('#eceff4'),
66
+ system: chalk.hex('#4c566a'),
67
+ tool: chalk.hex('#ebcb8b'),
68
+ thinking: chalk.hex('#4c566a').italic,
69
+ code: chalk.hex('#a3be8c'),
70
+ number: chalk.hex('#b48ead'),
71
+ string: chalk.hex('#a3be8c'),
72
+ keyword: chalk.hex('#81a1c1'),
73
+ comment: chalk.hex('#4c566a').italic,
74
+ border: chalk.hex('#3b4252'),
75
+ },
76
+ light: {
77
+ name: 'light',
78
+ primary: chalk.blue,
79
+ secondary: chalk.gray,
80
+ accent: chalk.cyan,
81
+ success: chalk.green,
82
+ warning: chalk.yellow,
83
+ error: chalk.red,
84
+ muted: chalk.gray,
85
+ dim: chalk.dim,
86
+ bold: chalk.bold.black,
87
+ user: chalk.blue,
88
+ assistant: chalk.black,
89
+ system: chalk.gray,
90
+ tool: chalk.yellow,
91
+ thinking: chalk.gray.italic,
92
+ code: chalk.green,
93
+ number: chalk.magenta,
94
+ string: chalk.green,
95
+ keyword: chalk.blue,
96
+ comment: chalk.gray.italic,
97
+ border: chalk.gray,
98
+ },
99
+ };
100
+ export function getTheme(name) {
101
+ return themes[name] || themes.dracula;
102
+ }
103
+ export function listThemes() {
104
+ return Object.keys(themes);
105
+ }
106
+ //# sourceMappingURL=theme.js.map
package/package.json ADDED
@@ -0,0 +1,83 @@
1
+ {
2
+ "name": "neuro-cli",
3
+ "version": "4.1.0",
4
+ "description": "Advanced AI-powered terminal coding assistant with multi-agent orchestration, sub-agent spawning, ACP protocol, OS-level sandboxing, spec-driven development, smart monitoring, multi-model routing, MCP Apps, auto-updater, and 23+ free models",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "neuro": "dist/index.js"
8
+ },
9
+ "type": "module",
10
+ "files": [
11
+ "dist/**/*.js",
12
+ "dist/**/*.d.ts",
13
+ "README.md",
14
+ "LICENSE"
15
+ ],
16
+ "scripts": {
17
+ "build": "tsc",
18
+ "dev": "tsx src/index.ts",
19
+ "start": "node dist/index.js",
20
+ "lint": "eslint src/",
21
+ "clean": "rm -rf dist/",
22
+ "prepublishOnly": "npm run build",
23
+ "postinstall": "node -e \"console.log('\\n Thanks for installing NeuroCLI! Run \\'neuro\\' to get started.\\n')\""
24
+ },
25
+ "keywords": [
26
+ "ai",
27
+ "cli",
28
+ "coding",
29
+ "assistant",
30
+ "openrouter",
31
+ "agent",
32
+ "multi-agent",
33
+ "llm",
34
+ "terminal",
35
+ "chatgpt",
36
+ "copilot",
37
+ "code-assistant",
38
+ "mcp",
39
+ "spec-driven",
40
+ "sandbox"
41
+ ],
42
+ "author": "Muhammed Turan <muhammedturan65>",
43
+ "license": "MIT",
44
+ "repository": {
45
+ "type": "git",
46
+ "url": "git+https://github.com/muhammedturan65/neuro-cli.git"
47
+ },
48
+ "homepage": "https://github.com/muhammedturan65/neuro-cli#readme",
49
+ "bugs": {
50
+ "url": "https://github.com/muhammedturan65/neuro-cli/issues"
51
+ },
52
+ "engines": {
53
+ "node": ">=18.0.0"
54
+ },
55
+ "dependencies": {
56
+ "chalk": "^5.3.0",
57
+ "commander": "^12.1.0",
58
+ "dotenv": "^16.4.5",
59
+ "eventsource-parser": "^2.0.1",
60
+ "glob": "^10.4.5",
61
+ "ink": "^5.1.0",
62
+ "ink-markdown": "^1.0.4",
63
+ "ink-spinner": "^5.0.0",
64
+ "ink-text-input": "^6.0.0",
65
+ "inquirer": "^9.3.5",
66
+ "json5": "^2.2.3",
67
+ "marked": "^13.0.3",
68
+ "marked-terminal": "^7.2.1",
69
+ "node-emoji": "^2.1.3",
70
+ "open": "^10.1.0",
71
+ "ora": "^8.0.1",
72
+ "react": "^18.3.1",
73
+ "tiktoken": "^1.0.17"
74
+ },
75
+ "devDependencies": {
76
+ "@types/inquirer": "^9.0.7",
77
+ "@types/node": "^22.5.5",
78
+ "@types/react": "^18.3.5",
79
+ "@types/ws": "^8.18.1",
80
+ "tsx": "^4.19.1",
81
+ "typescript": "^5.9.3"
82
+ }
83
+ }