@swarmify/agents-cli 1.9.1 → 1.10.1

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 (52) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +8 -0
  3. package/dist/commands/cron.d.ts +3 -0
  4. package/dist/commands/cron.d.ts.map +1 -0
  5. package/dist/commands/cron.js +457 -0
  6. package/dist/commands/cron.js.map +1 -0
  7. package/dist/commands/daemon.d.ts.map +1 -1
  8. package/dist/commands/daemon.js +215 -1
  9. package/dist/commands/daemon.js.map +1 -1
  10. package/dist/commands/drive.d.ts +3 -0
  11. package/dist/commands/drive.d.ts.map +1 -0
  12. package/dist/commands/drive.js +112 -0
  13. package/dist/commands/drive.js.map +1 -0
  14. package/dist/commands/sessions.d.ts.map +1 -1
  15. package/dist/commands/sessions.js +1 -0
  16. package/dist/commands/sessions.js.map +1 -1
  17. package/dist/commands/view.d.ts.map +1 -1
  18. package/dist/commands/view.js +62 -30
  19. package/dist/commands/view.js.map +1 -1
  20. package/dist/index.js +38 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/lib/agents.d.ts +10 -0
  23. package/dist/lib/agents.d.ts.map +1 -1
  24. package/dist/lib/agents.js +35 -6
  25. package/dist/lib/agents.js.map +1 -1
  26. package/dist/lib/cron.d.ts +70 -0
  27. package/dist/lib/cron.d.ts.map +1 -0
  28. package/dist/lib/cron.js +325 -0
  29. package/dist/lib/cron.js.map +1 -0
  30. package/dist/lib/drive-sync.d.ts +28 -0
  31. package/dist/lib/drive-sync.d.ts.map +1 -0
  32. package/dist/lib/drive-sync.js +193 -0
  33. package/dist/lib/drive-sync.js.map +1 -0
  34. package/dist/lib/factory.d.ts +57 -0
  35. package/dist/lib/factory.d.ts.map +1 -0
  36. package/dist/lib/factory.js +110 -0
  37. package/dist/lib/factory.js.map +1 -0
  38. package/dist/lib/session/discover.d.ts.map +1 -1
  39. package/dist/lib/session/discover.js +134 -2
  40. package/dist/lib/session/discover.js.map +1 -1
  41. package/dist/lib/session/parse.d.ts.map +1 -1
  42. package/dist/lib/session/parse.js +1 -0
  43. package/dist/lib/session/parse.js.map +1 -1
  44. package/dist/lib/session/types.d.ts +1 -1
  45. package/dist/lib/session/types.d.ts.map +1 -1
  46. package/dist/lib/session/types.js +1 -1
  47. package/dist/lib/session/types.js.map +1 -1
  48. package/dist/lib/state.d.ts +1 -0
  49. package/dist/lib/state.d.ts.map +1 -1
  50. package/dist/lib/state.js +7 -0
  51. package/dist/lib/state.js.map +1 -1
  52. package/package.json +1 -1
@@ -1,8 +1,11 @@
1
1
  import chalk from 'chalk';
2
2
  import * as path from 'path';
3
- import { startDaemon, stopDaemon, isDaemonRunning, readDaemonPid, readDaemonLog, runDaemon, } from '../lib/daemon.js';
3
+ import * as os from 'os';
4
+ import { startDaemon, stopDaemon, isDaemonRunning, readDaemonPid, readDaemonLog, runDaemon, log, } from '../lib/daemon.js';
4
5
  import { listJobs as listAllJobs } from '../lib/routines.js';
5
6
  import { JobScheduler } from '../lib/scheduler.js';
7
+ import { FactoryClient, loadDaemonConfig, saveDaemonConfig, getMachineStats, getAgentVersions, } from '../lib/factory.js';
8
+ import { discoverSessions } from '../lib/session/discover.js';
6
9
  export function registerDaemonCommands(program) {
7
10
  const daemonCmd = program.command('daemon').description('Manage the jobs daemon');
8
11
  daemonCmd
@@ -85,5 +88,216 @@ export function registerDaemonCommands(program) {
85
88
  .action(async () => {
86
89
  await runDaemon();
87
90
  });
91
+ // ---------------------------------------------------------------------------
92
+ // Factory Floor reporting commands
93
+ // ---------------------------------------------------------------------------
94
+ daemonCmd
95
+ .command('report')
96
+ .description('Report local sessions to Factory Floor')
97
+ .option('--node-token <token>', 'Node token from Factory Floor')
98
+ .option('--endpoint <url>', 'Factory Floor endpoint (or AGENTS_FACTORY_URL env)', process.env.AGENTS_FACTORY_URL || 'https://agents.427yosemite.com')
99
+ .option('--interval <seconds>', 'Sync interval in seconds', '30')
100
+ .option('--once', 'Run once and exit (useful for testing)')
101
+ .action(async (options) => {
102
+ await runReportDaemon(options);
103
+ });
104
+ daemonCmd
105
+ .command('register')
106
+ .description('Register this machine with Factory Floor')
107
+ .option('--endpoint <url>', 'Factory Floor endpoint (or AGENTS_FACTORY_URL env)', process.env.AGENTS_FACTORY_URL || 'https://agents.427yosemite.com')
108
+ .option('--node-token <token>', 'API token for registration')
109
+ .action(async (options) => {
110
+ await registerNode(options);
111
+ });
112
+ daemonCmd
113
+ .command('config')
114
+ .description('Show or update daemon configuration')
115
+ .option('--show', 'Show current configuration')
116
+ .option('--clear', 'Clear stored configuration')
117
+ .action(async (options) => {
118
+ const config = loadDaemonConfig();
119
+ if (options.clear) {
120
+ saveDaemonConfig({});
121
+ console.log(chalk.green('Configuration cleared'));
122
+ return;
123
+ }
124
+ console.log(chalk.bold('Daemon Configuration\n'));
125
+ console.log(` Node ID: ${config.nodeId || chalk.gray('(not registered)')}`);
126
+ console.log(` Endpoint: ${config.endpoint || chalk.gray('(not set)')}`);
127
+ console.log(` Token: ${config.nodeToken ? chalk.green('configured') : chalk.gray('(not set)')}`);
128
+ if (config.lastSync) {
129
+ const lastSync = new Date(config.lastSync).toLocaleString();
130
+ console.log(` Last Sync: ${lastSync}`);
131
+ }
132
+ });
133
+ }
134
+ // Convert SessionMeta to SessionData for API
135
+ function sessionMetaToData(meta) {
136
+ return {
137
+ id: meta.id,
138
+ agent: meta.agent,
139
+ project: meta.project,
140
+ branch: meta.gitBranch,
141
+ workingDir: meta.cwd,
142
+ startedAt: new Date(meta.timestamp).getTime(),
143
+ };
144
+ }
145
+ async function registerNode(options) {
146
+ const endpoint = options.endpoint;
147
+ const token = options.nodeToken;
148
+ if (!token) {
149
+ console.error(chalk.red('Error: --node-token is required'));
150
+ console.error(chalk.gray('Get a token from Factory Floor: Add Machine -> Copy Token'));
151
+ process.exit(1);
152
+ }
153
+ console.log(`Registering with ${endpoint}...`);
154
+ const client = new FactoryClient(endpoint, token);
155
+ try {
156
+ const result = await client.register();
157
+ // Save to config
158
+ saveDaemonConfig({
159
+ nodeId: result.nodeId,
160
+ nodeToken: result.token,
161
+ endpoint,
162
+ });
163
+ console.log(chalk.green('\nRegistration successful!'));
164
+ console.log(` Node ID: ${result.nodeId}`);
165
+ console.log(` Token saved to ~/.agents/daemon.json`);
166
+ console.log(chalk.gray('\nTo start reporting:'));
167
+ console.log(chalk.cyan(' agents daemon report'));
168
+ }
169
+ catch (err) {
170
+ console.error(chalk.red(`Registration failed: ${err.message}`));
171
+ process.exit(1);
172
+ }
173
+ }
174
+ // Track consecutive failures for exponential backoff
175
+ let consecutiveFailures = 0;
176
+ const MAX_BACKOFF_MS = 5 * 60 * 1000; // 5 minutes max
177
+ function getBackoffMs(failures) {
178
+ if (failures === 0)
179
+ return 0;
180
+ // Exponential backoff: 2^failures seconds, capped at MAX_BACKOFF_MS
181
+ const backoffMs = Math.min(Math.pow(2, failures) * 1000, MAX_BACKOFF_MS);
182
+ return backoffMs;
183
+ }
184
+ async function runReportDaemon(options) {
185
+ // Load config, allowing CLI args to override
186
+ const config = loadDaemonConfig();
187
+ const nodeToken = options.nodeToken || config.nodeToken;
188
+ const endpoint = options.endpoint || config.endpoint || 'https://agents.427yosemite.com';
189
+ const interval = parseInt(options.interval, 10) * 1000;
190
+ let nodeId = config.nodeId;
191
+ if (!nodeToken) {
192
+ console.error(chalk.red('Error: Node token required'));
193
+ console.error(chalk.gray('Either:'));
194
+ console.error(chalk.gray(' 1. Register first: agents daemon register --node-token <token>'));
195
+ console.error(chalk.gray(' 2. Pass token directly: agents daemon report --node-token <token>'));
196
+ process.exit(1);
197
+ }
198
+ let client = new FactoryClient(endpoint, nodeToken, nodeId);
199
+ // Health check
200
+ const healthy = await client.healthCheck();
201
+ if (!healthy) {
202
+ console.error(chalk.red(`Error: Cannot reach Factory Floor at ${endpoint}`));
203
+ process.exit(1);
204
+ }
205
+ // Register if not already registered
206
+ if (!nodeId) {
207
+ console.log('No node ID found, registering...');
208
+ try {
209
+ const result = await client.register();
210
+ nodeId = result.nodeId;
211
+ saveDaemonConfig({
212
+ ...config,
213
+ nodeId: result.nodeId,
214
+ nodeToken: result.token,
215
+ endpoint,
216
+ });
217
+ // Recreate client with the returned node token (ntk_xxx)
218
+ // The initial token was the API token used for registration
219
+ client = new FactoryClient(endpoint, result.token, nodeId);
220
+ console.log(chalk.green(`Registered as node ${nodeId}`));
221
+ }
222
+ catch (err) {
223
+ console.error(chalk.red(`Registration failed: ${err.message}`));
224
+ process.exit(1);
225
+ }
226
+ }
227
+ console.log(chalk.bold('Factory Floor Reporter\n'));
228
+ console.log(` Node: ${nodeId}`);
229
+ console.log(` Endpoint: ${endpoint}`);
230
+ console.log(` Interval: ${options.interval}s`);
231
+ console.log(` Machine: ${os.hostname()} (${os.platform()}/${os.arch()})`);
232
+ console.log('');
233
+ if (options.once) {
234
+ await syncOnce(client, nodeId);
235
+ return;
236
+ }
237
+ // Start sync loop
238
+ console.log(chalk.gray('Starting sync loop... (Ctrl+C to stop)\n'));
239
+ const handleShutdown = () => {
240
+ console.log(chalk.yellow('\nShutting down...'));
241
+ process.exit(0);
242
+ };
243
+ process.on('SIGTERM', handleShutdown);
244
+ process.on('SIGINT', handleShutdown);
245
+ // Initial sync
246
+ await syncOnce(client, nodeId);
247
+ // Periodic sync with exponential backoff on failures
248
+ const runSyncLoop = async () => {
249
+ while (true) {
250
+ const backoffMs = getBackoffMs(consecutiveFailures);
251
+ const waitMs = interval + backoffMs;
252
+ await new Promise((resolve) => setTimeout(resolve, waitMs));
253
+ await syncOnce(client, nodeId);
254
+ }
255
+ };
256
+ // Run the sync loop (never resolves)
257
+ await runSyncLoop();
258
+ }
259
+ async function syncOnce(client, nodeId) {
260
+ try {
261
+ // Discover local sessions
262
+ const sessions = await discoverSessions({ limit: 100 });
263
+ // For now, treat all discovered sessions as "active" (we don't have a reliable way
264
+ // to detect completed sessions without tracking state)
265
+ const activeSessions = sessions.map(sessionMetaToData);
266
+ // Get machine stats
267
+ const stats = getMachineStats();
268
+ const versions = await getAgentVersions();
269
+ const request = {
270
+ activeSessions,
271
+ machineStats: {
272
+ ...stats,
273
+ agentVersions: versions,
274
+ },
275
+ };
276
+ const response = await client.sync(nodeId, request);
277
+ // Reset failure counter on success
278
+ consecutiveFailures = 0;
279
+ const config = loadDaemonConfig();
280
+ saveDaemonConfig({ ...config, lastSync: Date.now() });
281
+ const timestamp = new Date().toLocaleTimeString();
282
+ console.log(`[${timestamp}] Synced ${activeSessions.length} sessions (ack: ${response.acknowledged})`);
283
+ // Handle commands from Factory Floor
284
+ if (response.commands && response.commands.length > 0) {
285
+ for (const cmd of response.commands) {
286
+ console.log(chalk.cyan(` Command: ${cmd.type} ${cmd.sessionId || ''}`));
287
+ // TODO: Implement command handling (stop session, start task)
288
+ }
289
+ }
290
+ }
291
+ catch (err) {
292
+ consecutiveFailures++;
293
+ const backoffMs = getBackoffMs(consecutiveFailures);
294
+ const timestamp = new Date().toLocaleTimeString();
295
+ const backoffSec = Math.round(backoffMs / 1000);
296
+ console.error(chalk.red(`[${timestamp}] Sync failed: ${err.message}`));
297
+ if (backoffMs > 0) {
298
+ console.error(chalk.yellow(` Next retry in ${backoffSec}s (failure #${consecutiveFailures})`));
299
+ }
300
+ log('ERROR', `Sync failed: ${err.message}`);
301
+ }
88
302
  }
89
303
  //# sourceMappingURL=daemon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerDriveCommands(program: Command): void;
3
+ //# sourceMappingURL=drive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive.d.ts","sourceRoot":"","sources":["../../src/commands/drive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4F5D"}
@@ -0,0 +1,112 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { setRemote, pull, push, attach, detach, getDriveStatus, } from '../lib/drive-sync.js';
4
+ export function registerDriveCommands(program) {
5
+ const driveCmd = program
6
+ .command('drive')
7
+ .description('Sync agent sessions across machines');
8
+ driveCmd
9
+ .command('remote <target>')
10
+ .description('Set rsync remote target (e.g. muqsit@spark)')
11
+ .action((target) => {
12
+ try {
13
+ setRemote(target);
14
+ console.log(chalk.green(`Remote set to ${target}`));
15
+ console.log(chalk.gray(`Syncs to ${target}:~/.agents/drive/`));
16
+ }
17
+ catch (err) {
18
+ console.error(chalk.red(err.message));
19
+ process.exit(1);
20
+ }
21
+ });
22
+ driveCmd
23
+ .command('pull')
24
+ .description('Pull sessions from remote')
25
+ .action(async () => {
26
+ const spinner = ora('Pulling from remote...').start();
27
+ try {
28
+ await pull();
29
+ spinner.succeed('Pull complete');
30
+ }
31
+ catch (err) {
32
+ spinner.fail(err.message);
33
+ process.exit(1);
34
+ }
35
+ });
36
+ driveCmd
37
+ .command('push')
38
+ .description('Push sessions to remote')
39
+ .action(async () => {
40
+ const spinner = ora('Pushing to remote...').start();
41
+ try {
42
+ await push();
43
+ spinner.succeed('Push complete');
44
+ }
45
+ catch (err) {
46
+ spinner.fail(err.message);
47
+ process.exit(1);
48
+ }
49
+ });
50
+ driveCmd
51
+ .command('attach')
52
+ .description('Use drive as active agent home')
53
+ .action(() => {
54
+ try {
55
+ attach();
56
+ console.log(chalk.green('Drive attached'));
57
+ }
58
+ catch (err) {
59
+ console.error(chalk.red(err.message));
60
+ process.exit(1);
61
+ }
62
+ });
63
+ driveCmd
64
+ .command('detach')
65
+ .description('Restore agent home to version config')
66
+ .action(() => {
67
+ try {
68
+ detach();
69
+ console.log(chalk.green('Drive detached'));
70
+ }
71
+ catch (err) {
72
+ console.error(chalk.red(err.message));
73
+ process.exit(1);
74
+ }
75
+ });
76
+ driveCmd
77
+ .command('status')
78
+ .description('Show drive state')
79
+ .action(() => {
80
+ const status = getDriveStatus();
81
+ console.log(chalk.bold('Drive'));
82
+ console.log(` Remote: ${status.remote || chalk.gray('not set')}`);
83
+ console.log(` Attached: ${status.attached ? chalk.green('yes') : chalk.gray('no')}`);
84
+ console.log(` Last pull: ${status.lastPull ? formatTime(status.lastPull) : chalk.gray('never')}`);
85
+ console.log(` Last push: ${status.lastPush ? formatTime(status.lastPush) : chalk.gray('never')}`);
86
+ console.log(` Path: ${chalk.gray(status.driveDir)}`);
87
+ console.log('');
88
+ console.log(chalk.bold('Symlinks'));
89
+ console.log(` ~/.claude -> ${status.configDirTarget || chalk.gray('not a symlink')}`);
90
+ for (const [hf, target] of Object.entries(status.homeFileTargets)) {
91
+ console.log(` ~/${hf} -> ${target || chalk.gray('not a symlink')}`);
92
+ }
93
+ });
94
+ }
95
+ function formatTime(iso) {
96
+ const d = new Date(iso);
97
+ const now = Date.now();
98
+ const diffMin = Math.floor((now - d.getTime()) / 60_000);
99
+ if (diffMin < 1)
100
+ return 'just now';
101
+ if (diffMin < 60)
102
+ return `${diffMin} min ago`;
103
+ const diffHrs = Math.floor(diffMin / 60);
104
+ if (diffHrs < 24)
105
+ return `${diffHrs} hour${diffHrs === 1 ? '' : 's'} ago`;
106
+ const diffDays = Math.floor(diffHrs / 24);
107
+ if (diffDays < 7)
108
+ return `${diffDays} day${diffDays === 1 ? '' : 's'} ago`;
109
+ const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
110
+ return `${months[d.getMonth()]} ${d.getDate()}`;
111
+ }
112
+ //# sourceMappingURL=drive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive.js","sourceRoot":"","sources":["../../src/commands/drive.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+NzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8B/D"}
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgOzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8B/D"}
@@ -12,6 +12,7 @@ const AGENT_COLORS = {
12
12
  claude: chalk.magenta,
13
13
  codex: chalk.green,
14
14
  gemini: chalk.blue,
15
+ openclaw: chalk.cyan,
15
16
  };
16
17
  async function listAction(options) {
17
18
  const agent = options.agent;
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmezC;;;GAGG;AACH,wBAAsB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBjE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAK1D"}
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqgBzC;;;GAGG;AACH,wBAAsB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBjE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAK1D"}
@@ -2,7 +2,7 @@ import chalk from 'chalk';
2
2
  import ora from 'ora';
3
3
  import * as fs from 'fs';
4
4
  import * as path from 'path';
5
- import { AGENTS, ALL_AGENT_IDS, getAllCliStates, getAccountEmail, resolveAgentName, formatAgentError, } from '../lib/agents.js';
5
+ import { AGENTS, ALL_AGENT_IDS, getAllCliStates, getAccountInfo, resolveAgentName, formatAgentError, } from '../lib/agents.js';
6
6
  import { readManifest } from '../lib/manifest.js';
7
7
  import { listInstalledVersions, getGlobalDefault, getVersionHomePath, getVersionDir, getAvailableResources, getActuallySyncedResources, getNewResources, hasNewResources, promptNewResourceSelection, syncResourcesToVersion, } from '../lib/versions.js';
8
8
  import { getShimsDir, isShimsInPath, } from '../lib/shims.js';
@@ -11,6 +11,28 @@ import { getAgentsDir } from '../lib/state.js';
11
11
  import { isGitRepo, getGitSyncStatus } from '../lib/git.js';
12
12
  import { getCentralMemoryFileName } from '../lib/memory.js';
13
13
  import { formatPath, isPromptCancelled } from './utils.js';
14
+ function formatUsageBar(info) {
15
+ // 5-segment bar: filled = remaining, empty = consumed
16
+ const BAR_LEN = 5;
17
+ const FULL = '\u2588'; // █
18
+ const EMPTY = '\u2591'; // ░
19
+ if (info.usageStatus === 'out_of_credits') {
20
+ return chalk.red(EMPTY.repeat(BAR_LEN));
21
+ }
22
+ if (info.usageStatus === 'rate_limited') {
23
+ return chalk.yellow(FULL.repeat(2) + chalk.dim(EMPTY.repeat(BAR_LEN - 2)));
24
+ }
25
+ // available
26
+ return chalk.green(FULL.repeat(BAR_LEN));
27
+ }
28
+ function formatUsageStatus(info, planWidth = 3) {
29
+ if (!info.plan && !info.usageStatus)
30
+ return '';
31
+ const planLabel = (info.plan || '').padEnd(planWidth);
32
+ const planStr = info.plan ? chalk.gray(planLabel) : planLabel;
33
+ const barStr = info.usageStatus ? formatUsageBar(info) : '';
34
+ return `${planStr} ${barStr}`;
35
+ }
14
36
  function compareVersions(a, b) {
15
37
  const partsA = a.split('.').map(Number);
16
38
  const partsB = b.split('.').map(Number);
@@ -49,34 +71,34 @@ async function showInstalledVersions(filterAgentId) {
49
71
  const agentsToShow = filterAgentId ? [filterAgentId] : ALL_AGENT_IDS;
50
72
  const showPaths = !!filterAgentId;
51
73
  console.log(chalk.bold('Installed Agent CLIs\n'));
52
- // Pre-fetch emails for all versions in parallel
53
- const emailFetches = [];
54
- const globalEmailFetches = [];
74
+ // Pre-fetch account info for all versions in parallel
75
+ const infoFetches = [];
76
+ const globalInfoFetches = [];
55
77
  for (const agentId of agentsToShow) {
56
78
  const versions = listInstalledVersions(agentId);
57
79
  if (versions.length > 0) {
58
80
  for (const ver of versions) {
59
- emailFetches.push(getAccountEmail(agentId, getVersionHomePath(agentId, ver)).then((email) => ({
81
+ infoFetches.push(getAccountInfo(agentId, getVersionHomePath(agentId, ver)).then((info) => ({
60
82
  agentId,
61
83
  version: ver,
62
- email,
84
+ info,
63
85
  })));
64
86
  }
65
87
  }
66
88
  else {
67
- globalEmailFetches.push(getAccountEmail(agentId).then((email) => ({ agentId, email })));
89
+ globalInfoFetches.push(getAccountInfo(agentId).then((info) => ({ agentId, info })));
68
90
  }
69
91
  }
70
- const emailResults = await Promise.all(emailFetches);
71
- const globalEmailResults = await Promise.all(globalEmailFetches);
72
- // Build lookup: agentId:version -> email
73
- const listEmailMap = new Map();
74
- for (const { agentId, version, email } of emailResults) {
75
- listEmailMap.set(`${agentId}:${version}`, email);
92
+ const infoResults = await Promise.all(infoFetches);
93
+ const globalInfoResults = await Promise.all(globalInfoFetches);
94
+ // Build lookup: agentId:version -> AccountInfo
95
+ const infoMap = new Map();
96
+ for (const { agentId, version, info } of infoResults) {
97
+ infoMap.set(`${agentId}:${version}`, info);
76
98
  }
77
- const globalListEmailMap = new Map();
78
- for (const { agentId, email } of globalEmailResults) {
79
- globalListEmailMap.set(agentId, email);
99
+ const globalInfoMap = new Map();
100
+ for (const { agentId, info } of globalInfoResults) {
101
+ globalInfoMap.set(agentId, info);
80
102
  }
81
103
  // Separate version-managed from globally-installed agents
82
104
  const versionManaged = [];
@@ -93,14 +115,18 @@ async function showInstalledVersions(filterAgentId) {
93
115
  }
94
116
  // Show version-managed agents
95
117
  if (versionManaged.length > 0) {
96
- // Calculate global max version label width across all agents
97
- let globalMaxVerLabel = 0;
118
+ // Calculate column widths across all agents for alignment
119
+ let maxVerLabel = 0;
120
+ let maxEmail = 0;
98
121
  for (const agentId of versionManaged) {
99
122
  const versions = listInstalledVersions(agentId);
100
123
  const globalDefault = getGlobalDefault(agentId);
101
124
  for (const v of versions) {
102
125
  const label = v === globalDefault ? `${v} (default)` : v;
103
- globalMaxVerLabel = Math.max(globalMaxVerLabel, label.length);
126
+ maxVerLabel = Math.max(maxVerLabel, label.length);
127
+ const info = infoMap.get(`${agentId}:${v}`);
128
+ if (info?.email)
129
+ maxEmail = Math.max(maxEmail, info.email.length);
104
130
  }
105
131
  }
106
132
  for (const agentId of versionManaged) {
@@ -120,11 +146,13 @@ async function showInstalledVersions(filterAgentId) {
120
146
  for (const version of sortedVersions) {
121
147
  const isDefault = version === globalDefault;
122
148
  const base = isDefault ? `${version} (default)` : version;
123
- const padded = base.padEnd(globalMaxVerLabel);
124
- const label = isDefault ? `${version}${chalk.green(' (default)')}${' '.repeat(globalMaxVerLabel - base.length)}` : padded;
125
- const vEmail = listEmailMap.get(`${agentId}:${version}`);
126
- const vEmailStr = vEmail ? ` ${chalk.cyan(vEmail)}` : '';
127
- console.log(` ${label}${vEmailStr}`);
149
+ const padded = base.padEnd(maxVerLabel);
150
+ const label = isDefault ? `${version}${chalk.green(' (default)')}${' '.repeat(maxVerLabel - base.length)}` : padded;
151
+ const vInfo = infoMap.get(`${agentId}:${version}`);
152
+ const emailCol = (vInfo?.email || '').padEnd(maxEmail);
153
+ const emailStr = vInfo?.email ? chalk.cyan(emailCol) : ' '.repeat(maxEmail);
154
+ const usageStr = vInfo ? formatUsageStatus(vInfo) : '';
155
+ console.log(` ${label} ${emailStr} ${usageStr}`);
128
156
  if (showPaths) {
129
157
  const versionDir = getVersionDir(agentId, version);
130
158
  console.log(chalk.gray(` ${versionDir}`));
@@ -150,12 +178,14 @@ async function showInstalledVersions(filterAgentId) {
150
178
  const agent = AGENTS[agentId];
151
179
  const cliState = cliStates[agentId];
152
180
  console.log(` ${chalk.bold(agent.name)}`);
153
- const gEmail = globalListEmailMap.get(agentId);
181
+ const gInfo = globalInfoMap.get(agentId);
154
182
  const verLabel = `${cliState?.version || 'installed'} ${chalk.gray('(global)')}`;
155
183
  const verLabelLen = `${cliState?.version || 'installed'} (global)`.length;
156
184
  const padding = ' '.repeat(Math.max(0, globalMaxVerLabel - verLabelLen));
157
- const gEmailStr = gEmail ? ` ${chalk.cyan(gEmail)}` : '';
158
- console.log(` ${verLabel}${padding}${gEmailStr}`);
185
+ const gEmailStr = gInfo?.email ? ` ${chalk.cyan(gInfo.email)}` : '';
186
+ const gUsageStr = gInfo ? formatUsageStatus(gInfo) : '';
187
+ const gUsagePart = gUsageStr ? ` ${gUsageStr}` : '';
188
+ console.log(` ${verLabel}${padding}${gEmailStr}${gUsagePart}`);
159
189
  if (showPaths && cliState?.path) {
160
190
  console.log(chalk.gray(` ${cliState.path}`));
161
191
  }
@@ -364,13 +394,15 @@ async function showAgentResources(agentId, requestedVersion) {
364
394
  }
365
395
  // 1. Agent CLI info
366
396
  console.log(chalk.bold('Agent CLIs\n'));
367
- const email = await getAccountEmail(agentId, getVersionHomePath(agentId, version));
368
- const emailStr = email ? chalk.cyan(` ${email}`) : '';
397
+ const accountInfo = await getAccountInfo(agentId, getVersionHomePath(agentId, version));
398
+ const emailStr = accountInfo.email ? chalk.cyan(` ${accountInfo.email}`) : '';
369
399
  const cli = cliStates[agentId];
370
400
  const status = cli?.installed
371
401
  ? chalk.green(cli.version || 'installed')
372
402
  : chalk.gray('not installed');
373
- console.log(` ${AGENTS[agentId].name.padEnd(14)} ${status}${emailStr}`);
403
+ const usageStr = formatUsageStatus(accountInfo);
404
+ const usagePart = usageStr ? ` ${usageStr}` : '';
405
+ console.log(` ${AGENTS[agentId].name.padEnd(14)} ${status}${emailStr}${usagePart}`);
374
406
  // 2. Resources
375
407
  renderSection('Commands', agentData.commands);
376
408
  renderSection('Skills', agentData.skills);