@kryptosai/mcp-observatory 1.28.2 â 1.28.3
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/CONTRIBUTORS.md +4 -1
- package/README.md +109 -14
- package/README.zh-CN.md +654 -0
- package/dist/src/adapters/http.js +13 -4
- package/dist/src/adapters/http.js.map +1 -1
- package/dist/src/checks/runtime-profile.d.ts +5 -0
- package/dist/src/checks/runtime-profile.js +214 -0
- package/dist/src/checks/runtime-profile.js.map +1 -0
- package/dist/src/checks/security-rules.js +18 -0
- package/dist/src/checks/security-rules.js.map +1 -1
- package/dist/src/checks/security.js +33 -65
- package/dist/src/checks/security.js.map +1 -1
- package/dist/src/checks/skill-scan.d.ts +46 -0
- package/dist/src/checks/skill-scan.js +665 -0
- package/dist/src/checks/skill-scan.js.map +1 -0
- package/dist/src/cli.js +15 -2
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/enforce.d.ts +12 -0
- package/dist/src/commands/enforce.js +187 -0
- package/dist/src/commands/enforce.js.map +1 -0
- package/dist/src/commands/helpers.d.ts +2 -1
- package/dist/src/commands/helpers.js +9 -1
- package/dist/src/commands/helpers.js.map +1 -1
- package/dist/src/commands/legacy.js +3 -0
- package/dist/src/commands/legacy.js.map +1 -1
- package/dist/src/commands/risk-graph.d.ts +2 -0
- package/dist/src/commands/risk-graph.js +64 -0
- package/dist/src/commands/risk-graph.js.map +1 -0
- package/dist/src/commands/scan.js +36 -9
- package/dist/src/commands/scan.js.map +1 -1
- package/dist/src/commands/score.js.map +1 -1
- package/dist/src/commands/skill-scan.d.ts +6 -0
- package/dist/src/commands/skill-scan.js +62 -0
- package/dist/src/commands/skill-scan.js.map +1 -0
- package/dist/src/commands/test.js +13 -0
- package/dist/src/commands/test.js.map +1 -1
- package/dist/src/commands/watch.js +13 -8
- package/dist/src/commands/watch.js.map +1 -1
- package/dist/src/discovery.d.ts +15 -1
- package/dist/src/discovery.js +251 -35
- package/dist/src/discovery.js.map +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/receipt.d.ts +4 -1
- package/dist/src/receipt.js +85 -0
- package/dist/src/receipt.js.map +1 -1
- package/dist/src/reporters/markdown.js +39 -0
- package/dist/src/reporters/markdown.js.map +1 -1
- package/dist/src/reporters/terminal.d.ts +2 -0
- package/dist/src/reporters/terminal.js +55 -2
- package/dist/src/reporters/terminal.js.map +1 -1
- package/dist/src/risk-graph.d.ts +64 -0
- package/dist/src/risk-graph.js +452 -0
- package/dist/src/risk-graph.js.map +1 -0
- package/dist/src/runner.js +6 -0
- package/dist/src/runner.js.map +1 -1
- package/dist/src/server.d.ts +1 -3
- package/dist/src/server.js +29 -645
- package/dist/src/server.js.map +1 -1
- package/dist/src/storage.js +13 -9
- package/dist/src/storage.js.map +1 -1
- package/dist/src/telemetry.d.ts +7 -0
- package/dist/src/telemetry.js.map +1 -1
- package/dist/src/tools/check-server.d.ts +27 -0
- package/dist/src/tools/check-server.js +46 -0
- package/dist/src/tools/check-server.js.map +1 -0
- package/dist/src/tools/ci-report.d.ts +21 -0
- package/dist/src/tools/ci-report.js +38 -0
- package/dist/src/tools/ci-report.js.map +1 -0
- package/dist/src/tools/diff-runs.d.ts +28 -0
- package/dist/src/tools/diff-runs.js +39 -0
- package/dist/src/tools/diff-runs.js.map +1 -0
- package/dist/src/tools/get-history.d.ts +21 -0
- package/dist/src/tools/get-history.js +37 -0
- package/dist/src/tools/get-history.js.map +1 -0
- package/dist/src/tools/get-last-run.d.ts +21 -0
- package/dist/src/tools/get-last-run.js +47 -0
- package/dist/src/tools/get-last-run.js.map +1 -0
- package/dist/src/tools/helpers.d.ts +8 -0
- package/dist/src/tools/helpers.js +32 -0
- package/dist/src/tools/helpers.js.map +1 -0
- package/dist/src/tools/lock-verify.d.ts +21 -0
- package/dist/src/tools/lock-verify.js +47 -0
- package/dist/src/tools/lock-verify.js.map +1 -0
- package/dist/src/tools/record.d.ts +23 -0
- package/dist/src/tools/record.js +48 -0
- package/dist/src/tools/record.js.map +1 -0
- package/dist/src/tools/replay.d.ts +21 -0
- package/dist/src/tools/replay.js +54 -0
- package/dist/src/tools/replay.js.map +1 -0
- package/dist/src/tools/scan.d.ts +18 -0
- package/dist/src/tools/scan.js +43 -0
- package/dist/src/tools/scan.js.map +1 -0
- package/dist/src/tools/score-server.d.ts +23 -0
- package/dist/src/tools/score-server.js +53 -0
- package/dist/src/tools/score-server.js.map +1 -0
- package/dist/src/tools/suggest-servers.d.ts +21 -0
- package/dist/src/tools/suggest-servers.js +114 -0
- package/dist/src/tools/suggest-servers.js.map +1 -0
- package/dist/src/tools/verify-tool.d.ts +25 -0
- package/dist/src/tools/verify-tool.js +48 -0
- package/dist/src/tools/verify-tool.js.map +1 -0
- package/dist/src/tools/watch.d.ts +23 -0
- package/dist/src/tools/watch.js +67 -0
- package/dist/src/tools/watch.js.map +1 -0
- package/dist/src/types.d.ts +26 -1
- package/dist/src/utils/security.d.ts +3 -0
- package/dist/src/utils/security.js +37 -0
- package/dist/src/utils/security.js.map +1 -0
- package/dist/src/validate.d.ts +1 -0
- package/dist/src/validate.js +119 -35
- package/dist/src/validate.js.map +1 -1
- package/docs/agent-tasks.md +1 -1
- package/docs/commercial-boundary.md +9 -1
- package/docs/contributor-recognition.md +2 -0
- package/docs/demo.svg +1 -59
- package/docs/mcp-receipts.md +9 -0
- package/docs/mcp-server-safety-index.md +21 -16
- package/docs/metrics-dashboard.md +17 -1
- package/docs/private-mcp-fleet-risk-graph.md +69 -0
- package/docs/receipt-graph.md +118 -31
- package/docs/safety-index/artifacts/chrome-devtools-mcp-server.json +1745 -0
- package/docs/safety-index/artifacts/chrome-devtools-mcp-server.md +169 -0
- package/docs/safety-index/artifacts/filesystem-mcp-server.json +786 -0
- package/docs/safety-index/artifacts/filesystem-mcp-server.md +169 -0
- package/docs/safety-index/artifacts/github-mcp-server.json +1707 -0
- package/docs/safety-index/artifacts/github-mcp-server.md +169 -0
- package/docs/safety-index/mcp-risk-graph.html +167 -0
- package/docs/safety-index/mcp-risk-graph.json +669 -0
- package/docs/safety-index/mcp-risk-graph.md +47 -0
- package/docs/safety-index/targets.json +57 -0
- package/docs/sample-private-fleet-risk-graph.md +90 -0
- package/package.json +21 -11
package/dist/src/discovery.js
CHANGED
|
@@ -1,99 +1,232 @@
|
|
|
1
|
-
import { readFile } from "node:fs/promises";
|
|
1
|
+
import { access, readFile } from "node:fs/promises";
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import path from "node:path";
|
|
4
|
-
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
const mcpServerEntrySchema = z.object({
|
|
6
|
+
url: z.string().optional(),
|
|
7
|
+
command: z.string().optional(),
|
|
8
|
+
args: z.array(z.unknown()).optional(),
|
|
9
|
+
env: z.record(z.string(), z.unknown()).optional(),
|
|
10
|
+
authToken: z.string().optional(),
|
|
11
|
+
}).passthrough();
|
|
12
|
+
const mcpConfigSchema = z.object({
|
|
13
|
+
mcpServers: z.record(z.string(), z.unknown()),
|
|
14
|
+
}).passthrough();
|
|
15
|
+
// ââ Per-agent config path functions âââââââââââââââââââââââââââââââââââââââââ
|
|
16
|
+
function claudeCodeConfigPaths() {
|
|
17
|
+
const home = os.homedir();
|
|
18
|
+
return [path.join(home, ".claude.json")];
|
|
19
|
+
}
|
|
20
|
+
function claudeDesktopConfigPaths() {
|
|
5
21
|
const home = os.homedir();
|
|
6
22
|
const paths = [];
|
|
7
|
-
// Claude Code user config
|
|
8
|
-
paths.push(path.join(home, ".claude.json"));
|
|
9
|
-
// Claude Desktop (macOS)
|
|
10
23
|
if (process.platform === "darwin") {
|
|
11
24
|
paths.push(path.join(home, "Library", "Application Support", "Claude", "claude_desktop_config.json"));
|
|
12
25
|
}
|
|
13
|
-
// Claude Desktop (Windows)
|
|
14
26
|
if (process.platform === "win32") {
|
|
15
27
|
const appData = process.env["APPDATA"];
|
|
16
28
|
if (appData) {
|
|
17
29
|
paths.push(path.join(appData, "Claude", "claude_desktop_config.json"));
|
|
18
30
|
}
|
|
19
31
|
}
|
|
20
|
-
|
|
21
|
-
|
|
32
|
+
return paths;
|
|
33
|
+
}
|
|
34
|
+
function cursorConfigPaths() {
|
|
35
|
+
const home = os.homedir();
|
|
36
|
+
return [path.join(home, ".cursor", "mcp.json")];
|
|
37
|
+
}
|
|
38
|
+
function windsurfConfigPaths() {
|
|
39
|
+
const home = os.homedir();
|
|
40
|
+
return [path.join(home, ".windsurf", "mcp.json")];
|
|
41
|
+
}
|
|
42
|
+
function vscodeConfigPaths() {
|
|
43
|
+
const home = os.homedir();
|
|
44
|
+
return [path.join(home, ".vscode", "mcp.json")];
|
|
45
|
+
}
|
|
46
|
+
function opencodeConfigPaths() {
|
|
47
|
+
const home = os.homedir();
|
|
48
|
+
return [
|
|
49
|
+
path.join(home, ".config", "opencode", "opencode.json"),
|
|
50
|
+
path.join(home, ".opencode", "opencode.json"),
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
function codexConfigPaths() {
|
|
54
|
+
const home = os.homedir();
|
|
55
|
+
return [path.join(home, ".codex", "config.json")];
|
|
56
|
+
}
|
|
57
|
+
function geminiCliConfigPaths() {
|
|
58
|
+
const home = os.homedir();
|
|
59
|
+
return [path.join(home, ".gemini", "mcp.json")];
|
|
60
|
+
}
|
|
61
|
+
function kiroConfigPaths() {
|
|
62
|
+
const home = os.homedir();
|
|
63
|
+
return [path.join(home, ".kiro", "mcp.json")];
|
|
64
|
+
}
|
|
65
|
+
function antigravityConfigPaths() {
|
|
66
|
+
const home = os.homedir();
|
|
67
|
+
return [path.join(home, ".antigravity", "mcp.json")];
|
|
68
|
+
}
|
|
69
|
+
function amazonQConfigPaths() {
|
|
70
|
+
const home = os.homedir();
|
|
71
|
+
return [path.join(home, ".amazonq", "mcp.json")];
|
|
72
|
+
}
|
|
73
|
+
// ââ Per-agent skill path functions ââââââââââââââââââââââââââââââââââââââââââ
|
|
74
|
+
function cursorSkillPaths() {
|
|
75
|
+
const home = os.homedir();
|
|
76
|
+
return [path.join(home, ".cursor", "skills")];
|
|
77
|
+
}
|
|
78
|
+
function opencodeSkillPaths() {
|
|
79
|
+
const home = os.homedir();
|
|
80
|
+
return [
|
|
81
|
+
path.join(home, ".config", "opencode", "skills"),
|
|
82
|
+
path.join(home, ".opencode", "skills"),
|
|
83
|
+
];
|
|
84
|
+
}
|
|
85
|
+
function codexSkillPaths() {
|
|
86
|
+
const home = os.homedir();
|
|
87
|
+
return [
|
|
88
|
+
path.join(home, ".agents", "skills"),
|
|
89
|
+
path.join(home, ".codex", "skills"),
|
|
90
|
+
];
|
|
91
|
+
}
|
|
92
|
+
function ampSkillPaths() {
|
|
93
|
+
const home = os.homedir();
|
|
94
|
+
return [
|
|
95
|
+
path.join(home, ".config", "agents", "skills"),
|
|
96
|
+
path.join(home, ".amp", "skills"),
|
|
97
|
+
];
|
|
98
|
+
}
|
|
99
|
+
function openclawSkillPaths() {
|
|
100
|
+
const home = os.homedir();
|
|
101
|
+
return [
|
|
102
|
+
path.join(home, ".openclaw", "skills"),
|
|
103
|
+
path.join(home, ".openclaw", "workspace", "skills"),
|
|
104
|
+
path.join(home, ".clawdbot", "skills"),
|
|
105
|
+
];
|
|
106
|
+
}
|
|
107
|
+
// ââ Project-level config paths ââââââââââââââââââââââââââââââââââââââââââââââ
|
|
108
|
+
function projectConfigPaths() {
|
|
109
|
+
const paths = [];
|
|
22
110
|
let dir = process.cwd();
|
|
23
111
|
const root = path.parse(dir).root;
|
|
24
112
|
let depth = 0;
|
|
25
113
|
while (dir !== root && depth < 10) {
|
|
26
114
|
paths.push(path.join(dir, ".claude.json"));
|
|
27
115
|
paths.push(path.join(dir, ".mcp.json"));
|
|
28
|
-
// Also check for Claude Code project-level config
|
|
29
116
|
paths.push(path.join(dir, ".claude", "settings.local.json"));
|
|
117
|
+
paths.push(path.join(dir, ".cursor", "mcp.json"));
|
|
118
|
+
paths.push(path.join(dir, ".windsurf", "mcp.json"));
|
|
119
|
+
paths.push(path.join(dir, ".vscode", "mcp.json"));
|
|
120
|
+
paths.push(path.join(dir, ".opencode", "opencode.json"));
|
|
121
|
+
paths.push(path.join(dir, ".gemini", "mcp.json"));
|
|
122
|
+
paths.push(path.join(dir, ".kiro", "mcp.json"));
|
|
123
|
+
paths.push(path.join(dir, ".antigravity", "mcp.json"));
|
|
124
|
+
paths.push(path.join(dir, ".amazonq", "mcp.json"));
|
|
30
125
|
dir = path.dirname(dir);
|
|
31
126
|
depth++;
|
|
32
127
|
}
|
|
33
128
|
return paths;
|
|
34
129
|
}
|
|
130
|
+
function projectSkillPaths() {
|
|
131
|
+
const paths = [];
|
|
132
|
+
let dir = process.cwd();
|
|
133
|
+
const root = path.parse(dir).root;
|
|
134
|
+
let depth = 0;
|
|
135
|
+
while (dir !== root && depth < 10) {
|
|
136
|
+
paths.push(path.join(dir, ".cursor", "skills"));
|
|
137
|
+
paths.push(path.join(dir, ".opencode", "skills"));
|
|
138
|
+
paths.push(path.join(dir, ".agents", "skills"));
|
|
139
|
+
paths.push(path.join(dir, ".codex", "skills"));
|
|
140
|
+
dir = path.dirname(dir);
|
|
141
|
+
depth++;
|
|
142
|
+
}
|
|
143
|
+
return paths;
|
|
144
|
+
}
|
|
145
|
+
// ââ Aggregate path functions ââââââââââââââââââââââââââââââââââââââââââââââââ
|
|
146
|
+
function defaultConfigPaths() {
|
|
147
|
+
return [
|
|
148
|
+
...claudeCodeConfigPaths(),
|
|
149
|
+
...claudeDesktopConfigPaths(),
|
|
150
|
+
...cursorConfigPaths(),
|
|
151
|
+
...windsurfConfigPaths(),
|
|
152
|
+
...vscodeConfigPaths(),
|
|
153
|
+
...opencodeConfigPaths(),
|
|
154
|
+
...codexConfigPaths(),
|
|
155
|
+
...geminiCliConfigPaths(),
|
|
156
|
+
...kiroConfigPaths(),
|
|
157
|
+
...antigravityConfigPaths(),
|
|
158
|
+
...amazonQConfigPaths(),
|
|
159
|
+
...projectConfigPaths(),
|
|
160
|
+
];
|
|
161
|
+
}
|
|
162
|
+
function defaultSkillPaths() {
|
|
163
|
+
return [
|
|
164
|
+
...cursorSkillPaths(),
|
|
165
|
+
...opencodeSkillPaths(),
|
|
166
|
+
...codexSkillPaths(),
|
|
167
|
+
...ampSkillPaths(),
|
|
168
|
+
...openclawSkillPaths(),
|
|
169
|
+
...projectSkillPaths(),
|
|
170
|
+
];
|
|
171
|
+
}
|
|
172
|
+
// ââ Core scanning logic âââââââââââââââââââââââââââââââââââââââââââââââââââââ
|
|
35
173
|
async function tryReadJson(filePath) {
|
|
36
174
|
try {
|
|
37
175
|
const content = await readFile(filePath, "utf8");
|
|
38
|
-
return JSON.parse(content);
|
|
176
|
+
return mcpConfigSchema.parse(JSON.parse(content));
|
|
39
177
|
}
|
|
40
178
|
catch {
|
|
41
179
|
return undefined;
|
|
42
180
|
}
|
|
43
181
|
}
|
|
44
182
|
function extractTargets(data, source) {
|
|
45
|
-
if (typeof data !== "object" || data === null || Array.isArray(data)) {
|
|
46
|
-
return [];
|
|
47
|
-
}
|
|
48
|
-
const obj = data;
|
|
49
|
-
const servers = obj["mcpServers"];
|
|
50
|
-
if (typeof servers !== "object" || servers === null || Array.isArray(servers)) {
|
|
51
|
-
return [];
|
|
52
|
-
}
|
|
53
183
|
const results = [];
|
|
54
|
-
for (const [name, entry] of Object.entries(
|
|
55
|
-
|
|
184
|
+
for (const [name, entry] of Object.entries(data.mcpServers)) {
|
|
185
|
+
const parsed = mcpServerEntrySchema.safeParse(entry);
|
|
186
|
+
if (!parsed.success)
|
|
56
187
|
continue;
|
|
57
|
-
|
|
58
|
-
const serverEntry = entry;
|
|
59
|
-
const command = serverEntry["command"];
|
|
60
|
-
const args = serverEntry["args"];
|
|
188
|
+
const serverEntry = parsed.data;
|
|
61
189
|
// HTTP/SSE server (has url field)
|
|
62
|
-
|
|
63
|
-
if (typeof url === "string" && url.length > 0) {
|
|
190
|
+
if (serverEntry.url) {
|
|
64
191
|
results.push({
|
|
65
192
|
source,
|
|
66
193
|
config: {
|
|
67
194
|
targetId: name,
|
|
68
195
|
adapter: "http",
|
|
69
|
-
url,
|
|
70
|
-
authToken:
|
|
196
|
+
url: serverEntry.url,
|
|
197
|
+
authToken: serverEntry.authToken,
|
|
71
198
|
timeoutMs: 15_000,
|
|
72
199
|
}
|
|
73
200
|
});
|
|
74
201
|
continue;
|
|
75
202
|
}
|
|
76
203
|
// Local process server (has command field)
|
|
77
|
-
if (
|
|
204
|
+
if (!serverEntry.command) {
|
|
78
205
|
continue;
|
|
79
206
|
}
|
|
80
207
|
const parsedArgs = [];
|
|
81
|
-
if (
|
|
82
|
-
for (const arg of args) {
|
|
208
|
+
if (serverEntry.args) {
|
|
209
|
+
for (const arg of serverEntry.args) {
|
|
83
210
|
if (typeof arg === "string") {
|
|
84
211
|
parsedArgs.push(arg);
|
|
85
212
|
}
|
|
86
213
|
}
|
|
87
214
|
}
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
215
|
+
const envPairs = [];
|
|
216
|
+
if (serverEntry.env) {
|
|
217
|
+
for (const [key, value] of Object.entries(serverEntry.env)) {
|
|
218
|
+
if (typeof value === "string") {
|
|
219
|
+
envPairs.push([key, value]);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
const env = envPairs.length > 0 ? Object.fromEntries(envPairs) : undefined;
|
|
91
224
|
results.push({
|
|
92
225
|
source,
|
|
93
226
|
config: {
|
|
94
227
|
targetId: name,
|
|
95
228
|
adapter: "local-process",
|
|
96
|
-
command,
|
|
229
|
+
command: serverEntry.command,
|
|
97
230
|
args: parsedArgs,
|
|
98
231
|
env,
|
|
99
232
|
timeoutMs: 15_000,
|
|
@@ -102,6 +235,7 @@ function extractTargets(data, source) {
|
|
|
102
235
|
}
|
|
103
236
|
return results;
|
|
104
237
|
}
|
|
238
|
+
// ââ Public API ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
|
|
105
239
|
export async function scanForTargets(configPath) {
|
|
106
240
|
const paths = configPath ? [configPath] : defaultConfigPaths();
|
|
107
241
|
const allTargets = [];
|
|
@@ -123,4 +257,86 @@ export async function scanForTargets(configPath) {
|
|
|
123
257
|
}
|
|
124
258
|
return allTargets;
|
|
125
259
|
}
|
|
260
|
+
export async function discoverSkillPaths(explicitPath) {
|
|
261
|
+
if (explicitPath) {
|
|
262
|
+
try {
|
|
263
|
+
await access(explicitPath);
|
|
264
|
+
return [explicitPath];
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
return [];
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
const paths = defaultSkillPaths();
|
|
271
|
+
const results = [];
|
|
272
|
+
const seen = new Set();
|
|
273
|
+
for (const p of paths) {
|
|
274
|
+
if (seen.has(p))
|
|
275
|
+
continue;
|
|
276
|
+
seen.add(p);
|
|
277
|
+
try {
|
|
278
|
+
await access(p);
|
|
279
|
+
results.push(p);
|
|
280
|
+
}
|
|
281
|
+
catch {
|
|
282
|
+
// Path doesn't exist, skip
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
return results;
|
|
286
|
+
}
|
|
287
|
+
// ââ Per-agent discovery exports âââââââââââââââââââââââââââââââââââââââââââââ
|
|
288
|
+
export async function discoverFromCursor() {
|
|
289
|
+
return scanForTargetsFromPaths(cursorConfigPaths());
|
|
290
|
+
}
|
|
291
|
+
export async function discoverFromWindsurf() {
|
|
292
|
+
return scanForTargetsFromPaths(windsurfConfigPaths());
|
|
293
|
+
}
|
|
294
|
+
export async function discoverFromVSCode() {
|
|
295
|
+
return scanForTargetsFromPaths(vscodeConfigPaths());
|
|
296
|
+
}
|
|
297
|
+
export async function discoverFromOpenCode() {
|
|
298
|
+
return scanForTargetsFromPaths(opencodeConfigPaths());
|
|
299
|
+
}
|
|
300
|
+
export async function discoverFromCodex() {
|
|
301
|
+
return scanForTargetsFromPaths(codexConfigPaths());
|
|
302
|
+
}
|
|
303
|
+
export async function discoverFromGeminiCli() {
|
|
304
|
+
return scanForTargetsFromPaths(geminiCliConfigPaths());
|
|
305
|
+
}
|
|
306
|
+
export async function discoverFromKiro() {
|
|
307
|
+
return scanForTargetsFromPaths(kiroConfigPaths());
|
|
308
|
+
}
|
|
309
|
+
export async function discoverFromAntigravity() {
|
|
310
|
+
return scanForTargetsFromPaths(antigravityConfigPaths());
|
|
311
|
+
}
|
|
312
|
+
export async function discoverFromAmazonQ() {
|
|
313
|
+
return scanForTargetsFromPaths(amazonQConfigPaths());
|
|
314
|
+
}
|
|
315
|
+
export async function discoverFromClaudeDesktop() {
|
|
316
|
+
return scanForTargetsFromPaths(claudeDesktopConfigPaths());
|
|
317
|
+
}
|
|
318
|
+
export async function discoverFromClaudeCode() {
|
|
319
|
+
return scanForTargetsFromPaths(claudeCodeConfigPaths());
|
|
320
|
+
}
|
|
321
|
+
async function scanForTargetsFromPaths(configPaths) {
|
|
322
|
+
const allTargets = [];
|
|
323
|
+
const seen = new Set();
|
|
324
|
+
for (const p of configPaths) {
|
|
325
|
+
const data = await tryReadJson(p);
|
|
326
|
+
if (data === undefined)
|
|
327
|
+
continue;
|
|
328
|
+
const targets = extractTargets(data, p);
|
|
329
|
+
for (const target of targets) {
|
|
330
|
+
const key = target.config.adapter === "http"
|
|
331
|
+
? target.config.url
|
|
332
|
+
: `${target.config.command} ${target.config.args.join(" ")}`;
|
|
333
|
+
if (!seen.has(key)) {
|
|
334
|
+
seen.add(key);
|
|
335
|
+
allTargets.push(target);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return allTargets;
|
|
340
|
+
}
|
|
341
|
+
export { defaultConfigPaths, defaultSkillPaths };
|
|
126
342
|
//# sourceMappingURL=discovery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/discovery.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -6,9 +6,11 @@ export { runConformanceCheck } from "./checks/conformance.js";
|
|
|
6
6
|
export { runSchemaQualityCheck } from "./checks/schema-quality.js";
|
|
7
7
|
export { runAttackSimulationCheck, type AttackSimulationFinding, type AttackSimulationOptions } from "./checks/attack-sim.js";
|
|
8
8
|
export { runLightweightSecurityCheck, runSecurityCheck } from "./checks/security.js";
|
|
9
|
+
export { analyzeRuntimeProfile, runRuntimeProfileCheck } from "./checks/runtime-profile.js";
|
|
9
10
|
export { SECURITY_RULES, type SecurityFinding, type SecurityRule, type ToolInfo } from "./checks/security-rules.js";
|
|
11
|
+
export { scanContent, scanFile, scanDirectory, scanPath, computeSkillHealthScore, summarizeScan, renderSkillScanTerminal, renderSkillScanMarkdown, renderSkillScanJson, renderSkillScanSarif, SKILL_SCAN_RULES, type SkillScanRule, type SkillScanFinding, type SkillScanResult, type SkillScanSummary, type SkillScanSeverity, } from "./checks/skill-scan.js";
|
|
10
12
|
export { diffArtifacts } from "./diff.js";
|
|
11
|
-
export { scanForTargets } from "./discovery.js";
|
|
13
|
+
export { scanForTargets, discoverSkillPaths, discoverFromCursor, discoverFromWindsurf, discoverFromVSCode, discoverFromOpenCode, discoverFromCodex, discoverFromGeminiCli, discoverFromKiro, discoverFromAntigravity, discoverFromAmazonQ, discoverFromClaudeDesktop, discoverFromClaudeCode, } from "./discovery.js";
|
|
12
14
|
export { renderHtml } from "./reporters/html.js";
|
|
13
15
|
export { renderJUnit } from "./reporters/junit.js";
|
|
14
16
|
export { renderMarkdown } from "./reporters/markdown.js";
|
package/dist/src/index.js
CHANGED
|
@@ -6,9 +6,11 @@ export { runConformanceCheck } from "./checks/conformance.js";
|
|
|
6
6
|
export { runSchemaQualityCheck } from "./checks/schema-quality.js";
|
|
7
7
|
export { runAttackSimulationCheck } from "./checks/attack-sim.js";
|
|
8
8
|
export { runLightweightSecurityCheck, runSecurityCheck } from "./checks/security.js";
|
|
9
|
+
export { analyzeRuntimeProfile, runRuntimeProfileCheck } from "./checks/runtime-profile.js";
|
|
9
10
|
export { SECURITY_RULES } from "./checks/security-rules.js";
|
|
11
|
+
export { scanContent, scanFile, scanDirectory, scanPath, computeSkillHealthScore, summarizeScan, renderSkillScanTerminal, renderSkillScanMarkdown, renderSkillScanJson, renderSkillScanSarif, SKILL_SCAN_RULES, } from "./checks/skill-scan.js";
|
|
10
12
|
export { diffArtifacts } from "./diff.js";
|
|
11
|
-
export { scanForTargets } from "./discovery.js";
|
|
13
|
+
export { scanForTargets, discoverSkillPaths, discoverFromCursor, discoverFromWindsurf, discoverFromVSCode, discoverFromOpenCode, discoverFromCodex, discoverFromGeminiCli, discoverFromKiro, discoverFromAntigravity, discoverFromAmazonQ, discoverFromClaudeDesktop, discoverFromClaudeCode, } from "./discovery.js";
|
|
12
14
|
export { renderHtml } from "./reporters/html.js";
|
|
13
15
|
export { renderJUnit } from "./reporters/junit.js";
|
|
14
16
|
export { renderMarkdown } from "./reporters/markdown.js";
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAqB,MAAM,YAAY,CAAC;AACjE,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,QAAQ,GAMT,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,aAAa,EACb,qBAAqB,EACrB,qBAAqB,GActB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,yBAAyB,EACzB,YAAY,EACZ,YAAY,GAGb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAA8D,MAAM,wBAAwB,CAAC;AAC9H,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,cAAc,EAA0D,MAAM,4BAA4B,CAAC;AACpH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/receipt.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type AuditReport, type AuditSeverity, type TrustStatus } from "./audit.js";
|
|
2
|
-
import type { TargetConfig } from "./types.js";
|
|
2
|
+
import type { NotObserved, RunArtifact, TargetConfig } from "./types.js";
|
|
3
3
|
export type ReceiptEnvironmentClass = "local" | "ci" | "public_safety_index" | "private_fleet";
|
|
4
4
|
export type ReceiptState = "ready_for_ci" | "needs_review" | "blocked" | "could_not_evaluate";
|
|
5
5
|
export type ReceiptAction = "allow" | "gate" | "rerun" | "quarantine" | "escalate";
|
|
@@ -39,6 +39,7 @@ export interface ReceiptEvidence {
|
|
|
39
39
|
tool_surface_summary: string;
|
|
40
40
|
attack_simulation_summary: string;
|
|
41
41
|
baseline_or_drift_summary: string;
|
|
42
|
+
runtime_profile_summary: string;
|
|
42
43
|
}
|
|
43
44
|
export interface ReceiptVerdict {
|
|
44
45
|
score: number;
|
|
@@ -76,6 +77,7 @@ export interface McpReceipt {
|
|
|
76
77
|
evidence: ReceiptEvidence;
|
|
77
78
|
verdict: ReceiptVerdict;
|
|
78
79
|
findings: ReceiptFinding[];
|
|
80
|
+
notObserved: NotObserved[];
|
|
79
81
|
reproduction: ReceiptReproduction;
|
|
80
82
|
maintainer_cta: ReceiptCta[];
|
|
81
83
|
buyer_cta: ReceiptCta[];
|
|
@@ -93,6 +95,7 @@ export interface BuildReceiptOptions extends ReceiptEvidenceOptions {
|
|
|
93
95
|
outputPath?: string;
|
|
94
96
|
topFindingsLimit?: number;
|
|
95
97
|
}
|
|
98
|
+
export declare function detectNotObserved(artifact: RunArtifact): NotObserved[];
|
|
96
99
|
export declare function mapStatusToReceiptVerdict(report: AuditReport): ReceiptVerdict;
|
|
97
100
|
export declare function buildMcpReceipt(report: AuditReport, target: TargetConfig, options?: BuildReceiptOptions): Promise<McpReceipt>;
|
|
98
101
|
export declare function renderReceiptMarkdown(receipt: McpReceipt): string;
|
package/dist/src/receipt.js
CHANGED
|
@@ -111,6 +111,81 @@ function driftSummary(report) {
|
|
|
111
111
|
return "No baseline or drift finding was included in this receipt.";
|
|
112
112
|
return `${driftFindings.length} baseline/drift finding(s) summarized.`;
|
|
113
113
|
}
|
|
114
|
+
function runtimeProfileSummary(report) {
|
|
115
|
+
const profile = report.artifact.runtimeProfile;
|
|
116
|
+
if (!profile)
|
|
117
|
+
return "Runtime profile was not generated for this run.";
|
|
118
|
+
const egressCount = profile.egress?.length ?? 0;
|
|
119
|
+
const mutationCount = profile.stateMutations?.length ?? 0;
|
|
120
|
+
if (egressCount === 0 && mutationCount === 0) {
|
|
121
|
+
return `No egress or state mutation indicators detected (confidence: ${profile.confidence}).`;
|
|
122
|
+
}
|
|
123
|
+
const parts = [];
|
|
124
|
+
if (egressCount > 0)
|
|
125
|
+
parts.push(`${egressCount} egress target(s) detected`);
|
|
126
|
+
if (mutationCount > 0)
|
|
127
|
+
parts.push(`${mutationCount} state mutation(s) detected`);
|
|
128
|
+
return `${parts.join(", ")} (confidence: ${profile.confidence}).`;
|
|
129
|
+
}
|
|
130
|
+
export function detectNotObserved(artifact) {
|
|
131
|
+
const notObserved = [];
|
|
132
|
+
const allToolIds = new Set();
|
|
133
|
+
const networkPattern = /url|http|https|fetch|request|api|web|curl|wget|net|socket|connect|download|upload/i;
|
|
134
|
+
const fsPattern = /read|write|delete|remove|create|mkdir|rmdir|file[_-]|fs[_-]|^cp$|^mv$|^ln$|touch|chmod|chown|move|copy|rename|dir/i;
|
|
135
|
+
for (const check of artifact.checks) {
|
|
136
|
+
for (const ev of check.evidence) {
|
|
137
|
+
for (const id of ev.identifiers ?? []) {
|
|
138
|
+
allToolIds.add(id);
|
|
139
|
+
}
|
|
140
|
+
if (ev.endpoint === "tools/list" && typeof ev.responseSnapshots?.tools === "object") {
|
|
141
|
+
const tools = (ev.responseSnapshots).tools;
|
|
142
|
+
if (tools) {
|
|
143
|
+
for (const tool of tools) {
|
|
144
|
+
if (typeof tool.name === "string")
|
|
145
|
+
allToolIds.add(tool.name);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const hasNetworkTool = [...allToolIds].some((t) => networkPattern.test(t));
|
|
152
|
+
if (!hasNetworkTool) {
|
|
153
|
+
notObserved.push({
|
|
154
|
+
category: "network_egress",
|
|
155
|
+
detail: "No outbound network calls were attempted during scan",
|
|
156
|
+
severity: "warning",
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
const hasFsTool = [...allToolIds].some((t) => fsPattern.test(t));
|
|
160
|
+
if (!hasFsTool) {
|
|
161
|
+
notObserved.push({
|
|
162
|
+
category: "filesystem_mutation",
|
|
163
|
+
detail: "Filesystem write operations were not exercised",
|
|
164
|
+
severity: "warning",
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
const securityCheck = artifact.checks.find((c) => c.id === "security" || c.id === "security-lite");
|
|
168
|
+
if (!securityCheck) {
|
|
169
|
+
notObserved.push({
|
|
170
|
+
category: "credential_access",
|
|
171
|
+
detail: "Credential scanning was not performed",
|
|
172
|
+
severity: "warning",
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
notObserved.push({
|
|
177
|
+
category: "credential_access",
|
|
178
|
+
detail: "Credential scanning was performed (see security findings)",
|
|
179
|
+
severity: "info",
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
notObserved.push({
|
|
183
|
+
category: "destructive_payloads",
|
|
184
|
+
detail: "Destructive payloads were not attempted (safe-mode only)",
|
|
185
|
+
severity: "info",
|
|
186
|
+
});
|
|
187
|
+
return notObserved;
|
|
188
|
+
}
|
|
114
189
|
export function mapStatusToReceiptVerdict(report) {
|
|
115
190
|
if (report.artifact.fatalError) {
|
|
116
191
|
return {
|
|
@@ -219,9 +294,11 @@ export async function buildMcpReceipt(report, target, options = {}) {
|
|
|
219
294
|
tool_surface_summary: toolSurfaceSummary(report),
|
|
220
295
|
attack_simulation_summary: attackSimulationSummary(report),
|
|
221
296
|
baseline_or_drift_summary: driftSummary(report),
|
|
297
|
+
runtime_profile_summary: runtimeProfileSummary(report),
|
|
222
298
|
},
|
|
223
299
|
verdict: mapStatusToReceiptVerdict(report),
|
|
224
300
|
findings: receiptFindings(report, options.topFindingsLimit ?? 5),
|
|
301
|
+
notObserved: detectNotObserved(report.artifact),
|
|
225
302
|
reproduction: {
|
|
226
303
|
rerun_command: rerunCommand(target, report.summary.profile),
|
|
227
304
|
ci_command: ciCommand(target),
|
|
@@ -315,6 +392,14 @@ export function renderReceiptMarkdown(receipt) {
|
|
|
315
392
|
`- Tool surface summary: ${receipt.evidence.tool_surface_summary}`,
|
|
316
393
|
`- Attack simulation summary: ${receipt.evidence.attack_simulation_summary}`,
|
|
317
394
|
`- Baseline/drift summary: ${receipt.evidence.baseline_or_drift_summary}`,
|
|
395
|
+
`- Runtime profile summary: ${receipt.evidence.runtime_profile_summary}`,
|
|
396
|
+
"",
|
|
397
|
+
"## What Was Not Tested",
|
|
398
|
+
"",
|
|
399
|
+
...receipt.notObserved.map((entry) => {
|
|
400
|
+
const icon = entry.severity === "warning" ? "đ" : "âšī¸";
|
|
401
|
+
return `- ${icon} ${entry.category}: ${entry.detail}`;
|
|
402
|
+
}),
|
|
318
403
|
"",
|
|
319
404
|
"## Top Findings",
|
|
320
405
|
"",
|