@inspectr/mcplab 0.1.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.
- package/README.md +762 -0
- package/dist/app/android-chrome-192x192.png +0 -0
- package/dist/app/android-chrome-512x512.png +0 -0
- package/dist/app/apple-touch-icon.png +0 -0
- package/dist/app/assets/index-DT-Z4AVG.js +249 -0
- package/dist/app/assets/index-EP4WAY8u.css +1 -0
- package/dist/app/favicon-16x16.png +0 -0
- package/dist/app/favicon-32x32.png +0 -0
- package/dist/app/favicon.svg +13 -0
- package/dist/app/index.html +26 -0
- package/dist/app/inspectr_logo_color.svg +9 -0
- package/dist/app/mcp.png +0 -0
- package/dist/app/mcp.svg +1 -0
- package/dist/app/robots.txt +14 -0
- package/dist/app/site.webmanifest +1 -0
- package/dist/app-server/app-context.d.ts +164 -0
- package/dist/app-server/app-context.d.ts.map +1 -0
- package/dist/app-server/app-context.js +2 -0
- package/dist/app-server/app-context.js.map +1 -0
- package/dist/app-server/assistant-common.d.ts +41 -0
- package/dist/app-server/assistant-common.d.ts.map +1 -0
- package/dist/app-server/assistant-common.js +104 -0
- package/dist/app-server/assistant-common.js.map +1 -0
- package/dist/app-server/config-store.d.ts +15 -0
- package/dist/app-server/config-store.d.ts.map +1 -0
- package/dist/app-server/config-store.js +67 -0
- package/dist/app-server/config-store.js.map +1 -0
- package/dist/app-server/dev-mcp.d.ts +6 -0
- package/dist/app-server/dev-mcp.d.ts.map +1 -0
- package/dist/app-server/dev-mcp.js +71 -0
- package/dist/app-server/dev-mcp.js.map +1 -0
- package/dist/app-server/evals-routes.d.ts +22 -0
- package/dist/app-server/evals-routes.d.ts.map +1 -0
- package/dist/app-server/evals-routes.js +135 -0
- package/dist/app-server/evals-routes.js.map +1 -0
- package/dist/app-server/http.d.ts +5 -0
- package/dist/app-server/http.d.ts.map +1 -0
- package/dist/app-server/http.js +31 -0
- package/dist/app-server/http.js.map +1 -0
- package/dist/app-server/index.d.ts +3 -0
- package/dist/app-server/index.d.ts.map +1 -0
- package/dist/app-server/index.js +2 -0
- package/dist/app-server/index.js.map +1 -0
- package/dist/app-server/jobs.d.ts +15 -0
- package/dist/app-server/jobs.d.ts.map +1 -0
- package/dist/app-server/jobs.js +11 -0
- package/dist/app-server/jobs.js.map +1 -0
- package/dist/app-server/libraries-store.d.ts +15 -0
- package/dist/app-server/libraries-store.d.ts.map +1 -0
- package/dist/app-server/libraries-store.js +61 -0
- package/dist/app-server/libraries-store.js.map +1 -0
- package/dist/app-server/markdown-reports.d.ts +12 -0
- package/dist/app-server/markdown-reports.d.ts.map +1 -0
- package/dist/app-server/markdown-reports.js +145 -0
- package/dist/app-server/markdown-reports.js.map +1 -0
- package/dist/app-server/oauth-debugger-domain.d.ts +230 -0
- package/dist/app-server/oauth-debugger-domain.d.ts.map +1 -0
- package/dist/app-server/oauth-debugger-domain.js +1098 -0
- package/dist/app-server/oauth-debugger-domain.js.map +1 -0
- package/dist/app-server/oauth-debugger.d.ts +20 -0
- package/dist/app-server/oauth-debugger.d.ts.map +1 -0
- package/dist/app-server/oauth-debugger.js +193 -0
- package/dist/app-server/oauth-debugger.js.map +1 -0
- package/dist/app-server/provider-models.d.ts +8 -0
- package/dist/app-server/provider-models.d.ts.map +1 -0
- package/dist/app-server/provider-models.js +60 -0
- package/dist/app-server/provider-models.js.map +1 -0
- package/dist/app-server/result-assistant-domain.d.ts +87 -0
- package/dist/app-server/result-assistant-domain.d.ts.map +1 -0
- package/dist/app-server/result-assistant-domain.js +212 -0
- package/dist/app-server/result-assistant-domain.js.map +1 -0
- package/dist/app-server/result-assistant.d.ts +22 -0
- package/dist/app-server/result-assistant.d.ts.map +1 -0
- package/dist/app-server/result-assistant.js +328 -0
- package/dist/app-server/result-assistant.js.map +1 -0
- package/dist/app-server/router.d.ts +4 -0
- package/dist/app-server/router.d.ts.map +1 -0
- package/dist/app-server/router.js +374 -0
- package/dist/app-server/router.js.map +1 -0
- package/dist/app-server/runs-routes.d.ts +44 -0
- package/dist/app-server/runs-routes.d.ts.map +1 -0
- package/dist/app-server/runs-routes.js +555 -0
- package/dist/app-server/runs-routes.js.map +1 -0
- package/dist/app-server/runs-store.d.ts +23 -0
- package/dist/app-server/runs-store.d.ts.map +1 -0
- package/dist/app-server/runs-store.js +84 -0
- package/dist/app-server/runs-store.js.map +1 -0
- package/dist/app-server/scenario-assistant-domain.d.ts +162 -0
- package/dist/app-server/scenario-assistant-domain.d.ts.map +1 -0
- package/dist/app-server/scenario-assistant-domain.js +269 -0
- package/dist/app-server/scenario-assistant-domain.js.map +1 -0
- package/dist/app-server/scenario-assistant.d.ts +29 -0
- package/dist/app-server/scenario-assistant.d.ts.map +1 -0
- package/dist/app-server/scenario-assistant.js +246 -0
- package/dist/app-server/scenario-assistant.js.map +1 -0
- package/dist/app-server/settings-store.d.ts +4 -0
- package/dist/app-server/settings-store.d.ts.map +1 -0
- package/dist/app-server/settings-store.js +32 -0
- package/dist/app-server/settings-store.js.map +1 -0
- package/dist/app-server/snapshots-routes.d.ts +24 -0
- package/dist/app-server/snapshots-routes.d.ts.map +1 -0
- package/dist/app-server/snapshots-routes.js +82 -0
- package/dist/app-server/snapshots-routes.js.map +1 -0
- package/dist/app-server/static-serving.d.ts +17 -0
- package/dist/app-server/static-serving.d.ts.map +1 -0
- package/dist/app-server/static-serving.js +64 -0
- package/dist/app-server/static-serving.js.map +1 -0
- package/dist/app-server/store-utils.d.ts +5 -0
- package/dist/app-server/store-utils.d.ts.map +1 -0
- package/dist/app-server/store-utils.js +26 -0
- package/dist/app-server/store-utils.js.map +1 -0
- package/dist/app-server/tool-analysis-domain.d.ts +146 -0
- package/dist/app-server/tool-analysis-domain.d.ts.map +1 -0
- package/dist/app-server/tool-analysis-domain.js +556 -0
- package/dist/app-server/tool-analysis-domain.js.map +1 -0
- package/dist/app-server/tool-analysis-storage.d.ts +41 -0
- package/dist/app-server/tool-analysis-storage.d.ts.map +1 -0
- package/dist/app-server/tool-analysis-storage.js +110 -0
- package/dist/app-server/tool-analysis-storage.js.map +1 -0
- package/dist/app-server/tool-analysis.d.ts +22 -0
- package/dist/app-server/tool-analysis.d.ts.map +1 -0
- package/dist/app-server/tool-analysis.js +271 -0
- package/dist/app-server/tool-analysis.js.map +1 -0
- package/dist/app-server/types.d.ts +28 -0
- package/dist/app-server/types.d.ts.map +1 -0
- package/dist/app-server/types.js +2 -0
- package/dist/app-server/types.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +544 -0
- package/dist/cli.js.map +1 -0
- package/dist/snapshot.d.ts +80 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +401 -0
- package/dist/snapshot.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import type { ServerResponse } from 'node:http';
|
|
2
|
+
import type { EvalConfig, ToolDef } from '@inspectr/mcplab-core';
|
|
3
|
+
import { McpClientManager } from '@inspectr/mcplab-core';
|
|
4
|
+
import type { AppSettings } from './types.js';
|
|
5
|
+
type JobEvent = {
|
|
6
|
+
type: 'started' | 'log' | 'completed' | 'error';
|
|
7
|
+
ts: string;
|
|
8
|
+
payload: Record<string, unknown>;
|
|
9
|
+
};
|
|
10
|
+
export interface ToolAnalysisFinding {
|
|
11
|
+
id: string;
|
|
12
|
+
scope:
|
|
13
|
+
| 'tool_name'
|
|
14
|
+
| 'description'
|
|
15
|
+
| 'schema'
|
|
16
|
+
| 'ergonomics'
|
|
17
|
+
| 'safety'
|
|
18
|
+
| 'eval_readiness'
|
|
19
|
+
| 'execution';
|
|
20
|
+
severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
|
|
21
|
+
title: string;
|
|
22
|
+
detail: string;
|
|
23
|
+
suggestion?: string;
|
|
24
|
+
}
|
|
25
|
+
interface ToolAnalysisSuggestedSchemaChange {
|
|
26
|
+
type: 'description' | 'parameter' | 'required' | 'enum' | 'constraints' | 'examples' | 'naming';
|
|
27
|
+
summary: string;
|
|
28
|
+
before?: string;
|
|
29
|
+
after?: string;
|
|
30
|
+
}
|
|
31
|
+
interface ToolAnalysisToolReport {
|
|
32
|
+
serverName: string;
|
|
33
|
+
toolName: string;
|
|
34
|
+
publicToolName: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
inputSchema?: unknown;
|
|
37
|
+
safetyClassification: 'read_like' | 'unsafe_or_unknown';
|
|
38
|
+
classificationReason: string;
|
|
39
|
+
metadataReview?: {
|
|
40
|
+
strengths: string[];
|
|
41
|
+
issues: ToolAnalysisFinding[];
|
|
42
|
+
suggestedDescription?: string;
|
|
43
|
+
suggestedSchemaChanges: ToolAnalysisSuggestedSchemaChange[];
|
|
44
|
+
evalReadinessNotes: string[];
|
|
45
|
+
};
|
|
46
|
+
deeperAnalysis?: {
|
|
47
|
+
attempted: boolean;
|
|
48
|
+
skippedReason?: string;
|
|
49
|
+
sampleCalls: Array<{
|
|
50
|
+
callIndex: number;
|
|
51
|
+
arguments: unknown;
|
|
52
|
+
ok: boolean;
|
|
53
|
+
durationMs?: number;
|
|
54
|
+
resultPreview?: string;
|
|
55
|
+
error?: string;
|
|
56
|
+
observations: string[];
|
|
57
|
+
issues: ToolAnalysisFinding[];
|
|
58
|
+
}>;
|
|
59
|
+
overallObservations: string[];
|
|
60
|
+
};
|
|
61
|
+
overallRecommendations: string[];
|
|
62
|
+
}
|
|
63
|
+
interface ToolAnalysisServerReport {
|
|
64
|
+
serverName: string;
|
|
65
|
+
toolCountDiscovered: number;
|
|
66
|
+
toolCountAnalyzed: number;
|
|
67
|
+
toolCountSkipped: number;
|
|
68
|
+
warnings: string[];
|
|
69
|
+
tools: ToolAnalysisToolReport[];
|
|
70
|
+
}
|
|
71
|
+
export interface ToolAnalysisReport {
|
|
72
|
+
schemaVersion: 1;
|
|
73
|
+
createdAt: string;
|
|
74
|
+
assistantAgentName: string;
|
|
75
|
+
assistantAgentModel: string;
|
|
76
|
+
modes: {
|
|
77
|
+
metadataReview: boolean;
|
|
78
|
+
deeperAnalysis: boolean;
|
|
79
|
+
};
|
|
80
|
+
settings: {
|
|
81
|
+
autoRunPolicy?: 'read_only_allowlist';
|
|
82
|
+
sampleCallsPerTool?: number;
|
|
83
|
+
toolCallTimeoutMs?: number;
|
|
84
|
+
maxParallelTools?: number;
|
|
85
|
+
};
|
|
86
|
+
summary: {
|
|
87
|
+
serversAnalyzed: number;
|
|
88
|
+
toolsAnalyzed: number;
|
|
89
|
+
toolsSkipped: number;
|
|
90
|
+
issueCounts: {
|
|
91
|
+
critical: number;
|
|
92
|
+
high: number;
|
|
93
|
+
medium: number;
|
|
94
|
+
low: number;
|
|
95
|
+
info: number;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
servers: ToolAnalysisServerReport[];
|
|
99
|
+
findings: ToolAnalysisFinding[];
|
|
100
|
+
}
|
|
101
|
+
export interface ToolAnalysisJob {
|
|
102
|
+
id: string;
|
|
103
|
+
status: 'running' | 'completed' | 'error' | 'stopped';
|
|
104
|
+
events: JobEvent[];
|
|
105
|
+
clients: Set<ServerResponse>;
|
|
106
|
+
abortController: AbortController;
|
|
107
|
+
result?: ToolAnalysisReport;
|
|
108
|
+
savedReportId?: string;
|
|
109
|
+
savedReportPath?: string;
|
|
110
|
+
}
|
|
111
|
+
interface ToolAnalysisToolContext {
|
|
112
|
+
serverName: string;
|
|
113
|
+
tool: ToolDef;
|
|
114
|
+
safetyClassification: 'read_like' | 'unsafe_or_unknown';
|
|
115
|
+
classificationReason: string;
|
|
116
|
+
}
|
|
117
|
+
export declare function discoverMcpToolsForServers(
|
|
118
|
+
serversByName: EvalConfig['servers'],
|
|
119
|
+
serverNames: string[]
|
|
120
|
+
): Promise<{
|
|
121
|
+
mcp: McpClientManager;
|
|
122
|
+
servers: Array<{
|
|
123
|
+
serverName: string;
|
|
124
|
+
warnings: string[];
|
|
125
|
+
tools: ToolAnalysisToolContext[];
|
|
126
|
+
}>;
|
|
127
|
+
}>;
|
|
128
|
+
export declare function runToolAnalysisJob(params: {
|
|
129
|
+
job: ToolAnalysisJob;
|
|
130
|
+
settings: AppSettings;
|
|
131
|
+
requestedAssistantAgentName?: string;
|
|
132
|
+
serverNames: string[];
|
|
133
|
+
selectedToolsByServer?: Record<string, string[]>;
|
|
134
|
+
modes: {
|
|
135
|
+
metadataReview: boolean;
|
|
136
|
+
deeperAnalysis: boolean;
|
|
137
|
+
};
|
|
138
|
+
deeper: {
|
|
139
|
+
autoRunPolicy: 'read_only_allowlist';
|
|
140
|
+
sampleCallsPerTool: number;
|
|
141
|
+
toolCallTimeoutMs: number;
|
|
142
|
+
};
|
|
143
|
+
maxParallelTools: number;
|
|
144
|
+
}): Promise<void>;
|
|
145
|
+
export {};
|
|
146
|
+
//# sourceMappingURL=tool-analysis-domain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-analysis-domain.d.ts","sourceRoot":"","sources":["../../src/app-server/tool-analysis-domain.ts"],"names":[],"mappings":"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"}
|