@nexagent-cli/cli 0.3.1 → 0.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.
Files changed (102) hide show
  1. package/README.md +117 -9
  2. package/dist/agent/loop.d.ts +2 -0
  3. package/dist/agent/loop.d.ts.map +1 -1
  4. package/dist/agent/loop.js +59 -27
  5. package/dist/agent/loop.js.map +1 -1
  6. package/dist/commands/chat.d.ts.map +1 -1
  7. package/dist/commands/chat.js +3 -1
  8. package/dist/commands/chat.js.map +1 -1
  9. package/dist/commands/completion.d.ts +2 -0
  10. package/dist/commands/completion.d.ts.map +1 -0
  11. package/dist/commands/completion.js +287 -0
  12. package/dist/commands/completion.js.map +1 -0
  13. package/dist/commands/dashboard.d.ts.map +1 -1
  14. package/dist/commands/dashboard.js +221 -12
  15. package/dist/commands/dashboard.js.map +1 -1
  16. package/dist/commands/run.d.ts.map +1 -1
  17. package/dist/commands/run.js +1 -0
  18. package/dist/commands/run.js.map +1 -1
  19. package/dist/commands/server.js +1 -1
  20. package/dist/commands/server.js.map +1 -1
  21. package/dist/commands/session.d.ts +1 -0
  22. package/dist/commands/session.d.ts.map +1 -1
  23. package/dist/commands/session.js +72 -1
  24. package/dist/commands/session.js.map +1 -1
  25. package/dist/config/loader.js +2 -2
  26. package/dist/config/loader.js.map +1 -1
  27. package/dist/db/database.js +96 -79
  28. package/dist/db/database.js.map +1 -1
  29. package/dist/index.js +14 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/llm/providers/anthropic.d.ts +1 -1
  32. package/dist/llm/providers/anthropic.d.ts.map +1 -1
  33. package/dist/llm/providers/anthropic.js.map +1 -1
  34. package/dist/llm/providers/google.d.ts +1 -0
  35. package/dist/llm/providers/google.d.ts.map +1 -1
  36. package/dist/llm/providers/google.js +3 -0
  37. package/dist/llm/providers/google.js.map +1 -1
  38. package/dist/llm/providers/ollama.d.ts +1 -0
  39. package/dist/llm/providers/ollama.d.ts.map +1 -1
  40. package/dist/llm/providers/ollama.js +3 -0
  41. package/dist/llm/providers/ollama.js.map +1 -1
  42. package/dist/llm/providers/openai.d.ts +1 -1
  43. package/dist/llm/providers/openai.d.ts.map +1 -1
  44. package/dist/llm/providers/openai.js.map +1 -1
  45. package/dist/llm/router.d.ts +1 -0
  46. package/dist/llm/router.d.ts.map +1 -1
  47. package/dist/llm/router.js +6 -0
  48. package/dist/llm/router.js.map +1 -1
  49. package/dist/mcp/catalog.js +5 -5
  50. package/dist/mcp/catalog.js.map +1 -1
  51. package/dist/mcp/index.d.ts +1 -0
  52. package/dist/mcp/index.d.ts.map +1 -1
  53. package/dist/mcp/index.js +1 -0
  54. package/dist/mcp/index.js.map +1 -1
  55. package/dist/mcp/installer.d.ts.map +1 -1
  56. package/dist/mcp/installer.js +13 -1
  57. package/dist/mcp/installer.js.map +1 -1
  58. package/dist/mcp/registry.d.ts +1 -1
  59. package/dist/mcp/registry.d.ts.map +1 -1
  60. package/dist/mcp/registry.js +8 -3
  61. package/dist/mcp/registry.js.map +1 -1
  62. package/dist/mcp/templates.d.ts +6 -0
  63. package/dist/mcp/templates.d.ts.map +1 -0
  64. package/dist/mcp/templates.js +185 -0
  65. package/dist/mcp/templates.js.map +1 -0
  66. package/dist/memory/manager.d.ts +5 -1
  67. package/dist/memory/manager.d.ts.map +1 -1
  68. package/dist/memory/manager.js +50 -7
  69. package/dist/memory/manager.js.map +1 -1
  70. package/dist/tools/custom-loader.d.ts +3 -0
  71. package/dist/tools/custom-loader.d.ts.map +1 -0
  72. package/dist/tools/custom-loader.js +119 -0
  73. package/dist/tools/custom-loader.js.map +1 -0
  74. package/dist/tools/file-write.d.ts +1 -0
  75. package/dist/tools/file-write.d.ts.map +1 -1
  76. package/dist/tools/file-write.js +1 -0
  77. package/dist/tools/file-write.js.map +1 -1
  78. package/dist/tools/registry.d.ts +8 -1
  79. package/dist/tools/registry.d.ts.map +1 -1
  80. package/dist/tools/registry.js +40 -0
  81. package/dist/tools/registry.js.map +1 -1
  82. package/dist/tools/shell-exec.d.ts +1 -0
  83. package/dist/tools/shell-exec.d.ts.map +1 -1
  84. package/dist/tools/shell-exec.js +28 -1
  85. package/dist/tools/shell-exec.js.map +1 -1
  86. package/dist/ui/ChatApp.d.ts +1 -0
  87. package/dist/ui/ChatApp.d.ts.map +1 -1
  88. package/dist/ui/ChatApp.js +34 -10
  89. package/dist/ui/ChatApp.js.map +1 -1
  90. package/dist/ui/InputBar.d.ts +2 -1
  91. package/dist/ui/InputBar.d.ts.map +1 -1
  92. package/dist/ui/InputBar.js +71 -11
  93. package/dist/ui/InputBar.js.map +1 -1
  94. package/dist/ui/StatusBar.d.ts +2 -1
  95. package/dist/ui/StatusBar.d.ts.map +1 -1
  96. package/dist/ui/StatusBar.js +3 -3
  97. package/dist/ui/StatusBar.js.map +1 -1
  98. package/dist/ui/SubagentPanel.d.ts +21 -0
  99. package/dist/ui/SubagentPanel.d.ts.map +1 -0
  100. package/dist/ui/SubagentPanel.js +21 -0
  101. package/dist/ui/SubagentPanel.js.map +1 -0
  102. package/package.json +77 -76
@@ -0,0 +1,287 @@
1
+ // ============================================================
2
+ // Command: nexagent completion — generate shell completion scripts
3
+ // Supports: bash, zsh, fish, powershell
4
+ // ============================================================
5
+ import chalk from 'chalk';
6
+ const BASH_COMPLETION = `# NexAgent CLI bash completion
7
+ # Source this file: eval "$(nexagent completion bash)"
8
+ # Or install to: /etc/bash_completion.d/ or ~/.bash_completion
9
+
10
+ _nexagent_completion() {
11
+ local cur prev opts
12
+ COMPREPLY=()
13
+ cur="\${COMP_WORDS[COMP_CWORD]}"
14
+ prev="\${COMP_WORDS[COMP_CWORD-1]}"
15
+
16
+ local commands="chat run memory session agent config models update changelog doctor server dashboard mcp completion"
17
+ local chat_opts="--agent --model --provider --memory --subagents --safety --max-turns --cwd --resume --json --debug --data-dir --no-color"
18
+ local run_opts="--agent --model --max-turns --cwd --dry-run --json --debug --data-dir --no-color"
19
+ local global_opts="--help --version --no-color --json --debug --data-dir"
20
+
21
+ if [[ \${cur} == -* ]]; then
22
+ COMPREPLY=( $(compgen -W "\${global_opts}" -- \${cur}) )
23
+ return 0
24
+ fi
25
+
26
+ if [[ \${COMP_CWORD} -eq 1 ]]; then
27
+ COMPREPLY=( $(compgen -W "\${commands}" -- \${cur}) )
28
+ return 0
29
+ fi
30
+
31
+ case "\${prev}" in
32
+ chat)
33
+ COMPREPLY=( $(compgen -W "\${chat_opts}" -- \${cur}) )
34
+ return 0
35
+ ;;
36
+ run)
37
+ COMPREPLY=( $(compgen -W "\${run_opts}" -- \${cur}) )
38
+ return 0
39
+ ;;
40
+ --provider)
41
+ COMPREPLY=( $(compgen -W "openai anthropic google ollama proxy kimi" -- \${cur}) )
42
+ return 0
43
+ ;;
44
+ --safety)
45
+ COMPREPLY=( $(compgen -W "strict standard permissive" -- \${cur}) )
46
+ return 0
47
+ ;;
48
+ --model)
49
+ COMPREPLY=( $(compgen -W "gpt-4o gpt-4o-mini gpt-4.1 claude-3-5-sonnet claude-3-7-sonnet gemini-1.5-pro" -- \${cur}) )
50
+ return 0
51
+ ;;
52
+ esac
53
+ }
54
+
55
+ complete -F _nexagent_completion nexagent
56
+ `;
57
+ const ZSH_COMPLETION = `#compdef nexagent
58
+ # NexAgent CLI zsh completion
59
+ # Install: copy to a directory in $fpath (e.g., /usr/local/share/zsh/site-functions/)
60
+
61
+ _nexagent() {
62
+ local curcontext="$curcontext" state line
63
+ typeset -A opt_args
64
+
65
+ local -a commands
66
+ commands=(
67
+ 'chat:Start an interactive chat session'
68
+ 'run:Run a single prompt non-interactively'
69
+ 'memory:Manage agent memory blocks'
70
+ 'session:Manage chat sessions'
71
+ 'agent:Manage agents'
72
+ 'config:Manage configuration'
73
+ 'models:List available models'
74
+ 'update:Update to latest version'
75
+ 'changelog:Show release notes'
76
+ 'doctor:Diagnose installation health'
77
+ 'server:Manage proxy gateway'
78
+ 'dashboard:Start web dashboard'
79
+ 'mcp:Manage MCP tools'
80
+ 'completion:Generate shell completion'
81
+ )
82
+
83
+ _arguments -C \\
84
+ '(-h --help)'{-h,--help}'[Show help]' \\
85
+ '(-v --version)'{-v,--version}'[Show version]' \\
86
+ '--no-color[Disable colour output]' \\
87
+ '--json[Output machine-readable JSON]' \\
88
+ '--debug[Enable verbose debug logging]' \\
89
+ '--data-dir[Override agent data directory]:directory:_directories' \\
90
+ '1: :->command' \\
91
+ '*: :->args'
92
+
93
+ case "$state" in
94
+ command)
95
+ _describe -t commands 'nexagent commands' commands
96
+ ;;
97
+ args)
98
+ case "$line[1]" in
99
+ chat)
100
+ _arguments \\
101
+ '(-a --agent)'{-a,--agent}'[Agent name]:agent:' \\
102
+ '(-m --model)'{-m,--model}'[Model override]:model:' \\
103
+ '(-p --provider)'{-p,--provider}'[Provider]:provider:(openai anthropic google ollama proxy kimi)' \\
104
+ '--safety[Safety level]:level:(strict standard permissive)' \\
105
+ '--max-turns[Max turns]:number:' \\
106
+ '--cwd[Working directory]:directory:_directories' \\
107
+ '--resume[Resume session]:session:' \\
108
+ '--no-memory[Disable memory]' \\
109
+ '--no-subagents[Disable subagents]'
110
+ ;;
111
+ run)
112
+ _arguments \\
113
+ '(-a --agent)'{-a,--agent}'[Agent name]:agent:' \\
114
+ '(-m --model)'{-m,--model}'[Model override]:model:' \\
115
+ '--max-turns[Max turns]:number:' \\
116
+ '--cwd[Working directory]:directory:_directories' \\
117
+ '--dry-run[Show what tools would do]' \\
118
+ '--json[Output as JSON]'
119
+ ;;
120
+ esac
121
+ ;;
122
+ esac
123
+ }
124
+
125
+ compdef _nexagent nexagent
126
+ `;
127
+ const FISH_COMPLETION = `# NexAgent CLI fish completion
128
+ # Install: copy to ~/.config/fish/completions/nexagent.fish
129
+
130
+ complete -c nexagent -f
131
+
132
+ # Global options
133
+ complete -c nexagent -s h -l help -d "Show help"
134
+ complete -c nexagent -s v -l version -d "Show version"
135
+ complete -c nexagent -l no-color -d "Disable colour output"
136
+ complete -c nexagent -l json -d "Output machine-readable JSON"
137
+ complete -c nexagent -l debug -d "Enable verbose debug logging"
138
+ complete -c nexagent -l data-dir -d "Override agent data directory"
139
+
140
+ # Commands
141
+ complete -c nexagent -n "not __fish_seen_subcommand_from $commands" -a "chat" -d "Start an interactive chat session"
142
+ complete -c nexagent -n "not __fish_seen_subcommand_from $commands" -a "run" -d "Run a single prompt non-interactively"
143
+ complete -c nexagent -n "not __fish_seen_subcommand_from $commands" -a "memory" -d "Manage agent memory blocks"
144
+ complete -c nexagent -n "not __fish_seen_subcommand_from $commands" -a "session" -d "Manage chat sessions"
145
+ complete -c nexagent -n "not __fish_seen_subcommand_from $commands" -a "agent" -d "Manage agents"
146
+ complete -c nexagent -n "not __fish_seen_subcommand_from $commands" -a "config" -d "Manage configuration"
147
+ complete -c nexagent -n "not __fish_seen_subcommand_from $commands" -a "models" -d "List available models"
148
+ complete -c nexagent -n "not __fish_seen_subcommand_from $commands" -a "update" -d "Update to latest version"
149
+ complete -c nexagent -n "not __fish_seen_subcommand_from $commands" -a "changelog" -d "Show release notes"
150
+ complete -c nexagent -n "not __fish_seen_subcommand_from $commands" -a "doctor" -d "Diagnose installation health"
151
+ complete -c nexagent -n "not __fish_seen_subcommand_from $commands" -a "server" -d "Manage proxy gateway"
152
+ complete -c nexagent -n "not __fish_seen_subcommand_from $commands" -a "dashboard" -d "Start web dashboard"
153
+ complete -c nexagent -n "not __fish_seen_subcommand_from $commands" -a "mcp" -d "Manage MCP tools"
154
+ complete -c nexagent -n "not __fish_seen_subcommand_from $commands" -a "completion" -d "Generate shell completion"
155
+
156
+ # Chat options
157
+ complete -c nexagent -n "__fish_seen_subcommand_from chat" -s a -l agent -d "Agent name"
158
+ complete -c nexagent -n "__fish_seen_subcommand_from chat" -s m -l model -d "Model override"
159
+ complete -c nexagent -n "__fish_seen_subcommand_from chat" -s p -l provider -d "Provider" -a "openai anthropic google ollama proxy kimi"
160
+ complete -c nexagent -n "__fish_seen_subcommand_from chat" -l safety -d "Safety level" -a "strict standard permissive"
161
+ complete -c nexagent -n "__fish_seen_subcommand_from chat" -l max-turns -d "Max turns"
162
+ complete -c nexagent -n "__fish_seen_subcommand_from chat" -l cwd -d "Working directory"
163
+
164
+ # Run options
165
+ complete -c nexagent -n "__fish_seen_subcommand_from run" -s a -l agent -d "Agent name"
166
+ complete -c nexagent -n "__fish_seen_subcommand_from run" -s m -l model -d "Model override"
167
+ complete -c nexagent -n "__fish_seen_subcommand_from run" -l max-turns -d "Max turns"
168
+ complete -c nexagent -n "__fish_seen_subcommand_from run" -l dry-run -d "Show what tools would do"
169
+ `;
170
+ const PWSH_COMPLETION = `# NexAgent CLI PowerShell completion
171
+ # Install: Add this to your $PROFILE
172
+ # nexagent completion powershell | Out-String | Invoke-Expression
173
+ # Or save to a file and dot-source it.
174
+
175
+ Register-ArgumentCompleter -Native -CommandName nexagent -ScriptBlock {
176
+ param($wordToComplete, $commandAst, $cursorPosition)
177
+
178
+ $commands = @('chat','run','memory','session','agent','config','models','update','changelog','doctor','server','dashboard','mcp','completion')
179
+ $globalOpts = @('--help','--version','--no-color','--json','--debug','--data-dir')
180
+ $providers = @('openai','anthropic','google','ollama','proxy','kimi')
181
+ $safetyLevels = @('strict','standard','permissive')
182
+
183
+ $tokens = $commandAst.CommandElements | ForEach-Object { $_.ToString() }
184
+ $cmd = $tokens[1]
185
+
186
+ # Complete first-level command
187
+ if ($tokens.Count -eq 1 -or ($tokens.Count -eq 2 -and $wordToComplete -notmatch '^-')) {
188
+ $commands | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
189
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
190
+ }
191
+ return
192
+ }
193
+
194
+ # Complete global flags
195
+ if ($wordToComplete -match '^-') {
196
+ $globalOpts | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
197
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
198
+ }
199
+ return
200
+ }
201
+
202
+ # Sub-command specific completions
203
+ switch ($cmd) {
204
+ 'chat' {
205
+ @('--agent','--model','--provider','--safety','--max-turns','--cwd','--resume','--no-memory','--no-subagents') |
206
+ Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
207
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
208
+ }
209
+ }
210
+ 'run' {
211
+ @('--agent','--model','--max-turns','--cwd','--dry-run','--json') |
212
+ Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
213
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
214
+ }
215
+ }
216
+ 'config' {
217
+ @('show','set','api-key') |
218
+ Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
219
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
220
+ }
221
+ }
222
+ 'server' {
223
+ @('start','stop','status') |
224
+ Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
225
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
226
+ }
227
+ }
228
+ 'memory' {
229
+ @('list','show','edit','delete','export','import') |
230
+ Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
231
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
232
+ }
233
+ }
234
+ 'session' {
235
+ @('list','show','delete','export','import') |
236
+ Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
237
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
238
+ }
239
+ }
240
+ 'agent' {
241
+ @('list','create','delete') |
242
+ Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
243
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
244
+ }
245
+ }
246
+ 'mcp' {
247
+ @('list','search','install','uninstall','installed','run') |
248
+ Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
249
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
250
+ }
251
+ }
252
+ }
253
+ }
254
+ `;
255
+ const SHELL_SCRIPTS = {
256
+ bash: BASH_COMPLETION,
257
+ zsh: ZSH_COMPLETION,
258
+ fish: FISH_COMPLETION,
259
+ powershell: PWSH_COMPLETION,
260
+ };
261
+ export async function runCompletion(shell) {
262
+ const normalized = shell.toLowerCase().trim();
263
+ if (normalized === 'install') {
264
+ console.log(chalk.bold('\n Shell Completion Installation\n'));
265
+ console.log(' Bash:');
266
+ console.log(' eval "$(nexagent completion bash)"');
267
+ console.log(' # Or permanently: nexagent completion bash > ~/.bash_completion\n');
268
+ console.log(' Zsh:');
269
+ console.log(' eval "$(nexagent completion zsh)"');
270
+ console.log(' # Or permanently: nexagent completion zsh > /usr/local/share/zsh/site-functions/_nexagent\n');
271
+ console.log(' Fish:');
272
+ console.log(' nexagent completion fish > ~/.config/fish/completions/nexagent.fish\n');
273
+ console.log(' PowerShell:');
274
+ console.log(' nexagent completion powershell | Out-String | Invoke-Expression');
275
+ console.log(' # Or add to $PROFILE\n');
276
+ return;
277
+ }
278
+ const script = SHELL_SCRIPTS[normalized];
279
+ if (!script) {
280
+ console.error(chalk.red(`\n Unknown shell: "\${shell}"`));
281
+ console.error(chalk.dim(' Supported shells: bash, zsh, fish, powershell'));
282
+ console.error(chalk.dim(' Run "nexagent completion install" for setup instructions.\n'));
283
+ process.exit(1);
284
+ }
285
+ console.log(script);
286
+ }
287
+ //# sourceMappingURL=completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,mEAAmE;AACnE,wCAAwC;AACxC,+DAA+D;AAE/D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDvB,CAAC;AAEF,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqEtB,CAAC;AAEF,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CvB,CAAC;AAEF,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFvB,CAAC;AAEF,MAAM,aAAa,GAA2B;IAC5C,IAAI,EAAE,eAAe;IACrB,GAAG,EAAE,cAAc;IACnB,IAAI,EAAE,eAAe;IACrB,UAAU,EAAE,eAAe;CAC5B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAa;IAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAE9C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,iGAAiG,CAAC,CAAC;QAC/G,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC,CAAC;QAC1F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAaA,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6QxE"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAiBA,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgexE"}
@@ -3,13 +3,17 @@
3
3
  // ============================================================
4
4
  import express from 'express';
5
5
  import cors from 'cors';
6
- import { join } from 'node:path';
6
+ import { join, dirname } from 'node:path';
7
7
  import { homedir } from 'node:os';
8
- import { readFileSync } from 'node:fs';
8
+ import { readFileSync, writeFileSync, existsSync } from 'node:fs';
9
+ import { fileURLToPath } from 'node:url';
9
10
  import Database from 'better-sqlite3';
10
11
  import chalk from 'chalk';
11
12
  import { NEXAGENT_VERSION, SYM } from '@nexagent-cli/shared';
12
- const DEFAULT_PORT = 18081;
13
+ import { McpCatalog } from '../mcp/catalog.js';
14
+ import { McpRegistry } from '../mcp/registry.js';
15
+ import { McpInstaller } from '../mcp/installer.js';
16
+ const DEFAULT_PORT = parseInt(process.env['NEXAGENT_DASHBOARD_PORT'] ?? '18081', 10);
13
17
  export async function runDashboard(opts) {
14
18
  const dataDir = opts.dataDir ?? join(homedir(), '.nexagent');
15
19
  const dbPath = join(dataDir, 'data.db');
@@ -177,6 +181,46 @@ export async function runDashboard(opts) {
177
181
  res.status(500).json({ error: 'Could not read config' });
178
182
  }
179
183
  });
184
+ api.patch('/config', (req, res) => {
185
+ try {
186
+ const configPath = join(dataDir, 'config.json');
187
+ const raw = readFileSync(configPath, 'utf-8');
188
+ const cfg = JSON.parse(raw);
189
+ const patch = req.body;
190
+ if (typeof patch.defaultAgent === 'string')
191
+ cfg.defaultAgent = patch.defaultAgent;
192
+ if (patch.defaults && typeof patch.defaults === 'object') {
193
+ const d = patch.defaults;
194
+ if (typeof d.model === 'string')
195
+ cfg.defaults.model = d.model;
196
+ if (typeof d.provider === 'string')
197
+ cfg.defaults.provider = d.provider;
198
+ if (typeof d.maxTurns === 'number')
199
+ cfg.defaults.maxTurns = Math.max(1, Math.min(1000, d.maxTurns));
200
+ if (typeof d.temperature === 'number')
201
+ cfg.defaults.temperature = Math.max(0, Math.min(2, d.temperature));
202
+ if (typeof d.safetyLevel === 'string')
203
+ cfg.defaults.safetyLevel = d.safetyLevel;
204
+ if (typeof d.memoryEnabled === 'boolean')
205
+ cfg.defaults.memoryEnabled = d.memoryEnabled;
206
+ if (typeof d.subagentsEnabled === 'boolean')
207
+ cfg.defaults.subagentsEnabled = d.subagentsEnabled;
208
+ }
209
+ writeFileSync(configPath, JSON.stringify(cfg, null, 2), 'utf-8');
210
+ const safeProviders = {};
211
+ for (const [k, v] of Object.entries(cfg.providers ?? {})) {
212
+ safeProviders[k] = { baseUrl: v.baseUrl, defaultModel: v.defaultModel };
213
+ }
214
+ res.json({
215
+ defaultAgent: cfg.defaultAgent,
216
+ providers: safeProviders,
217
+ defaults: cfg.defaults,
218
+ });
219
+ }
220
+ catch (e) {
221
+ res.status(500).json({ error: String(e) });
222
+ }
223
+ });
180
224
  api.get('/models', (_req, res) => {
181
225
  res.json([
182
226
  'gpt-4o', 'gpt-4o-mini',
@@ -235,17 +279,181 @@ export async function runDashboard(opts) {
235
279
  res.status(500).json({ error: String(e) });
236
280
  }
237
281
  });
282
+ const mcpCatalog = new McpCatalog();
283
+ const mcpRegistry = new McpRegistry();
284
+ const mcpInstaller = new McpInstaller(mcpRegistry, mcpCatalog);
238
285
  api.get('/mcp/tools', (_req, res) => {
239
- res.json([
240
- { id: 'fetch', name: 'Web Fetch', description: 'Fetch any URL and return markdown', version: '1.0.0', installed: false },
241
- { id: 'github', name: 'GitHub', description: 'Search repos, read issues, create PRs', version: '1.0.0', installed: false },
242
- { id: 'filesystem', name: 'File System', description: 'Advanced file operations beyond built-in tools', version: '1.0.0', installed: false },
243
- ]);
286
+ const tools = mcpCatalog.getAll().map((entry) => {
287
+ const record = mcpRegistry.get(entry.id);
288
+ return {
289
+ id: entry.id,
290
+ name: entry.name,
291
+ description: entry.description,
292
+ version: entry.version,
293
+ author: entry.author,
294
+ installed: !!record,
295
+ enabled: record?.enabled ?? false,
296
+ };
297
+ });
298
+ res.json(tools);
299
+ });
300
+ api.post('/mcp/tools/:id/install', async (req, res) => {
301
+ try {
302
+ const entry = mcpCatalog.get(req.params.id);
303
+ if (!entry) {
304
+ res.status(404).json({ error: `Tool ${req.params.id} not found in catalog` });
305
+ return;
306
+ }
307
+ await mcpRegistry.install(entry);
308
+ res.json({ ok: true, id: entry.id });
309
+ }
310
+ catch (e) {
311
+ res.status(400).json({ error: String(e) });
312
+ }
313
+ });
314
+ api.delete('/mcp/tools/:id', (req, res) => {
315
+ try {
316
+ mcpInstaller.uninstall(req.params.id);
317
+ res.json({ ok: true, id: req.params.id });
318
+ }
319
+ catch (e) {
320
+ res.status(400).json({ error: String(e) });
321
+ }
322
+ });
323
+ api.get('/analytics/npm', async (_req, res) => {
324
+ const packages = ['@nexagent-cli/cli', '@nexagent-cli/shared'];
325
+ try {
326
+ const results = await Promise.all(packages.map(async (pkg) => {
327
+ const [pointRes, rangeRes] = await Promise.all([
328
+ fetch(`https://api.npmjs.org/downloads/point/last-week/${encodeURIComponent(pkg)}`),
329
+ fetch(`https://api.npmjs.org/downloads/range/last-year/${encodeURIComponent(pkg)}`),
330
+ ]);
331
+ const point = (pointRes.ok ? await pointRes.json() : { downloads: 0 });
332
+ const range = (rangeRes.ok ? await rangeRes.json() : { downloads: [] });
333
+ return {
334
+ name: pkg,
335
+ weekly: point.downloads ?? 0,
336
+ yearly: {
337
+ package: pkg,
338
+ downloads: range.downloads ?? [],
339
+ start: range.start ?? '',
340
+ end: range.end ?? '',
341
+ },
342
+ };
343
+ }));
344
+ res.json({ packages: results, fetchedAt: Date.now() });
345
+ }
346
+ catch (e) {
347
+ res.status(502).json({ error: 'Failed to fetch npm data: ' + String(e) });
348
+ }
349
+ });
350
+ // ── Telemetry SSE ────────────────────────────────────────────
351
+ function getTelemetrySnapshot() {
352
+ try {
353
+ if (!existsSync(dbPath)) {
354
+ return {
355
+ timestamp: Date.now(),
356
+ sessions: { total: 0, active: 0 },
357
+ tokens: { in: 0, out: 0 },
358
+ cost: { totalUsd: 0 },
359
+ memory: { totalBlocks: 0, pinned: 0, archived: 0 },
360
+ recentToolCalls: [],
361
+ };
362
+ }
363
+ const db = openDb();
364
+ const sessionStats = db.prepare(`
365
+ SELECT
366
+ COUNT(*) as total_sessions,
367
+ SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) as active_sessions,
368
+ COALESCE(SUM(total_cost_usd), 0) as total_cost_usd,
369
+ COALESCE(SUM(total_tokens_in), 0) as total_tokens_in,
370
+ COALESCE(SUM(total_tokens_out), 0) as total_tokens_out
371
+ FROM sessions
372
+ `).get();
373
+ const memoryStats = db.prepare(`
374
+ SELECT
375
+ COUNT(*) as total_blocks,
376
+ SUM(CASE WHEN pinned = 1 THEN 1 ELSE 0 END) as pinned_blocks,
377
+ SUM(CASE WHEN archived = 1 THEN 1 ELSE 0 END) as archived_blocks
378
+ FROM memory_blocks
379
+ `).get();
380
+ const recentTurns = db.prepare(`
381
+ SELECT tool_calls, created_at
382
+ FROM turns
383
+ WHERE tool_calls IS NOT NULL AND tool_calls != ''
384
+ ORDER BY created_at DESC
385
+ LIMIT 5
386
+ `).all();
387
+ db.close();
388
+ const recentToolCalls = recentTurns.map((t) => {
389
+ try {
390
+ const parsed = JSON.parse(t.tool_calls);
391
+ return { tools: Array.isArray(parsed) ? parsed.map((c) => c.name || c.function?.name || 'unknown') : [], at: t.created_at };
392
+ }
393
+ catch {
394
+ return { tools: [], at: t.created_at };
395
+ }
396
+ });
397
+ return {
398
+ timestamp: Date.now(),
399
+ sessions: {
400
+ total: sessionStats.total_sessions ?? 0,
401
+ active: sessionStats.active_sessions ?? 0,
402
+ },
403
+ tokens: {
404
+ in: sessionStats.total_tokens_in ?? 0,
405
+ out: sessionStats.total_tokens_out ?? 0,
406
+ },
407
+ cost: {
408
+ totalUsd: sessionStats.total_cost_usd ?? 0,
409
+ },
410
+ memory: {
411
+ totalBlocks: memoryStats.total_blocks ?? 0,
412
+ pinned: memoryStats.pinned_blocks ?? 0,
413
+ archived: memoryStats.archived_blocks ?? 0,
414
+ },
415
+ recentToolCalls,
416
+ };
417
+ }
418
+ catch (e) {
419
+ return { timestamp: Date.now(), error: String(e) };
420
+ }
421
+ }
422
+ api.get('/telemetry', (req, res) => {
423
+ res.setHeader('Content-Type', 'text/event-stream');
424
+ res.setHeader('Cache-Control', 'no-cache');
425
+ res.setHeader('Connection', 'keep-alive');
426
+ res.setHeader('Access-Control-Allow-Origin', '*');
427
+ res.flushHeaders?.();
428
+ const initial = getTelemetrySnapshot();
429
+ res.write(`event: snapshot\ndata: ${JSON.stringify(initial)}\n\n`);
430
+ const interval = setInterval(() => {
431
+ const snapshot = getTelemetrySnapshot();
432
+ res.write(`event: snapshot\ndata: ${JSON.stringify(snapshot)}\n\n`);
433
+ }, 5000);
434
+ const heartbeat = setInterval(() => {
435
+ res.write(`event: heartbeat\ndata: ${JSON.stringify({ ts: Date.now() })}\n\n`);
436
+ }, 15000);
437
+ req.on('close', () => {
438
+ clearInterval(interval);
439
+ clearInterval(heartbeat);
440
+ });
244
441
  });
245
442
  app.use('/api', api);
246
- // Simple HTML fallback for the dashboard SPA (no built assets yet)
247
- app.get('/', (_req, res) => {
248
- res.send(`<!doctype html>
443
+ // Serve built React dashboard if available (monorepo or bundled install)
444
+ const __filename = fileURLToPath(import.meta.url);
445
+ const __dirname = dirname(__filename);
446
+ const dashboardDist = join(__dirname, '..', '..', '..', '..', 'dashboard', 'dist');
447
+ if (existsSync(join(dashboardDist, 'index.html'))) {
448
+ app.use(express.static(dashboardDist));
449
+ app.get('*', (_req, res) => {
450
+ res.sendFile(join(dashboardDist, 'index.html'));
451
+ });
452
+ }
453
+ else {
454
+ // Fallback HTML when React build is not available
455
+ app.get('/', (_req, res) => {
456
+ res.send(`<!doctype html>
249
457
  <html><head><title>NexAgent Dashboard</title><style>
250
458
  body{font-family:system-ui,sans-serif;background:#0a0a0f;color:#e2e8f0;padding:2rem}
251
459
  h1{color:#7c6ee6} .card{background:#1e1e2e;border-radius:8px;padding:1rem;margin:1rem 0}
@@ -263,7 +471,8 @@ a{color:#4dbdff}
263
471
  <p>Build the React frontend with <code>pnpm -C packages/dashboard run build</code> for the full UI.</p>
264
472
  </div>
265
473
  </body></html>`);
266
- });
474
+ });
475
+ }
267
476
  app.listen(port, () => {
268
477
  console.log(chalk.bold(`◈ NexAgent Dashboard Server v${NEXAGENT_VERSION}`));
269
478
  console.log(chalk.green(` → http://localhost:${port}`));
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAmBA,UAAU,UAAU;IAClB,KAAK,EAAO,MAAM,CAAC;IACnB,KAAK,CAAC,EAAM,MAAM,CAAC;IACnB,QAAQ,EAAI,MAAM,CAAC;IACnB,GAAG,CAAC,EAAQ,MAAM,CAAC;IACnB,MAAM,CAAC,EAAK,OAAO,CAAC;IACpB,IAAI,CAAC,EAAO,OAAO,CAAC;IACpB,KAAK,CAAC,EAAM,OAAO,CAAC;IACpB,OAAO,CAAC,EAAI,MAAM,CAAC;CACpB;AAED,wBAAsB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE5E"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAmBA,UAAU,UAAU;IAClB,KAAK,EAAO,MAAM,CAAC;IACnB,KAAK,CAAC,EAAM,MAAM,CAAC;IACnB,QAAQ,EAAI,MAAM,CAAC;IACnB,GAAG,CAAC,EAAQ,MAAM,CAAC;IACnB,MAAM,CAAC,EAAK,OAAO,CAAC;IACpB,IAAI,CAAC,EAAO,OAAO,CAAC;IACpB,KAAK,CAAC,EAAM,OAAO,CAAC;IACpB,OAAO,CAAC,EAAI,MAAM,CAAC;CACpB;AAED,wBAAsB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAmE5E"}
@@ -43,6 +43,7 @@ export async function runRun(prompt, opts) {
43
43
  safetyLevel: opts.dryRun ? 'permissive' : config.defaults.safetyLevel,
44
44
  allowedTools: [],
45
45
  blockedTools: [],
46
+ maxRetries: 2,
46
47
  };
47
48
  const loop = new AgentLoop({
48
49
  config: agentConfig, llm, tools: registry, memory, safety, sessions, events,