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.
Files changed (98) hide show
  1. package/README.ja.md +30 -21
  2. package/README.md +31 -22
  3. package/dist/cli.d.ts +3 -3
  4. package/dist/cli.js +22 -59
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/analyze.d.ts +72 -0
  7. package/dist/commands/analyze.d.ts.map +1 -0
  8. package/dist/commands/analyze.js +382 -0
  9. package/dist/commands/analyze.js.map +1 -0
  10. package/dist/commands/archive.d.ts.map +1 -1
  11. package/dist/commands/archive.js +85 -103
  12. package/dist/commands/archive.js.map +1 -1
  13. package/dist/commands/connectors.d.ts.map +1 -1
  14. package/dist/commands/connectors.js +11 -5
  15. package/dist/commands/connectors.js.map +1 -1
  16. package/dist/commands/i18n.d.ts +10 -0
  17. package/dist/commands/i18n.d.ts.map +1 -0
  18. package/dist/commands/i18n.js +49 -0
  19. package/dist/commands/i18n.js.map +1 -0
  20. package/dist/commands/index.d.ts +1 -4
  21. package/dist/commands/index.d.ts.map +1 -1
  22. package/dist/commands/index.js +3 -5
  23. package/dist/commands/index.js.map +1 -1
  24. package/dist/commands/popl.js +3 -3
  25. package/dist/commands/popl.js.map +1 -1
  26. package/dist/commands/record.d.ts.map +1 -1
  27. package/dist/commands/record.js +21 -18
  28. package/dist/commands/record.js.map +1 -1
  29. package/dist/commands/rpc.d.ts.map +1 -1
  30. package/dist/commands/rpc.js +21 -11
  31. package/dist/commands/rpc.js.map +1 -1
  32. package/dist/commands/secrets.d.ts.map +1 -1
  33. package/dist/commands/secrets.js +15 -8
  34. package/dist/commands/secrets.js.map +1 -1
  35. package/dist/commands/summary.d.ts.map +1 -1
  36. package/dist/commands/summary.js +19 -29
  37. package/dist/commands/summary.js.map +1 -1
  38. package/dist/commands/tool.d.ts.map +1 -1
  39. package/dist/commands/tool.js +1 -0
  40. package/dist/commands/tool.js.map +1 -1
  41. package/dist/commands/view.d.ts +5 -0
  42. package/dist/commands/view.d.ts.map +1 -1
  43. package/dist/commands/view.js +242 -11
  44. package/dist/commands/view.js.map +1 -1
  45. package/dist/db/tool-analysis.d.ts +117 -0
  46. package/dist/db/tool-analysis.d.ts.map +1 -0
  47. package/dist/db/tool-analysis.js +474 -0
  48. package/dist/db/tool-analysis.js.map +1 -0
  49. package/dist/help/categories.d.ts +39 -0
  50. package/dist/help/categories.d.ts.map +1 -0
  51. package/dist/help/categories.js +219 -0
  52. package/dist/help/categories.js.map +1 -0
  53. package/dist/help/index.d.ts +39 -0
  54. package/dist/help/index.d.ts.map +1 -0
  55. package/dist/help/index.js +138 -0
  56. package/dist/help/index.js.map +1 -0
  57. package/dist/i18n/index.d.ts +52 -0
  58. package/dist/i18n/index.d.ts.map +1 -0
  59. package/dist/i18n/index.js +165 -0
  60. package/dist/i18n/index.js.map +1 -0
  61. package/dist/i18n/locales/en.d.ts +238 -0
  62. package/dist/i18n/locales/en.d.ts.map +1 -0
  63. package/dist/i18n/locales/en.js +245 -0
  64. package/dist/i18n/locales/en.js.map +1 -0
  65. package/dist/i18n/locales/ja.d.ts +8 -0
  66. package/dist/i18n/locales/ja.d.ts.map +1 -0
  67. package/dist/i18n/locales/ja.js +243 -0
  68. package/dist/i18n/locales/ja.js.map +1 -0
  69. package/dist/shell/completer.d.ts.map +1 -1
  70. package/dist/shell/completer.js +4 -15
  71. package/dist/shell/completer.js.map +1 -1
  72. package/dist/shell/repl.d.ts +5 -5
  73. package/dist/shell/repl.d.ts.map +1 -1
  74. package/dist/shell/repl.js +73 -152
  75. package/dist/shell/repl.js.map +1 -1
  76. package/dist/shell/router-commands.d.ts +1 -1
  77. package/dist/shell/router-commands.js +1 -1
  78. package/dist/shell/types.d.ts +0 -1
  79. package/dist/shell/types.d.ts.map +1 -1
  80. package/dist/shell/types.js +5 -9
  81. package/dist/shell/types.js.map +1 -1
  82. package/package.json +1 -1
  83. package/dist/commands/events.d.ts +0 -7
  84. package/dist/commands/events.d.ts.map +0 -1
  85. package/dist/commands/events.js +0 -185
  86. package/dist/commands/events.js.map +0 -1
  87. package/dist/commands/explore.d.ts +0 -9
  88. package/dist/commands/explore.d.ts.map +0 -1
  89. package/dist/commands/explore.js +0 -346
  90. package/dist/commands/explore.js.map +0 -1
  91. package/dist/commands/monitor.d.ts +0 -7
  92. package/dist/commands/monitor.d.ts.map +0 -1
  93. package/dist/commands/monitor.js +0 -109
  94. package/dist/commands/monitor.js.map +0 -1
  95. package/dist/commands/permissions.d.ts +0 -44
  96. package/dist/commands/permissions.d.ts.map +0 -1
  97. package/dist/commands/permissions.js +0 -256
  98. package/dist/commands/permissions.js.map +0 -1
@@ -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 explore --session ${shortenId(session, 8)}`);
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 options['full-time'], not options.fullTime
138
- const showFulltime = options.fulltime || options['full-time'] || options['time-full'];
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":"AAAA;;;;;GAKG;AASH,iDAAiD;AACjD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhF,6CAA6C;AAC7C,eAAO,MAAM,cAAc,EAAE,iBAAiB,EAAkD,CAAC;AAEjG,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,EAAE,iBAAiB,EAAkD,CAAC;AAE1G;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAEpE;AAED,mDAAmD;AACnD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED,kCAAkC;AAClC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED,2DAA2D;AAC3D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,0CAA0C;AAC1C,MAAM,WAAW,aAAa;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAqJD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,iBAAiB,CA+ClF;AAkBD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,QAAQ,EAAE,CA0CZ;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,cAAc,EAAE,CAQlB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE,iBAAiB,CAAA;CAAE,EACvE,KAAK,EAAE,CAAC,EAAE,GACT,MAAM,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAchC;AAMD,gCAAgC;AAChC,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qCAAqC;AACrC,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,iCAAiC;AACjC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAmB3E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,GACb,WAAW,EAAE,CAgBf;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAqDrE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,gBAAgB,EAAE,CA4CpB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBtE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAcjG;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,QAAQ,EAAE,CAgBZ"}