@dotsetlabs/tollgate 0.1.0

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 (215) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +885 -0
  3. package/dist/analyzers/filesystem.d.ts +26 -0
  4. package/dist/analyzers/filesystem.d.ts.map +1 -0
  5. package/dist/analyzers/filesystem.js +284 -0
  6. package/dist/analyzers/filesystem.js.map +1 -0
  7. package/dist/analyzers/http.d.ts +90 -0
  8. package/dist/analyzers/http.d.ts.map +1 -0
  9. package/dist/analyzers/http.js +433 -0
  10. package/dist/analyzers/http.js.map +1 -0
  11. package/dist/analyzers/index.d.ts +101 -0
  12. package/dist/analyzers/index.d.ts.map +1 -0
  13. package/dist/analyzers/index.js +342 -0
  14. package/dist/analyzers/index.js.map +1 -0
  15. package/dist/analyzers/loader.d.ts +114 -0
  16. package/dist/analyzers/loader.d.ts.map +1 -0
  17. package/dist/analyzers/loader.js +184 -0
  18. package/dist/analyzers/loader.js.map +1 -0
  19. package/dist/analyzers/prompt-injection.d.ts +95 -0
  20. package/dist/analyzers/prompt-injection.d.ts.map +1 -0
  21. package/dist/analyzers/prompt-injection.js +725 -0
  22. package/dist/analyzers/prompt-injection.js.map +1 -0
  23. package/dist/analyzers/sdk.d.ts +230 -0
  24. package/dist/analyzers/sdk.d.ts.map +1 -0
  25. package/dist/analyzers/sdk.js +283 -0
  26. package/dist/analyzers/sdk.js.map +1 -0
  27. package/dist/analyzers/shell.d.ts +20 -0
  28. package/dist/analyzers/shell.d.ts.map +1 -0
  29. package/dist/analyzers/shell.js +297 -0
  30. package/dist/analyzers/shell.js.map +1 -0
  31. package/dist/analyzers/sql.d.ts +37 -0
  32. package/dist/analyzers/sql.d.ts.map +1 -0
  33. package/dist/analyzers/sql.js +455 -0
  34. package/dist/analyzers/sql.js.map +1 -0
  35. package/dist/analyzers/types.d.ts +117 -0
  36. package/dist/analyzers/types.d.ts.map +1 -0
  37. package/dist/analyzers/types.js +46 -0
  38. package/dist/analyzers/types.js.map +1 -0
  39. package/dist/approval/interactive.d.ts +72 -0
  40. package/dist/approval/interactive.d.ts.map +1 -0
  41. package/dist/approval/interactive.js +550 -0
  42. package/dist/approval/interactive.js.map +1 -0
  43. package/dist/approval/terminal.d.ts +59 -0
  44. package/dist/approval/terminal.d.ts.map +1 -0
  45. package/dist/approval/terminal.js +238 -0
  46. package/dist/approval/terminal.js.map +1 -0
  47. package/dist/approval/types.d.ts +66 -0
  48. package/dist/approval/types.d.ts.map +1 -0
  49. package/dist/approval/types.js +2 -0
  50. package/dist/approval/types.js.map +1 -0
  51. package/dist/audit/exporter.d.ts +138 -0
  52. package/dist/audit/exporter.d.ts.map +1 -0
  53. package/dist/audit/exporter.js +366 -0
  54. package/dist/audit/exporter.js.map +1 -0
  55. package/dist/audit/logger.d.ts +156 -0
  56. package/dist/audit/logger.d.ts.map +1 -0
  57. package/dist/audit/logger.js +406 -0
  58. package/dist/audit/logger.js.map +1 -0
  59. package/dist/audit/redaction.d.ts +110 -0
  60. package/dist/audit/redaction.d.ts.map +1 -0
  61. package/dist/audit/redaction.js +307 -0
  62. package/dist/audit/redaction.js.map +1 -0
  63. package/dist/audit/schema.d.ts +76 -0
  64. package/dist/audit/schema.d.ts.map +1 -0
  65. package/dist/audit/schema.js +122 -0
  66. package/dist/audit/schema.js.map +1 -0
  67. package/dist/cli/commands/doctor.d.ts +34 -0
  68. package/dist/cli/commands/doctor.d.ts.map +1 -0
  69. package/dist/cli/commands/doctor.js +431 -0
  70. package/dist/cli/commands/doctor.js.map +1 -0
  71. package/dist/cli/commands/export.d.ts +18 -0
  72. package/dist/cli/commands/export.d.ts.map +1 -0
  73. package/dist/cli/commands/export.js +63 -0
  74. package/dist/cli/commands/export.js.map +1 -0
  75. package/dist/cli/commands/init.d.ts +12 -0
  76. package/dist/cli/commands/init.d.ts.map +1 -0
  77. package/dist/cli/commands/init.js +102 -0
  78. package/dist/cli/commands/init.js.map +1 -0
  79. package/dist/cli/commands/logs.d.ts +11 -0
  80. package/dist/cli/commands/logs.d.ts.map +1 -0
  81. package/dist/cli/commands/logs.js +60 -0
  82. package/dist/cli/commands/logs.js.map +1 -0
  83. package/dist/cli/commands/scan.d.ts +29 -0
  84. package/dist/cli/commands/scan.d.ts.map +1 -0
  85. package/dist/cli/commands/scan.js +251 -0
  86. package/dist/cli/commands/scan.js.map +1 -0
  87. package/dist/cli/commands/serve.d.ts +26 -0
  88. package/dist/cli/commands/serve.d.ts.map +1 -0
  89. package/dist/cli/commands/serve.js +424 -0
  90. package/dist/cli/commands/serve.js.map +1 -0
  91. package/dist/cli/commands/start.d.ts +20 -0
  92. package/dist/cli/commands/start.d.ts.map +1 -0
  93. package/dist/cli/commands/start.js +82 -0
  94. package/dist/cli/commands/start.js.map +1 -0
  95. package/dist/cli/commands/stats.d.ts +10 -0
  96. package/dist/cli/commands/stats.d.ts.map +1 -0
  97. package/dist/cli/commands/stats.js +42 -0
  98. package/dist/cli/commands/stats.js.map +1 -0
  99. package/dist/cli/commands/templates.d.ts +26 -0
  100. package/dist/cli/commands/templates.d.ts.map +1 -0
  101. package/dist/cli/commands/templates.js +221 -0
  102. package/dist/cli/commands/templates.js.map +1 -0
  103. package/dist/cli/commands/validate.d.ts +12 -0
  104. package/dist/cli/commands/validate.d.ts.map +1 -0
  105. package/dist/cli/commands/validate.js +107 -0
  106. package/dist/cli/commands/validate.js.map +1 -0
  107. package/dist/cli/commands/wrap.d.ts +19 -0
  108. package/dist/cli/commands/wrap.d.ts.map +1 -0
  109. package/dist/cli/commands/wrap.js +59 -0
  110. package/dist/cli/commands/wrap.js.map +1 -0
  111. package/dist/cli/index.d.ts +17 -0
  112. package/dist/cli/index.d.ts.map +1 -0
  113. package/dist/cli/index.js +202 -0
  114. package/dist/cli/index.js.map +1 -0
  115. package/dist/cli/ui.d.ts +139 -0
  116. package/dist/cli/ui.d.ts.map +1 -0
  117. package/dist/cli/ui.js +271 -0
  118. package/dist/cli/ui.js.map +1 -0
  119. package/dist/constants.d.ts +33 -0
  120. package/dist/constants.d.ts.map +1 -0
  121. package/dist/constants.js +54 -0
  122. package/dist/constants.js.map +1 -0
  123. package/dist/errors.d.ts +28 -0
  124. package/dist/errors.d.ts.map +1 -0
  125. package/dist/errors.js +37 -0
  126. package/dist/errors.js.map +1 -0
  127. package/dist/index.d.ts +49 -0
  128. package/dist/index.d.ts.map +1 -0
  129. package/dist/index.js +82 -0
  130. package/dist/index.js.map +1 -0
  131. package/dist/orchestrator/index.d.ts +11 -0
  132. package/dist/orchestrator/index.d.ts.map +1 -0
  133. package/dist/orchestrator/index.js +10 -0
  134. package/dist/orchestrator/index.js.map +1 -0
  135. package/dist/orchestrator/manager.d.ts +127 -0
  136. package/dist/orchestrator/manager.d.ts.map +1 -0
  137. package/dist/orchestrator/manager.js +498 -0
  138. package/dist/orchestrator/manager.js.map +1 -0
  139. package/dist/orchestrator/types.d.ts +141 -0
  140. package/dist/orchestrator/types.d.ts.map +1 -0
  141. package/dist/orchestrator/types.js +9 -0
  142. package/dist/orchestrator/types.js.map +1 -0
  143. package/dist/policy/engine.d.ts +55 -0
  144. package/dist/policy/engine.d.ts.map +1 -0
  145. package/dist/policy/engine.js +288 -0
  146. package/dist/policy/engine.js.map +1 -0
  147. package/dist/policy/natural-language.d.ts +141 -0
  148. package/dist/policy/natural-language.d.ts.map +1 -0
  149. package/dist/policy/natural-language.js +552 -0
  150. package/dist/policy/natural-language.js.map +1 -0
  151. package/dist/policy/parser.d.ts +141 -0
  152. package/dist/policy/parser.d.ts.map +1 -0
  153. package/dist/policy/parser.js +314 -0
  154. package/dist/policy/parser.js.map +1 -0
  155. package/dist/policy/types.d.ts +428 -0
  156. package/dist/policy/types.d.ts.map +1 -0
  157. package/dist/policy/types.js +32 -0
  158. package/dist/policy/types.js.map +1 -0
  159. package/dist/policy/validator.d.ts +72 -0
  160. package/dist/policy/validator.d.ts.map +1 -0
  161. package/dist/policy/validator.js +453 -0
  162. package/dist/policy/validator.js.map +1 -0
  163. package/dist/proxy/bridge.d.ts +84 -0
  164. package/dist/proxy/bridge.d.ts.map +1 -0
  165. package/dist/proxy/bridge.js +217 -0
  166. package/dist/proxy/bridge.js.map +1 -0
  167. package/dist/proxy/client.d.ts +130 -0
  168. package/dist/proxy/client.d.ts.map +1 -0
  169. package/dist/proxy/client.js +290 -0
  170. package/dist/proxy/client.js.map +1 -0
  171. package/dist/proxy/server.d.ts +111 -0
  172. package/dist/proxy/server.d.ts.map +1 -0
  173. package/dist/proxy/server.js +444 -0
  174. package/dist/proxy/server.js.map +1 -0
  175. package/dist/scanner.d.ts +91 -0
  176. package/dist/scanner.d.ts.map +1 -0
  177. package/dist/scanner.js +373 -0
  178. package/dist/scanner.js.map +1 -0
  179. package/dist/session/index.d.ts +32 -0
  180. package/dist/session/index.d.ts.map +1 -0
  181. package/dist/session/index.js +31 -0
  182. package/dist/session/index.js.map +1 -0
  183. package/dist/session/manager.d.ts +166 -0
  184. package/dist/session/manager.d.ts.map +1 -0
  185. package/dist/session/manager.js +454 -0
  186. package/dist/session/manager.js.map +1 -0
  187. package/dist/session/sqlite-store.d.ts +54 -0
  188. package/dist/session/sqlite-store.d.ts.map +1 -0
  189. package/dist/session/sqlite-store.js +209 -0
  190. package/dist/session/sqlite-store.js.map +1 -0
  191. package/dist/session/types.d.ts +179 -0
  192. package/dist/session/types.d.ts.map +1 -0
  193. package/dist/session/types.js +38 -0
  194. package/dist/session/types.js.map +1 -0
  195. package/dist/templates.d.ts +64 -0
  196. package/dist/templates.d.ts.map +1 -0
  197. package/dist/templates.js +451 -0
  198. package/dist/templates.js.map +1 -0
  199. package/dist/utils/config.d.ts +57 -0
  200. package/dist/utils/config.d.ts.map +1 -0
  201. package/dist/utils/config.js +104 -0
  202. package/dist/utils/config.js.map +1 -0
  203. package/dist/utils/errors.d.ts +18 -0
  204. package/dist/utils/errors.d.ts.map +1 -0
  205. package/dist/utils/errors.js +35 -0
  206. package/dist/utils/errors.js.map +1 -0
  207. package/dist/utils/logger.d.ts +144 -0
  208. package/dist/utils/logger.d.ts.map +1 -0
  209. package/dist/utils/logger.js +300 -0
  210. package/dist/utils/logger.js.map +1 -0
  211. package/dist/wizard.d.ts +68 -0
  212. package/dist/wizard.d.ts.map +1 -0
  213. package/dist/wizard.js +395 -0
  214. package/dist/wizard.js.map +1 -0
  215. package/package.json +99 -0
package/dist/wizard.js ADDED
@@ -0,0 +1,395 @@
1
+ /**
2
+ * Interactive Init Wizard for Tollgate
3
+ *
4
+ * Provides a guided experience for creating tollgate.yaml configuration files.
5
+ * Uses native readline for terminal interaction.
6
+ */
7
+ import * as readline from 'node:readline';
8
+ import * as fs from 'node:fs';
9
+ import chalk from 'chalk';
10
+ /**
11
+ * Well-known MCP server templates.
12
+ */
13
+ export const SERVER_TEMPLATES = [
14
+ {
15
+ name: 'postgres',
16
+ displayName: 'PostgreSQL',
17
+ description: 'PostgreSQL database access via SQL queries',
18
+ command: 'npx',
19
+ args: ['-y', '@modelcontextprotocol/server-postgres'],
20
+ envVars: [
21
+ {
22
+ key: 'DATABASE_URL',
23
+ description: 'PostgreSQL connection string',
24
+ example: 'postgresql://user:pass@localhost/dbname',
25
+ },
26
+ ],
27
+ recommendedPolicies: {
28
+ read: ['query'],
29
+ write: ['execute'],
30
+ destructive: [],
31
+ },
32
+ analyzer: 'sql',
33
+ },
34
+ {
35
+ name: 'filesystem',
36
+ displayName: 'Filesystem',
37
+ description: 'Local filesystem access (read/write files)',
38
+ command: 'npx',
39
+ args: ['-y', '@anthropic/mcp-server-filesystem'],
40
+ recommendedPolicies: {
41
+ read: ['read_*', 'list_*', 'get_*'],
42
+ write: ['write_*', 'create_*', 'move_*'],
43
+ destructive: ['delete_*'],
44
+ },
45
+ analyzer: 'filesystem',
46
+ },
47
+ {
48
+ name: 'github',
49
+ displayName: 'GitHub',
50
+ description: 'GitHub repository operations',
51
+ command: 'npx',
52
+ args: ['-y', '@modelcontextprotocol/server-github'],
53
+ envVars: [
54
+ {
55
+ key: 'GITHUB_TOKEN',
56
+ description: 'GitHub personal access token',
57
+ example: 'ghp_xxxxxxxxxxxx',
58
+ },
59
+ ],
60
+ recommendedPolicies: {
61
+ read: ['get_*', 'list_*', 'search_*'],
62
+ write: ['create_*', 'update_*', 'push_*'],
63
+ destructive: ['delete_*'],
64
+ },
65
+ },
66
+ {
67
+ name: 'sqlite',
68
+ displayName: 'SQLite',
69
+ description: 'SQLite database access',
70
+ command: 'npx',
71
+ args: ['-y', '@modelcontextprotocol/server-sqlite'],
72
+ recommendedPolicies: {
73
+ read: ['query'],
74
+ write: ['execute'],
75
+ destructive: [],
76
+ },
77
+ analyzer: 'sql',
78
+ },
79
+ {
80
+ name: 'puppeteer',
81
+ displayName: 'Puppeteer (Web Browser)',
82
+ description: 'Web browsing and scraping via headless Chrome',
83
+ command: 'npx',
84
+ args: ['-y', '@anthropic/mcp-server-puppeteer'],
85
+ recommendedPolicies: {
86
+ read: ['screenshot', 'get_*', 'evaluate'],
87
+ write: ['navigate', 'click', 'type', 'fill', 'select'],
88
+ destructive: [],
89
+ },
90
+ analyzer: 'http',
91
+ },
92
+ {
93
+ name: 'fetch',
94
+ displayName: 'Fetch (HTTP Requests)',
95
+ description: 'Make HTTP requests to external APIs',
96
+ command: 'npx',
97
+ args: ['-y', '@anthropic/mcp-server-fetch'],
98
+ recommendedPolicies: {
99
+ read: ['get', 'fetch_*'],
100
+ write: ['post', 'put', 'patch'],
101
+ destructive: ['delete'],
102
+ },
103
+ analyzer: 'http',
104
+ },
105
+ {
106
+ name: 'custom',
107
+ displayName: 'Custom Server',
108
+ description: 'Configure a custom MCP server',
109
+ command: '',
110
+ args: [],
111
+ recommendedPolicies: {},
112
+ },
113
+ ];
114
+ export const POLICY_PRESETS = [
115
+ {
116
+ name: 'strict',
117
+ displayName: 'Strict',
118
+ description: 'Prompt for all operations, deny destructive',
119
+ readAction: 'prompt',
120
+ writeAction: 'prompt',
121
+ destructiveAction: 'deny',
122
+ },
123
+ {
124
+ name: 'balanced',
125
+ displayName: 'Balanced (Recommended)',
126
+ description: 'Allow reads, prompt for writes, deny destructive',
127
+ readAction: 'allow',
128
+ writeAction: 'prompt',
129
+ destructiveAction: 'deny',
130
+ },
131
+ {
132
+ name: 'permissive',
133
+ displayName: 'Permissive',
134
+ description: 'Allow reads, prompt for writes and destructive',
135
+ readAction: 'allow',
136
+ writeAction: 'prompt',
137
+ destructiveAction: 'prompt',
138
+ },
139
+ ];
140
+ /**
141
+ * Interactive terminal prompt utilities.
142
+ */
143
+ class TerminalPrompt {
144
+ rl;
145
+ constructor() {
146
+ let input;
147
+ let output;
148
+ try {
149
+ input = fs.createReadStream('/dev/tty');
150
+ output = fs.createWriteStream('/dev/tty');
151
+ }
152
+ catch {
153
+ input = process.stdin;
154
+ output = process.stderr;
155
+ }
156
+ this.rl = readline.createInterface({
157
+ input,
158
+ output,
159
+ terminal: true,
160
+ });
161
+ }
162
+ /**
163
+ * Prompts for text input.
164
+ */
165
+ async text(message, defaultValue) {
166
+ return new Promise((resolve) => {
167
+ const prompt = defaultValue
168
+ ? `${message} ${chalk.dim(`(${defaultValue})`)}: `
169
+ : `${message}: `;
170
+ console.error(chalk.cyan('?') + ' ' + prompt);
171
+ this.rl.question(' > ', (answer) => {
172
+ const value = answer.trim() || defaultValue || '';
173
+ resolve(value);
174
+ });
175
+ });
176
+ }
177
+ /**
178
+ * Prompts for selection from a list.
179
+ */
180
+ async select(message, options) {
181
+ return new Promise((resolve) => {
182
+ console.error('');
183
+ console.error(chalk.cyan('?') + ' ' + message);
184
+ console.error('');
185
+ options.forEach((opt, i) => {
186
+ const num = chalk.dim(`${i + 1}.`);
187
+ const name = chalk.white(opt.displayName);
188
+ const desc = chalk.dim(`- ${opt.description}`);
189
+ console.error(` ${num} ${name} ${desc}`);
190
+ });
191
+ console.error('');
192
+ this.rl.question(` Enter choice (1-${options.length}): `, (answer) => {
193
+ const index = parseInt(answer.trim(), 10) - 1;
194
+ const selected = options[index];
195
+ const defaultOption = options[0];
196
+ if (selected !== undefined) {
197
+ resolve(selected);
198
+ }
199
+ else if (defaultOption !== undefined) {
200
+ // Default to first option
201
+ console.error(chalk.yellow(` Invalid choice, using ${defaultOption.displayName}`));
202
+ resolve(defaultOption);
203
+ }
204
+ });
205
+ });
206
+ }
207
+ /**
208
+ * Prompts for yes/no confirmation.
209
+ */
210
+ async confirm(message, defaultValue = true) {
211
+ return new Promise((resolve) => {
212
+ const hint = defaultValue ? 'Y/n' : 'y/N';
213
+ console.error(chalk.cyan('?') + ' ' + message + ' ' + chalk.dim(`(${hint})`));
214
+ this.rl.question(' > ', (answer) => {
215
+ const normalized = answer.trim().toLowerCase();
216
+ if (normalized === '') {
217
+ resolve(defaultValue);
218
+ }
219
+ else if (normalized === 'y' || normalized === 'yes') {
220
+ resolve(true);
221
+ }
222
+ else {
223
+ resolve(false);
224
+ }
225
+ });
226
+ });
227
+ }
228
+ close() {
229
+ this.rl.close();
230
+ }
231
+ }
232
+ /**
233
+ * Runs the interactive init wizard.
234
+ */
235
+ export async function runWizard() {
236
+ const prompt = new TerminalPrompt();
237
+ const result = {
238
+ servers: [],
239
+ globalDefaults: {
240
+ action: 'prompt',
241
+ timeout: 60000,
242
+ },
243
+ };
244
+ try {
245
+ console.error('');
246
+ console.error(chalk.bold.cyan('━'.repeat(50)));
247
+ console.error(chalk.bold.cyan(' Welcome to Tollgate!'));
248
+ console.error(chalk.bold.cyan('━'.repeat(50)));
249
+ console.error('');
250
+ console.error(chalk.dim(" Let's configure your MCP server security policies."));
251
+ console.error('');
252
+ // Select server template
253
+ const template = await prompt.select('Which MCP server do you want to protect?', SERVER_TEMPLATES);
254
+ let serverName = template.name;
255
+ let command = template.command;
256
+ let args = [...template.args];
257
+ // Custom server configuration
258
+ if (template.name === 'custom') {
259
+ serverName = await prompt.text('Server name (for your reference)');
260
+ command = await prompt.text('Command to run the MCP server');
261
+ const argsStr = await prompt.text('Arguments (space-separated)', '');
262
+ args = argsStr ? argsStr.split(/\s+/) : [];
263
+ }
264
+ // Collect environment variables
265
+ const envValues = {};
266
+ if (template.envVars && template.envVars.length > 0) {
267
+ console.error('');
268
+ console.error(chalk.dim(' This server requires environment variables:'));
269
+ console.error('');
270
+ for (const envVar of template.envVars) {
271
+ const value = await prompt.text(`${envVar.key} ${chalk.dim(`(${envVar.description})`)}`, `\${${envVar.key}}`);
272
+ envValues[envVar.key] = value;
273
+ }
274
+ }
275
+ // Filesystem-specific: ask for root path
276
+ if (template.name === 'filesystem') {
277
+ console.error('');
278
+ const rootPath = await prompt.text('Root directory for filesystem access', './');
279
+ args.push(rootPath);
280
+ }
281
+ // Select policy preset
282
+ console.error('');
283
+ const policyPreset = await prompt.select('Choose a security policy preset:', POLICY_PRESETS);
284
+ // Add server to result
285
+ result.servers.push({
286
+ name: serverName,
287
+ template: { ...template, command, args },
288
+ envValues,
289
+ policyPreset,
290
+ });
291
+ // Ask about additional servers
292
+ console.error('');
293
+ const addMore = await prompt.confirm('Would you like to add another server?', false);
294
+ if (addMore) {
295
+ console.error(chalk.dim('\n (For additional servers, edit the generated config file.)'));
296
+ }
297
+ // Global defaults
298
+ console.error('');
299
+ console.error(chalk.dim(' Setting global defaults...'));
300
+ console.error('');
301
+ result.globalDefaults.action = 'prompt';
302
+ result.globalDefaults.timeout = 60000;
303
+ console.error('');
304
+ console.error(chalk.green.bold('✓ Configuration ready!'));
305
+ console.error('');
306
+ return result;
307
+ }
308
+ finally {
309
+ prompt.close();
310
+ }
311
+ }
312
+ /**
313
+ * Generates YAML configuration from wizard result.
314
+ */
315
+ export function generateConfig(result) {
316
+ const lines = [
317
+ '# Tollgate Configuration',
318
+ '# Generated by `tollgate init --interactive`',
319
+ '# https://github.com/dotsetlabs/tollgate',
320
+ '',
321
+ 'version: "1"',
322
+ '',
323
+ '# Default action when no policy matches',
324
+ 'defaults:',
325
+ ` action: ${result.globalDefaults.action}`,
326
+ ` timeout: ${result.globalDefaults.timeout}`,
327
+ '',
328
+ '# MCP Server configurations',
329
+ 'servers:',
330
+ ];
331
+ for (const server of result.servers) {
332
+ const { name, template, envValues, policyPreset } = server;
333
+ lines.push(` # ${template.displayName} server`);
334
+ lines.push(` ${name}:`);
335
+ lines.push(` command: "${template.command}"`);
336
+ if (template.args.length > 0) {
337
+ lines.push(` args: [${template.args.map((a) => `"${a}"`).join(', ')}]`);
338
+ }
339
+ // Environment variables
340
+ if (Object.keys(envValues).length > 0) {
341
+ lines.push(' env:');
342
+ for (const [key, value] of Object.entries(envValues)) {
343
+ lines.push(` ${key}: "${value}"`);
344
+ }
345
+ }
346
+ // Tool policies
347
+ lines.push(' tools:');
348
+ // Read operations
349
+ if (template.recommendedPolicies.read && template.recommendedPolicies.read.length > 0) {
350
+ for (const pattern of template.recommendedPolicies.read) {
351
+ lines.push(` # Read operations`);
352
+ lines.push(` "${pattern}":`);
353
+ lines.push(` action: ${policyPreset.readAction}`);
354
+ if (template.analyzer && policyPreset.readAction === 'allow') {
355
+ // For smart analysis, add analyzer config
356
+ lines.push(` # analyzer: ${template.analyzer}`);
357
+ }
358
+ }
359
+ }
360
+ // Write operations
361
+ if (template.recommendedPolicies.write && template.recommendedPolicies.write.length > 0) {
362
+ lines.push(' # Write operations');
363
+ for (const pattern of template.recommendedPolicies.write) {
364
+ lines.push(` "${pattern}":`);
365
+ lines.push(` action: ${policyPreset.writeAction}`);
366
+ if (template.analyzer) {
367
+ lines.push(` analyzer: ${template.analyzer}`);
368
+ lines.push(' risks:');
369
+ lines.push(' read: allow');
370
+ lines.push(' write: prompt');
371
+ lines.push(' destructive: deny');
372
+ lines.push(' dangerous: deny');
373
+ }
374
+ }
375
+ }
376
+ // Destructive operations
377
+ if (template.recommendedPolicies.destructive && template.recommendedPolicies.destructive.length > 0) {
378
+ lines.push(' # Destructive operations');
379
+ for (const pattern of template.recommendedPolicies.destructive) {
380
+ lines.push(` "${pattern}":`);
381
+ lines.push(` action: ${policyPreset.destructiveAction}`);
382
+ if (policyPreset.destructiveAction === 'deny') {
383
+ lines.push(' reason: "Destructive operations disabled for safety"');
384
+ }
385
+ }
386
+ }
387
+ // Catch-all
388
+ lines.push(' # Catch-all for unmatched tools');
389
+ lines.push(' "*":');
390
+ lines.push(' action: prompt');
391
+ lines.push('');
392
+ }
393
+ return lines.join('\n');
394
+ }
395
+ //# sourceMappingURL=wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../src/wizard.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,99 @@
1
+ {
2
+ "name": "@dotsetlabs/tollgate",
3
+ "version": "0.1.0",
4
+ "description": "Local-first MCP security proxy with policy-based access control for AI agents",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "bin": {
9
+ "tollgate": "./dist/cli/index.js"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "README.md",
14
+ "LICENSE"
15
+ ],
16
+ "exports": {
17
+ ".": {
18
+ "import": "./dist/index.js",
19
+ "types": "./dist/index.d.ts"
20
+ },
21
+ "./policy": {
22
+ "import": "./dist/policy/engine.js",
23
+ "types": "./dist/policy/engine.d.ts"
24
+ },
25
+ "./analyzers": {
26
+ "import": "./dist/analyzers/index.js",
27
+ "types": "./dist/analyzers/index.d.ts"
28
+ },
29
+ "./session": {
30
+ "import": "./dist/session/index.js",
31
+ "types": "./dist/session/index.d.ts"
32
+ }
33
+ },
34
+ "scripts": {
35
+ "build": "tsc && chmod +x dist/cli/index.js",
36
+ "dev": "tsc --watch",
37
+ "test": "vitest run",
38
+ "test:watch": "vitest",
39
+ "lint": "eslint src",
40
+ "clean": "rm -rf dist",
41
+ "docs": "typedoc",
42
+ "docs:mintlify": "npx tsx scripts/build-docs.ts",
43
+ "prepublishOnly": "npm run clean && npm run build && npm test"
44
+ },
45
+ "keywords": [
46
+ "mcp",
47
+ "model-context-protocol",
48
+ "ai-security",
49
+ "agent-security",
50
+ "access-control",
51
+ "tollgate",
52
+ "claude",
53
+ "llm",
54
+ "anthropic",
55
+ "policy-engine"
56
+ ],
57
+ "author": "Dotset Labs",
58
+ "license": "MIT",
59
+ "repository": {
60
+ "type": "git",
61
+ "url": "https://github.com/dotsetlabs/tollgate"
62
+ },
63
+ "homepage": "https://github.com/dotsetlabs/tollgate#readme",
64
+ "bugs": {
65
+ "url": "https://github.com/dotsetlabs/tollgate/issues"
66
+ },
67
+ "engines": {
68
+ "node": ">=20.0.0"
69
+ },
70
+ "dependencies": {
71
+ "@modelcontextprotocol/sdk": "^1.0.0",
72
+ "better-sqlite3": "^11.6.0",
73
+ "chalk": "^5.3.0",
74
+ "commander": "^12.1.0",
75
+ "js-yaml": "^4.1.0",
76
+ "minimatch": "^10.0.1",
77
+ "node-sql-parser": "^5.3.13",
78
+ "uuid": "^11.0.3",
79
+ "ws": "^8.16.0",
80
+ "yaml": "^2.4.0"
81
+ },
82
+ "devDependencies": {
83
+ "@eslint/js": "^9.0.0",
84
+ "@types/better-sqlite3": "^7.6.11",
85
+ "@types/js-yaml": "^4.0.9",
86
+ "@types/node": "^20.17.0",
87
+ "@types/uuid": "^10.0.0",
88
+ "@types/ws": "^8.5.10",
89
+ "@vitest/coverage-v8": "^2.1.9",
90
+ "eslint": "^9.0.0",
91
+ "fast-check": "^4.5.3",
92
+ "tsx": "^4.19.0",
93
+ "typedoc": "^0.28.0",
94
+ "typedoc-plugin-markdown": "^4.4.0",
95
+ "typescript": "^5.6.3",
96
+ "typescript-eslint": "^8.0.0",
97
+ "vitest": "^2.1.0"
98
+ }
99
+ }