forgecraft-mcp 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.
- package/README.md +95 -61
- package/dist/cli.d.ts +15 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +345 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -40
- package/dist/index.js.map +1 -1
- package/dist/tools/add-module.d.ts +1 -1
- package/dist/tools/audit.js +2 -2
- package/dist/tools/audit.js.map +1 -1
- package/dist/tools/convert.js +4 -4
- package/dist/tools/convert.js.map +1 -1
- package/dist/tools/forgecraft-router.d.ts +127 -0
- package/dist/tools/forgecraft-router.d.ts.map +1 -0
- package/dist/tools/forgecraft-router.js +305 -0
- package/dist/tools/forgecraft-router.js.map +1 -0
- package/dist/tools/refresh-project.js +5 -2
- package/dist/tools/refresh-project.js.map +1 -1
- package/dist/tools/scaffold.d.ts +3 -3
- package/dist/tools/sentinel.d.ts +28 -0
- package/dist/tools/sentinel.d.ts.map +1 -0
- package/dist/tools/sentinel.js +45 -0
- package/dist/tools/sentinel.js.map +1 -0
- package/dist/tools/setup-project.d.ts +3 -3
- package/dist/tools/setup-project.js +8 -6
- package/dist/tools/setup-project.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,60 +1,40 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* ForgeCraft
|
|
3
|
+
* ForgeCraft — Entry Point.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Dual-mode binary: runs as a CLI tool when subcommands are provided,
|
|
6
|
+
* or starts the MCP server in stdio mode when invoked without subcommands.
|
|
7
|
+
*
|
|
8
|
+
* CLI usage: npx forgecraft-mcp setup .
|
|
9
|
+
* MCP usage: npx forgecraft-mcp (or: npx forgecraft-mcp serve)
|
|
7
10
|
*/
|
|
8
11
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
9
12
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
10
13
|
import { createLogger } from "./shared/logger/index.js";
|
|
11
|
-
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
import { scaffoldProjectSchema, scaffoldProjectHandler, } from "./tools/scaffold.js";
|
|
15
|
-
import { generateInstructionsSchema, generateInstructionsHandler, } from "./tools/generate-claude-md.js";
|
|
16
|
-
import { auditProjectSchema, auditProjectHandler, } from "./tools/audit.js";
|
|
17
|
-
import { addHookSchema, addHookHandler, } from "./tools/add-hook.js";
|
|
18
|
-
import { addModuleSchema, addModuleHandler, } from "./tools/add-module.js";
|
|
19
|
-
import { configureMcpSchema, configureMcpHandler, } from "./tools/configure-mcp.js";
|
|
20
|
-
import { getNfrTemplateSchema, getNfrTemplateHandler, } from "./tools/get-nfr.js";
|
|
21
|
-
import { getDesignReferenceSchema, getDesignReferenceHandler, } from "./tools/get-reference.js";
|
|
22
|
-
import { convertExistingSchema, convertExistingHandler, } from "./tools/convert.js";
|
|
23
|
-
import { reviewProjectSchema, reviewProjectHandler, } from "./tools/review.js";
|
|
24
|
-
import { setupProjectSchema, setupProjectHandler, } from "./tools/setup-project.js";
|
|
25
|
-
import { refreshProjectSchema, refreshProjectHandler, } from "./tools/refresh-project.js";
|
|
26
|
-
// ── Server Setup ─────────────────────────────────────────────────────
|
|
14
|
+
import { runCli } from "./cli.js";
|
|
15
|
+
import { sentinelSchema, sentinelHandler } from "./tools/sentinel.js";
|
|
16
|
+
// ── Entry Point ──────────────────────────────────────────────────────
|
|
27
17
|
const logger = createLogger("server");
|
|
28
|
-
async function
|
|
18
|
+
async function startMcpServer() {
|
|
29
19
|
logger.info("Starting ForgeCraft MCP server");
|
|
30
20
|
const server = new McpServer({
|
|
31
21
|
name: "forgecraft",
|
|
32
|
-
version: "0.
|
|
22
|
+
version: "0.5.0",
|
|
33
23
|
});
|
|
34
|
-
// ──
|
|
35
|
-
server.tool("
|
|
36
|
-
server.tool("list_hooks", "List available hooks, optionally filtered by tags.", listHooksSchema.shape, listHooksHandler);
|
|
37
|
-
server.tool("list_skills", "List available skills (Claude Code custom commands), optionally filtered by tags. Skills are reusable workflow prompts installed to .claude/commands/ and invoked via /project:<name>.", listSkillsSchema.shape, listSkillsHandler);
|
|
38
|
-
server.tool("classify_project", "Analyze a project directory and/or description to suggest classification tags.", classifyProjectSchema.shape, classifyProjectHandler);
|
|
39
|
-
server.tool("scaffold_project", "Generate full project structure (instruction files, Status.md, hooks, skills, folders) from tags. Supports multiple AI assistant targets.", scaffoldProjectSchema.shape, scaffoldProjectHandler);
|
|
40
|
-
server.tool("generate_instructions", "Generate AI assistant instruction files for given tags. Supports multiple targets: Claude (CLAUDE.md), Cursor (.cursor/rules/), GitHub Copilot (.github/copilot-instructions.md), Windsurf (.windsurfrules), Cline (.clinerules), Aider (CONVENTIONS.md). Adds SOLID principles, testing pyramid, architecture patterns, CI/CD, and domain-specific standards from 112 curated blocks. Can merge with existing files to preserve custom sections.", generateInstructionsSchema.shape, generateInstructionsHandler);
|
|
41
|
-
server.tool("audit_project", "Audit project against template standards and report violations with a score.", auditProjectSchema.shape, auditProjectHandler);
|
|
42
|
-
server.tool("add_hook", "Add a specific quality-gate hook script to the project.", addHookSchema.shape, addHookHandler);
|
|
43
|
-
server.tool("add_module", "Scaffold a new feature module following established patterns.", addModuleSchema.shape, addModuleHandler);
|
|
44
|
-
server.tool("configure_mcp", "Generate .claude/settings.json with recommended MCP servers for active tags.", configureMcpSchema.shape, configureMcpHandler);
|
|
45
|
-
server.tool("get_nfr_template", "Get NFR (Non-Functional Requirement) sections for specific tags.", getNfrTemplateSchema.shape, getNfrTemplateHandler);
|
|
46
|
-
server.tool("get_design_reference", "Get design reference patterns (DDD, CQRS, GoF) on demand. These are NOT included in instruction files to save tokens — request them when you need architectural guidance.", getDesignReferenceSchema.shape, getDesignReferenceHandler);
|
|
47
|
-
server.tool("convert_existing", "Analyze an existing codebase and generate a phased migration plan.", convertExistingSchema.shape, convertExistingHandler);
|
|
48
|
-
server.tool("review_project", "Generate a structured code review checklist for active tags. Covers architecture, code quality, tests, and performance with per-issue guidance format.", reviewProjectSchema.shape, reviewProjectHandler);
|
|
49
|
-
server.tool("setup_project", "RECOMMENDED FIRST STEP — generates production-grade AI assistant instruction files from 112 curated template blocks. Supports Claude, Cursor, Copilot, Windsurf, Cline, and Aider. Analyzes project, auto-detects tags from code/dependencies, creates forgecraft.yaml config, and adds engineering standards (SOLID, testing pyramid, architecture patterns, CI/CD, domain rules). Works for new and existing projects. Supports tier-based content filtering (core/recommended/optional).", setupProjectSchema.shape, setupProjectHandler);
|
|
50
|
-
server.tool("refresh_project", "Re-analyze a project that already has forgecraft.yaml. Detects tag drift (e.g. new framework added), proposes adding/removing tags, shows content impact. Updates instruction files for all configured AI assistant targets. Preview changes before applying.", refreshProjectSchema.shape, refreshProjectHandler);
|
|
51
|
-
// ── Start Stdio Transport ────────────────────────────────────────
|
|
24
|
+
// ── Single sentinel tool (~200 tokens vs ~1,500 for full suite) ──
|
|
25
|
+
server.tool("forgecraft", "Setup-time tool for engineering standards. Diagnoses project state and recommends CLI commands to run. Remove this MCP server after setup is complete to save tokens.", sentinelSchema.shape, sentinelHandler);
|
|
52
26
|
const transport = new StdioServerTransport();
|
|
53
27
|
await server.connect(transport);
|
|
54
28
|
logger.info("ForgeCraft MCP server running on stdio");
|
|
55
29
|
}
|
|
30
|
+
async function main() {
|
|
31
|
+
const cliHandled = await runCli(process.argv);
|
|
32
|
+
if (!cliHandled) {
|
|
33
|
+
await startMcpServer();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
56
36
|
main().catch((error) => {
|
|
57
|
-
logger.error("Fatal
|
|
37
|
+
logger.error("Fatal error", {
|
|
58
38
|
error: error instanceof Error ? error.message : String(error),
|
|
59
39
|
});
|
|
60
40
|
process.exit(1);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtE,wEAAwE;AAExE,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;AAEtC,KAAK,UAAU,cAAc;IAC3B,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,oEAAoE;IACpE,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,uKAAuK,EACvK,cAAc,CAAC,KAAK,EACpB,eAAe,CAChB,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,cAAc,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE;QAC1B,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;KAC9D,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -11,8 +11,8 @@ export declare const addModuleSchema: z.ZodObject<{
|
|
|
11
11
|
project_dir: z.ZodString;
|
|
12
12
|
}, "strip", z.ZodTypeAny, {
|
|
13
13
|
tags: string[];
|
|
14
|
-
project_dir: string;
|
|
15
14
|
language: "typescript" | "python";
|
|
15
|
+
project_dir: string;
|
|
16
16
|
module_name: string;
|
|
17
17
|
}, {
|
|
18
18
|
project_dir: string;
|
package/dist/tools/audit.js
CHANGED
|
@@ -89,13 +89,13 @@ function generateRecommendations(failing) {
|
|
|
89
89
|
const recommendations = [];
|
|
90
90
|
const failingChecks = new Set(failing.map((f) => f.check));
|
|
91
91
|
if (failingChecks.has("instruction_file_exists")) {
|
|
92
|
-
recommendations.push("Run `
|
|
92
|
+
recommendations.push("Run `npx forgecraft-mcp generate .` to create instruction files for your AI assistant.");
|
|
93
93
|
}
|
|
94
94
|
if (failingChecks.has("status_md_exists") || failingChecks.has("status_md_current")) {
|
|
95
95
|
recommendations.push("Create/update Status.md — update it at the end of each coding session.");
|
|
96
96
|
}
|
|
97
97
|
if (failingChecks.has("hooks_installed")) {
|
|
98
|
-
recommendations.push("Run `
|
|
98
|
+
recommendations.push("Run `npx forgecraft-mcp scaffold .` to generate project structure and install quality gate hooks.");
|
|
99
99
|
}
|
|
100
100
|
if (failingChecks.has("hardcoded_url") || failingChecks.has("hardcoded_credential")) {
|
|
101
101
|
recommendations.push("Move hardcoded values to config module or environment variables.");
|
package/dist/tools/audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/tools/audit.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/tools/audit.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/convert.js
CHANGED
|
@@ -68,7 +68,7 @@ export async function convertExistingHandler(args) {
|
|
|
68
68
|
text += phase.steps.map((s, i) => `${i + 1}. ${s}`).join("\n");
|
|
69
69
|
text += "\n\n";
|
|
70
70
|
}
|
|
71
|
-
text += `---\n_Run \`
|
|
71
|
+
text += `---\n_Run \`npx forgecraft-mcp scaffold . --dry-run\` to preview what would be generated._`;
|
|
72
72
|
return { content: [{ type: "text", text }] };
|
|
73
73
|
}
|
|
74
74
|
function buildMigrationPlan(completeness, antiPatterns, _tags) {
|
|
@@ -77,7 +77,7 @@ function buildMigrationPlan(completeness, antiPatterns, _tags) {
|
|
|
77
77
|
// Phase 1: Foundation (always first)
|
|
78
78
|
const foundationSteps = [];
|
|
79
79
|
if (missingChecks.has("instruction_file_exists")) {
|
|
80
|
-
foundationSteps.push("Generate instruction files
|
|
80
|
+
foundationSteps.push("Generate instruction files: `npx forgecraft-mcp generate .`");
|
|
81
81
|
}
|
|
82
82
|
if (missingChecks.has("status_md_exists")) {
|
|
83
83
|
foundationSteps.push("Create Status.md for session continuity");
|
|
@@ -96,7 +96,7 @@ function buildMigrationPlan(completeness, antiPatterns, _tags) {
|
|
|
96
96
|
// Phase 2: Quality Gates
|
|
97
97
|
const qualitySteps = [];
|
|
98
98
|
if (missingChecks.has("hooks_installed")) {
|
|
99
|
-
qualitySteps.push("Install quality gate hooks
|
|
99
|
+
qualitySteps.push("Install quality gate hooks: `npx forgecraft-mcp scaffold .`");
|
|
100
100
|
}
|
|
101
101
|
qualitySteps.push("Configure .gitignore for build artifacts and secrets");
|
|
102
102
|
qualitySteps.push("Set up CI pipeline if not present");
|
|
@@ -136,7 +136,7 @@ function buildMigrationPlan(completeness, antiPatterns, _tags) {
|
|
|
136
136
|
docSteps.push("Create docs/PRD.md documenting requirements");
|
|
137
137
|
}
|
|
138
138
|
if (missingChecks.has("tech_spec_exists")) {
|
|
139
|
-
docSteps.push("Create docs/TechSpec.md
|
|
139
|
+
docSteps.push("Create docs/TechSpec.md — run `npx forgecraft-mcp list` for NFR reference sections");
|
|
140
140
|
}
|
|
141
141
|
if (missingChecks.has("shared_modules")) {
|
|
142
142
|
docSteps.push("Create shared modules (config, errors, logging) in src/shared/");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/tools/convert.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/tools/convert.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,wEAAwE;AAExE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAA4C,CAAC,CAAC;SAC3D,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,wCAAwC,CAAC;IACrD,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SACvB,OAAO,CAAC,OAAO,CAAC;SAChB,QAAQ,CAAC,sEAAsE,CAAC;CACpF,CAAC,CAAC;AAEH,wEAAwE;AAExE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAA2C;IAE3C,MAAM,IAAI,GAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QACjD,CAAC,CAAE,IAAI,CAAC,IAAc;QACtB,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAW,CAAC;IAE3C,iCAAiC;IACjC,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,KAAK,MAAM;QAC7C,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;QACpC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAErC,gCAAgC;IAChC,MAAM,MAAM,GAAG,kBAAkB,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAEpE,gBAAgB;IAChB,IAAI,IAAI,GAAG,uBAAuB,CAAC;IACnC,IAAI,IAAI,oBAAoB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACpE,IAAI,IAAI,mBAAmB,IAAI,CAAC,UAAU,MAAM,CAAC;IAEjD,qBAAqB;IACrB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,IAAI,yBAAyB,CAAC;QAClC,IAAI,IAAI,UAAU;aACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;aAC7F,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,IAAI,IAAI,MAAM,CAAC;IACjB,CAAC;IAED,oBAAoB;IACpB,IAAI,IAAI,iCAAiC,QAAQ,cAAc,CAAC;IAEhE,gBAAgB;IAChB,IAAI,IAAI,yBAAyB,CAAC;IAClC,IAAI,IAAI,cAAc,YAAY,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;IACtD,IAAI,IAAI,cAAc,YAAY,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;IACtD,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,IAAI,IAAI,8BAA8B,YAAY,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC;IAC3E,CAAC;IACD,IAAI,IAAI,IAAI,CAAC;IAEb,mBAAmB;IACnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,MAAM,KAAK,CAAC,KAAK,IAAI,CAAC;QAC9B,IAAI,IAAI,eAAe,KAAK,CAAC,MAAM,gBAAgB,KAAK,CAAC,IAAI,MAAM,CAAC;QACpE,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,IAAI,MAAM,CAAC;IACjB,CAAC;IAED,IAAI,IAAI,4FAA4F,CAAC;IAErG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC/C,CAAC;AAWD,SAAS,kBAAkB,CACzB,YAAkD,EAClD,YAAiD,EACjD,KAAY;IAEZ,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAExE,qCAAqC;IACrC,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,IAAI,aAAa,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACjD,eAAe,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC1C,eAAe,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC5C,eAAe,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,eAAe;SACvB,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB;IACzB,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACzC,YAAY,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IACnF,CAAC;IACD,YAAY,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IAC1E,YAAY,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAEvD,MAAM,CAAC,IAAI,CAAC;QACV,KAAK,EAAE,wBAAwB;QAC/B,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,YAAY;KACpB,CAAC,CAAC;IAEH,iDAAiD;IACjD,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3E,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,eAAe,CAAC,CAAC;QACzF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,SAAS,CAAC,IAAI,CAAC,OAAO,aAAa,CAAC,MAAM,6CAA6C,CAAC,CAAC;QAC3F,CAAC;QAED,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,gBAAgB,CAAC,CAAC;QAClF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,MAAM,8CAA8C,CAAC,CAAC;QACvF,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC;QACjF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC,YAAY,SAAS,CAAC,MAAM,iCAAiC,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,6BAA6B;gBACpC,MAAM,EAAE,YAAY;gBACpB,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IACtG,CAAC;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACxC,QAAQ,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,uCAAuC;YAC9C,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified forgecraft tool router.
|
|
3
|
+
*
|
|
4
|
+
* Consolidates 15 individual MCP tools into a single tool with an `action`
|
|
5
|
+
* discriminator. This dramatically reduces token overhead since MCP sends
|
|
6
|
+
* every tool schema with every request (~70% reduction from 16→2 tools).
|
|
7
|
+
*
|
|
8
|
+
* All business logic lives in the original handler files — this module
|
|
9
|
+
* is a thin dispatch layer that maps unified params to handler-specific args.
|
|
10
|
+
*/
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
export declare const forgecraftSchema: z.ZodObject<{
|
|
13
|
+
action: z.ZodEnum<[string, ...string[]]>;
|
|
14
|
+
project_dir: z.ZodOptional<z.ZodString>;
|
|
15
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">>;
|
|
16
|
+
project_name: z.ZodOptional<z.ZodString>;
|
|
17
|
+
output_targets: z.ZodOptional<z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">>;
|
|
18
|
+
tier: z.ZodOptional<z.ZodEnum<[string, ...string[]]>>;
|
|
19
|
+
resource: z.ZodOptional<z.ZodEnum<[string, ...string[]]>>;
|
|
20
|
+
name: z.ZodOptional<z.ZodString>;
|
|
21
|
+
language: z.ZodOptional<z.ZodEnum<["typescript", "python"]>>;
|
|
22
|
+
description: z.ZodOptional<z.ZodString>;
|
|
23
|
+
dry_run: z.ZodOptional<z.ZodBoolean>;
|
|
24
|
+
force: z.ZodOptional<z.ZodBoolean>;
|
|
25
|
+
apply: z.ZodOptional<z.ZodBoolean>;
|
|
26
|
+
merge: z.ZodOptional<z.ZodBoolean>;
|
|
27
|
+
scope: z.ZodOptional<z.ZodEnum<["comprehensive", "focused"]>>;
|
|
28
|
+
scan_depth: z.ZodOptional<z.ZodEnum<["quick", "full"]>>;
|
|
29
|
+
tag: z.ZodOptional<z.ZodEnum<[string, ...string[]]>>;
|
|
30
|
+
add_tags: z.ZodOptional<z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">>;
|
|
31
|
+
remove_tags: z.ZodOptional<z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">>;
|
|
32
|
+
include_anti_patterns: z.ZodOptional<z.ZodBoolean>;
|
|
33
|
+
custom_servers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
34
|
+
command: z.ZodString;
|
|
35
|
+
args: z.ZodArray<z.ZodString, "many">;
|
|
36
|
+
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
37
|
+
}, "strip", z.ZodTypeAny, {
|
|
38
|
+
command: string;
|
|
39
|
+
args: string[];
|
|
40
|
+
env?: Record<string, string> | undefined;
|
|
41
|
+
}, {
|
|
42
|
+
command: string;
|
|
43
|
+
args: string[];
|
|
44
|
+
env?: Record<string, string> | undefined;
|
|
45
|
+
}>>>;
|
|
46
|
+
auto_approve_tools: z.ZodOptional<z.ZodBoolean>;
|
|
47
|
+
include_remote: z.ZodOptional<z.ZodBoolean>;
|
|
48
|
+
remote_registry_url: z.ZodOptional<z.ZodString>;
|
|
49
|
+
max_servers: z.ZodOptional<z.ZodNumber>;
|
|
50
|
+
}, "strip", z.ZodTypeAny, {
|
|
51
|
+
action: string;
|
|
52
|
+
tag?: string | undefined;
|
|
53
|
+
tags?: string[] | undefined;
|
|
54
|
+
tier?: string | undefined;
|
|
55
|
+
language?: "typescript" | "python" | undefined;
|
|
56
|
+
project_dir?: string | undefined;
|
|
57
|
+
project_name?: string | undefined;
|
|
58
|
+
description?: string | undefined;
|
|
59
|
+
dry_run?: boolean | undefined;
|
|
60
|
+
output_targets?: string[] | undefined;
|
|
61
|
+
apply?: boolean | undefined;
|
|
62
|
+
add_tags?: string[] | undefined;
|
|
63
|
+
remove_tags?: string[] | undefined;
|
|
64
|
+
include_anti_patterns?: boolean | undefined;
|
|
65
|
+
force?: boolean | undefined;
|
|
66
|
+
scope?: "comprehensive" | "focused" | undefined;
|
|
67
|
+
scan_depth?: "quick" | "full" | undefined;
|
|
68
|
+
name?: string | undefined;
|
|
69
|
+
merge?: boolean | undefined;
|
|
70
|
+
resource?: string | undefined;
|
|
71
|
+
custom_servers?: Record<string, {
|
|
72
|
+
command: string;
|
|
73
|
+
args: string[];
|
|
74
|
+
env?: Record<string, string> | undefined;
|
|
75
|
+
}> | undefined;
|
|
76
|
+
auto_approve_tools?: boolean | undefined;
|
|
77
|
+
include_remote?: boolean | undefined;
|
|
78
|
+
remote_registry_url?: string | undefined;
|
|
79
|
+
max_servers?: number | undefined;
|
|
80
|
+
}, {
|
|
81
|
+
action: string;
|
|
82
|
+
tag?: string | undefined;
|
|
83
|
+
tags?: string[] | undefined;
|
|
84
|
+
tier?: string | undefined;
|
|
85
|
+
language?: "typescript" | "python" | undefined;
|
|
86
|
+
project_dir?: string | undefined;
|
|
87
|
+
project_name?: string | undefined;
|
|
88
|
+
description?: string | undefined;
|
|
89
|
+
dry_run?: boolean | undefined;
|
|
90
|
+
output_targets?: string[] | undefined;
|
|
91
|
+
apply?: boolean | undefined;
|
|
92
|
+
add_tags?: string[] | undefined;
|
|
93
|
+
remove_tags?: string[] | undefined;
|
|
94
|
+
include_anti_patterns?: boolean | undefined;
|
|
95
|
+
force?: boolean | undefined;
|
|
96
|
+
scope?: "comprehensive" | "focused" | undefined;
|
|
97
|
+
scan_depth?: "quick" | "full" | undefined;
|
|
98
|
+
name?: string | undefined;
|
|
99
|
+
merge?: boolean | undefined;
|
|
100
|
+
resource?: string | undefined;
|
|
101
|
+
custom_servers?: Record<string, {
|
|
102
|
+
command: string;
|
|
103
|
+
args: string[];
|
|
104
|
+
env?: Record<string, string> | undefined;
|
|
105
|
+
}> | undefined;
|
|
106
|
+
auto_approve_tools?: boolean | undefined;
|
|
107
|
+
include_remote?: boolean | undefined;
|
|
108
|
+
remote_registry_url?: string | undefined;
|
|
109
|
+
max_servers?: number | undefined;
|
|
110
|
+
}>;
|
|
111
|
+
type ForgecraftArgs = z.infer<typeof forgecraftSchema>;
|
|
112
|
+
type ToolResult = {
|
|
113
|
+
content: Array<{
|
|
114
|
+
type: "text";
|
|
115
|
+
text: string;
|
|
116
|
+
}>;
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Unified handler that dispatches to the appropriate tool handler
|
|
120
|
+
* based on the `action` parameter.
|
|
121
|
+
*
|
|
122
|
+
* @param args - Validated unified tool input
|
|
123
|
+
* @returns MCP tool response from the delegated handler
|
|
124
|
+
*/
|
|
125
|
+
export declare function forgecraftHandler(args: ForgecraftArgs): Promise<ToolResult>;
|
|
126
|
+
export {};
|
|
127
|
+
//# sourceMappingURL=forgecraft-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forgecraft-router.d.ts","sourceRoot":"","sources":["../../src/tools/forgecraft-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0CxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiH3B,CAAC;AAEH,KAAK,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AACvD,KAAK,UAAU,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAIrE;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CA+FjF"}
|