@agentlensai/cli 0.2.0 → 0.3.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.
@@ -0,0 +1,2 @@
1
+ export declare function runConfigCommand(args: string[]): void;
2
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAKA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA4CrD"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * agentlens config — get/set configuration
3
+ */
4
+ import { loadConfig, saveConfig, maskApiKey } from '../lib/config.js';
5
+ export function runConfigCommand(args) {
6
+ const subcommand = args[0];
7
+ if (subcommand === 'set') {
8
+ const key = args[1];
9
+ const value = args[2];
10
+ if (!key || !value) {
11
+ console.error('Usage: agentlens config set <key> <value>');
12
+ console.error('Keys: url, api-key');
13
+ process.exit(1);
14
+ }
15
+ const config = loadConfig();
16
+ switch (key) {
17
+ case 'url':
18
+ config.url = value;
19
+ break;
20
+ case 'api-key':
21
+ config.apiKey = value;
22
+ break;
23
+ default:
24
+ console.error(`Unknown config key: ${key}`);
25
+ console.error('Valid keys: url, api-key');
26
+ process.exit(1);
27
+ }
28
+ saveConfig(config);
29
+ console.log(`✓ Set ${key}`);
30
+ return;
31
+ }
32
+ if (subcommand === 'get' || !subcommand) {
33
+ const config = loadConfig();
34
+ console.log('AgentLens CLI Configuration:');
35
+ console.log(` url: ${config.url}`);
36
+ console.log(` api-key: ${config.apiKey ? maskApiKey(config.apiKey) : '(not set)'}`);
37
+ return;
38
+ }
39
+ console.error(`Unknown config subcommand: ${subcommand}`);
40
+ console.error('Usage: agentlens config [get|set <key> <value>]');
41
+ process.exit(1);
42
+ }
43
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEtE,MAAM,UAAU,gBAAgB,CAAC,IAAc;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC3D,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,KAAK;gBACR,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC;gBACnB,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;gBACtB,MAAM;YACR;gBACE,OAAO,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;gBAC5C,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAED,UAAU,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACrF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runEventsCommand(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/commands/events.ts"],"names":[],"mappings":"AAQA,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDpE"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * agentlens events — query events
3
+ */
4
+ import { parseArgs } from 'node:util';
5
+ import { createClientFromConfig } from '../lib/client.js';
6
+ import { printTable, printJson, formatTimestamp, truncate } from '../lib/output.js';
7
+ export async function runEventsCommand(argv) {
8
+ const { values } = parseArgs({
9
+ args: argv,
10
+ options: {
11
+ session: { type: 'string', short: 's' },
12
+ type: { type: 'string', short: 't' },
13
+ limit: { type: 'string', short: 'l' },
14
+ json: { type: 'boolean', short: 'j', default: false },
15
+ help: { type: 'boolean', short: 'h', default: false },
16
+ },
17
+ allowPositionals: true,
18
+ });
19
+ if (values.help) {
20
+ console.log(`Usage: agentlens events [options]
21
+
22
+ Options:
23
+ -s, --session <id> Filter by session ID
24
+ -t, --type <type> Filter by event type (e.g. tool_call)
25
+ -l, --limit <n> Max number of events (default: 20)
26
+ -j, --json Output raw JSON
27
+ -h, --help Show help`);
28
+ return;
29
+ }
30
+ const client = createClientFromConfig();
31
+ const limit = values.limit ? parseInt(values.limit, 10) : 20;
32
+ const result = await client.queryEvents({
33
+ sessionId: values.session ?? undefined,
34
+ eventType: values.type ?? undefined,
35
+ limit,
36
+ order: 'desc',
37
+ });
38
+ if (values.json) {
39
+ printJson(result);
40
+ return;
41
+ }
42
+ if (result.events.length === 0) {
43
+ console.log('No events found.');
44
+ return;
45
+ }
46
+ const headers = ['ID', 'Time', 'Session', 'Type', 'Severity', 'Agent'];
47
+ const rows = result.events.map((e) => [
48
+ truncate(e.id, 16),
49
+ formatTimestamp(e.timestamp),
50
+ truncate(e.sessionId, 14),
51
+ e.eventType,
52
+ e.severity,
53
+ truncate(e.agentId, 14),
54
+ ]);
55
+ printTable(headers, rows);
56
+ console.log(`\nShowing ${result.events.length} of ${result.total} events.`);
57
+ }
58
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/commands/events.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEpF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc;IACnD,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;YACvC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;YACpC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;YACrC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;YACrD,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;SACtD;QACD,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;kCAOkB,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC,OAAO,IAAI,SAAS;QACtC,SAAS,EAAG,MAAM,CAAC,IAAkB,IAAI,SAAS;QAClD,KAAK;QACL,KAAK,EAAE,MAAM;KACd,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,SAAS,CAAC,MAAM,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACpC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5B,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC;QACzB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,QAAQ;QACV,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;KACxB,CAAC,CAAC;IAEH,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runLlmCommand(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=llm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/commands/llm.ts"],"names":[],"mappings":"AAwBA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBjE"}
@@ -0,0 +1,226 @@
1
+ /**
2
+ * agentlens llm — LLM call tracking stats, model breakdown, and recent calls
3
+ */
4
+ import { parseArgs } from 'node:util';
5
+ import { createClientFromConfig } from '../lib/client.js';
6
+ import { printTable, printJson, formatTimestamp, truncate } from '../lib/output.js';
7
+ const HELP = `Usage: agentlens llm <subcommand> [options]
8
+
9
+ Subcommands:
10
+ stats Show LLM usage summary
11
+ models List models with cost breakdown
12
+ recent Show recent LLM calls
13
+
14
+ Options:
15
+ --from <date> Start date (ISO 8601)
16
+ --to <date> End date (ISO 8601)
17
+ --agent <id> Filter by agent ID
18
+ --model <name> Filter by model name
19
+ --url <url> Server URL (overrides config)
20
+ -j, --json Output raw JSON
21
+ -h, --help Show help`;
22
+ export async function runLlmCommand(argv) {
23
+ const subcommand = argv[0];
24
+ const rest = argv.slice(1);
25
+ switch (subcommand) {
26
+ case 'stats':
27
+ await runLlmStats(rest);
28
+ break;
29
+ case 'models':
30
+ await runLlmModels(rest);
31
+ break;
32
+ case 'recent':
33
+ await runLlmRecent(rest);
34
+ break;
35
+ case '--help':
36
+ case '-h':
37
+ case undefined:
38
+ console.log(HELP);
39
+ break;
40
+ default:
41
+ console.error(`Unknown llm subcommand: ${subcommand}`);
42
+ console.log(HELP);
43
+ process.exit(1);
44
+ }
45
+ }
46
+ function parseLlmArgs(argv) {
47
+ return parseArgs({
48
+ args: argv,
49
+ options: {
50
+ from: { type: 'string' },
51
+ to: { type: 'string' },
52
+ agent: { type: 'string', short: 'a' },
53
+ model: { type: 'string', short: 'm' },
54
+ url: { type: 'string' },
55
+ json: { type: 'boolean', short: 'j', default: false },
56
+ help: { type: 'boolean', short: 'h', default: false },
57
+ },
58
+ allowPositionals: false,
59
+ });
60
+ }
61
+ function formatCost(usd) {
62
+ return `$${usd.toFixed(4)}`;
63
+ }
64
+ function formatNumber(n) {
65
+ return n.toLocaleString('en-US');
66
+ }
67
+ function formatLatency(ms) {
68
+ return `${formatNumber(Math.round(ms))}ms`;
69
+ }
70
+ /**
71
+ * agentlens llm stats — show LLM usage summary
72
+ */
73
+ async function runLlmStats(argv) {
74
+ const { values } = parseLlmArgs(argv);
75
+ if (values.help) {
76
+ console.log(`Usage: agentlens llm stats [options]
77
+
78
+ Show overall LLM usage summary: total calls, cost, tokens, and latency.
79
+
80
+ Options:
81
+ --from <date> Start date (ISO 8601)
82
+ --to <date> End date (ISO 8601)
83
+ --agent <id> Filter by agent ID
84
+ --model <name> Filter by model name
85
+ --url <url> Server URL (overrides config)
86
+ -j, --json Output raw JSON
87
+ -h, --help Show help`);
88
+ return;
89
+ }
90
+ const client = createClientFromConfig(values.url);
91
+ const analytics = await client.getLlmAnalytics({
92
+ from: values.from ?? undefined,
93
+ to: values.to ?? undefined,
94
+ agentId: values.agent ?? undefined,
95
+ model: values.model ?? undefined,
96
+ });
97
+ if (values.json) {
98
+ printJson(analytics.summary);
99
+ return;
100
+ }
101
+ const s = analytics.summary;
102
+ const totalTokens = s.totalInputTokens + s.totalOutputTokens;
103
+ console.log('');
104
+ console.log('LLM Usage Summary');
105
+ console.log(` Total Calls: ${formatNumber(s.totalCalls)}`);
106
+ console.log(` Total Cost: ${formatCost(s.totalCostUsd)}`);
107
+ console.log(` Total Tokens: ${formatNumber(totalTokens)} (${formatNumber(s.totalInputTokens)} in / ${formatNumber(s.totalOutputTokens)} out)`);
108
+ console.log(` Avg Latency: ${formatLatency(s.avgLatencyMs)}`);
109
+ console.log(` Avg Cost/Call: ${formatCost(s.avgCostPerCall)}`);
110
+ console.log('');
111
+ }
112
+ /**
113
+ * agentlens llm models — list models with cost breakdown
114
+ */
115
+ async function runLlmModels(argv) {
116
+ const { values } = parseLlmArgs(argv);
117
+ if (values.help) {
118
+ console.log(`Usage: agentlens llm models [options]
119
+
120
+ List models used with cost breakdown.
121
+
122
+ Options:
123
+ --from <date> Start date (ISO 8601)
124
+ --to <date> End date (ISO 8601)
125
+ --agent <id> Filter by agent ID
126
+ --model <name> Filter by model name
127
+ --url <url> Server URL (overrides config)
128
+ -j, --json Output raw JSON
129
+ -h, --help Show help`);
130
+ return;
131
+ }
132
+ const client = createClientFromConfig(values.url);
133
+ const analytics = await client.getLlmAnalytics({
134
+ from: values.from ?? undefined,
135
+ to: values.to ?? undefined,
136
+ agentId: values.agent ?? undefined,
137
+ model: values.model ?? undefined,
138
+ });
139
+ if (values.json) {
140
+ printJson(analytics.byModel);
141
+ return;
142
+ }
143
+ if (analytics.byModel.length === 0) {
144
+ console.log('No LLM calls found.');
145
+ return;
146
+ }
147
+ const headers = ['Provider', 'Model', 'Calls', 'Tokens', 'Cost', 'Avg Latency'];
148
+ const rows = analytics.byModel.map((m) => [
149
+ m.provider,
150
+ truncate(m.model, 28),
151
+ formatNumber(m.calls),
152
+ formatNumber(m.inputTokens + m.outputTokens),
153
+ formatCost(m.costUsd),
154
+ formatLatency(m.avgLatencyMs),
155
+ ]);
156
+ printTable(headers, rows);
157
+ console.log(`\n${analytics.byModel.length} model(s).`);
158
+ }
159
+ /**
160
+ * agentlens llm recent — show recent LLM calls
161
+ */
162
+ async function runLlmRecent(argv) {
163
+ const { values } = parseLlmArgs(argv);
164
+ if (values.help) {
165
+ console.log(`Usage: agentlens llm recent [options]
166
+
167
+ Show recent LLM calls with latency and cost.
168
+
169
+ Options:
170
+ --from <date> Start date (ISO 8601)
171
+ --to <date> End date (ISO 8601)
172
+ --agent <id> Filter by agent ID
173
+ --model <name> Filter by model name
174
+ --url <url> Server URL (overrides config)
175
+ -j, --json Output raw JSON
176
+ -h, --help Show help`);
177
+ return;
178
+ }
179
+ const client = createClientFromConfig(values.url);
180
+ // Query recent llm_response events (they carry all the metrics)
181
+ const result = await client.queryEvents({
182
+ eventType: 'llm_response',
183
+ from: values.from ?? undefined,
184
+ to: values.to ?? undefined,
185
+ agentId: values.agent ?? undefined,
186
+ limit: 10,
187
+ order: 'desc',
188
+ });
189
+ if (values.json) {
190
+ printJson(result);
191
+ return;
192
+ }
193
+ if (result.events.length === 0) {
194
+ console.log('No recent LLM calls found.');
195
+ return;
196
+ }
197
+ // Filter by model if specified (server may not support model filter on events query)
198
+ let events = result.events;
199
+ if (values.model) {
200
+ events = events.filter((e) => {
201
+ const p = e.payload;
202
+ return p['model'] === values.model;
203
+ });
204
+ }
205
+ const headers = ['Timestamp', 'Model', 'Tokens', 'Cost', 'Latency', 'Finish'];
206
+ const rows = events.map((e) => {
207
+ const p = e.payload;
208
+ const usage = p['usage'];
209
+ const totalTokens = usage?.['totalTokens'] ?? 0;
210
+ const costUsd = p['costUsd'] ?? 0;
211
+ const latencyMs = p['latencyMs'] ?? 0;
212
+ const model = String(p['model'] ?? 'unknown');
213
+ const finishReason = String(p['finishReason'] ?? '');
214
+ return [
215
+ formatTimestamp(e.timestamp),
216
+ truncate(model, 24),
217
+ formatNumber(totalTokens),
218
+ formatCost(costUsd),
219
+ formatLatency(latencyMs),
220
+ finishReason,
221
+ ];
222
+ });
223
+ printTable(headers, rows);
224
+ console.log(`\nShowing ${events.length} of ${result.total} LLM calls.`);
225
+ }
226
+ //# sourceMappingURL=llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/commands/llm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runSessionsCommand(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"AAcA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEtE"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * agentlens sessions — list and inspect sessions
3
+ */
4
+ import { parseArgs } from 'node:util';
5
+ import { createClientFromConfig } from '../lib/client.js';
6
+ import { printTable, printJson, formatTimestamp, formatDuration, truncate, } from '../lib/output.js';
7
+ export async function runSessionsCommand(argv) {
8
+ const { values, positionals } = parseArgs({
9
+ args: argv,
10
+ options: {
11
+ status: { type: 'string' },
12
+ agent: { type: 'string', short: 'a' },
13
+ limit: { type: 'string', short: 'l' },
14
+ json: { type: 'boolean', short: 'j', default: false },
15
+ help: { type: 'boolean', short: 'h', default: false },
16
+ },
17
+ allowPositionals: true,
18
+ });
19
+ // agentlens sessions show <id>
20
+ if (positionals[0] === 'show') {
21
+ const sessionId = positionals[1];
22
+ if (!sessionId) {
23
+ console.error('Usage: agentlens sessions show <session-id>');
24
+ process.exit(1);
25
+ }
26
+ await showSession(sessionId, values.json ?? false);
27
+ return;
28
+ }
29
+ if (values.help) {
30
+ console.log(`Usage: agentlens sessions [options]
31
+ agentlens sessions show <id>
32
+
33
+ Options:
34
+ --status <status> Filter by status (active, completed, error)
35
+ -a, --agent <id> Filter by agent ID
36
+ -l, --limit <n> Max number of sessions (default: 20)
37
+ -j, --json Output raw JSON
38
+ -h, --help Show help`);
39
+ return;
40
+ }
41
+ const client = createClientFromConfig();
42
+ const limit = values.limit ? parseInt(values.limit, 10) : 20;
43
+ const result = await client.getSessions({
44
+ status: values.status ?? undefined,
45
+ agentId: values.agent ?? undefined,
46
+ limit,
47
+ });
48
+ if (values.json) {
49
+ printJson(result);
50
+ return;
51
+ }
52
+ if (result.sessions.length === 0) {
53
+ console.log('No sessions found.');
54
+ return;
55
+ }
56
+ const headers = ['ID', 'Agent', 'Status', 'Started', 'Duration', 'Events', 'Errors'];
57
+ const rows = result.sessions.map((s) => [
58
+ truncate(s.id, 16),
59
+ truncate(s.agentId, 14),
60
+ s.status,
61
+ formatTimestamp(s.startedAt),
62
+ formatDuration(s.startedAt, s.endedAt),
63
+ String(s.eventCount),
64
+ String(s.errorCount),
65
+ ]);
66
+ printTable(headers, rows);
67
+ console.log(`\nShowing ${result.sessions.length} of ${result.total} sessions.`);
68
+ }
69
+ async function showSession(sessionId, json) {
70
+ const client = createClientFromConfig();
71
+ const [session, timeline] = await Promise.all([
72
+ client.getSession(sessionId),
73
+ client.getSessionTimeline(sessionId),
74
+ ]);
75
+ if (json) {
76
+ printJson({ session, timeline });
77
+ return;
78
+ }
79
+ console.log(`\nSession: ${session.id}`);
80
+ console.log(` Agent: ${session.agentId}${session.agentName ? ` (${session.agentName})` : ''}`);
81
+ console.log(` Status: ${session.status}`);
82
+ console.log(` Started: ${formatTimestamp(session.startedAt)}`);
83
+ console.log(` Duration: ${formatDuration(session.startedAt, session.endedAt)}`);
84
+ console.log(` Events: ${session.eventCount} total, ${session.toolCallCount} tool calls, ${session.errorCount} errors`);
85
+ if (session.totalCostUsd > 0) {
86
+ console.log(` Cost: $${session.totalCostUsd.toFixed(4)}`);
87
+ }
88
+ console.log(` Chain: ${timeline.chainValid ? '✓ valid' : '✗ broken'}`);
89
+ if (timeline.events.length > 0) {
90
+ console.log(`\nTimeline (${timeline.events.length} events):`);
91
+ const headers = ['Time', 'Type', 'Severity', 'Summary'];
92
+ const rows = timeline.events.map((e) => [
93
+ formatTimestamp(e.timestamp),
94
+ e.eventType,
95
+ e.severity,
96
+ truncate(summarizePayload(e.eventType, e.payload), 40),
97
+ ]);
98
+ printTable(headers, rows);
99
+ }
100
+ }
101
+ function summarizePayload(eventType, payload) {
102
+ if (!payload || typeof payload !== 'object')
103
+ return '';
104
+ const p = payload;
105
+ switch (eventType) {
106
+ case 'tool_call':
107
+ return `${p['toolName'] ?? 'unknown'}()`;
108
+ case 'tool_response':
109
+ return `${p['toolName'] ?? ''} → ${p['durationMs'] ?? '?'}ms`;
110
+ case 'tool_error':
111
+ return `${p['toolName'] ?? ''}: ${p['error'] ?? 'error'}`;
112
+ case 'session_started':
113
+ return p['agentName'] ? String(p['agentName']) : '';
114
+ case 'session_ended':
115
+ return String(p['reason'] ?? 'ended');
116
+ default:
117
+ return '';
118
+ }
119
+ }
120
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runTailCommand(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=tail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tail.d.ts","sourceRoot":"","sources":["../../src/commands/tail.ts"],"names":[],"mappings":"AAUA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoGlE"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * agentlens tail — stream live events via SSE
3
+ *
4
+ * Connects to the /api/stream SSE endpoint. The endpoint is being built
5
+ * in Epic 14 in parallel — the command structure is ready for it.
6
+ */
7
+ import { parseArgs } from 'node:util';
8
+ import { loadConfig } from '../lib/config.js';
9
+ import { formatTimestamp, truncate } from '../lib/output.js';
10
+ export async function runTailCommand(argv) {
11
+ const { values } = parseArgs({
12
+ args: argv,
13
+ options: {
14
+ session: { type: 'string', short: 's' },
15
+ type: { type: 'string', short: 't' },
16
+ json: { type: 'boolean', short: 'j', default: false },
17
+ help: { type: 'boolean', short: 'h', default: false },
18
+ },
19
+ allowPositionals: false,
20
+ });
21
+ if (values.help) {
22
+ console.log(`Usage: agentlens tail [options]
23
+
24
+ Stream live events as they arrive.
25
+
26
+ Options:
27
+ -s, --session <id> Filter by session ID
28
+ -t, --type <type> Filter by event type
29
+ -j, --json Output raw JSON per event
30
+ -h, --help Show help
31
+
32
+ Press Ctrl+C to stop.`);
33
+ return;
34
+ }
35
+ const config = loadConfig();
36
+ const baseUrl = config.url.replace(/\/+$/, '');
37
+ // Build SSE URL with filters
38
+ const params = new URLSearchParams();
39
+ if (values.session)
40
+ params.set('sessionId', values.session);
41
+ if (values.type)
42
+ params.set('eventType', values.type);
43
+ const sseUrl = `${baseUrl}/api/stream${params.toString() ? '?' + params.toString() : ''}`;
44
+ const headers = {
45
+ 'Accept': 'text/event-stream',
46
+ };
47
+ if (config.apiKey) {
48
+ headers['Authorization'] = `Bearer ${config.apiKey}`;
49
+ }
50
+ console.log(`Connecting to ${baseUrl}...`);
51
+ // Use native fetch with streaming (works in Node.js ≥ 18)
52
+ let response;
53
+ try {
54
+ response = await fetch(sseUrl, {
55
+ headers,
56
+ signal: createAbortOnSigint(),
57
+ });
58
+ }
59
+ catch (err) {
60
+ if (err.name === 'AbortError') {
61
+ console.log('\nDisconnected.');
62
+ return;
63
+ }
64
+ console.error(`Failed to connect: ${err instanceof Error ? err.message : String(err)}`);
65
+ process.exit(1);
66
+ }
67
+ if (!response.ok) {
68
+ const text = await response.text().catch(() => '');
69
+ console.error(`Server returned ${response.status}: ${text}`);
70
+ process.exit(1);
71
+ }
72
+ if (!response.body) {
73
+ console.error('No response body (streaming not supported)');
74
+ process.exit(1);
75
+ }
76
+ console.log('Connected. Streaming events (Ctrl+C to stop)...\n');
77
+ // Parse SSE stream
78
+ const decoder = new TextDecoder();
79
+ let buffer = '';
80
+ try {
81
+ for await (const chunk of response.body) {
82
+ buffer += decoder.decode(chunk, { stream: true });
83
+ // Process complete SSE messages (double newline separated)
84
+ const messages = buffer.split('\n\n');
85
+ buffer = messages.pop() ?? '';
86
+ for (const msg of messages) {
87
+ processSSEMessage(msg, values.json ?? false);
88
+ }
89
+ }
90
+ }
91
+ catch (err) {
92
+ if (err.name === 'AbortError') {
93
+ // Normal Ctrl+C
94
+ }
95
+ else {
96
+ console.error(`\nStream error: ${err instanceof Error ? err.message : String(err)}`);
97
+ }
98
+ }
99
+ console.log('\nDisconnected.');
100
+ }
101
+ /**
102
+ * Parse and display a single SSE message.
103
+ */
104
+ function processSSEMessage(raw, jsonOutput) {
105
+ let eventType = 'message';
106
+ let data = '';
107
+ for (const line of raw.split('\n')) {
108
+ if (line.startsWith('event:')) {
109
+ eventType = line.slice(6).trim();
110
+ }
111
+ else if (line.startsWith('data:')) {
112
+ data += line.slice(5).trim();
113
+ }
114
+ }
115
+ // Skip heartbeats
116
+ if (eventType === 'heartbeat')
117
+ return;
118
+ if (!data)
119
+ return;
120
+ if (jsonOutput) {
121
+ console.log(data);
122
+ return;
123
+ }
124
+ // Try to parse as event JSON
125
+ try {
126
+ const event = JSON.parse(data);
127
+ const ts = typeof event['timestamp'] === 'string' ? formatTimestamp(event['timestamp']) : '';
128
+ const type = event['eventType'] ?? eventType;
129
+ const severity = event['severity'] ?? 'info';
130
+ const session = truncate(String(event['sessionId'] ?? ''), 14);
131
+ const agent = truncate(String(event['agentId'] ?? ''), 14);
132
+ console.log(`[${ts}] ${String(type).padEnd(16)} ${String(severity).padEnd(8)} ${session} ${agent}`);
133
+ }
134
+ catch {
135
+ // Raw message
136
+ console.log(`[${eventType}] ${truncate(data, 100)}`);
137
+ }
138
+ }
139
+ /**
140
+ * Create an AbortSignal that triggers on SIGINT (Ctrl+C).
141
+ */
142
+ function createAbortOnSigint() {
143
+ const controller = new AbortController();
144
+ const handler = () => {
145
+ controller.abort();
146
+ process.removeListener('SIGINT', handler);
147
+ };
148
+ process.on('SIGINT', handler);
149
+ return controller.signal;
150
+ }
151
+ //# sourceMappingURL=tail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tail.js","sourceRoot":"","sources":["../../src/commands/tail.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc;IACjD,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;YACvC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;YACpC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;YACrD,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;SACtD;QACD,gBAAgB,EAAE,KAAK;KACxB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;sBAUM,CAAC,CAAC;QACpB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE/C,6BAA6B;IAC7B,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,IAAI,MAAM,CAAC,OAAO;QAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,MAAM,CAAC,IAAI;QAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAEtD,MAAM,MAAM,GAAG,GAAG,OAAO,cAAc,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAE1F,MAAM,OAAO,GAA2B;QACtC,QAAQ,EAAE,mBAAmB;KAC9B,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,KAAK,CAAC,CAAC;IAE3C,0DAA0D;IAC1D,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;YAC7B,OAAO;YACP,MAAM,EAAE,mBAAmB,EAAE;SAC9B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAAa,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,sBAAsB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,KAAK,CAAC,mBAAmB,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IAEjE,mBAAmB;IACnB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,CAAC,IAAiC,EAAE,CAAC;YACrE,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAElD,2DAA2D;YAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAE9B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAAa,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACzC,gBAAgB;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,GAAW,EAAE,UAAmB;IACzD,IAAI,SAAS,GAAG,SAAS,CAAC;IAC1B,IAAI,IAAI,GAAG,EAAE,CAAC;IAEd,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,SAAS,KAAK,WAAW;QAAE,OAAO;IACtC,IAAI,CAAC,IAAI;QAAE,OAAO;IAElB,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;QAC1D,MAAM,EAAE,GAAG,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC;QAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC;QAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAE3D,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;IACvG,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,SAAS,KAAK,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB;IAC1B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,UAAU,CAAC,MAAM,CAAC;AAC3B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,8 @@
1
+ #!/usr/bin/env node
1
2
  /**
2
- * @agentlens/cli — Command-line interface for AgentLens
3
+ * @agentlensai/cli — Command-line interface for AgentLens
4
+ *
5
+ * Uses node:util parseArgs for lightweight argument parsing.
3
6
  */
4
- export declare const PACKAGE_NAME: "@agentlens/cli";
7
+ export {};
5
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,YAAY,EAAG,gBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
package/dist/index.js CHANGED
@@ -1,5 +1,87 @@
1
+ #!/usr/bin/env node
1
2
  /**
2
- * @agentlens/cli — Command-line interface for AgentLens
3
+ * @agentlensai/cli — Command-line interface for AgentLens
4
+ *
5
+ * Uses node:util parseArgs for lightweight argument parsing.
3
6
  */
4
- export const PACKAGE_NAME = '@agentlens/cli';
7
+ import { runConfigCommand } from './commands/config.js';
8
+ import { runEventsCommand } from './commands/events.js';
9
+ import { runLlmCommand } from './commands/llm.js';
10
+ import { runSessionsCommand } from './commands/sessions.js';
11
+ import { runTailCommand } from './commands/tail.js';
12
+ const HELP = `AgentLens CLI — Observability for AI agents
13
+
14
+ Usage: agentlens <command> [options]
15
+
16
+ Commands:
17
+ config Get or set configuration (url, api-key)
18
+ events Query events
19
+ sessions List and inspect sessions
20
+ tail Stream live events (SSE)
21
+ llm LLM call tracking (stats, models, recent)
22
+
23
+ Run "agentlens <command> --help" for command-specific help.
24
+
25
+ Configuration:
26
+ agentlens config set url http://localhost:3400
27
+ agentlens config set api-key als_xxx
28
+ agentlens config get
29
+ `;
30
+ async function main() {
31
+ const args = process.argv.slice(2);
32
+ const command = args[0];
33
+ const rest = args.slice(1);
34
+ switch (command) {
35
+ case 'config':
36
+ runConfigCommand(rest);
37
+ break;
38
+ case 'events':
39
+ await runEventsCommand(rest);
40
+ break;
41
+ case 'llm':
42
+ await runLlmCommand(rest);
43
+ break;
44
+ case 'sessions':
45
+ await runSessionsCommand(rest);
46
+ break;
47
+ case 'tail':
48
+ await runTailCommand(rest);
49
+ break;
50
+ case '--help':
51
+ case '-h':
52
+ case undefined:
53
+ console.log(HELP);
54
+ break;
55
+ case '--version':
56
+ case '-v':
57
+ console.log('0.0.0');
58
+ break;
59
+ default:
60
+ console.error(`Unknown command: ${command}`);
61
+ console.log(HELP);
62
+ process.exit(1);
63
+ }
64
+ }
65
+ main().catch((err) => {
66
+ if (err && typeof err === 'object' && 'name' in err) {
67
+ const e = err;
68
+ // Show friendly error for SDK errors
69
+ if (e.name === 'ConnectionError') {
70
+ console.error(`Error: Cannot connect to AgentLens server.`);
71
+ console.error(` ${e.message}`);
72
+ console.error(`\nMake sure the server is running and check your config with: agentlens config get`);
73
+ }
74
+ else if (e.name === 'AuthenticationError') {
75
+ console.error(`Error: Authentication failed.`);
76
+ console.error(` Set your API key with: agentlens config set api-key <key>`);
77
+ }
78
+ else {
79
+ console.error(`Error: ${e.message}`);
80
+ }
81
+ }
82
+ else {
83
+ console.error(`Error: ${err}`);
84
+ }
85
+ process.exit(1);
86
+ });
5
87
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;CAiBZ,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,QAAQ;YACX,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM;QAER,KAAK,QAAQ;YACX,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM;QAER,KAAK,KAAK;YACR,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM;QAER,KAAK,UAAU;YACb,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM;QAER,KAAK,MAAM;YACT,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM;QAER,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,SAAS;YACZ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM;QAER,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,MAAM;QAER;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;QACpD,MAAM,CAAC,GAAG,GAAyD,CAAC;QACpE,qCAAqC;QACrC,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC5D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,oFAAoF,CAAC,CAAC;QACtG,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Create an AgentLensClient from CLI config.
3
+ *
4
+ * @param urlOverride - Optional URL that takes precedence over the stored config.
5
+ */
6
+ import { AgentLensClient } from '@agentlensai/sdk';
7
+ export declare function createClientFromConfig(urlOverride?: string): AgentLensClient;
8
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,wBAAgB,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,eAAe,CAM5E"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Create an AgentLensClient from CLI config.
3
+ *
4
+ * @param urlOverride - Optional URL that takes precedence over the stored config.
5
+ */
6
+ import { AgentLensClient } from '@agentlensai/sdk';
7
+ import { loadConfig } from './config.js';
8
+ export function createClientFromConfig(urlOverride) {
9
+ const config = loadConfig();
10
+ return new AgentLensClient({
11
+ url: urlOverride ?? config.url,
12
+ apiKey: config.apiKey,
13
+ });
14
+ }
15
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,sBAAsB,CAAC,WAAoB;IACzD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,IAAI,eAAe,CAAC;QACzB,GAAG,EAAE,WAAW,IAAI,MAAM,CAAC,GAAG;QAC9B,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,17 @@
1
+ export interface CliConfig {
2
+ url: string;
3
+ apiKey?: string;
4
+ }
5
+ /**
6
+ * Load config from ~/.agentlens/config.json (returns defaults if missing).
7
+ */
8
+ export declare function loadConfig(): CliConfig;
9
+ /**
10
+ * Save config to ~/.agentlens/config.json.
11
+ */
12
+ export declare function saveConfig(config: CliConfig): void;
13
+ /**
14
+ * Mask an API key for display: show first 8 chars + mask the rest.
15
+ */
16
+ export declare function maskApiKey(key: string): string;
17
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AASD;;GAEG;AACH,wBAAgB,UAAU,IAAI,SAAS,CAOtC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAGlD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG9C"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * CLI Configuration — stored in ~/.agentlens/config.json
3
+ */
4
+ import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';
5
+ import { join } from 'node:path';
6
+ import { homedir } from 'node:os';
7
+ const CONFIG_DIR = join(homedir(), '.agentlens');
8
+ const CONFIG_FILE = join(CONFIG_DIR, 'config.json');
9
+ const DEFAULT_CONFIG = {
10
+ url: 'http://localhost:3400',
11
+ };
12
+ /**
13
+ * Load config from ~/.agentlens/config.json (returns defaults if missing).
14
+ */
15
+ export function loadConfig() {
16
+ try {
17
+ const raw = readFileSync(CONFIG_FILE, 'utf-8');
18
+ return { ...DEFAULT_CONFIG, ...JSON.parse(raw) };
19
+ }
20
+ catch {
21
+ return { ...DEFAULT_CONFIG };
22
+ }
23
+ }
24
+ /**
25
+ * Save config to ~/.agentlens/config.json.
26
+ */
27
+ export function saveConfig(config) {
28
+ mkdirSync(CONFIG_DIR, { recursive: true });
29
+ writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2) + '\n', 'utf-8');
30
+ }
31
+ /**
32
+ * Mask an API key for display: show first 8 chars + mask the rest.
33
+ */
34
+ export function maskApiKey(key) {
35
+ if (key.length <= 8)
36
+ return key;
37
+ return key.slice(0, 8) + '•'.repeat(Math.min(key.length - 8, 24));
38
+ }
39
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAOlC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AACjD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEpD,MAAM,cAAc,GAAc;IAChC,GAAG,EAAE,uBAAuB;CAC7B,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAiB;IAC1C,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAChC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * CLI Output Formatting Utilities
3
+ */
4
+ /**
5
+ * Print data as a simple aligned table to stdout.
6
+ */
7
+ export declare function printTable(headers: string[], rows: string[][]): void;
8
+ /**
9
+ * Print JSON to stdout (pretty if tty, compact otherwise).
10
+ */
11
+ export declare function printJson(data: unknown): void;
12
+ /**
13
+ * Format a timestamp for table display.
14
+ */
15
+ export declare function formatTimestamp(ts: string): string;
16
+ /**
17
+ * Format a duration in milliseconds to a human-readable string.
18
+ */
19
+ export declare function formatDuration(startedAt: string, endedAt?: string): string;
20
+ /**
21
+ * Truncate a string to a max length with "…" suffix.
22
+ */
23
+ export declare function truncate(str: string, max: number): string;
24
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,EAAE,EAAE,GACf,IAAI,CAeN;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAG7C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAclD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ1E;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGzD"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * CLI Output Formatting Utilities
3
+ */
4
+ /**
5
+ * Print data as a simple aligned table to stdout.
6
+ */
7
+ export function printTable(headers, rows) {
8
+ const colWidths = headers.map((h, i) => {
9
+ const maxData = rows.reduce((max, row) => Math.max(max, (row[i] ?? '').length), 0);
10
+ return Math.max(h.length, maxData);
11
+ });
12
+ const sep = colWidths.map((w) => '─'.repeat(w + 2)).join('┼');
13
+ const formatRow = (cells) => cells.map((cell, i) => ` ${(cell ?? '').padEnd(colWidths[i])} `).join('│');
14
+ console.log(formatRow(headers));
15
+ console.log(sep);
16
+ for (const row of rows) {
17
+ console.log(formatRow(row));
18
+ }
19
+ }
20
+ /**
21
+ * Print JSON to stdout (pretty if tty, compact otherwise).
22
+ */
23
+ export function printJson(data) {
24
+ const indent = process.stdout.isTTY ? 2 : 0;
25
+ console.log(JSON.stringify(data, null, indent));
26
+ }
27
+ /**
28
+ * Format a timestamp for table display.
29
+ */
30
+ export function formatTimestamp(ts) {
31
+ try {
32
+ const d = new Date(ts);
33
+ return d.toLocaleString('en-US', {
34
+ month: 'short',
35
+ day: '2-digit',
36
+ hour: '2-digit',
37
+ minute: '2-digit',
38
+ second: '2-digit',
39
+ hour12: false,
40
+ });
41
+ }
42
+ catch {
43
+ return ts;
44
+ }
45
+ }
46
+ /**
47
+ * Format a duration in milliseconds to a human-readable string.
48
+ */
49
+ export function formatDuration(startedAt, endedAt) {
50
+ if (!endedAt)
51
+ return 'running';
52
+ const ms = new Date(endedAt).getTime() - new Date(startedAt).getTime();
53
+ if (ms < 1000)
54
+ return `${ms}ms`;
55
+ if (ms < 60_000)
56
+ return `${(ms / 1000).toFixed(1)}s`;
57
+ const mins = Math.floor(ms / 60_000);
58
+ const secs = Math.floor((ms % 60_000) / 1000);
59
+ return `${mins}m${secs}s`;
60
+ }
61
+ /**
62
+ * Truncate a string to a max length with "…" suffix.
63
+ */
64
+ export function truncate(str, max) {
65
+ if (str.length <= max)
66
+ return str;
67
+ return str.slice(0, max - 1) + '…';
68
+ }
69
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentlensai/cli",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Command-line interface for AgentLens — query events, sessions, and manage your observability server",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -37,7 +37,7 @@
37
37
  "dist"
38
38
  ],
39
39
  "dependencies": {
40
- "@agentlensai/sdk": "0.2.0"
40
+ "@agentlensai/sdk": "0.3.0"
41
41
  },
42
42
  "scripts": {
43
43
  "build": "tsc -b",