@kryptosai/mcp-observatory 1.29.2 â 1.30.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 +65 -6
- package/README.zh-CN.md +66 -7
- 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/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 +5 -0
- 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/scan.js +36 -9
- package/dist/src/commands/scan.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/discovery.d.ts +15 -1
- package/dist/src/discovery.js +219 -9
- 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 +53 -1
- package/dist/src/reporters/terminal.js.map +1 -1
- package/dist/src/runner.js +6 -0
- package/dist/src/runner.js.map +1 -1
- package/dist/src/types.d.ts +26 -1
- package/docs/mcp-server-safety-index.md +13 -11
- 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/targets.json +17 -0
- package/package.json +2 -2
|
@@ -5,6 +5,8 @@ import { renderSarif } from "../reporters/sarif.js";
|
|
|
5
5
|
import { buildEvent, normalizeCampaign, recordEvent } from "../telemetry.js";
|
|
6
6
|
import { maybePrintCloudCta } from "../commercial.js";
|
|
7
7
|
import { renderActionReceipt } from "../action-receipt.js";
|
|
8
|
+
import { runEnforce } from "./enforce.js";
|
|
9
|
+
import { renderNextActions } from "../reporters/terminal.js";
|
|
8
10
|
import { ANSI, c, resolveTarget, targetFromCommand, writeOutput } from "./helpers.js";
|
|
9
11
|
import { maybeConvertPassingCheckToCi } from "./setup-ci-conversion.js";
|
|
10
12
|
function extractTrailingConversionFlags(commandArgs, options) {
|
|
@@ -37,6 +39,9 @@ function extractTrailingConversionFlags(commandArgs, options) {
|
|
|
37
39
|
flags.sarif = next;
|
|
38
40
|
i += 1;
|
|
39
41
|
}
|
|
42
|
+
else if (arg === "--enforce") {
|
|
43
|
+
flags.enforce = true;
|
|
44
|
+
}
|
|
40
45
|
else if (arg === "--campaign") {
|
|
41
46
|
const next = commandArgs[i + 1];
|
|
42
47
|
if (!next)
|
|
@@ -70,6 +75,7 @@ export function registerTestCommands(program) {
|
|
|
70
75
|
.option("--no-setup-ci", "Suppress the post-success CI conversion prompt and hint.")
|
|
71
76
|
.option("--no-ci-sarif", "Generate post-check CI without GitHub Code Scanning SARIF upload.")
|
|
72
77
|
.option("--force", "Overwrite existing generated CI adoption files.", false)
|
|
78
|
+
.option("--enforce", "After testing, generate seatbelt policy and optionally start proxy.", false)
|
|
73
79
|
.option("--no-color", "Disable colored output.")
|
|
74
80
|
.action(async (commandArgs, options) => {
|
|
75
81
|
const extracted = extractTrailingConversionFlags(commandArgs, options);
|
|
@@ -104,6 +110,7 @@ export function registerTestCommands(program) {
|
|
|
104
110
|
}
|
|
105
111
|
process.stdout.write(` ${c(ANSI.dim, "â")} ${renderActionReceipt(artifact).split("\n")[0]}\n`);
|
|
106
112
|
process.stdout.write(`\n ${c(ANSI.dim, `Artifact: ${outPath}`)}\n\n`);
|
|
113
|
+
process.stdout.write(renderNextActions(artifact) + "\n");
|
|
107
114
|
// Track history
|
|
108
115
|
const historyEntry = buildHistoryEntry(artifact);
|
|
109
116
|
await appendHistory(historyEntry).catch(() => { });
|
|
@@ -150,6 +157,12 @@ export function registerTestCommands(program) {
|
|
|
150
157
|
campaign: conversionFlags.campaign,
|
|
151
158
|
});
|
|
152
159
|
}
|
|
160
|
+
if (options.enforce || conversionFlags.enforce) {
|
|
161
|
+
await runEnforce(target, commandArgs, {
|
|
162
|
+
security: options.security,
|
|
163
|
+
deep: options.deep || options.invokeTools,
|
|
164
|
+
}, "mcp-observatory");
|
|
165
|
+
}
|
|
153
166
|
maybePrintCloudCta(options.security ? "security" : "general");
|
|
154
167
|
});
|
|
155
168
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/test.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,4BAA4B,EAA+B,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/test.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,4BAA4B,EAA+B,MAAM,0BAA0B,CAAC;AAQrG,SAAS,8BAA8B,CACrC,WAAqB,EACrB,OAAyB;IAEzB,MAAM,KAAK,GAAqB,EAAE,GAAG,OAAO,EAAE,CAAC;IAC/C,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAE,CAAC;QAC5B,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YACzB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAC3B,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;QACnB,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACzB,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QACxB,CAAC;aAAM,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YACrC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;QAC1B,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAC/D,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;YACnB,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACnE,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ;QAAE,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,kBAAkB,EAAE;SACpB,WAAW,CAAC,oCAAoC,CAAC;SACjD,QAAQ,CAAC,cAAc,EAAE,sCAAsC,CAAC;SAChE,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;SACjE,MAAM,CAAC,QAAQ,EAAE,gDAAgD,CAAC;SAClE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC;SAC7C,MAAM,CAAC,YAAY,EAAE,2GAA2G,CAAC;SACjI,MAAM,CAAC,iBAAiB,EAAE,oDAAoD,CAAC;SAC/E,MAAM,CAAC,gBAAgB,EAAE,0DAA0D,CAAC;SACpF,MAAM,CAAC,mBAAmB,EAAE,kEAAkE,CAAC;SAC/F,MAAM,CAAC,YAAY,EAAE,sGAAsG,EAAE,KAAK,CAAC;SACnI,MAAM,CAAC,OAAO,EAAE,iFAAiF,EAAE,KAAK,CAAC;SACzG,MAAM,CAAC,eAAe,EAAE,0DAA0D,CAAC;SACnF,MAAM,CAAC,eAAe,EAAE,mEAAmE,CAAC;SAC5F,MAAM,CAAC,SAAS,EAAE,iDAAiD,EAAE,KAAK,CAAC;SAC3E,MAAM,CAAC,WAAW,EAAE,qEAAqE,EAAE,KAAK,CAAC;SACjG,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,WAAqB,EAAE,OAA+H,EAAE,EAAE;QACvK,MAAM,SAAS,GAAG,8BAA8B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACvE,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QACpC,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACjH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3F,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,KAAK,KAAK,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC;QACrF,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE;YACvC,WAAW,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW;YAChD,aAAa,EAAE,OAAO,CAAC,QAAQ;YAC/B,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;SAC7C,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtF,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;QACrG,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;QACpE,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QACxE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,CAAC,CAAC;QACjE,MAAM,aAAa,GAAG,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,CAAC,CAAC;QAErE,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAClF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QAChI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,WAAW,WAAW,aAAa,aAAa,YAAY,CAAC,IAAI,CAAC,CAAC;QAEnH,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAElG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;QAEzD,gBAAgB;QAChB,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,aAAa,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACxF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEjD,MAAM,iBAAiB,GAA2B,EAAE,CAAC;QACrD,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,MAAM;YAAE,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;QACvE,WAAW,CAAC,UAAU,CAAC,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE;YACxD,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;YACzC,cAAc,EAAE,KAAK,EAAE,SAAS;YAChC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;YACrC,cAAc,EAAE,CAAC;YACjB,UAAU,EAAE,SAAS;YACrB,YAAY,EAAE,WAAW;YACzB,cAAc,EAAE,aAAa;YAC7B,UAAU,EAAE,QAAQ,CAAC,IAAI;YACzB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;YAC5B,QAAQ,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW;YAC7C,YAAY,EAAE,OAAO,CAAC,QAAQ;YAC9B,SAAS,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC5B,cAAc,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACvG,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO;YAC1C,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,KAAK;YACxC,SAAS,EAAE,QAAQ,CAAC,kBAAkB,EAAE,SAAS;YACjD,aAAa,EAAE,iBAAiB;YAChC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/C,QAAQ,EAAE,eAAe,CAAC,QAAQ;YAClC,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS;SACzG,CAAC,CAAC,CAAC;QAEJ,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC7B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,4BAA4B,CAAC;gBACjC,QAAQ;gBACR,MAAM;gBACN,UAAU,EAAE,OAAO,CAAC,MAAM;gBAC1B,OAAO,EAAE,eAAe,CAAC,OAAO;gBAChC,GAAG,EAAE,eAAe,CAAC,GAAG;gBACxB,SAAS,EAAE,eAAe,CAAC,SAAS;gBACpC,OAAO,EAAE,eAAe,CAAC,OAAO;gBAChC,KAAK,EAAE,eAAe,CAAC,KAAK;gBAC5B,QAAQ,EAAE,eAAe,CAAC,QAAQ;aACnC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAC/C,MAAM,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE;gBACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW;aAC1C,EAAE,iBAAiB,CAAC,CAAC;QACxB,CAAC;QACD,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/src/discovery.d.ts
CHANGED
|
@@ -3,5 +3,19 @@ interface DiscoveredTarget {
|
|
|
3
3
|
source: string;
|
|
4
4
|
config: TargetConfig;
|
|
5
5
|
}
|
|
6
|
+
declare function defaultConfigPaths(): string[];
|
|
7
|
+
declare function defaultSkillPaths(): string[];
|
|
6
8
|
export declare function scanForTargets(configPath?: string): Promise<DiscoveredTarget[]>;
|
|
7
|
-
export
|
|
9
|
+
export declare function discoverSkillPaths(explicitPath?: string): Promise<string[]>;
|
|
10
|
+
export declare function discoverFromCursor(): Promise<DiscoveredTarget[]>;
|
|
11
|
+
export declare function discoverFromWindsurf(): Promise<DiscoveredTarget[]>;
|
|
12
|
+
export declare function discoverFromVSCode(): Promise<DiscoveredTarget[]>;
|
|
13
|
+
export declare function discoverFromOpenCode(): Promise<DiscoveredTarget[]>;
|
|
14
|
+
export declare function discoverFromCodex(): Promise<DiscoveredTarget[]>;
|
|
15
|
+
export declare function discoverFromGeminiCli(): Promise<DiscoveredTarget[]>;
|
|
16
|
+
export declare function discoverFromKiro(): Promise<DiscoveredTarget[]>;
|
|
17
|
+
export declare function discoverFromAntigravity(): Promise<DiscoveredTarget[]>;
|
|
18
|
+
export declare function discoverFromAmazonQ(): Promise<DiscoveredTarget[]>;
|
|
19
|
+
export declare function discoverFromClaudeDesktop(): Promise<DiscoveredTarget[]>;
|
|
20
|
+
export declare function discoverFromClaudeCode(): Promise<DiscoveredTarget[]>;
|
|
21
|
+
export { defaultConfigPaths, defaultSkillPaths };
|
package/dist/src/discovery.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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";
|
|
@@ -12,37 +12,164 @@ const mcpServerEntrySchema = z.object({
|
|
|
12
12
|
const mcpConfigSchema = z.object({
|
|
13
13
|
mcpServers: z.record(z.string(), z.unknown()),
|
|
14
14
|
}).passthrough();
|
|
15
|
-
|
|
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() {
|
|
16
21
|
const home = os.homedir();
|
|
17
22
|
const paths = [];
|
|
18
|
-
// Claude Code user config
|
|
19
|
-
paths.push(path.join(home, ".claude.json"));
|
|
20
|
-
// Claude Desktop (macOS)
|
|
21
23
|
if (process.platform === "darwin") {
|
|
22
24
|
paths.push(path.join(home, "Library", "Application Support", "Claude", "claude_desktop_config.json"));
|
|
23
25
|
}
|
|
24
|
-
// Claude Desktop (Windows)
|
|
25
26
|
if (process.platform === "win32") {
|
|
26
27
|
const appData = process.env["APPDATA"];
|
|
27
28
|
if (appData) {
|
|
28
29
|
paths.push(path.join(appData, "Claude", "claude_desktop_config.json"));
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
-
|
|
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 = [];
|
|
33
110
|
let dir = process.cwd();
|
|
34
111
|
const root = path.parse(dir).root;
|
|
35
112
|
let depth = 0;
|
|
36
113
|
while (dir !== root && depth < 10) {
|
|
37
114
|
paths.push(path.join(dir, ".claude.json"));
|
|
38
115
|
paths.push(path.join(dir, ".mcp.json"));
|
|
39
|
-
// Also check for Claude Code project-level config
|
|
40
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"));
|
|
125
|
+
dir = path.dirname(dir);
|
|
126
|
+
depth++;
|
|
127
|
+
}
|
|
128
|
+
return paths;
|
|
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"));
|
|
41
140
|
dir = path.dirname(dir);
|
|
42
141
|
depth++;
|
|
43
142
|
}
|
|
44
143
|
return paths;
|
|
45
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 âââââââââââââââââââââââââââââââââââââââââââââââââââââ
|
|
46
173
|
async function tryReadJson(filePath) {
|
|
47
174
|
try {
|
|
48
175
|
const content = await readFile(filePath, "utf8");
|
|
@@ -108,6 +235,7 @@ function extractTargets(data, source) {
|
|
|
108
235
|
}
|
|
109
236
|
return results;
|
|
110
237
|
}
|
|
238
|
+
// ââ Public API ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
|
|
111
239
|
export async function scanForTargets(configPath) {
|
|
112
240
|
const paths = configPath ? [configPath] : defaultConfigPaths();
|
|
113
241
|
const allTargets = [];
|
|
@@ -129,4 +257,86 @@ export async function scanForTargets(configPath) {
|
|
|
129
257
|
}
|
|
130
258
|
return allTargets;
|
|
131
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 };
|
|
132
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
|
"",
|