forgecraft-mcp 1.2.0 → 1.3.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 (136) hide show
  1. package/README.md +525 -525
  2. package/dist/cli/help.js +44 -44
  3. package/dist/registry/renderer-skeletons.js +92 -92
  4. package/dist/shared/gs-score-logger.js +6 -6
  5. package/dist/tools/add-module.js +123 -123
  6. package/dist/tools/advice-registry.js +18 -18
  7. package/dist/tools/check-cascade-report.js +64 -64
  8. package/dist/tools/configure-mcp.d.ts +3 -0
  9. package/dist/tools/configure-mcp.d.ts.map +1 -1
  10. package/dist/tools/configure-mcp.js +10 -0
  11. package/dist/tools/configure-mcp.js.map +1 -1
  12. package/dist/tools/forgecraft-dispatch.d.ts.map +1 -1
  13. package/dist/tools/forgecraft-dispatch.js +3 -0
  14. package/dist/tools/forgecraft-dispatch.js.map +1 -1
  15. package/dist/tools/forgecraft-schema-params.d.ts +9 -0
  16. package/dist/tools/forgecraft-schema-params.d.ts.map +1 -1
  17. package/dist/tools/forgecraft-schema-params.js +21 -0
  18. package/dist/tools/forgecraft-schema-params.js.map +1 -1
  19. package/dist/tools/forgecraft-schema.d.ts +9 -0
  20. package/dist/tools/forgecraft-schema.d.ts.map +1 -1
  21. package/dist/tools/refresh-output.js +14 -14
  22. package/dist/tools/scaffold-spec-stubs.js +115 -115
  23. package/dist/tools/scaffold-templates.js +62 -62
  24. package/dist/tools/setup-artifact-writers.d.ts +30 -0
  25. package/dist/tools/setup-artifact-writers.d.ts.map +1 -1
  26. package/dist/tools/setup-artifact-writers.js +120 -8
  27. package/dist/tools/setup-artifact-writers.js.map +1 -1
  28. package/dist/tools/setup-phase1.d.ts +3 -0
  29. package/dist/tools/setup-phase1.d.ts.map +1 -1
  30. package/dist/tools/setup-phase1.js +79 -35
  31. package/dist/tools/setup-phase1.js.map +1 -1
  32. package/dist/tools/setup-phase2.d.ts +2 -0
  33. package/dist/tools/setup-phase2.d.ts.map +1 -1
  34. package/dist/tools/setup-phase2.js +10 -1
  35. package/dist/tools/setup-phase2.js.map +1 -1
  36. package/dist/tools/setup-project.d.ts +18 -0
  37. package/dist/tools/setup-project.d.ts.map +1 -1
  38. package/dist/tools/setup-project.js +77 -1
  39. package/dist/tools/setup-project.js.map +1 -1
  40. package/dist/tools/spec-parser-tags.d.ts +9 -0
  41. package/dist/tools/spec-parser-tags.d.ts.map +1 -1
  42. package/dist/tools/spec-parser-tags.js +92 -0
  43. package/dist/tools/spec-parser-tags.js.map +1 -1
  44. package/package.json +89 -86
  45. package/templates/analytics/instructions.yaml +37 -37
  46. package/templates/analytics/mcp-servers.yaml +11 -11
  47. package/templates/analytics/structure.yaml +25 -25
  48. package/templates/api/instructions.yaml +231 -231
  49. package/templates/api/mcp-servers.yaml +22 -13
  50. package/templates/api/nfr.yaml +23 -23
  51. package/templates/api/review.yaml +103 -103
  52. package/templates/api/structure.yaml +34 -34
  53. package/templates/api/verification.yaml +132 -132
  54. package/templates/cli/instructions.yaml +31 -31
  55. package/templates/cli/mcp-servers.yaml +11 -11
  56. package/templates/cli/review.yaml +53 -53
  57. package/templates/cli/structure.yaml +16 -16
  58. package/templates/data-lineage/instructions.yaml +28 -28
  59. package/templates/data-lineage/mcp-servers.yaml +22 -22
  60. package/templates/data-pipeline/instructions.yaml +84 -84
  61. package/templates/data-pipeline/mcp-servers.yaml +13 -13
  62. package/templates/data-pipeline/nfr.yaml +39 -39
  63. package/templates/data-pipeline/structure.yaml +23 -23
  64. package/templates/fintech/hooks.yaml +55 -55
  65. package/templates/fintech/instructions.yaml +112 -112
  66. package/templates/fintech/mcp-servers.yaml +13 -13
  67. package/templates/fintech/nfr.yaml +46 -46
  68. package/templates/fintech/playbook.yaml +210 -210
  69. package/templates/fintech/verification.yaml +239 -239
  70. package/templates/game/instructions.yaml +289 -289
  71. package/templates/game/mcp-servers.yaml +38 -38
  72. package/templates/game/nfr.yaml +64 -64
  73. package/templates/game/playbook.yaml +214 -214
  74. package/templates/game/review.yaml +97 -97
  75. package/templates/game/structure.yaml +67 -67
  76. package/templates/game/verification.yaml +174 -174
  77. package/templates/healthcare/instructions.yaml +42 -42
  78. package/templates/healthcare/mcp-servers.yaml +13 -13
  79. package/templates/healthcare/nfr.yaml +47 -47
  80. package/templates/hipaa/instructions.yaml +41 -41
  81. package/templates/hipaa/mcp-servers.yaml +13 -13
  82. package/templates/infra/instructions.yaml +104 -104
  83. package/templates/infra/mcp-servers.yaml +20 -20
  84. package/templates/infra/nfr.yaml +46 -46
  85. package/templates/infra/review.yaml +65 -65
  86. package/templates/infra/structure.yaml +25 -25
  87. package/templates/library/instructions.yaml +36 -36
  88. package/templates/library/mcp-servers.yaml +20 -20
  89. package/templates/library/review.yaml +56 -56
  90. package/templates/library/structure.yaml +19 -19
  91. package/templates/medallion-architecture/instructions.yaml +41 -41
  92. package/templates/medallion-architecture/mcp-servers.yaml +22 -22
  93. package/templates/ml/instructions.yaml +85 -85
  94. package/templates/ml/mcp-servers.yaml +11 -11
  95. package/templates/ml/nfr.yaml +39 -39
  96. package/templates/ml/structure.yaml +25 -25
  97. package/templates/ml/verification.yaml +156 -156
  98. package/templates/mobile/instructions.yaml +44 -44
  99. package/templates/mobile/mcp-servers.yaml +11 -11
  100. package/templates/mobile/nfr.yaml +49 -49
  101. package/templates/mobile/structure.yaml +27 -27
  102. package/templates/mobile/verification.yaml +121 -121
  103. package/templates/observability-xray/instructions.yaml +40 -40
  104. package/templates/observability-xray/mcp-servers.yaml +15 -15
  105. package/templates/realtime/instructions.yaml +42 -42
  106. package/templates/realtime/mcp-servers.yaml +13 -13
  107. package/templates/soc2/instructions.yaml +41 -41
  108. package/templates/soc2/mcp-servers.yaml +24 -24
  109. package/templates/social/instructions.yaml +43 -43
  110. package/templates/social/mcp-servers.yaml +24 -24
  111. package/templates/state-machine/instructions.yaml +42 -42
  112. package/templates/state-machine/mcp-servers.yaml +11 -11
  113. package/templates/tools-registry.yaml +164 -164
  114. package/templates/universal/hooks.yaml +531 -531
  115. package/templates/universal/instructions.yaml +1692 -1692
  116. package/templates/universal/mcp-servers.yaml +50 -50
  117. package/templates/universal/nfr.yaml +197 -197
  118. package/templates/universal/reference.yaml +326 -326
  119. package/templates/universal/review.yaml +204 -204
  120. package/templates/universal/skills.yaml +262 -262
  121. package/templates/universal/structure.yaml +67 -67
  122. package/templates/universal/verification.yaml +416 -416
  123. package/templates/web-react/hooks.yaml +44 -44
  124. package/templates/web-react/instructions.yaml +207 -207
  125. package/templates/web-react/mcp-servers.yaml +20 -20
  126. package/templates/web-react/nfr.yaml +27 -27
  127. package/templates/web-react/review.yaml +94 -94
  128. package/templates/web-react/structure.yaml +46 -46
  129. package/templates/web-react/verification.yaml +126 -126
  130. package/templates/web-static/instructions.yaml +115 -115
  131. package/templates/web-static/mcp-servers.yaml +20 -20
  132. package/templates/web3/instructions.yaml +44 -44
  133. package/templates/web3/mcp-servers.yaml +11 -11
  134. package/templates/web3/verification.yaml +159 -159
  135. package/templates/zero-trust/instructions.yaml +41 -41
  136. package/templates/zero-trust/mcp-servers.yaml +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"setup-artifact-writers.js","sourceRoot":"","sources":["../../src/tools/setup-artifact-writers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-artifact-writers.js","sourceRoot":"","sources":["../../src/tools/setup-artifact-writers.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,9 @@ import type { ProjectContext } from "./setup-context.js";
7
7
  /**
8
8
  * Build the phase 1 "what I found + three questions" response.
9
9
  *
10
+ * Only reached when git pre-flight passes (repo exists), so no git status
11
+ * annotation is needed here.
12
+ *
10
13
  * @param context - Assembled project context
11
14
  * @returns MCP tool response with analysis summary and calibration questions
12
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"setup-phase1.d.ts","sourceRoot":"","sources":["../../src/tools/setup-phase1.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAA6B,MAAM,qBAAqB,CAAC;AAEpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CA2BvE;AAoHD,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"setup-phase1.d.ts","sourceRoot":"","sources":["../../src/tools/setup-phase1.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EACL,kBAAkB,EAEnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CA2BvE;AAwKD,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1,12 +1,15 @@
1
1
  /**
2
2
  * setup-phase1: Phase 1 response builders — analysis summary and calibration questions.
3
3
  */
4
- import { generateReversePrd, writeBrownfieldReversePrd } from "./setup-detector.js";
4
+ import { generateReversePrd, writeBrownfieldReversePrd, } from "./setup-detector.js";
5
5
  import { readExperimentConfig } from "../shared/config.js";
6
6
  // ── Phase 1 Response ─────────────────────────────────────────────────
7
7
  /**
8
8
  * Build the phase 1 "what I found + three questions" response.
9
9
  *
10
+ * Only reached when git pre-flight passes (repo exists), so no git status
11
+ * annotation is needed here.
12
+ *
10
13
  * @param context - Assembled project context
11
14
  * @returns MCP tool response with analysis summary and calibration questions
12
15
  */
@@ -24,10 +27,10 @@ export function buildPhase1Response(context) {
24
27
  }
25
28
  if (context.isBrownfield) {
26
29
  writeBrownfieldReversePrd(context.projectDir);
27
- text += buildBrownfieldQuestions();
30
+ text += buildBrownfieldQuestions(context.inferredTags);
28
31
  }
29
32
  else {
30
- text += buildPhase1Questions();
33
+ text += buildPhase1Questions(context.inferredTags);
31
34
  }
32
35
  const experiment = readExperimentConfig(context.projectDir);
33
36
  if (experiment?.id) {
@@ -86,7 +89,7 @@ function buildAmbiguitySection(ambiguities) {
86
89
  * Build the "what I found" summary block.
87
90
  */
88
91
  function buildFoundSummary(context) {
89
- const { projectName, isExistingProject, specContent, specSourceLabel, specCandidates, inferredTags } = context;
92
+ const { projectName, isExistingProject, specContent, specSourceLabel, specCandidates, inferredTags, } = context;
90
93
  const specTitle = specContent?.match(/^#\s+(.+)/m)?.[1]?.trim() ?? null;
91
94
  const displayName = specTitle && specTitle !== "[Project Name]" ? specTitle : projectName;
92
95
  let summary = `### What I found:\n`;
@@ -101,46 +104,87 @@ function buildFoundSummary(context) {
101
104
  else {
102
105
  summary += `- **Spec**: not found — will scaffold with stubs\n`;
103
106
  }
104
- summary += `- **Inferred tags**: ${inferredTags.map((t) => `[${t}]`).join(" ")}\n\n`;
107
+ summary += `- **Inferred tags**: ${inferredTags.map((t) => `[${t}]`).join(" ")}\n`;
108
+ summary += `\n`;
105
109
  return summary;
106
110
  }
107
111
  /**
108
112
  * Build the three calibration questions block.
109
113
  */
110
- function buildPhase1Questions() {
111
- return `### Before I proceed, I need three answers:
112
-
113
- **Q1: What is the development stage?**
114
- - \`mvp\` — early validation, expect significant changes, minimal ceremony
115
- - \`production\` shipping to real users, full spec and quality gates required
116
-
117
- **Q2: Is the scope defined and stable?**
118
- - \`complete\` requirements are clear; proceed with full cascade
119
- - \`evolving\` scope is still forming; use lighter cascade, revisit when stable
120
-
121
- **Q3: Does this project have existing users or downstream consumers?**
122
- - \`yes\`behavioral contracts and breaking-change detection are required
123
- - \`no\` — contracts are recommended but not blocking
124
-
125
- Call \`setup_project\` again with \`mvp\`, \`scope_complete\`, and \`has_consumers\` to proceed.`;
114
+ const PLAYWRIGHT_TAGS = new Set(["WEB-REACT", "WEB-STATIC", "API"]);
115
+ /**
116
+ * Build the standard "four/five questions" block for greenfield projects.
117
+ * Q5 (Playwright) is only shown when the project has HTML or API tags.
118
+ *
119
+ * @param tags - Inferred project tags (to decide whether to show Q5)
120
+ */
121
+ function buildPhase1Questions(tags) {
122
+ const needsPlaywright = tags.some((t) => PLAYWRIGHT_TAGS.has(t));
123
+ const questionCount = needsPlaywright ? "five" : "four";
124
+ const playwrightBlock = needsPlaywright
125
+ ? `\n**Q5: Would you like to add Playwright MCP for browser automation and testing?**
126
+ Playwright MCP lets the AI assistant drive a real browser navigate pages, fill forms, screenshot, and loop on visual feedback without leaving the chat. For API projects it adds request interception and response validation. It runs locally (no data leaves your machine).
127
+ - \`yes\` *(recommended)* wire it in automatically
128
+ - \`no\` — skip it; choose this if you already use an equivalent browser testing tool\n`
129
+ : "";
130
+ const params = needsPlaywright
131
+ ? "`mvp`, `scope_complete`, `has_consumers`, `use_codeseeker`, and `use_playwright`"
132
+ : "`mvp`, `scope_complete`, `has_consumers`, and `use_codeseeker`";
133
+ return `### Before I proceed, I need ${questionCount} answers:
134
+
135
+ **Q1: What is the development stage?**
136
+ - \`mvp\` — early validation, expect significant changes, minimal ceremony
137
+ - \`production\` — shipping to real users, full spec and quality gates required
138
+
139
+ **Q2: Is the scope defined and stable?**
140
+ - \`complete\` — requirements are clear; proceed with full cascade
141
+ - \`evolving\` — scope is still forming; use lighter cascade, revisit when stable
142
+
143
+ **Q3: Does this project have existing users or downstream consumers?**
144
+ - \`yes\` — behavioral contracts and breaking-change detection are required
145
+ - \`no\` — contracts are recommended but not blocking
146
+
147
+ **Q4: Would you like to add CodeSeeker for semantic code search?**
148
+ CodeSeeker builds a live knowledge graph of your codebase so the AI assistant can find existing patterns before writing new code — this cut duplication by ~53% in measured sessions. It runs locally (no data leaves your machine).
149
+ - \`yes\` *(recommended)* — wire it in automatically
150
+ - \`no\` — skip it; choose this if you already use a similar semantic search tool
151
+ ${playwrightBlock}
152
+ Call \`setup_project\` again with ${params} to proceed.`;
126
153
  }
127
154
  /**
128
155
  * Build brownfield-specific calibration questions for phase 1.
156
+ *
157
+ * @param tags - Inferred project tags (to decide whether to show Playwright Q)
129
158
  */
130
- function buildBrownfieldQuestions() {
131
- return `## Brownfield Project Detected
132
-
133
- I found existing source code. Before we proceed:
134
-
135
- 1. **What is currently broken or incomplete?** (Describe the known issues or missing features)
136
- 2. **What new feature or improvement are you adding?** (Describe the specific change)
137
- 3. **Do tests exist, and do they currently pass?** (Run \`npm test\` or \`pytest\` to check)
138
-
139
- I've generated a reverse-engineered spec stub at \`docs/PRD.md\`. Review and complete it.
140
-
141
- Create a \`work/\` branch before making changes: \`git checkout -b work/forgecraft-setup\`
142
-
143
- Call \`setup_project\` again with \`mvp\`, \`scope_complete\`, and \`has_consumers\` to proceed.`;
159
+ function buildBrownfieldQuestions(tags) {
160
+ const needsPlaywright = tags.some((t) => PLAYWRIGHT_TAGS.has(t));
161
+ const playwrightBlock = needsPlaywright
162
+ ? `\n**Also answer the Playwright question:** Would you like browser automation wired in?
163
+ Playwright MCP lets the AI drive a real browser for E2E loops, visual verification, and API request interception — all locally.
164
+ - \`use_playwright: true\` *(recommended)*
165
+ - \`use_playwright: false\` skip if you already have an equivalent browser testing tool\n`
166
+ : "";
167
+ const params = needsPlaywright
168
+ ? "`mvp`, `scope_complete`, `has_consumers`, `use_codeseeker`, and `use_playwright`"
169
+ : "`mvp`, `scope_complete`, `has_consumers`, and `use_codeseeker`";
170
+ return `## Brownfield Project Detected
171
+
172
+ I found existing source code. Before we proceed:
173
+
174
+ 1. **What is currently broken or incomplete?** (Describe the known issues or missing features)
175
+ 2. **What new feature or improvement are you adding?** (Describe the specific change)
176
+ 3. **Do tests exist, and do they currently pass?** (Run \`npm test\` or \`pytest\` to check)
177
+
178
+ I've generated a reverse-engineered spec stub at \`docs/PRD.md\`. Review and complete it.
179
+
180
+ Create a \`work/\` branch before making changes: \`git checkout -b work/forgecraft-setup\`
181
+
182
+ **Also answer the CodeSeeker question:** Would you like semantic code search wired in?
183
+ CodeSeeker builds a live knowledge graph so the AI can find existing patterns before writing new code — measured ~53% reduction in duplication. Runs locally, no data leaves your machine.
184
+ - \`use_codeseeker: true\` *(recommended)*
185
+ - \`use_codeseeker: false\` — skip if you already have a similar semantic search tool
186
+ ${playwrightBlock}
187
+ Call \`setup_project\` again with ${params} to proceed.`;
144
188
  }
145
189
  // Export generateReversePrd for backward compatibility
146
190
  export { generateReversePrd };
@@ -1 +1 @@
1
- {"version":3,"file":"setup-phase1.js","sourceRoot":"","sources":["../../src/tools/setup-phase1.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-phase1.js","sourceRoot":"","sources":["../../src/tools/setup-phase1.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,8 @@ export interface Phase2ResponseParams {
21
21
  readonly hasConsumers: boolean;
22
22
  readonly prdWritten: boolean;
23
23
  readonly useCasesWritten: boolean;
24
+ readonly sampleOutcomeWritten: boolean;
25
+ readonly toolSampleSplit?: "tool_and_sample" | "tool_only" | "content_only";
24
26
  readonly yamlWritten: boolean;
25
27
  readonly scaffoldText: string;
26
28
  readonly sensitiveData?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"setup-phase2.d.ts","sourceRoot":"","sources":["../../src/tools/setup-phase2.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAc1D;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,OAAO,EACZ,aAAa,EAAE,OAAO,EACtB,YAAY,EAAE,OAAO,GACpB,eAAe,EAAE,CA8BnB;AAID,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAoExE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,eAAe,EACzB,GAAG,EAAE,OAAO,EACZ,aAAa,EAAE,OAAO,EACtB,YAAY,EAAE,OAAO,GACpB,MAAM,CAYR;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,SAAS,eAAe,EAAE,GACpC,MAAM,CAeR"}
1
+ {"version":3,"file":"setup-phase2.d.ts","sourceRoot":"","sources":["../../src/tools/setup-phase2.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAc1D;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,OAAO,EACZ,aAAa,EAAE,OAAO,EACtB,YAAY,EAAE,OAAO,GACpB,eAAe,EAAE,CA8BnB;AAID,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,iBAAiB,GAAG,WAAW,GAAG,cAAc,CAAC;IAC5E,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CA+ExE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,eAAe,EACzB,GAAG,EAAE,OAAO,EACZ,aAAa,EAAE,OAAO,EACtB,YAAY,EAAE,OAAO,GACpB,MAAM,CAYR;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,SAAS,eAAe,EAAE,GACpC,MAAM,CAeR"}
@@ -76,9 +76,11 @@ export function buildPhase2Response(params) {
76
76
  if (yamlWritten)
77
77
  text += ` forgecraft.yaml (with cascade decisions)\n`;
78
78
  if (prdWritten)
79
- text += ` docs/PRD.md (from spec)\n`;
79
+ text += ` docs/PRD.md (from spec — focuses on the core tool)\n`;
80
80
  if (useCasesWritten)
81
81
  text += ` docs/use-cases.md (from spec)\n`;
82
+ if (params.sampleOutcomeWritten)
83
+ text += ` docs/sample-outcome.md (first real deliverable of the core tool)\n`;
82
84
  if (indexMdWritten)
83
85
  text += ` .claude/index.md (CNT routing root)\n`;
84
86
  if (coreMdWritten)
@@ -99,6 +101,13 @@ export function buildPhase2Response(params) {
99
101
  }
100
102
  if (params.gitInitStatus)
101
103
  text += `\n### Git\n ${params.gitInitStatus}\n`;
104
+ if (params.toolSampleSplit === "tool_and_sample") {
105
+ text += `\n### 🔀 Tool vs. Sample Output — Split Applied\n`;
106
+ text += ` The PRD covers the **core generative tool**.\n`;
107
+ text += ` \`docs/sample-outcome.md\` holds the specific creative work from the spec.\n`;
108
+ text += ` Fill in that file, then use it as the first acceptance test:\n`;
109
+ text += ` the tool is done when it can produce that specific outcome.\n`;
110
+ }
102
111
  text += `\n### Next step — call this now:\n`;
103
112
  text += `\`\`\`\naction: "check_cascade"\nproject_dir: "${params.projectDir ?? ""}"\n\`\`\`\n`;
104
113
  if (params.isBrownfield) {
@@ -1 +1 @@
1
- {"version":3,"file":"setup-phase2.js","sourceRoot":"","sources":["../../src/tools/setup-phase2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-phase2.js","sourceRoot":"","sources":["../../src/tools/setup-phase2.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,24 @@ export interface SetupProjectArgs {
40
40
  * When provided, these override the directory-inferred tags.
41
41
  */
42
42
  readonly tags?: string[];
43
+ /**
44
+ * Phase 2: whether to add CodeSeeker for semantic code search.
45
+ * Presented as an opt-in question in Phase 1.
46
+ * Defaults to true when omitted (backward compatible).
47
+ */
48
+ readonly use_codeseeker?: boolean;
49
+ /**
50
+ * Phase 2: whether to add Playwright MCP for browser automation and E2E/API testing.
51
+ * Only asked in Phase 1 for WEB-REACT, WEB-STATIC, or API projects.
52
+ * Defaults to true when omitted (backward compatible).
53
+ */
54
+ readonly use_playwright?: boolean;
55
+ /**
56
+ * Phase 2: how to handle a spec that conflates a generative tool with a
57
+ * specific named creative output. Only relevant when Phase 1 reports
58
+ * a tool_vs_sample_output ambiguity.
59
+ */
60
+ readonly tool_sample_split?: "tool_and_sample" | "tool_only" | "content_only";
43
61
  }
44
62
  /**
45
63
  * Unified two-phase setup handler.
@@ -1 +1 @@
1
- {"version":3,"file":"setup-project.d.ts","sourceRoot":"","sources":["../../src/tools/setup-project.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAO,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQ1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAsBxD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,qDAAqD;IACrD,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,8EAA8E;IAC9E,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAOD;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,UAAU,CAAC,CA0BrB;AAyID;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAezE;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,QAAQ,EAAE,MAAM,GACf,MAAM,EAAE,CAaV"}
1
+ {"version":3,"file":"setup-project.d.ts","sourceRoot":"","sources":["../../src/tools/setup-project.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAO,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQ1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAwBxD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,qDAAqD;IACrD,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,8EAA8E;IAC9E,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,WAAW,GAAG,cAAc,CAAC;CAC/E;AAOD;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,UAAU,CAAC,CAsCrB;AA+MD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAezE;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,QAAQ,EAAE,MAAM,GACf,MAAM,EAAE,CAaV"}
@@ -17,7 +17,7 @@ import { parseSpec, inferSensitiveData } from "./spec-parser.js";
17
17
  import { buildProjectContext } from "./setup-context.js";
18
18
  export { detectProjectMode } from "./setup-detector.js";
19
19
  import { buildPhase1Response } from "./setup-phase1.js";
20
- import { writeForgeYaml, setExperimentGroupIfMissing, writePrd, writeUseCases, initGitRepo, } from "./setup-artifact-writers.js";
20
+ import { writeForgeYaml, setExperimentGroupIfMissing, writePrd, writeUseCases, writeSampleOutcome, initGitRepo, checkGitStatus, } from "./setup-artifact-writers.js";
21
21
  import { deriveCascadeDecisions, buildPhase2Response } from "./setup-phase2.js";
22
22
  import { writeCntFiles, writeCoreMd, writeAdrIndex, writeGatesIndex, } from "./setup-cnt.js";
23
23
  const logger = createLogger("tools/setup-project");
@@ -41,6 +41,15 @@ export async function setupProjectHandler(args) {
41
41
  phase: isPhase2 ? 2 : 1,
42
42
  projectDir: args.project_dir,
43
43
  });
44
+ // ── Git pre-flight (skip in test environments) ───────────────────
45
+ const gitStatus = process.env["VITEST"] || process.env["NODE_ENV"] === "test"
46
+ ? "repo"
47
+ : checkGitStatus(args.project_dir);
48
+ if (gitStatus === "no-git" || gitStatus === "no-repo") {
49
+ return gitStatus === "no-git"
50
+ ? buildNoGitResponse()
51
+ : buildNoRepoResponse();
52
+ }
44
53
  const context = await buildProjectContext(args);
45
54
  if (!isPhase2) {
46
55
  return buildPhase1Response(context);
@@ -90,6 +99,9 @@ async function executePhase2(args, context) {
90
99
  const useCasesWritten = hasSpec
91
100
  ? writeUseCases(projectDir, projectName, aiFields, context.specContent)
92
101
  : false;
102
+ const sampleOutcomeWritten = args.tool_sample_split === "tool_and_sample"
103
+ ? writeSampleOutcome(projectDir, projectName)
104
+ : false;
93
105
  const validTagsForHooks = (forgeCraftTags.length > 0 ? forgeCraftTags : ["UNIVERSAL"]);
94
106
  const scaffoldResult = await scaffoldProjectHandler({
95
107
  tags: validTagsForHooks,
@@ -110,6 +122,12 @@ async function executePhase2(args, context) {
110
122
  project_dir: projectDir,
111
123
  auto_approve_tools: true,
112
124
  include_remote: false,
125
+ excluded_servers: [
126
+ ...(args.use_codeseeker === false ? ["codeseeker"] : []),
127
+ ...(args.use_playwright === false
128
+ ? ["playwright", "playwright-mcp"]
129
+ : []),
130
+ ],
113
131
  });
114
132
  mcpServerNames = readConfiguredMcpServerNames(projectDir);
115
133
  }
@@ -125,6 +143,8 @@ async function executePhase2(args, context) {
125
143
  hasConsumers: args.has_consumers,
126
144
  prdWritten,
127
145
  useCasesWritten,
146
+ sampleOutcomeWritten,
147
+ toolSampleSplit: args.tool_sample_split,
128
148
  yamlWritten,
129
149
  scaffoldText,
130
150
  sensitiveData: isSensitive,
@@ -140,6 +160,62 @@ async function executePhase2(args, context) {
140
160
  return { content: [{ type: "text", text }] };
141
161
  }
142
162
  // ── Utilities ─────────────────────────────────────────────────────────
163
+ /**
164
+ * Return a hard-stop response when git is not installed on the system.
165
+ * ForgeCraft requires git to version-control the generated cascade artifacts.
166
+ *
167
+ * @returns MCP tool response with install instructions
168
+ */
169
+ function buildNoGitResponse() {
170
+ const text = `## ⛔ Git Required
171
+
172
+ ForgeCraft tracks every generated artifact in version control, so **Git must be installed before setup can proceed**.
173
+
174
+ Git was not found on this system. To fix this:
175
+
176
+ 1. **Install Git** → https://git-scm.com/downloads
177
+ 2. **Configure identity**
178
+ \`\`\`
179
+ git config --global user.name "Your Name"
180
+ git config --global user.email "you@example.com"
181
+ \`\`\`
182
+ 3. **Initialise your project repo** (if starting fresh)
183
+ \`\`\`
184
+ git init && git add . && git commit -m "chore: initial commit"
185
+ \`\`\`
186
+
187
+ Then re-run \`setup_project\`.`;
188
+ return { content: [{ type: "text", text }] };
189
+ }
190
+ /**
191
+ * Return a hard-stop response when no git repository exists in the project directory.
192
+ * ForgeCraft cannot guarantee cascade artifact integrity without version control.
193
+ *
194
+ * @returns MCP tool response with init instructions
195
+ */
196
+ function buildNoRepoResponse() {
197
+ const text = `## ⛔ Git Repository Required
198
+
199
+ ForgeCraft tracks every generated artifact in version control. **A git repository must exist before setup can proceed** — without it ForgeCraft cannot guarantee cascade integrity or metric baselines.
200
+
201
+ No \`.git\` directory was found in this project. To fix this, run:
202
+
203
+ \`\`\`
204
+ git init
205
+ git add .
206
+ git commit -m "chore: initial commit"
207
+ \`\`\`
208
+
209
+ If this is a new project with nothing to commit yet, a single placeholder commit is enough:
210
+
211
+ \`\`\`
212
+ git init
213
+ git commit --allow-empty -m "chore: initial commit"
214
+ \`\`\`
215
+
216
+ Then re-run \`setup_project\`.`;
217
+ return { content: [{ type: "text", text }] };
218
+ }
143
219
  /**
144
220
  * Filter inferred tag strings to only valid ALL_TAGS values.
145
221
  *
@@ -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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"}
@@ -39,6 +39,15 @@ export declare const DEPLOYMENT_TAGS: Set<string>;
39
39
  * @returns Array of detected ambiguity items
40
40
  */
41
41
  export declare function detectSpecAmbiguities(text: string, inferredTags: string[]): AmbiguityItem[];
42
+ /**
43
+ * Detect when a spec conflates a generative tool with a specific named creative
44
+ * output that the tool would produce. Returns an AmbiguityItem when both signals
45
+ * are present, or null when the spec is clearly about just one of them.
46
+ *
47
+ * @param text - Full spec text
48
+ * @returns AmbiguityItem or null
49
+ */
50
+ export declare function detectToolSampleConflation(text: string): AmbiguityItem | null;
42
51
  /**
43
52
  * Keywords that imply sensitive data handling.
44
53
  */
@@ -1 +1 @@
1
- {"version":3,"file":"spec-parser-tags.d.ts","sourceRoot":"","sources":["../../src/tools/spec-parser-tags.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,iGAAiG;IACjG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;QACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,CAAC,CAAC;CACJ;AAID,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B,CA4EA,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CASxD;AAID,uHAAuH;AACvH,eAAO,MAAM,cAAc,QAA2B,CAAC;AAEvD,eAAO,MAAM,eAAe,aAO1B,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EAAE,GACrB,aAAa,EAAE,CAoCjB;AAID;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EA4BpD,CAAC;AAEF,sCAAsC;AACtC,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAM3C,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,EACvE,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAgBT"}
1
+ {"version":3,"file":"spec-parser-tags.d.ts","sourceRoot":"","sources":["../../src/tools/spec-parser-tags.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,iGAAiG;IACjG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;QACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,CAAC,CAAC;CACJ;AAID,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B,CA4EA,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CASxD;AAID,uHAAuH;AACvH,eAAO,MAAM,cAAc,QAA2B,CAAC;AAEvD,eAAO,MAAM,eAAe,aAO1B,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EAAE,GACrB,aAAa,EAAE,CAyCjB;AAwCD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAkD7E;AAID;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EA4BpD,CAAC;AAEF,sCAAsC;AACtC,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAM3C,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,EACvE,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAiBT"}
@@ -143,8 +143,100 @@ export function detectSpecAmbiguities(text, inferredTags) {
143
143
  ],
144
144
  });
145
145
  }
146
+ const conflation = detectToolSampleConflation(text);
147
+ if (conflation) {
148
+ ambiguities.push(conflation);
149
+ }
146
150
  return ambiguities;
147
151
  }
152
+ // ── Tool vs. sample-output conflation detection ───────────────────────
153
+ /**
154
+ * Signals that the spec describes a generative AI / creative tool being built.
155
+ * Looks for AI system capability descriptions, not just incidental AI mentions.
156
+ */
157
+ const GENERATIVE_TOOL_PATTERNS = [
158
+ // Named AI creative roles
159
+ /\b(AI|automated?|autonomous?|intelligent)\s+(ghostwriter|composer|artist|writer|storyteller|narrator|creator|generator|designer|director|musician|author|painter|illustrator)\b/i,
160
+ // Generative AI technology being built
161
+ /\b(build|create|develop|make)\s+(an?\s+)?(AI|ML|LLM|generative|diffusion)\s+\w+\s+(that|to|for)\s+(generates?|creates?|writes?|produces?|composes?|renders?)\b/i,
162
+ // Capability described: "generates novels", "writes stories", "composes music"
163
+ /\b(generates?|creates?|produces?|writes?|composes?|renders?)\s+(novels?|books?|stories?|music|songs?|artworks?|images?|paintings?|games?|levels?|scripts?|content|narratives?|poems?|lyrics?)\b/i,
164
+ // Stable diffusion / text-to-X pattern
165
+ /\b(stable diffusion|diffusion model|text[\s-]to[\s-](image|video|music|speech|art|story|game)|LLM|language model|GPT|fine[\s-]tun)\b/i,
166
+ // "AI-powered [creative thing]"
167
+ /\bAI[\s-]powered\s+(writing|story|music|art|game|content|creative)\b/i,
168
+ ];
169
+ /**
170
+ * Signals that the spec describes a specific named creative output —
171
+ * something the tool would produce rather than the tool itself.
172
+ */
173
+ const NAMED_CREATIVE_OUTPUT_PATTERNS = [
174
+ // Quoted title-case multi-word title: "The Chronicles of Something"
175
+ /["']([A-Z][a-z]+([ '-][A-Za-z]+){1,6})["']/,
176
+ // Named character/protagonist/villain
177
+ /\b(character|protagonist|hero|villain|antagonist|player character|main character)\s+(named?|called?)\s+["']?[A-Z][a-z]+/i,
178
+ // Specific world or setting with proper noun
179
+ /\b(set in|takes place in|world of|the world named?|realm of|universe of)\s+["']?[A-Z][a-zA-Z\s]{2,25}["']?/i,
180
+ // "the first [novel/game/song/...] will be" — explicit sample language
181
+ /\bthe\s+(first|initial|sample|demo|example|pilot|showcase)\s+(novel|book|game|song|album|artwork?|story|level|episode|chapter|track|piece|composition)\b/i,
182
+ // Structural creative content markers: "Chapter 1:", "Act 1 —"
183
+ /\b(chapter|act|scene|episode|part)\s+\d+\s*[:\-—]/i,
184
+ // Specific plot/story beat language
185
+ /\b(plot|storyline|narrative arc|character arc|backstory|lore|world[\s-]build)\b.{0,80}\b(specific|detailed|complete|full)\b/i,
186
+ ];
187
+ /**
188
+ * Detect when a spec conflates a generative tool with a specific named creative
189
+ * output that the tool would produce. Returns an AmbiguityItem when both signals
190
+ * are present, or null when the spec is clearly about just one of them.
191
+ *
192
+ * @param text - Full spec text
193
+ * @returns AmbiguityItem or null
194
+ */
195
+ export function detectToolSampleConflation(text) {
196
+ const toolSignals = [];
197
+ for (const pattern of GENERATIVE_TOOL_PATTERNS) {
198
+ const match = text.match(pattern);
199
+ if (match) {
200
+ toolSignals.push(match[0].trim().replace(/\s+/g, " ").slice(0, 60));
201
+ }
202
+ }
203
+ if (toolSignals.length === 0)
204
+ return null;
205
+ const contentSignals = [];
206
+ for (const pattern of NAMED_CREATIVE_OUTPUT_PATTERNS) {
207
+ const match = text.match(pattern);
208
+ if (match) {
209
+ contentSignals.push(match[0].trim().replace(/\s+/g, " ").slice(0, 60));
210
+ }
211
+ }
212
+ if (contentSignals.length === 0)
213
+ return null;
214
+ return {
215
+ field: "tool_vs_sample_output",
216
+ signals: [
217
+ `Generative tool described: "${toolSignals[0]}"`,
218
+ `Specific creative output described: "${contentSignals[0]}"`,
219
+ ],
220
+ interpretations: [
221
+ {
222
+ label: "tool_and_sample",
223
+ description: "Build the core tool; treat the named creative work as the first real deliverable",
224
+ consequence: "PRD focuses on the generative system. A docs/sample-outcome.md is created " +
225
+ "with the specific creative work details as the first acceptance test.",
226
+ },
227
+ {
228
+ label: "tool_only",
229
+ description: "Build the core tool only; the named creative work is illustrative, not a deliverable",
230
+ consequence: "Named creative content is treated as usage examples only. No sample-outcome artifact is created.",
231
+ },
232
+ {
233
+ label: "content_only",
234
+ description: "The goal is to produce the specific named creative work; the tool is a means, not the end",
235
+ consequence: "PRD focuses on delivering the creative work itself. Tool requirements are implementation details.",
236
+ },
237
+ ],
238
+ };
239
+ }
148
240
  // ── Sensitive data detection ──────────────────────────────────────────
149
241
  /**
150
242
  * Keywords that imply sensitive data handling.