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.
Files changed (168) hide show
  1. package/README.md +17 -122
  2. package/bin/slaunt-hooks.js +96 -0
  3. package/package.json +9 -59
  4. package/release/SlauntKillBar.zip +0 -0
  5. package/release/manifest.json +7 -0
  6. package/scripts/killbar-portability-check.js +67 -0
  7. package/scripts/package-killbar-macos.sh +38 -0
  8. package/src/approval-manager.js +53 -0
  9. package/src/cli-auth.js +230 -0
  10. package/src/compact-wordmark.js +13 -0
  11. package/src/desktop/broker-daemon.js +18 -0
  12. package/src/desktop/broker-grants.js +37 -0
  13. package/src/desktop/broker-hook-command.js +23 -0
  14. package/src/desktop/broker-keychain.js +29 -0
  15. package/src/desktop/broker-launch-agent.js +34 -0
  16. package/src/desktop/broker-service.js +40 -0
  17. package/src/desktop/chat-capture-command.js +7 -0
  18. package/src/desktop/chat-hook-capture.js +445 -0
  19. package/src/desktop/claude-lifecycle.js +143 -0
  20. package/src/desktop/client-identity.js +19 -0
  21. package/src/desktop/native-claude-broker.js +34 -0
  22. package/src/desktop/native-claude-connection.js +42 -0
  23. package/src/desktop/tool-guard-command.js +13 -0
  24. package/src/desktop/tool-guard.js +225 -0
  25. package/src/discovery/catalog.js +734 -0
  26. package/src/full-screen.js +88 -0
  27. package/src/helper-release.js +27 -0
  28. package/src/hidden-oauth.js +70 -0
  29. package/src/independent-grants.js +38 -0
  30. package/src/install-flow.js +71 -0
  31. package/src/killbar-background-install.js +47 -0
  32. package/src/killbar-enrollment.js +74 -0
  33. package/src/killbar-launch-agent.js +10 -0
  34. package/src/mcp-identity.js +6 -0
  35. package/src/native-config.js +150 -0
  36. package/src/native-oauth.js +33 -0
  37. package/src/oauth-cohort.js +43 -0
  38. package/src/pty-wrapper.py +57 -0
  39. package/src/read-json.js +8 -0
  40. package/src/setup/client-installer.js +93 -0
  41. package/src/setup/codex-guard-supervisor.js +34 -0
  42. package/src/setup/hook-installer.js +496 -0
  43. package/src/setup/managed-policy.js +26 -0
  44. package/src/setup/mcp-config-installer.js +204 -0
  45. package/src/setup-flow.js +66 -0
  46. package/src/tui.js +205 -0
  47. package/test/approval-manager.test.js +27 -0
  48. package/test/broker-grants.test.js +14 -0
  49. package/test/broker-keychain.test.js +14 -0
  50. package/test/broker-launch-agent.test.js +15 -0
  51. package/test/broker-service.test.js +42 -0
  52. package/test/cli-auth-recovery.test.js +15 -0
  53. package/test/codex-guard-supervisor.test.js +25 -0
  54. package/test/full-screen.test.js +49 -0
  55. package/test/helper-release.test.js +22 -0
  56. package/test/hidden-oauth.test.js +44 -0
  57. package/test/hook-installer.test.js +232 -0
  58. package/test/independent-grants.test.js +16 -0
  59. package/test/install-flow.test.js +24 -0
  60. package/test/killbar-background-install.test.js +15 -0
  61. package/test/killbar-enrollment.test.js +115 -0
  62. package/test/killbar-launch-agent.test.js +12 -0
  63. package/test/killbar-portability.test.js +17 -0
  64. package/test/managed-policy.test.js +18 -0
  65. package/test/native-claude-broker.test.js +19 -0
  66. package/test/native-claude-connection.test.js +17 -0
  67. package/test/native-claude-hooks.test.js +9 -0
  68. package/test/native-config.test.js +3 -0
  69. package/test/native-integration.cjs +29 -0
  70. package/test/native-oauth.test.js +23 -0
  71. package/test/oauth-cohort.test.js +26 -0
  72. package/test/tui.test.js +100 -0
  73. package/LICENSE +0 -201
  74. package/dist/audit/risk-engine.d.ts +0 -4
  75. package/dist/audit/risk-engine.d.ts.map +0 -1
  76. package/dist/audit/risk-engine.js +0 -174
  77. package/dist/audit/risk-engine.js.map +0 -1
  78. package/dist/audit/run.d.ts +0 -18
  79. package/dist/audit/run.d.ts.map +0 -1
  80. package/dist/audit/run.js +0 -68
  81. package/dist/audit/run.js.map +0 -1
  82. package/dist/classification/builtin-catalog.d.ts +0 -3
  83. package/dist/classification/builtin-catalog.d.ts.map +0 -1
  84. package/dist/classification/builtin-catalog.js +0 -283
  85. package/dist/classification/builtin-catalog.js.map +0 -1
  86. package/dist/classification/catalog.d.ts +0 -10
  87. package/dist/classification/catalog.d.ts.map +0 -1
  88. package/dist/classification/catalog.js +0 -194
  89. package/dist/classification/catalog.js.map +0 -1
  90. package/dist/classification/classifier.d.ts +0 -3
  91. package/dist/classification/classifier.d.ts.map +0 -1
  92. package/dist/classification/classifier.js +0 -64
  93. package/dist/classification/classifier.js.map +0 -1
  94. package/dist/classification/public-catalog-config.d.ts +0 -3
  95. package/dist/classification/public-catalog-config.d.ts.map +0 -1
  96. package/dist/classification/public-catalog-config.js +0 -5
  97. package/dist/classification/public-catalog-config.js.map +0 -1
  98. package/dist/cli.d.ts +0 -3
  99. package/dist/cli.d.ts.map +0 -1
  100. package/dist/cli.js +0 -239
  101. package/dist/cli.js.map +0 -1
  102. package/dist/config/discover.d.ts +0 -8
  103. package/dist/config/discover.d.ts.map +0 -1
  104. package/dist/config/discover.js +0 -163
  105. package/dist/config/discover.js.map +0 -1
  106. package/dist/config/install.d.ts +0 -10
  107. package/dist/config/install.d.ts.map +0 -1
  108. package/dist/config/install.js +0 -143
  109. package/dist/config/install.js.map +0 -1
  110. package/dist/config/paths.d.ts +0 -24
  111. package/dist/config/paths.d.ts.map +0 -1
  112. package/dist/config/paths.js +0 -90
  113. package/dist/config/paths.js.map +0 -1
  114. package/dist/demo.d.ts +0 -4
  115. package/dist/demo.d.ts.map +0 -1
  116. package/dist/demo.js +0 -99
  117. package/dist/demo.js.map +0 -1
  118. package/dist/explanation/local.d.ts +0 -24
  119. package/dist/explanation/local.d.ts.map +0 -1
  120. package/dist/explanation/local.js +0 -696
  121. package/dist/explanation/local.js.map +0 -1
  122. package/dist/mcp/introspect.d.ts +0 -18
  123. package/dist/mcp/introspect.d.ts.map +0 -1
  124. package/dist/mcp/introspect.js +0 -236
  125. package/dist/mcp/introspect.js.map +0 -1
  126. package/dist/mcp/oauth.d.ts +0 -14
  127. package/dist/mcp/oauth.d.ts.map +0 -1
  128. package/dist/mcp/oauth.js +0 -257
  129. package/dist/mcp/oauth.js.map +0 -1
  130. package/dist/presentation/plain-language.d.ts +0 -12
  131. package/dist/presentation/plain-language.d.ts.map +0 -1
  132. package/dist/presentation/plain-language.js +0 -120
  133. package/dist/presentation/plain-language.js.map +0 -1
  134. package/dist/privacy/redaction.d.ts +0 -2
  135. package/dist/privacy/redaction.d.ts.map +0 -1
  136. package/dist/privacy/redaction.js +0 -50
  137. package/dist/privacy/redaction.js.map +0 -1
  138. package/dist/report/html.d.ts +0 -4
  139. package/dist/report/html.d.ts.map +0 -1
  140. package/dist/report/html.js +0 -101
  141. package/dist/report/html.js.map +0 -1
  142. package/dist/tui/analysis-path.d.ts +0 -17
  143. package/dist/tui/analysis-path.d.ts.map +0 -1
  144. package/dist/tui/analysis-path.js +0 -112
  145. package/dist/tui/analysis-path.js.map +0 -1
  146. package/dist/tui/render.d.ts +0 -4
  147. package/dist/tui/render.d.ts.map +0 -1
  148. package/dist/tui/render.js +0 -262
  149. package/dist/tui/render.js.map +0 -1
  150. package/dist/tui/splash.d.ts +0 -15
  151. package/dist/tui/splash.d.ts.map +0 -1
  152. package/dist/tui/splash.js +0 -130
  153. package/dist/tui/splash.js.map +0 -1
  154. package/dist/tui/stream.d.ts +0 -6
  155. package/dist/tui/stream.d.ts.map +0 -1
  156. package/dist/tui/stream.js +0 -56
  157. package/dist/tui/stream.js.map +0 -1
  158. package/dist/types.d.ts +0 -132
  159. package/dist/types.d.ts.map +0 -1
  160. package/dist/types.js +0 -2
  161. package/dist/types.js.map +0 -1
  162. package/dist/version.d.ts +0 -2
  163. package/dist/version.d.ts.map +0 -1
  164. package/dist/version.js +0 -8
  165. package/dist/version.js.map +0 -1
  166. package/models/APACHE-2.0.txt +0 -202
  167. package/models/MODEL.json +0 -29
  168. package/models/NOTICE.md +0 -23
@@ -1,3 +0,0 @@
1
- import type { ClassificationRule, ClassifiedTool, DeclaredTool } from '../types.js';
2
- export declare function classifyTools(tools: DeclaredTool[], rules: ClassificationRule[]): ClassifiedTool[];
3
- //# sourceMappingURL=classifier.d.ts.map
@@ -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,3 +0,0 @@
1
- export declare const PUBLIC_CATALOG_URL = "https://chgxpcoxlxqmehozftge.supabase.co";
2
- export declare const PUBLIC_CATALOG_KEY = "sb_publishable_JJTDRq5tsrVf6mA0LB6CmA_OPblISO7";
3
- //# sourceMappingURL=public-catalog-config.d.ts.map
@@ -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
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=cli.d.ts.map
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"}
@@ -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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"}
@@ -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"}