create-codemodekit 0.3.0 → 0.4.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 +33 -5
- package/dist/agent-plugin.d.ts +3 -2
- package/dist/agent-plugin.d.ts.map +1 -1
- package/dist/agent-plugin.js +5 -2
- package/dist/agent-plugin.js.map +1 -1
- package/dist/authoring-skill.d.ts +8 -1
- package/dist/authoring-skill.d.ts.map +1 -1
- package/dist/authoring-skill.js +17 -38
- package/dist/authoring-skill.js.map +1 -1
- package/dist/cli.d.ts +14 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +250 -34
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/scaffold.d.ts +12 -6
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +100 -62
- package/dist/scaffold.js.map +1 -1
- package/dist/source-template.d.ts +21 -0
- package/dist/source-template.d.ts.map +1 -0
- package/dist/source-template.js +289 -0
- package/dist/source-template.js.map +1 -0
- package/package.json +5 -5
- package/skills/build-codemodekit-plugin/SKILL.md +0 -44
- package/skills/build-codemodekit-plugin/agents/openai.yaml +0 -4
- package/skills/build-codemodekit-plugin/references/generator.md +0 -42
- package/skills/build-codemodekit-plugin/references/plugin-layout.md +0 -38
- package/skills/build-codemodekit-plugin/references/programmatic-api.md +0 -48
package/dist/scaffold.js
CHANGED
|
@@ -3,16 +3,18 @@ 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 {
|
|
6
|
+
import { installProjectAuthoringSkills } from "./authoring-skill.js";
|
|
7
|
+
import { renderEnvExample, renderSource, renderSourceReadme, } from "./source-template.js";
|
|
7
8
|
const PACKAGE_VERSION = readPackageVersion();
|
|
8
9
|
// The generator and batteries-included runtime release independently.
|
|
9
|
-
const DEFAULT_CODEMODEKIT_VERSION = "^0.
|
|
10
|
+
const DEFAULT_CODEMODEKIT_VERSION = "^0.3.0";
|
|
10
11
|
const DEFAULT_CREATE_CODEMODEKIT_VERSION = `^${PACKAGE_VERSION}`;
|
|
11
12
|
export async function scaffoldCodeModeMcp(options) {
|
|
12
13
|
const cwd = options.cwd ?? process.cwd();
|
|
13
14
|
const directory = path.resolve(cwd, options.targetDirectory);
|
|
14
|
-
const
|
|
15
|
-
const
|
|
15
|
+
const source = resolveSource(options);
|
|
16
|
+
const sourceName = source.type === "weather" ? "weather" : source.name;
|
|
17
|
+
const serverName = required(options.serverName ?? `${sourceName}-code-mode`, "Server name");
|
|
16
18
|
const packageName = validPackageName(options.packageName ?? packageNameFromDirectory(directory));
|
|
17
19
|
const policy = options.policy ?? "allow-all";
|
|
18
20
|
const install = options.install ?? true;
|
|
@@ -23,7 +25,7 @@ export async function scaffoldCodeModeMcp(options) {
|
|
|
23
25
|
: normalizePortableName(agentPluginOptions.pluginName ?? path.basename(directory), "Plugin name");
|
|
24
26
|
const skillName = agentPluginOptions === undefined
|
|
25
27
|
? undefined
|
|
26
|
-
: normalizePortableName(agentPluginOptions.skillName ?? `use-${
|
|
28
|
+
: normalizePortableName(agentPluginOptions.skillName ?? `use-${sourceName}-codemode`, "Skill name");
|
|
27
29
|
const codemodekitVersion = required(options.codemodekitVersion ?? DEFAULT_CODEMODEKIT_VERSION, "CodeModeKit dependency version");
|
|
28
30
|
const createCodemodekitVersion = required(options.createCodemodekitVersion ?? DEFAULT_CREATE_CODEMODEKIT_VERSION, "create-codemodekit dependency version");
|
|
29
31
|
await ensureEmptyDirectory(directory);
|
|
@@ -59,28 +61,31 @@ export async function scaffoldCodeModeMcp(options) {
|
|
|
59
61
|
await Promise.all([
|
|
60
62
|
writeFile(path.join(directory, "package.json"), `${JSON.stringify(packageJson, null, 2)}\n`, "utf8"),
|
|
61
63
|
writeFile(path.join(directory, ".gitignore"), "node_modules/\n.env\n.env.*\n!.env.example\n", "utf8"),
|
|
64
|
+
writeFile(path.join(directory, ".env.example"), renderEnvExample(source), "utf8"),
|
|
62
65
|
writeFile(path.join(directory, "README.md"), renderProjectReadme({
|
|
63
66
|
packageName,
|
|
64
67
|
serverName,
|
|
65
|
-
|
|
66
|
-
mcpCommand: options.mcpCommand,
|
|
68
|
+
source,
|
|
67
69
|
policy,
|
|
68
70
|
agentPlugin: agentPluginOptions !== undefined,
|
|
69
71
|
authoringSkill: includeAuthoringSkill,
|
|
70
72
|
}), "utf8"),
|
|
71
73
|
writeFile(entrypoint, renderServer({
|
|
72
74
|
serverName,
|
|
73
|
-
|
|
74
|
-
mcpCommand: options.mcpCommand,
|
|
75
|
+
source,
|
|
75
76
|
policy,
|
|
76
77
|
...(skillName === undefined
|
|
77
78
|
? {}
|
|
78
79
|
: { agentPlugin: { skillName } }),
|
|
79
80
|
}), "utf8"),
|
|
80
81
|
]);
|
|
81
|
-
const
|
|
82
|
-
? await
|
|
82
|
+
const authoringSkills = includeAuthoringSkill
|
|
83
|
+
? await installProjectAuthoringSkills({ root: directory })
|
|
83
84
|
: undefined;
|
|
85
|
+
const authoringSkillDirectories = authoringSkills === undefined
|
|
86
|
+
? undefined
|
|
87
|
+
: Object.values(authoringSkills.directories).filter((value) => value !== undefined);
|
|
88
|
+
const authoringSkillDirectory = authoringSkillDirectories?.[0];
|
|
84
89
|
let generatedPlugin;
|
|
85
90
|
if (agentPluginOptions !== undefined &&
|
|
86
91
|
pluginName !== undefined &&
|
|
@@ -127,6 +132,9 @@ export async function scaffoldCodeModeMcp(options) {
|
|
|
127
132
|
...(authoringSkillDirectory === undefined
|
|
128
133
|
? {}
|
|
129
134
|
: { authoringSkillDirectory }),
|
|
135
|
+
...(authoringSkillDirectories === undefined
|
|
136
|
+
? {}
|
|
137
|
+
: { authoringSkillDirectories }),
|
|
130
138
|
...(generatedPlugin === undefined
|
|
131
139
|
? {}
|
|
132
140
|
: {
|
|
@@ -167,9 +175,12 @@ Run \`npm run plugin:status:cursor\` to inspect it and \`npm run plugin:uninstal
|
|
|
167
175
|
? `
|
|
168
176
|
## Development guidance
|
|
169
177
|
|
|
170
|
-
The project-local \`.agents/skills/build-codemodekit-
|
|
178
|
+
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.
|
|
179
|
+
|
|
180
|
+
After the catalog is synchronized, ask the coding agent to use \`$author-codemode-skill\` before distributing the generated runtime skill.
|
|
171
181
|
`
|
|
172
182
|
: "";
|
|
183
|
+
const sourceSection = renderSourceReadme(options.source);
|
|
173
184
|
return `# ${options.packageName}
|
|
174
185
|
|
|
175
186
|
Code Mode MCP server generated by [CodeModeKit](https://github.com/stjbrown/codemodekit).
|
|
@@ -180,11 +191,9 @@ Code Mode MCP server generated by [CodeModeKit](https://github.com/stjbrown/code
|
|
|
180
191
|
npm start
|
|
181
192
|
\`\`\`
|
|
182
193
|
|
|
183
|
-
The downstream server is \`${options.serverName}\`.
|
|
194
|
+
The downstream server is \`${options.serverName}\`.
|
|
184
195
|
|
|
185
|
-
|
|
186
|
-
${JSON.stringify(options.mcpCommand, null, 2)}
|
|
187
|
-
\`\`\`
|
|
196
|
+
${sourceSection}
|
|
188
197
|
|
|
189
198
|
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.
|
|
190
199
|
${pluginSection}${authoringSection}
|
|
@@ -192,64 +201,41 @@ ${pluginSection}${authoringSection}
|
|
|
192
201
|
}
|
|
193
202
|
export function renderServer(options) {
|
|
194
203
|
const policyFactory = options.policy === "allow-all" ? "allowAllToolCalls" : "denyAllToolCalls";
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
204
|
+
const source = renderSource(options.source);
|
|
205
|
+
const plugin = options.agentPlugin;
|
|
206
|
+
const nodeImport = plugin === undefined ? "" : 'import { fileURLToPath } from "node:url";\n\n';
|
|
207
|
+
const imports = [
|
|
208
|
+
policyFactory,
|
|
209
|
+
...(plugin === undefined ? [] : ["createCodeModeMcp"]),
|
|
210
|
+
...source.imports,
|
|
211
|
+
"serveCodeModeStdio",
|
|
212
|
+
].sort();
|
|
213
|
+
const application = `const options = {
|
|
205
214
|
name: ${JSON.stringify(options.serverName)},
|
|
206
215
|
version: "0.1.0",
|
|
207
216
|
toolPolicy: ${policyFactory}(),
|
|
208
|
-
sources: [
|
|
209
|
-
|
|
210
|
-
name: ${JSON.stringify(options.mcpName)},
|
|
211
|
-
command: ${JSON.stringify(options.mcpCommand.command)},
|
|
212
|
-
args: ${JSON.stringify(options.mcpCommand.args)},
|
|
213
|
-
}),
|
|
214
|
-
],
|
|
215
|
-
});
|
|
217
|
+
sources: [${source.expression}],
|
|
218
|
+
};
|
|
216
219
|
`;
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}
|
|
223
|
-
return `import { fileURLToPath } from "node:url";
|
|
224
|
-
|
|
225
|
-
import {
|
|
226
|
-
${policyFactory},
|
|
227
|
-
createCodeModeMcp,
|
|
228
|
-
mcp,
|
|
229
|
-
serveCodeModeStdio,
|
|
220
|
+
const launch = plugin === undefined
|
|
221
|
+
? "await serveCodeModeStdio(options);\n"
|
|
222
|
+
: renderAgentPluginLaunch(plugin.skillName, options.serverName);
|
|
223
|
+
return `${nodeImport}import {
|
|
224
|
+
${imports.map((name) => ` ${name},`).join("\n")}
|
|
230
225
|
} from "codemodekit";
|
|
231
226
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
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")) {
|
|
227
|
+
${source.prelude}${application}
|
|
228
|
+
${launch}`;
|
|
229
|
+
}
|
|
230
|
+
function renderAgentPluginLaunch(skillName, serverName) {
|
|
231
|
+
return `if (process.argv.includes("--sync-plugin")) {
|
|
246
232
|
const { syncAgentPluginSkill } = await import("create-codemodekit");
|
|
247
233
|
const application = createCodeModeMcp(options);
|
|
248
234
|
try {
|
|
249
235
|
const result = await syncAgentPluginSkill({
|
|
250
236
|
root: fileURLToPath(new URL("../", import.meta.url)),
|
|
251
237
|
skillName: ${JSON.stringify(skillName)},
|
|
252
|
-
serverName: ${JSON.stringify(
|
|
238
|
+
serverName: ${JSON.stringify(serverName)},
|
|
253
239
|
codeMode: application.codeMode,
|
|
254
240
|
});
|
|
255
241
|
process.stdout.write(
|
|
@@ -263,6 +249,58 @@ if (process.argv.includes("--sync-plugin")) {
|
|
|
263
249
|
}
|
|
264
250
|
`;
|
|
265
251
|
}
|
|
252
|
+
function resolveSource(options) {
|
|
253
|
+
if (options.source !== undefined &&
|
|
254
|
+
(options.mcpName !== undefined || options.mcpCommand !== undefined)) {
|
|
255
|
+
throw new TypeError("Use either source or mcpName/mcpCommand, not both");
|
|
256
|
+
}
|
|
257
|
+
if (options.source !== undefined) {
|
|
258
|
+
switch (options.source.type) {
|
|
259
|
+
case "weather":
|
|
260
|
+
return options.source;
|
|
261
|
+
case "mcp-stdio":
|
|
262
|
+
return {
|
|
263
|
+
type: "mcp-stdio",
|
|
264
|
+
name: required(options.source.name, "MCP name"),
|
|
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
|
+
};
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
if (options.mcpName === undefined || options.mcpCommand === undefined) {
|
|
276
|
+
throw new TypeError("A source or mcpName/mcpCommand pair is required");
|
|
277
|
+
}
|
|
278
|
+
return {
|
|
279
|
+
type: "mcp-stdio",
|
|
280
|
+
name: required(options.mcpName, "MCP name"),
|
|
281
|
+
command: validateCommand(options.mcpCommand),
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
function validateCommand(command) {
|
|
285
|
+
return {
|
|
286
|
+
command: required(command.command, "MCP command"),
|
|
287
|
+
args: command.args.map((argument) => String(argument)),
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
function validateHttpUrl(value) {
|
|
291
|
+
const candidate = required(value, "MCP URL");
|
|
292
|
+
let url;
|
|
293
|
+
try {
|
|
294
|
+
url = new URL(candidate);
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
throw new TypeError(`Invalid MCP URL: ${candidate}`);
|
|
298
|
+
}
|
|
299
|
+
if (url.protocol !== "http:" && url.protocol !== "https:") {
|
|
300
|
+
throw new TypeError("MCP URL must use http or https");
|
|
301
|
+
}
|
|
302
|
+
return url.toString();
|
|
303
|
+
}
|
|
266
304
|
async function ensureEmptyDirectory(directory) {
|
|
267
305
|
try {
|
|
268
306
|
const entries = await readdir(directory);
|
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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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
} | {
|
|
11
|
+
readonly type: "weather";
|
|
12
|
+
};
|
|
13
|
+
export interface RenderedSource {
|
|
14
|
+
readonly imports: readonly string[];
|
|
15
|
+
readonly prelude: string;
|
|
16
|
+
readonly expression: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function renderSource(source: ScaffoldSource): RenderedSource;
|
|
19
|
+
export declare function renderSourceReadme(source: ScaffoldSource): string;
|
|
20
|
+
export declare function renderEnvExample(source: ScaffoldSource): string;
|
|
21
|
+
//# 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;CACtB,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,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAqCnE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAejE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAY/D"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
export function renderSource(source) {
|
|
2
|
+
switch (source.type) {
|
|
3
|
+
case "mcp-stdio":
|
|
4
|
+
return {
|
|
5
|
+
imports: ["mcp"],
|
|
6
|
+
prelude: "",
|
|
7
|
+
expression: `
|
|
8
|
+
mcp.stdio({
|
|
9
|
+
name: ${JSON.stringify(source.name)},
|
|
10
|
+
command: ${JSON.stringify(source.command.command)},
|
|
11
|
+
args: ${JSON.stringify(source.command.args)},
|
|
12
|
+
}),
|
|
13
|
+
`,
|
|
14
|
+
};
|
|
15
|
+
case "mcp-http":
|
|
16
|
+
return {
|
|
17
|
+
imports: ["mcp"],
|
|
18
|
+
prelude: "",
|
|
19
|
+
expression: `
|
|
20
|
+
mcp.http({
|
|
21
|
+
name: ${JSON.stringify(source.name)},
|
|
22
|
+
url: ${JSON.stringify(source.url)},
|
|
23
|
+
}),
|
|
24
|
+
`,
|
|
25
|
+
};
|
|
26
|
+
case "weather":
|
|
27
|
+
return {
|
|
28
|
+
imports: ["defineTool", "local", "ToolError"],
|
|
29
|
+
prelude: renderWeatherPrelude(),
|
|
30
|
+
expression: `
|
|
31
|
+
local({
|
|
32
|
+
name: "weather",
|
|
33
|
+
tools: { findLocation, getCurrentWeather },
|
|
34
|
+
}),
|
|
35
|
+
`,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export function renderSourceReadme(source) {
|
|
40
|
+
switch (source.type) {
|
|
41
|
+
case "mcp-stdio":
|
|
42
|
+
return `It wraps the \`${source.name}\` MCP source using this shell-free process configuration:
|
|
43
|
+
|
|
44
|
+
\`\`\`json
|
|
45
|
+
${JSON.stringify(source.command, null, 2)}
|
|
46
|
+
\`\`\``;
|
|
47
|
+
case "mcp-http":
|
|
48
|
+
return `It wraps the \`${source.name}\` Streamable HTTP MCP source at \`${source.url}\`.`;
|
|
49
|
+
case "weather":
|
|
50
|
+
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
|
+
|
|
52
|
+
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
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export function renderEnvExample(source) {
|
|
56
|
+
switch (source.type) {
|
|
57
|
+
case "weather":
|
|
58
|
+
return `# Optional Open-Meteo customer or self-hosted endpoints.
|
|
59
|
+
# OPEN_METEO_GEOCODING_URL=https://geocoding-api.open-meteo.com/v1/search
|
|
60
|
+
# OPEN_METEO_FORECAST_URL=https://api.open-meteo.com/v1/forecast
|
|
61
|
+
`;
|
|
62
|
+
case "mcp-http":
|
|
63
|
+
return "# Add any credentials required by the remote MCP source here.\n";
|
|
64
|
+
case "mcp-stdio":
|
|
65
|
+
return "# Add any credentials required by the upstream MCP process here.\n";
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function renderWeatherPrelude() {
|
|
69
|
+
return `const geocodingEndpoint =
|
|
70
|
+
process.env.OPEN_METEO_GEOCODING_URL ??
|
|
71
|
+
"https://geocoding-api.open-meteo.com/v1/search";
|
|
72
|
+
const forecastEndpoint =
|
|
73
|
+
process.env.OPEN_METEO_FORECAST_URL ??
|
|
74
|
+
"https://api.open-meteo.com/v1/forecast";
|
|
75
|
+
|
|
76
|
+
const findLocation = defineTool({
|
|
77
|
+
description: "Find the best matching city and its coordinates",
|
|
78
|
+
inputSchema: {
|
|
79
|
+
type: "object",
|
|
80
|
+
properties: {
|
|
81
|
+
query: {
|
|
82
|
+
type: "string",
|
|
83
|
+
minLength: 2,
|
|
84
|
+
maxLength: 200,
|
|
85
|
+
description: "City, postal code, or city and administrative area",
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
required: ["query"],
|
|
89
|
+
additionalProperties: false,
|
|
90
|
+
},
|
|
91
|
+
outputSchema: {
|
|
92
|
+
type: "object",
|
|
93
|
+
properties: {
|
|
94
|
+
name: { type: "string" },
|
|
95
|
+
country: { type: "string" },
|
|
96
|
+
latitude: { type: "number" },
|
|
97
|
+
longitude: { type: "number" },
|
|
98
|
+
timezone: { type: "string" },
|
|
99
|
+
},
|
|
100
|
+
required: ["name", "country", "latitude", "longitude", "timezone"],
|
|
101
|
+
additionalProperties: false,
|
|
102
|
+
},
|
|
103
|
+
annotations: {
|
|
104
|
+
title: "Find Location",
|
|
105
|
+
readOnlyHint: true,
|
|
106
|
+
destructiveHint: false,
|
|
107
|
+
idempotentHint: true,
|
|
108
|
+
openWorldHint: true,
|
|
109
|
+
},
|
|
110
|
+
execute: async ({ query }, { signal }) => {
|
|
111
|
+
const url = new URL(geocodingEndpoint);
|
|
112
|
+
url.searchParams.set("name", query);
|
|
113
|
+
url.searchParams.set("count", "1");
|
|
114
|
+
url.searchParams.set("language", "en");
|
|
115
|
+
url.searchParams.set("format", "json");
|
|
116
|
+
const payload = await fetchJson(url, signal, "Location lookup");
|
|
117
|
+
const results = Array.isArray(payload.results) ? payload.results : [];
|
|
118
|
+
const match = asRecord(results[0]);
|
|
119
|
+
if (match === undefined) {
|
|
120
|
+
throw new ToolError("No matching location was found");
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
name: stringField(match, "name", "Location lookup"),
|
|
124
|
+
country: optionalString(match.country),
|
|
125
|
+
latitude: numberField(match, "latitude", "Location lookup"),
|
|
126
|
+
longitude: numberField(match, "longitude", "Location lookup"),
|
|
127
|
+
timezone: optionalString(match.timezone),
|
|
128
|
+
};
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
const getCurrentWeather = defineTool({
|
|
133
|
+
description: "Get current weather for latitude and longitude",
|
|
134
|
+
inputSchema: {
|
|
135
|
+
type: "object",
|
|
136
|
+
properties: {
|
|
137
|
+
latitude: { type: "number", minimum: -90, maximum: 90 },
|
|
138
|
+
longitude: { type: "number", minimum: -180, maximum: 180 },
|
|
139
|
+
},
|
|
140
|
+
required: ["latitude", "longitude"],
|
|
141
|
+
additionalProperties: false,
|
|
142
|
+
},
|
|
143
|
+
outputSchema: {
|
|
144
|
+
type: "object",
|
|
145
|
+
properties: {
|
|
146
|
+
time: { type: "string" },
|
|
147
|
+
temperature: { type: "number" },
|
|
148
|
+
apparentTemperature: { type: "number" },
|
|
149
|
+
relativeHumidity: { type: "number" },
|
|
150
|
+
precipitation: { type: "number" },
|
|
151
|
+
weatherCode: { type: "number" },
|
|
152
|
+
condition: { type: "string" },
|
|
153
|
+
windSpeed: { type: "number" },
|
|
154
|
+
units: {
|
|
155
|
+
type: "object",
|
|
156
|
+
properties: {
|
|
157
|
+
temperature: { type: "string" },
|
|
158
|
+
precipitation: { type: "string" },
|
|
159
|
+
windSpeed: { type: "string" },
|
|
160
|
+
},
|
|
161
|
+
required: ["temperature", "precipitation", "windSpeed"],
|
|
162
|
+
additionalProperties: false,
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
required: [
|
|
166
|
+
"time",
|
|
167
|
+
"temperature",
|
|
168
|
+
"apparentTemperature",
|
|
169
|
+
"relativeHumidity",
|
|
170
|
+
"precipitation",
|
|
171
|
+
"weatherCode",
|
|
172
|
+
"condition",
|
|
173
|
+
"windSpeed",
|
|
174
|
+
"units",
|
|
175
|
+
],
|
|
176
|
+
additionalProperties: false,
|
|
177
|
+
},
|
|
178
|
+
annotations: {
|
|
179
|
+
title: "Get Current Weather",
|
|
180
|
+
readOnlyHint: true,
|
|
181
|
+
destructiveHint: false,
|
|
182
|
+
idempotentHint: true,
|
|
183
|
+
openWorldHint: true,
|
|
184
|
+
},
|
|
185
|
+
execute: async ({ latitude, longitude }, { signal }) => {
|
|
186
|
+
const url = new URL(forecastEndpoint);
|
|
187
|
+
url.searchParams.set("latitude", String(latitude));
|
|
188
|
+
url.searchParams.set("longitude", String(longitude));
|
|
189
|
+
url.searchParams.set(
|
|
190
|
+
"current",
|
|
191
|
+
"temperature_2m,apparent_temperature,relative_humidity_2m,precipitation,weather_code,wind_speed_10m",
|
|
192
|
+
);
|
|
193
|
+
url.searchParams.set("timezone", "auto");
|
|
194
|
+
const payload = await fetchJson(url, signal, "Weather lookup");
|
|
195
|
+
const current = requiredRecord(payload.current, "Weather lookup");
|
|
196
|
+
const units = requiredRecord(payload.current_units, "Weather lookup");
|
|
197
|
+
const weatherCode = numberField(current, "weather_code", "Weather lookup");
|
|
198
|
+
return {
|
|
199
|
+
time: stringField(current, "time", "Weather lookup"),
|
|
200
|
+
temperature: numberField(current, "temperature_2m", "Weather lookup"),
|
|
201
|
+
apparentTemperature: numberField(
|
|
202
|
+
current,
|
|
203
|
+
"apparent_temperature",
|
|
204
|
+
"Weather lookup",
|
|
205
|
+
),
|
|
206
|
+
relativeHumidity: numberField(
|
|
207
|
+
current,
|
|
208
|
+
"relative_humidity_2m",
|
|
209
|
+
"Weather lookup",
|
|
210
|
+
),
|
|
211
|
+
precipitation: numberField(current, "precipitation", "Weather lookup"),
|
|
212
|
+
weatherCode,
|
|
213
|
+
condition: weatherCondition(weatherCode),
|
|
214
|
+
windSpeed: numberField(current, "wind_speed_10m", "Weather lookup"),
|
|
215
|
+
units: {
|
|
216
|
+
temperature: stringField(units, "temperature_2m", "Weather lookup"),
|
|
217
|
+
precipitation: stringField(units, "precipitation", "Weather lookup"),
|
|
218
|
+
windSpeed: stringField(units, "wind_speed_10m", "Weather lookup"),
|
|
219
|
+
},
|
|
220
|
+
};
|
|
221
|
+
},
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
async function fetchJson(url, signal, label) {
|
|
225
|
+
try {
|
|
226
|
+
const response = await fetch(url, {
|
|
227
|
+
signal,
|
|
228
|
+
headers: { accept: "application/json" },
|
|
229
|
+
});
|
|
230
|
+
if (!response.ok) {
|
|
231
|
+
throw new ToolError(label + " returned HTTP " + response.status);
|
|
232
|
+
}
|
|
233
|
+
return requiredRecord(await response.json(), label);
|
|
234
|
+
} catch (error) {
|
|
235
|
+
if (signal.aborted || error instanceof ToolError) throw error;
|
|
236
|
+
throw new ToolError(label + " failed", { cause: error });
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
function requiredRecord(value, label) {
|
|
241
|
+
const record = asRecord(value);
|
|
242
|
+
if (record === undefined) {
|
|
243
|
+
throw new ToolError(label + " returned an unexpected response");
|
|
244
|
+
}
|
|
245
|
+
return record;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
function asRecord(value) {
|
|
249
|
+
return typeof value === "object" && value !== null && !Array.isArray(value)
|
|
250
|
+
? value
|
|
251
|
+
: undefined;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
function stringField(record, key, label) {
|
|
255
|
+
const value = record[key];
|
|
256
|
+
if (typeof value !== "string") {
|
|
257
|
+
throw new ToolError(label + " returned an unexpected response");
|
|
258
|
+
}
|
|
259
|
+
return value;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
function numberField(record, key, label) {
|
|
263
|
+
const value = record[key];
|
|
264
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
265
|
+
throw new ToolError(label + " returned an unexpected response");
|
|
266
|
+
}
|
|
267
|
+
return value;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
function optionalString(value) {
|
|
271
|
+
return typeof value === "string" ? value : "";
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
function weatherCondition(code) {
|
|
275
|
+
if (code === 0) return "clear sky";
|
|
276
|
+
if (code <= 3) return "partly cloudy";
|
|
277
|
+
if (code === 45 || code === 48) return "fog";
|
|
278
|
+
if (code <= 57) return "drizzle";
|
|
279
|
+
if (code <= 67) return "rain";
|
|
280
|
+
if (code <= 77) return "snow";
|
|
281
|
+
if (code <= 82) return "rain showers";
|
|
282
|
+
if (code <= 86) return "snow showers";
|
|
283
|
+
if (code >= 95) return "thunderstorm";
|
|
284
|
+
return "unknown";
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
`;
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=source-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-template.js","sourceRoot":"","sources":["../src/source-template.ts"],"names":[],"mappings":"AAuBA,MAAM,UAAU,YAAY,CAAC,MAAsB;IACjD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,WAAW;YACd,OAAO;gBACL,OAAO,EAAE,CAAC,KAAK,CAAC;gBAChB,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE;;cAEN,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;iBACxB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;cACzC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;;GAE9C;aACI,CAAC;QACJ,KAAK,UAAU;YACb,OAAO;gBACL,OAAO,EAAE,CAAC,KAAK,CAAC;gBAChB,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE;;cAEN,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;aAC5B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;;GAEpC;aACI,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO;gBACL,OAAO,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC;gBAC7C,OAAO,EAAE,oBAAoB,EAAE;gBAC/B,UAAU,EAAE;;;;;GAKjB;aACI,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,WAAW;YACd,OAAO,kBAAkB,MAAM,CAAC,IAAI;;;EAGxC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;OAClC,CAAC;QACJ,KAAK,UAAU;YACb,OAAO,kBAAkB,MAAM,CAAC,IAAI,sCAAsC,MAAM,CAAC,GAAG,KAAK,CAAC;QAC5F,KAAK,SAAS;YACZ,OAAO;;kSAEqR,CAAC;IACjS,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAsB;IACrD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO;;;CAGZ,CAAC;QACE,KAAK,UAAU;YACb,OAAO,iEAAiE,CAAC;QAC3E,KAAK,WAAW;YACd,OAAO,oEAAoE,CAAC;IAChF,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0NR,CAAC;AACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-codemodekit",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Scaffold runnable CodeModeKit servers and portable Agent Plugins
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"description": "Scaffold runnable CodeModeKit servers, Local Tool starters, and portable Agent Plugins.",
|
|
5
5
|
"author": "Stephen Brown",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"repository": {
|
|
@@ -33,8 +33,7 @@
|
|
|
33
33
|
"files": [
|
|
34
34
|
"dist/*.js",
|
|
35
35
|
"dist/*.d.ts",
|
|
36
|
-
"dist/*.map"
|
|
37
|
-
"skills/**/*"
|
|
36
|
+
"dist/*.map"
|
|
38
37
|
],
|
|
39
38
|
"keywords": [
|
|
40
39
|
"code-mode",
|
|
@@ -48,6 +47,7 @@
|
|
|
48
47
|
"access": "public"
|
|
49
48
|
},
|
|
50
49
|
"dependencies": {
|
|
51
|
-
"esbuild": "0.28.1"
|
|
50
|
+
"esbuild": "0.28.1",
|
|
51
|
+
"@codemodekit/skills": "0.1.0"
|
|
52
52
|
}
|
|
53
53
|
}
|