slaunt 0.1.16 → 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 (164) hide show
  1. package/README.md +17 -106
  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 -16
  79. package/dist/audit/run.d.ts.map +0 -1
  80. package/dist/audit/run.js +0 -66
  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 -220
  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 -667
  121. package/dist/explanation/local.js.map +0 -1
  122. package/dist/mcp/introspect.d.ts +0 -14
  123. package/dist/mcp/introspect.d.ts.map +0 -1
  124. package/dist/mcp/introspect.js +0 -186
  125. package/dist/mcp/introspect.js.map +0 -1
  126. package/dist/presentation/plain-language.d.ts +0 -12
  127. package/dist/presentation/plain-language.d.ts.map +0 -1
  128. package/dist/presentation/plain-language.js +0 -120
  129. package/dist/presentation/plain-language.js.map +0 -1
  130. package/dist/privacy/redaction.d.ts +0 -2
  131. package/dist/privacy/redaction.d.ts.map +0 -1
  132. package/dist/privacy/redaction.js +0 -50
  133. package/dist/privacy/redaction.js.map +0 -1
  134. package/dist/report/html.d.ts +0 -4
  135. package/dist/report/html.d.ts.map +0 -1
  136. package/dist/report/html.js +0 -101
  137. package/dist/report/html.js.map +0 -1
  138. package/dist/tui/analysis-path.d.ts +0 -17
  139. package/dist/tui/analysis-path.d.ts.map +0 -1
  140. package/dist/tui/analysis-path.js +0 -184
  141. package/dist/tui/analysis-path.js.map +0 -1
  142. package/dist/tui/render.d.ts +0 -4
  143. package/dist/tui/render.d.ts.map +0 -1
  144. package/dist/tui/render.js +0 -273
  145. package/dist/tui/render.js.map +0 -1
  146. package/dist/tui/splash.d.ts +0 -15
  147. package/dist/tui/splash.d.ts.map +0 -1
  148. package/dist/tui/splash.js +0 -130
  149. package/dist/tui/splash.js.map +0 -1
  150. package/dist/tui/stream.d.ts +0 -6
  151. package/dist/tui/stream.d.ts.map +0 -1
  152. package/dist/tui/stream.js +0 -56
  153. package/dist/tui/stream.js.map +0 -1
  154. package/dist/types.d.ts +0 -131
  155. package/dist/types.d.ts.map +0 -1
  156. package/dist/types.js +0 -2
  157. package/dist/types.js.map +0 -1
  158. package/dist/version.d.ts +0 -2
  159. package/dist/version.d.ts.map +0 -1
  160. package/dist/version.js +0 -8
  161. package/dist/version.js.map +0 -1
  162. package/models/APACHE-2.0.txt +0 -202
  163. package/models/MODEL.json +0 -29
  164. 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,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,220 +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
- --no-server-starts Inspect configuration only; do not start local MCP servers
27
- --config <path> Inspect an additional JSON or TOML MCP config (repeatable)
28
- --offline Use the built-in classification catalog; do not refresh it
29
- --output <path> Full HTML report path
30
- --no-report Do not save the full HTML report
31
- --open-report Open the full HTML report after the audit
32
- --quick, --no-motion Skip paced inspection and progressive report reveal
33
- --timeout <ms> Per-server probe timeout (1000-60000; default 8000)
34
- --json Print a machine-readable result with secrets redacted
35
- --yes Approve read-only tools/list startup for automation
36
- --demo Render a deterministic 43-tool example audit
37
- -h, --help Show help
38
- -v, --version Show version
39
-
40
- Privacy:
41
- Slaunt may download its reviewed classification catalog. Tool definitions,
42
- configuration values, and findings are analyzed locally and are not uploaded.
43
- Server explanations use the bundled local TinyLlama 1.1B model by default.
44
- An explicitly configured loopback-only Ollama model may override it; otherwise
45
- each server gets a deterministic local evidence explanation if inference is
46
- unavailable.
47
- `;
48
- function valueAfter(args, index, option) {
49
- const value = args[index + 1];
50
- if (!value || value.startsWith('-'))
51
- throw new Error(`${option} requires a value`);
52
- return value;
53
- }
54
- function parseArguments(args) {
55
- const options = {
56
- customPaths: [], demo: false, json: false, offline: false, openReport: false, noMotion: false, noReport: false,
57
- inheritParentEnvironment: false, allowSensitiveEnvironment: false, yes: false,
58
- };
59
- for (let index = 0; index < args.length; index += 1) {
60
- const argument = args[index];
61
- if (argument === 'audit')
62
- continue;
63
- if (argument === '--demo')
64
- options.demo = true;
65
- else if (argument === '--json')
66
- options.json = true;
67
- else if (argument === '--offline')
68
- options.offline = true;
69
- else if (argument === '--open-report')
70
- options.openReport = true;
71
- else if (argument === '--no-open')
72
- options.openReport = false;
73
- else if (argument === '--no-motion' || argument === '--quick')
74
- options.noMotion = true;
75
- else if (argument === '--no-report')
76
- options.noReport = true;
77
- else if (argument === '--yes' || argument === '-y')
78
- options.yes = true;
79
- else if (argument === '--install-slaunt')
80
- options.installSlaunt = true;
81
- else if (argument === '--no-install-slaunt')
82
- options.installSlaunt = false;
83
- else if (argument === '--allow-server-starts')
84
- options.allowServerStarts = true;
85
- else if (argument === '--no-server-starts')
86
- options.allowServerStarts = false;
87
- else if (argument === '--inherit-parent-env')
88
- options.inheritParentEnvironment = true;
89
- else if (argument === '--allow-sensitive-env')
90
- options.allowSensitiveEnvironment = true;
91
- else if (argument === '--config')
92
- options.customPaths.push(valueAfter(args, index++, argument));
93
- else if (argument === '--output')
94
- options.output = valueAfter(args, index++, argument);
95
- else if (argument === '--timeout') {
96
- const value = Number(valueAfter(args, index++, argument));
97
- if (!Number.isInteger(value) || value < 1_000 || value > 60_000)
98
- throw new Error('--timeout must be an integer from 1000 to 60000');
99
- options.timeoutMs = value;
100
- }
101
- else if (argument === '--help' || argument === '-h') {
102
- process.stdout.write(HELP);
103
- process.exit(0);
104
- }
105
- else if (argument === '--version' || argument === '-v') {
106
- process.stdout.write(`${PACKAGE_VERSION}\n`);
107
- process.exit(0);
108
- }
109
- else if (argument === 'connect') {
110
- throw new Error('connect is intentionally not implemented in this audit-only release');
111
- }
112
- else if (argument) {
113
- throw new Error(`Unknown argument: ${argument}`);
114
- }
115
- }
116
- return options;
117
- }
118
- function installationSummary(changes) {
119
- for (const change of changes) {
120
- const label = change.client === 'codex' ? 'Codex' : change.client === 'claude-code' ? 'Claude Code' : 'Claude Desktop';
121
- if (change.status === 'installed') {
122
- process.stdout.write(`${chalk.green('✓')} Added Slaunt MCP to ${label}${change.backupPath ? chalk.gray(' (backup created)') : ''}\n`);
123
- }
124
- else if (change.status === 'already-present') {
125
- process.stdout.write(`${chalk.green('✓')} Slaunt MCP already configured in ${label}\n`);
126
- }
127
- else if (change.status === 'failed') {
128
- process.stdout.write(`${chalk.yellow('!')} Could not update ${label}: ${change.message || 'unknown error'}\n`);
129
- }
130
- }
131
- }
132
- async function main() {
133
- const rawArgs = process.argv.slice(2);
134
- if (rawArgs.length === 0 || rawArgs.every((arg) => arg.startsWith('-')))
135
- rawArgs.unshift('audit');
136
- if (rawArgs[0] !== 'audit' && !['--help', '-h', '--version', '-v'].includes(rawArgs[0] || '')) {
137
- if (rawArgs[0] === 'connect')
138
- throw new Error('connect is intentionally not implemented in this audit-only release');
139
- throw new Error(`Unknown command: ${rawArgs[0]}`);
140
- }
141
- const options = parseArguments(rawArgs);
142
- const inspectionStartedAt = Date.now();
143
- const interactive = Boolean(process.stdin.isTTY && process.stdout.isTTY && !options.json);
144
- const motionEnabled = interactive
145
- && !options.noMotion
146
- && !options.yes
147
- && !process.env.CI
148
- && process.env.SLAUNT_NO_MOTION !== '1';
149
- if (!options.json)
150
- process.stdout.write(`${renderHeader()}\n\n`);
151
- const startupSplash = motionEnabled ? startStartupSplash() : undefined;
152
- let discovery;
153
- try {
154
- discovery = options.demo ? undefined : await discoverConfigurations({
155
- ...(options.customPaths.length ? { customPaths: options.customPaths } : {}),
156
- });
157
- }
158
- finally {
159
- await startupSplash?.stop();
160
- }
161
- const detectedClients = discovery?.clients.filter((client) => client.detected).map((client) => client.id) || [];
162
- const clientsMissingSlaunt = detectedClients.filter((client) => !discovery?.servers.some((server) => server.client === client && server.name.toLowerCase() === 'slaunt'));
163
- const shouldInstall = options.installSlaunt === true && !options.demo;
164
- if (shouldInstall && clientsMissingSlaunt.length > 0) {
165
- const changes = await installSlauntMcp({ clients: clientsMissingSlaunt });
166
- if (!options.json)
167
- installationSummary(changes);
168
- discovery = await discoverConfigurations({ ...(options.customPaths.length ? { customPaths: options.customPaths } : {}) });
169
- }
170
- const stdioServers = discovery?.servers.filter((server) => server.transport === 'stdio') || [];
171
- let allowServerStarts = options.allowServerStarts ?? (options.yes && !options.demo);
172
- if (interactive && options.allowServerStarts === undefined && stdioServers.length > 0 && !options.demo) {
173
- const dynamicCount = stdioServers.filter(isDynamicLauncher).length;
174
- allowServerStarts = await confirm({
175
- 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.` : ''}`,
176
- default: true,
177
- });
178
- }
179
- const spinner = options.json ? undefined : ora({ text: 'Inspecting MCP configurations', color: 'magenta' }).start();
180
- const result = await runAudit({
181
- allowServerStarts: Boolean(allowServerStarts),
182
- ...(options.inheritParentEnvironment ? { inheritParentEnvironment: true } : {}),
183
- ...(options.allowSensitiveEnvironment ? { allowSensitiveEnvironment: true } : {}),
184
- ...(options.customPaths.length ? { customPaths: options.customPaths } : {}),
185
- ...(options.offline ? { offline: true } : {}),
186
- ...(options.timeoutMs ? { timeoutMs: options.timeoutMs } : {}),
187
- ...(options.demo ? { demo: true } : {}),
188
- ...(discovery ? { discovery } : {}),
189
- onStage: (_stage, detail) => { if (spinner)
190
- spinner.text = detail; },
191
- });
192
- spinner?.succeed('MCP evidence collected');
193
- if (motionEnabled) {
194
- const elapsedMs = Date.now() - inspectionStartedAt;
195
- await playAnalysisPath(result, {
196
- durationMs: Math.max(4_200, DEFAULT_INSPECTION_WINDOW_MS - elapsedMs),
197
- });
198
- }
199
- if (!options.noReport) {
200
- const reportPath = await writeHtmlReport(result, options.output);
201
- result.reportPath = reportPath;
202
- }
203
- if (options.json) {
204
- process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
205
- return;
206
- }
207
- const renderedAudit = `${renderAudit(result)}\n`;
208
- if (motionEnabled)
209
- await streamTerminalText(renderedAudit);
210
- else
211
- process.stdout.write(renderedAudit);
212
- if (options.openReport && result.reportPath)
213
- await open(result.reportPath, { wait: false });
214
- }
215
- main().catch((error) => {
216
- const message = error instanceof Error ? error.message : String(error);
217
- process.stderr.write(`${chalk.red('slaunt audit failed:')} ${message}\n`);
218
- process.exitCode = 1;
219
- });
220
- //# 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"}