slaunt 0.1.1 → 0.1.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/README.md +11 -8
- package/dist/cli.js +22 -27
- package/dist/cli.js.map +1 -1
- package/dist/mcp/introspect.d.ts +1 -0
- package/dist/mcp/introspect.d.ts.map +1 -1
- package/dist/mcp/introspect.js +21 -1
- package/dist/mcp/introspect.js.map +1 -1
- package/dist/tui/analysis-path.d.ts +3 -0
- package/dist/tui/analysis-path.d.ts.map +1 -1
- package/dist/tui/analysis-path.js +132 -43
- package/dist/tui/analysis-path.js.map +1 -1
- package/dist/tui/render.d.ts.map +1 -1
- package/dist/tui/render.js +146 -95
- package/dist/tui/render.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@ The default architecture is intentionally local-first:
|
|
|
25
25
|
- If Supabase is configured, the CLI downloads approved classification rules and performs matching locally. It does not upload an audit payload or call a classification RPC.
|
|
26
26
|
- MCP tools are never called. The auditor only performs the MCP initialization handshake and `tools/list`.
|
|
27
27
|
- Starting configured stdio servers requires interactive consent, or the explicit `--allow-server-starts` flag.
|
|
28
|
-
-
|
|
28
|
+
- The default audit never edits client configuration or opens another window. Slaunt MCP installation requires `--install-slaunt`, and report opening requires `--open-report`.
|
|
29
29
|
- JSON output is redacted. Environment and header values are never included.
|
|
30
30
|
|
|
31
31
|
## Run
|
|
@@ -42,17 +42,18 @@ Useful modes:
|
|
|
42
42
|
# Configuration-only inventory; never starts a local MCP process
|
|
43
43
|
npx slaunt audit --no-server-starts
|
|
44
44
|
|
|
45
|
-
# Non-interactive audit with explicit consent to
|
|
46
|
-
npx slaunt audit --yes
|
|
45
|
+
# Non-interactive audit with explicit consent to read declared tool lists
|
|
46
|
+
npx slaunt audit --yes
|
|
47
47
|
|
|
48
48
|
# Redacted machine-readable output
|
|
49
49
|
npx slaunt audit --json --no-report --no-install-slaunt --no-server-starts
|
|
50
50
|
|
|
51
51
|
# Deterministic product demonstration
|
|
52
|
-
npx slaunt audit --demo
|
|
52
|
+
npx slaunt audit --demo
|
|
53
53
|
|
|
54
54
|
# Skip deliberate interactive pacing while keeping the full audit
|
|
55
55
|
npx slaunt audit --no-motion
|
|
56
|
+
npx slaunt audit --quick
|
|
56
57
|
```
|
|
57
58
|
|
|
58
59
|
Run `npx slaunt audit --help` for every option.
|
|
@@ -71,9 +72,9 @@ The scanner supports stdio, Streamable HTTP, and legacy SSE server declarations.
|
|
|
71
72
|
|
|
72
73
|
## Secure Slaunt MCP installation
|
|
73
74
|
|
|
74
|
-
The
|
|
75
|
+
The audit can add Slaunt MCP to each detected client only when `--install-slaunt` is supplied. Installation is:
|
|
75
76
|
|
|
76
|
-
-
|
|
77
|
+
- explicit and optional;
|
|
77
78
|
- idempotent by the reserved server name `slaunt`;
|
|
78
79
|
- atomic, using a same-directory temporary file and rename;
|
|
79
80
|
- backed up with a timestamp before any existing file changes;
|
|
@@ -133,9 +134,11 @@ Database patterns are treated as bounded globs, never executable regular express
|
|
|
133
134
|
|
|
134
135
|
## Terminal experience and conversion ethics
|
|
135
136
|
|
|
136
|
-
The terminal flow uses immediate collection feedback followed by a short, deliberately paced analysis trail.
|
|
137
|
+
The terminal flow uses immediate collection feedback followed by a short, deliberately paced analysis trail. A single updating line indexes the retrieved tools, searches direct and chained privilege paths, compares client permissions, and ranks the evidence before revealing the report. Every state is derived from the actual audit result; the pacing never invents a server, tool, capability, or finding.
|
|
137
138
|
|
|
138
|
-
The
|
|
139
|
+
The default view is intentionally concise: a posture summary, the three highest-priority findings, a compact client access map, and the unclassified-tool queue. Supporting findings and complete evidence remain in the local HTML report. The CLI writes that report without opening it; use `--open-report` when you explicitly want a browser window.
|
|
140
|
+
|
|
141
|
+
The guided inspection targets about 78 seconds from launch and walks through 14 evidence-backed phases. Each phase reveals a result derived from the audit—inventory availability, schema coverage, sensitive surfaces, direct authority, cross-server paths, role overlap, unknown tools, and final confidence—while keeping the terminal to one changing status line. It runs only in an interactive terminal. JSON output, piped output, CI, `--yes`, `--quick`, `--no-motion`, and `SLAUNT_NO_MOTION=1` remain immediate. The audit also refuses to start a configured stdio entry that resolves back to the `slaunt` CLI, preventing recursive audit windows. The experience deliberately avoids variable rewards, deceptive urgency, hidden defaults, shame, or an unsupported claim that a UI can medically “optimize dopamine.”
|
|
139
142
|
|
|
140
143
|
The design is informed by evidence that progress feedback can improve follow-through, autonomy-supportive framing is associated with more self-directed motivation, and risk messages work better when paired with an effective action. See the PubMed-indexed reviews on [progress feedback](https://pubmed.ncbi.nlm.nih.gov/33721605/), [autonomy support](https://pubmed.ncbi.nlm.nih.gov/30237648/), and [fear appeals with efficacy](https://pubmed.ncbi.nlm.nih.gov/26501228/). These findings come from other domains, so their application to developer security tooling is a product hypothesis, not a medical claim.
|
|
141
144
|
|
package/dist/cli.js
CHANGED
|
@@ -8,7 +8,7 @@ import { discoverConfigurations } from './config/discover.js';
|
|
|
8
8
|
import { installSlauntMcp } from './config/install.js';
|
|
9
9
|
import { isDynamicLauncher } from './mcp/introspect.js';
|
|
10
10
|
import { writeHtmlReport } from './report/html.js';
|
|
11
|
-
import { playAnalysisPath } from './tui/analysis-path.js';
|
|
11
|
+
import { DEFAULT_INSPECTION_WINDOW_MS, playAnalysisPath } from './tui/analysis-path.js';
|
|
12
12
|
import { renderAudit, renderHeader } from './tui/render.js';
|
|
13
13
|
const HELP = `Slaunt Agent Access Audit
|
|
14
14
|
|
|
@@ -16,19 +16,18 @@ Usage:
|
|
|
16
16
|
npx slaunt audit [options]
|
|
17
17
|
|
|
18
18
|
Options:
|
|
19
|
-
--install-slaunt
|
|
20
|
-
--no-install-slaunt Do not offer to add Slaunt MCP
|
|
19
|
+
--install-slaunt Explicitly add Slaunt MCP to detected client configs
|
|
21
20
|
--allow-server-starts Start configured stdio servers to request tools/list
|
|
22
21
|
--no-server-starts Inspect configuration only; do not start local servers
|
|
23
22
|
--config <path> Inspect an additional JSON or TOML MCP config (repeatable)
|
|
24
23
|
--offline Use the bundled catalog; do not refresh from Supabase
|
|
25
24
|
--output <path> HTML report path
|
|
26
25
|
--no-report Do not write the local HTML report
|
|
27
|
-
--
|
|
28
|
-
--no-motion
|
|
26
|
+
--open-report Open the local HTML report after the audit
|
|
27
|
+
--quick, --no-motion Skip the guided 1-2 minute inspection sequence
|
|
29
28
|
--timeout <ms> Per-server probe timeout (1000-60000; default 8000)
|
|
30
29
|
--json Print a machine-readable, redacted JSON result
|
|
31
|
-
--yes
|
|
30
|
+
--yes Approve read-only tools/list startup for automation
|
|
32
31
|
--demo Render a deterministic 43-tool example audit
|
|
33
32
|
-h, --help Show help
|
|
34
33
|
-v, --version Show version
|
|
@@ -45,7 +44,7 @@ function valueAfter(args, index, option) {
|
|
|
45
44
|
}
|
|
46
45
|
function parseArguments(args) {
|
|
47
46
|
const options = {
|
|
48
|
-
customPaths: [], demo: false, json: false, offline: false,
|
|
47
|
+
customPaths: [], demo: false, json: false, offline: false, openReport: false, noMotion: false, noReport: false, yes: false,
|
|
49
48
|
};
|
|
50
49
|
for (let index = 0; index < args.length; index += 1) {
|
|
51
50
|
const argument = args[index];
|
|
@@ -57,9 +56,11 @@ function parseArguments(args) {
|
|
|
57
56
|
options.json = true;
|
|
58
57
|
else if (argument === '--offline')
|
|
59
58
|
options.offline = true;
|
|
59
|
+
else if (argument === '--open-report')
|
|
60
|
+
options.openReport = true;
|
|
60
61
|
else if (argument === '--no-open')
|
|
61
|
-
options.
|
|
62
|
-
else if (argument === '--no-motion')
|
|
62
|
+
options.openReport = false;
|
|
63
|
+
else if (argument === '--no-motion' || argument === '--quick')
|
|
63
64
|
options.noMotion = true;
|
|
64
65
|
else if (argument === '--no-report')
|
|
65
66
|
options.noReport = true;
|
|
@@ -88,7 +89,7 @@ function parseArguments(args) {
|
|
|
88
89
|
process.exit(0);
|
|
89
90
|
}
|
|
90
91
|
else if (argument === '--version' || argument === '-v') {
|
|
91
|
-
process.stdout.write('0.1.
|
|
92
|
+
process.stdout.write('0.1.3\n');
|
|
92
93
|
process.exit(0);
|
|
93
94
|
}
|
|
94
95
|
else if (argument === 'connect') {
|
|
@@ -124,6 +125,7 @@ async function main() {
|
|
|
124
125
|
throw new Error(`Unknown command: ${rawArgs[0]}`);
|
|
125
126
|
}
|
|
126
127
|
const options = parseArguments(rawArgs);
|
|
128
|
+
const inspectionStartedAt = Date.now();
|
|
127
129
|
const interactive = Boolean(process.stdin.isTTY && process.stdout.isTTY && !options.json);
|
|
128
130
|
const motionEnabled = interactive
|
|
129
131
|
&& !options.noMotion
|
|
@@ -131,19 +133,13 @@ async function main() {
|
|
|
131
133
|
&& !process.env.CI
|
|
132
134
|
&& process.env.SLAUNT_NO_MOTION !== '1';
|
|
133
135
|
if (!options.json)
|
|
134
|
-
process.stdout.write(`${renderHeader()}\n\n
|
|
136
|
+
process.stdout.write(`${renderHeader()}\n\n`);
|
|
135
137
|
let discovery = options.demo ? undefined : await discoverConfigurations({
|
|
136
138
|
...(options.customPaths.length ? { customPaths: options.customPaths } : {}),
|
|
137
139
|
});
|
|
138
140
|
const detectedClients = discovery?.clients.filter((client) => client.detected).map((client) => client.id) || [];
|
|
139
141
|
const clientsMissingSlaunt = detectedClients.filter((client) => !discovery?.servers.some((server) => server.client === client && server.name.toLowerCase() === 'slaunt'));
|
|
140
|
-
|
|
141
|
-
if (interactive && options.installSlaunt === undefined && clientsMissingSlaunt.length > 0 && !options.demo) {
|
|
142
|
-
shouldInstall = await confirm({
|
|
143
|
-
message: `Add Slaunt MCP to ${clientsMissingSlaunt.length} detected client configuration${clientsMissingSlaunt.length === 1 ? '' : 's'}? Backups are created first.`,
|
|
144
|
-
default: true,
|
|
145
|
-
});
|
|
146
|
-
}
|
|
142
|
+
const shouldInstall = options.installSlaunt === true && !options.demo;
|
|
147
143
|
if (shouldInstall && clientsMissingSlaunt.length > 0) {
|
|
148
144
|
const changes = await installSlauntMcp({ clients: clientsMissingSlaunt });
|
|
149
145
|
if (!options.json)
|
|
@@ -171,8 +167,12 @@ async function main() {
|
|
|
171
167
|
spinner.text = detail; },
|
|
172
168
|
});
|
|
173
169
|
spinner?.succeed('Evidence collected');
|
|
174
|
-
if (motionEnabled)
|
|
175
|
-
|
|
170
|
+
if (motionEnabled) {
|
|
171
|
+
const elapsedMs = Date.now() - inspectionStartedAt;
|
|
172
|
+
await playAnalysisPath(result, {
|
|
173
|
+
durationMs: Math.max(4_200, DEFAULT_INSPECTION_WINDOW_MS - elapsedMs),
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
176
|
if (!options.noReport) {
|
|
177
177
|
const reportPath = await writeHtmlReport(result, options.output);
|
|
178
178
|
result.reportPath = reportPath;
|
|
@@ -182,13 +182,8 @@ async function main() {
|
|
|
182
182
|
return;
|
|
183
183
|
}
|
|
184
184
|
process.stdout.write(`${renderAudit(result)}\n`);
|
|
185
|
-
if (result.reportPath)
|
|
186
|
-
|
|
187
|
-
if (interactive && result.reportPath && !options.noOpen) {
|
|
188
|
-
const shouldOpen = await confirm({ message: 'Open report now?', default: true });
|
|
189
|
-
if (shouldOpen)
|
|
190
|
-
await open(result.reportPath, { wait: false });
|
|
191
|
-
}
|
|
185
|
+
if (options.openReport && result.reportPath)
|
|
186
|
+
await open(result.reportPath, { wait: false });
|
|
192
187
|
}
|
|
193
188
|
main().catch((error) => {
|
|
194
189
|
const message = error instanceof Error ? error.message : String(error);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/introspect.d.ts
CHANGED
|
@@ -6,4 +6,5 @@ export interface ProbeOptions {
|
|
|
6
6
|
}
|
|
7
7
|
export declare function probeServers(servers: ServerConfig[], options: ProbeOptions): Promise<ServerProbe[]>;
|
|
8
8
|
export declare function isDynamicLauncher(server: ServerConfig): boolean;
|
|
9
|
+
export declare function isRecursiveSlauntLauncher(server: ServerConfig): boolean;
|
|
9
10
|
//# sourceMappingURL=introspect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"introspect.d.ts","sourceRoot":"","sources":["../../src/mcp/introspect.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAgB,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"introspect.d.ts","sourceRoot":"","sources":["../../src/mcp/introspect.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAgB,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA6J3E,MAAM,WAAW,YAAY;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAMzG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAG/D;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAYvE"}
|
package/dist/mcp/introspect.js
CHANGED
|
@@ -50,7 +50,7 @@ async function listAllTools(client, server) {
|
|
|
50
50
|
return tools;
|
|
51
51
|
}
|
|
52
52
|
async function connectAndList(server, transport) {
|
|
53
|
-
const client = new Client({ name: 'slaunt-audit', version: '0.1.
|
|
53
|
+
const client = new Client({ name: 'slaunt-audit', version: '0.1.3' }, { capabilities: {} });
|
|
54
54
|
try {
|
|
55
55
|
// The SDK's transport classes declare `sessionId?: string` while its shared
|
|
56
56
|
// Transport interface is emitted without exact-optional compatibility.
|
|
@@ -78,6 +78,14 @@ async function withTimeout(operation, milliseconds, onTimeout) {
|
|
|
78
78
|
}
|
|
79
79
|
async function probeServer(server, allowServerStarts, timeoutMs) {
|
|
80
80
|
if (server.transport === 'stdio') {
|
|
81
|
+
if (isRecursiveSlauntLauncher(server)) {
|
|
82
|
+
return {
|
|
83
|
+
serverId: server.id,
|
|
84
|
+
status: 'skipped',
|
|
85
|
+
tools: [],
|
|
86
|
+
message: 'Skipped a Slaunt CLI launcher to prevent a recursive audit',
|
|
87
|
+
};
|
|
88
|
+
}
|
|
81
89
|
if (!allowServerStarts) {
|
|
82
90
|
return { serverId: server.id, status: 'skipped', tools: [], message: 'Local server start was not approved' };
|
|
83
91
|
}
|
|
@@ -150,4 +158,16 @@ export function isDynamicLauncher(server) {
|
|
|
150
158
|
const command = server.command ? basename(server.command).toLowerCase() : '';
|
|
151
159
|
return ['npx', 'uvx', 'docker', 'podman', 'bunx', 'pnpx'].includes(command);
|
|
152
160
|
}
|
|
161
|
+
export function isRecursiveSlauntLauncher(server) {
|
|
162
|
+
const command = server.command ? basename(server.command).toLowerCase() : '';
|
|
163
|
+
if (/^slaunt(?:\.cmd|\.exe)?$/.test(command))
|
|
164
|
+
return true;
|
|
165
|
+
if (['npx', 'bunx', 'pnpx'].includes(command)) {
|
|
166
|
+
return server.args.some((argument) => /^slaunt(?:@[^/\s]+)?$/i.test(argument));
|
|
167
|
+
}
|
|
168
|
+
return server.args.some((argument) => {
|
|
169
|
+
const normalized = argument.replaceAll('\\', '/');
|
|
170
|
+
return /(?:^|\/)slaunt(?:-audit)?(?:\/.*)?\/(?:dist\/)?cli\.(?:c?js|mjs)$/i.test(normalized);
|
|
171
|
+
});
|
|
172
|
+
}
|
|
153
173
|
//# sourceMappingURL=introspect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"introspect.js","sourceRoot":"","sources":["../../src/mcp/introspect.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"introspect.js","sourceRoot":"","sources":["../../src/mcp/introspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,11 @@ export interface AnalysisBeat {
|
|
|
7
7
|
tone: AnalysisBeatTone;
|
|
8
8
|
}
|
|
9
9
|
export interface PlayAnalysisPathOptions {
|
|
10
|
+
durationMs?: number;
|
|
11
|
+
silent?: boolean;
|
|
10
12
|
sleep?: (milliseconds: number) => Promise<void>;
|
|
11
13
|
}
|
|
14
|
+
export declare const DEFAULT_INSPECTION_WINDOW_MS = 78000;
|
|
12
15
|
export declare function buildAnalysisPath(result: AuditResult): AnalysisBeat[];
|
|
13
16
|
export declare function playAnalysisPath(result: AuditResult, options?: PlayAnalysisPathOptions): Promise<void>;
|
|
14
17
|
//# sourceMappingURL=analysis-path.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-path.d.ts","sourceRoot":"","sources":["../../src/tui/analysis-path.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"analysis-path.d.ts","sourceRoot":"","sources":["../../src/tui/analysis-path.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,aAAa,CAAC;AAE3D,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AAED,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAsBnD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,EAAE,CAkIrE;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,IAAI,CAAC,CAkCf"}
|
|
@@ -1,87 +1,176 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import ora from 'ora';
|
|
3
|
+
export const DEFAULT_INSPECTION_WINDOW_MS = 78_000;
|
|
3
4
|
const wait = (milliseconds) => new Promise((resolve) => {
|
|
4
5
|
setTimeout(resolve, milliseconds);
|
|
5
6
|
});
|
|
6
7
|
function plural(value, singular, pluralForm = `${singular}s`) {
|
|
7
8
|
return value === 1 ? singular : pluralForm;
|
|
8
9
|
}
|
|
10
|
+
function formatRemaining(milliseconds) {
|
|
11
|
+
const seconds = Math.max(0, Math.ceil(milliseconds / 1_000));
|
|
12
|
+
if (seconds < 60)
|
|
13
|
+
return `~${seconds}s left`;
|
|
14
|
+
const minutes = Math.floor(seconds / 60);
|
|
15
|
+
const remainder = seconds % 60;
|
|
16
|
+
return `~${minutes}m ${remainder}s left`;
|
|
17
|
+
}
|
|
18
|
+
function hasAnyCapability(capabilities, expected) {
|
|
19
|
+
return capabilities.some((capability) => expected.has(capability));
|
|
20
|
+
}
|
|
9
21
|
export function buildAnalysisPath(result) {
|
|
10
22
|
const { summary } = result;
|
|
11
23
|
const criticalPaths = result.findings.filter((finding) => finding.severity === 'critical').length;
|
|
12
|
-
const crossServerChains = result.findings.filter((finding) =>
|
|
24
|
+
const crossServerChains = result.findings.filter((finding) => finding.serverNames.length > 1).length;
|
|
13
25
|
const sharedPermissionFindings = result.findings.filter((finding) => finding.clients.length > 1).length;
|
|
26
|
+
const successfulInventories = result.probes.filter((probe) => probe.status === 'ok').length;
|
|
27
|
+
const unavailableInventories = result.probes.filter((probe) => probe.status !== 'ok').length;
|
|
28
|
+
const transportKinds = new Set(result.discovery.servers.map((server) => server.transport)).size;
|
|
29
|
+
const configSources = new Set(result.discovery.clients.flatMap((client) => client.sources)).size;
|
|
30
|
+
const schemaBackedTools = result.tools.filter((tool) => tool.inputSchema && Object.keys(tool.inputSchema).length > 0).length;
|
|
31
|
+
const sensitiveServers = new Set(result.tools
|
|
32
|
+
.filter((tool) => tool.classification.sensitive)
|
|
33
|
+
.map((tool) => `${tool.client}:${tool.serverName}`)).size;
|
|
34
|
+
const stateChangingCapabilities = new Set([
|
|
35
|
+
'write-data', 'write-files', 'delete-data', 'execute-code', 'execute-shell',
|
|
36
|
+
'deploy-production', 'edit-code', 'merge-pull-request', 'administer-system', 'send-message',
|
|
37
|
+
]);
|
|
38
|
+
const stateChangingTools = result.tools.filter((tool) => (hasAnyCapability(tool.classification.capabilities, stateChangingCapabilities))).length;
|
|
39
|
+
const secretExecutionChains = result.findings.filter((finding) => (/secret|credential/i.test(`${finding.title} ${finding.access.join(' ')}`)
|
|
40
|
+
&& /shell|command|execute/i.test(`${finding.title} ${finding.access.join(' ')}`))).length;
|
|
41
|
+
const suspiciousUnknowns = result.tools.filter((tool) => (tool.classification.source === 'unknown'
|
|
42
|
+
&& /admin|execute|trigger|workflow|sync|deploy|delete/i.test(tool.name))).length;
|
|
43
|
+
const clientsWithSensitiveAccess = new Set(result.tools
|
|
44
|
+
.filter((tool) => tool.classification.sensitive)
|
|
45
|
+
.map((tool) => tool.client)).size;
|
|
46
|
+
const confidence = summary.tools > 0 ? Math.round((summary.classified / summary.tools) * 100) : 0;
|
|
47
|
+
const postureAvailable = summary.tools > 0;
|
|
14
48
|
return [
|
|
15
49
|
{
|
|
16
|
-
active:
|
|
17
|
-
complete:
|
|
18
|
-
delayMs:
|
|
50
|
+
active: 'Mapping Claude and Codex configuration boundaries',
|
|
51
|
+
complete: `${summary.clientsDetected} ${plural(summary.clientsDetected, 'client')} · ${configSources} configuration ${plural(configSources, 'source')}`,
|
|
52
|
+
delayMs: 4_800,
|
|
19
53
|
tone: 'success',
|
|
20
54
|
},
|
|
21
55
|
{
|
|
22
|
-
active: '
|
|
23
|
-
complete:
|
|
24
|
-
delayMs:
|
|
56
|
+
active: 'Normalizing MCP server identities and transports',
|
|
57
|
+
complete: `${summary.servers} unique ${plural(summary.servers, 'server')} · ${transportKinds} transport ${plural(transportKinds, 'type')}`,
|
|
58
|
+
delayMs: 5_400,
|
|
25
59
|
tone: 'success',
|
|
26
60
|
},
|
|
27
61
|
{
|
|
28
|
-
active: '
|
|
62
|
+
active: 'Verifying declared tool inventories without invoking tools',
|
|
63
|
+
complete: `${successfulInventories} inventories available · ${unavailableInventories} unavailable`,
|
|
64
|
+
delayMs: 5_200,
|
|
65
|
+
tone: unavailableInventories > 0 ? 'warning' : 'success',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
active: `Fingerprinting ${summary.tools} tool names, descriptions, and schemas`,
|
|
69
|
+
complete: `${summary.tools} tool signatures indexed · ${schemaBackedTools} include schemas`,
|
|
70
|
+
delayMs: 5_200,
|
|
71
|
+
tone: 'success',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
active: 'Semantically matching tool intent against trusted classifications',
|
|
75
|
+
complete: `${summary.classified} recognized · ${summary.unclassified} held for review · ${confidence}% coverage`,
|
|
76
|
+
delayMs: 6_000,
|
|
77
|
+
tone: summary.unclassified > 0 ? 'warning' : 'success',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
active: 'Mapping sensitive capabilities to their owning servers',
|
|
81
|
+
complete: `${summary.sensitiveCapabilities} sensitive ${plural(summary.sensitiveCapabilities, 'tool')} across ${sensitiveServers} server bindings`,
|
|
82
|
+
delayMs: 5_200,
|
|
83
|
+
tone: summary.sensitiveCapabilities > 0 ? 'warning' : 'success',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
active: 'Tracing state-changing write, execution, and deployment surfaces',
|
|
87
|
+
complete: `${stateChangingTools} state-changing ${plural(stateChangingTools, 'tool')} exposed`,
|
|
88
|
+
delayMs: 5_800,
|
|
89
|
+
tone: stateChangingTools > 0 ? 'warning' : 'success',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
active: 'Checking for direct production and administrative authority',
|
|
29
93
|
complete: criticalPaths > 0
|
|
30
|
-
? `${criticalPaths} critical direct
|
|
31
|
-
: 'No critical direct
|
|
32
|
-
delayMs:
|
|
94
|
+
? `${criticalPaths} critical direct ${plural(criticalPaths, 'path')} found`
|
|
95
|
+
: 'No critical direct authority found',
|
|
96
|
+
delayMs: 5_000,
|
|
33
97
|
tone: criticalPaths > 0 ? 'warning' : 'success',
|
|
34
98
|
},
|
|
35
99
|
{
|
|
36
|
-
active: 'Testing
|
|
100
|
+
active: 'Testing credential access against command-execution reachability',
|
|
101
|
+
complete: secretExecutionChains > 0
|
|
102
|
+
? `${secretExecutionChains} credential-to-execution ${plural(secretExecutionChains, 'chain')} found`
|
|
103
|
+
: 'No credential-to-execution chain found',
|
|
104
|
+
delayMs: 6_200,
|
|
105
|
+
tone: secretExecutionChains > 0 ? 'warning' : 'success',
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
active: 'Searching cross-server paths that amplify agent authority',
|
|
37
109
|
complete: crossServerChains > 0
|
|
38
|
-
? `${crossServerChains} cross-server
|
|
39
|
-
: 'No cross-server
|
|
40
|
-
delayMs:
|
|
110
|
+
? `${crossServerChains} cross-server ${plural(crossServerChains, 'path')} contributes to risk`
|
|
111
|
+
: 'No cross-server amplification path found',
|
|
112
|
+
delayMs: 6_400,
|
|
41
113
|
tone: crossServerChains > 0 ? 'warning' : 'success',
|
|
42
114
|
},
|
|
43
115
|
{
|
|
44
|
-
active:
|
|
116
|
+
active: `Comparing permissions across ${summary.clientsDetected} agent clients`,
|
|
45
117
|
complete: sharedPermissionFindings > 0
|
|
46
|
-
?
|
|
118
|
+
? `${sharedPermissionFindings} shared-permission ${plural(sharedPermissionFindings, 'finding')}`
|
|
47
119
|
: 'No risky permission overlap found',
|
|
48
|
-
delayMs:
|
|
120
|
+
delayMs: 5_200,
|
|
49
121
|
tone: sharedPermissionFindings > 0 ? 'warning' : 'success',
|
|
50
122
|
},
|
|
51
123
|
{
|
|
52
|
-
active: '
|
|
53
|
-
complete:
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
124
|
+
active: 'Testing least-privilege separation between agent roles',
|
|
125
|
+
complete: `${clientsWithSensitiveAccess} ${plural(clientsWithSensitiveAccess, 'client')} hold sensitive access`,
|
|
126
|
+
delayMs: 5_400,
|
|
127
|
+
tone: clientsWithSensitiveAccess > 1 ? 'warning' : 'success',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
active: 'Isolating ambiguous tools for conservative review',
|
|
131
|
+
complete: `${summary.unclassified} unknown · ${suspiciousUnknowns} appear state-changing`,
|
|
132
|
+
delayMs: 4_400,
|
|
57
133
|
tone: summary.unclassified > 0 ? 'warning' : 'success',
|
|
58
134
|
},
|
|
59
135
|
{
|
|
60
|
-
active: 'Ranking
|
|
61
|
-
complete:
|
|
62
|
-
? `${summary.highRiskFindings} high-risk ${
|
|
63
|
-
: '
|
|
64
|
-
delayMs:
|
|
65
|
-
tone: summary.highRiskFindings > 0 ? 'warning' : 'success',
|
|
136
|
+
active: 'Ranking exploitability, blast radius, and classification confidence',
|
|
137
|
+
complete: postureAvailable
|
|
138
|
+
? `${summary.highRiskFindings} high-risk · posture ${summary.postureScore}/100 · coverage ${confidence}%`
|
|
139
|
+
: 'Posture unavailable · no tool definitions retrieved',
|
|
140
|
+
delayMs: 7_800,
|
|
141
|
+
tone: !postureAvailable || summary.highRiskFindings + summary.unclassified > 0 ? 'warning' : 'success',
|
|
66
142
|
},
|
|
67
143
|
];
|
|
68
144
|
}
|
|
69
145
|
export async function playAnalysisPath(result, options = {}) {
|
|
70
146
|
const sleep = options.sleep || wait;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
147
|
+
const beats = buildAnalysisPath(result);
|
|
148
|
+
const first = beats[0];
|
|
149
|
+
if (!first)
|
|
150
|
+
return;
|
|
151
|
+
const requestedDuration = Math.max(0, options.durationMs ?? DEFAULT_INSPECTION_WINDOW_MS);
|
|
152
|
+
const nominalDuration = beats.reduce((total, beat) => total + beat.delayMs, 0);
|
|
153
|
+
const scale = nominalDuration > 0 ? requestedDuration / nominalDuration : 0;
|
|
154
|
+
let remainingMs = requestedDuration;
|
|
155
|
+
const spinner = ora({
|
|
156
|
+
color: 'magenta',
|
|
157
|
+
...(options.silent !== undefined ? { isSilent: options.silent } : {}),
|
|
158
|
+
spinner: 'dots12',
|
|
159
|
+
text: first.active,
|
|
160
|
+
}).start();
|
|
161
|
+
for (const [index, beat] of beats.entries()) {
|
|
162
|
+
const phaseDuration = beat.delayMs * scale;
|
|
163
|
+
const analysisDuration = Math.round(phaseDuration * 0.82);
|
|
164
|
+
const evidenceDuration = Math.max(0, Math.round(phaseDuration) - analysisDuration);
|
|
165
|
+
const position = chalk.gray(`${String(index + 1).padStart(2, '0')}/${beats.length}`);
|
|
166
|
+
spinner.text = `${position} ${beat.active} ${chalk.gray(`· ${formatRemaining(remainingMs)}`)}`;
|
|
167
|
+
await sleep(analysisDuration);
|
|
168
|
+
remainingMs = Math.max(0, remainingMs - analysisDuration);
|
|
169
|
+
const marker = beat.tone === 'warning' ? chalk.yellow('!') : chalk.green('✓');
|
|
170
|
+
spinner.text = `${position} ${marker} ${beat.complete}`;
|
|
171
|
+
await sleep(evidenceDuration);
|
|
172
|
+
remainingMs = Math.max(0, remainingMs - evidenceDuration);
|
|
83
173
|
}
|
|
84
|
-
|
|
85
|
-
await sleep(220);
|
|
174
|
+
spinner.succeed(`${chalk.bold('Inspection complete')} ${chalk.gray('·')} ${result.summary.highRiskFindings} high-risk ${chalk.gray('·')} ${result.summary.unclassified} unclassified`);
|
|
86
175
|
}
|
|
87
176
|
//# sourceMappingURL=analysis-path.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-path.js","sourceRoot":"","sources":["../../src/tui/analysis-path.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"analysis-path.js","sourceRoot":"","sources":["../../src/tui/analysis-path.ts"],"names":[],"mappings":"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"}
|
package/dist/tui/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/tui/render.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/tui/render.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAiC,MAAM,aAAa,CAAC;AAqI9E,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAsEvD;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
|
package/dist/tui/render.js
CHANGED
|
@@ -1,132 +1,183 @@
|
|
|
1
|
+
import { relative } from 'node:path';
|
|
1
2
|
import chalk from 'chalk';
|
|
2
|
-
const capabilityLabels = {
|
|
3
|
-
'read-data': 'Read data', 'write-data': 'Write data', 'read-files': 'Read files',
|
|
4
|
-
'write-files': 'Write files', 'delete-data': 'Delete data', 'execute-code': 'Execute code',
|
|
5
|
-
'execute-shell': 'Execute commands', 'read-secrets': 'Read credentials', 'manage-auth': 'Manage identity',
|
|
6
|
-
'network-access': 'Network access', 'deploy-production': 'View and deploy', 'edit-code': 'Edit code',
|
|
7
|
-
'create-pull-request': 'Create pull requests', 'merge-pull-request': 'Merge pull requests',
|
|
8
|
-
'administer-system': 'Administer systems', 'control-browser': 'Control browser', 'send-message': 'Send messages',
|
|
9
|
-
};
|
|
10
3
|
const severityColor = {
|
|
11
|
-
critical: chalk.
|
|
12
|
-
high: chalk.hex('#
|
|
13
|
-
medium: chalk.yellow
|
|
14
|
-
low: chalk.cyan
|
|
4
|
+
critical: chalk.red.bold,
|
|
5
|
+
high: chalk.hex('#f59e0b').bold,
|
|
6
|
+
medium: chalk.yellow,
|
|
7
|
+
low: chalk.cyan,
|
|
15
8
|
info: chalk.gray,
|
|
16
9
|
};
|
|
10
|
+
const capabilityPriority = [
|
|
11
|
+
['deploy-production', 'deploy'],
|
|
12
|
+
['execute-shell', 'execute'],
|
|
13
|
+
['read-secrets', 'credentials'],
|
|
14
|
+
['administer-system', 'admin'],
|
|
15
|
+
['merge-pull-request', 'merge'],
|
|
16
|
+
['edit-code', 'edit'],
|
|
17
|
+
['write-files', 'file write'],
|
|
18
|
+
['delete-data', 'delete'],
|
|
19
|
+
['write-data', 'write'],
|
|
20
|
+
['read-files', 'file read'],
|
|
21
|
+
['manage-auth', 'identity'],
|
|
22
|
+
['control-browser', 'browser'],
|
|
23
|
+
['send-message', 'message'],
|
|
24
|
+
['network-access', 'network'],
|
|
25
|
+
['create-pull-request', 'pull requests'],
|
|
26
|
+
['execute-code', 'code'],
|
|
27
|
+
['read-data', 'read'],
|
|
28
|
+
];
|
|
17
29
|
function width() {
|
|
18
|
-
return Math.max(
|
|
30
|
+
return Math.max(36, Math.min(82, process.stdout.columns || 78));
|
|
31
|
+
}
|
|
32
|
+
function plural(value, singular, pluralForm = `${singular}s`) {
|
|
33
|
+
return value === 1 ? singular : pluralForm;
|
|
34
|
+
}
|
|
35
|
+
function wrap(text, indent = '', continuationIndent = indent) {
|
|
36
|
+
const firstWidth = Math.max(12, width() - indent.length);
|
|
37
|
+
const continuationWidth = Math.max(12, width() - continuationIndent.length);
|
|
38
|
+
const words = text.trim().split(/\s+/);
|
|
39
|
+
const lines = [];
|
|
40
|
+
let line = '';
|
|
41
|
+
let available = firstWidth;
|
|
42
|
+
for (const word of words) {
|
|
43
|
+
if (line && line.length + 1 + word.length > available) {
|
|
44
|
+
lines.push(`${lines.length === 0 ? indent : continuationIndent}${line}`);
|
|
45
|
+
line = word;
|
|
46
|
+
available = continuationWidth;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
line = line ? `${line} ${word}` : word;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (line)
|
|
53
|
+
lines.push(`${lines.length === 0 ? indent : continuationIndent}${line}`);
|
|
54
|
+
return lines;
|
|
19
55
|
}
|
|
20
|
-
function
|
|
21
|
-
return chalk.
|
|
56
|
+
function section(title) {
|
|
57
|
+
return ['', chalk.bold(title)];
|
|
22
58
|
}
|
|
23
|
-
function
|
|
24
|
-
|
|
25
|
-
|
|
59
|
+
function scoreLabel(score) {
|
|
60
|
+
if (score >= 80)
|
|
61
|
+
return { color: chalk.green, label: 'strong' };
|
|
62
|
+
if (score >= 55)
|
|
63
|
+
return { color: chalk.yellow, label: 'review' };
|
|
64
|
+
return { color: chalk.red, label: 'needs attention' };
|
|
26
65
|
}
|
|
27
|
-
function
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
chalk.bold(
|
|
31
|
-
];
|
|
32
|
-
if (item.serverNames.length)
|
|
33
|
-
lines.push('', ` ${chalk.gray(item.serverNames.length > 1 ? 'Servers:' : 'Server:')} ${item.serverNames.join(', ')}`);
|
|
34
|
-
if (item.toolNames.length === 1)
|
|
35
|
-
lines.push(` ${chalk.gray('Tool:')} ${item.toolNames[0]}`);
|
|
36
|
-
if (item.access.length) {
|
|
37
|
-
lines.push(` ${chalk.gray('Access:')}`);
|
|
38
|
-
for (const access of item.access)
|
|
39
|
-
lines.push(` ${chalk.hex('#a78bfa')('•')} ${access}`);
|
|
66
|
+
function postureLine(result, unavailable) {
|
|
67
|
+
const { summary } = result;
|
|
68
|
+
if (summary.tools === 0 && unavailable > 0) {
|
|
69
|
+
return `${chalk.yellow.bold('Posture unavailable')} ${chalk.gray('· tool inventories incomplete')}`;
|
|
40
70
|
}
|
|
41
|
-
|
|
42
|
-
|
|
71
|
+
const score = scoreLabel(summary.postureScore);
|
|
72
|
+
const suffix = unavailable > 0 ? 'partial coverage' : score.label;
|
|
73
|
+
return `${score.color(chalk.bold(`${summary.postureScore}/100`))} posture ${chalk.gray(`· ${suffix}`)}`;
|
|
74
|
+
}
|
|
75
|
+
function findingLines(item) {
|
|
76
|
+
const icon = item.severity === 'critical' ? '◆' : '▲';
|
|
77
|
+
const color = severityColor[item.severity];
|
|
78
|
+
const context = [item.serverNames.join(', '), item.toolNames.length === 1 ? item.toolNames[0] : undefined]
|
|
79
|
+
.filter(Boolean)
|
|
80
|
+
.join(' · ');
|
|
81
|
+
return [
|
|
82
|
+
'',
|
|
83
|
+
...wrap(`${icon} ${item.severity.toUpperCase()} ${item.title}`),
|
|
84
|
+
...(context ? wrap(context, ' ').map((line) => chalk.gray(line)) : []),
|
|
85
|
+
...wrap(item.why, ' '),
|
|
86
|
+
...wrap(`Fix: ${item.recommendation}`, ' ').map((line) => color(line)),
|
|
87
|
+
];
|
|
43
88
|
}
|
|
44
|
-
function
|
|
45
|
-
const
|
|
89
|
+
function shortCapabilities(capabilities) {
|
|
90
|
+
const set = new Set(capabilities);
|
|
91
|
+
const labels = capabilityPriority
|
|
92
|
+
.filter(([capability]) => set.has(capability))
|
|
93
|
+
.map(([, label]) => label);
|
|
94
|
+
return [...new Set(labels)].slice(0, 3).join(' · ') || 'inventory unavailable';
|
|
95
|
+
}
|
|
96
|
+
function accessLines(result) {
|
|
97
|
+
const lines = [];
|
|
46
98
|
for (const client of result.discovery.clients.filter((item) => item.detected)) {
|
|
47
|
-
|
|
48
|
-
|
|
99
|
+
lines.push('', chalk.bold(client.label));
|
|
100
|
+
const highestRisk = (serverId) => Math.max(0, ...result.tools
|
|
101
|
+
.filter((tool) => tool.serverId === serverId)
|
|
102
|
+
.map((tool) => tool.classification.riskScore));
|
|
103
|
+
const servers = result.discovery.servers
|
|
104
|
+
.filter((item) => item.client === client.id)
|
|
105
|
+
.sort((left, right) => highestRisk(right.id) - highestRisk(left.id));
|
|
106
|
+
if (servers.length === 0) {
|
|
107
|
+
lines.push(chalk.gray(' No enabled MCP servers'));
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
for (const server of servers.slice(0, 6)) {
|
|
49
111
|
const capabilities = [...new Set(result.tools
|
|
50
112
|
.filter((tool) => tool.serverId === server.id)
|
|
51
113
|
.flatMap((tool) => tool.classification.capabilities))];
|
|
52
|
-
const
|
|
53
|
-
|
|
114
|
+
const name = server.name.slice(0, 14).padEnd(14);
|
|
115
|
+
lines.push(` ${chalk.hex('#a78bfa')(name)}${shortCapabilities(capabilities)}`);
|
|
54
116
|
}
|
|
55
|
-
|
|
117
|
+
if (servers.length > 6)
|
|
118
|
+
lines.push(chalk.gray(` + ${servers.length - 6} more in the full report`));
|
|
56
119
|
}
|
|
57
|
-
return
|
|
120
|
+
return lines;
|
|
58
121
|
}
|
|
59
|
-
function
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
const color = score >= 80 ? chalk.green : score >= 55 ? chalk.yellow : chalk.red;
|
|
63
|
-
return `${color('█'.repeat(filled))}${chalk.gray('░'.repeat(slots - filled))} ${chalk.bold(String(score))}/100`;
|
|
122
|
+
function reportPath(path) {
|
|
123
|
+
const local = relative(process.cwd(), path);
|
|
124
|
+
return local && !local.startsWith('..') ? `./${local}` : path;
|
|
64
125
|
}
|
|
65
126
|
export function renderAudit(result) {
|
|
66
|
-
const summary = result
|
|
127
|
+
const { summary } = result;
|
|
128
|
+
const priority = result.findings.filter((finding) => finding.severity === 'critical' || finding.severity === 'high');
|
|
129
|
+
const otherFindings = result.findings.length - priority.length;
|
|
67
130
|
const unknown = result.tools.filter((tool) => tool.classification.source === 'unknown');
|
|
68
131
|
const failedProbes = result.probes.filter((probe) => probe.status !== 'ok');
|
|
69
132
|
const lines = [
|
|
70
133
|
'',
|
|
71
|
-
chalk.bold('
|
|
72
|
-
|
|
73
|
-
'',
|
|
74
|
-
`${chalk.green('✓')} Found ${summary.clientsDetected} agent client${summary.clientsDetected === 1 ? '' : 's'}`,
|
|
75
|
-
`${chalk.green('✓')} Found ${summary.servers} MCP server${summary.servers === 1 ? '' : 's'}`,
|
|
76
|
-
`${chalk.green('✓')} Retrieved ${summary.tools} tool definition${summary.tools === 1 ? '' : 's'}`,
|
|
77
|
-
`${chalk.green('✓')} Classified ${summary.classified} tool${summary.classified === 1 ? '' : 's'}`,
|
|
78
|
-
summary.unclassified > 0
|
|
79
|
-
? `${chalk.yellow('!')} ${summary.unclassified} tool${summary.unclassified === 1 ? '' : 's'} require review`
|
|
80
|
-
: `${chalk.green('✓')} Every retrieved tool is recognized`,
|
|
81
|
-
'',
|
|
82
|
-
divider(),
|
|
134
|
+
chalk.bold('Audit complete'),
|
|
135
|
+
postureLine(result, failedProbes.length),
|
|
83
136
|
'',
|
|
84
|
-
chalk.bold('
|
|
85
|
-
''
|
|
86
|
-
|
|
87
|
-
row('MCP servers', summary.servers),
|
|
88
|
-
row('Tools exposed', summary.tools),
|
|
89
|
-
row('Sensitive capabilities', summary.sensitiveCapabilities),
|
|
90
|
-
row('High-risk findings', summary.highRiskFindings),
|
|
91
|
-
row('Unclassified tools', summary.unclassified),
|
|
92
|
-
'',
|
|
93
|
-
`${'Security posture'.padEnd(22)}${postureBar(summary.postureScore)}`,
|
|
94
|
-
'',
|
|
95
|
-
divider(),
|
|
96
|
-
'',
|
|
97
|
-
chalk.bold('Needs attention'),
|
|
98
|
-
'',
|
|
99
|
-
result.findings.length ? result.findings.map(findingBlock).join(`\n\n${chalk.gray('·'.repeat(20))}\n\n`) : chalk.green('No correlated high-risk paths were identified.'),
|
|
100
|
-
'',
|
|
101
|
-
divider(),
|
|
102
|
-
'',
|
|
103
|
-
chalk.bold('Access overview'),
|
|
104
|
-
'',
|
|
105
|
-
accessOverview(result) || chalk.gray('No MCP access was discovered.'),
|
|
106
|
-
'',
|
|
107
|
-
divider(),
|
|
108
|
-
'',
|
|
109
|
-
chalk.bold('Classification coverage'),
|
|
110
|
-
'',
|
|
111
|
-
`${summary.classified} verified or recognized`,
|
|
112
|
-
`${String(summary.unclassified).padStart(String(summary.classified).length)} unknown`,
|
|
137
|
+
`${chalk.bold(String(summary.clientsDetected))} ${plural(summary.clientsDetected, 'client')} ${chalk.gray('·')} ${chalk.bold(String(summary.servers))} ${plural(summary.servers, 'server')} ${chalk.gray('·')} ${chalk.bold(String(summary.tools))} ${plural(summary.tools, 'tool')}`,
|
|
138
|
+
`${chalk.bold(String(summary.sensitiveCapabilities))} sensitive capabilities ${chalk.gray('·')} ${chalk.bold(String(summary.unclassified))} unclassified`,
|
|
139
|
+
...section('Priority findings'),
|
|
113
140
|
];
|
|
141
|
+
if (priority.length) {
|
|
142
|
+
for (const finding of priority.slice(0, 3))
|
|
143
|
+
lines.push(...findingLines(finding));
|
|
144
|
+
}
|
|
145
|
+
else if (failedProbes.length > 0) {
|
|
146
|
+
lines.push('', chalk.yellow('No high-risk paths found in the retrieved inventories.'), chalk.gray('Missing inventories prevent a complete assessment.'));
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
lines.push('', chalk.green('✓ No critical or high-risk access paths found.'));
|
|
150
|
+
}
|
|
151
|
+
if (otherFindings > 0) {
|
|
152
|
+
lines.push('', chalk.gray(`${otherFindings} additional ${plural(otherFindings, 'finding')} included in the full report.`));
|
|
153
|
+
}
|
|
154
|
+
lines.push(...section('Access by client'), ...accessLines(result));
|
|
114
155
|
if (unknown.length) {
|
|
115
|
-
|
|
156
|
+
const visibleUnknown = unknown.slice(0, 8);
|
|
157
|
+
lines.push(...section(`Unclassified tools (${unknown.length})`), '', ...wrap(visibleUnknown.map((tool) => tool.name).join(' · '), ' '), ...(unknown.length > visibleUnknown.length
|
|
158
|
+
? [chalk.gray(` + ${unknown.length - visibleUnknown.length} more in the full report`)]
|
|
159
|
+
: []), ...wrap('Treated as potentially sensitive until reviewed.', ' ').map((line) => chalk.gray(line)));
|
|
116
160
|
}
|
|
117
161
|
if (failedProbes.length) {
|
|
118
|
-
lines.push(
|
|
162
|
+
lines.push(...section(`Tool inventories unavailable (${failedProbes.length})`));
|
|
163
|
+
for (const probe of failedProbes.slice(0, 4)) {
|
|
119
164
|
const server = result.discovery.servers.find((item) => item.id === probe.serverId);
|
|
120
|
-
|
|
121
|
-
}
|
|
165
|
+
lines.push(...wrap(`${server?.clientLabel || 'Client'} / ${server?.name || probe.serverId}: ${probe.message || probe.status}`, ' '));
|
|
166
|
+
}
|
|
167
|
+
if (failedProbes.length > 4)
|
|
168
|
+
lines.push(chalk.gray(` + ${failedProbes.length - 4} more in the full report`));
|
|
122
169
|
}
|
|
123
|
-
lines.push('',
|
|
170
|
+
lines.push(...section('Saved locally'), ...(result.reportPath ? ['', chalk.cyan(reportPath(result.reportPath))] : ['', chalk.gray('HTML report disabled for this run.')]), '', ...wrap('Scope: declared MCP tools only. No tools called, prompts analyzed, files read, or credentials inspected.').map((line) => chalk.gray(line)), ...section('Optional next step'), '', ...wrap('Add approvals and role-scoped access when you are ready:'), chalk.cyan.underline('https://slaunt.ai/setup'));
|
|
124
171
|
if (result.discovery.warnings.length) {
|
|
125
|
-
lines.push('
|
|
172
|
+
lines.push(...section('Notes'));
|
|
173
|
+
for (const warning of result.discovery.warnings.slice(0, 3))
|
|
174
|
+
lines.push(...wrap(warning, ' ').map((line) => chalk.gray(line)));
|
|
175
|
+
if (result.discovery.warnings.length > 3)
|
|
176
|
+
lines.push(chalk.gray(` + ${result.discovery.warnings.length - 3} more in the full report`));
|
|
126
177
|
}
|
|
127
178
|
return lines.join('\n');
|
|
128
179
|
}
|
|
129
180
|
export function renderHeader() {
|
|
130
|
-
return
|
|
181
|
+
return `${chalk.bold.hex('#a78bfa')('SLAUNT')} ${chalk.gray('· agent access audit')}\n${chalk.gray('Local analysis · no audit payload uploaded')}`;
|
|
131
182
|
}
|
|
132
183
|
//# sourceMappingURL=render.js.map
|
package/dist/tui/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/tui/render.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/tui/render.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "slaunt",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Privacy-first MCP agent access auditor for Claude and Codex",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"check": "tsc --noEmit",
|
|
17
17
|
"test": "npm run build && vitest run",
|
|
18
18
|
"test:watch": "vitest",
|
|
19
|
-
"audit:demo": "npm run build && node dist/cli.js audit --demo
|
|
19
|
+
"audit:demo": "npm run build && node dist/cli.js audit --demo",
|
|
20
20
|
"prepublishOnly": "npm run check && npm test"
|
|
21
21
|
},
|
|
22
22
|
"engines": {
|