slaunt 0.1.17 → 0.1.18
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 +17 -122
- package/bin/slaunt-hooks.js +96 -0
- package/package.json +9 -59
- package/release/SlauntKillBar.zip +0 -0
- package/release/manifest.json +7 -0
- package/scripts/killbar-portability-check.js +67 -0
- package/scripts/package-killbar-macos.sh +38 -0
- package/src/approval-manager.js +53 -0
- package/src/cli-auth.js +230 -0
- package/src/compact-wordmark.js +13 -0
- package/src/desktop/broker-daemon.js +18 -0
- package/src/desktop/broker-grants.js +37 -0
- package/src/desktop/broker-hook-command.js +23 -0
- package/src/desktop/broker-keychain.js +29 -0
- package/src/desktop/broker-launch-agent.js +34 -0
- package/src/desktop/broker-service.js +40 -0
- package/src/desktop/chat-capture-command.js +7 -0
- package/src/desktop/chat-hook-capture.js +445 -0
- package/src/desktop/claude-lifecycle.js +143 -0
- package/src/desktop/client-identity.js +19 -0
- package/src/desktop/native-claude-broker.js +34 -0
- package/src/desktop/native-claude-connection.js +42 -0
- package/src/desktop/tool-guard-command.js +13 -0
- package/src/desktop/tool-guard.js +225 -0
- package/src/discovery/catalog.js +734 -0
- package/src/full-screen.js +88 -0
- package/src/helper-release.js +27 -0
- package/src/hidden-oauth.js +70 -0
- package/src/independent-grants.js +38 -0
- package/src/install-flow.js +71 -0
- package/src/killbar-background-install.js +47 -0
- package/src/killbar-enrollment.js +74 -0
- package/src/killbar-launch-agent.js +10 -0
- package/src/mcp-identity.js +6 -0
- package/src/native-config.js +150 -0
- package/src/native-oauth.js +33 -0
- package/src/oauth-cohort.js +43 -0
- package/src/pty-wrapper.py +57 -0
- package/src/read-json.js +8 -0
- package/src/setup/client-installer.js +93 -0
- package/src/setup/codex-guard-supervisor.js +34 -0
- package/src/setup/hook-installer.js +496 -0
- package/src/setup/managed-policy.js +26 -0
- package/src/setup/mcp-config-installer.js +204 -0
- package/src/setup-flow.js +66 -0
- package/src/tui.js +205 -0
- package/test/approval-manager.test.js +27 -0
- package/test/broker-grants.test.js +14 -0
- package/test/broker-keychain.test.js +14 -0
- package/test/broker-launch-agent.test.js +15 -0
- package/test/broker-service.test.js +42 -0
- package/test/cli-auth-recovery.test.js +15 -0
- package/test/codex-guard-supervisor.test.js +25 -0
- package/test/full-screen.test.js +49 -0
- package/test/helper-release.test.js +22 -0
- package/test/hidden-oauth.test.js +44 -0
- package/test/hook-installer.test.js +232 -0
- package/test/independent-grants.test.js +16 -0
- package/test/install-flow.test.js +24 -0
- package/test/killbar-background-install.test.js +15 -0
- package/test/killbar-enrollment.test.js +115 -0
- package/test/killbar-launch-agent.test.js +12 -0
- package/test/killbar-portability.test.js +17 -0
- package/test/managed-policy.test.js +18 -0
- package/test/native-claude-broker.test.js +19 -0
- package/test/native-claude-connection.test.js +17 -0
- package/test/native-claude-hooks.test.js +9 -0
- package/test/native-config.test.js +3 -0
- package/test/native-integration.cjs +29 -0
- package/test/native-oauth.test.js +23 -0
- package/test/oauth-cohort.test.js +26 -0
- package/test/tui.test.js +100 -0
- package/LICENSE +0 -201
- package/dist/audit/risk-engine.d.ts +0 -4
- package/dist/audit/risk-engine.d.ts.map +0 -1
- package/dist/audit/risk-engine.js +0 -174
- package/dist/audit/risk-engine.js.map +0 -1
- package/dist/audit/run.d.ts +0 -18
- package/dist/audit/run.d.ts.map +0 -1
- package/dist/audit/run.js +0 -68
- package/dist/audit/run.js.map +0 -1
- package/dist/classification/builtin-catalog.d.ts +0 -3
- package/dist/classification/builtin-catalog.d.ts.map +0 -1
- package/dist/classification/builtin-catalog.js +0 -283
- package/dist/classification/builtin-catalog.js.map +0 -1
- package/dist/classification/catalog.d.ts +0 -10
- package/dist/classification/catalog.d.ts.map +0 -1
- package/dist/classification/catalog.js +0 -194
- package/dist/classification/catalog.js.map +0 -1
- package/dist/classification/classifier.d.ts +0 -3
- package/dist/classification/classifier.d.ts.map +0 -1
- package/dist/classification/classifier.js +0 -64
- package/dist/classification/classifier.js.map +0 -1
- package/dist/classification/public-catalog-config.d.ts +0 -3
- package/dist/classification/public-catalog-config.d.ts.map +0 -1
- package/dist/classification/public-catalog-config.js +0 -5
- package/dist/classification/public-catalog-config.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -239
- package/dist/cli.js.map +0 -1
- package/dist/config/discover.d.ts +0 -8
- package/dist/config/discover.d.ts.map +0 -1
- package/dist/config/discover.js +0 -163
- package/dist/config/discover.js.map +0 -1
- package/dist/config/install.d.ts +0 -10
- package/dist/config/install.d.ts.map +0 -1
- package/dist/config/install.js +0 -143
- package/dist/config/install.js.map +0 -1
- package/dist/config/paths.d.ts +0 -24
- package/dist/config/paths.d.ts.map +0 -1
- package/dist/config/paths.js +0 -90
- package/dist/config/paths.js.map +0 -1
- package/dist/demo.d.ts +0 -4
- package/dist/demo.d.ts.map +0 -1
- package/dist/demo.js +0 -99
- package/dist/demo.js.map +0 -1
- package/dist/explanation/local.d.ts +0 -24
- package/dist/explanation/local.d.ts.map +0 -1
- package/dist/explanation/local.js +0 -696
- package/dist/explanation/local.js.map +0 -1
- package/dist/mcp/introspect.d.ts +0 -18
- package/dist/mcp/introspect.d.ts.map +0 -1
- package/dist/mcp/introspect.js +0 -236
- package/dist/mcp/introspect.js.map +0 -1
- package/dist/mcp/oauth.d.ts +0 -14
- package/dist/mcp/oauth.d.ts.map +0 -1
- package/dist/mcp/oauth.js +0 -257
- package/dist/mcp/oauth.js.map +0 -1
- package/dist/presentation/plain-language.d.ts +0 -12
- package/dist/presentation/plain-language.d.ts.map +0 -1
- package/dist/presentation/plain-language.js +0 -120
- package/dist/presentation/plain-language.js.map +0 -1
- package/dist/privacy/redaction.d.ts +0 -2
- package/dist/privacy/redaction.d.ts.map +0 -1
- package/dist/privacy/redaction.js +0 -50
- package/dist/privacy/redaction.js.map +0 -1
- package/dist/report/html.d.ts +0 -4
- package/dist/report/html.d.ts.map +0 -1
- package/dist/report/html.js +0 -101
- package/dist/report/html.js.map +0 -1
- package/dist/tui/analysis-path.d.ts +0 -17
- package/dist/tui/analysis-path.d.ts.map +0 -1
- package/dist/tui/analysis-path.js +0 -112
- package/dist/tui/analysis-path.js.map +0 -1
- package/dist/tui/render.d.ts +0 -4
- package/dist/tui/render.d.ts.map +0 -1
- package/dist/tui/render.js +0 -262
- package/dist/tui/render.js.map +0 -1
- package/dist/tui/splash.d.ts +0 -15
- package/dist/tui/splash.d.ts.map +0 -1
- package/dist/tui/splash.js +0 -130
- package/dist/tui/splash.js.map +0 -1
- package/dist/tui/stream.d.ts +0 -6
- package/dist/tui/stream.d.ts.map +0 -1
- package/dist/tui/stream.js +0 -56
- package/dist/tui/stream.js.map +0 -1
- package/dist/types.d.ts +0 -132
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -8
- package/dist/version.js.map +0 -1
- package/models/APACHE-2.0.txt +0 -202
- package/models/MODEL.json +0 -29
- package/models/NOTICE.md +0 -23
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../src/classification/classifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAuBpF,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,cAAc,EAAE,CA2ClG"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
function normalize(value) {
|
|
2
|
-
return value.toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, '');
|
|
3
|
-
}
|
|
4
|
-
function globMatches(pattern, value) {
|
|
5
|
-
const normalizedPattern = pattern.toLowerCase().replace(/[^a-z0-9*]+/g, '_').replace(/^_+|_+$/g, '');
|
|
6
|
-
const escaped = normalizedPattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&').replaceAll('*', '.*');
|
|
7
|
-
return new RegExp(`^${escaped}$`, 'u').test(normalize(value));
|
|
8
|
-
}
|
|
9
|
-
function ruleScore(rule, tool) {
|
|
10
|
-
if (!globMatches(rule.toolPattern, tool.name))
|
|
11
|
-
return undefined;
|
|
12
|
-
if (rule.namespace && !globMatches(rule.namespace, tool.serverName))
|
|
13
|
-
return undefined;
|
|
14
|
-
const description = normalize(tool.description);
|
|
15
|
-
const terms = rule.descriptionTerms || [];
|
|
16
|
-
const matches = terms.filter((term) => description.includes(normalize(term))).length;
|
|
17
|
-
if (terms.length > 0 && matches === 0)
|
|
18
|
-
return undefined;
|
|
19
|
-
const specificity = rule.toolPattern.replaceAll('*', '').length + (rule.namespace?.replaceAll('*', '').length || 0);
|
|
20
|
-
return rule.priority * 10_000 + specificity * 10 + matches;
|
|
21
|
-
}
|
|
22
|
-
export function classifyTools(tools, rules) {
|
|
23
|
-
return tools.map((tool) => {
|
|
24
|
-
let selected;
|
|
25
|
-
let selectedScore = -1;
|
|
26
|
-
for (const rule of rules) {
|
|
27
|
-
const score = ruleScore(rule, tool);
|
|
28
|
-
if (score !== undefined && score > selectedScore) {
|
|
29
|
-
selected = rule;
|
|
30
|
-
selectedScore = score;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
if (!selected) {
|
|
34
|
-
return {
|
|
35
|
-
...tool,
|
|
36
|
-
classification: {
|
|
37
|
-
category: 'Unknown',
|
|
38
|
-
capabilities: [],
|
|
39
|
-
riskScore: 50,
|
|
40
|
-
riskLevel: 'medium',
|
|
41
|
-
sensitive: true,
|
|
42
|
-
verified: false,
|
|
43
|
-
rationale: 'No trusted classification rule matched this declared tool.',
|
|
44
|
-
source: 'unknown',
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
return {
|
|
49
|
-
...tool,
|
|
50
|
-
classification: {
|
|
51
|
-
ruleId: selected.id,
|
|
52
|
-
category: selected.category,
|
|
53
|
-
capabilities: selected.capabilities,
|
|
54
|
-
riskScore: selected.riskScore,
|
|
55
|
-
riskLevel: selected.riskLevel,
|
|
56
|
-
sensitive: selected.sensitive,
|
|
57
|
-
verified: selected.verified,
|
|
58
|
-
rationale: selected.rationale,
|
|
59
|
-
source: selected.id.startsWith('db:') ? 'database' : selected.verified ? 'built-in' : 'heuristic',
|
|
60
|
-
},
|
|
61
|
-
};
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=classifier.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../src/classification/classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"public-catalog-config.d.ts","sourceRoot":"","sources":["../../src/classification/public-catalog-config.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,6CAA6C,CAAC;AAC7E,eAAO,MAAM,kBAAkB,mDAAmD,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
// Supabase publishable keys are intentionally safe to ship in public clients.
|
|
2
|
-
// Access is constrained by Postgres grants and Row Level Security in the catalog migration.
|
|
3
|
-
export const PUBLIC_CATALOG_URL = 'https://chgxpcoxlxqmehozftge.supabase.co';
|
|
4
|
-
export const PUBLIC_CATALOG_KEY = 'sb_publishable_JJTDRq5tsrVf6mA0LB6CmA_OPblISO7';
|
|
5
|
-
//# sourceMappingURL=public-catalog-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"public-catalog-config.js","sourceRoot":"","sources":["../../src/classification/public-catalog-config.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4FAA4F;AAC5F,MAAM,CAAC,MAAM,kBAAkB,GAAG,0CAA0C,CAAC;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAAG,gDAAgD,CAAC"}
|
package/dist/cli.d.ts
DELETED
package/dist/cli.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
DELETED
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { confirm } from '@inquirer/prompts';
|
|
3
|
-
import chalk from 'chalk';
|
|
4
|
-
import open from 'open';
|
|
5
|
-
import ora from 'ora';
|
|
6
|
-
import { runAudit } from './audit/run.js';
|
|
7
|
-
import { discoverConfigurations } from './config/discover.js';
|
|
8
|
-
import { installSlauntMcp } from './config/install.js';
|
|
9
|
-
import { isDynamicLauncher } from './mcp/introspect.js';
|
|
10
|
-
import { writeHtmlReport } from './report/html.js';
|
|
11
|
-
import { DEFAULT_INSPECTION_WINDOW_MS, playAnalysisPath } from './tui/analysis-path.js';
|
|
12
|
-
import { renderAudit, renderHeader } from './tui/render.js';
|
|
13
|
-
import { startStartupSplash } from './tui/splash.js';
|
|
14
|
-
import { streamTerminalText } from './tui/stream.js';
|
|
15
|
-
import { PACKAGE_VERSION } from './version.js';
|
|
16
|
-
const HELP = `Slaunt MCP Agent Access Audit
|
|
17
|
-
|
|
18
|
-
Usage:
|
|
19
|
-
npx slaunt audit [options]
|
|
20
|
-
|
|
21
|
-
Options:
|
|
22
|
-
--install-slaunt Add the Slaunt MCP server to detected client configurations
|
|
23
|
-
--allow-server-starts Start local stdio servers to request tools/list inventories
|
|
24
|
-
--inherit-parent-env Explicitly pass the full parent environment to approved stdio starts
|
|
25
|
-
--allow-sensitive-env Permit token/key/secret variable expansion during trusted local probes
|
|
26
|
-
--authorize-http-servers Use browser OAuth for protected HTTP/SSE servers to read tools/list
|
|
27
|
-
--no-http-auth Do not start browser OAuth; report protected servers as unavailable
|
|
28
|
-
--no-server-starts Inspect configuration only; do not start local MCP servers
|
|
29
|
-
--config <path> Inspect an additional JSON or TOML MCP config (repeatable)
|
|
30
|
-
--offline Use the built-in classification catalog; do not refresh it
|
|
31
|
-
--output <path> Full HTML report path
|
|
32
|
-
--no-report Do not save the full HTML report
|
|
33
|
-
--open-report Open the full HTML report after the audit
|
|
34
|
-
--quick, --no-motion Skip paced inspection and progressive report reveal
|
|
35
|
-
--timeout <ms> Per-server probe timeout (1000-60000; default 8000)
|
|
36
|
-
--json Print a machine-readable result with secrets redacted
|
|
37
|
-
--yes Approve read-only tools/list startup for automation
|
|
38
|
-
--demo Render a deterministic 43-tool example audit
|
|
39
|
-
-h, --help Show help
|
|
40
|
-
-v, --version Show version
|
|
41
|
-
|
|
42
|
-
Privacy:
|
|
43
|
-
Slaunt may download its reviewed classification catalog. Tool definitions,
|
|
44
|
-
configuration values, and findings are analyzed locally and are not uploaded.
|
|
45
|
-
Server explanations use the bundled local TinyLlama 1.1B model by default.
|
|
46
|
-
An explicitly configured loopback-only Ollama model may override it; otherwise
|
|
47
|
-
each server gets a deterministic local evidence explanation if inference is
|
|
48
|
-
unavailable.
|
|
49
|
-
`;
|
|
50
|
-
function valueAfter(args, index, option) {
|
|
51
|
-
const value = args[index + 1];
|
|
52
|
-
if (!value || value.startsWith('-'))
|
|
53
|
-
throw new Error(`${option} requires a value`);
|
|
54
|
-
return value;
|
|
55
|
-
}
|
|
56
|
-
function parseArguments(args) {
|
|
57
|
-
const options = {
|
|
58
|
-
customPaths: [], demo: false, json: false, offline: false, openReport: false, noMotion: false, noReport: false,
|
|
59
|
-
inheritParentEnvironment: false, allowSensitiveEnvironment: false, yes: false,
|
|
60
|
-
};
|
|
61
|
-
for (let index = 0; index < args.length; index += 1) {
|
|
62
|
-
const argument = args[index];
|
|
63
|
-
if (argument === 'audit')
|
|
64
|
-
continue;
|
|
65
|
-
if (argument === '--demo')
|
|
66
|
-
options.demo = true;
|
|
67
|
-
else if (argument === '--json')
|
|
68
|
-
options.json = true;
|
|
69
|
-
else if (argument === '--offline')
|
|
70
|
-
options.offline = true;
|
|
71
|
-
else if (argument === '--open-report')
|
|
72
|
-
options.openReport = true;
|
|
73
|
-
else if (argument === '--no-open')
|
|
74
|
-
options.openReport = false;
|
|
75
|
-
else if (argument === '--no-motion' || argument === '--quick')
|
|
76
|
-
options.noMotion = true;
|
|
77
|
-
else if (argument === '--no-report')
|
|
78
|
-
options.noReport = true;
|
|
79
|
-
else if (argument === '--yes' || argument === '-y')
|
|
80
|
-
options.yes = true;
|
|
81
|
-
else if (argument === '--install-slaunt')
|
|
82
|
-
options.installSlaunt = true;
|
|
83
|
-
else if (argument === '--no-install-slaunt')
|
|
84
|
-
options.installSlaunt = false;
|
|
85
|
-
else if (argument === '--allow-server-starts')
|
|
86
|
-
options.allowServerStarts = true;
|
|
87
|
-
else if (argument === '--no-server-starts')
|
|
88
|
-
options.allowServerStarts = false;
|
|
89
|
-
else if (argument === '--inherit-parent-env')
|
|
90
|
-
options.inheritParentEnvironment = true;
|
|
91
|
-
else if (argument === '--allow-sensitive-env')
|
|
92
|
-
options.allowSensitiveEnvironment = true;
|
|
93
|
-
else if (argument === '--authorize-http-servers')
|
|
94
|
-
options.authorizeHttpServers = true;
|
|
95
|
-
else if (argument === '--no-http-auth')
|
|
96
|
-
options.authorizeHttpServers = false;
|
|
97
|
-
else if (argument === '--config')
|
|
98
|
-
options.customPaths.push(valueAfter(args, index++, argument));
|
|
99
|
-
else if (argument === '--output')
|
|
100
|
-
options.output = valueAfter(args, index++, argument);
|
|
101
|
-
else if (argument === '--timeout') {
|
|
102
|
-
const value = Number(valueAfter(args, index++, argument));
|
|
103
|
-
if (!Number.isInteger(value) || value < 1_000 || value > 60_000)
|
|
104
|
-
throw new Error('--timeout must be an integer from 1000 to 60000');
|
|
105
|
-
options.timeoutMs = value;
|
|
106
|
-
}
|
|
107
|
-
else if (argument === '--help' || argument === '-h') {
|
|
108
|
-
process.stdout.write(HELP);
|
|
109
|
-
process.exit(0);
|
|
110
|
-
}
|
|
111
|
-
else if (argument === '--version' || argument === '-v') {
|
|
112
|
-
process.stdout.write(`${PACKAGE_VERSION}\n`);
|
|
113
|
-
process.exit(0);
|
|
114
|
-
}
|
|
115
|
-
else if (argument === 'connect') {
|
|
116
|
-
throw new Error('connect is intentionally not implemented in this audit-only release');
|
|
117
|
-
}
|
|
118
|
-
else if (argument) {
|
|
119
|
-
throw new Error(`Unknown argument: ${argument}`);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return options;
|
|
123
|
-
}
|
|
124
|
-
function installationSummary(changes) {
|
|
125
|
-
for (const change of changes) {
|
|
126
|
-
const label = change.client === 'codex' ? 'Codex' : change.client === 'claude-code' ? 'Claude Code' : 'Claude Desktop';
|
|
127
|
-
if (change.status === 'installed') {
|
|
128
|
-
process.stdout.write(`${chalk.green('✓')} Added Slaunt MCP to ${label}${change.backupPath ? chalk.gray(' (backup created)') : ''}\n`);
|
|
129
|
-
}
|
|
130
|
-
else if (change.status === 'already-present') {
|
|
131
|
-
process.stdout.write(`${chalk.green('✓')} Slaunt MCP already configured in ${label}\n`);
|
|
132
|
-
}
|
|
133
|
-
else if (change.status === 'failed') {
|
|
134
|
-
process.stdout.write(`${chalk.yellow('!')} Could not update ${label}: ${change.message || 'unknown error'}\n`);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
async function main() {
|
|
139
|
-
const rawArgs = process.argv.slice(2);
|
|
140
|
-
if (rawArgs.length === 0 || rawArgs.every((arg) => arg.startsWith('-')))
|
|
141
|
-
rawArgs.unshift('audit');
|
|
142
|
-
if (rawArgs[0] !== 'audit' && !['--help', '-h', '--version', '-v'].includes(rawArgs[0] || '')) {
|
|
143
|
-
if (rawArgs[0] === 'connect')
|
|
144
|
-
throw new Error('connect is intentionally not implemented in this audit-only release');
|
|
145
|
-
throw new Error(`Unknown command: ${rawArgs[0]}`);
|
|
146
|
-
}
|
|
147
|
-
const options = parseArguments(rawArgs);
|
|
148
|
-
const inspectionStartedAt = Date.now();
|
|
149
|
-
const interactive = Boolean(process.stdin.isTTY && process.stdout.isTTY && !options.json);
|
|
150
|
-
const motionEnabled = interactive
|
|
151
|
-
&& !options.noMotion
|
|
152
|
-
&& !options.yes
|
|
153
|
-
&& !process.env.CI
|
|
154
|
-
&& process.env.SLAUNT_NO_MOTION !== '1';
|
|
155
|
-
if (!options.json)
|
|
156
|
-
process.stdout.write(`${renderHeader()}\n\n`);
|
|
157
|
-
const startupSplash = motionEnabled ? startStartupSplash() : undefined;
|
|
158
|
-
let discovery;
|
|
159
|
-
try {
|
|
160
|
-
discovery = options.demo ? undefined : await discoverConfigurations({
|
|
161
|
-
...(options.customPaths.length ? { customPaths: options.customPaths } : {}),
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
finally {
|
|
165
|
-
await startupSplash?.stop();
|
|
166
|
-
}
|
|
167
|
-
const detectedClients = discovery?.clients.filter((client) => client.detected).map((client) => client.id) || [];
|
|
168
|
-
const clientsMissingSlaunt = detectedClients.filter((client) => !discovery?.servers.some((server) => server.client === client && server.name.toLowerCase() === 'slaunt'));
|
|
169
|
-
const shouldInstall = options.installSlaunt === true && !options.demo;
|
|
170
|
-
if (shouldInstall && clientsMissingSlaunt.length > 0) {
|
|
171
|
-
const changes = await installSlauntMcp({ clients: clientsMissingSlaunt });
|
|
172
|
-
if (!options.json)
|
|
173
|
-
installationSummary(changes);
|
|
174
|
-
discovery = await discoverConfigurations({ ...(options.customPaths.length ? { customPaths: options.customPaths } : {}) });
|
|
175
|
-
}
|
|
176
|
-
const stdioServers = discovery?.servers.filter((server) => server.transport === 'stdio') || [];
|
|
177
|
-
const httpServers = discovery?.servers.filter((server) => server.transport === 'http' || server.transport === 'sse') || [];
|
|
178
|
-
let allowServerStarts = options.allowServerStarts ?? (options.yes && !options.demo);
|
|
179
|
-
if (interactive && options.allowServerStarts === undefined && stdioServers.length > 0 && !options.demo) {
|
|
180
|
-
const dynamicCount = stdioServers.filter(isDynamicLauncher).length;
|
|
181
|
-
allowServerStarts = await confirm({
|
|
182
|
-
message: `Start ${stdioServers.length} local MCP server${stdioServers.length === 1 ? '' : 's'} to request tools/list (their declared tool inventory)? No tools will be called.${dynamicCount ? ` ${dynamicCount} may launch package or container software.` : ''}`,
|
|
183
|
-
default: true,
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
let authorizeHttpServers = options.authorizeHttpServers ?? false;
|
|
187
|
-
if (interactive && options.authorizeHttpServers === undefined && httpServers.length > 0 && !options.demo) {
|
|
188
|
-
authorizeHttpServers = await confirm({
|
|
189
|
-
message: `Sign in to protected remote MCP server${httpServers.length === 1 ? '' : 's'} when needed to read tools/list?`,
|
|
190
|
-
default: true,
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
const spinner = options.json ? undefined : ora({ text: 'Inspecting MCP configurations', color: 'magenta' }).start();
|
|
194
|
-
const result = await runAudit({
|
|
195
|
-
allowServerStarts: Boolean(allowServerStarts),
|
|
196
|
-
...(authorizeHttpServers ? { authorizeHttpServers: true } : {}),
|
|
197
|
-
...(options.inheritParentEnvironment ? { inheritParentEnvironment: true } : {}),
|
|
198
|
-
...(options.allowSensitiveEnvironment ? { allowSensitiveEnvironment: true } : {}),
|
|
199
|
-
...(options.customPaths.length ? { customPaths: options.customPaths } : {}),
|
|
200
|
-
...(options.offline ? { offline: true } : {}),
|
|
201
|
-
...(options.timeoutMs ? { timeoutMs: options.timeoutMs } : {}),
|
|
202
|
-
...(options.demo ? { demo: true } : {}),
|
|
203
|
-
...(discovery ? { discovery } : {}),
|
|
204
|
-
onAuthorizationRequired: (server) => {
|
|
205
|
-
if (spinner)
|
|
206
|
-
spinner.text = `Waiting for browser sign-in: ${server.name}`;
|
|
207
|
-
},
|
|
208
|
-
onStage: (_stage, detail) => { if (spinner)
|
|
209
|
-
spinner.text = detail; },
|
|
210
|
-
});
|
|
211
|
-
spinner?.succeed('MCP evidence collected');
|
|
212
|
-
if (motionEnabled) {
|
|
213
|
-
const elapsedMs = Date.now() - inspectionStartedAt;
|
|
214
|
-
await playAnalysisPath(result, {
|
|
215
|
-
durationMs: Math.max(4_200, DEFAULT_INSPECTION_WINDOW_MS - elapsedMs),
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
if (!options.noReport) {
|
|
219
|
-
const reportPath = await writeHtmlReport(result, options.output);
|
|
220
|
-
result.reportPath = reportPath;
|
|
221
|
-
}
|
|
222
|
-
if (options.json) {
|
|
223
|
-
process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
const renderedAudit = `${renderAudit(result)}\n`;
|
|
227
|
-
if (motionEnabled)
|
|
228
|
-
await streamTerminalText(renderedAudit);
|
|
229
|
-
else
|
|
230
|
-
process.stdout.write(renderedAudit);
|
|
231
|
-
if (options.openReport && result.reportPath)
|
|
232
|
-
await open(result.reportPath, { wait: false });
|
|
233
|
-
}
|
|
234
|
-
main().catch((error) => {
|
|
235
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
236
|
-
process.stderr.write(`${chalk.red('slaunt audit failed:')} ${message}\n`);
|
|
237
|
-
process.exitCode = 1;
|
|
238
|
-
});
|
|
239
|
-
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { DiscoveredConfiguration } from '../types.js';
|
|
2
|
-
import { type PathContext } from './paths.js';
|
|
3
|
-
export interface DiscoverOptions {
|
|
4
|
-
context?: PathContext;
|
|
5
|
-
customPaths?: string[];
|
|
6
|
-
}
|
|
7
|
-
export declare function discoverConfigurations(options?: DiscoverOptions): Promise<DiscoveredConfiguration>;
|
|
8
|
-
//# sourceMappingURL=discover.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/config/discover.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAGV,uBAAuB,EAGxB,MAAM,aAAa,CAAC;AACrB,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAoKpB,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAsB,sBAAsB,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA2B5G"}
|
package/dist/config/discover.js
DELETED
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import { createHash } from 'node:crypto';
|
|
2
|
-
import { readFile } from 'node:fs/promises';
|
|
3
|
-
import { basename, extname, isAbsolute, relative, resolve } from 'node:path';
|
|
4
|
-
import { parse as parseToml } from 'smol-toml';
|
|
5
|
-
import { candidateConfigPaths, defaultPathContext, existingCandidates, } from './paths.js';
|
|
6
|
-
const CLIENT_LABELS = {
|
|
7
|
-
'claude-code': 'Claude Code',
|
|
8
|
-
'claude-desktop': 'Claude Desktop',
|
|
9
|
-
codex: 'Codex',
|
|
10
|
-
};
|
|
11
|
-
function isRecord(value) {
|
|
12
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
13
|
-
}
|
|
14
|
-
function stringRecord(value) {
|
|
15
|
-
if (!isRecord(value))
|
|
16
|
-
return {};
|
|
17
|
-
return Object.fromEntries(Object.entries(value).filter((entry) => typeof entry[1] === 'string'));
|
|
18
|
-
}
|
|
19
|
-
function stringArray(value) {
|
|
20
|
-
return Array.isArray(value) ? value.filter((item) => typeof item === 'string') : [];
|
|
21
|
-
}
|
|
22
|
-
function inferTransport(server) {
|
|
23
|
-
const explicit = typeof server.type === 'string' ? server.type.toLowerCase() : '';
|
|
24
|
-
if (explicit === 'http' || explicit === 'streamable-http')
|
|
25
|
-
return 'http';
|
|
26
|
-
if (explicit === 'sse')
|
|
27
|
-
return 'sse';
|
|
28
|
-
if (explicit === 'stdio')
|
|
29
|
-
return 'stdio';
|
|
30
|
-
if (typeof server.command === 'string')
|
|
31
|
-
return 'stdio';
|
|
32
|
-
if (typeof server.url === 'string')
|
|
33
|
-
return 'http';
|
|
34
|
-
return 'unknown';
|
|
35
|
-
}
|
|
36
|
-
function serverId(client, name, path, scope, projectPath) {
|
|
37
|
-
return createHash('sha256')
|
|
38
|
-
.update(`${client}\0${scope}\0${projectPath || ''}\0${name}\0${path}`)
|
|
39
|
-
.digest('hex')
|
|
40
|
-
.slice(0, 20);
|
|
41
|
-
}
|
|
42
|
-
function normalizeServers(candidate, rawServers, scope = candidate.scope, disabledNames = new Set()) {
|
|
43
|
-
if (!isRecord(rawServers))
|
|
44
|
-
return [];
|
|
45
|
-
return Object.entries(rawServers).flatMap(([name, value]) => {
|
|
46
|
-
if (!isRecord(value))
|
|
47
|
-
return [];
|
|
48
|
-
const env = stringRecord(value.env);
|
|
49
|
-
const headers = {
|
|
50
|
-
...stringRecord(value.headers),
|
|
51
|
-
...stringRecord(value.http_headers),
|
|
52
|
-
};
|
|
53
|
-
const envHeaderNames = stringRecord(value.env_http_headers);
|
|
54
|
-
for (const [header, envName] of Object.entries(envHeaderNames)) {
|
|
55
|
-
// Keep the reference symbolic until probing. Resolving it during
|
|
56
|
-
// discovery would put the raw secret in the discovery object.
|
|
57
|
-
headers[header] = `\${${envName}}`;
|
|
58
|
-
}
|
|
59
|
-
const url = typeof value.url === 'string' ? value.url : undefined;
|
|
60
|
-
const command = typeof value.command === 'string' ? value.command : undefined;
|
|
61
|
-
const enabled = value.enabled !== false && value.disabled !== true && !disabledNames.has(name);
|
|
62
|
-
return [{
|
|
63
|
-
id: serverId(candidate.client, name, candidate.path, scope, scope === 'project' ? candidate.projectPath : undefined),
|
|
64
|
-
client: candidate.client,
|
|
65
|
-
clientLabel: CLIENT_LABELS[candidate.client],
|
|
66
|
-
name,
|
|
67
|
-
transport: inferTransport(value),
|
|
68
|
-
sourcePath: candidate.path,
|
|
69
|
-
scope,
|
|
70
|
-
...(command ? { command } : {}),
|
|
71
|
-
args: stringArray(value.args),
|
|
72
|
-
env,
|
|
73
|
-
envKeys: Object.keys(env).sort(),
|
|
74
|
-
...(url ? { url } : {}),
|
|
75
|
-
headers,
|
|
76
|
-
headerKeys: [...new Set([...Object.keys(headers), ...Object.keys(envHeaderNames)])].sort(),
|
|
77
|
-
enabled,
|
|
78
|
-
}];
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
function projectConfiguration(parsed, projectPath) {
|
|
82
|
-
if (!projectPath || !isRecord(parsed.projects))
|
|
83
|
-
return undefined;
|
|
84
|
-
const projects = parsed.projects;
|
|
85
|
-
const exact = projects[projectPath];
|
|
86
|
-
if (isRecord(exact))
|
|
87
|
-
return exact;
|
|
88
|
-
// A config written on a different platform or through a symlink can retain
|
|
89
|
-
// an equivalent spelling of the path. Prefer the most specific configured
|
|
90
|
-
// project root that contains the active cwd, without broadening the audit
|
|
91
|
-
// to every historical Claude project entry.
|
|
92
|
-
const normalizedPath = resolve(projectPath);
|
|
93
|
-
let selected;
|
|
94
|
-
let selectedPathLength = -1;
|
|
95
|
-
for (const [candidatePath, value] of Object.entries(projects)) {
|
|
96
|
-
if (!isRecord(value))
|
|
97
|
-
continue;
|
|
98
|
-
const normalizedCandidatePath = resolve(candidatePath);
|
|
99
|
-
const remainder = relative(normalizedCandidatePath, normalizedPath);
|
|
100
|
-
const containsPath = remainder === '' || (!remainder.startsWith('..') && !isAbsolute(remainder));
|
|
101
|
-
if (containsPath && normalizedCandidatePath.length > selectedPathLength) {
|
|
102
|
-
selected = value;
|
|
103
|
-
selectedPathLength = normalizedCandidatePath.length;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
return selected;
|
|
107
|
-
}
|
|
108
|
-
async function parseCandidate(candidate) {
|
|
109
|
-
const content = await readFile(candidate.path, 'utf8');
|
|
110
|
-
if (candidate.format === 'toml') {
|
|
111
|
-
const parsed = parseToml(content);
|
|
112
|
-
return normalizeServers(candidate, isRecord(parsed) ? parsed.mcp_servers : undefined);
|
|
113
|
-
}
|
|
114
|
-
const parsed = JSON.parse(content);
|
|
115
|
-
if (!isRecord(parsed))
|
|
116
|
-
return [];
|
|
117
|
-
const servers = normalizeServers(candidate, parsed.mcpServers);
|
|
118
|
-
const project = projectConfiguration(parsed, candidate.projectPath);
|
|
119
|
-
if (!project)
|
|
120
|
-
return servers;
|
|
121
|
-
const disabledNames = new Set(stringArray(project.disabledMcpServers));
|
|
122
|
-
return [
|
|
123
|
-
...servers,
|
|
124
|
-
...normalizeServers(candidate, project.mcpServers, 'project', disabledNames),
|
|
125
|
-
];
|
|
126
|
-
}
|
|
127
|
-
function inferCustomCandidate(path) {
|
|
128
|
-
const format = extname(path).toLowerCase() === '.toml' ? 'toml' : 'json';
|
|
129
|
-
const lower = basename(path).toLowerCase();
|
|
130
|
-
const client = format === 'toml'
|
|
131
|
-
? 'codex'
|
|
132
|
-
: lower.includes('desktop')
|
|
133
|
-
? 'claude-desktop'
|
|
134
|
-
: 'claude-code';
|
|
135
|
-
return { client, path, scope: 'custom', format };
|
|
136
|
-
}
|
|
137
|
-
export async function discoverConfigurations(options = {}) {
|
|
138
|
-
const context = options.context || defaultPathContext();
|
|
139
|
-
const standard = candidateConfigPaths(context);
|
|
140
|
-
const custom = (options.customPaths || []).map(inferCustomCandidate);
|
|
141
|
-
const candidates = await existingCandidates([...standard, ...custom]);
|
|
142
|
-
const warnings = [];
|
|
143
|
-
const servers = [];
|
|
144
|
-
for (const candidate of candidates) {
|
|
145
|
-
try {
|
|
146
|
-
servers.push(...await parseCandidate(candidate));
|
|
147
|
-
}
|
|
148
|
-
catch (error) {
|
|
149
|
-
const reason = error instanceof Error ? error.message : 'unknown parse error';
|
|
150
|
-
warnings.push(`Could not parse ${candidate.path}: ${reason}`);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
const clients = Object.keys(CLIENT_LABELS).map((id) => {
|
|
154
|
-
const sources = candidates.filter((candidate) => candidate.client === id).map((candidate) => candidate.path);
|
|
155
|
-
return { id, label: CLIENT_LABELS[id], detected: sources.length > 0, sources };
|
|
156
|
-
});
|
|
157
|
-
return {
|
|
158
|
-
clients,
|
|
159
|
-
servers: servers.filter((server) => server.enabled),
|
|
160
|
-
warnings,
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
//# sourceMappingURL=discover.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/config/discover.ts"],"names":[],"mappings":"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"}
|
package/dist/config/install.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { ClientId, InstallChange } from '../types.js';
|
|
2
|
-
import type { PathContext } from './paths.js';
|
|
3
|
-
export declare const DEFAULT_SLAUNT_MCP_URL = "https://central-mcp-ccr-production.up.railway.app/mcp";
|
|
4
|
-
export interface InstallOptions {
|
|
5
|
-
clients: ClientId[];
|
|
6
|
-
context?: PathContext;
|
|
7
|
-
url?: string;
|
|
8
|
-
}
|
|
9
|
-
export declare function installSlauntMcp(options: InstallOptions): Promise<InstallChange[]>;
|
|
10
|
-
//# sourceMappingURL=install.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/config/install.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,eAAO,MAAM,sBAAsB,0DAA0D,CAAC;AAsG9F,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAuCxF"}
|