create-codemodekit 0.4.0 → 0.5.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.
- package/README.md +14 -2
- package/dist/agent-plugin.d.ts +3 -5
- package/dist/agent-plugin.d.ts.map +1 -1
- package/dist/agent-plugin.js +29 -25
- package/dist/agent-plugin.js.map +1 -1
- package/dist/catalog-files.d.ts +28 -0
- package/dist/catalog-files.d.ts.map +1 -0
- package/dist/catalog-files.js +193 -0
- package/dist/catalog-files.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +139 -49
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/scaffold.d.ts +3 -1
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +113 -44
- package/dist/scaffold.js.map +1 -1
- package/dist/source-template.d.ts +12 -2
- package/dist/source-template.d.ts.map +1 -1
- package/dist/source-template.js +80 -13
- package/dist/source-template.js.map +1 -1
- package/dist/verify-template.d.ts +2 -0
- package/dist/verify-template.d.ts.map +1 -0
- package/dist/verify-template.js +113 -0
- package/dist/verify-template.js.map +1 -0
- package/package.json +2 -2
package/dist/scaffold.js
CHANGED
|
@@ -4,16 +4,19 @@ import { mkdir, readdir, writeFile } from "node:fs/promises";
|
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { normalizePortableName, scaffoldAgentPlugin, } from "./agent-plugin.js";
|
|
6
6
|
import { installProjectAuthoringSkills } from "./authoring-skill.js";
|
|
7
|
-
import { renderEnvExample,
|
|
7
|
+
import { renderEnvExample, renderSources, renderSourcesReadme, } from "./source-template.js";
|
|
8
|
+
import { renderVerifyScript } from "./verify-template.js";
|
|
8
9
|
const PACKAGE_VERSION = readPackageVersion();
|
|
9
10
|
// The generator and batteries-included runtime release independently.
|
|
10
|
-
const DEFAULT_CODEMODEKIT_VERSION = "^0.
|
|
11
|
+
const DEFAULT_CODEMODEKIT_VERSION = "^0.4.0";
|
|
11
12
|
const DEFAULT_CREATE_CODEMODEKIT_VERSION = `^${PACKAGE_VERSION}`;
|
|
12
13
|
export async function scaffoldCodeModeMcp(options) {
|
|
13
14
|
const cwd = options.cwd ?? process.cwd();
|
|
14
15
|
const directory = path.resolve(cwd, options.targetDirectory);
|
|
15
|
-
const
|
|
16
|
-
const sourceName =
|
|
16
|
+
const sources = resolveSources(options);
|
|
17
|
+
const sourceName = sources.length === 1
|
|
18
|
+
? resolvedSourceName(sources[0])
|
|
19
|
+
: "multi-source";
|
|
17
20
|
const serverName = required(options.serverName ?? `${sourceName}-code-mode`, "Server name");
|
|
18
21
|
const packageName = validPackageName(options.packageName ?? packageNameFromDirectory(directory));
|
|
19
22
|
const policy = options.policy ?? "allow-all";
|
|
@@ -29,7 +32,10 @@ export async function scaffoldCodeModeMcp(options) {
|
|
|
29
32
|
const codemodekitVersion = required(options.codemodekitVersion ?? DEFAULT_CODEMODEKIT_VERSION, "CodeModeKit dependency version");
|
|
30
33
|
const createCodemodekitVersion = required(options.createCodemodekitVersion ?? DEFAULT_CREATE_CODEMODEKIT_VERSION, "create-codemodekit dependency version");
|
|
31
34
|
await ensureEmptyDirectory(directory);
|
|
32
|
-
await
|
|
35
|
+
await Promise.all([
|
|
36
|
+
mkdir(path.join(directory, "src"), { recursive: true }),
|
|
37
|
+
mkdir(path.join(directory, "scripts"), { recursive: true }),
|
|
38
|
+
]);
|
|
33
39
|
const packageJson = {
|
|
34
40
|
name: packageName,
|
|
35
41
|
version: "0.1.0",
|
|
@@ -38,6 +44,7 @@ export async function scaffoldCodeModeMcp(options) {
|
|
|
38
44
|
engines: { node: ">=20" },
|
|
39
45
|
scripts: {
|
|
40
46
|
start: "node src/server.mjs",
|
|
47
|
+
verify: "node scripts/verify.mjs",
|
|
41
48
|
...(agentPluginOptions === undefined
|
|
42
49
|
? {}
|
|
43
50
|
: {
|
|
@@ -49,35 +56,35 @@ export async function scaffoldCodeModeMcp(options) {
|
|
|
49
56
|
}),
|
|
50
57
|
},
|
|
51
58
|
dependencies: { "codemodekit": codemodekitVersion },
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}),
|
|
59
|
+
devDependencies: {
|
|
60
|
+
"@modelcontextprotocol/client": "2.0.0-beta.5",
|
|
61
|
+
...(agentPluginOptions === undefined
|
|
62
|
+
? {}
|
|
63
|
+
: { "create-codemodekit": createCodemodekitVersion }),
|
|
64
|
+
},
|
|
59
65
|
};
|
|
60
66
|
const entrypoint = path.join(directory, "src", "server.mjs");
|
|
61
67
|
await Promise.all([
|
|
62
68
|
writeFile(path.join(directory, "package.json"), `${JSON.stringify(packageJson, null, 2)}\n`, "utf8"),
|
|
63
69
|
writeFile(path.join(directory, ".gitignore"), "node_modules/\n.env\n.env.*\n!.env.example\n", "utf8"),
|
|
64
|
-
writeFile(path.join(directory, ".env.example"), renderEnvExample(
|
|
70
|
+
writeFile(path.join(directory, ".env.example"), renderEnvExample(sources), "utf8"),
|
|
65
71
|
writeFile(path.join(directory, "README.md"), renderProjectReadme({
|
|
66
72
|
packageName,
|
|
67
73
|
serverName,
|
|
68
|
-
|
|
74
|
+
sources,
|
|
69
75
|
policy,
|
|
70
76
|
agentPlugin: agentPluginOptions !== undefined,
|
|
71
77
|
authoringSkill: includeAuthoringSkill,
|
|
72
78
|
}), "utf8"),
|
|
73
79
|
writeFile(entrypoint, renderServer({
|
|
74
80
|
serverName,
|
|
75
|
-
|
|
81
|
+
sources,
|
|
76
82
|
policy,
|
|
77
83
|
...(skillName === undefined
|
|
78
84
|
? {}
|
|
79
85
|
: { agentPlugin: { skillName } }),
|
|
80
86
|
}), "utf8"),
|
|
87
|
+
writeFile(path.join(directory, "scripts", "verify.mjs"), renderVerifyScript(sources.map(resolvedSourceName)), "utf8"),
|
|
81
88
|
]);
|
|
82
89
|
const authoringSkills = includeAuthoringSkill
|
|
83
90
|
? await installProjectAuthoringSkills({ root: directory })
|
|
@@ -180,7 +187,7 @@ The project-local \`.agents/skills/build-codemodekit-server\` and \`.agents/skil
|
|
|
180
187
|
After the catalog is synchronized, ask the coding agent to use \`$author-codemode-skill\` before distributing the generated runtime skill.
|
|
181
188
|
`
|
|
182
189
|
: "";
|
|
183
|
-
const sourceSection =
|
|
190
|
+
const sourceSection = renderSourcesReadme(options.sources);
|
|
184
191
|
return `# ${options.packageName}
|
|
185
192
|
|
|
186
193
|
Code Mode MCP server generated by [CodeModeKit](https://github.com/stjbrown/codemodekit).
|
|
@@ -189,6 +196,9 @@ Code Mode MCP server generated by [CodeModeKit](https://github.com/stjbrown/code
|
|
|
189
196
|
|
|
190
197
|
\`\`\`sh
|
|
191
198
|
npm start
|
|
199
|
+
|
|
200
|
+
# Validate the Code Mode surface and sandbox without calling provider tools
|
|
201
|
+
npm run verify
|
|
192
202
|
\`\`\`
|
|
193
203
|
|
|
194
204
|
The downstream server is \`${options.serverName}\`.
|
|
@@ -196,25 +206,27 @@ The downstream server is \`${options.serverName}\`.
|
|
|
196
206
|
${sourceSection}
|
|
197
207
|
|
|
198
208
|
The generated tool policy is \`${options.policy}\`. Review \`src/server.mjs\` before exposing the server, and keep credentials in uncommitted environment files or the upstream tool's supported secret mechanism.
|
|
209
|
+
|
|
210
|
+
For an end-to-end provider assertion, put a bounded TypeScript composition in a file that returns an object containing \`verified: true\`, then run \`CODEMODEKIT_VERIFY_CODE_FILE=verify/live.ts npm run verify\`. Export the variables shown in \`.env.example\` with your preferred environment manager before starting or verifying the server.
|
|
199
211
|
${pluginSection}${authoringSection}
|
|
200
212
|
`;
|
|
201
213
|
}
|
|
202
214
|
export function renderServer(options) {
|
|
203
215
|
const policyFactory = options.policy === "allow-all" ? "allowAllToolCalls" : "denyAllToolCalls";
|
|
204
|
-
const
|
|
216
|
+
const sources = renderSources(options.sources);
|
|
205
217
|
const plugin = options.agentPlugin;
|
|
206
218
|
const nodeImport = plugin === undefined ? "" : 'import { fileURLToPath } from "node:url";\n\n';
|
|
207
219
|
const imports = [
|
|
208
220
|
policyFactory,
|
|
209
221
|
...(plugin === undefined ? [] : ["createCodeModeMcp"]),
|
|
210
|
-
...
|
|
222
|
+
...sources.imports,
|
|
211
223
|
"serveCodeModeStdio",
|
|
212
224
|
].sort();
|
|
213
225
|
const application = `const options = {
|
|
214
226
|
name: ${JSON.stringify(options.serverName)},
|
|
215
227
|
version: "0.1.0",
|
|
216
228
|
toolPolicy: ${policyFactory}(),
|
|
217
|
-
sources: [${
|
|
229
|
+
sources: [${sources.expressions.join("")}],
|
|
218
230
|
};
|
|
219
231
|
`;
|
|
220
232
|
const launch = plugin === undefined
|
|
@@ -224,7 +236,7 @@ export function renderServer(options) {
|
|
|
224
236
|
${imports.map((name) => ` ${name},`).join("\n")}
|
|
225
237
|
} from "codemodekit";
|
|
226
238
|
|
|
227
|
-
${
|
|
239
|
+
${sources.prelude}${application}
|
|
228
240
|
${launch}`;
|
|
229
241
|
}
|
|
230
242
|
function renderAgentPluginLaunch(skillName, serverName) {
|
|
@@ -249,37 +261,94 @@ function renderAgentPluginLaunch(skillName, serverName) {
|
|
|
249
261
|
}
|
|
250
262
|
`;
|
|
251
263
|
}
|
|
252
|
-
function
|
|
253
|
-
if (options.source !== undefined &&
|
|
264
|
+
function resolveSources(options) {
|
|
265
|
+
if ((options.source !== undefined || options.sources !== undefined) &&
|
|
254
266
|
(options.mcpName !== undefined || options.mcpCommand !== undefined)) {
|
|
255
|
-
throw new TypeError("Use
|
|
267
|
+
throw new TypeError("Use sources, source, or mcpName/mcpCommand, not a combination");
|
|
256
268
|
}
|
|
257
|
-
if (options.source !== undefined) {
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
command: validateCommand(options.source.command),
|
|
266
|
-
};
|
|
267
|
-
case "mcp-http":
|
|
268
|
-
return {
|
|
269
|
-
type: "mcp-http",
|
|
270
|
-
name: required(options.source.name, "MCP name"),
|
|
271
|
-
url: validateHttpUrl(options.source.url),
|
|
272
|
-
};
|
|
269
|
+
if (options.source !== undefined && options.sources !== undefined) {
|
|
270
|
+
throw new TypeError("Use either sources or source, not both");
|
|
271
|
+
}
|
|
272
|
+
const candidates = options.sources ??
|
|
273
|
+
(options.source === undefined ? undefined : [options.source]);
|
|
274
|
+
if (candidates !== undefined) {
|
|
275
|
+
if (candidates.length === 0) {
|
|
276
|
+
throw new TypeError("At least one source is required");
|
|
273
277
|
}
|
|
278
|
+
const resolved = candidates.map((source) => {
|
|
279
|
+
switch (source.type) {
|
|
280
|
+
case "weather":
|
|
281
|
+
return source;
|
|
282
|
+
case "mcp-stdio":
|
|
283
|
+
return {
|
|
284
|
+
type: "mcp-stdio",
|
|
285
|
+
name: required(source.name, "MCP name"),
|
|
286
|
+
command: validateCommand(source.command),
|
|
287
|
+
};
|
|
288
|
+
case "mcp-http": {
|
|
289
|
+
const bearerTokenEnv = validateOptionalEnvironmentName(source.bearerTokenEnv);
|
|
290
|
+
const headerEnv = validateHeaderEnvironment(source.headerEnv);
|
|
291
|
+
if (bearerTokenEnv !== undefined &&
|
|
292
|
+
Object.keys(headerEnv).some((header) => header.toLowerCase() === "authorization")) {
|
|
293
|
+
throw new TypeError("Use either bearerTokenEnv or an Authorization headerEnv mapping");
|
|
294
|
+
}
|
|
295
|
+
return {
|
|
296
|
+
type: "mcp-http",
|
|
297
|
+
name: required(source.name, "MCP name"),
|
|
298
|
+
url: validateHttpUrl(source.url),
|
|
299
|
+
...(bearerTokenEnv === undefined ? {} : { bearerTokenEnv }),
|
|
300
|
+
...(Object.keys(headerEnv).length === 0 ? {} : { headerEnv }),
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
const names = resolved.map(resolvedSourceName);
|
|
306
|
+
const duplicate = names.find((name, index) => names.indexOf(name) !== index);
|
|
307
|
+
if (duplicate !== undefined) {
|
|
308
|
+
throw new TypeError(`Duplicate source name: ${duplicate}`);
|
|
309
|
+
}
|
|
310
|
+
return resolved;
|
|
274
311
|
}
|
|
275
312
|
if (options.mcpName === undefined || options.mcpCommand === undefined) {
|
|
276
313
|
throw new TypeError("A source or mcpName/mcpCommand pair is required");
|
|
277
314
|
}
|
|
278
|
-
return
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
315
|
+
return [
|
|
316
|
+
{
|
|
317
|
+
type: "mcp-stdio",
|
|
318
|
+
name: required(options.mcpName, "MCP name"),
|
|
319
|
+
command: validateCommand(options.mcpCommand),
|
|
320
|
+
},
|
|
321
|
+
];
|
|
322
|
+
}
|
|
323
|
+
function resolvedSourceName(source) {
|
|
324
|
+
return source.type === "weather" ? "weather" : source.name;
|
|
325
|
+
}
|
|
326
|
+
function validateOptionalEnvironmentName(value) {
|
|
327
|
+
return value === undefined ? undefined : validateEnvironmentName(value);
|
|
328
|
+
}
|
|
329
|
+
function validateEnvironmentName(value) {
|
|
330
|
+
const name = required(value, "Environment variable name");
|
|
331
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(name)) {
|
|
332
|
+
throw new TypeError(`Invalid environment variable name: ${name}`);
|
|
333
|
+
}
|
|
334
|
+
return name;
|
|
335
|
+
}
|
|
336
|
+
function validateHeaderEnvironment(value) {
|
|
337
|
+
const entries = Object.entries(value ?? {}).sort(([left], [right]) => left.localeCompare(right));
|
|
338
|
+
const result = {};
|
|
339
|
+
const normalizedHeaders = new Set();
|
|
340
|
+
for (const [header, environment] of entries) {
|
|
341
|
+
if (!/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/u.test(header)) {
|
|
342
|
+
throw new TypeError(`Invalid HTTP header name: ${header}`);
|
|
343
|
+
}
|
|
344
|
+
const normalized = header.toLowerCase();
|
|
345
|
+
if (normalizedHeaders.has(normalized)) {
|
|
346
|
+
throw new TypeError(`Duplicate HTTP header name: ${header}`);
|
|
347
|
+
}
|
|
348
|
+
normalizedHeaders.add(normalized);
|
|
349
|
+
result[header] = validateEnvironmentName(environment);
|
|
350
|
+
}
|
|
351
|
+
return result;
|
|
283
352
|
}
|
|
284
353
|
function validateCommand(command) {
|
|
285
354
|
return {
|
package/dist/scaffold.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,10 @@ export type ScaffoldSource = {
|
|
|
7
7
|
readonly type: "mcp-http";
|
|
8
8
|
readonly name: string;
|
|
9
9
|
readonly url: string;
|
|
10
|
+
/** Reads an Authorization bearer token from this host environment variable. */
|
|
11
|
+
readonly bearerTokenEnv?: string;
|
|
12
|
+
/** Maps HTTP header names to host environment variable names. */
|
|
13
|
+
readonly headerEnv?: Readonly<Record<string, string>>;
|
|
10
14
|
} | {
|
|
11
15
|
readonly type: "weather";
|
|
12
16
|
};
|
|
@@ -15,7 +19,13 @@ export interface RenderedSource {
|
|
|
15
19
|
readonly prelude: string;
|
|
16
20
|
readonly expression: string;
|
|
17
21
|
}
|
|
22
|
+
export interface RenderedSources {
|
|
23
|
+
readonly imports: readonly string[];
|
|
24
|
+
readonly prelude: string;
|
|
25
|
+
readonly expressions: readonly string[];
|
|
26
|
+
}
|
|
27
|
+
export declare function renderSources(sources: readonly ScaffoldSource[]): RenderedSources;
|
|
18
28
|
export declare function renderSource(source: ScaffoldSource): RenderedSource;
|
|
19
|
-
export declare function
|
|
20
|
-
export declare function renderEnvExample(
|
|
29
|
+
export declare function renderSourcesReadme(sources: readonly ScaffoldSource[]): string;
|
|
30
|
+
export declare function renderEnvExample(sources: readonly ScaffoldSource[]): string;
|
|
21
31
|
//# sourceMappingURL=source-template.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-template.d.ts","sourceRoot":"","sources":["../src/source-template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;CACjC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"source-template.d.ts","sourceRoot":"","sources":["../src/source-template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;CACjC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,iEAAiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvD,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEN,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,GAAG,eAAe,CAejF;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAoDnE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,CAQ9E;AA2BD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,CAqB3E"}
|
package/dist/source-template.js
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
export function renderSources(sources) {
|
|
2
|
+
const rendered = sources.map(renderSource);
|
|
3
|
+
const needsEnvironment = sources.some((source) => source.type === "mcp-http" &&
|
|
4
|
+
(source.bearerTokenEnv !== undefined ||
|
|
5
|
+
Object.keys(source.headerEnv ?? {}).length > 0));
|
|
6
|
+
return {
|
|
7
|
+
imports: [...new Set(rendered.flatMap((source) => source.imports))],
|
|
8
|
+
prelude: (needsEnvironment ? renderEnvironmentHelper() : "") +
|
|
9
|
+
rendered.map((source) => source.prelude).join(""),
|
|
10
|
+
expressions: rendered.map((source) => source.expression),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
1
13
|
export function renderSource(source) {
|
|
2
14
|
switch (source.type) {
|
|
3
15
|
case "mcp-stdio":
|
|
@@ -12,7 +24,17 @@ export function renderSource(source) {
|
|
|
12
24
|
}),
|
|
13
25
|
`,
|
|
14
26
|
};
|
|
15
|
-
case "mcp-http":
|
|
27
|
+
case "mcp-http": {
|
|
28
|
+
const headers = [
|
|
29
|
+
...(source.bearerTokenEnv === undefined
|
|
30
|
+
? []
|
|
31
|
+
: [
|
|
32
|
+
` authorization: "Bearer " + requiredEnvironment(${JSON.stringify(source.bearerTokenEnv)}),`,
|
|
33
|
+
]),
|
|
34
|
+
...Object.entries(source.headerEnv ?? {})
|
|
35
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
36
|
+
.map(([header, environment]) => ` ${JSON.stringify(header)}: requiredEnvironment(${JSON.stringify(environment)}),`),
|
|
37
|
+
];
|
|
16
38
|
return {
|
|
17
39
|
imports: ["mcp"],
|
|
18
40
|
prelude: "",
|
|
@@ -20,9 +42,11 @@ export function renderSource(source) {
|
|
|
20
42
|
mcp.http({
|
|
21
43
|
name: ${JSON.stringify(source.name)},
|
|
22
44
|
url: ${JSON.stringify(source.url)},
|
|
45
|
+
${headers.length === 0 ? "" : ` headers: {\n${headers.join("\n")}\n },\n`}
|
|
23
46
|
}),
|
|
24
47
|
`,
|
|
25
48
|
};
|
|
49
|
+
}
|
|
26
50
|
case "weather":
|
|
27
51
|
return {
|
|
28
52
|
imports: ["defineTool", "local", "ToolError"],
|
|
@@ -36,7 +60,14 @@ export function renderSource(source) {
|
|
|
36
60
|
};
|
|
37
61
|
}
|
|
38
62
|
}
|
|
39
|
-
export function
|
|
63
|
+
export function renderSourcesReadme(sources) {
|
|
64
|
+
if (sources.length === 1)
|
|
65
|
+
return renderSourceReadme(sources[0]);
|
|
66
|
+
return `It combines ${String(sources.length)} sources in one catalog:\n\n${sources
|
|
67
|
+
.map((source) => `### \`${sourceName(source)}\`\n\n${renderSourceReadme(source)}`)
|
|
68
|
+
.join("\n\n")}`;
|
|
69
|
+
}
|
|
70
|
+
function renderSourceReadme(source) {
|
|
40
71
|
switch (source.type) {
|
|
41
72
|
case "mcp-stdio":
|
|
42
73
|
return `It wraps the \`${source.name}\` MCP source using this shell-free process configuration:
|
|
@@ -44,26 +75,62 @@ export function renderSourceReadme(source) {
|
|
|
44
75
|
\`\`\`json
|
|
45
76
|
${JSON.stringify(source.command, null, 2)}
|
|
46
77
|
\`\`\``;
|
|
47
|
-
case "mcp-http":
|
|
48
|
-
|
|
78
|
+
case "mcp-http": {
|
|
79
|
+
const environment = sourceEnvironmentVariables(source);
|
|
80
|
+
const authentication = environment.length === 0
|
|
81
|
+
? ""
|
|
82
|
+
: ` Authentication headers are assembled at runtime from ${environment
|
|
83
|
+
.map((name) => `\`${name}\``)
|
|
84
|
+
.join(", ")}; their values are not written to source or plugin artifacts.`;
|
|
85
|
+
return `It wraps the \`${source.name}\` Streamable HTTP MCP source at \`${source.url}\`.${authentication}`;
|
|
86
|
+
}
|
|
49
87
|
case "weather":
|
|
50
88
|
return `This is the editable, keyless weather starter. It exposes two local tools—\`weather.findLocation\` and \`weather.getCurrentWeather\`—so an agent can compose geocoding and current-weather lookup inside one \`run_typescript\` call.
|
|
51
89
|
|
|
52
90
|
It uses Open-Meteo's public endpoints by default. The free endpoint is intended for non-commercial use within Open-Meteo's published limits; review their terms before production use. Set \`OPEN_METEO_GEOCODING_URL\` and \`OPEN_METEO_FORECAST_URL\` to use customer or self-hosted endpoints.`;
|
|
53
91
|
}
|
|
54
92
|
}
|
|
55
|
-
export function renderEnvExample(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
93
|
+
export function renderEnvExample(sources) {
|
|
94
|
+
const sections = sources.map((source) => {
|
|
95
|
+
switch (source.type) {
|
|
96
|
+
case "weather":
|
|
97
|
+
return `# Optional Open-Meteo customer or self-hosted endpoints.
|
|
59
98
|
# OPEN_METEO_GEOCODING_URL=https://geocoding-api.open-meteo.com/v1/search
|
|
60
99
|
# OPEN_METEO_FORECAST_URL=https://api.open-meteo.com/v1/forecast
|
|
61
100
|
`;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
101
|
+
case "mcp-http": {
|
|
102
|
+
const variables = sourceEnvironmentVariables(source);
|
|
103
|
+
return variables.length === 0
|
|
104
|
+
? `# ${source.name}: add any environment required by the remote MCP source.\n`
|
|
105
|
+
: `# ${source.name}: required HTTP authentication environment.\n${variables
|
|
106
|
+
.map((name) => `${name}=`)
|
|
107
|
+
.join("\n")}\n`;
|
|
108
|
+
}
|
|
109
|
+
case "mcp-stdio":
|
|
110
|
+
return `# ${source.name}: add any environment required by the upstream MCP process.\n`;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
return sections.join("\n");
|
|
114
|
+
}
|
|
115
|
+
function sourceEnvironmentVariables(source) {
|
|
116
|
+
return [
|
|
117
|
+
...(source.bearerTokenEnv === undefined ? [] : [source.bearerTokenEnv]),
|
|
118
|
+
...Object.values(source.headerEnv ?? {}),
|
|
119
|
+
].filter((value, index, values) => values.indexOf(value) === index);
|
|
120
|
+
}
|
|
121
|
+
function sourceName(source) {
|
|
122
|
+
return source.type === "weather" ? "weather" : source.name;
|
|
123
|
+
}
|
|
124
|
+
function renderEnvironmentHelper() {
|
|
125
|
+
return `function requiredEnvironment(name) {
|
|
126
|
+
const value = process.env[name];
|
|
127
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
128
|
+
throw new Error("Missing required environment variable: " + name);
|
|
129
|
+
}
|
|
130
|
+
return value;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
`;
|
|
67
134
|
}
|
|
68
135
|
function renderWeatherPrelude() {
|
|
69
136
|
return `const geocodingEndpoint =
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-template.js","sourceRoot":"","sources":["../src/source-template.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"source-template.js","sourceRoot":"","sources":["../src/source-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-template.d.ts","sourceRoot":"","sources":["../src/verify-template.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CA+GzE"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
export function renderVerifyScript(sourceNames) {
|
|
2
|
+
return `import assert from "node:assert/strict";
|
|
3
|
+
import { readFile } from "node:fs/promises";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
|
|
6
|
+
import { Client } from "@modelcontextprotocol/client";
|
|
7
|
+
import { StdioClientTransport } from "@modelcontextprotocol/client/stdio";
|
|
8
|
+
|
|
9
|
+
const root = fileURLToPath(new URL("../", import.meta.url));
|
|
10
|
+
const client = new Client(
|
|
11
|
+
{ name: "codemodekit-generated-verifier", version: "1.0.0" },
|
|
12
|
+
{
|
|
13
|
+
versionNegotiation: {
|
|
14
|
+
mode: "auto",
|
|
15
|
+
probe: { timeoutMs: 5_000, maxRetries: 0 },
|
|
16
|
+
},
|
|
17
|
+
inputRequired: { autoFulfill: false },
|
|
18
|
+
},
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
try {
|
|
22
|
+
await client.connect(
|
|
23
|
+
new StdioClientTransport({
|
|
24
|
+
command: process.execPath,
|
|
25
|
+
args: [fileURLToPath(new URL("../src/server.mjs", import.meta.url))],
|
|
26
|
+
cwd: root,
|
|
27
|
+
stderr: "pipe",
|
|
28
|
+
}),
|
|
29
|
+
{ timeout: 15_000 },
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
const listed = await client.listTools();
|
|
33
|
+
assert.deepEqual(
|
|
34
|
+
listed.tools.map((tool) => tool.name).sort(),
|
|
35
|
+
["run_typescript", "search_tools"],
|
|
36
|
+
"The server must expose exactly the two Code Mode tools",
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
for (const source of ${JSON.stringify(sourceNames)}) {
|
|
40
|
+
const search = await client.callTool({
|
|
41
|
+
name: "search_tools",
|
|
42
|
+
arguments: { query: source, source, detail: "summary", limit: 1 },
|
|
43
|
+
});
|
|
44
|
+
assert.notEqual(search.isError, true, "search_tools failed for " + source);
|
|
45
|
+
assert.equal(typeof search.structuredContent?.catalogRevision, "string");
|
|
46
|
+
assert.equal(typeof search.structuredContent?.returned, "number");
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const isolation = await client.callTool({
|
|
50
|
+
name: "run_typescript",
|
|
51
|
+
arguments: {
|
|
52
|
+
code: \`return {
|
|
53
|
+
sum: [1, 2, 3].reduce((total, value) => total + value, 0),
|
|
54
|
+
process: typeof process,
|
|
55
|
+
require: typeof require,
|
|
56
|
+
fetch: typeof fetch,
|
|
57
|
+
};\`,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
assert.equal(isolation.structuredContent?.ok, true);
|
|
61
|
+
assert.deepEqual(isolation.structuredContent?.value, {
|
|
62
|
+
sum: 6,
|
|
63
|
+
process: "undefined",
|
|
64
|
+
require: "undefined",
|
|
65
|
+
fetch: "undefined",
|
|
66
|
+
});
|
|
67
|
+
assert.deepEqual(isolation.structuredContent?.logs, []);
|
|
68
|
+
|
|
69
|
+
await expectToolError(
|
|
70
|
+
() => client.callTool({ name: "run_typescript", arguments: {} }),
|
|
71
|
+
/code|required/i,
|
|
72
|
+
);
|
|
73
|
+
await expectToolError(
|
|
74
|
+
() => client.callTool({ name: "not_a_code_mode_tool", arguments: {} }),
|
|
75
|
+
/tool|not found|unknown/i,
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
const liveFile = process.env.CODEMODEKIT_VERIFY_CODE_FILE;
|
|
79
|
+
if (liveFile !== undefined && liveFile.trim() !== "") {
|
|
80
|
+
const code = await readFile(liveFile, "utf8");
|
|
81
|
+
const live = await client.callTool({
|
|
82
|
+
name: "run_typescript",
|
|
83
|
+
arguments: { code },
|
|
84
|
+
});
|
|
85
|
+
assert.equal(live.structuredContent?.ok, true, "Live provider composition failed");
|
|
86
|
+
assert.equal(
|
|
87
|
+
live.structuredContent?.value?.verified,
|
|
88
|
+
true,
|
|
89
|
+
"Live verifier code must return an object containing verified: true",
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
process.stdout.write(
|
|
94
|
+
\`Verified Code Mode surface, ${String(sourceNames.length)} source(s), sandbox isolation\${liveFile ? ", and live composition" : ""}.\\n\`,
|
|
95
|
+
);
|
|
96
|
+
} finally {
|
|
97
|
+
await client.close();
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
async function expectToolError(call, pattern) {
|
|
101
|
+
let result;
|
|
102
|
+
try {
|
|
103
|
+
result = await call();
|
|
104
|
+
} catch (error) {
|
|
105
|
+
assert.match(error instanceof Error ? error.message : String(error), pattern);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
assert.equal(result.isError, true, "Expected an MCP tool error result");
|
|
109
|
+
assert.match(JSON.stringify(result), pattern);
|
|
110
|
+
}
|
|
111
|
+
`;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=verify-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-template.js","sourceRoot":"","sources":["../src/verify-template.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,WAA8B;IAC/D,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAqCgB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAuDhB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;CAiB7D,CAAC;AACF,CAAC"}
|