@kya-os/create-mcpi-app 1.5.0 ā 1.6.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-cloudflare-mcpi-template.d.ts","sourceRoot":"","sources":["../../src/helpers/fetch-cloudflare-mcpi-template.ts"],"names":[],"mappings":"AAKA,UAAU,6BAA6B;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"fetch-cloudflare-mcpi-template.d.ts","sourceRoot":"","sources":["../../src/helpers/fetch-cloudflare-mcpi-template.ts"],"names":[],"mappings":"AAKA,UAAU,6BAA6B;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,IAAI,CAAC,CA+8Df"}
|
|
@@ -21,6 +21,8 @@ export async function fetchCloudflareMcpiTemplate(projectPath, options = {}) {
|
|
|
21
21
|
version: "0.1.0",
|
|
22
22
|
private: true,
|
|
23
23
|
scripts: {
|
|
24
|
+
setup: "node scripts/setup.js",
|
|
25
|
+
postinstall: "npm run setup",
|
|
24
26
|
deploy: "wrangler deploy",
|
|
25
27
|
dev: "wrangler dev",
|
|
26
28
|
start: "wrangler dev",
|
|
@@ -46,6 +48,9 @@ export async function fetchCloudflareMcpiTemplate(projectPath, options = {}) {
|
|
|
46
48
|
"kv:setup": "echo 'KV Commands: kv:create (create all), kv:list (list all), kv:keys-* (view keys), kv:delete (delete all), kv:reset (delete+recreate)'",
|
|
47
49
|
"cf-typegen": "wrangler types",
|
|
48
50
|
"type-check": "tsc --noEmit",
|
|
51
|
+
test: "vitest",
|
|
52
|
+
"test:watch": "vitest --watch",
|
|
53
|
+
"test:coverage": "vitest run --coverage",
|
|
49
54
|
},
|
|
50
55
|
dependencies: {
|
|
51
56
|
"@kya-os/mcp-i-cloudflare": "^1.3.2",
|
|
@@ -56,7 +61,10 @@ export async function fetchCloudflareMcpiTemplate(projectPath, options = {}) {
|
|
|
56
61
|
},
|
|
57
62
|
devDependencies: {
|
|
58
63
|
"@cloudflare/workers-types": "^4.20240925.0",
|
|
64
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
65
|
+
"miniflare": "^3.0.0",
|
|
59
66
|
"typescript": "^5.6.2",
|
|
67
|
+
"vitest": "^3.2.4",
|
|
60
68
|
"wrangler": "^4.42.2",
|
|
61
69
|
},
|
|
62
70
|
};
|
|
@@ -66,6 +74,500 @@ export async function fetchCloudflareMcpiTemplate(projectPath, options = {}) {
|
|
|
66
74
|
const srcDir = path.join(projectPath, "src");
|
|
67
75
|
const toolsDir = path.join(srcDir, "tools");
|
|
68
76
|
fs.ensureDirSync(toolsDir);
|
|
77
|
+
// Create scripts directory
|
|
78
|
+
const scriptsDir = path.join(projectPath, "scripts");
|
|
79
|
+
fs.ensureDirSync(scriptsDir);
|
|
80
|
+
// Create setup.js automation script
|
|
81
|
+
const setupScriptContent = `#!/usr/bin/env node
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Automated Setup Script for ${projectName}
|
|
85
|
+
*
|
|
86
|
+
* This script automates the tedious process of:
|
|
87
|
+
* 1. Checking/installing wrangler
|
|
88
|
+
* 2. Creating KV namespaces
|
|
89
|
+
* 3. Extracting namespace IDs
|
|
90
|
+
* 4. Updating wrangler.toml automatically
|
|
91
|
+
* 5. Setting up local development environment
|
|
92
|
+
*/
|
|
93
|
+
|
|
94
|
+
const { execSync } = require('child_process');
|
|
95
|
+
const fs = require('fs');
|
|
96
|
+
const path = require('path');
|
|
97
|
+
const readline = require('readline');
|
|
98
|
+
|
|
99
|
+
const rl = readline.createInterface({
|
|
100
|
+
input: process.stdin,
|
|
101
|
+
output: process.stdout
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
// Colors for terminal output
|
|
105
|
+
const colors = {
|
|
106
|
+
reset: '\\x1b[0m',
|
|
107
|
+
bright: '\\x1b[1m',
|
|
108
|
+
green: '\\x1b[32m',
|
|
109
|
+
yellow: '\\x1b[33m',
|
|
110
|
+
blue: '\\x1b[36m',
|
|
111
|
+
red: '\\x1b[31m'
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
function log(message, color = colors.reset) {
|
|
115
|
+
console.log(color + message + colors.reset);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async function setup() {
|
|
119
|
+
log('\\nš Starting automated setup for ${projectName}...\\n', colors.bright + colors.blue);
|
|
120
|
+
|
|
121
|
+
// 1. Check wrangler installation
|
|
122
|
+
try {
|
|
123
|
+
const wranglerVersion = execSync('wrangler --version', { encoding: 'utf-8' });
|
|
124
|
+
log('ā
Wrangler CLI detected: ' + wranglerVersion.trim(), colors.green);
|
|
125
|
+
} catch {
|
|
126
|
+
log('š¦ Wrangler CLI not found. Installing...', colors.yellow);
|
|
127
|
+
try {
|
|
128
|
+
execSync('npm install -g wrangler', { stdio: 'inherit' });
|
|
129
|
+
log('ā
Wrangler CLI installed successfully', colors.green);
|
|
130
|
+
} catch (error) {
|
|
131
|
+
log('ā Failed to install Wrangler. Please install manually: npm install -g wrangler', colors.red);
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// 2. Check if user is logged in to Cloudflare
|
|
137
|
+
try {
|
|
138
|
+
execSync('wrangler whoami', { encoding: 'utf-8' });
|
|
139
|
+
log('ā
Logged in to Cloudflare', colors.green);
|
|
140
|
+
} catch {
|
|
141
|
+
log('š Please log in to Cloudflare:', colors.yellow);
|
|
142
|
+
try {
|
|
143
|
+
execSync('wrangler login', { stdio: 'inherit' });
|
|
144
|
+
} catch (error) {
|
|
145
|
+
log('ā Login failed. Please run: wrangler login', colors.red);
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// 3. Create KV namespaces
|
|
151
|
+
log('\\nš Creating KV namespaces...\\n', colors.bright);
|
|
152
|
+
|
|
153
|
+
const namespaces = [
|
|
154
|
+
{ binding: '${className.toUpperCase()}_NONCE_CACHE', name: 'Nonce Cache', purpose: 'Replay attack prevention' },
|
|
155
|
+
{ binding: '${className.toUpperCase()}_PROOF_ARCHIVE', name: 'Proof Archive', purpose: 'Cryptographic proof storage' },
|
|
156
|
+
{ binding: '${className.toUpperCase()}_IDENTITY_STORAGE', name: 'Identity Storage', purpose: 'Agent identity persistence' },
|
|
157
|
+
{ binding: '${className.toUpperCase()}_DELEGATION_STORAGE', name: 'Delegation Storage', purpose: 'OAuth token storage' },
|
|
158
|
+
{ binding: '${className.toUpperCase()}_TOOL_PROTECTION_KV', name: 'Tool Protection', purpose: 'Permission caching' }
|
|
159
|
+
];
|
|
160
|
+
|
|
161
|
+
const kvIds = {};
|
|
162
|
+
const wranglerTomlPath = path.join(__dirname, '..', 'wrangler.toml');
|
|
163
|
+
|
|
164
|
+
for (const ns of namespaces) {
|
|
165
|
+
log(\`Creating \${ns.name} (\${ns.purpose})...\`, colors.blue);
|
|
166
|
+
|
|
167
|
+
try {
|
|
168
|
+
// Create the namespace
|
|
169
|
+
const output = execSync(\`wrangler kv namespace create "\${ns.binding}"\`, { encoding: 'utf-8' });
|
|
170
|
+
|
|
171
|
+
// Extract the ID from output
|
|
172
|
+
const idMatch = output.match(/id = "([^"]+)"/);
|
|
173
|
+
|
|
174
|
+
if (idMatch && idMatch[1]) {
|
|
175
|
+
kvIds[ns.binding] = idMatch[1];
|
|
176
|
+
log(\` ā
Created with ID: \${idMatch[1]}\`, colors.green);
|
|
177
|
+
} else {
|
|
178
|
+
// Try to get existing namespace
|
|
179
|
+
const listOutput = execSync('wrangler kv namespace list', { encoding: 'utf-8' });
|
|
180
|
+
const existingMatch = listOutput.match(new RegExp(\`\${ns.binding}.*?id":\\s*"([^"]+)"\`));
|
|
181
|
+
|
|
182
|
+
if (existingMatch && existingMatch[1]) {
|
|
183
|
+
kvIds[ns.binding] = existingMatch[1];
|
|
184
|
+
log(\` ā ļø Namespace already exists with ID: \${existingMatch[1]}\`, colors.yellow);
|
|
185
|
+
} else {
|
|
186
|
+
log(\` ā ļø Could not extract ID for \${ns.binding}. You may need to add it manually.\`, colors.yellow);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
} catch (error) {
|
|
190
|
+
// Check if namespace already exists
|
|
191
|
+
try {
|
|
192
|
+
const listOutput = execSync('wrangler kv namespace list', { encoding: 'utf-8' });
|
|
193
|
+
const existingMatch = listOutput.match(new RegExp(\`\${ns.binding}.*?id":\\s*"([^"]+)"\`));
|
|
194
|
+
|
|
195
|
+
if (existingMatch && existingMatch[1]) {
|
|
196
|
+
kvIds[ns.binding] = existingMatch[1];
|
|
197
|
+
log(\` ā ļø Namespace already exists with ID: \${existingMatch[1]}\`, colors.yellow);
|
|
198
|
+
} else {
|
|
199
|
+
log(\` ā Failed to create \${ns.binding}: \${error.message}\`, colors.red);
|
|
200
|
+
}
|
|
201
|
+
} catch (listError) {
|
|
202
|
+
log(\` ā Failed to create or find \${ns.binding}\`, colors.red);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// 4. Update wrangler.toml with KV IDs
|
|
208
|
+
if (Object.keys(kvIds).length > 0) {
|
|
209
|
+
log('\\nš Updating wrangler.toml with KV namespace IDs...\\n', colors.bright);
|
|
210
|
+
|
|
211
|
+
try {
|
|
212
|
+
let wranglerContent = fs.readFileSync(wranglerTomlPath, 'utf-8');
|
|
213
|
+
let updatedCount = 0;
|
|
214
|
+
|
|
215
|
+
for (const [binding, id] of Object.entries(kvIds)) {
|
|
216
|
+
// Match pattern: binding = "BINDING_NAME"\\nid = ""
|
|
217
|
+
const pattern = new RegExp(\`(binding = "\${binding}")\\\\s*\\\\nid = ""\`, 'g');
|
|
218
|
+
const replacement = \`$1\\nid = "\${id}"\`;
|
|
219
|
+
|
|
220
|
+
const newContent = wranglerContent.replace(pattern, replacement);
|
|
221
|
+
if (newContent !== wranglerContent) {
|
|
222
|
+
updatedCount++;
|
|
223
|
+
log(\` ā
Updated \${binding} with ID: \${id}\`, colors.green);
|
|
224
|
+
}
|
|
225
|
+
wranglerContent = newContent;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
fs.writeFileSync(wranglerTomlPath, wranglerContent);
|
|
229
|
+
log(\`\\nā
Updated \${updatedCount} namespace ID(s) in wrangler.toml\`, colors.green);
|
|
230
|
+
|
|
231
|
+
// Show remaining empty IDs if any
|
|
232
|
+
const emptyMatches = wranglerContent.match(/binding = "[^"]+"\s*\nid = ""/g);
|
|
233
|
+
if (emptyMatches) {
|
|
234
|
+
log('\\nā ļø Some namespace IDs still need to be added manually:', colors.yellow);
|
|
235
|
+
emptyMatches.forEach(match => {
|
|
236
|
+
const bindingMatch = match.match(/binding = "([^"]+)"/);
|
|
237
|
+
if (bindingMatch) {
|
|
238
|
+
log(\` - \${bindingMatch[1]}\`, colors.yellow);
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
} catch (error) {
|
|
243
|
+
log(\`ā Failed to update wrangler.toml: \${error.message}\`, colors.red);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// 5. Create .dev.vars from example if it doesn't exist
|
|
248
|
+
const devVarsPath = path.join(__dirname, '..', '.dev.vars');
|
|
249
|
+
const devVarsExamplePath = path.join(__dirname, '..', '.dev.vars.example');
|
|
250
|
+
|
|
251
|
+
if (!fs.existsSync(devVarsPath) && fs.existsSync(devVarsExamplePath)) {
|
|
252
|
+
log('\\nš Creating .dev.vars from example...', colors.blue);
|
|
253
|
+
fs.copyFileSync(devVarsExamplePath, devVarsPath);
|
|
254
|
+
log('ā
Created .dev.vars - Please update with your values', colors.green);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// 6. Check if identity needs to be generated
|
|
258
|
+
if (fs.existsSync(devVarsPath)) {
|
|
259
|
+
const devVarsContent = fs.readFileSync(devVarsPath, 'utf-8');
|
|
260
|
+
if (devVarsContent.includes('your-private-key-here')) {
|
|
261
|
+
log('\\nš Generating agent identity...', colors.blue);
|
|
262
|
+
try {
|
|
263
|
+
execSync('npx @kya-os/create-mcpi-app regenerate-identity', { stdio: 'inherit' });
|
|
264
|
+
log('ā
Identity generated successfully', colors.green);
|
|
265
|
+
} catch {
|
|
266
|
+
log('ā ļø Could not generate identity automatically. Run: npx @kya-os/create-mcpi-app regenerate-identity', colors.yellow);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// 7. Show next steps
|
|
272
|
+
log('\\n⨠Setup complete! Next steps:\\n', colors.bright + colors.green);
|
|
273
|
+
log('1. Review .dev.vars and add any missing values (AgentShield API key, etc.)', colors.blue);
|
|
274
|
+
log('2. Start development server: npm run dev', colors.blue);
|
|
275
|
+
log('3. Deploy to production: npm run deploy', colors.blue);
|
|
276
|
+
log('\\nUseful commands:', colors.bright);
|
|
277
|
+
log(' npm run dev - Start local development server');
|
|
278
|
+
log(' npm run deploy - Deploy to Cloudflare Workers');
|
|
279
|
+
log(' npm run kv:list - List all KV namespaces');
|
|
280
|
+
log(' wrangler secret put <KEY> - Set production secrets');
|
|
281
|
+
log('\\nFor more information, see the README.md file.\\n');
|
|
282
|
+
|
|
283
|
+
rl.close();
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
// Handle errors gracefully
|
|
287
|
+
process.on('unhandledRejection', (error) => {
|
|
288
|
+
log(\`\\nā Setup failed: \${error.message}\`, colors.red);
|
|
289
|
+
process.exit(1);
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
// Run the setup
|
|
293
|
+
setup().catch((error) => {
|
|
294
|
+
log(\`\\nā Setup failed: \${error.message}\`, colors.red);
|
|
295
|
+
process.exit(1);
|
|
296
|
+
});
|
|
297
|
+
`;
|
|
298
|
+
fs.writeFileSync(path.join(scriptsDir, "setup.js"), setupScriptContent);
|
|
299
|
+
// Make setup script executable
|
|
300
|
+
if (process.platform !== 'win32') {
|
|
301
|
+
fs.chmodSync(path.join(scriptsDir, "setup.js"), '755');
|
|
302
|
+
}
|
|
303
|
+
// Create tests directory
|
|
304
|
+
const testsDir = path.join(projectPath, "tests");
|
|
305
|
+
fs.ensureDirSync(testsDir);
|
|
306
|
+
// Create delegation test file
|
|
307
|
+
const delegationTestContent = `import { describe, test, expect, vi, beforeEach } from 'vitest';
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Delegation Management Tests
|
|
311
|
+
* Tests delegation verification, caching, and invalidation
|
|
312
|
+
*/
|
|
313
|
+
describe('Delegation Management', () => {
|
|
314
|
+
const mockDelegationStorage = {
|
|
315
|
+
get: vi.fn(),
|
|
316
|
+
put: vi.fn(),
|
|
317
|
+
delete: vi.fn()
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
const mockVerificationCache = {
|
|
321
|
+
get: vi.fn(),
|
|
322
|
+
put: vi.fn(),
|
|
323
|
+
delete: vi.fn()
|
|
324
|
+
};
|
|
325
|
+
|
|
326
|
+
const mockEnv = {
|
|
327
|
+
${className.toUpperCase()}_DELEGATION_STORAGE: mockDelegationStorage,
|
|
328
|
+
TOOL_PROTECTION_KV: mockVerificationCache,
|
|
329
|
+
AGENTSHIELD_API_KEY: 'test-key',
|
|
330
|
+
AGENTSHIELD_API_URL: 'https://test.agentshield.ai'
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
beforeEach(() => {
|
|
334
|
+
vi.clearAllMocks();
|
|
335
|
+
global.fetch = vi.fn();
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
test('should verify delegation token with AgentShield API', async () => {
|
|
339
|
+
const token = 'test-delegation-token';
|
|
340
|
+
|
|
341
|
+
// Mock verification cache miss
|
|
342
|
+
mockVerificationCache.get.mockResolvedValueOnce(null);
|
|
343
|
+
|
|
344
|
+
// Mock API success
|
|
345
|
+
global.fetch = vi.fn().mockResolvedValueOnce({
|
|
346
|
+
ok: true
|
|
347
|
+
});
|
|
348
|
+
|
|
349
|
+
// Test verification would happen here
|
|
350
|
+
expect(global.fetch).toHaveBeenCalledWith(
|
|
351
|
+
expect.stringContaining('/api/v1/bouncer/delegations/verify'),
|
|
352
|
+
expect.objectContaining({
|
|
353
|
+
method: 'POST',
|
|
354
|
+
body: JSON.stringify({ token })
|
|
355
|
+
})
|
|
356
|
+
);
|
|
357
|
+
});
|
|
358
|
+
|
|
359
|
+
test('should use 5-minute cache TTL for delegations', async () => {
|
|
360
|
+
const token = 'test-token';
|
|
361
|
+
const sessionId = 'test-session';
|
|
362
|
+
|
|
363
|
+
await mockDelegationStorage.put(
|
|
364
|
+
\`session:\${sessionId}\`,
|
|
365
|
+
token,
|
|
366
|
+
{ expirationTtl: 300 } // 5 minutes
|
|
367
|
+
);
|
|
368
|
+
|
|
369
|
+
expect(mockDelegationStorage.put).toHaveBeenCalledWith(
|
|
370
|
+
expect.any(String),
|
|
371
|
+
token,
|
|
372
|
+
{ expirationTtl: 300 }
|
|
373
|
+
);
|
|
374
|
+
});
|
|
375
|
+
|
|
376
|
+
test('should invalidate cache on revocation', async () => {
|
|
377
|
+
const sessionId = 'revoked-session';
|
|
378
|
+
const token = 'revoked-token';
|
|
379
|
+
|
|
380
|
+
// Test invalidation
|
|
381
|
+
await Promise.all([
|
|
382
|
+
mockDelegationStorage.delete(\`session:\${sessionId}\`),
|
|
383
|
+
mockVerificationCache.delete(\`verified:\${token.substring(0, 16)}\`)
|
|
384
|
+
]);
|
|
385
|
+
|
|
386
|
+
expect(mockDelegationStorage.delete).toHaveBeenCalled();
|
|
387
|
+
expect(mockVerificationCache.delete).toHaveBeenCalled();
|
|
388
|
+
});
|
|
389
|
+
});
|
|
390
|
+
`;
|
|
391
|
+
fs.writeFileSync(path.join(testsDir, "delegation.test.ts"), delegationTestContent);
|
|
392
|
+
// Create DO routing test file
|
|
393
|
+
const doRoutingTestContent = `import { describe, test, expect } from 'vitest';
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Durable Object Routing Tests
|
|
397
|
+
* Tests multi-instance DO routing for horizontal scaling
|
|
398
|
+
*/
|
|
399
|
+
describe('DO Multi-Instance Routing', () => {
|
|
400
|
+
|
|
401
|
+
function getDoInstanceId(request: Request, env: any): string {
|
|
402
|
+
const strategy = env.DO_ROUTING_STRATEGY || 'session';
|
|
403
|
+
const headers = request.headers;
|
|
404
|
+
|
|
405
|
+
switch (strategy) {
|
|
406
|
+
case 'session': {
|
|
407
|
+
const sessionId = headers.get('mcp-session-id') ||
|
|
408
|
+
headers.get('Mcp-Session-Id') ||
|
|
409
|
+
crypto.randomUUID();
|
|
410
|
+
return \`session:\${sessionId}\`;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
case 'shard': {
|
|
414
|
+
const identifier = headers.get('mcp-session-id') || Math.random().toString();
|
|
415
|
+
let hash = 0;
|
|
416
|
+
for (let i = 0; i < identifier.length; i++) {
|
|
417
|
+
hash = ((hash << 5) - hash) + identifier.charCodeAt(i);
|
|
418
|
+
hash = hash & hash;
|
|
419
|
+
}
|
|
420
|
+
const shardCount = parseInt(env.DO_SHARD_COUNT || '10');
|
|
421
|
+
const shard = Math.abs(hash) % shardCount;
|
|
422
|
+
return \`shard:\${shard}\`;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
default:
|
|
426
|
+
return 'default';
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
test('should route to different instances for different sessions', () => {
|
|
431
|
+
const env = { DO_ROUTING_STRATEGY: 'session' };
|
|
432
|
+
|
|
433
|
+
const req1 = new Request('http://test/mcp', {
|
|
434
|
+
headers: { 'mcp-session-id': 'session-123' }
|
|
435
|
+
});
|
|
436
|
+
const req2 = new Request('http://test/mcp', {
|
|
437
|
+
headers: { 'mcp-session-id': 'session-456' }
|
|
438
|
+
});
|
|
439
|
+
|
|
440
|
+
const id1 = getDoInstanceId(req1, env);
|
|
441
|
+
const id2 = getDoInstanceId(req2, env);
|
|
442
|
+
|
|
443
|
+
expect(id1).toBe('session:session-123');
|
|
444
|
+
expect(id2).toBe('session:session-456');
|
|
445
|
+
expect(id1).not.toBe(id2);
|
|
446
|
+
});
|
|
447
|
+
|
|
448
|
+
test('should distribute load across shards', () => {
|
|
449
|
+
const env = {
|
|
450
|
+
DO_ROUTING_STRATEGY: 'shard',
|
|
451
|
+
DO_SHARD_COUNT: '10'
|
|
452
|
+
};
|
|
453
|
+
|
|
454
|
+
const distribution = new Map<string, number>();
|
|
455
|
+
|
|
456
|
+
// Generate 100 requests
|
|
457
|
+
for (let i = 0; i < 100; i++) {
|
|
458
|
+
const req = new Request('http://test/mcp', {
|
|
459
|
+
headers: { 'mcp-session-id': \`session-\${i}\` }
|
|
460
|
+
});
|
|
461
|
+
|
|
462
|
+
const instanceId = getDoInstanceId(req, env);
|
|
463
|
+
const shard = instanceId.split(':')[1];
|
|
464
|
+
|
|
465
|
+
distribution.set(shard, (distribution.get(shard) || 0) + 1);
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
// Should use multiple shards
|
|
469
|
+
expect(distribution.size).toBeGreaterThan(5);
|
|
470
|
+
});
|
|
471
|
+
});
|
|
472
|
+
`;
|
|
473
|
+
fs.writeFileSync(path.join(testsDir, "do-routing.test.ts"), doRoutingTestContent);
|
|
474
|
+
// Create security test file
|
|
475
|
+
const securityTestContent = `import { describe, test, expect } from 'vitest';
|
|
476
|
+
|
|
477
|
+
/**
|
|
478
|
+
* Security Tests
|
|
479
|
+
* Tests CORS configuration and API key handling
|
|
480
|
+
*/
|
|
481
|
+
describe('Security Configuration', () => {
|
|
482
|
+
|
|
483
|
+
function getCorsOrigin(requestOrigin: string | null, env: any): string | null {
|
|
484
|
+
const allowedOrigins = env.ALLOWED_ORIGINS?.split(',').map((o: string) => o.trim()) || [
|
|
485
|
+
'https://claude.ai',
|
|
486
|
+
'https://app.anthropic.com'
|
|
487
|
+
];
|
|
488
|
+
|
|
489
|
+
if (env.MCPI_ENV !== 'production' && !allowedOrigins.includes('http://localhost:3000')) {
|
|
490
|
+
allowedOrigins.push('http://localhost:3000');
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
const origin = requestOrigin || '';
|
|
494
|
+
const isAllowed = allowedOrigins.includes(origin);
|
|
495
|
+
|
|
496
|
+
return isAllowed ? origin : allowedOrigins[0];
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
test('should allow Claude.ai by default', () => {
|
|
500
|
+
const env = {};
|
|
501
|
+
const origin = 'https://claude.ai';
|
|
502
|
+
const result = getCorsOrigin(origin, env);
|
|
503
|
+
|
|
504
|
+
expect(result).toBe(origin);
|
|
505
|
+
});
|
|
506
|
+
|
|
507
|
+
test('should reject unauthorized origins', () => {
|
|
508
|
+
const env = { MCPI_ENV: 'production' };
|
|
509
|
+
const origin = 'https://evil.com';
|
|
510
|
+
const result = getCorsOrigin(origin, env);
|
|
511
|
+
|
|
512
|
+
expect(result).toBe('https://claude.ai');
|
|
513
|
+
expect(result).not.toBe(origin);
|
|
514
|
+
});
|
|
515
|
+
|
|
516
|
+
test('should not expose API keys in wrangler.toml', () => {
|
|
517
|
+
// This test validates that API keys are only in .dev.vars
|
|
518
|
+
const wranglerContent = \`
|
|
519
|
+
[vars]
|
|
520
|
+
AGENTSHIELD_API_URL = "https://kya.vouched.id"
|
|
521
|
+
# AGENTSHIELD_API_KEY - Set securely
|
|
522
|
+
\`;
|
|
523
|
+
|
|
524
|
+
expect(wranglerContent).not.toContain('sk_');
|
|
525
|
+
expect(wranglerContent).toContain('Set securely');
|
|
526
|
+
});
|
|
527
|
+
|
|
528
|
+
test('should use short TTLs for security', () => {
|
|
529
|
+
const DELEGATION_TTL = 300; // 5 minutes
|
|
530
|
+
const VERIFICATION_TTL = 60; // 1 minute
|
|
531
|
+
|
|
532
|
+
expect(DELEGATION_TTL).toBeLessThanOrEqual(300);
|
|
533
|
+
expect(VERIFICATION_TTL).toBeLessThanOrEqual(60);
|
|
534
|
+
});
|
|
535
|
+
});
|
|
536
|
+
`;
|
|
537
|
+
fs.writeFileSync(path.join(testsDir, "security.test.ts"), securityTestContent);
|
|
538
|
+
// Create vitest config file
|
|
539
|
+
const vitestConfigContent = `import { defineConfig } from 'vitest/config';
|
|
540
|
+
|
|
541
|
+
export default defineConfig({
|
|
542
|
+
test: {
|
|
543
|
+
environment: 'miniflare',
|
|
544
|
+
environmentOptions: {
|
|
545
|
+
kvNamespaces: [
|
|
546
|
+
'${className.toUpperCase()}_NONCE_CACHE',
|
|
547
|
+
'${className.toUpperCase()}_PROOF_ARCHIVE',
|
|
548
|
+
'${className.toUpperCase()}_IDENTITY_STORAGE',
|
|
549
|
+
'${className.toUpperCase()}_DELEGATION_STORAGE',
|
|
550
|
+
'${className.toUpperCase()}_TOOL_PROTECTION_KV'
|
|
551
|
+
],
|
|
552
|
+
durableObjects: {
|
|
553
|
+
${className.toUpperCase()}_OBJECT: '${pascalClassName}MCP'
|
|
554
|
+
}
|
|
555
|
+
},
|
|
556
|
+
coverage: {
|
|
557
|
+
provider: 'v8',
|
|
558
|
+
reporter: ['text', 'html'],
|
|
559
|
+
exclude: ['node_modules/', 'tests/', '*.config.ts'],
|
|
560
|
+
thresholds: {
|
|
561
|
+
statements: 80,
|
|
562
|
+
branches: 70,
|
|
563
|
+
functions: 80,
|
|
564
|
+
lines: 80
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
});
|
|
569
|
+
`;
|
|
570
|
+
fs.writeFileSync(path.join(projectPath, "vitest.config.ts"), vitestConfigContent);
|
|
69
571
|
// Create greet tool
|
|
70
572
|
const greetToolContent = `import { z } from "zod";
|
|
71
573
|
|
|
@@ -658,25 +1160,35 @@ export class ${pascalClassName}MCP extends McpAgent {
|
|
|
658
1160
|
jwsValid: proof.jws.split('.').length === 3
|
|
659
1161
|
});
|
|
660
1162
|
|
|
661
|
-
//
|
|
1163
|
+
// Parallelize proof operations for better performance
|
|
1164
|
+
const proofOperations: Promise<void>[] = [];
|
|
1165
|
+
|
|
1166
|
+
// Add proof archive operation
|
|
662
1167
|
if (this.proofArchive) {
|
|
663
|
-
|
|
664
|
-
|
|
1168
|
+
proofOperations.push(
|
|
1169
|
+
this.proofArchive.store(proof, {
|
|
665
1170
|
toolName: greetTool.name
|
|
666
|
-
})
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
1171
|
+
}).then(() => {
|
|
1172
|
+
console.log('[MCP-I] Proof stored in archive');
|
|
1173
|
+
}).catch((archiveError: any) => {
|
|
1174
|
+
console.error('[MCP-I] Archive error:', archiveError);
|
|
1175
|
+
})
|
|
1176
|
+
);
|
|
671
1177
|
}
|
|
672
1178
|
|
|
673
|
-
//
|
|
1179
|
+
// Add AgentShield submission operation
|
|
674
1180
|
if (this.agentShieldConfig) {
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
1181
|
+
proofOperations.push(
|
|
1182
|
+
this.submitProofToAgentShield(proof, session, greetTool.name, args, result)
|
|
1183
|
+
.catch((err: any) => {
|
|
1184
|
+
console.error('[MCP-I] AgentShield failed:', err.message);
|
|
1185
|
+
})
|
|
1186
|
+
);
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
// Execute all proof operations in parallel for better performance
|
|
1190
|
+
if (proofOperations.length > 0) {
|
|
1191
|
+
await Promise.allSettled(proofOperations);
|
|
680
1192
|
}
|
|
681
1193
|
|
|
682
1194
|
// Attach proof to result for MCP Inspector
|
|
@@ -1026,9 +1538,10 @@ XMCP_I_TS_SKEW_SEC = "120"
|
|
|
1026
1538
|
XMCP_I_SESSION_TTL = "1800"
|
|
1027
1539
|
|
|
1028
1540
|
# AgentShield Integration (https://kya.vouched.id)
|
|
1029
|
-
# ${apikey ? 'Configure' : 'Uncomment and configure'} these variables to enable proof submission to AgentShield
|
|
1030
1541
|
AGENTSHIELD_API_URL = "https://kya.vouched.id"
|
|
1031
|
-
|
|
1542
|
+
# AGENTSHIELD_API_KEY - Set securely using one of these methods:
|
|
1543
|
+
# Development: Add to .dev.vars file (already configured if --apikey was provided)
|
|
1544
|
+
# Production: wrangler secret put AGENTSHIELD_API_KEY
|
|
1032
1545
|
MCPI_ENV = "development"
|
|
1033
1546
|
|
|
1034
1547
|
# Optional: MCP Server URL for tool discovery
|
|
@@ -1077,7 +1590,7 @@ MCP_IDENTITY_PRIVATE_KEY="${identity.privateKey}"
|
|
|
1077
1590
|
MCP_IDENTITY_PUBLIC_KEY="${identity.publicKey}"
|
|
1078
1591
|
|
|
1079
1592
|
# AgentShield API key (get from https://agentshield.ai)
|
|
1080
|
-
AGENTSHIELD_API_KEY=""
|
|
1593
|
+
AGENTSHIELD_API_KEY="${apikey || ''}"${apikey ? ' # Provided via --apikey flag' : ''}
|
|
1081
1594
|
|
|
1082
1595
|
# Admin API key for protected endpoints
|
|
1083
1596
|
ADMIN_API_KEY=""
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-cloudflare-mcpi-template.js","sourceRoot":"","sources":["../../src/helpers/fetch-cloudflare-mcpi-template.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fetch-cloudflare-mcpi-template.js","sourceRoot":"","sources":["../../src/helpers/fetch-cloudflare-mcpi-template.ts"],"names":[],"mappings":"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"}
|