@mndrk/agx 1.4.19 → 1.4.20

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 (79) hide show
  1. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/BUILD_ID +1 -1
  2. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/app-build-manifest.json +29 -29
  3. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/app-path-routes-manifest.json +5 -5
  4. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/build-manifest.json +2 -2
  5. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/prerender-manifest.json +15 -15
  6. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  7. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.html +1 -1
  8. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.rsc +1 -1
  9. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/audit/route_client-reference-manifest.js +1 -1
  10. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/auth/[...nextauth]/route_client-reference-manifest.js +1 -1
  11. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/auth/daemon-secret/route_client-reference-manifest.js +1 -1
  12. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/auth/device/code/route_client-reference-manifest.js +1 -1
  13. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/auth/device/token/route_client-reference-manifest.js +1 -1
  14. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
  15. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  16. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/learnings/route_client-reference-manifest.js +1 -1
  17. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/logs/stream/route_client-reference-manifest.js +1 -1
  18. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  19. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/signal/route_client-reference-manifest.js +1 -1
  20. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/start/route_client-reference-manifest.js +1 -1
  21. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/status/route_client-reference-manifest.js +1 -1
  22. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/projects/[id]/route_client-reference-manifest.js +1 -1
  23. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  24. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  25. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/queue/complete/route_client-reference-manifest.js +1 -1
  26. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/queue/route_client-reference-manifest.js +1 -1
  27. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/stage-prompts/route_client-reference-manifest.js +1 -1
  28. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/comments/[commentId]/route_client-reference-manifest.js +1 -1
  29. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/comments/route_client-reference-manifest.js +1 -1
  30. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/heartbeat/route_client-reference-manifest.js +1 -1
  31. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/history/route_client-reference-manifest.js +1 -1
  32. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/logs/route_client-reference-manifest.js +1 -1
  33. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/route_client-reference-manifest.js +1 -1
  34. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/route_client-reference-manifest.js +1 -1
  35. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/stream/route_client-reference-manifest.js +1 -1
  36. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/user-settings/route_client-reference-manifest.js +1 -1
  37. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/workflows/[id]/nodes/route_client-reference-manifest.js +1 -1
  38. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/workflows/[id]/route_client-reference-manifest.js +1 -1
  39. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  40. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/auth/callback/route_client-reference-manifest.js +1 -1
  41. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/auth/device/page.js +5 -5
  42. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/auth/device/page_client-reference-manifest.js +1 -1
  43. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/auth/device.html +1 -1
  44. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/auth/device.rsc +2 -2
  45. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/dashboard/page_client-reference-manifest.js +1 -1
  46. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/dashboard.html +1 -1
  47. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/dashboard.rsc +1 -1
  48. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.html +1 -1
  49. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.rsc +1 -1
  50. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/login/page_client-reference-manifest.js +1 -1
  51. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/login.html +1 -1
  52. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/login.rsc +1 -1
  53. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/page_client-reference-manifest.js +1 -1
  54. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  55. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/tasks/page_client-reference-manifest.js +1 -1
  56. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/workflow/page_client-reference-manifest.js +1 -1
  57. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  58. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.html +1 -1
  59. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.rsc +1 -1
  60. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  61. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.html +1 -1
  62. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.rsc +1 -1
  63. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app-paths-manifest.json +5 -5
  64. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/middleware-manifest.json +5 -5
  65. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/pages/404.html +1 -1
  66. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/pages/500.html +1 -1
  67. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/server-reference-manifest.js +1 -1
  68. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/server-reference-manifest.json +1 -1
  69. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/auth/device/{page-a334052961b047e9.js → page-1191b5d80fb53701.js} +1 -1
  70. package/index.js +26 -0
  71. package/lib/cli/daemon.js +11 -0
  72. package/lib/cli/interactiveMenu.js +348 -0
  73. package/lib/cli/onboarding.js +277 -0
  74. package/lib/cli/providers.js +245 -0
  75. package/lib/cli/runCli.js +77 -1934
  76. package/lib/cli/skills.js +110 -0
  77. package/package.json +1 -1
  78. /package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/{iDPijmmtGz8j8COcWytVz → _UEH0bf2vZJdfFbGlB9rM}/_buildManifest.js +0 -0
  79. /package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/{iDPijmmtGz8j8COcWytVz → _UEH0bf2vZJdfFbGlB9rM}/_ssgManifest.js +0 -0
@@ -0,0 +1,245 @@
1
+ /* eslint-disable no-console */
2
+ 'use strict';
3
+
4
+ const path = require('path');
5
+ const { spawn, execSync } = require('child_process');
6
+
7
+ const { c } = require('../ui/colors');
8
+ const { commandExists } = require('../proc/commandExists');
9
+ const { prompt } = require('./configStore');
10
+
11
+ function detectProviders() {
12
+ return {
13
+ claude: commandExists('claude'),
14
+ gemini: commandExists('gemini'),
15
+ ollama: commandExists('ollama'),
16
+ codex: commandExists('codex')
17
+ };
18
+ }
19
+
20
+ function printProviderStatus(providers) {
21
+ console.log(`\n${c.bold}Detected Providers:${c.reset}\n`);
22
+
23
+ const status = (installed) => installed
24
+ ? `${c.green}✓ installed${c.reset}`
25
+ : `${c.dim}✗ not found${c.reset}`;
26
+
27
+ console.log(` ${c.cyan}claude${c.reset} │ Anthropic Claude Code │ ${status(providers.claude)}`);
28
+ console.log(` ${c.cyan}gemini${c.reset} │ Google Gemini CLI │ ${status(providers.gemini)}`);
29
+ console.log(` ${c.cyan}ollama${c.reset} │ Local Ollama │ ${status(providers.ollama)}`);
30
+ console.log(` ${c.cyan}codex${c.reset} │ OpenAI Codex CLI │ ${status(providers.codex)}`);
31
+ }
32
+
33
+ function runInteractive(cmd, args = [], options = {}) {
34
+ return new Promise((resolve) => {
35
+ const child = spawn(cmd, args, {
36
+ stdio: 'inherit',
37
+ shell: true,
38
+ ...options
39
+ });
40
+ child.on('close', (code) => resolve(code === 0));
41
+ child.on('error', () => resolve(false));
42
+ });
43
+ }
44
+
45
+ function runSilent(cmd) {
46
+ try {
47
+ execSync(cmd, { stdio: 'ignore' });
48
+ return true;
49
+ } catch {
50
+ return false;
51
+ }
52
+ }
53
+
54
+ function isOllamaRunning() {
55
+ try {
56
+ execSync('curl -s http://localhost:11434/api/tags', { stdio: 'ignore', timeout: 2000 });
57
+ return true;
58
+ } catch {
59
+ return false;
60
+ }
61
+ }
62
+
63
+ function getOllamaModels() {
64
+ try {
65
+ const result = execSync('ollama list 2>/dev/null', { encoding: 'utf8' });
66
+ const lines = result.trim().split('\n').slice(1);
67
+ return lines.map((l) => l.split(/\s+/)[0]).filter(Boolean);
68
+ } catch {
69
+ return [];
70
+ }
71
+ }
72
+
73
+ const PROVIDERS = {
74
+ claude: {
75
+ name: 'Claude Code',
76
+ installCmd: 'npm install -g @anthropic-ai/claude-code',
77
+ description: 'Anthropic Claude AI assistant'
78
+ },
79
+ gemini: {
80
+ name: 'Gemini CLI',
81
+ installCmd: 'npm install -g @google/gemini-cli',
82
+ description: 'Google Gemini AI assistant'
83
+ },
84
+ ollama: {
85
+ name: 'Ollama',
86
+ installCmd: process.platform === 'darwin'
87
+ ? 'brew install ollama'
88
+ : 'curl -fsSL https://ollama.ai/install.sh | sh',
89
+ description: 'Local AI models'
90
+ },
91
+ codex: {
92
+ name: 'Codex CLI',
93
+ installCmd: 'npm install -g @openai/codex',
94
+ description: 'OpenAI Codex CLI'
95
+ }
96
+ };
97
+
98
+ async function installProvider(provider) {
99
+ const info = PROVIDERS[provider];
100
+ if (!info) return false;
101
+
102
+ console.log(`\n${c.cyan}Installing ${info.name}...${c.reset}\n`);
103
+ console.log(`${c.dim}$ ${info.installCmd}${c.reset}\n`);
104
+
105
+ const success = await runInteractive(info.installCmd);
106
+
107
+ if (success && commandExists(provider)) {
108
+ console.log(`\n${c.green}✓${c.reset} ${info.name} installed successfully!`);
109
+ return true;
110
+ }
111
+
112
+ console.log(`\n${c.red}✗${c.reset} Installation failed. Try manually:`);
113
+ console.log(` ${c.dim}${info.installCmd}${c.reset}`);
114
+ return false;
115
+ }
116
+
117
+ async function loginProvider(provider) {
118
+ console.log('');
119
+
120
+ if (provider === 'claude') {
121
+ console.log(`${c.cyan}Launching Claude Code for authentication...${c.reset}`);
122
+ console.log(`${c.dim}This will open a browser to log in with your Anthropic account.${c.reset}\n`);
123
+ await runInteractive('claude');
124
+ return true;
125
+ }
126
+
127
+ if (provider === 'gemini') {
128
+ console.log(`${c.cyan}Launching Gemini CLI for authentication...${c.reset}`);
129
+ console.log(`${c.dim}This will open a browser to log in with your Google account.${c.reset}\n`);
130
+ await runInteractive('gemini');
131
+ return true;
132
+ }
133
+
134
+ if (provider === 'ollama') {
135
+ if (!isOllamaRunning()) {
136
+ console.log(`${c.yellow}Ollama server is not running.${c.reset}`);
137
+ const startIt = await prompt('Start it now? [Y/n]: ');
138
+ if (startIt.toLowerCase() !== 'n') {
139
+ console.log(`\n${c.cyan}Starting Ollama server in background...${c.reset}`);
140
+ spawn('ollama', ['serve'], {
141
+ detached: true,
142
+ stdio: 'ignore'
143
+ }).unref();
144
+ await new Promise((r) => setTimeout(r, 2000));
145
+ if (isOllamaRunning()) {
146
+ console.log(`${c.green}✓${c.reset} Ollama server started!`);
147
+ } else {
148
+ console.log(`${c.yellow}Server may still be starting. Run ${c.reset}ollama serve${c.yellow} manually if needed.${c.reset}`);
149
+ }
150
+ }
151
+ } else {
152
+ console.log(`${c.green}✓${c.reset} Ollama server is running`);
153
+ }
154
+
155
+ const models = getOllamaModels();
156
+ if (models.length === 0) {
157
+ console.log(`\n${c.yellow}No models installed.${c.reset}`);
158
+ console.log(`\n${c.bold}Popular models:${c.reset}`);
159
+ console.log(` ${c.cyan}1${c.reset}) glm-4.7:cloud ${c.dim}(?) - Recommended default${c.reset}`);
160
+ console.log(` ${c.cyan}2${c.reset}) qwen3:8b ${c.dim}(4.9 GB) - Great all-rounder${c.reset}`);
161
+ console.log(` ${c.cyan}3${c.reset}) codellama:7b ${c.dim}(3.8 GB) - Code specialist${c.reset}`);
162
+ console.log(` ${c.cyan}4${c.reset}) mistral:7b ${c.dim}(4.1 GB) - Good general model${c.reset}`);
163
+ console.log(` ${c.cyan}5${c.reset}) Skip for now`);
164
+
165
+ const choice = await prompt('\nWhich model to pull? [1]: ');
166
+ const modelMap = {
167
+ '1': 'glm-4.7:cloud',
168
+ '2': 'qwen3:8b',
169
+ '3': 'codellama:7b',
170
+ '4': 'mistral:7b',
171
+ '': 'glm-4.7:cloud'
172
+ };
173
+ const model = modelMap[choice];
174
+ if (model) {
175
+ console.log(`\n${c.cyan}Pulling ${model}...${c.reset}`);
176
+ console.log(`${c.dim}This may take a few minutes depending on your connection.${c.reset}\n`);
177
+ await runInteractive(`ollama pull ${model}`);
178
+ }
179
+ } else {
180
+ console.log(`${c.green}✓${c.reset} Found ${models.length} model(s): ${c.dim}${models.slice(0, 3).join(', ')}${models.length > 3 ? '...' : ''}${c.reset}`);
181
+ }
182
+ return true;
183
+ }
184
+
185
+ if (provider === 'codex') {
186
+ console.log(`${c.cyan}Launching Codex CLI for authentication...${c.reset}`);
187
+ await runInteractive('codex');
188
+ return true;
189
+ }
190
+
191
+ return false;
192
+ }
193
+
194
+ async function runAgxModelSmokeTest({ provider, model }) {
195
+ const entry = process.argv[1] || path.join(__dirname, '../../index.js');
196
+ const cmd = process.execPath;
197
+ const args = [entry, provider, '--model', model, '-y', '-p', 'say yes'];
198
+
199
+ console.log(`\n${c.bold}Smoke test:${c.reset}`);
200
+ console.log(`${c.dim}$ agx ${provider} --model ${model} -y -p "say yes"${c.reset}\n`);
201
+
202
+ return await new Promise((resolve) => {
203
+ const child = spawn(cmd, args, {
204
+ stdio: ['ignore', 'pipe', 'pipe'],
205
+ env: { ...process.env },
206
+ });
207
+
208
+ let stdout = '';
209
+ let stderr = '';
210
+ let timedOut = false;
211
+
212
+ const MAX_CAPTURE = 32_000;
213
+ const append = (buf, chunk) => {
214
+ const next = buf + chunk;
215
+ return next.length > MAX_CAPTURE ? next.slice(-MAX_CAPTURE) : next;
216
+ };
217
+
218
+ child.stdout.on('data', (d) => { stdout = append(stdout, String(d)); });
219
+ child.stderr.on('data', (d) => { stderr = append(stderr, String(d)); });
220
+
221
+ const timer = setTimeout(() => {
222
+ timedOut = true;
223
+ try { child.kill('SIGKILL'); } catch { }
224
+ }, 60_000);
225
+
226
+ child.on('close', (code, signal) => {
227
+ clearTimeout(timer);
228
+ resolve({ code: code ?? 1, signal, stdout, stderr, timedOut });
229
+ });
230
+ });
231
+ }
232
+
233
+ module.exports = {
234
+ PROVIDERS,
235
+ detectProviders,
236
+ printProviderStatus,
237
+ runInteractive,
238
+ runSilent,
239
+ isOllamaRunning,
240
+ getOllamaModels,
241
+ installProvider,
242
+ loginProvider,
243
+ runAgxModelSmokeTest,
244
+ };
245
+