proofscan 0.10.20 → 0.10.22
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.
- package/README.ja.md +30 -21
- package/README.md +31 -22
- package/dist/cli.d.ts +3 -3
- package/dist/cli.js +22 -59
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts +72 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +382 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +85 -103
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/connectors.d.ts.map +1 -1
- package/dist/commands/connectors.js +11 -5
- package/dist/commands/connectors.js.map +1 -1
- package/dist/commands/i18n.d.ts +10 -0
- package/dist/commands/i18n.d.ts.map +1 -0
- package/dist/commands/i18n.js +49 -0
- package/dist/commands/i18n.js.map +1 -0
- package/dist/commands/index.d.ts +1 -4
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -5
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/popl.js +3 -3
- package/dist/commands/popl.js.map +1 -1
- package/dist/commands/record.d.ts.map +1 -1
- package/dist/commands/record.js +21 -18
- package/dist/commands/record.js.map +1 -1
- package/dist/commands/rpc.d.ts.map +1 -1
- package/dist/commands/rpc.js +21 -11
- package/dist/commands/rpc.js.map +1 -1
- package/dist/commands/secrets.d.ts.map +1 -1
- package/dist/commands/secrets.js +15 -8
- package/dist/commands/secrets.js.map +1 -1
- package/dist/commands/summary.d.ts.map +1 -1
- package/dist/commands/summary.js +19 -29
- package/dist/commands/summary.js.map +1 -1
- package/dist/commands/tool.d.ts.map +1 -1
- package/dist/commands/tool.js +1 -0
- package/dist/commands/tool.js.map +1 -1
- package/dist/commands/view.d.ts +5 -0
- package/dist/commands/view.d.ts.map +1 -1
- package/dist/commands/view.js +242 -11
- package/dist/commands/view.js.map +1 -1
- package/dist/db/tool-analysis.d.ts +117 -0
- package/dist/db/tool-analysis.d.ts.map +1 -0
- package/dist/db/tool-analysis.js +474 -0
- package/dist/db/tool-analysis.js.map +1 -0
- package/dist/help/categories.d.ts +39 -0
- package/dist/help/categories.d.ts.map +1 -0
- package/dist/help/categories.js +219 -0
- package/dist/help/categories.js.map +1 -0
- package/dist/help/index.d.ts +39 -0
- package/dist/help/index.d.ts.map +1 -0
- package/dist/help/index.js +138 -0
- package/dist/help/index.js.map +1 -0
- package/dist/i18n/index.d.ts +52 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +165 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/locales/en.d.ts +238 -0
- package/dist/i18n/locales/en.d.ts.map +1 -0
- package/dist/i18n/locales/en.js +245 -0
- package/dist/i18n/locales/en.js.map +1 -0
- package/dist/i18n/locales/ja.d.ts +8 -0
- package/dist/i18n/locales/ja.d.ts.map +1 -0
- package/dist/i18n/locales/ja.js +243 -0
- package/dist/i18n/locales/ja.js.map +1 -0
- package/dist/shell/completer.d.ts.map +1 -1
- package/dist/shell/completer.js +4 -15
- package/dist/shell/completer.js.map +1 -1
- package/dist/shell/repl.d.ts +5 -5
- package/dist/shell/repl.d.ts.map +1 -1
- package/dist/shell/repl.js +73 -152
- package/dist/shell/repl.js.map +1 -1
- package/dist/shell/router-commands.d.ts +1 -1
- package/dist/shell/router-commands.js +1 -1
- package/dist/shell/types.d.ts +0 -1
- package/dist/shell/types.d.ts.map +1 -1
- package/dist/shell/types.js +5 -9
- package/dist/shell/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/commands/events.d.ts +0 -7
- package/dist/commands/events.d.ts.map +0 -1
- package/dist/commands/events.js +0 -185
- package/dist/commands/events.js.map +0 -1
- package/dist/commands/explore.d.ts +0 -9
- package/dist/commands/explore.d.ts.map +0 -1
- package/dist/commands/explore.js +0 -346
- package/dist/commands/explore.js.map +0 -1
- package/dist/commands/monitor.d.ts +0 -7
- package/dist/commands/monitor.d.ts.map +0 -1
- package/dist/commands/monitor.js +0 -109
- package/dist/commands/monitor.js.map +0 -1
- package/dist/commands/permissions.d.ts +0 -44
- package/dist/commands/permissions.d.ts.map +0 -1
- package/dist/commands/permissions.js +0 -256
- package/dist/commands/permissions.js.map +0 -1
package/dist/commands/view.js
CHANGED
|
@@ -2,13 +2,75 @@
|
|
|
2
2
|
* View command - the main entry point for viewing events
|
|
3
3
|
*
|
|
4
4
|
* pfscan view (or just pfscan) shows a timeline of recent events
|
|
5
|
+
*
|
|
6
|
+
* Consolidated features:
|
|
7
|
+
* - Basic event viewing (original view)
|
|
8
|
+
* - Follow mode for live streaming (from monitor)
|
|
9
|
+
* - Export to CSV/JSONL (from events export)
|
|
5
10
|
*/
|
|
6
11
|
import { Command } from 'commander';
|
|
12
|
+
import { createWriteStream, existsSync } from 'fs';
|
|
13
|
+
import { resolve, dirname, isAbsolute } from 'path';
|
|
7
14
|
import { ConfigManager } from '../config/index.js';
|
|
8
15
|
import { EventLineStore } from '../eventline/store.js';
|
|
9
16
|
import { formatTimestamp, formatDuration, formatBytes, shortenId, getKindSymbol, } from '../eventline/types.js';
|
|
10
17
|
import { groupEventsToPairs } from '../eventline/normalizer.js';
|
|
11
18
|
import { output, getOutputOptions } from '../utils/output.js';
|
|
19
|
+
// ============================================================
|
|
20
|
+
// Export helpers (from events.ts)
|
|
21
|
+
// ============================================================
|
|
22
|
+
/**
|
|
23
|
+
* Convert EventLine to CSV row
|
|
24
|
+
*/
|
|
25
|
+
function eventToCSV(event) {
|
|
26
|
+
const fields = [
|
|
27
|
+
event.ts_ms,
|
|
28
|
+
event.seq || '',
|
|
29
|
+
event.kind,
|
|
30
|
+
event.direction || '',
|
|
31
|
+
event.label,
|
|
32
|
+
event.status,
|
|
33
|
+
event.connector_id || '',
|
|
34
|
+
event.session_id || '',
|
|
35
|
+
event.rpc_id || '',
|
|
36
|
+
event.latency_ms || '',
|
|
37
|
+
event.size_bytes || '',
|
|
38
|
+
event.payload_hash || '',
|
|
39
|
+
event.summary || '',
|
|
40
|
+
event.error_code || '',
|
|
41
|
+
];
|
|
42
|
+
return fields.map(f => {
|
|
43
|
+
const str = String(f);
|
|
44
|
+
if (str.includes(',') || str.includes('"') || str.includes('\n')) {
|
|
45
|
+
return `"${str.replace(/"/g, '""')}"`;
|
|
46
|
+
}
|
|
47
|
+
return str;
|
|
48
|
+
}).join(',');
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get CSV header
|
|
52
|
+
*/
|
|
53
|
+
function getCSVHeader() {
|
|
54
|
+
return 'ts_ms,seq,kind,direction,label,status,connector_id,session_id,rpc_id,latency_ms,size_bytes,payload_hash,summary,error_code';
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Convert EventLine to JSONL
|
|
58
|
+
*/
|
|
59
|
+
function eventToJSONL(event) {
|
|
60
|
+
return JSON.stringify(event);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Determine export format from filename extension
|
|
64
|
+
*/
|
|
65
|
+
function getExportFormat(filename) {
|
|
66
|
+
if (filename.endsWith('.csv')) {
|
|
67
|
+
return 'csv';
|
|
68
|
+
}
|
|
69
|
+
return 'jsonl';
|
|
70
|
+
}
|
|
71
|
+
// ============================================================
|
|
72
|
+
// Display helpers
|
|
73
|
+
// ============================================================
|
|
12
74
|
/**
|
|
13
75
|
* Render a single EventLine to terminal string
|
|
14
76
|
*/
|
|
@@ -27,6 +89,13 @@ function renderEventLine(event, options) {
|
|
|
27
89
|
}
|
|
28
90
|
parts.push(status);
|
|
29
91
|
parts.push(event.label.slice(0, 30).padEnd(30));
|
|
92
|
+
// Connector ID (shortened to 12 chars, padded)
|
|
93
|
+
if (event.connector_id) {
|
|
94
|
+
parts.push(event.connector_id.slice(0, 12).padEnd(12));
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
parts.push(''.padEnd(12));
|
|
98
|
+
}
|
|
30
99
|
// Session ID (shortened)
|
|
31
100
|
if (event.session_id) {
|
|
32
101
|
parts.push(`ses=${shortenId(event.session_id, 6)}`);
|
|
@@ -52,10 +121,6 @@ function renderEventLine(event, options) {
|
|
|
52
121
|
parts.push(`err=${event.meta.error_count}`);
|
|
53
122
|
}
|
|
54
123
|
}
|
|
55
|
-
// For session start, show connector
|
|
56
|
-
if (event.kind === 'session_start' && event.connector_id) {
|
|
57
|
-
parts.push(`[${event.connector_id}]`);
|
|
58
|
-
}
|
|
59
124
|
// Error code
|
|
60
125
|
if (event.error_code !== undefined) {
|
|
61
126
|
parts.push(`err=${event.error_code}`);
|
|
@@ -75,6 +140,13 @@ function renderPairLine(pair, options) {
|
|
|
75
140
|
status,
|
|
76
141
|
pair.method.slice(0, 30).padEnd(30),
|
|
77
142
|
];
|
|
143
|
+
// Connector ID (shortened to 12 chars, padded)
|
|
144
|
+
if (pair.request.connector_id) {
|
|
145
|
+
parts.push(pair.request.connector_id.slice(0, 12).padEnd(12));
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
parts.push(''.padEnd(12));
|
|
149
|
+
}
|
|
78
150
|
// RPC ID (for easy copy-paste to rpc show command)
|
|
79
151
|
parts.push(`rpc=${String(pair.rpc_id).slice(0, 8).padEnd(8)}`);
|
|
80
152
|
// Session ID (shortened)
|
|
@@ -110,7 +182,7 @@ function printHint(events) {
|
|
|
110
182
|
hints.push(`pfscan tree ${connector}`);
|
|
111
183
|
}
|
|
112
184
|
if (session) {
|
|
113
|
-
hints.push(`pfscan
|
|
185
|
+
hints.push(`pfscan summary --session ${shortenId(session, 8)}`);
|
|
114
186
|
}
|
|
115
187
|
if (hints.length > 0) {
|
|
116
188
|
console.log();
|
|
@@ -120,6 +192,15 @@ function printHint(events) {
|
|
|
120
192
|
export function createViewCommand(getConfigPath) {
|
|
121
193
|
const cmd = new Command('view')
|
|
122
194
|
.description('View recent events timeline (default command)')
|
|
195
|
+
.addHelpText('after', `
|
|
196
|
+
Examples:
|
|
197
|
+
pfscan view # Show recent events
|
|
198
|
+
pfscan view --connector time # Events for specific connector
|
|
199
|
+
pfscan view --pairs # Show request/response pairs
|
|
200
|
+
pfscan view -f # Follow mode (real-time updates)
|
|
201
|
+
pfscan view --export events.csv # Export to CSV file
|
|
202
|
+
pfscan view --export events.jsonl # Export to JSONL file
|
|
203
|
+
`)
|
|
123
204
|
.option('--limit <n>', 'Number of events to show', '20')
|
|
124
205
|
.option('--since <time>', 'Show events since (24h, 7d, YYYY-MM-DD)')
|
|
125
206
|
.option('--errors', 'Show only errors')
|
|
@@ -132,14 +213,164 @@ export function createViewCommand(getConfigPath) {
|
|
|
132
213
|
.option('--with-sessions', 'Include session start/end events')
|
|
133
214
|
.option('--pairs', 'Show request/response pairs instead of individual events')
|
|
134
215
|
.option('--pair', 'Alias for --pairs')
|
|
216
|
+
.option('-f, --follow', 'Follow mode: watch for new events in real-time')
|
|
217
|
+
.option('--interval <ms>', 'Poll interval in milliseconds for follow mode', '1000')
|
|
218
|
+
.option('--export <file>', 'Export events to file (CSV or JSONL based on extension)')
|
|
135
219
|
.action(async (options) => {
|
|
136
220
|
// Compute effective options from aliases (avoid mutating options object)
|
|
137
|
-
// Commander converts --full-time to
|
|
138
|
-
const showFulltime = options.fulltime || options
|
|
221
|
+
// Commander converts kebab-case (--full-time, --time-full) to camelCase (fullTime, timeFull)
|
|
222
|
+
const showFulltime = options.fulltime || options.fullTime || options.timeFull;
|
|
139
223
|
const showPairs = options.pairs || options.pair;
|
|
140
224
|
try {
|
|
141
225
|
const manager = new ConfigManager(getConfigPath());
|
|
142
226
|
const store = new EventLineStore(manager.getConfigDir());
|
|
227
|
+
// Export mode
|
|
228
|
+
if (options.export) {
|
|
229
|
+
// Validate export file path
|
|
230
|
+
const exportPath = isAbsolute(options.export)
|
|
231
|
+
? options.export
|
|
232
|
+
: resolve(process.cwd(), options.export);
|
|
233
|
+
// Security: prevent directory traversal attacks
|
|
234
|
+
const resolvedPath = resolve(exportPath);
|
|
235
|
+
const cwd = process.cwd();
|
|
236
|
+
// Allow absolute paths but warn if outside cwd
|
|
237
|
+
if (!resolvedPath.startsWith(cwd) && !isAbsolute(options.export)) {
|
|
238
|
+
console.error('Error: Export path escapes current directory.');
|
|
239
|
+
console.error('Use an absolute path or a path within the current directory.');
|
|
240
|
+
process.exit(1);
|
|
241
|
+
}
|
|
242
|
+
// Check if file exists (warn about overwrite)
|
|
243
|
+
if (existsSync(resolvedPath)) {
|
|
244
|
+
console.log(`Warning: File '${options.export}' already exists. Overwriting...`);
|
|
245
|
+
}
|
|
246
|
+
// Verify parent directory exists
|
|
247
|
+
const parentDir = dirname(resolvedPath);
|
|
248
|
+
if (!existsSync(parentDir)) {
|
|
249
|
+
console.error(`Error: Parent directory does not exist: ${parentDir}`);
|
|
250
|
+
process.exit(1);
|
|
251
|
+
}
|
|
252
|
+
const exportLimit = parseInt(options.limit, 10) || 1000;
|
|
253
|
+
const events = store.getRecentEvents({
|
|
254
|
+
limit: exportLimit,
|
|
255
|
+
since: options.since,
|
|
256
|
+
errors: options.errors,
|
|
257
|
+
method: options.method,
|
|
258
|
+
connector: options.connector,
|
|
259
|
+
session: options.session,
|
|
260
|
+
});
|
|
261
|
+
if (events.length === 0) {
|
|
262
|
+
console.log('No events to export.');
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
const format = getExportFormat(options.export);
|
|
266
|
+
const stream = createWriteStream(resolvedPath);
|
|
267
|
+
if (format === 'csv') {
|
|
268
|
+
stream.write(getCSVHeader() + '\n');
|
|
269
|
+
for (const event of events) {
|
|
270
|
+
stream.write(eventToCSV(event) + '\n');
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
for (const event of events) {
|
|
275
|
+
stream.write(eventToJSONL(event) + '\n');
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
stream.end();
|
|
279
|
+
console.log(`Exported ${events.length} events to ${options.export} (${format})`);
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
// Follow mode
|
|
283
|
+
if (options.follow) {
|
|
284
|
+
const initialEvents = store.getRecentEvents({
|
|
285
|
+
limit: parseInt(options.limit, 10),
|
|
286
|
+
connector: options.connector,
|
|
287
|
+
session: options.session,
|
|
288
|
+
method: options.method,
|
|
289
|
+
errors: options.errors,
|
|
290
|
+
});
|
|
291
|
+
// Print header
|
|
292
|
+
const connectorInfo = options.connector ? ` for '${options.connector}'` : '';
|
|
293
|
+
console.log(`Events${connectorInfo} (following, Ctrl+C to stop):\n`);
|
|
294
|
+
console.log('Time Sym Dir St Method Session');
|
|
295
|
+
console.log('-'.repeat(80));
|
|
296
|
+
// Print initial events
|
|
297
|
+
for (const event of initialEvents) {
|
|
298
|
+
console.log(renderEventLine(event, { fulltime: showFulltime }));
|
|
299
|
+
}
|
|
300
|
+
// Use event seq (or ts_ms + session_id) for deduplication to avoid race condition
|
|
301
|
+
// Track seen events by their unique identifier
|
|
302
|
+
const seenEvents = new Set();
|
|
303
|
+
for (const event of initialEvents) {
|
|
304
|
+
// Use seq if available, otherwise ts_ms + session_id as unique key
|
|
305
|
+
const eventKey = event.seq?.toString() ?? `${event.ts_ms}-${event.session_id ?? ''}`;
|
|
306
|
+
seenEvents.add(eventKey);
|
|
307
|
+
}
|
|
308
|
+
// Start polling - use seq/ts_ms for deduplication instead of just timestamp
|
|
309
|
+
let lastTs = initialEvents.length > 0 ? initialEvents[initialEvents.length - 1].ts_ms : Date.now();
|
|
310
|
+
const interval = parseInt(options.interval, 10);
|
|
311
|
+
let intervalId;
|
|
312
|
+
// Handle Ctrl+C gracefully with cleanup
|
|
313
|
+
const cleanup = () => {
|
|
314
|
+
if (intervalId) {
|
|
315
|
+
clearInterval(intervalId);
|
|
316
|
+
}
|
|
317
|
+
console.log('\n\nStopped following.');
|
|
318
|
+
process.exit(0);
|
|
319
|
+
};
|
|
320
|
+
process.on('SIGINT', cleanup);
|
|
321
|
+
process.on('SIGTERM', cleanup);
|
|
322
|
+
const poll = async () => {
|
|
323
|
+
try {
|
|
324
|
+
// Get events since slightly before lastTs to catch any missed during race
|
|
325
|
+
const newEvents = store.getRecentEvents({
|
|
326
|
+
limit: 100,
|
|
327
|
+
connector: options.connector,
|
|
328
|
+
session: options.session,
|
|
329
|
+
method: options.method,
|
|
330
|
+
errors: options.errors,
|
|
331
|
+
}).filter(e => {
|
|
332
|
+
// Filter by timestamp first (coarse filter)
|
|
333
|
+
if (e.ts_ms < lastTs - 1000)
|
|
334
|
+
return false; // Allow 1s overlap for safety
|
|
335
|
+
// Then deduplicate by unique key
|
|
336
|
+
const eventKey = e.seq?.toString() ?? `${e.ts_ms}-${e.session_id ?? ''}`;
|
|
337
|
+
if (seenEvents.has(eventKey))
|
|
338
|
+
return false;
|
|
339
|
+
seenEvents.add(eventKey);
|
|
340
|
+
return true;
|
|
341
|
+
});
|
|
342
|
+
if (newEvents.length > 0) {
|
|
343
|
+
for (const event of newEvents) {
|
|
344
|
+
if (getOutputOptions().json) {
|
|
345
|
+
console.log(JSON.stringify(event));
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
console.log(renderEventLine(event, { fulltime: showFulltime }));
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
lastTs = newEvents[newEvents.length - 1].ts_ms;
|
|
352
|
+
// Limit seenEvents size to prevent memory leak (keep last 10000)
|
|
353
|
+
if (seenEvents.size > 10000) {
|
|
354
|
+
const keysToDelete = Array.from(seenEvents).slice(0, 5000);
|
|
355
|
+
for (const key of keysToDelete) {
|
|
356
|
+
seenEvents.delete(key);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
catch (err) {
|
|
362
|
+
// Log errors in verbose mode, but don't crash
|
|
363
|
+
if (getOutputOptions().verbose) {
|
|
364
|
+
console.error('Poll error:', err instanceof Error ? err.message : String(err));
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
};
|
|
368
|
+
intervalId = setInterval(poll, interval);
|
|
369
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
370
|
+
await new Promise(() => { });
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
// Normal mode
|
|
143
374
|
const events = store.getRecentEvents({
|
|
144
375
|
limit: parseInt(options.limit, 10) * (showPairs ? 2 : 1), // Get more events for pairing
|
|
145
376
|
since: options.since,
|
|
@@ -170,8 +401,8 @@ export function createViewCommand(getConfigPath) {
|
|
|
170
401
|
}
|
|
171
402
|
// Print header for pairs
|
|
172
403
|
const header = showFulltime
|
|
173
|
-
? 'Time ↔ St Method RPC Session Latency Size'
|
|
174
|
-
: 'Time ↔ St Method RPC Session Latency Size';
|
|
404
|
+
? 'Time ↔ St Method Connector RPC Session Latency Size'
|
|
405
|
+
: 'Time ↔ St Method Connector RPC Session Latency Size';
|
|
175
406
|
console.log(header);
|
|
176
407
|
console.log('-'.repeat(header.length));
|
|
177
408
|
// Print hint about rpc show command
|
|
@@ -194,8 +425,8 @@ export function createViewCommand(getConfigPath) {
|
|
|
194
425
|
}
|
|
195
426
|
// Print header
|
|
196
427
|
const header = showFulltime
|
|
197
|
-
? 'Time Sym Dir St Method Session Extra'
|
|
198
|
-
: 'Time Sym Dir St Method Session Extra';
|
|
428
|
+
? 'Time Sym Dir St Method Connector Session Extra'
|
|
429
|
+
: 'Time Sym Dir St Method Connector Session Extra';
|
|
199
430
|
console.log(header);
|
|
200
431
|
console.log('-'.repeat(header.length));
|
|
201
432
|
// Print events
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Analysis Module
|
|
3
|
+
*
|
|
4
|
+
* Shared logic for tool extraction and classification.
|
|
5
|
+
* Used by summary, analyze, and related commands.
|
|
6
|
+
*/
|
|
7
|
+
/** Operation category for tool classification */
|
|
8
|
+
export type OperationCategory = 'read' | 'write' | 'network' | 'exec' | 'other';
|
|
9
|
+
/** Category display order (risk priority) */
|
|
10
|
+
export declare const CATEGORY_ORDER: OperationCategory[];
|
|
11
|
+
/** Category display order for permissions view (user-friendly) */
|
|
12
|
+
export declare const CATEGORY_ORDER_FRIENDLY: OperationCategory[];
|
|
13
|
+
/**
|
|
14
|
+
* Get localized label for a category
|
|
15
|
+
* Uses i18n module for translation
|
|
16
|
+
*/
|
|
17
|
+
export declare function getCategoryLabel(category: OperationCategory): string;
|
|
18
|
+
/** Tool info extracted from tools/list response */
|
|
19
|
+
export interface ToolInfo {
|
|
20
|
+
name: string;
|
|
21
|
+
description?: string;
|
|
22
|
+
category: OperationCategory;
|
|
23
|
+
}
|
|
24
|
+
/** Tool call record with count */
|
|
25
|
+
export interface ToolCallRecord {
|
|
26
|
+
name: string;
|
|
27
|
+
count: number;
|
|
28
|
+
category: OperationCategory;
|
|
29
|
+
}
|
|
30
|
+
/** Tool permission info (for permissions-style display) */
|
|
31
|
+
export interface ToolPermission {
|
|
32
|
+
name: string;
|
|
33
|
+
allowed: boolean;
|
|
34
|
+
called: number;
|
|
35
|
+
}
|
|
36
|
+
/** Category stats for permissions view */
|
|
37
|
+
export interface CategoryStats {
|
|
38
|
+
allowed_tool_count: number;
|
|
39
|
+
called_count: number;
|
|
40
|
+
tools: ToolPermission[];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Classify a tool into a category based on name and description
|
|
44
|
+
*
|
|
45
|
+
* Priority: exec > network > write > read > other
|
|
46
|
+
* Special handling for time/misc tools to avoid false "read" classification
|
|
47
|
+
*/
|
|
48
|
+
export declare function classifyTool(name: string, description?: string): OperationCategory;
|
|
49
|
+
/**
|
|
50
|
+
* Extract tools from tools/list response for a session
|
|
51
|
+
*/
|
|
52
|
+
export declare function extractToolsFromSession(configDir: string, sessionId: string): ToolInfo[];
|
|
53
|
+
/**
|
|
54
|
+
* Extract tool call counts from tools/call requests for a session
|
|
55
|
+
*/
|
|
56
|
+
export declare function extractToolCallCounts(configDir: string, sessionId: string): Map<string, number>;
|
|
57
|
+
/**
|
|
58
|
+
* Extract tool calls as records for a session
|
|
59
|
+
*/
|
|
60
|
+
export declare function extractToolCalls(configDir: string, sessionId: string): ToolCallRecord[];
|
|
61
|
+
/**
|
|
62
|
+
* Group items by category
|
|
63
|
+
*/
|
|
64
|
+
export declare function groupByCategory<T extends {
|
|
65
|
+
category: OperationCategory;
|
|
66
|
+
}>(items: T[]): Record<OperationCategory, T[]>;
|
|
67
|
+
/** Session info for analysis */
|
|
68
|
+
export interface SessionInfo {
|
|
69
|
+
session_id: string;
|
|
70
|
+
connector_id: string;
|
|
71
|
+
started_at: string;
|
|
72
|
+
}
|
|
73
|
+
/** Connector summary for analysis */
|
|
74
|
+
export interface ConnectorSummary {
|
|
75
|
+
connector_id: string;
|
|
76
|
+
session_count: number;
|
|
77
|
+
rpc_count: number;
|
|
78
|
+
}
|
|
79
|
+
/** Tool usage across sessions */
|
|
80
|
+
export interface ToolUsageSummary {
|
|
81
|
+
name: string;
|
|
82
|
+
call_count: number;
|
|
83
|
+
connector_id: string;
|
|
84
|
+
category: OperationCategory;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get all connectors with session and RPC counts
|
|
88
|
+
*/
|
|
89
|
+
export declare function getConnectorSummaries(configDir: string): ConnectorSummary[];
|
|
90
|
+
/**
|
|
91
|
+
* Get sessions for a connector
|
|
92
|
+
*/
|
|
93
|
+
export declare function getSessionsForConnector(configDir: string, connectorId: string, limit?: number): SessionInfo[];
|
|
94
|
+
/**
|
|
95
|
+
* Get all tool calls across all sessions, grouped by tool name
|
|
96
|
+
*/
|
|
97
|
+
export declare function getAllToolUsage(configDir: string): ToolUsageSummary[];
|
|
98
|
+
/**
|
|
99
|
+
* Get tool usage for a specific connector across all its sessions
|
|
100
|
+
*/
|
|
101
|
+
export declare function getToolUsageForConnector(configDir: string, connectorId: string): ToolUsageSummary[];
|
|
102
|
+
/**
|
|
103
|
+
* Get method call counts for analysis
|
|
104
|
+
*/
|
|
105
|
+
export declare function getMethodCounts(configDir: string): Map<string, number>;
|
|
106
|
+
/**
|
|
107
|
+
* Get date range of sessions
|
|
108
|
+
*/
|
|
109
|
+
export declare function getSessionDateRange(configDir: string): {
|
|
110
|
+
min: string | null;
|
|
111
|
+
max: string | null;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Get tools from latest session for a connector (capabilities)
|
|
115
|
+
*/
|
|
116
|
+
export declare function getLatestToolsForConnector(configDir: string, connectorId: string): ToolInfo[];
|
|
117
|
+
//# sourceMappingURL=tool-analysis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-analysis.d.ts","sourceRoot":"","sources":["../../src/db/tool-analysis.ts"],"names":[],"mappings":"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"}
|