create-codemodekit 0.3.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.
Files changed (39) hide show
  1. package/README.md +45 -5
  2. package/dist/agent-plugin.d.ts +6 -7
  3. package/dist/agent-plugin.d.ts.map +1 -1
  4. package/dist/agent-plugin.js +34 -27
  5. package/dist/agent-plugin.js.map +1 -1
  6. package/dist/authoring-skill.d.ts +8 -1
  7. package/dist/authoring-skill.d.ts.map +1 -1
  8. package/dist/authoring-skill.js +17 -38
  9. package/dist/authoring-skill.js.map +1 -1
  10. package/dist/catalog-files.d.ts +28 -0
  11. package/dist/catalog-files.d.ts.map +1 -0
  12. package/dist/catalog-files.js +193 -0
  13. package/dist/catalog-files.js.map +1 -0
  14. package/dist/cli.d.ts +14 -1
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +345 -39
  17. package/dist/cli.js.map +1 -1
  18. package/dist/index.d.ts +4 -3
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +2 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/scaffold.d.ts +14 -6
  23. package/dist/scaffold.d.ts.map +1 -1
  24. package/dist/scaffold.js +177 -70
  25. package/dist/scaffold.js.map +1 -1
  26. package/dist/source-template.d.ts +31 -0
  27. package/dist/source-template.d.ts.map +1 -0
  28. package/dist/source-template.js +356 -0
  29. package/dist/source-template.js.map +1 -0
  30. package/dist/verify-template.d.ts +2 -0
  31. package/dist/verify-template.d.ts.map +1 -0
  32. package/dist/verify-template.js +113 -0
  33. package/dist/verify-template.js.map +1 -0
  34. package/package.json +5 -5
  35. package/skills/build-codemodekit-plugin/SKILL.md +0 -44
  36. package/skills/build-codemodekit-plugin/agents/openai.yaml +0 -4
  37. package/skills/build-codemodekit-plugin/references/generator.md +0 -42
  38. package/skills/build-codemodekit-plugin/references/plugin-layout.md +0 -38
  39. package/skills/build-codemodekit-plugin/references/programmatic-api.md +0 -48
@@ -1,5 +1,7 @@
1
1
  import { type ScaffoldAgentPluginResult } from "./agent-plugin.js";
2
2
  import type { ParsedCommand } from "./command.js";
3
+ import { type ScaffoldSource } from "./source-template.js";
4
+ export type { ScaffoldSource } from "./source-template.js";
3
5
  export interface AgentPluginScaffoldOptions {
4
6
  readonly pluginName?: string;
5
7
  readonly skillName?: string;
@@ -10,14 +12,20 @@ export interface AgentPluginScaffoldOptions {
10
12
  }
11
13
  export interface ScaffoldCodeModeMcpOptions {
12
14
  readonly targetDirectory: string;
13
- readonly mcpName: string;
14
- readonly mcpCommand: ParsedCommand;
15
+ /** Tool sources to combine beneath one generated Code Mode catalog. */
16
+ readonly sources?: readonly ScaffoldSource[];
17
+ /** Tool source to wrap. Prefer this over the legacy mcpName/mcpCommand pair. */
18
+ readonly source?: ScaffoldSource;
19
+ /** @deprecated Use source: { type: "mcp-stdio", ... }. */
20
+ readonly mcpName?: string;
21
+ /** @deprecated Use source: { type: "mcp-stdio", ... }. */
22
+ readonly mcpCommand?: ParsedCommand;
15
23
  readonly serverName?: string;
16
24
  readonly packageName?: string;
17
25
  readonly policy?: "allow-all" | "deny-all";
18
26
  /** Generate a portable Agent Plugins 1.0 package and companion skill. */
19
27
  readonly agentPlugin?: boolean | AgentPluginScaffoldOptions;
20
- /** Install project-local authoring guidance under .agents/skills. Defaults to true. */
28
+ /** Install both project-local authoring skills under .agents/skills. Defaults to true. */
21
29
  readonly authoringSkill?: boolean;
22
30
  readonly install?: boolean;
23
31
  /** Override the generated runtime dependency, including with a file: specifier. */
@@ -36,19 +44,19 @@ export interface ScaffoldResult {
36
44
  readonly directory: string;
37
45
  readonly entrypoint: string;
38
46
  readonly installed: boolean;
47
+ /** First installed authoring skill retained for compatibility. */
39
48
  readonly authoringSkillDirectory?: string;
49
+ readonly authoringSkillDirectories?: readonly string[];
40
50
  readonly agentPlugin?: GeneratedAgentPluginResult;
41
51
  }
42
52
  export declare function scaffoldCodeModeMcp(options: ScaffoldCodeModeMcpOptions): Promise<ScaffoldResult>;
43
53
  interface RenderServerOptions {
44
54
  readonly serverName: string;
45
- readonly mcpName: string;
46
- readonly mcpCommand: ParsedCommand;
55
+ readonly sources: readonly ScaffoldSource[];
47
56
  readonly policy: "allow-all" | "deny-all";
48
57
  readonly agentPlugin?: {
49
58
  readonly skillName: string;
50
59
  };
51
60
  }
52
61
  export declare function renderServer(options: RenderServerOptions): string;
53
- export {};
54
62
  //# sourceMappingURL=scaffold.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,yBAAyB,EAC/B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAOlD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,yFAAyF;IACzF,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;IAC3C,yEAAyE;IACzE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,0BAA0B,CAAC;IAC5D,uFAAuF;IACvF,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,mDAAmD;IACnD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,0BAA2B,SAAQ,yBAAyB;IAC3E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,0BAA0B,CAAC;CACnD;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,cAAc,CAAC,CAkLzB;AAED,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AA+DD,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAyBjE"}
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
package/dist/scaffold.js CHANGED
@@ -3,16 +3,21 @@ import { readFileSync } from "node:fs";
3
3
  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
- import { installProjectAuthoringSkill } from "./authoring-skill.js";
6
+ import { installProjectAuthoringSkills } from "./authoring-skill.js";
7
+ import { renderEnvExample, renderSources, renderSourcesReadme, } from "./source-template.js";
8
+ import { renderVerifyScript } from "./verify-template.js";
7
9
  const PACKAGE_VERSION = readPackageVersion();
8
10
  // The generator and batteries-included runtime release independently.
9
- const DEFAULT_CODEMODEKIT_VERSION = "^0.2.0";
11
+ const DEFAULT_CODEMODEKIT_VERSION = "^0.4.0";
10
12
  const DEFAULT_CREATE_CODEMODEKIT_VERSION = `^${PACKAGE_VERSION}`;
11
13
  export async function scaffoldCodeModeMcp(options) {
12
14
  const cwd = options.cwd ?? process.cwd();
13
15
  const directory = path.resolve(cwd, options.targetDirectory);
14
- const mcpName = required(options.mcpName, "MCP name");
15
- const serverName = required(options.serverName ?? `${mcpName}-code-mode`, "Server name");
16
+ const sources = resolveSources(options);
17
+ const sourceName = sources.length === 1
18
+ ? resolvedSourceName(sources[0])
19
+ : "multi-source";
20
+ const serverName = required(options.serverName ?? `${sourceName}-code-mode`, "Server name");
16
21
  const packageName = validPackageName(options.packageName ?? packageNameFromDirectory(directory));
17
22
  const policy = options.policy ?? "allow-all";
18
23
  const install = options.install ?? true;
@@ -23,11 +28,14 @@ export async function scaffoldCodeModeMcp(options) {
23
28
  : normalizePortableName(agentPluginOptions.pluginName ?? path.basename(directory), "Plugin name");
24
29
  const skillName = agentPluginOptions === undefined
25
30
  ? undefined
26
- : normalizePortableName(agentPluginOptions.skillName ?? `use-${mcpName}-codemode`, "Skill name");
31
+ : normalizePortableName(agentPluginOptions.skillName ?? `use-${sourceName}-codemode`, "Skill name");
27
32
  const codemodekitVersion = required(options.codemodekitVersion ?? DEFAULT_CODEMODEKIT_VERSION, "CodeModeKit dependency version");
28
33
  const createCodemodekitVersion = required(options.createCodemodekitVersion ?? DEFAULT_CREATE_CODEMODEKIT_VERSION, "create-codemodekit dependency version");
29
34
  await ensureEmptyDirectory(directory);
30
- await mkdir(path.join(directory, "src"), { recursive: true });
35
+ await Promise.all([
36
+ mkdir(path.join(directory, "src"), { recursive: true }),
37
+ mkdir(path.join(directory, "scripts"), { recursive: true }),
38
+ ]);
31
39
  const packageJson = {
32
40
  name: packageName,
33
41
  version: "0.1.0",
@@ -36,6 +44,7 @@ export async function scaffoldCodeModeMcp(options) {
36
44
  engines: { node: ">=20" },
37
45
  scripts: {
38
46
  start: "node src/server.mjs",
47
+ verify: "node scripts/verify.mjs",
39
48
  ...(agentPluginOptions === undefined
40
49
  ? {}
41
50
  : {
@@ -47,40 +56,43 @@ export async function scaffoldCodeModeMcp(options) {
47
56
  }),
48
57
  },
49
58
  dependencies: { "codemodekit": codemodekitVersion },
50
- ...(agentPluginOptions === undefined
51
- ? {}
52
- : {
53
- devDependencies: {
54
- "create-codemodekit": createCodemodekitVersion,
55
- },
56
- }),
59
+ devDependencies: {
60
+ "@modelcontextprotocol/client": "2.0.0-beta.5",
61
+ ...(agentPluginOptions === undefined
62
+ ? {}
63
+ : { "create-codemodekit": createCodemodekitVersion }),
64
+ },
57
65
  };
58
66
  const entrypoint = path.join(directory, "src", "server.mjs");
59
67
  await Promise.all([
60
68
  writeFile(path.join(directory, "package.json"), `${JSON.stringify(packageJson, null, 2)}\n`, "utf8"),
61
69
  writeFile(path.join(directory, ".gitignore"), "node_modules/\n.env\n.env.*\n!.env.example\n", "utf8"),
70
+ writeFile(path.join(directory, ".env.example"), renderEnvExample(sources), "utf8"),
62
71
  writeFile(path.join(directory, "README.md"), renderProjectReadme({
63
72
  packageName,
64
73
  serverName,
65
- mcpName,
66
- mcpCommand: options.mcpCommand,
74
+ sources,
67
75
  policy,
68
76
  agentPlugin: agentPluginOptions !== undefined,
69
77
  authoringSkill: includeAuthoringSkill,
70
78
  }), "utf8"),
71
79
  writeFile(entrypoint, renderServer({
72
80
  serverName,
73
- mcpName,
74
- mcpCommand: options.mcpCommand,
81
+ sources,
75
82
  policy,
76
83
  ...(skillName === undefined
77
84
  ? {}
78
85
  : { agentPlugin: { skillName } }),
79
86
  }), "utf8"),
87
+ writeFile(path.join(directory, "scripts", "verify.mjs"), renderVerifyScript(sources.map(resolvedSourceName)), "utf8"),
80
88
  ]);
81
- const authoringSkillDirectory = includeAuthoringSkill
82
- ? await installProjectAuthoringSkill({ root: directory })
89
+ const authoringSkills = includeAuthoringSkill
90
+ ? await installProjectAuthoringSkills({ root: directory })
83
91
  : undefined;
92
+ const authoringSkillDirectories = authoringSkills === undefined
93
+ ? undefined
94
+ : Object.values(authoringSkills.directories).filter((value) => value !== undefined);
95
+ const authoringSkillDirectory = authoringSkillDirectories?.[0];
84
96
  let generatedPlugin;
85
97
  if (agentPluginOptions !== undefined &&
86
98
  pluginName !== undefined &&
@@ -127,6 +139,9 @@ export async function scaffoldCodeModeMcp(options) {
127
139
  ...(authoringSkillDirectory === undefined
128
140
  ? {}
129
141
  : { authoringSkillDirectory }),
142
+ ...(authoringSkillDirectories === undefined
143
+ ? {}
144
+ : { authoringSkillDirectories }),
130
145
  ...(generatedPlugin === undefined
131
146
  ? {}
132
147
  : {
@@ -167,9 +182,12 @@ Run \`npm run plugin:status:cursor\` to inspect it and \`npm run plugin:uninstal
167
182
  ? `
168
183
  ## Development guidance
169
184
 
170
- The project-local \`.agents/skills/build-codemodekit-plugin\` skill gives compatible coding agents the CodeModeKit authoring and maintenance workflow.
185
+ The project-local \`.agents/skills/build-codemodekit-server\` and \`.agents/skills/author-codemode-skill\` skills let compatible coding agents build the server, then author domain-aware runtime guidance and maintain its Agent Plugin.
186
+
187
+ After the catalog is synchronized, ask the coding agent to use \`$author-codemode-skill\` before distributing the generated runtime skill.
171
188
  `
172
189
  : "";
190
+ const sourceSection = renderSourcesReadme(options.sources);
173
191
  return `# ${options.packageName}
174
192
 
175
193
  Code Mode MCP server generated by [CodeModeKit](https://github.com/stjbrown/codemodekit).
@@ -178,78 +196,58 @@ Code Mode MCP server generated by [CodeModeKit](https://github.com/stjbrown/code
178
196
 
179
197
  \`\`\`sh
180
198
  npm start
199
+
200
+ # Validate the Code Mode surface and sandbox without calling provider tools
201
+ npm run verify
181
202
  \`\`\`
182
203
 
183
- The downstream server is \`${options.serverName}\`. It wraps the \`${options.mcpName}\` source using this shell-free process configuration:
204
+ The downstream server is \`${options.serverName}\`.
184
205
 
185
- \`\`\`json
186
- ${JSON.stringify(options.mcpCommand, null, 2)}
187
- \`\`\`
206
+ ${sourceSection}
188
207
 
189
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.
190
211
  ${pluginSection}${authoringSection}
191
212
  `;
192
213
  }
193
214
  export function renderServer(options) {
194
215
  const policyFactory = options.policy === "allow-all" ? "allowAllToolCalls" : "denyAllToolCalls";
195
- if (options.agentPlugin !== undefined) {
196
- return renderAgentPluginServer(options, policyFactory);
197
- }
198
- return `import {
199
- ${policyFactory},
200
- mcp,
201
- serveCodeModeStdio,
202
- } from "codemodekit";
203
-
204
- await serveCodeModeStdio({
216
+ const sources = renderSources(options.sources);
217
+ const plugin = options.agentPlugin;
218
+ const nodeImport = plugin === undefined ? "" : 'import { fileURLToPath } from "node:url";\n\n';
219
+ const imports = [
220
+ policyFactory,
221
+ ...(plugin === undefined ? [] : ["createCodeModeMcp"]),
222
+ ...sources.imports,
223
+ "serveCodeModeStdio",
224
+ ].sort();
225
+ const application = `const options = {
205
226
  name: ${JSON.stringify(options.serverName)},
206
227
  version: "0.1.0",
207
228
  toolPolicy: ${policyFactory}(),
208
- sources: [
209
- mcp.stdio({
210
- name: ${JSON.stringify(options.mcpName)},
211
- command: ${JSON.stringify(options.mcpCommand.command)},
212
- args: ${JSON.stringify(options.mcpCommand.args)},
213
- }),
214
- ],
215
- });
229
+ sources: [${sources.expressions.join("")}],
230
+ };
216
231
  `;
217
- }
218
- function renderAgentPluginServer(options, policyFactory) {
219
- const skillName = options.agentPlugin?.skillName;
220
- if (skillName === undefined) {
221
- throw new TypeError("Agent Plugin skill name is required");
222
- }
223
- return `import { fileURLToPath } from "node:url";
224
-
225
- import {
226
- ${policyFactory},
227
- createCodeModeMcp,
228
- mcp,
229
- serveCodeModeStdio,
232
+ const launch = plugin === undefined
233
+ ? "await serveCodeModeStdio(options);\n"
234
+ : renderAgentPluginLaunch(plugin.skillName, options.serverName);
235
+ return `${nodeImport}import {
236
+ ${imports.map((name) => ` ${name},`).join("\n")}
230
237
  } from "codemodekit";
231
238
 
232
- const options = {
233
- name: ${JSON.stringify(options.serverName)},
234
- version: "0.1.0",
235
- toolPolicy: ${policyFactory}(),
236
- sources: [
237
- mcp.stdio({
238
- name: ${JSON.stringify(options.mcpName)},
239
- command: ${JSON.stringify(options.mcpCommand.command)},
240
- args: ${JSON.stringify(options.mcpCommand.args)},
241
- }),
242
- ],
243
- };
244
-
245
- if (process.argv.includes("--sync-plugin")) {
239
+ ${sources.prelude}${application}
240
+ ${launch}`;
241
+ }
242
+ function renderAgentPluginLaunch(skillName, serverName) {
243
+ return `if (process.argv.includes("--sync-plugin")) {
246
244
  const { syncAgentPluginSkill } = await import("create-codemodekit");
247
245
  const application = createCodeModeMcp(options);
248
246
  try {
249
247
  const result = await syncAgentPluginSkill({
250
248
  root: fileURLToPath(new URL("../", import.meta.url)),
251
249
  skillName: ${JSON.stringify(skillName)},
252
- serverName: ${JSON.stringify(options.serverName)},
250
+ serverName: ${JSON.stringify(serverName)},
253
251
  codeMode: application.codeMode,
254
252
  });
255
253
  process.stdout.write(
@@ -263,6 +261,115 @@ if (process.argv.includes("--sync-plugin")) {
263
261
  }
264
262
  `;
265
263
  }
264
+ function resolveSources(options) {
265
+ if ((options.source !== undefined || options.sources !== undefined) &&
266
+ (options.mcpName !== undefined || options.mcpCommand !== undefined)) {
267
+ throw new TypeError("Use sources, source, or mcpName/mcpCommand, not a combination");
268
+ }
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");
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;
311
+ }
312
+ if (options.mcpName === undefined || options.mcpCommand === undefined) {
313
+ throw new TypeError("A source or mcpName/mcpCommand pair is required");
314
+ }
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;
352
+ }
353
+ function validateCommand(command) {
354
+ return {
355
+ command: required(command.command, "MCP command"),
356
+ args: command.args.map((argument) => String(argument)),
357
+ };
358
+ }
359
+ function validateHttpUrl(value) {
360
+ const candidate = required(value, "MCP URL");
361
+ let url;
362
+ try {
363
+ url = new URL(candidate);
364
+ }
365
+ catch {
366
+ throw new TypeError(`Invalid MCP URL: ${candidate}`);
367
+ }
368
+ if (url.protocol !== "http:" && url.protocol !== "https:") {
369
+ throw new TypeError("MCP URL must use http or https");
370
+ }
371
+ return url.toString();
372
+ }
266
373
  async function ensureEmptyDirectory(directory) {
267
374
  try {
268
375
  const entries = await readdir(directory);
@@ -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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"}
@@ -0,0 +1,31 @@
1
+ import type { ParsedCommand } from "./command.js";
2
+ export type ScaffoldSource = {
3
+ readonly type: "mcp-stdio";
4
+ readonly name: string;
5
+ readonly command: ParsedCommand;
6
+ } | {
7
+ readonly type: "mcp-http";
8
+ readonly name: string;
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>>;
14
+ } | {
15
+ readonly type: "weather";
16
+ };
17
+ export interface RenderedSource {
18
+ readonly imports: readonly string[];
19
+ readonly prelude: string;
20
+ readonly expression: string;
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;
28
+ export declare function renderSource(source: ScaffoldSource): RenderedSource;
29
+ export declare function renderSourcesReadme(sources: readonly ScaffoldSource[]): string;
30
+ export declare function renderEnvExample(sources: readonly ScaffoldSource[]): string;
31
+ //# sourceMappingURL=source-template.d.ts.map
@@ -0,0 +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;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"}