@agentlensai/cli 0.3.0 → 0.6.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,373 @@
1
+ /**
2
+ * agentlens lessons — Manage agent lessons (CRUD + search)
3
+ */
4
+ import { parseArgs } from 'node:util';
5
+ import { createClientFromConfig } from '../lib/client.js';
6
+ import { printTable, printJson, truncate, formatTimestamp } from '../lib/output.js';
7
+ const HELP = `Usage: agentlens lessons <subcommand> [options]
8
+
9
+ Manage agent lessons — distilled insights and knowledge.
10
+
11
+ Subcommands:
12
+ list List lessons
13
+ create Create a new lesson
14
+ get <id> Get a lesson by ID
15
+ update <id> Update a lesson
16
+ delete <id> Delete (archive) a lesson
17
+ search <query> Search lessons by text
18
+
19
+ Options (common):
20
+ --url <url> Server URL (overrides config)
21
+ -j, --json Output raw JSON
22
+ -h, --help Show help
23
+
24
+ Options (list):
25
+ --category <cat> Filter by category
26
+ --importance <level> Filter by importance: low|normal|high|critical
27
+ --agent <id> Filter by agent ID
28
+ --limit <n> Max results (default: 20)
29
+ --offset <n> Pagination offset
30
+
31
+ Options (create):
32
+ --title <title> Lesson title (required)
33
+ --content <text> Lesson content (required)
34
+ --category <cat> Category (default: general)
35
+ --importance <level> Importance: low|normal|high|critical (default: normal)
36
+ --agent <id> Agent ID to scope the lesson to
37
+
38
+ Options (update):
39
+ --title <title> New title
40
+ --content <text> New content
41
+ --category <cat> New category
42
+ --importance <level> New importance level
43
+
44
+ Examples:
45
+ agentlens lessons list
46
+ agentlens lessons list --category deployment --importance high
47
+ agentlens lessons create --title "Always run tests" --content "Run test suite before deploying" --category deployment
48
+ agentlens lessons get abc123
49
+ agentlens lessons update abc123 --content "updated content"
50
+ agentlens lessons delete abc123
51
+ agentlens lessons search "deployment best practices"`;
52
+ export async function runLessonsCommand(argv) {
53
+ const subcommand = argv[0];
54
+ const rest = argv.slice(1);
55
+ switch (subcommand) {
56
+ case 'list':
57
+ await runLessonsList(rest);
58
+ break;
59
+ case 'create':
60
+ await runLessonsCreate(rest);
61
+ break;
62
+ case 'get':
63
+ await runLessonsGet(rest);
64
+ break;
65
+ case 'update':
66
+ await runLessonsUpdate(rest);
67
+ break;
68
+ case 'delete':
69
+ await runLessonsDelete(rest);
70
+ break;
71
+ case 'search':
72
+ await runLessonsSearch(rest);
73
+ break;
74
+ case '--help':
75
+ case '-h':
76
+ case undefined:
77
+ console.log(HELP);
78
+ break;
79
+ default:
80
+ console.error(`Unknown lessons subcommand: ${subcommand}`);
81
+ console.log(HELP);
82
+ process.exit(1);
83
+ }
84
+ }
85
+ function parseLessonsArgs(argv) {
86
+ return parseArgs({
87
+ args: argv,
88
+ options: {
89
+ title: { type: 'string' },
90
+ content: { type: 'string' },
91
+ category: { type: 'string' },
92
+ importance: { type: 'string' },
93
+ agent: { type: 'string', short: 'a' },
94
+ limit: { type: 'string', short: 'l' },
95
+ offset: { type: 'string' },
96
+ url: { type: 'string' },
97
+ json: { type: 'boolean', short: 'j', default: false },
98
+ help: { type: 'boolean', short: 'h', default: false },
99
+ },
100
+ allowPositionals: true,
101
+ });
102
+ }
103
+ /**
104
+ * agentlens lessons list
105
+ */
106
+ async function runLessonsList(argv) {
107
+ const { values } = parseLessonsArgs(argv);
108
+ if (values.help) {
109
+ console.log(`Usage: agentlens lessons list [options]
110
+
111
+ List lessons with optional filters.
112
+
113
+ Options:
114
+ --category <cat> Filter by category
115
+ --importance <level> Filter by importance: low|normal|high|critical
116
+ --agent <id> Filter by agent ID
117
+ --limit <n> Max results (default: 20)
118
+ --offset <n> Pagination offset
119
+ --url <url> Server URL
120
+ -j, --json Output raw JSON
121
+ -h, --help Show help`);
122
+ return;
123
+ }
124
+ const client = createClientFromConfig(values.url);
125
+ const result = await client.getLessons({
126
+ category: values.category ?? undefined,
127
+ importance: values.importance ?? undefined,
128
+ agentId: values.agent ?? undefined,
129
+ limit: values.limit ? parseInt(values.limit, 10) : 20,
130
+ offset: values.offset ? parseInt(values.offset, 10) : undefined,
131
+ });
132
+ if (values.json) {
133
+ printJson(result);
134
+ return;
135
+ }
136
+ if (result.lessons.length === 0) {
137
+ console.log('No lessons found.');
138
+ return;
139
+ }
140
+ const headers = ['ID', 'Category', 'Importance', 'Title', 'Created'];
141
+ const rows = result.lessons.map((l) => [
142
+ truncate(l.id, 16),
143
+ l.category,
144
+ l.importance,
145
+ truncate(l.title, 40),
146
+ formatTimestamp(l.createdAt),
147
+ ]);
148
+ printTable(headers, rows);
149
+ console.log(`\n${result.lessons.length} of ${result.total} lesson(s).`);
150
+ }
151
+ /**
152
+ * agentlens lessons create
153
+ */
154
+ async function runLessonsCreate(argv) {
155
+ const { values } = parseLessonsArgs(argv);
156
+ if (values.help) {
157
+ console.log(`Usage: agentlens lessons create [options]
158
+
159
+ Create a new lesson.
160
+
161
+ Options:
162
+ --title <title> Lesson title (required)
163
+ --content <text> Lesson content (required)
164
+ --category <cat> Category (default: general)
165
+ --importance <level> Importance: low|normal|high|critical (default: normal)
166
+ --agent <id> Agent ID
167
+ --url <url> Server URL
168
+ -j, --json Output raw JSON
169
+ -h, --help Show help`);
170
+ return;
171
+ }
172
+ if (!values.title) {
173
+ console.error('Error: --title is required.');
174
+ process.exit(1);
175
+ }
176
+ if (!values.content) {
177
+ console.error('Error: --content is required.');
178
+ process.exit(1);
179
+ }
180
+ const client = createClientFromConfig(values.url);
181
+ const lesson = await client.createLesson({
182
+ title: values.title,
183
+ content: values.content,
184
+ category: values.category ?? undefined,
185
+ importance: values.importance ?? undefined,
186
+ agentId: values.agent ?? undefined,
187
+ });
188
+ if (values.json) {
189
+ printJson(lesson);
190
+ return;
191
+ }
192
+ console.log(`\nLesson created: ${lesson.id}`);
193
+ console.log(` Title: ${lesson.title}`);
194
+ console.log(` Category: ${lesson.category}`);
195
+ console.log(` Importance: ${lesson.importance}`);
196
+ console.log('');
197
+ }
198
+ /**
199
+ * agentlens lessons get <id>
200
+ */
201
+ async function runLessonsGet(argv) {
202
+ const { values, positionals } = parseLessonsArgs(argv);
203
+ if (values.help) {
204
+ console.log(`Usage: agentlens lessons get <id> [options]
205
+
206
+ Get a lesson by ID with full details.
207
+
208
+ Options:
209
+ --url <url> Server URL
210
+ -j, --json Output raw JSON
211
+ -h, --help Show help`);
212
+ return;
213
+ }
214
+ const id = positionals[0];
215
+ if (!id) {
216
+ console.error('Error: Lesson ID is required.');
217
+ process.exit(1);
218
+ }
219
+ const client = createClientFromConfig(values.url);
220
+ const lesson = await client.getLesson(id);
221
+ if (values.json) {
222
+ printJson(lesson);
223
+ return;
224
+ }
225
+ console.log('');
226
+ console.log(`Lesson: ${lesson.id}`);
227
+ console.log(` Title: ${lesson.title}`);
228
+ console.log(` Category: ${lesson.category}`);
229
+ console.log(` Importance: ${lesson.importance}`);
230
+ console.log(` Created: ${formatTimestamp(lesson.createdAt)}`);
231
+ console.log(` Updated: ${formatTimestamp(lesson.updatedAt)}`);
232
+ console.log(` Access Count: ${lesson.accessCount}`);
233
+ if (lesson.agentId) {
234
+ console.log(` Agent: ${lesson.agentId}`);
235
+ }
236
+ if (lesson.sourceSessionId) {
237
+ console.log(` Source Session: ${lesson.sourceSessionId}`);
238
+ }
239
+ console.log('');
240
+ console.log('Content:');
241
+ console.log(` ${lesson.content}`);
242
+ console.log('');
243
+ }
244
+ /**
245
+ * agentlens lessons update <id>
246
+ */
247
+ async function runLessonsUpdate(argv) {
248
+ const { values, positionals } = parseLessonsArgs(argv);
249
+ if (values.help) {
250
+ console.log(`Usage: agentlens lessons update <id> [options]
251
+
252
+ Update an existing lesson.
253
+
254
+ Options:
255
+ --title <title> New title
256
+ --content <text> New content
257
+ --category <cat> New category
258
+ --importance <level> New importance level
259
+ --url <url> Server URL
260
+ -j, --json Output raw JSON
261
+ -h, --help Show help`);
262
+ return;
263
+ }
264
+ const id = positionals[0];
265
+ if (!id) {
266
+ console.error('Error: Lesson ID is required.');
267
+ process.exit(1);
268
+ }
269
+ const updates = {};
270
+ if (values.title)
271
+ updates.title = values.title;
272
+ if (values.content)
273
+ updates.content = values.content;
274
+ if (values.category)
275
+ updates.category = values.category;
276
+ if (values.importance)
277
+ updates.importance = values.importance;
278
+ if (Object.keys(updates).length === 0) {
279
+ console.error('Error: At least one field to update is required (--title, --content, --category, --importance).');
280
+ process.exit(1);
281
+ }
282
+ const client = createClientFromConfig(values.url);
283
+ const lesson = await client.updateLesson(id, updates);
284
+ if (values.json) {
285
+ printJson(lesson);
286
+ return;
287
+ }
288
+ console.log(`\nLesson updated: ${lesson.id}`);
289
+ console.log(` Title: ${lesson.title}`);
290
+ console.log(` Category: ${lesson.category}`);
291
+ console.log(` Importance: ${lesson.importance}`);
292
+ console.log('');
293
+ }
294
+ /**
295
+ * agentlens lessons delete <id>
296
+ */
297
+ async function runLessonsDelete(argv) {
298
+ const { values, positionals } = parseLessonsArgs(argv);
299
+ if (values.help) {
300
+ console.log(`Usage: agentlens lessons delete <id> [options]
301
+
302
+ Delete (archive) a lesson.
303
+
304
+ Options:
305
+ --url <url> Server URL
306
+ -j, --json Output raw JSON
307
+ -h, --help Show help`);
308
+ return;
309
+ }
310
+ const id = positionals[0];
311
+ if (!id) {
312
+ console.error('Error: Lesson ID is required.');
313
+ process.exit(1);
314
+ }
315
+ const client = createClientFromConfig(values.url);
316
+ const result = await client.deleteLesson(id);
317
+ if (values.json) {
318
+ printJson(result);
319
+ return;
320
+ }
321
+ console.log(`Lesson ${id} archived successfully.`);
322
+ }
323
+ /**
324
+ * agentlens lessons search <query>
325
+ */
326
+ async function runLessonsSearch(argv) {
327
+ const { values, positionals } = parseLessonsArgs(argv);
328
+ if (values.help) {
329
+ console.log(`Usage: agentlens lessons search <query> [options]
330
+
331
+ Search lessons by text.
332
+
333
+ Options:
334
+ --category <cat> Filter by category
335
+ --agent <id> Filter by agent ID
336
+ --limit <n> Max results (default: 20)
337
+ --url <url> Server URL
338
+ -j, --json Output raw JSON
339
+ -h, --help Show help`);
340
+ return;
341
+ }
342
+ const query = positionals[0];
343
+ if (!query) {
344
+ console.error('Error: Search query is required.');
345
+ process.exit(1);
346
+ }
347
+ const client = createClientFromConfig(values.url);
348
+ const result = await client.getLessons({
349
+ search: query,
350
+ category: values.category ?? undefined,
351
+ agentId: values.agent ?? undefined,
352
+ limit: values.limit ? parseInt(values.limit, 10) : 20,
353
+ });
354
+ if (values.json) {
355
+ printJson(result);
356
+ return;
357
+ }
358
+ if (result.lessons.length === 0) {
359
+ console.log(`No lessons found matching "${query}".`);
360
+ return;
361
+ }
362
+ const headers = ['ID', 'Category', 'Importance', 'Title', 'Preview'];
363
+ const rows = result.lessons.map((l) => [
364
+ truncate(l.id, 16),
365
+ l.category,
366
+ l.importance,
367
+ truncate(l.title, 30),
368
+ truncate(l.content.replace(/\n/g, ' '), 40),
369
+ ]);
370
+ printTable(headers, rows);
371
+ console.log(`\n${result.lessons.length} of ${result.total} lesson(s) matching "${query}".`);
372
+ }
373
+ //# sourceMappingURL=lessons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lessons.js","sourceRoot":"","sources":["../../src/commands/lessons.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runOptimizeCommand(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=optimize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize.d.ts","sourceRoot":"","sources":["../../src/commands/optimize.ts"],"names":[],"mappings":"AAuCA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDtE"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * agentlens optimize — Cost optimization recommendations
3
+ */
4
+ import { parseArgs } from 'node:util';
5
+ import { createClientFromConfig } from '../lib/client.js';
6
+ import { printTable, printJson, truncate } from '../lib/output.js';
7
+ const HELP = `Usage: agentlens optimize [options]
8
+
9
+ Display cost optimization recommendations.
10
+
11
+ Options:
12
+ --agent <id> Filter recommendations for a specific agent
13
+ --period <days> Analysis period in days (default: 30)
14
+ --limit <n> Maximum recommendations (default: 10)
15
+ --format <fmt> Output format: table (default) or json
16
+ --url <url> Server URL (overrides config)
17
+ -h, --help Show help
18
+
19
+ Examples:
20
+ agentlens optimize All recommendations
21
+ agentlens optimize --agent my-agent Agent-specific recommendations
22
+ agentlens optimize --period 7 --limit 5 Last 7 days, top 5
23
+ agentlens optimize --format json Raw JSON output`;
24
+ /** Color-code a confidence level */
25
+ function colorConfidence(confidence) {
26
+ if (confidence === 'high')
27
+ return `\x1b[32m${confidence}\x1b[0m`; // green
28
+ if (confidence === 'medium')
29
+ return `\x1b[33m${confidence}\x1b[0m`; // yellow
30
+ return `\x1b[31m${confidence}\x1b[0m`; // red
31
+ }
32
+ /** Color-code a score: green (≥75), yellow (50-74), red (<50) */
33
+ function colorScore(score) {
34
+ if (score >= 75)
35
+ return `\x1b[32m${score}\x1b[0m`;
36
+ if (score >= 50)
37
+ return `\x1b[33m${score}\x1b[0m`;
38
+ return `\x1b[31m${score}\x1b[0m`;
39
+ }
40
+ export async function runOptimizeCommand(argv) {
41
+ const { values } = parseArgs({
42
+ args: argv,
43
+ options: {
44
+ agent: { type: 'string', short: 'a' },
45
+ period: { type: 'string', short: 'p' },
46
+ limit: { type: 'string', short: 'l' },
47
+ format: { type: 'string', short: 'f' },
48
+ url: { type: 'string' },
49
+ help: { type: 'boolean', short: 'h', default: false },
50
+ },
51
+ allowPositionals: false,
52
+ });
53
+ if (values.help) {
54
+ console.log(HELP);
55
+ return;
56
+ }
57
+ const client = createClientFromConfig(values.url);
58
+ const isJson = values.format === 'json';
59
+ const result = await client.getOptimizationRecommendations({
60
+ agentId: values.agent ?? undefined,
61
+ period: values.period ? parseInt(values.period, 10) : undefined,
62
+ limit: values.limit ? parseInt(values.limit, 10) : undefined,
63
+ });
64
+ if (isJson) {
65
+ printJson(result);
66
+ return;
67
+ }
68
+ console.log('\nOptimization Recommendations\n');
69
+ if (result.recommendations.length === 0) {
70
+ console.log('No recommendations found.');
71
+ return;
72
+ }
73
+ console.log(` Period: ${result.period} days`);
74
+ console.log(` Analyzed Calls: ${result.analyzedCalls.toLocaleString()}`);
75
+ console.log(` Potential Savings: $${result.totalPotentialSavings.toFixed(2)}/month`);
76
+ console.log('');
77
+ const headers = ['Agent', 'Current Model', 'Recommended', 'Tier', 'Savings/mo', 'Confidence'];
78
+ const rows = result.recommendations.map((r) => [
79
+ truncate(r.agentId, 20),
80
+ truncate(r.currentModel, 22),
81
+ truncate(r.recommendedModel, 22),
82
+ r.complexityTier,
83
+ `$${r.monthlySavings.toFixed(2)}`,
84
+ colorConfidence(r.confidence),
85
+ ]);
86
+ printTable(headers, rows);
87
+ }
88
+ //# sourceMappingURL=optimize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize.js","sourceRoot":"","sources":["../../src/commands/optimize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runRecallCommand(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=recall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../src/commands/recall.ts"],"names":[],"mappings":"AA+BA,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DpE"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * agentlens recall — Semantic search over agent memory
3
+ */
4
+ import { parseArgs } from 'node:util';
5
+ import { createClientFromConfig } from '../lib/client.js';
6
+ import { printTable, printJson, truncate } from '../lib/output.js';
7
+ const HELP = `Usage: agentlens recall <query> [options]
8
+
9
+ Semantic search over agent memory — find past events, sessions, and lessons by meaning.
10
+
11
+ Arguments:
12
+ query Natural language search query
13
+
14
+ Options:
15
+ --scope <scope> Search scope: all|events|sessions|lessons (default: all)
16
+ --limit <n> Maximum results (default: 10)
17
+ --from <date> Start date (ISO 8601)
18
+ --to <date> End date (ISO 8601)
19
+ --agent <id> Filter by agent ID
20
+ --min-score <n> Minimum similarity score 0-1 (default: 0)
21
+ --url <url> Server URL (overrides config)
22
+ -j, --json Output raw JSON
23
+ -h, --help Show help
24
+
25
+ Examples:
26
+ agentlens recall "authentication errors"
27
+ agentlens recall "deployment failures" --scope events --limit 20
28
+ agentlens recall "user onboarding" --from 2026-01-01 --to 2026-02-01
29
+ agentlens recall "auth" --json`;
30
+ export async function runRecallCommand(argv) {
31
+ const { values, positionals } = parseArgs({
32
+ args: argv,
33
+ options: {
34
+ scope: { type: 'string' },
35
+ limit: { type: 'string', short: 'l' },
36
+ from: { type: 'string' },
37
+ to: { type: 'string' },
38
+ agent: { type: 'string', short: 'a' },
39
+ 'min-score': { type: 'string' },
40
+ url: { type: 'string' },
41
+ json: { type: 'boolean', short: 'j', default: false },
42
+ help: { type: 'boolean', short: 'h', default: false },
43
+ },
44
+ allowPositionals: true,
45
+ });
46
+ if (values.help) {
47
+ console.log(HELP);
48
+ return;
49
+ }
50
+ const query = positionals[0];
51
+ if (!query) {
52
+ console.error('Error: Query argument is required.\n');
53
+ console.log(HELP);
54
+ process.exit(1);
55
+ }
56
+ const client = createClientFromConfig(values.url);
57
+ const result = await client.recall({
58
+ query,
59
+ scope: values.scope,
60
+ agentId: values.agent ?? undefined,
61
+ from: values.from ?? undefined,
62
+ to: values.to ?? undefined,
63
+ limit: values.limit ? parseInt(values.limit, 10) : undefined,
64
+ minScore: values['min-score'] ? parseFloat(values['min-score']) : undefined,
65
+ });
66
+ if (values.json) {
67
+ printJson(result);
68
+ return;
69
+ }
70
+ if (result.results.length === 0) {
71
+ console.log(`No results found for "${query}".`);
72
+ return;
73
+ }
74
+ const headers = ['#', 'Source', 'Score', 'Text'];
75
+ const rows = result.results.map((r, i) => [
76
+ String(i + 1),
77
+ r.sourceType,
78
+ `${(r.score * 100).toFixed(1)}%`,
79
+ truncate(r.text.replace(/\n/g, ' '), 80),
80
+ ]);
81
+ printTable(headers, rows);
82
+ console.log(`\n${result.totalResults} result(s) for "${query}".`);
83
+ }
84
+ //# sourceMappingURL=recall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/commands/recall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runReflectCommand(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=reflect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflect.d.ts","sourceRoot":"","sources":["../../src/commands/reflect.ts"],"names":[],"mappings":"AAkCA,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DrE"}