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,143 +0,0 @@
1
- import { randomBytes } from 'node:crypto';
2
- import { chmod, copyFile, lstat, mkdir, readFile, rename, stat, unlink, writeFile } from 'node:fs/promises';
3
- import { constants } from 'node:fs';
4
- import { dirname, join } from 'node:path';
5
- import { parse as parseToml } from 'smol-toml';
6
- import { defaultPathContext } from './paths.js';
7
- export const DEFAULT_SLAUNT_MCP_URL = 'https://central-mcp-ccr-production.up.railway.app/mcp';
8
- function targetsFor(clients, context) {
9
- const targets = [];
10
- if (clients.includes('claude-code')) {
11
- targets.push({ client: 'claude-code', path: join(context.home, '.claude.json'), format: 'json' });
12
- }
13
- if (clients.includes('claude-desktop')) {
14
- const path = context.platform === 'darwin'
15
- ? join(context.home, 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json')
16
- : context.platform === 'win32'
17
- ? join(context.appData || join(context.home, 'AppData', 'Roaming'), 'Claude', 'claude_desktop_config.json')
18
- : join(context.home, '.config', 'Claude', 'claude_desktop_config.json');
19
- targets.push({ client: 'claude-desktop', path, format: 'json' });
20
- }
21
- if (clients.includes('codex')) {
22
- targets.push({ client: 'codex', path: join(context.home, '.codex', 'config.toml'), format: 'toml' });
23
- }
24
- return targets;
25
- }
26
- async function readExisting(path) {
27
- try {
28
- const info = await lstat(path);
29
- if (info.isSymbolicLink())
30
- throw new Error('refusing to modify a symbolic link');
31
- if (!info.isFile())
32
- throw new Error('configuration path is not a regular file');
33
- if (info.size > 5 * 1024 * 1024)
34
- throw new Error('configuration file is unexpectedly large');
35
- return { content: await readFile(path, 'utf8'), mode: info.mode & 0o777 };
36
- }
37
- catch (error) {
38
- if (error && typeof error === 'object' && 'code' in error && error.code === 'ENOENT')
39
- return undefined;
40
- throw error;
41
- }
42
- }
43
- async function atomicWrite(path, content, mode) {
44
- await mkdir(dirname(path), { recursive: true, mode: 0o700 });
45
- const temporary = join(dirname(path), `.${randomBytes(12).toString('hex')}.slaunt.tmp`);
46
- try {
47
- await writeFile(temporary, content, { encoding: 'utf8', mode, flag: 'wx' });
48
- await rename(temporary, path);
49
- }
50
- finally {
51
- await unlink(temporary).catch(() => undefined);
52
- }
53
- }
54
- async function backup(path, mode) {
55
- const stamp = new Date().toISOString().replace(/[:.]/g, '-');
56
- const backupPath = `${path}.slaunt-backup-${stamp}`;
57
- await copyFile(path, backupPath, constants.COPYFILE_EXCL);
58
- await chmod(backupPath, mode);
59
- return backupPath;
60
- }
61
- function updateJson(content, url) {
62
- const parsed = content?.trim() ? JSON.parse(content) : {};
63
- if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
64
- throw new Error('configuration root must be a JSON object');
65
- }
66
- const config = parsed;
67
- const existingServers = config.mcpServers;
68
- if (existingServers !== undefined && (typeof existingServers !== 'object' || existingServers === null || Array.isArray(existingServers))) {
69
- throw new Error('mcpServers must be a JSON object');
70
- }
71
- const servers = (existingServers || {});
72
- if (servers.slaunt) {
73
- const existing = servers.slaunt;
74
- if (typeof existing === 'object' && existing !== null && !Array.isArray(existing) && existing.url === url) {
75
- return { content: content || '', present: true };
76
- }
77
- throw new Error('an MCP server named slaunt already exists with different settings');
78
- }
79
- config.mcpServers = { ...servers, slaunt: { type: 'http', url } };
80
- return { content: `${JSON.stringify(config, null, 2)}\n`, present: false };
81
- }
82
- function updateToml(content, url) {
83
- const source = content || '';
84
- const parsed = source.trim() ? parseToml(source) : {};
85
- if (parsed.mcp_servers !== undefined && (typeof parsed.mcp_servers !== 'object' || parsed.mcp_servers === null || Array.isArray(parsed.mcp_servers))) {
86
- throw new Error('mcp_servers must be a TOML table');
87
- }
88
- const servers = (parsed.mcp_servers || {});
89
- if (servers.slaunt) {
90
- const existing = servers.slaunt;
91
- if (typeof existing === 'object' && existing !== null && !Array.isArray(existing) && existing.url === url) {
92
- return { content: source, present: true };
93
- }
94
- throw new Error('an MCP server named slaunt already exists with different settings');
95
- }
96
- const separator = source.length === 0 || source.endsWith('\n\n') ? '' : source.endsWith('\n') ? '\n' : '\n\n';
97
- return {
98
- content: `${source}${separator}[mcp_servers.slaunt]\nenabled = true\nurl = ${JSON.stringify(url)}\n`,
99
- present: false,
100
- };
101
- }
102
- export async function installSlauntMcp(options) {
103
- const context = options.context || defaultPathContext();
104
- const url = options.url || process.env.SLAUNT_MCP_URL || DEFAULT_SLAUNT_MCP_URL;
105
- const parsedUrl = new URL(url);
106
- if (parsedUrl.protocol !== 'https:' && !(parsedUrl.protocol === 'http:' && ['localhost', '127.0.0.1', '::1'].includes(parsedUrl.hostname))) {
107
- throw new Error('Slaunt MCP URL must use HTTPS (HTTP is allowed only for localhost)');
108
- }
109
- const changes = [];
110
- for (const target of targetsFor([...new Set(options.clients)], context)) {
111
- try {
112
- const existing = await readExisting(target.path);
113
- const updated = target.format === 'json'
114
- ? updateJson(existing?.content, url)
115
- : updateToml(existing?.content, url);
116
- if (updated.present) {
117
- changes.push({ client: target.client, path: target.path, status: 'already-present' });
118
- continue;
119
- }
120
- const backupPath = existing ? await backup(target.path, existing.mode) : undefined;
121
- await atomicWrite(target.path, updated.content, existing?.mode || 0o600);
122
- const written = await stat(target.path);
123
- if (!written.isFile())
124
- throw new Error('atomic configuration write did not produce a regular file');
125
- changes.push({
126
- client: target.client,
127
- path: target.path,
128
- status: 'installed',
129
- ...(backupPath ? { backupPath } : {}),
130
- });
131
- }
132
- catch (error) {
133
- changes.push({
134
- client: target.client,
135
- path: target.path,
136
- status: 'failed',
137
- message: error instanceof Error ? error.message : 'unknown installation error',
138
- });
139
- }
140
- }
141
- return changes;
142
- }
143
- //# sourceMappingURL=install.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/config/install.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import type { ClientId } from '../types.js';
2
- export interface PathContext {
3
- home: string;
4
- cwd: string;
5
- platform: NodeJS.Platform;
6
- appData?: string;
7
- }
8
- export interface ConfigCandidate {
9
- client: ClientId;
10
- path: string;
11
- scope: 'user' | 'project' | 'desktop' | 'custom';
12
- format: 'json' | 'toml';
13
- /**
14
- * Claude Code stores project-scoped MCP definitions inside ~/.claude.json.
15
- * Keep the effective cwd on the candidate so the parser can select only
16
- * the active project entry instead of treating stale project history as
17
- * current access.
18
- */
19
- projectPath?: string;
20
- }
21
- export declare function defaultPathContext(): PathContext;
22
- export declare function candidateConfigPaths(context?: PathContext): ConfigCandidate[];
23
- export declare function existingCandidates(candidates: ConfigCandidate[]): Promise<ConfigCandidate[]>;
24
- //# sourceMappingURL=paths.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACjD,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,kBAAkB,IAAI,WAAW,CAQhD;AAmBD,wBAAgB,oBAAoB,CAAC,OAAO,cAAuB,GAAG,eAAe,EAAE,CAkDtF;AAED,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAalG"}
@@ -1,90 +0,0 @@
1
- import { access, stat } from 'node:fs/promises';
2
- import { constants } from 'node:fs';
3
- import { dirname, join, parse, resolve } from 'node:path';
4
- export function defaultPathContext() {
5
- const home = process.env.SLAUNT_AUDIT_HOME || process.env.HOME || process.cwd();
6
- return {
7
- home: resolve(home),
8
- cwd: resolve(process.env.SLAUNT_AUDIT_CWD || process.cwd()),
9
- platform: process.env.SLAUNT_AUDIT_PLATFORM || process.platform,
10
- ...(process.env.APPDATA ? { appData: process.env.APPDATA } : {}),
11
- };
12
- }
13
- function ancestorDirectories(start, stopAt) {
14
- const directories = [];
15
- let current = resolve(start);
16
- const stop = resolve(stopAt);
17
- const root = parse(current).root;
18
- while (true) {
19
- directories.push(current);
20
- if (current === stop || current === root)
21
- break;
22
- const parent = dirname(current);
23
- if (parent === current)
24
- break;
25
- current = parent;
26
- }
27
- return directories;
28
- }
29
- export function candidateConfigPaths(context = defaultPathContext()) {
30
- const candidates = [
31
- {
32
- client: 'claude-code',
33
- path: join(context.home, '.claude.json'),
34
- scope: 'user',
35
- format: 'json',
36
- projectPath: resolve(context.cwd),
37
- },
38
- { client: 'codex', path: join(context.home, '.codex', 'config.toml'), scope: 'user', format: 'toml' },
39
- ];
40
- if (context.platform === 'darwin') {
41
- candidates.push({
42
- client: 'claude-desktop',
43
- path: join(context.home, 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json'),
44
- scope: 'desktop',
45
- format: 'json',
46
- });
47
- }
48
- else if (context.platform === 'win32') {
49
- const appData = context.appData || join(context.home, 'AppData', 'Roaming');
50
- candidates.push({
51
- client: 'claude-desktop',
52
- path: join(appData, 'Claude', 'claude_desktop_config.json'),
53
- scope: 'desktop',
54
- format: 'json',
55
- });
56
- }
57
- else {
58
- candidates.push({
59
- client: 'claude-desktop',
60
- path: join(context.home, '.config', 'Claude', 'claude_desktop_config.json'),
61
- scope: 'desktop',
62
- format: 'json',
63
- });
64
- }
65
- for (const directory of ancestorDirectories(context.cwd, context.home)) {
66
- candidates.push({ client: 'claude-code', path: join(directory, '.mcp.json'), scope: 'project', format: 'json' }, { client: 'codex', path: join(directory, '.codex', 'config.toml'), scope: 'project', format: 'toml' });
67
- }
68
- const seen = new Set();
69
- return candidates.filter((candidate) => {
70
- const key = `${candidate.client}:${candidate.path}`;
71
- if (seen.has(key))
72
- return false;
73
- seen.add(key);
74
- return true;
75
- });
76
- }
77
- export async function existingCandidates(candidates) {
78
- const checks = await Promise.all(candidates.map(async (candidate) => {
79
- try {
80
- await access(candidate.path, constants.R_OK);
81
- const metadata = await stat(candidate.path);
82
- return metadata.isFile() && metadata.size <= 5 * 1024 * 1024 ? candidate : undefined;
83
- }
84
- catch {
85
- return undefined;
86
- }
87
- }));
88
- return checks.filter((candidate) => candidate !== undefined);
89
- }
90
- //# sourceMappingURL=paths.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwB1D,MAAM,UAAU,kBAAkB;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAChF,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;QACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC3D,QAAQ,EAAG,OAAO,CAAC,GAAG,CAAC,qBAAqD,IAAI,OAAO,CAAC,QAAQ;QAChG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa,EAAE,MAAc;IACxD,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IAEjC,OAAO,IAAI,EAAE,CAAC;QACZ,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI;YAAE,MAAM;QAChD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,OAAO;YAAE,MAAM;QAC9B,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAO,GAAG,kBAAkB,EAAE;IACjE,MAAM,UAAU,GAAsB;QACpC;YACE,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC;YACxC,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;SAClC;QACD,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;KACtG,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,UAAU,CAAC,IAAI,CAAC;YACd,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,4BAA4B,CAAC;YAClG,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC5E,UAAU,CAAC,IAAI,CAAC;YACd,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,4BAA4B,CAAC;YAC3D,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,IAAI,CAAC;YACd,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC;YAC3E,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACvE,UAAU,CAAC,IAAI,CACb,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAC/F,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CACtG,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAA6B;IACpE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5C,OAAO,QAAQ,CAAC,MAAM,EAAE,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAgC,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;AAC7F,CAAC"}
package/dist/demo.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import type { DiscoveredConfiguration, ServerProbe } from './types.js';
2
- export declare function demoDiscovery(): DiscoveredConfiguration;
3
- export declare function demoProbes(): ServerProbe[];
4
- //# sourceMappingURL=demo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAgB,WAAW,EAAE,MAAM,YAAY,CAAC;AA8ErF,wBAAgB,aAAa,IAAI,uBAAuB,CAUvD;AAED,wBAAgB,UAAU,IAAI,WAAW,EAAE,CAsB1C"}
package/dist/demo.js DELETED
@@ -1,99 +0,0 @@
1
- function server(id, client, clientLabel, name, transport = 'stdio') {
2
- return {
3
- id,
4
- client,
5
- clientLabel,
6
- name,
7
- transport,
8
- sourcePath: client === 'codex' ? '~/.codex/config.toml' : '~/.claude.json',
9
- scope: 'user',
10
- ...(transport === 'stdio' ? { command: 'demo-mcp' } : { url: 'https://example.invalid/mcp' }),
11
- args: [],
12
- env: {},
13
- envKeys: [],
14
- headers: {},
15
- headerKeys: [],
16
- enabled: true,
17
- };
18
- }
19
- const servers = [
20
- server('claude-github', 'claude-code', 'Claude Code', 'github'),
21
- server('codex-github', 'codex', 'Codex', 'github'),
22
- server('claude-railway', 'claude-code', 'Claude Code', 'railway', 'http'),
23
- server('claude-filesystem', 'claude-code', 'Claude Code', 'filesystem'),
24
- server('codex-filesystem', 'codex', 'Codex', 'filesystem'),
25
- server('claude-shell', 'claude-code', 'Claude Code', 'shell'),
26
- server('codex-shell', 'codex', 'Codex', 'shell'),
27
- server('codex-secrets', 'codex', 'Codex', 'secrets'),
28
- ];
29
- function probe(config, tools) {
30
- return {
31
- serverId: config.id,
32
- status: 'ok',
33
- tools: tools.map(([name, description]) => ({
34
- serverId: config.id,
35
- serverName: config.name,
36
- client: config.client,
37
- clientLabel: config.clientLabel,
38
- name,
39
- description,
40
- inputSchema: { type: 'object', properties: {} },
41
- })),
42
- };
43
- }
44
- const githubTools = [
45
- ['list_repositories', 'List repositories visible to the authenticated user'],
46
- ['get_file', 'Get a repository file'],
47
- ['search_code', 'Search source code'],
48
- ['create_file', 'Create a repository file'],
49
- ['update_file', 'Update a repository file'],
50
- ['create_pull_request', 'Create a pull request'],
51
- ['merge_pull_request', 'Merge a pull request'],
52
- ];
53
- const filesystemTools = [
54
- ['list_files', 'List files in an allowed directory'],
55
- ['read_file', 'Read a local file'],
56
- ['write_file', 'Write a local file'],
57
- ['edit_file', 'Edit a local file'],
58
- ['delete_file', 'Delete a local file'],
59
- ];
60
- const shellTools = [
61
- ['exec_command', 'Execute a shell command'],
62
- ['run_command', 'Run a command in the workspace'],
63
- ['list_processes', 'List running processes'],
64
- ];
65
- export function demoDiscovery() {
66
- return {
67
- clients: [
68
- { id: 'claude-code', label: 'Claude Code', detected: true, sources: ['~/.claude.json'] },
69
- { id: 'claude-desktop', label: 'Claude Desktop', detected: false, sources: [] },
70
- { id: 'codex', label: 'Codex', detected: true, sources: ['~/.codex/config.toml'] },
71
- ],
72
- servers,
73
- warnings: [],
74
- };
75
- }
76
- export function demoProbes() {
77
- return [
78
- probe(servers[0], githubTools),
79
- probe(servers[1], githubTools),
80
- probe(servers[2], [
81
- ['list_services', 'List Railway services'],
82
- ['get_deployment', 'Get deployment details'],
83
- ['deploy_service', 'Deploy a service to production'],
84
- ['list_variables', 'List configured variable names'],
85
- ['trigger_job', 'Trigger a configured Railway job'],
86
- ]),
87
- probe(servers[3], [...filesystemTools, ['sync', 'Synchronize an internal workspace']]),
88
- probe(servers[4], [...filesystemTools, ['company_data.query', 'Run a proprietary company lookup']]),
89
- probe(servers[5], [...shellTools, ['internal.run_workflow', 'Run an internal workflow']]),
90
- probe(servers[6], [...shellTools, ['admin.execute', 'Execute an internal administrative action']]),
91
- probe(servers[7], [
92
- ['get_secret', 'Get a credential'],
93
- ['list_secrets', 'List credential names'],
94
- ['read_credential', 'Read a stored credential'],
95
- ['rotate_secret', 'Rotate a stored credential'],
96
- ]),
97
- ];
98
- }
99
- //# sourceMappingURL=demo.js.map
package/dist/demo.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import type { ServerConfig, ServerExplanation, ServerProbe } from '../types.js';
2
- export declare const DEFAULT_LOCAL_MODEL = "llama3.2:1b";
3
- export declare const DEFAULT_LOCAL_LLM_URL = "http://127.0.0.1:11434/api/generate";
4
- export declare const BUNDLED_LOCAL_MODEL = "TinyLlama 1.1B Chat IQ2_XXS (npm-bundled)";
5
- export type BundledGenerate = (prompt: string, timeoutMs: number) => Promise<string>;
6
- export interface LocalExplainerOptions {
7
- enabled?: boolean;
8
- model?: string;
9
- url?: string;
10
- timeoutMs?: number;
11
- concurrency?: number;
12
- fetchImpl?: typeof fetch;
13
- /** Test seam for the bundled runtime; production uses node-llama-cpp. */
14
- bundledGenerate?: BundledGenerate;
15
- useBundledModel?: boolean;
16
- }
17
- interface ExplanationPromptOptions {
18
- maxTools?: number;
19
- maxDescriptionLength?: number;
20
- }
21
- export declare function buildExplanationPrompt(server: ServerConfig, probe: ServerProbe, options?: ExplanationPromptOptions): string;
22
- export declare function explainServers(servers: ServerConfig[], probes: ServerProbe[], options?: LocalExplainerOptions): Promise<ServerExplanation[]>;
23
- export {};
24
- //# sourceMappingURL=local.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/explanation/local.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAgB,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE9F,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AACjD,eAAO,MAAM,qBAAqB,wCAAwC,CAAC;AAC3E,eAAO,MAAM,mBAAmB,8CAA8C,CAAC;AA4D/E,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAErF,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,yEAAyE;IACzE,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA8HD,UAAU,wBAAwB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,wBAA6B,GACrC,MAAM,CAoBR;AA8fD,wBAAsB,cAAc,CAClC,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,WAAW,EAAE,EACrB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAuC9B"}