slaunt 0.1.0 → 0.1.2

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 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
- - Editing client configuration requires interactive consent, or the explicit `--install-slaunt` flag. Existing files are backed up first.
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,14 +42,17 @@ 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 safe defaults
46
- npx slaunt audit --yes --no-open
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 --no-open --no-install-slaunt
52
+ npx slaunt audit --demo
53
+
54
+ # Skip deliberate interactive pacing while keeping the full audit
55
+ npx slaunt audit --no-motion
53
56
  ```
54
57
 
55
58
  Run `npx slaunt audit --help` for every option.
@@ -68,9 +71,9 @@ The scanner supports stdio, Streamable HTTP, and legacy SSE server declarations.
68
71
 
69
72
  ## Secure Slaunt MCP installation
70
73
 
71
- The interactive audit can add Slaunt MCP to each detected client. Installation is:
74
+ The audit can add Slaunt MCP to each detected client only when `--install-slaunt` is supplied. Installation is:
72
75
 
73
- - consented and optional;
76
+ - explicit and optional;
74
77
  - idempotent by the reserved server name `slaunt`;
75
78
  - atomic, using a same-directory temporary file and rename;
76
79
  - backed up with a timestamp before any existing file changes;
@@ -130,7 +133,11 @@ Database patterns are treated as bounded globs, never executable regular express
130
133
 
131
134
  ## Terminal experience and conversion ethics
132
135
 
133
- The terminal flow uses immediate progress feedback, a completed security map, concrete remediations, and an optional next step. It deliberately avoids variable rewards, deceptive urgency, hidden defaults, shame, or an unsupported claim that a UI can medically “optimize dopamine.”
136
+ 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
+ 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.
139
+
140
+ The trail runs only in an interactive terminal. JSON output, piped output, CI, `--yes`, `--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.”
134
141
 
135
142
  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.
136
143
 
package/dist/cli.js CHANGED
@@ -8,6 +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
12
  import { renderAudit, renderHeader } from './tui/render.js';
12
13
  const HELP = `Slaunt Agent Access Audit
13
14
 
@@ -15,18 +16,18 @@ Usage:
15
16
  npx slaunt audit [options]
16
17
 
17
18
  Options:
18
- --install-slaunt Add Slaunt MCP to detected Claude/Codex user configs
19
- --no-install-slaunt Do not offer to add Slaunt MCP
19
+ --install-slaunt Explicitly add Slaunt MCP to detected client configs
20
20
  --allow-server-starts Start configured stdio servers to request tools/list
21
21
  --no-server-starts Inspect configuration only; do not start local servers
22
22
  --config <path> Inspect an additional JSON or TOML MCP config (repeatable)
23
23
  --offline Use the bundled catalog; do not refresh from Supabase
24
24
  --output <path> HTML report path
25
25
  --no-report Do not write the local HTML report
26
- --no-open Do not offer to open the HTML report
26
+ --open-report Open the local HTML report after the audit
27
+ --no-motion Skip the paced interactive analysis trail
27
28
  --timeout <ms> Per-server probe timeout (1000-60000; default 8000)
28
29
  --json Print a machine-readable, redacted JSON result
29
- --yes Accept safe interactive defaults for automation
30
+ --yes Approve read-only tools/list startup for automation
30
31
  --demo Render a deterministic 43-tool example audit
31
32
  -h, --help Show help
32
33
  -v, --version Show version
@@ -43,7 +44,7 @@ function valueAfter(args, index, option) {
43
44
  }
44
45
  function parseArguments(args) {
45
46
  const options = {
46
- customPaths: [], demo: false, json: false, offline: false, noOpen: false, noReport: false, yes: false,
47
+ customPaths: [], demo: false, json: false, offline: false, openReport: false, noMotion: false, noReport: false, yes: false,
47
48
  };
48
49
  for (let index = 0; index < args.length; index += 1) {
49
50
  const argument = args[index];
@@ -55,8 +56,12 @@ function parseArguments(args) {
55
56
  options.json = true;
56
57
  else if (argument === '--offline')
57
58
  options.offline = true;
59
+ else if (argument === '--open-report')
60
+ options.openReport = true;
58
61
  else if (argument === '--no-open')
59
- options.noOpen = true;
62
+ options.openReport = false;
63
+ else if (argument === '--no-motion')
64
+ options.noMotion = true;
60
65
  else if (argument === '--no-report')
61
66
  options.noReport = true;
62
67
  else if (argument === '--yes' || argument === '-y')
@@ -84,7 +89,7 @@ function parseArguments(args) {
84
89
  process.exit(0);
85
90
  }
86
91
  else if (argument === '--version' || argument === '-v') {
87
- process.stdout.write('0.1.0\n');
92
+ process.stdout.write('0.1.2\n');
88
93
  process.exit(0);
89
94
  }
90
95
  else if (argument === 'connect') {
@@ -121,20 +126,19 @@ async function main() {
121
126
  }
122
127
  const options = parseArguments(rawArgs);
123
128
  const interactive = Boolean(process.stdin.isTTY && process.stdout.isTTY && !options.json);
129
+ const motionEnabled = interactive
130
+ && !options.noMotion
131
+ && !options.yes
132
+ && !process.env.CI
133
+ && process.env.SLAUNT_NO_MOTION !== '1';
124
134
  if (!options.json)
125
- process.stdout.write(`${renderHeader()}\n\n${chalk.gray('Tool and configuration data stays on this machine. No audit payload uploaded.')}\n\n`);
135
+ process.stdout.write(`${renderHeader()}\n\n`);
126
136
  let discovery = options.demo ? undefined : await discoverConfigurations({
127
137
  ...(options.customPaths.length ? { customPaths: options.customPaths } : {}),
128
138
  });
129
139
  const detectedClients = discovery?.clients.filter((client) => client.detected).map((client) => client.id) || [];
130
140
  const clientsMissingSlaunt = detectedClients.filter((client) => !discovery?.servers.some((server) => server.client === client && server.name.toLowerCase() === 'slaunt'));
131
- let shouldInstall = options.installSlaunt ?? (options.yes && !options.demo);
132
- if (interactive && options.installSlaunt === undefined && clientsMissingSlaunt.length > 0 && !options.demo) {
133
- shouldInstall = await confirm({
134
- message: `Add Slaunt MCP to ${clientsMissingSlaunt.length} detected client configuration${clientsMissingSlaunt.length === 1 ? '' : 's'}? Backups are created first.`,
135
- default: true,
136
- });
137
- }
141
+ const shouldInstall = options.installSlaunt === true && !options.demo;
138
142
  if (shouldInstall && clientsMissingSlaunt.length > 0) {
139
143
  const changes = await installSlauntMcp({ clients: clientsMissingSlaunt });
140
144
  if (!options.json)
@@ -161,7 +165,9 @@ async function main() {
161
165
  onStage: (_stage, detail) => { if (spinner)
162
166
  spinner.text = detail; },
163
167
  });
164
- spinner?.succeed('Audit complete');
168
+ spinner?.succeed('Evidence collected');
169
+ if (motionEnabled)
170
+ await playAnalysisPath(result);
165
171
  if (!options.noReport) {
166
172
  const reportPath = await writeHtmlReport(result, options.output);
167
173
  result.reportPath = reportPath;
@@ -171,13 +177,8 @@ async function main() {
171
177
  return;
172
178
  }
173
179
  process.stdout.write(`${renderAudit(result)}\n`);
174
- if (result.reportPath)
175
- process.stdout.write(`\n${chalk.gray('Full local report:')}\n${result.reportPath}\n`);
176
- if (interactive && result.reportPath && !options.noOpen) {
177
- const shouldOpen = await confirm({ message: 'Open report now?', default: true });
178
- if (shouldOpen)
179
- await open(result.reportPath, { wait: false });
180
- }
180
+ if (options.openReport && result.reportPath)
181
+ await open(result.reportPath, { wait: false });
181
182
  }
182
183
  main().catch((error) => {
183
184
  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,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAgB5D,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBZ,CAAC;AAEF,SAAS,UAAU,CAAC,IAAc,EAAE,KAAa,EAAE,MAAc;IAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,mBAAmB,CAAC,CAAC;IACnF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,IAAc;IACpC,MAAM,OAAO,GAAe;QAC1B,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK;KACtG,CAAC;IACF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,QAAQ,KAAK,OAAO;YAAE,SAAS;QACnC,IAAI,QAAQ,KAAK,QAAQ;YAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;aAC1C,IAAI,QAAQ,KAAK,QAAQ;YAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;aAC/C,IAAI,QAAQ,KAAK,WAAW;YAAE,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;aACrD,IAAI,QAAQ,KAAK,WAAW;YAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;aACpD,IAAI,QAAQ,KAAK,aAAa;YAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;aACxD,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;aAClE,IAAI,QAAQ,KAAK,kBAAkB;YAAE,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;aAClE,IAAI,QAAQ,KAAK,qBAAqB;YAAE,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;aACtE,IAAI,QAAQ,KAAK,uBAAuB;YAAE,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;aAC3E,IAAI,QAAQ,KAAK,oBAAoB;YAAE,OAAO,CAAC,iBAAiB,GAAG,KAAK,CAAC;aACzE,IAAI,QAAQ,KAAK,UAAU;YAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;aAC3F,IAAI,QAAQ,KAAK,UAAU;YAAE,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;aAClF,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,KAAK,IAAI,KAAK,GAAG,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACpI,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;QAC5B,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACzF,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAwB;IACnD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACvH,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACxI,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;YAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,KAAK,IAAI,CAAC,CAAC;QAC1F,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,KAAK,KAAK,MAAM,CAAC,OAAO,IAAI,eAAe,IAAI,CAAC,CAAC;QACjH,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClG,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9F,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACrH,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1F,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,+EAA+E,CAAC,MAAM,CAAC,CAAC;IAEnK,IAAI,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,sBAAsB,CAAC;QACtE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5E,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IAChH,MAAM,oBAAoB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC;IAC1K,IAAI,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,IAAI,WAAW,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC3G,aAAa,GAAG,MAAM,OAAO,CAAC;YAC5B,OAAO,EAAE,qBAAqB,oBAAoB,CAAC,MAAM,iCAAiC,oBAAoB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,8BAA8B;YACpK,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;IACD,IAAI,aAAa,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,EAAE,OAAO,EAAE,oBAAkC,EAAE,CAAC,CAAC;QACxF,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAChD,SAAS,GAAG,MAAM,sBAAsB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5H,CAAC;IAED,MAAM,YAAY,GAAG,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/F,IAAI,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,IAAI,WAAW,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACvG,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC;QACnE,iBAAiB,GAAG,MAAM,OAAO,CAAC;YAChC,OAAO,EAAE,SAAS,YAAY,CAAC,MAAM,+BAA+B,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,gDAAgD,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,mCAAmC,CAAC,CAAC,CAAC,EAAE,EAAE;YACjO,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACpH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;QAC5B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,CAAC;QAC7C,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,OAAO;YAAE,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;KACrE,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAEnC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,UAAU;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IAE7G,IAAI,WAAW,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACxD,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACjF,IAAI,UAAU;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC;IAC1E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -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;AAqJ3E,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"}
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"}
@@ -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.0' }, { capabilities: {} });
53
+ const client = new Client({ name: 'slaunt-audit', version: '0.1.2' }, { 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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"}
@@ -0,0 +1,14 @@
1
+ import type { AuditResult } from '../types.js';
2
+ export type AnalysisBeatTone = 'success' | 'warning';
3
+ export interface AnalysisBeat {
4
+ active: string;
5
+ complete: string;
6
+ delayMs: number;
7
+ tone: AnalysisBeatTone;
8
+ }
9
+ export interface PlayAnalysisPathOptions {
10
+ sleep?: (milliseconds: number) => Promise<void>;
11
+ }
12
+ export declare function buildAnalysisPath(result: AuditResult): AnalysisBeat[];
13
+ export declare function playAnalysisPath(result: AuditResult, options?: PlayAnalysisPathOptions): Promise<void>;
14
+ //# sourceMappingURL=analysis-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysis-path.d.ts","sourceRoot":"","sources":["../../src/tui/analysis-path.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,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,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AAUD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,EAAE,CAsCrE;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,IAAI,CAAC,CAkBf"}
@@ -0,0 +1,62 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ const wait = (milliseconds) => new Promise((resolve) => {
4
+ setTimeout(resolve, milliseconds);
5
+ });
6
+ function plural(value, singular, pluralForm = `${singular}s`) {
7
+ return value === 1 ? singular : pluralForm;
8
+ }
9
+ export function buildAnalysisPath(result) {
10
+ const { summary } = result;
11
+ const criticalPaths = result.findings.filter((finding) => finding.severity === 'critical').length;
12
+ const crossServerChains = result.findings.filter((finding) => (finding.serverNames.length > 1 && /chain/i.test(`${finding.title} ${finding.why}`))).length;
13
+ const sharedPermissionFindings = result.findings.filter((finding) => finding.clients.length > 1).length;
14
+ return [
15
+ {
16
+ active: `Indexing ${summary.tools} tools from ${summary.servers} MCP servers`,
17
+ complete: `Indexed ${summary.tools} ${plural(summary.tools, 'tool')} from ${summary.servers} MCP ${plural(summary.servers, 'server')}`,
18
+ delayMs: 380,
19
+ tone: 'success',
20
+ },
21
+ {
22
+ active: 'Searching direct and chained privilege paths',
23
+ complete: `${criticalPaths} direct · ${crossServerChains} chained`,
24
+ delayMs: 680,
25
+ tone: criticalPaths + crossServerChains > 0 ? 'warning' : 'success',
26
+ },
27
+ {
28
+ active: `Comparing permissions across ${summary.clientsDetected} agent clients`,
29
+ complete: sharedPermissionFindings > 0
30
+ ? `Permission overlap contributes to ${sharedPermissionFindings} ${plural(sharedPermissionFindings, 'finding')}`
31
+ : 'No risky permission overlap found',
32
+ delayMs: 520,
33
+ tone: sharedPermissionFindings > 0 ? 'warning' : 'success',
34
+ },
35
+ {
36
+ active: 'Prioritizing findings by exploitability and blast radius',
37
+ complete: summary.highRiskFindings > 0
38
+ ? `${summary.highRiskFindings} high-risk · ${summary.unclassified} unclassified`
39
+ : `${summary.unclassified} unclassified · no high-risk findings`,
40
+ delayMs: 490,
41
+ tone: summary.highRiskFindings + summary.unclassified > 0 ? 'warning' : 'success',
42
+ },
43
+ ];
44
+ }
45
+ export async function playAnalysisPath(result, options = {}) {
46
+ const sleep = options.sleep || wait;
47
+ const beats = buildAnalysisPath(result);
48
+ const first = beats[0];
49
+ if (!first)
50
+ return;
51
+ const spinner = ora({
52
+ color: 'magenta',
53
+ spinner: 'dots12',
54
+ text: first.active,
55
+ }).start();
56
+ for (const beat of beats) {
57
+ spinner.text = beat.active;
58
+ await sleep(beat.delayMs);
59
+ }
60
+ spinner.succeed(`${chalk.bold('Analysis complete')} ${chalk.gray('·')} ${result.summary.highRiskFindings} high-risk ${chalk.gray('·')} ${result.summary.unclassified} unclassified`);
61
+ }
62
+ //# sourceMappingURL=analysis-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysis-path.js","sourceRoot":"","sources":["../../src/tui/analysis-path.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/tui/render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAiC,MAAM,aAAa,CAAC;AAsE9E,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAoFvD;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
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"}
@@ -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.bgRed.white.bold,
12
- high: chalk.hex('#ff8a4c').bold,
13
- medium: chalk.yellow.bold,
14
- low: chalk.cyan.bold,
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(54, Math.min(76, process.stdout.columns || 76));
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 divider(character = '─') {
21
- return chalk.gray(character.repeat(width()));
56
+ function section(title) {
57
+ return ['', chalk.bold(title)];
22
58
  }
23
- function row(label, value) {
24
- const valueText = String(value);
25
- return `${label}${' '.repeat(Math.max(2, width() - label.length - valueText.length))}${chalk.bold(valueText)}`;
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 findingBlock(item) {
28
- const lines = [
29
- severityColor[item.severity](item.severity.toUpperCase()),
30
- chalk.bold(item.title),
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
- lines.push('', ` ${chalk.gray('Why flagged:')} ${item.why}`, ` ${chalk.gray('Recommendation:')} ${item.recommendation}`);
42
- return lines.join('\n');
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 accessOverview(result) {
45
- const blocks = [];
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
- blocks.push(chalk.bold(client.label));
48
- for (const server of result.discovery.servers.filter((item) => item.client === client.id)) {
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 label = server.name.slice(0, 16).padEnd(16);
53
- blocks.push(` ${chalk.hex('#c4b5fd')(label)}${capabilities.length ? capabilities.slice(0, 4).map((item) => capabilityLabels[item]).join(', ') : chalk.gray('Tool list unavailable')}`);
114
+ const name = server.name.slice(0, 14).padEnd(14);
115
+ lines.push(` ${chalk.hex('#a78bfa')(name)}${shortCapabilities(capabilities)}`);
54
116
  }
55
- blocks.push('');
117
+ if (servers.length > 6)
118
+ lines.push(chalk.gray(` + ${servers.length - 6} more in the full report`));
56
119
  }
57
- return blocks.join('\n').trimEnd();
120
+ return lines;
58
121
  }
59
- function postureBar(score) {
60
- const slots = 20;
61
- const filled = Math.round(score / 100 * slots);
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.summary;
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('Slaunt Agent Access Audit'),
72
- chalk.gray('Inspecting MCP configurations locally. No audit payload uploaded.'),
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('Audit summary'),
85
- '',
86
- row('Clients detected', summary.clientsDetected),
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
- lines.push('', 'Unknown tools:', ...unknown.map((tool) => ` ${chalk.yellow('•')} ${tool.name}`), '', chalk.gray('Unknown tools are treated as potentially sensitive until reviewed.'));
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('', chalk.bold('Unavailable tool inventories'), '', ...failedProbes.map((probe) => {
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
- return ` ${chalk.yellow('!')} ${server?.clientLabel || 'Client'} / ${server?.name || probe.serverId}: ${probe.message || probe.status}`;
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('', divider(), '', chalk.bold('Audit scope'), '', 'This audit inspected configured MCP servers and their declared tools.', 'It did not call tools or inspect prompts, files, credentials, or non-MCP agents.', 'It did not determine whether any exposed tool has actually been used.', '', chalk.bgHex('#5b21b6').white.bold(' MAP COMPLETE '), '', chalk.bold('You found the paths. Put guardrails on them.'), `Slaunt can add approvals, role-scoped access, continuous monitoring, and`, `remote shutdown around the MCP stack you already use. ${chalk.bold('You choose when to connect.')}`, '', `${chalk.hex('#a78bfa')('Create your Slaunt workspace →')} ${chalk.underline('https://slaunt.ai/setup')}`);
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('', chalk.gray(`Notes: ${result.discovery.warnings.join(' · ')}`));
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 `\n${chalk.bold.hex('#a78bfa')('SLAUNT')} ${chalk.bold('agent access audit')}\n${chalk.gray('Local-first MCP exposure mapping')}`;
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
@@ -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.0",
3
+ "version": "0.1.2",
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 --no-open --no-install-slaunt",
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": {