forgecraft-mcp 1.0.0 → 1.0.2

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 (45) hide show
  1. package/README.md +95 -49
  2. package/dist/analyzers/anti-pattern.d.ts.map +1 -1
  3. package/dist/analyzers/anti-pattern.js +28 -0
  4. package/dist/analyzers/anti-pattern.js.map +1 -1
  5. package/dist/cli/assistant-detector.d.ts +28 -0
  6. package/dist/cli/assistant-detector.d.ts.map +1 -0
  7. package/dist/cli/assistant-detector.js +107 -0
  8. package/dist/cli/assistant-detector.js.map +1 -0
  9. package/dist/cli/commands.d.ts.map +1 -1
  10. package/dist/cli/commands.js +18 -3
  11. package/dist/cli/commands.js.map +1 -1
  12. package/dist/cli/help.js +44 -44
  13. package/dist/http-server-contribute.d.ts +21 -0
  14. package/dist/http-server-contribute.d.ts.map +1 -0
  15. package/dist/http-server-contribute.js +168 -0
  16. package/dist/http-server-contribute.js.map +1 -0
  17. package/dist/http-server.d.ts +16 -0
  18. package/dist/http-server.d.ts.map +1 -0
  19. package/dist/http-server.js +200 -0
  20. package/dist/http-server.js.map +1 -0
  21. package/dist/registry/remote-gates.js +10 -4
  22. package/dist/registry/remote-gates.js.map +1 -1
  23. package/dist/tools/check-cascade-report.js +64 -64
  24. package/dist/tools/forgecraft-dispatch.d.ts.map +1 -1
  25. package/dist/tools/forgecraft-dispatch.js +1 -0
  26. package/dist/tools/forgecraft-dispatch.js.map +1 -1
  27. package/dist/tools/forgecraft-schema.d.ts +2 -2
  28. package/dist/tools/scaffold-spec-stubs.js +24 -24
  29. package/dist/tools/scaffold-templates.d.ts +1 -1
  30. package/dist/tools/scaffold-templates.d.ts.map +1 -1
  31. package/dist/tools/scaffold-templates.js +73 -64
  32. package/dist/tools/scaffold-templates.js.map +1 -1
  33. package/dist/tools/setup-phase2.d.ts +1 -0
  34. package/dist/tools/setup-phase2.d.ts.map +1 -1
  35. package/dist/tools/setup-phase2.js +24 -6
  36. package/dist/tools/setup-phase2.js.map +1 -1
  37. package/dist/tools/setup-project.d.ts +6 -0
  38. package/dist/tools/setup-project.d.ts.map +1 -1
  39. package/dist/tools/setup-project.js +25 -8
  40. package/dist/tools/setup-project.js.map +1 -1
  41. package/dist/tools/spec-parser-inference.d.ts +10 -0
  42. package/dist/tools/spec-parser-inference.d.ts.map +1 -1
  43. package/dist/tools/spec-parser-inference.js +134 -31
  44. package/dist/tools/spec-parser-inference.js.map +1 -1
  45. package/package.json +7 -2
@@ -15,10 +15,11 @@ import { configureMcpHandler } from "./configure-mcp.js";
15
15
  import { createLogger } from "../shared/logger/index.js";
16
16
  import { parseSpec, inferSensitiveData } from "./spec-parser.js";
17
17
  import { buildProjectContext } from "./setup-context.js";
18
+ export { detectProjectMode } from "./setup-detector.js";
18
19
  import { buildPhase1Response } from "./setup-phase1.js";
19
20
  import { writeForgeYaml, setExperimentGroupIfMissing, writePrd, writeUseCases, initGitRepo, } from "./setup-artifact-writers.js";
20
21
  import { deriveCascadeDecisions, buildPhase2Response } from "./setup-phase2.js";
21
- import { writeCntFiles, writeCoreMd, writeAdrIndex, writeGatesIndex } from "./setup-cnt.js";
22
+ import { writeCntFiles, writeCoreMd, writeAdrIndex, writeGatesIndex, } from "./setup-cnt.js";
22
23
  const logger = createLogger("tools/setup-project");
23
24
  /** Valid ALL_TAGS values as a Set for fast membership testing. */
24
25
  const VALID_TAGS_SET = new Set(ALL_TAGS);
@@ -36,12 +37,20 @@ export async function setupProjectHandler(args) {
36
37
  const isPhase2 = args.mvp !== undefined &&
37
38
  args.scope_complete !== undefined &&
38
39
  args.has_consumers !== undefined;
39
- logger.info("setup_project", { phase: isPhase2 ? 2 : 1, projectDir: args.project_dir });
40
+ logger.info("setup_project", {
41
+ phase: isPhase2 ? 2 : 1,
42
+ projectDir: args.project_dir,
43
+ });
40
44
  const context = await buildProjectContext(args);
41
45
  if (!isPhase2) {
42
46
  return buildPhase1Response(context);
43
47
  }
44
- return executePhase2({ ...args, mvp: args.mvp, scope_complete: args.scope_complete, has_consumers: args.has_consumers }, context);
48
+ return executePhase2({
49
+ ...args,
50
+ mvp: args.mvp,
51
+ scope_complete: args.scope_complete,
52
+ has_consumers: args.has_consumers,
53
+ }, context);
45
54
  }
46
55
  // ── Phase 2 Orchestration ─────────────────────────────────────────────
47
56
  /**
@@ -53,9 +62,12 @@ export async function setupProjectHandler(args) {
53
62
  */
54
63
  async function executePhase2(args, context) {
55
64
  const { projectDir, projectName } = context;
56
- const effectiveTags = args.project_type_override
57
- ? applyProjectTypeOverride(context.inferredTags, args.project_type_override)
58
- : context.inferredTags;
65
+ const llmCorrectedTags = args.tags && args.tags.length > 0 ? filterToValidTags(args.tags) : null;
66
+ const effectiveTags = llmCorrectedTags
67
+ ? [...new Set(["UNIVERSAL", ...llmCorrectedTags])]
68
+ : args.project_type_override
69
+ ? applyProjectTypeOverride(context.inferredTags, args.project_type_override)
70
+ : context.inferredTags;
59
71
  const decisions = deriveCascadeDecisions(effectiveTags, projectName, args.mvp, args.scope_complete, args.has_consumers);
60
72
  const forgeCraftTags = filterToValidTags(effectiveTags);
61
73
  const specSummaryForSensitive = context.specContent
@@ -72,8 +84,12 @@ async function executePhase2(args, context) {
72
84
  successCriteria: args.success_criteria,
73
85
  };
74
86
  const hasSpec = !!context.specContent || !!aiFields.problemStatement;
75
- const prdWritten = hasSpec ? writePrd(projectDir, projectName, aiFields, context.specContent) : false;
76
- const useCasesWritten = hasSpec ? writeUseCases(projectDir, projectName, aiFields, context.specContent) : false;
87
+ const prdWritten = hasSpec
88
+ ? writePrd(projectDir, projectName, aiFields, context.specContent)
89
+ : false;
90
+ const useCasesWritten = hasSpec
91
+ ? writeUseCases(projectDir, projectName, aiFields, context.specContent)
92
+ : false;
77
93
  const validTagsForHooks = (forgeCraftTags.length > 0 ? forgeCraftTags : ["UNIVERSAL"]);
78
94
  const scaffoldResult = await scaffoldProjectHandler({
79
95
  tags: validTagsForHooks,
@@ -119,6 +135,7 @@ async function executePhase2(args, context) {
119
135
  adrIndexWritten: writeAdrIndex(projectDir),
120
136
  gatesIndexWritten: writeGatesIndex(projectDir),
121
137
  gitInitStatus,
138
+ isBrownfield: context.isBrownfield,
122
139
  });
123
140
  return { content: [{ type: "text", text }] };
124
141
  }
@@ -1 +1 @@
1
- {"version":3,"file":"setup-project.js","sourceRoot":"","sources":["../../src/tools/setup-project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-project.js","sourceRoot":"","sources":["../../src/tools/setup-project.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,16 @@ import type { DirectoryInferenceResult } from "./spec-parser-directory.js";
8
8
  * Mutates tags and signal arrays in place.
9
9
  */
10
10
  export declare function analyzeRootPackageJson(projectDir: string, tags: Set<string>, cliSignals: string[], apiSignals: string[], librarySignals: string[]): void;
11
+ /**
12
+ * Apply directory structure heuristics for API/CLI tag inference.
13
+ * Called unconditionally — does not require a package.json.
14
+ *
15
+ * @param projectDir - Project root
16
+ * @param tags - Tag set to update
17
+ * @param cliSignals - CLI signal accumulator
18
+ * @param apiSignals - API signal accumulator
19
+ */
20
+ export declare function analyzeDirectoryStructure(projectDir: string, tags: Set<string>, cliSignals: string[], apiSignals: string[]): void;
11
21
  /**
12
22
  * Analyze Python build files (requirements.txt, pyproject.toml) for tag signals.
13
23
  * Mutates tags and signal arrays in place.
@@ -1 +1 @@
1
- {"version":3,"file":"spec-parser-inference.d.ts","sourceRoot":"","sources":["../../src/tools/spec-parser-inference.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAQ3D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAI3E;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,EAAE,MAAM,EAAE,EACpB,cAAc,EAAE,MAAM,EAAE,GACvB,IAAI,CAyEN;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,EAAE,MAAM,EAAE,GACnB,IAAI,CAuBN;AAID;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,EAAE,MAAM,EAAE,EACpB,cAAc,EAAE,MAAM,EAAE,EACxB,cAAc,EAAE,OAAO,EACvB,gBAAgB,EAAE,OAAO,EACzB,UAAU,EAAE,MAAM,GACjB,aAAa,EAAE,CAsCjB;AA+BD;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,wBAAwB,CAAC,CA0CnC"}
1
+ {"version":3,"file":"spec-parser-inference.d.ts","sourceRoot":"","sources":["../../src/tools/spec-parser-inference.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAQ3D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAG3E;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,EAAE,MAAM,EAAE,EACpB,cAAc,EAAE,MAAM,EAAE,GACvB,IAAI,CAkEN;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,EAAE,MAAM,EAAE,GACnB,IAAI,CAoDN;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,EAAE,MAAM,EAAE,GACnB,IAAI,CA4DN;AAID;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,EAAE,MAAM,EAAE,EACpB,cAAc,EAAE,MAAM,EAAE,EACxB,cAAc,EAAE,OAAO,EACvB,gBAAgB,EAAE,OAAO,EACzB,UAAU,EAAE,MAAM,GACjB,aAAa,EAAE,CAiFjB;AAsCD;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,wBAAwB,CAAC,CA2EnC"}
@@ -20,7 +20,14 @@ export function analyzeRootPackageJson(projectDir, tags, cliSignals, apiSignals,
20
20
  ...(pkg["devDependencies"] ?? {}),
21
21
  };
22
22
  const depNames = Object.keys(allDeps).map((d) => d.toLowerCase());
23
- if (depNames.some((d) => ["express", "fastify", "koa", "hapi", "@nestjs/core", "fastify"].includes(d))) {
23
+ if (depNames.some((d) => [
24
+ "express",
25
+ "fastify",
26
+ "koa",
27
+ "hapi",
28
+ "@nestjs/core",
29
+ "fastify",
30
+ ].includes(d))) {
24
31
  tags.add("API");
25
32
  apiSignals.push("web-framework dependency (express/fastify/koa)");
26
33
  }
@@ -48,18 +55,37 @@ export function analyzeRootPackageJson(projectDir, tags, cliSignals, apiSignals,
48
55
  const hasBin = !!pkg["bin"];
49
56
  if ((hasMain || hasExports) && !hasBin) {
50
57
  tags.add("LIBRARY");
51
- librarySignals.push(hasExports ? "package.json exports field (publishable package)" : "package.json main field (publishable module)");
58
+ librarySignals.push(hasExports
59
+ ? "package.json exports field (publishable package)"
60
+ : "package.json main field (publishable module)");
52
61
  }
53
62
  }
54
- catch { /* Malformed package.json — skip */ }
55
- // Directory structure heuristics
56
- if (existsSync(join(projectDir, "src", "routes")) || existsSync(join(projectDir, "src", "controllers"))) {
63
+ catch {
64
+ /* Malformed package.json — skip */
65
+ }
66
+ // Directory structure heuristics — run after package.json analysis
67
+ }
68
+ /**
69
+ * Apply directory structure heuristics for API/CLI tag inference.
70
+ * Called unconditionally — does not require a package.json.
71
+ *
72
+ * @param projectDir - Project root
73
+ * @param tags - Tag set to update
74
+ * @param cliSignals - CLI signal accumulator
75
+ * @param apiSignals - API signal accumulator
76
+ */
77
+ export function analyzeDirectoryStructure(projectDir, tags, cliSignals, apiSignals) {
78
+ if (existsSync(join(projectDir, "src", "routes")) ||
79
+ existsSync(join(projectDir, "src", "controllers"))) {
57
80
  tags.add("API");
58
81
  apiSignals.push("src/routes or src/controllers directory");
59
82
  }
60
- if (existsSync(join(projectDir, "src", "cli")) || existsSync(join(projectDir, "bin"))) {
83
+ if (existsSync(join(projectDir, "src", "cli")) ||
84
+ existsSync(join(projectDir, "bin"))) {
61
85
  tags.add("CLI");
62
- cliSignals.push(existsSync(join(projectDir, "bin")) ? "bin/ directory" : "src/cli/ directory");
86
+ cliSignals.push(existsSync(join(projectDir, "bin"))
87
+ ? "bin/ directory"
88
+ : "src/cli/ directory");
63
89
  }
64
90
  // MCP server files in src/
65
91
  const srcDir = join(projectDir, "src");
@@ -73,19 +99,26 @@ export function analyzeRootPackageJson(projectDir, tags, cliSignals, apiSignals,
73
99
  apiSignals.push("MCP server file in src/");
74
100
  }
75
101
  }
76
- catch { /* skip */ }
102
+ catch {
103
+ /* skip */
104
+ }
77
105
  }
78
- // Docker-compose DATABASE
79
106
  const composeFile = join(projectDir, "docker-compose.yml");
80
107
  const composeYmlFile = join(projectDir, "docker-compose.yaml");
81
- const composePath = existsSync(composeFile) ? composeFile : existsSync(composeYmlFile) ? composeYmlFile : null;
108
+ const composePath = existsSync(composeFile)
109
+ ? composeFile
110
+ : existsSync(composeYmlFile)
111
+ ? composeYmlFile
112
+ : null;
82
113
  if (composePath) {
83
114
  try {
84
115
  const composeContent = readFileSync(composePath, "utf-8").toLowerCase();
85
116
  if (/postgres|mysql|mongodb|mongo/.test(composeContent))
86
117
  tags.add("DATABASE");
87
118
  }
88
- catch { /* skip */ }
119
+ catch {
120
+ /* skip */
121
+ }
89
122
  }
90
123
  }
91
124
  // ── Python project analysis ───────────────────────────────────────────
@@ -106,14 +139,22 @@ export function analyzePythonProject(projectDir, tags, cliSignals, apiSignals) {
106
139
  tags.add("CLI");
107
140
  cliSignals.push("click/typer dependency (requirements.txt)");
108
141
  }
109
- const PY_DATABASE_DEPS = ["sqlalchemy", "psycopg2", "pymongo", "databases", "tortoise-orm"];
142
+ const PY_DATABASE_DEPS = [
143
+ "sqlalchemy",
144
+ "psycopg2",
145
+ "pymongo",
146
+ "databases",
147
+ "tortoise-orm",
148
+ ];
110
149
  if (PY_DATABASE_DEPS.some((dep) => reqContent.includes(dep)))
111
150
  tags.add("DATABASE");
112
151
  const PY_AUTH_DEPS = ["python-jose", "passlib", "authlib", "pyjwt"];
113
152
  if (PY_AUTH_DEPS.some((dep) => reqContent.includes(dep)))
114
153
  tags.add("AUTH");
115
154
  }
116
- catch { /* skip */ }
155
+ catch {
156
+ /* skip */
157
+ }
117
158
  }
118
159
  const pyprojectPath = join(projectDir, "pyproject.toml");
119
160
  if (existsSync(pyprojectPath)) {
@@ -123,15 +164,24 @@ export function analyzePythonProject(projectDir, tags, cliSignals, apiSignals) {
123
164
  tags.add("API");
124
165
  apiSignals.push("fastapi dependency (pyproject.toml)");
125
166
  }
126
- if (pyprojectContent.includes("click") || pyprojectContent.includes("typer")) {
167
+ if (pyprojectContent.includes("click") ||
168
+ pyprojectContent.includes("typer")) {
127
169
  tags.add("CLI");
128
170
  cliSignals.push("click/typer dependency (pyproject.toml)");
129
171
  }
130
- const PY_DATABASE_DEPS_TOML = ["sqlalchemy", "psycopg2", "pymongo", "databases", "tortoise-orm"];
172
+ const PY_DATABASE_DEPS_TOML = [
173
+ "sqlalchemy",
174
+ "psycopg2",
175
+ "pymongo",
176
+ "databases",
177
+ "tortoise-orm",
178
+ ];
131
179
  if (PY_DATABASE_DEPS_TOML.some((dep) => pyprojectContent.includes(dep)))
132
180
  tags.add("DATABASE");
133
181
  }
134
- catch { /* skip */ }
182
+ catch {
183
+ /* skip */
184
+ }
135
185
  }
136
186
  }
137
187
  // ── Ambiguity builders ────────────────────────────────────────────────
@@ -145,10 +195,21 @@ export function buildTagAmbiguities(tags, cliSignals, apiSignals, librarySignals
145
195
  if (hasPythonBuild && hasTypeScriptSrc) {
146
196
  ambiguities.push({
147
197
  field: "tech_stack",
148
- signals: ["Python build system (requirements.txt/pyproject.toml)", "TypeScript src files detected"],
198
+ signals: [
199
+ "Python build system (requirements.txt/pyproject.toml)",
200
+ "TypeScript src files detected",
201
+ ],
149
202
  interpretations: [
150
- { label: "A", description: "Python project with TypeScript frontend/tooling (primary: Python)", consequence: "Python-oriented gates applied; TypeScript treated as build tooling" },
151
- { label: "B", description: "TypeScript project with Python scripts/utilities (primary: TypeScript)", consequence: "TypeScript gates applied; Python treated as supplementary tooling" },
203
+ {
204
+ label: "A",
205
+ description: "Python project with TypeScript frontend/tooling (primary: Python)",
206
+ consequence: "Python-oriented gates applied; TypeScript treated as build tooling",
207
+ },
208
+ {
209
+ label: "B",
210
+ description: "TypeScript project with Python scripts/utilities (primary: TypeScript)",
211
+ consequence: "TypeScript gates applied; Python treated as supplementary tooling",
212
+ },
152
213
  ],
153
214
  });
154
215
  }
@@ -157,9 +218,21 @@ export function buildTagAmbiguities(tags, cliSignals, apiSignals, librarySignals
157
218
  field: "primary_tag",
158
219
  signals: [...cliSignals, ...apiSignals],
159
220
  interpretations: [
160
- { label: "A", description: "Primarily a CLI tool (tag: CLI)", consequence: "CLI cascade applied; API-specific gates optional" },
161
- { label: "B", description: "Primarily an HTTP API (tag: API)", consequence: "API cascade applied; all endpoint contracts required" },
162
- { label: "C", description: "Hybrid CLI+API project (tags: CLI, API)", consequence: "Most restrictive cascade applied; all steps required" },
221
+ {
222
+ label: "A",
223
+ description: "Primarily a CLI tool (tag: CLI)",
224
+ consequence: "CLI cascade applied; API-specific gates optional",
225
+ },
226
+ {
227
+ label: "B",
228
+ description: "Primarily an HTTP API (tag: API)",
229
+ consequence: "API cascade applied; all endpoint contracts required",
230
+ },
231
+ {
232
+ label: "C",
233
+ description: "Hybrid CLI+API project (tags: CLI, API)",
234
+ consequence: "Most restrictive cascade applied; all steps required",
235
+ },
163
236
  ],
164
237
  });
165
238
  }
@@ -168,9 +241,21 @@ export function buildTagAmbiguities(tags, cliSignals, apiSignals, librarySignals
168
241
  field: "primary_tag",
169
242
  signals: [...cliSignals, ...librarySignals],
170
243
  interpretations: [
171
- { label: "A", description: "Primarily a CLI tool that ships an executable (tag: CLI)", consequence: "CLI cascade applied; library-specific contracts optional" },
172
- { label: "B", description: "Primarily a reusable library that includes a CLI (tag: LIBRARY)", consequence: "Library cascade applied; public API contracts and versioning required" },
173
- { label: "C", description: "Dual-purpose CLI+library package (tags: CLI, LIBRARY)", consequence: "Most restrictive cascade applied; all steps required" },
244
+ {
245
+ label: "A",
246
+ description: "Primarily a CLI tool that ships an executable (tag: CLI)",
247
+ consequence: "CLI cascade applied; library-specific contracts optional",
248
+ },
249
+ {
250
+ label: "B",
251
+ description: "Primarily a reusable library that includes a CLI (tag: LIBRARY)",
252
+ consequence: "Library cascade applied; public API contracts and versioning required",
253
+ },
254
+ {
255
+ label: "C",
256
+ description: "Dual-purpose CLI+library package (tags: CLI, LIBRARY)",
257
+ consequence: "Most restrictive cascade applied; all steps required",
258
+ },
174
259
  ],
175
260
  });
176
261
  }
@@ -199,7 +284,9 @@ async function loadForgecraftYamlTags(projectDir, tags) {
199
284
  }
200
285
  }
201
286
  }
202
- catch { /* Invalid yaml — skip */ }
287
+ catch {
288
+ /* Invalid yaml — skip */
289
+ }
203
290
  }
204
291
  // ── Main entry point ──────────────────────────────────────────────────
205
292
  /**
@@ -223,23 +310,39 @@ export async function inferTagsFromDirectory(projectDir) {
223
310
  tags.add("DOCS");
224
311
  ambiguities.push({
225
312
  field: "project_type",
226
- signals: ["no package.json", "no requirements.txt", "no go.mod", "markdown files present"],
313
+ signals: [
314
+ "no package.json",
315
+ "no requirements.txt",
316
+ "no go.mod",
317
+ "markdown files present",
318
+ ],
227
319
  interpretations: [
228
- { label: "A", description: "Design specification project (tag: DOCS)", consequence: "All implementation gates skipped; only spec completeness checked" },
229
- { label: "B", description: "Early-stage software project (no build system set up yet)", consequence: "Full cascade applied; implementation gates enforced" },
320
+ {
321
+ label: "A",
322
+ description: "Design specification project (tag: DOCS)",
323
+ consequence: "All implementation gates skipped; only spec completeness checked",
324
+ },
325
+ {
326
+ label: "B",
327
+ description: "Early-stage software project (no build system set up yet)",
328
+ consequence: "Full cascade applied; implementation gates enforced",
329
+ },
230
330
  ],
231
331
  });
232
332
  }
233
333
  }
234
334
  analyzeRootPackageJson(projectDir, tags, cliSignals, apiSignals, librarySignals);
335
+ analyzeDirectoryStructure(projectDir, tags, cliSignals, apiSignals);
235
336
  analyzePythonProject(projectDir, tags, cliSignals, apiSignals);
236
337
  analyzeSubdirectories(projectDir, tags);
237
338
  const hasScrapingPatterns = await scanSourceForSensitivePatterns(projectDir);
238
339
  if (hasScrapingPatterns)
239
340
  tags.add("SOCIAL");
240
- const hasPythonBuild = existsSync(join(projectDir, "requirements.txt")) || existsSync(join(projectDir, "pyproject.toml"));
341
+ const hasPythonBuild = existsSync(join(projectDir, "requirements.txt")) ||
342
+ existsSync(join(projectDir, "pyproject.toml"));
241
343
  const hasTypeScriptSrc = existsSync(join(projectDir, "src")) &&
242
- (existsSync(join(projectDir, "tsconfig.json")) || existsSync(join(projectDir, "src", "index.ts")));
344
+ (existsSync(join(projectDir, "tsconfig.json")) ||
345
+ existsSync(join(projectDir, "src", "index.ts")));
243
346
  const tagAmbiguities = buildTagAmbiguities(tags, cliSignals, apiSignals, librarySignals, hasPythonBuild, hasTypeScriptSrc, projectDir);
244
347
  ambiguities.push(...tagAmbiguities);
245
348
  await loadForgecraftYamlTags(projectDir, tags);
@@ -1 +1 @@
1
- {"version":3,"file":"spec-parser-inference.js","sourceRoot":"","sources":["../../src/tools/spec-parser-inference.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec-parser-inference.js","sourceRoot":"","sources":["../../src/tools/spec-parser-inference.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forgecraft-mcp",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "mcpName": "io.github.jghiringhelli/forgecraft",
5
5
  "description": "CLI + MCP sentinel for engineering standards — SOLID, testing, architecture, CI/CD — auto-tailored to your stack. Minimal MCP footprint (~200 tokens) via CLI-first design.",
6
6
  "type": "module",
@@ -12,6 +12,7 @@
12
12
  "build": "tsc",
13
13
  "dev": "tsc --watch",
14
14
  "start": "node dist/index.js",
15
+ "serve": "node dist/http-server.js",
15
16
  "test": "vitest run",
16
17
  "test:watch": "vitest",
17
18
  "test:coverage": "vitest run --coverage",
@@ -51,7 +52,7 @@
51
52
  "type": "git",
52
53
  "url": "git+https://github.com/jghiringhelli/forgecraft-mcp.git"
53
54
  },
54
- "homepage": "https://github.com/jghiringhelli/forgecraft-mcp#readme",
55
+ "homepage": "https://forgecraft.tools",
55
56
  "bugs": {
56
57
  "url": "https://github.com/jghiringhelli/forgecraft-mcp/issues"
57
58
  },
@@ -71,10 +72,14 @@
71
72
  "devDependencies": {
72
73
  "@stryker-mutator/core": "^9.6.0",
73
74
  "@stryker-mutator/vitest-runner": "^9.6.0",
75
+ "@types/express": "^5.0.6",
74
76
  "@types/js-yaml": "^4.0.9",
75
77
  "@types/node": "^22.13.4",
78
+ "@types/supertest": "^7.2.0",
76
79
  "@vitest/coverage-v8": "^3.2.4",
80
+ "express": "^5.2.1",
77
81
  "rimraf": "^6.0.1",
82
+ "supertest": "^7.2.2",
78
83
  "typescript": "^5.7.3",
79
84
  "vitest": "^3.0.5"
80
85
  }