@grc-claw/agent-discovery 1.0.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,21 @@
1
+ import type { AgentDiscoveryConfig, DiscoveryInventoryResult, DiscoveryScanResult, RiskScoreResult } from './types.js';
2
+ export declare class AgentDiscoveryScanner {
3
+ private config;
4
+ private discoveredAgents;
5
+ private mcpServers;
6
+ private cursorSkills;
7
+ private agentConfigs;
8
+ private apiLogEntries;
9
+ constructor(config?: Partial<AgentDiscoveryConfig>);
10
+ scan(rootPath?: string): Promise<DiscoveryScanResult>;
11
+ inventory(): DiscoveryInventoryResult;
12
+ riskScore(agentId: string): RiskScoreResult | null;
13
+ private scanMcpServers;
14
+ private processMcpServer;
15
+ private scanCursorSkills;
16
+ private scanAgentConfigs;
17
+ private scanCodebase;
18
+ private scanApiLogs;
19
+ private buildReport;
20
+ }
21
+ //# sourceMappingURL=AgentDiscoveryScanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentDiscoveryScanner.d.ts","sourceRoot":"","sources":["../src/AgentDiscoveryScanner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,oBAAoB,EAQpB,wBAAwB,EACxB,mBAAmB,EAEnB,eAAe,EAChB,MAAM,YAAY,CAAC;AA2CpB,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,aAAa,CAAqB;gBAE9B,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAI5C,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAsB3D,SAAS,IAAI,wBAAwB;IAsBrC,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAuClD,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,gBAAgB;IAqDxB,OAAO,CAAC,gBAAgB;IAiFxB,OAAO,CAAC,gBAAgB;IA0ExB,OAAO,CAAC,YAAY;IAiCpB,OAAO,CAAC,WAAW;IAyDnB,OAAO,CAAC,WAAW;CA2CpB"}
@@ -0,0 +1,469 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import * as fs from 'node:fs';
3
+ import * as path from 'node:path';
4
+ const DEFAULT_CONFIG = {
5
+ scanPaths: ['.cursor/skills', '.cursor', '.grc_memory', 'packages'],
6
+ mcpConfigPaths: ['.cursor/mcp.json', 'mcp.json', '.mcp/servers.json'],
7
+ cursorConfigPaths: ['.cursor/settings.json', '.cursor/rules'],
8
+ riskThresholds: { critical: 90, high: 70, medium: 40, low: 20 },
9
+ excludePatterns: ['node_modules', 'dist', '.git', '*.test.ts', '*.spec.ts'],
10
+ };
11
+ function classifyRisk(score, thresholds) {
12
+ if (score >= thresholds.critical)
13
+ return 'critical';
14
+ if (score >= thresholds.high)
15
+ return 'high';
16
+ if (score >= thresholds.medium)
17
+ return 'medium';
18
+ if (score >= thresholds.low)
19
+ return 'low';
20
+ return 'none';
21
+ }
22
+ function fileExists(p) {
23
+ try {
24
+ return fs.statSync(p).isFile();
25
+ }
26
+ catch {
27
+ return false;
28
+ }
29
+ }
30
+ function readJsonSafe(p) {
31
+ try {
32
+ return JSON.parse(fs.readFileSync(p, 'utf8'));
33
+ }
34
+ catch {
35
+ return null;
36
+ }
37
+ }
38
+ function listDirSafe(p) {
39
+ try {
40
+ return fs.readdirSync(p);
41
+ }
42
+ catch {
43
+ return [];
44
+ }
45
+ }
46
+ function isExcluded(filePath, patterns) {
47
+ return patterns.some((pattern) => {
48
+ if (pattern.startsWith('*')) {
49
+ return filePath.endsWith(pattern.slice(1));
50
+ }
51
+ return filePath.includes(pattern);
52
+ });
53
+ }
54
+ export class AgentDiscoveryScanner {
55
+ config;
56
+ discoveredAgents = [];
57
+ mcpServers = [];
58
+ cursorSkills = [];
59
+ agentConfigs = [];
60
+ apiLogEntries = [];
61
+ constructor(config) {
62
+ this.config = { ...DEFAULT_CONFIG, ...config };
63
+ }
64
+ async scan(rootPath) {
65
+ const start = Date.now();
66
+ const scanId = randomUUID();
67
+ const base = rootPath ?? process.cwd();
68
+ this.discoveredAgents = [];
69
+ this.mcpServers = [];
70
+ this.cursorSkills = [];
71
+ this.agentConfigs = [];
72
+ this.apiLogEntries = [];
73
+ this.scanMcpServers(base);
74
+ this.scanCursorSkills(base);
75
+ this.scanAgentConfigs(base);
76
+ this.scanCodebase(base);
77
+ this.scanApiLogs(base);
78
+ const report = this.buildReport(start);
79
+ return { scanId, timestamp: new Date().toISOString(), config: this.config, report };
80
+ }
81
+ inventory() {
82
+ const bySource = {
83
+ mcp_server: 0, cursor_config: 0, agent_config: 0,
84
+ api_log: 0, codebase_scan: 0, package_dependency: 0, env_variable: 0,
85
+ };
86
+ const byRiskLevel = {
87
+ critical: 0, high: 0, medium: 0, low: 0, none: 0,
88
+ };
89
+ for (const agent of this.discoveredAgents) {
90
+ bySource[agent.source]++;
91
+ byRiskLevel[agent.riskLevel]++;
92
+ }
93
+ return {
94
+ agents: [...this.discoveredAgents],
95
+ totalCount: this.discoveredAgents.length,
96
+ bySource,
97
+ byRiskLevel,
98
+ };
99
+ }
100
+ riskScore(agentId) {
101
+ const agent = this.discoveredAgents.find((a) => a.id === agentId);
102
+ if (!agent)
103
+ return null;
104
+ const factors = [];
105
+ const sourceWeights = {
106
+ mcp_server: 30, cursor_config: 15, agent_config: 20,
107
+ api_log: 25, codebase_scan: 10, package_dependency: 15, env_variable: 20,
108
+ };
109
+ const sourceWeight = sourceWeights[agent.source];
110
+ const sourceScore = agent.riskScore * (sourceWeight / 100);
111
+ factors.push({
112
+ factor: 'discovery_source',
113
+ weight: sourceWeight,
114
+ score: sourceScore,
115
+ description: `Agent discovered via ${agent.source}`,
116
+ });
117
+ const indicatorCount = agent.indicators.length;
118
+ const indicatorScore = Math.min(indicatorCount * 10, 30);
119
+ factors.push({
120
+ factor: 'risk_indicators',
121
+ weight: 30,
122
+ score: indicatorScore,
123
+ description: `${indicatorCount} risk indicator(s) found`,
124
+ });
125
+ const totalScore = Math.round(factors.reduce((sum, f) => sum + f.score, 0));
126
+ return {
127
+ agentId,
128
+ riskScore: totalScore,
129
+ riskLevel: classifyRisk(totalScore, this.config.riskThresholds),
130
+ factors,
131
+ computedAt: new Date().toISOString(),
132
+ };
133
+ }
134
+ scanMcpServers(basePath) {
135
+ for (const configPath of this.config.mcpConfigPaths) {
136
+ const fullPath = path.join(basePath, configPath);
137
+ const data = readJsonSafe(fullPath);
138
+ if (!data)
139
+ continue;
140
+ const mcpServers = (data['mcpServers'] ?? data['servers'] ?? data);
141
+ if (Array.isArray(mcpServers)) {
142
+ for (const server of mcpServers) {
143
+ this.processMcpServer(server, configPath);
144
+ }
145
+ }
146
+ else if (typeof mcpServers === 'object') {
147
+ for (const [name, server] of Object.entries(mcpServers)) {
148
+ if (typeof server === 'object' && server !== null) {
149
+ this.processMcpServer({ ...server, name }, configPath);
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+ processMcpServer(server, configPath) {
156
+ const name = String(server['name'] ?? server['serverName'] ?? 'unknown');
157
+ const command = String(server['command'] ?? '');
158
+ const args = Array.isArray(server['args']) ? server['args'].map(String) : [];
159
+ const endpoint = command ? `${command} ${args.join(' ')}` : String(server['endpoint'] ?? server['url'] ?? 'unknown');
160
+ const transport = String(server['transport'] ?? 'stdio');
161
+ const riskIndicators = [];
162
+ let riskScore = 10;
163
+ if (command.includes('npx') || command.includes('pip')) {
164
+ riskIndicators.push('Uses package runner (auto-installs dependencies)');
165
+ riskScore += 15;
166
+ }
167
+ if (endpoint.includes('http') && !endpoint.includes('localhost') && !endpoint.includes('127.0.0.1')) {
168
+ riskIndicators.push('Remote MCP server endpoint detected');
169
+ riskScore += 20;
170
+ }
171
+ const toolsExposed = Array.isArray(server['tools']) ? server['tools'].map(String) : [];
172
+ if (toolsExposed.length > 5) {
173
+ riskIndicators.push(`High tool count: ${toolsExposed.length} tools exposed`);
174
+ riskScore += 10;
175
+ }
176
+ if (toolsExposed.some((t) => t.includes('write') || t.includes('execute') || t.includes('run') || t.includes('delete'))) {
177
+ riskIndicators.push('Destructive or write tools exposed');
178
+ riskScore += 20;
179
+ }
180
+ const riskLevel = classifyRisk(riskScore, this.config.riskThresholds);
181
+ const connection = {
182
+ serverName: name,
183
+ endpoint,
184
+ transport,
185
+ connected: false,
186
+ toolsExposed,
187
+ riskLevel,
188
+ riskScore,
189
+ };
190
+ this.mcpServers.push(connection);
191
+ this.discoveredAgents.push({
192
+ id: randomUUID(),
193
+ name: `mcp:${name}`,
194
+ source: 'mcp_server',
195
+ detectedAt: new Date().toISOString(),
196
+ riskLevel,
197
+ riskScore,
198
+ details: { configPath, command, args, transport, toolsExposed },
199
+ indicators: riskIndicators,
200
+ });
201
+ }
202
+ scanCursorSkills(basePath) {
203
+ for (const scanPath of this.config.scanPaths) {
204
+ if (!scanPath.includes('cursor'))
205
+ continue;
206
+ const fullPath = path.join(basePath, scanPath);
207
+ const entries = listDirSafe(fullPath);
208
+ for (const entry of entries) {
209
+ if (isExcluded(entry, this.config.excludePatterns))
210
+ continue;
211
+ const entryPath = path.join(fullPath, entry);
212
+ const stat = fs.statSync(entryPath);
213
+ if (stat.isFile() && entry.endsWith('.md')) {
214
+ const content = fs.readFileSync(entryPath, 'utf8');
215
+ const nameMatch = content.match(/^#\s+(.+)/m);
216
+ const descMatch = content.match(/^>\s*(.+)/m);
217
+ let riskScore = 5;
218
+ const indicators = [];
219
+ if (content.includes('tool') || content.includes('execute') || content.includes('run')) {
220
+ riskScore += 10;
221
+ indicators.push('Skill references tool execution');
222
+ }
223
+ const riskLevel = classifyRisk(riskScore, this.config.riskThresholds);
224
+ this.cursorSkills.push({
225
+ path: entryPath,
226
+ name: nameMatch?.[1] ?? entry.replace('.md', ''),
227
+ description: descMatch?.[1] ?? '',
228
+ hasBody: content.length > 100,
229
+ riskLevel,
230
+ });
231
+ this.discoveredAgents.push({
232
+ id: randomUUID(),
233
+ name: `cursor_skill:${entry}`,
234
+ source: 'cursor_config',
235
+ detectedAt: new Date().toISOString(),
236
+ riskLevel,
237
+ riskScore,
238
+ details: { path: entryPath, name: nameMatch?.[1], description: descMatch?.[1] },
239
+ indicators,
240
+ });
241
+ }
242
+ if (stat.isDirectory()) {
243
+ const subEntries = listDirSafe(entryPath);
244
+ for (const subEntry of subEntries) {
245
+ if (subEntry.endsWith('.md') || subEntry.endsWith('.json') || subEntry.endsWith('.yaml') || subEntry.endsWith('.yml')) {
246
+ const subPath = path.join(entryPath, subEntry);
247
+ let riskScore = 5;
248
+ const indicators = [];
249
+ if (subEntry.endsWith('.json')) {
250
+ const data = readJsonSafe(subPath);
251
+ if (data && (data['tools'] || data['permissions'] || data['execute'])) {
252
+ riskScore += 15;
253
+ indicators.push('Agent config defines tools or permissions');
254
+ }
255
+ }
256
+ const riskLevel = classifyRisk(riskScore, this.config.riskThresholds);
257
+ this.discoveredAgents.push({
258
+ id: randomUUID(),
259
+ name: `cursor_skill_dir:${entry}/${subEntry}`,
260
+ source: 'cursor_config',
261
+ detectedAt: new Date().toISOString(),
262
+ riskLevel,
263
+ riskScore,
264
+ details: { path: subPath, parentDir: entry },
265
+ indicators,
266
+ });
267
+ }
268
+ }
269
+ }
270
+ }
271
+ }
272
+ }
273
+ scanAgentConfigs(basePath) {
274
+ const configPatterns = [
275
+ 'agent.json', 'agent.yaml', 'agent.yml',
276
+ 'agents.json', 'agents.yaml', 'agents.yml',
277
+ '.agent', 'mcp.json', 'mcp.yaml',
278
+ ];
279
+ const self = this;
280
+ function walk(dir, depth) {
281
+ if (depth > 5)
282
+ return;
283
+ const entries = listDirSafe(dir);
284
+ for (const entry of entries) {
285
+ if (isExcluded(entry, DEFAULT_CONFIG.excludePatterns))
286
+ continue;
287
+ const fullPath = path.join(dir, entry);
288
+ try {
289
+ const stat = fs.statSync(fullPath);
290
+ if (stat.isDirectory()) {
291
+ walk(fullPath, depth + 1);
292
+ }
293
+ else if (configPatterns.includes(entry)) {
294
+ const data = readJsonSafe(fullPath);
295
+ if (!data)
296
+ continue;
297
+ let riskScore = 10;
298
+ const indicators = [];
299
+ if (data['tools'] || data['allowedTools'] || data['execute']) {
300
+ riskScore += 15;
301
+ indicators.push('Agent config defines tool access');
302
+ }
303
+ if (data['permissions'] || data['scopes']) {
304
+ riskScore += 10;
305
+ indicators.push('Agent config defines permissions/scopes');
306
+ }
307
+ if (data['autoApprove'] || data['autoExecute']) {
308
+ riskScore += 20;
309
+ indicators.push('Agent config has auto-approve/auto-execute enabled');
310
+ }
311
+ const riskLevel = classifyRisk(riskScore, self.config.riskThresholds);
312
+ self.agentConfigs.push({
313
+ path: fullPath,
314
+ type: entry.startsWith('mcp') ? 'mcp_config' : 'agent',
315
+ name: String(data['name'] ?? entry),
316
+ hasPermissions: Boolean(data['permissions'] || data['scopes']),
317
+ hasToolAccess: Boolean(data['tools'] || data['allowedTools'] || data['execute']),
318
+ riskLevel,
319
+ });
320
+ self.discoveredAgents.push({
321
+ id: randomUUID(),
322
+ name: `config:${String(data['name'] ?? entry)}`,
323
+ source: 'agent_config',
324
+ detectedAt: new Date().toISOString(),
325
+ riskLevel,
326
+ riskScore,
327
+ details: { path: fullPath, configKeys: Object.keys(data) },
328
+ indicators,
329
+ });
330
+ }
331
+ }
332
+ catch {
333
+ continue;
334
+ }
335
+ }
336
+ }
337
+ for (const scanPath of this.config.scanPaths) {
338
+ const fullPath = path.join(basePath, scanPath);
339
+ if (fs.existsSync(fullPath)) {
340
+ walk(fullPath, 0);
341
+ }
342
+ }
343
+ }
344
+ scanCodebase(basePath) {
345
+ const indicators = [];
346
+ let riskScore = 5;
347
+ const envVars = ['OPENAI_API_KEY', 'ANTHROPIC_API_KEY', 'GOOGLE_API_KEY', 'HF_TOKEN', 'COHERE_API_KEY'];
348
+ const envPath = path.join(basePath, '.env');
349
+ const foundEnvVars = [];
350
+ if (fileExists(envPath)) {
351
+ const content = fs.readFileSync(envPath, 'utf8');
352
+ for (const envVar of envVars) {
353
+ if (content.includes(envVar)) {
354
+ indicators.push(`Environment variable ${envVar} found in .env`);
355
+ foundEnvVars.push(envVar);
356
+ riskScore += 5;
357
+ }
358
+ }
359
+ }
360
+ if (indicators.length > 0) {
361
+ const riskLevel = classifyRisk(riskScore, this.config.riskThresholds);
362
+ this.discoveredAgents.push({
363
+ id: randomUUID(),
364
+ name: 'codebase:ai_dependencies',
365
+ source: 'codebase_scan',
366
+ detectedAt: new Date().toISOString(),
367
+ riskLevel,
368
+ riskScore,
369
+ details: { envVars: foundEnvVars },
370
+ indicators,
371
+ });
372
+ }
373
+ }
374
+ scanApiLogs(basePath) {
375
+ const logPath = this.config.apiLogPath ?? path.join(basePath, '.grc_memory', 'action-ledger.ndjson');
376
+ if (!fileExists(logPath))
377
+ return;
378
+ try {
379
+ const content = fs.readFileSync(logPath, 'utf8');
380
+ const lines = content.split('\n').filter(Boolean).slice(-200);
381
+ for (const line of lines) {
382
+ try {
383
+ const entry = JSON.parse(line);
384
+ const tool = String(entry['tool'] ?? '');
385
+ const agentId = String(entry['agentId'] ?? entry['agentDid'] ?? 'system');
386
+ const allowed = entry['allowed'] !== false;
387
+ let riskLevel = 'none';
388
+ const riskIndicators = [];
389
+ if (tool.includes('delete') || tool.includes('destroy') || tool.includes('revoke')) {
390
+ riskLevel = 'high';
391
+ riskIndicators.push('Destructive tool invoked');
392
+ }
393
+ else if (tool.includes('write') || tool.includes('update') || tool.includes('create')) {
394
+ riskLevel = 'medium';
395
+ riskIndicators.push('Write tool invoked');
396
+ }
397
+ this.apiLogEntries.push({
398
+ timestamp: String(entry['timestamp'] ?? entry['createdAt'] ?? ''),
399
+ endpoint: String(entry['endpoint'] ?? ''),
400
+ tool,
401
+ agentId,
402
+ sessionId: String(entry['sessionId'] ?? ''),
403
+ allowed,
404
+ riskLevel,
405
+ });
406
+ if (riskLevel !== 'none' && !this.discoveredAgents.some((a) => a.name === `log_agent:${agentId}`)) {
407
+ this.discoveredAgents.push({
408
+ id: randomUUID(),
409
+ name: `log_agent:${agentId}`,
410
+ source: 'api_log',
411
+ detectedAt: new Date().toISOString(),
412
+ riskLevel,
413
+ riskScore: riskLevel === 'high' ? 75 : riskLevel === 'medium' ? 50 : 25,
414
+ details: { agentId, recentTools: [tool] },
415
+ indicators: riskIndicators,
416
+ });
417
+ }
418
+ }
419
+ catch {
420
+ continue;
421
+ }
422
+ }
423
+ }
424
+ catch {
425
+ return;
426
+ }
427
+ }
428
+ buildReport(startMs) {
429
+ const riskBreakdown = { critical: 0, high: 0, medium: 0, low: 0, none: 0 };
430
+ for (const agent of this.discoveredAgents) {
431
+ riskBreakdown[agent.riskLevel]++;
432
+ }
433
+ const overallRiskScore = this.discoveredAgents.length > 0
434
+ ? Math.round(this.discoveredAgents.reduce((sum, a) => sum + a.riskScore, 0) / this.discoveredAgents.length)
435
+ : 0;
436
+ const recommendations = [];
437
+ if (riskBreakdown.critical > 0) {
438
+ recommendations.push(`URGENT: ${riskBreakdown.critical} critical-risk agent(s) detected. Review and remediate immediately.`);
439
+ }
440
+ if (this.mcpServers.length > 3) {
441
+ recommendations.push('High MCP server count detected. Consider consolidating or removing unused servers.');
442
+ }
443
+ const autoApproveAgents = this.discoveredAgents.filter((a) => a.indicators.some((i) => i.includes('auto-approve')));
444
+ if (autoApproveAgents.length > 0) {
445
+ recommendations.push(`${autoApproveAgents.length} agent(s) have auto-approve enabled. Disable for production environments.`);
446
+ }
447
+ if (this.discoveredAgents.filter((a) => a.source === 'api_log' && a.riskLevel !== 'none').length > 5) {
448
+ recommendations.push('Multiple risky tool invocations detected in logs. Review API audit trail.');
449
+ }
450
+ if (recommendations.length === 0) {
451
+ recommendations.push('No significant risks detected. Continue regular scanning schedule.');
452
+ }
453
+ return {
454
+ generatedAt: new Date().toISOString(),
455
+ scanDurationMs: Date.now() - startMs,
456
+ totalAgentsFound: this.discoveredAgents.length,
457
+ overallRiskScore,
458
+ overallRiskLevel: classifyRisk(overallRiskScore, this.config.riskThresholds),
459
+ agents: [...this.discoveredAgents],
460
+ mcpServers: [...this.mcpServers],
461
+ cursorSkills: [...this.cursorSkills],
462
+ agentConfigs: [...this.agentConfigs],
463
+ apiLogEntries: this.apiLogEntries.slice(-100),
464
+ riskBreakdown,
465
+ recommendations,
466
+ };
467
+ }
468
+ }
469
+ //# sourceMappingURL=AgentDiscoveryScanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentDiscoveryScanner.js","sourceRoot":"","sources":["../src/AgentDiscoveryScanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { AgentDiscoveryScanner } from './AgentDiscoveryScanner.js';
2
+ export type { AgentDiscoveryConfig, AgentDiscoverySource, AgentInventoryReport, AgentRiskLevel, ApiLogEntry, CursorSkillEntry, AgentConfigEntry, DiscoveredAgent, DiscoveryInventoryResult, DiscoveryScanResult, McpServerConnection, RiskScoreResult, } from './types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,GAChB,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { AgentDiscoveryScanner } from './AgentDiscoveryScanner.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,104 @@
1
+ export type AgentRiskLevel = 'critical' | 'high' | 'medium' | 'low' | 'none';
2
+ export type AgentDiscoverySource = 'mcp_server' | 'cursor_config' | 'agent_config' | 'api_log' | 'codebase_scan' | 'package_dependency' | 'env_variable';
3
+ export interface DiscoveredAgent {
4
+ id: string;
5
+ name: string;
6
+ source: AgentDiscoverySource;
7
+ detectedAt: string;
8
+ riskLevel: AgentRiskLevel;
9
+ riskScore: number;
10
+ details: Record<string, unknown>;
11
+ indicators: string[];
12
+ }
13
+ export interface McpServerConnection {
14
+ serverName: string;
15
+ endpoint: string;
16
+ transport: 'stdio' | 'sse' | 'streamable-http';
17
+ connected: boolean;
18
+ toolsExposed: string[];
19
+ riskLevel: AgentRiskLevel;
20
+ riskScore: number;
21
+ }
22
+ export interface CursorSkillEntry {
23
+ path: string;
24
+ name: string;
25
+ description: string;
26
+ hasBody: boolean;
27
+ riskLevel: AgentRiskLevel;
28
+ }
29
+ export interface AgentConfigEntry {
30
+ path: string;
31
+ type: 'skill' | 'agent' | 'mcp_config' | 'policy';
32
+ name: string;
33
+ hasPermissions: boolean;
34
+ hasToolAccess: boolean;
35
+ riskLevel: AgentRiskLevel;
36
+ }
37
+ export interface ApiLogEntry {
38
+ timestamp: string;
39
+ endpoint: string;
40
+ tool: string;
41
+ agentId: string;
42
+ sessionId: string;
43
+ allowed: boolean;
44
+ riskLevel: AgentRiskLevel;
45
+ }
46
+ export interface AgentInventoryReport {
47
+ generatedAt: string;
48
+ scanDurationMs: number;
49
+ totalAgentsFound: number;
50
+ overallRiskScore: number;
51
+ overallRiskLevel: AgentRiskLevel;
52
+ agents: DiscoveredAgent[];
53
+ mcpServers: McpServerConnection[];
54
+ cursorSkills: CursorSkillEntry[];
55
+ agentConfigs: AgentConfigEntry[];
56
+ apiLogEntries: ApiLogEntry[];
57
+ riskBreakdown: {
58
+ critical: number;
59
+ high: number;
60
+ medium: number;
61
+ low: number;
62
+ none: number;
63
+ };
64
+ recommendations: string[];
65
+ }
66
+ export interface AgentDiscoveryConfig {
67
+ scanPaths: string[];
68
+ mcpConfigPaths: string[];
69
+ cursorConfigPaths: string[];
70
+ apiLogPath?: string;
71
+ riskThresholds: {
72
+ critical: number;
73
+ high: number;
74
+ medium: number;
75
+ low: number;
76
+ };
77
+ excludePatterns: string[];
78
+ tenantId?: number;
79
+ }
80
+ export interface DiscoveryScanResult {
81
+ scanId: string;
82
+ timestamp: string;
83
+ config: AgentDiscoveryConfig;
84
+ report: AgentInventoryReport;
85
+ }
86
+ export interface DiscoveryInventoryResult {
87
+ agents: DiscoveredAgent[];
88
+ totalCount: number;
89
+ bySource: Record<AgentDiscoverySource, number>;
90
+ byRiskLevel: Record<AgentRiskLevel, number>;
91
+ }
92
+ export interface RiskScoreResult {
93
+ agentId: string;
94
+ riskScore: number;
95
+ riskLevel: AgentRiskLevel;
96
+ factors: Array<{
97
+ factor: string;
98
+ weight: number;
99
+ score: number;
100
+ description: string;
101
+ }>;
102
+ computedAt: string;
103
+ }
104
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@grc-claw/agent-discovery",
3
+ "version": "1.0.0",
4
+ "description": "AI Agent Discovery Scanner — detects unauthorized AI agents, scans MCP connections, inventories agent configurations, and generates risk-scored reports",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "scripts": {
16
+ "build": "tsc -p tsconfig.json",
17
+ "test": "node --test dist/**/*.test.js 2>/dev/null || true"
18
+ },
19
+ "files": [
20
+ "dist"
21
+ ]
22
+ }