slaunt 0.1.17 → 0.1.19

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 +99 -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 +86 -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 +44 -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 +56 -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 +0,0 @@
1
- {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/explanation/local.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import type { ServerConfig, ServerProbe } from '../types.js';
2
- export declare function resolvedEnvironment(configured: Record<string, string>, inheritParentEnvironment?: boolean): Record<string, string>;
3
- export declare function expandEnvironment(value: string, allowSensitiveEnvironment?: boolean): string;
4
- export interface ProbeOptions {
5
- allowServerStarts: boolean;
6
- inheritParentEnvironment?: boolean;
7
- allowSensitiveEnvironment?: boolean;
8
- authorizeHttpServers?: boolean;
9
- authorizationTimeoutMs?: number;
10
- onAuthorizationRequired?: (server: ServerConfig) => void;
11
- openAuthorization?: (url: URL) => Promise<void>;
12
- timeoutMs?: number;
13
- concurrency?: number;
14
- }
15
- export declare function probeServers(servers: ServerConfig[], options: ProbeOptions): Promise<ServerProbe[]>;
16
- export declare function isDynamicLauncher(server: ServerConfig): boolean;
17
- export declare function isRecursiveSlauntLauncher(server: ServerConfig): boolean;
18
- //# sourceMappingURL=introspect.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"introspect.d.ts","sourceRoot":"","sources":["../../src/mcp/introspect.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAgB,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI3E,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,wBAAwB,UAAQ,GAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAID,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,yBAAyB,UAAQ,GAAG,MAAM,CAO1F;AA+ND,MAAM,WAAW,YAAY;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IACzD,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAoBzG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAG/D;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAYvE"}
@@ -1,236 +0,0 @@
1
- import { basename } from 'node:path';
2
- import { Client } from '@modelcontextprotocol/sdk/client/index.js';
3
- import { UnauthorizedError } from '@modelcontextprotocol/sdk/client/auth.js';
4
- import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
5
- import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
6
- import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
7
- import { PACKAGE_VERSION } from '../version.js';
8
- import { createOAuthSession } from './oauth.js';
9
- export function resolvedEnvironment(configured, inheritParentEnvironment = false) {
10
- if (!inheritParentEnvironment)
11
- return { ...configured };
12
- const inherited = Object.fromEntries(Object.entries(process.env).filter((entry) => typeof entry[1] === 'string'));
13
- return { ...inherited, ...configured };
14
- }
15
- const SENSITIVE_ENV_NAME = /(?:TOKEN|SECRET|KEY|PASSWORD|PASSWD|PRIVATE|CREDENTIAL|COOKIE|SESSION|AUTH|JWT|DATABASE_URL|CONNECTION_STRING)/i;
16
- export function expandEnvironment(value, allowSensitiveEnvironment = false) {
17
- return value.replace(/\$\{([A-Z_][A-Z0-9_]*)(?::-([^}]*))?\}/gi, (_match, name, fallback) => {
18
- if (SENSITIVE_ENV_NAME.test(name) && !allowSensitiveEnvironment) {
19
- throw new Error(`Sensitive environment expansion for ${name} is disabled; pass --allow-sensitive-env only for a trusted local probe`);
20
- }
21
- return process.env[name] ?? fallback ?? '';
22
- });
23
- }
24
- function expandConfiguredEnvironment(configured, allowSensitiveEnvironment) {
25
- return Object.fromEntries(Object.entries(configured).map(([name, value]) => [name, expandEnvironment(value, allowSensitiveEnvironment)]));
26
- }
27
- function redactedError(error, server) {
28
- let message = error instanceof Error ? error.message : String(error);
29
- for (const value of [...Object.values(server.env), ...Object.values(server.headers)]) {
30
- if (value.length >= 4)
31
- message = message.replaceAll(value, '[redacted]');
32
- }
33
- message = message
34
- .replace(/(bearer\s+)[a-z0-9._~+/=-]+/gi, '$1[redacted]')
35
- .replace(/([?&](?:token|key|secret|password)=)[^&\s]+/gi, '$1[redacted]');
36
- return message.slice(0, 300);
37
- }
38
- function isAuthenticationError(error) {
39
- if (error instanceof UnauthorizedError)
40
- return true;
41
- const message = error instanceof Error ? error.message : String(error);
42
- return /\b401\b|unauthori[sz]ed|authentication|authorization required|bearer|oauth/iu.test(message);
43
- }
44
- function asInputSchema(value) {
45
- return typeof value === 'object' && value !== null && !Array.isArray(value)
46
- ? value
47
- : undefined;
48
- }
49
- async function listAllTools(client, server) {
50
- const tools = [];
51
- let cursor;
52
- do {
53
- const response = await client.listTools(cursor ? { cursor } : undefined);
54
- for (const tool of response.tools) {
55
- const inputSchema = asInputSchema(tool.inputSchema);
56
- tools.push({
57
- serverId: server.id,
58
- serverName: server.name,
59
- client: server.client,
60
- clientLabel: server.clientLabel,
61
- name: tool.name,
62
- description: tool.description || '',
63
- ...(inputSchema ? { inputSchema } : {}),
64
- });
65
- }
66
- cursor = response.nextCursor;
67
- } while (cursor);
68
- return tools;
69
- }
70
- async function connectAndList(server, transport) {
71
- const client = new Client({ name: 'slaunt-audit', version: PACKAGE_VERSION }, { capabilities: {} });
72
- try {
73
- // The SDK's transport classes declare `sessionId?: string` while its shared
74
- // Transport interface is emitted without exact-optional compatibility.
75
- await client.connect(transport);
76
- return await listAllTools(client, server);
77
- }
78
- finally {
79
- await client.close().catch(() => undefined);
80
- }
81
- }
82
- async function withTimeout(operation, milliseconds, onTimeout) {
83
- let timer;
84
- const timeout = new Promise((_resolve, reject) => {
85
- timer = setTimeout(() => {
86
- void onTimeout().finally(() => reject(new Error(`MCP probe timed out after ${milliseconds} ms`)));
87
- }, milliseconds);
88
- });
89
- try {
90
- return await Promise.race([operation, timeout]);
91
- }
92
- finally {
93
- if (timer)
94
- clearTimeout(timer);
95
- }
96
- }
97
- async function probeServer(server, allowServerStarts, timeoutMs, inheritParentEnvironment, allowSensitiveEnvironment, authorizeHttpServers, authorizationTimeoutMs, onAuthorizationRequired, openAuthorization) {
98
- if (server.transport === 'stdio') {
99
- if (isRecursiveSlauntLauncher(server)) {
100
- return {
101
- serverId: server.id,
102
- status: 'skipped',
103
- tools: [],
104
- message: 'Skipped a Slaunt CLI launcher to prevent a recursive audit',
105
- };
106
- }
107
- if (!allowServerStarts) {
108
- return { serverId: server.id, status: 'skipped', tools: [], message: 'Local server start was not approved' };
109
- }
110
- if (!server.command)
111
- return { serverId: server.id, status: 'failed', tools: [], message: 'Missing stdio command' };
112
- try {
113
- const transport = new StdioClientTransport({
114
- command: expandEnvironment(server.command, allowSensitiveEnvironment),
115
- args: server.args.map((argument) => expandEnvironment(argument, allowSensitiveEnvironment)),
116
- env: resolvedEnvironment(expandConfiguredEnvironment(server.env, allowSensitiveEnvironment), inheritParentEnvironment),
117
- stderr: 'pipe',
118
- });
119
- const tools = await withTimeout(connectAndList(server, transport), timeoutMs, () => transport.close());
120
- return { serverId: server.id, status: 'ok', tools };
121
- }
122
- catch (error) {
123
- return { serverId: server.id, status: 'failed', tools: [], message: redactedError(error, server) };
124
- }
125
- }
126
- if ((server.transport === 'http' || server.transport === 'sse') && server.url) {
127
- let oauthSession;
128
- try {
129
- // HTTP/SSE probes may reach an untrusted remote server. Never expand
130
- // token/key/secret variables into a URL or header, even when a caller
131
- // explicitly allows sensitive values for a local stdio launch.
132
- const endpoint = new URL(expandEnvironment(server.url, false));
133
- const headers = Object.fromEntries(Object.entries(server.headers).map(([name, value]) => [name, expandEnvironment(value, false)]));
134
- const requestInit = { headers, redirect: 'error' };
135
- if (authorizeHttpServers) {
136
- oauthSession = await createOAuthSession(server, {
137
- ...(openAuthorization ? { openBrowser: openAuthorization } : {}),
138
- onAuthorizationRequired: () => onAuthorizationRequired?.(server),
139
- });
140
- }
141
- const makeTransport = (kind, provider) => {
142
- if (kind === 'sse') {
143
- return new SSEClientTransport(endpoint, {
144
- requestInit,
145
- ...(provider ? { authProvider: provider } : {}),
146
- });
147
- }
148
- return new StreamableHTTPClientTransport(endpoint, {
149
- requestInit,
150
- ...(provider ? { authProvider: provider } : {}),
151
- });
152
- };
153
- const connectRemote = async (transport, connectTimeoutMs = timeoutMs) => withTimeout(connectAndList(server, transport), connectTimeoutMs, () => transport.close());
154
- const connectWithAuth = async (kind) => {
155
- const firstTransport = makeTransport(kind, oauthSession?.provider);
156
- try {
157
- return await connectRemote(firstTransport, oauthSession ? authorizationTimeoutMs : timeoutMs);
158
- }
159
- catch (firstError) {
160
- if (!oauthSession || !oauthSession.wasAuthorizationStarted() || !isAuthenticationError(firstError)) {
161
- throw firstError;
162
- }
163
- const authorizationCode = await withTimeout(oauthSession.waitForCallback(), authorizationTimeoutMs, () => oauthSession.close());
164
- await withTimeout(firstTransport.finishAuth(authorizationCode), timeoutMs, () => firstTransport.close());
165
- await firstTransport.close();
166
- const authenticatedTransport = makeTransport(kind, oauthSession.provider);
167
- return connectRemote(authenticatedTransport);
168
- }
169
- };
170
- try {
171
- const tools = await connectWithAuth(server.transport === 'sse' ? 'sse' : 'http');
172
- return { serverId: server.id, status: 'ok', tools };
173
- }
174
- catch (firstError) {
175
- const message = redactedError(firstError, server);
176
- if (server.transport !== 'http' || !/4\d\d|sse|method|content[- ]type/i.test(message))
177
- throw firstError;
178
- const tools = await connectWithAuth('sse');
179
- return { serverId: server.id, status: 'ok', tools };
180
- }
181
- }
182
- catch (error) {
183
- return {
184
- serverId: server.id,
185
- status: 'failed',
186
- tools: [],
187
- ...(isAuthenticationError(error) || oauthSession?.wasAuthorizationStarted() ? { authRequired: true } : {}),
188
- message: redactedError(error, server),
189
- };
190
- }
191
- finally {
192
- await oauthSession?.close();
193
- }
194
- }
195
- return { serverId: server.id, status: 'skipped', tools: [], message: `Unsupported ${server.transport} transport` };
196
- }
197
- async function mapWithConcurrency(items, concurrency, mapper) {
198
- const results = new Array(items.length);
199
- let next = 0;
200
- async function worker() {
201
- while (true) {
202
- const index = next++;
203
- if (index >= items.length)
204
- return;
205
- const item = items[index];
206
- if (item !== undefined)
207
- results[index] = await mapper(item);
208
- }
209
- }
210
- await Promise.all(Array.from({ length: Math.min(concurrency, items.length) }, worker));
211
- return results;
212
- }
213
- export async function probeServers(servers, options) {
214
- // Browser authorization is deliberately serialized: it prevents multiple
215
- // sign-in windows and avoids racing the endpoint-scoped OAuth cache when the
216
- // same remote server is configured for more than one client.
217
- const concurrency = options.authorizeHttpServers ? 1 : options.concurrency || 4;
218
- return mapWithConcurrency(servers, concurrency, (server) => probeServer(server, options.allowServerStarts, options.timeoutMs || 8_000, options.inheritParentEnvironment === true, options.allowSensitiveEnvironment === true, options.authorizeHttpServers === true, options.authorizationTimeoutMs || 120_000, options.onAuthorizationRequired, options.openAuthorization));
219
- }
220
- export function isDynamicLauncher(server) {
221
- const command = server.command ? basename(server.command).toLowerCase() : '';
222
- return ['npx', 'uvx', 'docker', 'podman', 'bunx', 'pnpx'].includes(command);
223
- }
224
- export function isRecursiveSlauntLauncher(server) {
225
- const command = server.command ? basename(server.command).toLowerCase() : '';
226
- if (/^slaunt(?:\.cmd|\.exe)?$/.test(command))
227
- return true;
228
- if (['npx', 'bunx', 'pnpx'].includes(command)) {
229
- return server.args.some((argument) => /^slaunt(?:@[^/\s]+)?$/i.test(argument));
230
- }
231
- return server.args.some((argument) => {
232
- const normalized = argument.replaceAll('\\', '/');
233
- return /(?:^|\/)slaunt(?:-audit)?(?:\/.*)?\/(?:dist\/)?cli\.(?:c?js|mjs)$/i.test(normalized);
234
- });
235
- }
236
- //# sourceMappingURL=introspect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"introspect.js","sourceRoot":"","sources":["../../src/mcp/introspect.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import type { OAuthClientProvider } from '@modelcontextprotocol/sdk/client/auth.js';
2
- import type { ServerConfig } from '../types.js';
3
- export interface OAuthSession {
4
- provider: OAuthClientProvider;
5
- waitForCallback(): Promise<string>;
6
- close(): Promise<void>;
7
- wasAuthorizationStarted(): boolean;
8
- }
9
- export interface OAuthSessionOptions {
10
- openBrowser?: (url: URL) => Promise<void>;
11
- onAuthorizationRequired?: () => void;
12
- }
13
- export declare function createOAuthSession(server: ServerConfig, options?: OAuthSessionOptions): Promise<OAuthSession>;
14
- //# sourceMappingURL=oauth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/mcp/oauth.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAahD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,uBAAuB,IAAI,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC;CACtC;AAuMD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC,CAsEvH"}
package/dist/mcp/oauth.js DELETED
@@ -1,257 +0,0 @@
1
- import { createHash, randomUUID } from 'node:crypto';
2
- import { createServer } from 'node:http';
3
- import { chmod, mkdir, readFile, rename, unlink, writeFile } from 'node:fs/promises';
4
- import { homedir } from 'node:os';
5
- import { join } from 'node:path';
6
- import open from 'open';
7
- import { PACKAGE_VERSION } from '../version.js';
8
- const STORE_VERSION = 1;
9
- const CALLBACK_PATH = '/oauth/callback';
10
- function isRecord(value) {
11
- return typeof value === 'object' && value !== null && !Array.isArray(value);
12
- }
13
- function isClientInformation(value) {
14
- return isRecord(value) && typeof value.client_id === 'string' && value.client_id.length > 0;
15
- }
16
- function isTokens(value) {
17
- return isRecord(value)
18
- && typeof value.access_token === 'string'
19
- && value.access_token.length > 0
20
- && typeof value.token_type === 'string'
21
- && value.token_type.length > 0;
22
- }
23
- function hasRedirectUri(value, callbackUrl) {
24
- const record = value;
25
- const redirectUris = record.redirect_uris;
26
- if (!Array.isArray(redirectUris))
27
- return false;
28
- return redirectUris.some((uri) => String(uri) === callbackUrl);
29
- }
30
- function oauthDirectory() {
31
- const configured = process.env.SLAUNT_AUDIT_OAUTH_DIR;
32
- if (configured)
33
- return configured;
34
- const configHome = process.env.XDG_CONFIG_HOME || join(process.env.HOME || homedir(), '.config');
35
- return join(configHome, 'slaunt', 'oauth');
36
- }
37
- function storePath(endpoint) {
38
- const key = createHash('sha256').update(`${endpoint.origin}${endpoint.pathname}`).digest('hex');
39
- return join(oauthDirectory(), `${key}.json`);
40
- }
41
- async function readState(path) {
42
- try {
43
- const raw = JSON.parse(await readFile(path, 'utf8'));
44
- if (!isRecord(raw) || raw.version !== STORE_VERSION)
45
- return { version: STORE_VERSION };
46
- return {
47
- version: STORE_VERSION,
48
- ...(isClientInformation(raw.clientInformation) ? { clientInformation: raw.clientInformation } : {}),
49
- ...(isTokens(raw.tokens) ? { tokens: raw.tokens } : {}),
50
- ...(typeof raw.codeVerifier === 'string' && raw.codeVerifier.length > 0 ? { codeVerifier: raw.codeVerifier } : {}),
51
- };
52
- }
53
- catch {
54
- return { version: STORE_VERSION };
55
- }
56
- }
57
- async function writeState(path, state) {
58
- const directory = oauthDirectory();
59
- await mkdir(directory, { recursive: true, mode: 0o700 });
60
- await chmod(directory, 0o700).catch(() => undefined);
61
- const temporaryPath = `${path}.${process.pid}.${randomUUID()}.tmp`;
62
- try {
63
- await writeFile(temporaryPath, JSON.stringify(state), { encoding: 'utf8', mode: 0o600 });
64
- await chmod(temporaryPath, 0o600).catch(() => undefined);
65
- await rename(temporaryPath, path);
66
- await chmod(path, 0o600).catch(() => undefined);
67
- }
68
- finally {
69
- await unlink(temporaryPath).catch(() => undefined);
70
- }
71
- }
72
- function callbackPage(title, body) {
73
- return `<!doctype html><html><head><meta charset="utf-8"><title>${title}</title></head><body><p>${body}</p></body></html>`;
74
- }
75
- class FileOAuthProvider {
76
- callbackUrl;
77
- metadata;
78
- path;
79
- onAuthorizationRequired;
80
- stateData;
81
- oauthState = randomUUID();
82
- authorizationStarted = false;
83
- writeQueue = Promise.resolve();
84
- openBrowser;
85
- constructor(endpoint, callbackUrl, state, options) {
86
- this.callbackUrl = callbackUrl;
87
- this.path = storePath(endpoint);
88
- this.stateData = { ...state };
89
- if (this.stateData.clientInformation && !hasRedirectUri(this.stateData.clientInformation, callbackUrl)) {
90
- // The callback uses an ephemeral loopback port. Re-register a cached
91
- // OAuth client when its old redirect URI cannot receive this run's code.
92
- delete this.stateData.clientInformation;
93
- delete this.stateData.codeVerifier;
94
- }
95
- this.onAuthorizationRequired = options.onAuthorizationRequired;
96
- this.openBrowser = options.openBrowser || ((url) => open(url.toString(), { wait: false }).then(() => undefined));
97
- this.metadata = {
98
- redirect_uris: [callbackUrl],
99
- grant_types: ['authorization_code', 'refresh_token'],
100
- response_types: ['code'],
101
- token_endpoint_auth_method: 'none',
102
- client_name: 'Slaunt Audit',
103
- software_id: 'slaunt-audit',
104
- software_version: PACKAGE_VERSION,
105
- };
106
- }
107
- get redirectUrl() {
108
- return this.callbackUrl;
109
- }
110
- get clientMetadata() {
111
- return this.metadata;
112
- }
113
- state() {
114
- return this.oauthState;
115
- }
116
- async clientInformation() {
117
- return this.stateData.clientInformation;
118
- }
119
- async saveClientInformation(clientInformation) {
120
- this.stateData = { ...this.stateData, clientInformation };
121
- await this.persist();
122
- }
123
- async tokens() {
124
- return this.stateData.tokens;
125
- }
126
- async saveTokens(tokens) {
127
- const nextState = { ...this.stateData, tokens };
128
- delete nextState.codeVerifier;
129
- this.stateData = nextState;
130
- await this.persist();
131
- }
132
- async redirectToAuthorization(authorizationUrl) {
133
- this.authorizationStarted = true;
134
- this.onAuthorizationRequired?.();
135
- await this.openBrowser(authorizationUrl);
136
- }
137
- async saveCodeVerifier(codeVerifier) {
138
- this.stateData = { ...this.stateData, codeVerifier };
139
- await this.persist();
140
- }
141
- async codeVerifier() {
142
- if (!this.stateData.codeVerifier)
143
- throw new Error('OAuth code verifier is not available');
144
- return this.stateData.codeVerifier;
145
- }
146
- async invalidateCredentials(scope) {
147
- const nextState = { ...this.stateData };
148
- if (scope === 'all' || scope === 'client')
149
- delete nextState.clientInformation;
150
- if (scope === 'all' || scope === 'tokens')
151
- delete nextState.tokens;
152
- if (scope === 'all' || scope === 'verifier')
153
- delete nextState.codeVerifier;
154
- this.stateData = nextState;
155
- await this.persist();
156
- }
157
- wasAuthorizationStarted() {
158
- return this.authorizationStarted;
159
- }
160
- async persist() {
161
- const snapshot = this.stateData;
162
- this.writeQueue = this.writeQueue.then(() => writeState(this.path, snapshot));
163
- await this.writeQueue;
164
- }
165
- }
166
- function listen(server) {
167
- return new Promise((resolve, reject) => {
168
- const onError = (error) => {
169
- server.off('listening', onListening);
170
- reject(error);
171
- };
172
- const onListening = () => {
173
- server.off('error', onError);
174
- const address = server.address();
175
- if (!address || typeof address === 'string') {
176
- reject(new Error('OAuth callback listener did not expose a local port'));
177
- return;
178
- }
179
- resolve(address.port);
180
- };
181
- server.once('error', onError);
182
- server.once('listening', onListening);
183
- server.listen(0, '127.0.0.1');
184
- });
185
- }
186
- export async function createOAuthSession(server, options = {}) {
187
- if (!server.url)
188
- throw new Error('OAuth requires an MCP server URL');
189
- const endpoint = new URL(server.url);
190
- const storedState = await readState(storePath(endpoint));
191
- let resolveCallback;
192
- let rejectCallback;
193
- let callbackCode;
194
- let callbackError;
195
- const callbackPromise = new Promise((resolve, reject) => {
196
- resolveCallback = resolve;
197
- rejectCallback = reject;
198
- });
199
- const callbackServer = createServer((request, response) => {
200
- if (request.method !== 'GET' || new URL(request.url || '/', 'http://127.0.0.1').pathname !== CALLBACK_PATH) {
201
- response.writeHead(404, { 'content-type': 'text/html; charset=utf-8' });
202
- response.end(callbackPage('Slaunt Audit', 'Not found.'));
203
- return;
204
- }
205
- const callbackUrl = new URL(request.url || '/', 'http://127.0.0.1');
206
- const code = callbackUrl.searchParams.get('code');
207
- const error = callbackUrl.searchParams.get('error');
208
- const returnedState = callbackUrl.searchParams.get('state');
209
- const expectedState = provider?.state();
210
- if (!returnedState || returnedState !== expectedState) {
211
- const stateError = new Error('OAuth callback state did not match');
212
- callbackError = stateError;
213
- response.writeHead(400, { 'content-type': 'text/html; charset=utf-8' });
214
- response.end(callbackPage('Slaunt Audit', 'Authorization could not be verified. You can close this window.'));
215
- rejectCallback?.(stateError);
216
- return;
217
- }
218
- if (error) {
219
- const oauthError = new Error(`OAuth authorization failed: ${error}`);
220
- callbackError = oauthError;
221
- response.writeHead(400, { 'content-type': 'text/html; charset=utf-8' });
222
- response.end(callbackPage('Slaunt Audit', 'Authorization was not completed. You can close this window.'));
223
- rejectCallback?.(oauthError);
224
- return;
225
- }
226
- if (!code) {
227
- const codeError = new Error('OAuth callback did not include an authorization code');
228
- callbackError = codeError;
229
- response.writeHead(400, { 'content-type': 'text/html; charset=utf-8' });
230
- response.end(callbackPage('Slaunt Audit', 'Authorization did not return a code. You can close this window.'));
231
- rejectCallback?.(codeError);
232
- return;
233
- }
234
- callbackCode = code;
235
- response.writeHead(200, { 'content-type': 'text/html; charset=utf-8' });
236
- response.end(callbackPage('Slaunt Audit', 'Authorization complete. You can close this window.'));
237
- resolveCallback?.(code);
238
- });
239
- const port = await listen(callbackServer);
240
- const callbackUrl = `http://127.0.0.1:${port}${CALLBACK_PATH}`;
241
- const provider = new FileOAuthProvider(endpoint, callbackUrl, storedState, options);
242
- return {
243
- provider,
244
- waitForCallback: async () => {
245
- if (callbackCode)
246
- return callbackCode;
247
- if (callbackError)
248
- throw callbackError;
249
- return callbackPromise;
250
- },
251
- close: async () => {
252
- await new Promise((resolve) => callbackServer.close(() => resolve()));
253
- },
254
- wasAuthorizationStarted: () => provider.wasAuthorizationStarted(),
255
- };
256
- }
257
- //# sourceMappingURL=oauth.js.map