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
@@ -32,70 +32,70 @@ export function writeInitialSessionPromptIfAbsent(projectDir) {
32
32
  .filter(Boolean)
33
33
  .join("\n");
34
34
  const tagLine = tags.length > 0 ? `\nProject tags: ${tags.join(", ")}\n` : "";
35
- const content = `# Initial Implementation Session Prompt
36
- > Generated by ForgeCraft \`check_cascade\` on cascade completion.
37
- > Delete this file after the first implementation session begins — it is a one-time bootstrap.
38
-
39
- ---
40
-
41
- ## Context Load Order
42
-
43
- Load these artifacts **before** issuing the implementation prompt:
44
-
45
- ${contextBlock || "- (No derived artifacts found — run setup_project first)"}
46
-
47
- ---
48
-
49
- ## Implementation Prompt
50
-
51
- *(Paste everything below this line to the AI assistant)*
52
-
53
- ---
54
-
55
- ### Task
56
-
57
- You are starting the first implementation session for **${projectName}**.
58
- ${tagLine}
59
- Read the PRD and use-cases, then implement the first feature end-to-end following
60
- the architectural constitution. Begin with the domain layer (entities + port interfaces),
61
- then the service layer, then the API/CLI adapter. Apply TDD throughout — write the test
62
- first, then the implementation. Do not proceed to the next layer until tests pass.
63
-
64
- ### Scope
65
-
66
- - Implement the primary use case (UC-001) completely before touching UC-002 or UC-003.
67
- - Infrastructure setup (DB, config, DI container) is in scope only as required by UC-001.
68
- - Do not stub or mock domain logic — implement it fully.
69
-
70
- ### Execution Loop
71
-
72
- 1. Read docs/PRD.md → identify UC-001 domain entities and port interfaces
73
- 2. Write failing tests for the domain layer
74
- 3. Implement domain layer until tests pass
75
- 4. Write failing tests for the service layer
76
- 5. Implement service layer until tests pass
77
- 6. Write failing integration/API tests
78
- 7. Implement API/CLI adapter until tests pass
79
- 8. Run \`check_cascade\` and \`close_cycle\` before committing
80
-
81
- ### Acceptance Criteria
82
-
83
- - [ ] UC-001 is fully implemented and tested (unit + integration)
84
- - [ ] All tests pass with ≥80% coverage
85
- - [ ] No circular imports (run layer check)
86
- - [ ] SOLID principles applied — each class has a single reason to change
87
- - [ ] \`close_cycle\` reports no blocking gate failures
88
-
89
- ### Session Close
90
-
91
- Before ending this session:
92
- 1. Run the full test suite — paste the summary output
93
- 2. Update Status.md: what was completed, current state, next steps
94
- 3. If a non-obvious architectural decision was made: write an ADR in docs/adrs/
95
-
96
- ---
97
- \`files_created\`: []
98
- \`next_steps\`: ["Run check_cascade to verify cascade is still complete after this session"]
35
+ const content = `# Initial Implementation Session Prompt
36
+ > Generated by ForgeCraft \`check_cascade\` on cascade completion.
37
+ > Delete this file after the first implementation session begins — it is a one-time bootstrap.
38
+
39
+ ---
40
+
41
+ ## Context Load Order
42
+
43
+ Load these artifacts **before** issuing the implementation prompt:
44
+
45
+ ${contextBlock || "- (No derived artifacts found — run setup_project first)"}
46
+
47
+ ---
48
+
49
+ ## Implementation Prompt
50
+
51
+ *(Paste everything below this line to the AI assistant)*
52
+
53
+ ---
54
+
55
+ ### Task
56
+
57
+ You are starting the first implementation session for **${projectName}**.
58
+ ${tagLine}
59
+ Read the PRD and use-cases, then implement the first feature end-to-end following
60
+ the architectural constitution. Begin with the domain layer (entities + port interfaces),
61
+ then the service layer, then the API/CLI adapter. Apply TDD throughout — write the test
62
+ first, then the implementation. Do not proceed to the next layer until tests pass.
63
+
64
+ ### Scope
65
+
66
+ - Implement the primary use case (UC-001) completely before touching UC-002 or UC-003.
67
+ - Infrastructure setup (DB, config, DI container) is in scope only as required by UC-001.
68
+ - Do not stub or mock domain logic — implement it fully.
69
+
70
+ ### Execution Loop
71
+
72
+ 1. Read docs/PRD.md → identify UC-001 domain entities and port interfaces
73
+ 2. Write failing tests for the domain layer
74
+ 3. Implement domain layer until tests pass
75
+ 4. Write failing tests for the service layer
76
+ 5. Implement service layer until tests pass
77
+ 6. Write failing integration/API tests
78
+ 7. Implement API/CLI adapter until tests pass
79
+ 8. Run \`check_cascade\` and \`close_cycle\` before committing
80
+
81
+ ### Acceptance Criteria
82
+
83
+ - [ ] UC-001 is fully implemented and tested (unit + integration)
84
+ - [ ] All tests pass with ≥80% coverage
85
+ - [ ] No circular imports (run layer check)
86
+ - [ ] SOLID principles applied — each class has a single reason to change
87
+ - [ ] \`close_cycle\` reports no blocking gate failures
88
+
89
+ ### Session Close
90
+
91
+ Before ending this session:
92
+ 1. Run the full test suite — paste the summary output
93
+ 2. Update Status.md: what was completed, current state, next steps
94
+ 3. If a non-obvious architectural decision was made: write an ADR in docs/adrs/
95
+
96
+ ---
97
+ \`files_created\`: []
98
+ \`next_steps\`: ["Run check_cascade to verify cascade is still complete after this session"]
99
99
  `;
100
100
  mkdirSync(join(projectDir, "docs"), { recursive: true });
101
101
  writeFileSync(outputPath, content, "utf-8");
@@ -1 +1 @@
1
- {"version":3,"file":"forgecraft-dispatch.d.ts","sourceRoot":"","sources":["../../src/tools/forgecraft-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAO,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAwB1D,OAAO,KAAK,EAAE,cAAc,EAAU,MAAM,wBAAwB,CAAC;AAQrE,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,UAAU,CAAC,CAsOrB"}
1
+ {"version":3,"file":"forgecraft-dispatch.d.ts","sourceRoot":"","sources":["../../src/tools/forgecraft-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAO,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAwB1D,OAAO,KAAK,EAAE,cAAc,EAAU,MAAM,wBAAwB,CAAC;AAQrE,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,UAAU,CAAC,CAuOrB"}
@@ -38,6 +38,7 @@ export async function dispatchForgecraft(args) {
38
38
  scope_complete: args.scope_complete,
39
39
  has_consumers: args.has_consumers,
40
40
  project_type_override: args.project_type_override,
41
+ tags: args.tags,
41
42
  });
42
43
  case "list":
43
44
  return dispatchList(args);
@@ -1 +1 @@
1
- {"version":3,"file":"forgecraft-dispatch.js","sourceRoot":"","sources":["../../src/tools/forgecraft-dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forgecraft-dispatch.js","sourceRoot":"","sources":["../../src/tools/forgecraft-dispatch.ts"],"names":[],"mappings":"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"}
@@ -124,6 +124,7 @@ export declare const forgecraftSchema: z.ZodObject<{
124
124
  include_mutation?: boolean | undefined;
125
125
  coverage_dir?: string | undefined;
126
126
  merge?: boolean | undefined;
127
+ resource?: string | undefined;
127
128
  item_description?: string | undefined;
128
129
  acceptance_criteria?: string[] | undefined;
129
130
  scope_note?: string | undefined;
@@ -155,7 +156,6 @@ export declare const forgecraftSchema: z.ZodObject<{
155
156
  cnt_content?: string | undefined;
156
157
  deployment_url?: string | undefined;
157
158
  skip_load_test?: boolean | undefined;
158
- resource?: string | undefined;
159
159
  }, {
160
160
  action: string;
161
161
  tag?: string | undefined;
@@ -194,6 +194,7 @@ export declare const forgecraftSchema: z.ZodObject<{
194
194
  include_mutation?: boolean | undefined;
195
195
  coverage_dir?: string | undefined;
196
196
  merge?: boolean | undefined;
197
+ resource?: string | undefined;
197
198
  item_description?: string | undefined;
198
199
  acceptance_criteria?: string[] | undefined;
199
200
  scope_note?: string | undefined;
@@ -225,7 +226,6 @@ export declare const forgecraftSchema: z.ZodObject<{
225
226
  cnt_content?: string | undefined;
226
227
  deployment_url?: string | undefined;
227
228
  skip_load_test?: boolean | undefined;
228
- resource?: string | undefined;
229
229
  }>;
230
230
  export type ForgecraftArgs = z.infer<typeof forgecraftSchema>;
231
231
  //# sourceMappingURL=forgecraft-schema.d.ts.map
@@ -5,20 +5,20 @@
5
5
  */
6
6
  import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
7
7
  import { dirname } from "node:path";
8
- export const USE_CASES_STUB = `<!-- UNFILLED: Use Cases -->
9
- # Use Cases
10
-
11
- ## UC-01: [Name]
12
- **Actor**: <!-- FILL: who? -->
13
- **Precondition**: <!-- FILL: what must be true before? -->
14
- **Steps**: <!-- FILL: numbered steps -->
15
- **Success**: <!-- FILL: what changed? -->
16
-
17
- ## UC-02: [Name]
18
- <!-- FILL -->
19
-
20
- ## UC-03: [Name]
21
- <!-- FILL -->
8
+ export const USE_CASES_STUB = `<!-- UNFILLED: Use Cases -->
9
+ # Use Cases
10
+
11
+ ## UC-01: [Name]
12
+ **Actor**: <!-- FILL: who? -->
13
+ **Precondition**: <!-- FILL: what must be true before? -->
14
+ **Steps**: <!-- FILL: numbered steps -->
15
+ **Success**: <!-- FILL: what changed? -->
16
+
17
+ ## UC-02: [Name]
18
+ <!-- FILL -->
19
+
20
+ ## UC-03: [Name]
21
+ <!-- FILL -->
22
22
  `;
23
23
  /**
24
24
  * Build the UNFILLED stub content for docs/diagrams/c4-context.md.
@@ -27,16 +27,16 @@ export const USE_CASES_STUB = `<!-- UNFILLED: Use Cases -->
27
27
  * @returns Stub content with UNFILLED markers
28
28
  */
29
29
  export function buildC4ContextStub(projectName) {
30
- return `<!-- UNFILLED: C4 Context Diagram -->
31
- <!-- Run \`forgecraft generate_diagram\` to auto-generate from your spec -->
32
- # System Context Diagram
33
- \`\`\`mermaid
34
- C4Context
35
- title System Context: ${projectName}
36
- Person(user, "User", "<!-- FILL: Who uses the system? -->")
37
- System(system, "${projectName}", "<!-- FILL: What does the system do in one sentence? -->")
38
- Rel(user, system, "<!-- FILL: Primary interaction -->")
39
- \`\`\`
30
+ return `<!-- UNFILLED: C4 Context Diagram -->
31
+ <!-- Run \`forgecraft generate_diagram\` to auto-generate from your spec -->
32
+ # System Context Diagram
33
+ \`\`\`mermaid
34
+ C4Context
35
+ title System Context: ${projectName}
36
+ Person(user, "User", "<!-- FILL: Who uses the system? -->")
37
+ System(system, "${projectName}", "<!-- FILL: What does the system do in one sentence? -->")
38
+ Rel(user, system, "<!-- FILL: Primary interaction -->")
39
+ \`\`\`
40
40
  `;
41
41
  }
42
42
  /**
@@ -4,7 +4,7 @@
4
4
  import type { ProjectDeploymentConfig } from "../shared/types.js";
5
5
  export declare const PROJECT_SPECIFIC_TEMPLATE = "# Project-Specific Rules\n<!-- This file is owned by YOU. ForgeCraft will never overwrite it. -->\n<!-- Add project-specific rules, framework choices, conventions, and corrections here. -->\n<!-- The sentinel CLAUDE.md links here so any AI reading your project can find it. -->\n\n## Framework & Stack Choices\n<!-- e.g. We use Prisma for ORM. Deploy target is Railway. Python 3.11+. -->\n\n## Custom Corrections Log\n<!-- Log AI corrections so the pattern isn't repeated. -->\n<!-- Format: - YYYY-MM-DD: [description of correction] -->\n\n## Project-Specific Gates\n<!-- Add quality rules specific to this project that don't belong in universal standards. -->\n";
6
6
  export declare const EXCEPTIONS_TEMPLATE: string;
7
- export declare const PROJECT_GATES_TEMPLATE = "version: \"1\"\n# Project-specific quality gates.\n# Gates you discover while working that should be enforced for this project.\n# Set generalizable: true + fill in evidence to contribute to the community registry.\n# See: https://github.com/genspec-dev/quality-gates/issues/new?template=quality-gate-proposal.md\ngates: []\n";
7
+ export declare const PROJECT_GATES_TEMPLATE = "version: \"1\"\n# Project-specific quality gates.\n# Gates you discover while working that should be enforced for this project.\n# Set generalizable: true + fill in evidence to contribute to the community registry.\n# See: https://github.com/jghiringhelli/quality-gates/issues/new?template=quality-gate-proposal.md\ngates: []\n";
8
8
  export declare const SMOKE_TESTS_README = "# Smoke Tests\n\nGenerated by ForgeCraft scaffold. Fill in the critical paths from your tech spec.\n\n## What smoke tests cover\n- Every API entry point that serves real users\n- Every critical user journey end-to-end\n- Every DB migration (verify schema applied correctly)\n- Every external integration handshake\n\n## Format\nUse the tool configured in forgecraft.yaml deployment.testing.smokeTool (or default to HTTP assertions).\nAll smoke tests must complete in < 60 seconds total.\n\n## Running\nSee forgecraft.yaml tools.test or your project's test runner.\nResults are written to .forgecraft/reports/smoke-latest.json.\n\n## Required before deployment\nAll smoke tests must pass against staging before any production deploy.\nSee verification.yaml deployment-gates phase.\n";
9
9
  export declare const LOAD_TESTS_README = "# Load Tests\n\nGenerated by ForgeCraft scaffold. Fill in the parameters from your tech spec.\n\n## Parameters (fill in from forgecraft.yaml deployment.testing.load)\n- Concurrent users: [TODO: concurrentUsers from forgecraft.yaml]\n- Target RPS: [TODO: targetRps from forgecraft.yaml]\n- p99 ceiling: [TODO: p99CeilingMs ms]\n- Duration: [TODO: durationSeconds seconds minimum]\n\n## When these parameters are missing\nDeploying without stated load test parameters is full deployment with manual monitoring.\nThe paper requires: parameters named in spec BEFORE the test runs, not after.\nAdd them to forgecraft.yaml deployment.testing.load before running.\n\n## Tool\nUse the tool configured in forgecraft.yaml deployment.testing.load.tool (k6, Artillery, Locust, etc.)\nResults are written to .forgecraft/reports/load-latest.json.\n\n## Required before pre-release\nSee verification.yaml pre-release-hardening phase, load-test step.\n";
10
10
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold-templates.d.ts","sourceRoot":"","sources":["../../src/tools/scaffold-templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,eAAO,MAAM,yBAAyB,2pBAcrC,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAStB,CAAC;AAEX,eAAO,MAAM,sBAAsB,0UAMlC,CAAC;AAEF,eAAO,MAAM,kBAAkB,kxBAqB9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,66BAqB7B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA6B5D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,QAAQ,GAAG,MAAM,CAOzE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,QAAQ,GAAG,MAAM,CAM3E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAoB3C;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,uBAAuB,GAAG,MAAM,CAMlF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,uBAAuB,GAAG,MAAM,CAUjF"}
1
+ {"version":3,"file":"scaffold-templates.d.ts","sourceRoot":"","sources":["../../src/tools/scaffold-templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,eAAO,MAAM,yBAAyB,2pBAcrC,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAUtB,CAAC;AAEX,eAAO,MAAM,sBAAsB,4UAMlC,CAAC;AAEF,eAAO,MAAM,kBAAkB,kxBAqB9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,66BAqB7B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA6B5D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,QAAQ,GAAG,MAAM,CAezE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,QAAQ,GAAG,MAAM,CAO3E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAoB3C;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,uBAAuB,GAClC,MAAM,CAQR;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,uBAAuB,GAClC,MAAM,CA8BR"}
@@ -1,76 +1,76 @@
1
1
  /**
2
2
  * scaffold-templates: Static template strings and render functions for scaffold_project.
3
3
  */
4
- export const PROJECT_SPECIFIC_TEMPLATE = `# Project-Specific Rules
5
- <!-- This file is owned by YOU. ForgeCraft will never overwrite it. -->
6
- <!-- Add project-specific rules, framework choices, conventions, and corrections here. -->
7
- <!-- The sentinel CLAUDE.md links here so any AI reading your project can find it. -->
8
-
9
- ## Framework & Stack Choices
10
- <!-- e.g. We use Prisma for ORM. Deploy target is Railway. Python 3.11+. -->
11
-
12
- ## Custom Corrections Log
13
- <!-- Log AI corrections so the pattern isn't repeated. -->
14
- <!-- Format: - YYYY-MM-DD: [description of correction] -->
15
-
16
- ## Project-Specific Gates
17
- <!-- Add quality rules specific to this project that don't belong in universal standards. -->
4
+ export const PROJECT_SPECIFIC_TEMPLATE = `# Project-Specific Rules
5
+ <!-- This file is owned by YOU. ForgeCraft will never overwrite it. -->
6
+ <!-- Add project-specific rules, framework choices, conventions, and corrections here. -->
7
+ <!-- The sentinel CLAUDE.md links here so any AI reading your project can find it. -->
8
+
9
+ ## Framework & Stack Choices
10
+ <!-- e.g. We use Prisma for ORM. Deploy target is Railway. Python 3.11+. -->
11
+
12
+ ## Custom Corrections Log
13
+ <!-- Log AI corrections so the pattern isn't repeated. -->
14
+ <!-- Format: - YYYY-MM-DD: [description of correction] -->
15
+
16
+ ## Project-Specific Gates
17
+ <!-- Add quality rules specific to this project that don't belong in universal standards. -->
18
18
  `;
19
19
  export const EXCEPTIONS_TEMPLATE = JSON.stringify({
20
20
  version: "1",
21
21
  _comment: "Hook false-positive exceptions. Add entries here to prevent rediscovering the same false positive each session. Each entry: {id, hook, pattern, reason, addedAt, addedBy, adr?}",
22
22
  exceptions: [],
23
23
  }, null, 2) + "\n";
24
- export const PROJECT_GATES_TEMPLATE = `version: "1"
25
- # Project-specific quality gates.
26
- # Gates you discover while working that should be enforced for this project.
27
- # Set generalizable: true + fill in evidence to contribute to the community registry.
28
- # See: https://github.com/genspec-dev/quality-gates/issues/new?template=quality-gate-proposal.md
29
- gates: []
24
+ export const PROJECT_GATES_TEMPLATE = `version: "1"
25
+ # Project-specific quality gates.
26
+ # Gates you discover while working that should be enforced for this project.
27
+ # Set generalizable: true + fill in evidence to contribute to the community registry.
28
+ # See: https://github.com/jghiringhelli/quality-gates/issues/new?template=quality-gate-proposal.md
29
+ gates: []
30
30
  `;
31
- export const SMOKE_TESTS_README = `# Smoke Tests
32
-
33
- Generated by ForgeCraft scaffold. Fill in the critical paths from your tech spec.
34
-
35
- ## What smoke tests cover
36
- - Every API entry point that serves real users
37
- - Every critical user journey end-to-end
38
- - Every DB migration (verify schema applied correctly)
39
- - Every external integration handshake
40
-
41
- ## Format
42
- Use the tool configured in forgecraft.yaml deployment.testing.smokeTool (or default to HTTP assertions).
43
- All smoke tests must complete in < 60 seconds total.
44
-
45
- ## Running
46
- See forgecraft.yaml tools.test or your project's test runner.
47
- Results are written to .forgecraft/reports/smoke-latest.json.
48
-
49
- ## Required before deployment
50
- All smoke tests must pass against staging before any production deploy.
51
- See verification.yaml deployment-gates phase.
31
+ export const SMOKE_TESTS_README = `# Smoke Tests
32
+
33
+ Generated by ForgeCraft scaffold. Fill in the critical paths from your tech spec.
34
+
35
+ ## What smoke tests cover
36
+ - Every API entry point that serves real users
37
+ - Every critical user journey end-to-end
38
+ - Every DB migration (verify schema applied correctly)
39
+ - Every external integration handshake
40
+
41
+ ## Format
42
+ Use the tool configured in forgecraft.yaml deployment.testing.smokeTool (or default to HTTP assertions).
43
+ All smoke tests must complete in < 60 seconds total.
44
+
45
+ ## Running
46
+ See forgecraft.yaml tools.test or your project's test runner.
47
+ Results are written to .forgecraft/reports/smoke-latest.json.
48
+
49
+ ## Required before deployment
50
+ All smoke tests must pass against staging before any production deploy.
51
+ See verification.yaml deployment-gates phase.
52
52
  `;
53
- export const LOAD_TESTS_README = `# Load Tests
54
-
55
- Generated by ForgeCraft scaffold. Fill in the parameters from your tech spec.
56
-
57
- ## Parameters (fill in from forgecraft.yaml deployment.testing.load)
58
- - Concurrent users: [TODO: concurrentUsers from forgecraft.yaml]
59
- - Target RPS: [TODO: targetRps from forgecraft.yaml]
60
- - p99 ceiling: [TODO: p99CeilingMs ms]
61
- - Duration: [TODO: durationSeconds seconds minimum]
62
-
63
- ## When these parameters are missing
64
- Deploying without stated load test parameters is full deployment with manual monitoring.
65
- The paper requires: parameters named in spec BEFORE the test runs, not after.
66
- Add them to forgecraft.yaml deployment.testing.load before running.
67
-
68
- ## Tool
69
- Use the tool configured in forgecraft.yaml deployment.testing.load.tool (k6, Artillery, Locust, etc.)
70
- Results are written to .forgecraft/reports/load-latest.json.
71
-
72
- ## Required before pre-release
73
- See verification.yaml pre-release-hardening phase, load-test step.
53
+ export const LOAD_TESTS_README = `# Load Tests
54
+
55
+ Generated by ForgeCraft scaffold. Fill in the parameters from your tech spec.
56
+
57
+ ## Parameters (fill in from forgecraft.yaml deployment.testing.load)
58
+ - Concurrent users: [TODO: concurrentUsers from forgecraft.yaml]
59
+ - Target RPS: [TODO: targetRps from forgecraft.yaml]
60
+ - p99 ceiling: [TODO: p99CeilingMs ms]
61
+ - Duration: [TODO: durationSeconds seconds minimum]
62
+
63
+ ## When these parameters are missing
64
+ Deploying without stated load test parameters is full deployment with manual monitoring.
65
+ The paper requires: parameters named in spec BEFORE the test runs, not after.
66
+ Add them to forgecraft.yaml deployment.testing.load before running.
67
+
68
+ ## Tool
69
+ Use the tool configured in forgecraft.yaml deployment.testing.load.tool (k6, Artillery, Locust, etc.)
70
+ Results are written to .forgecraft/reports/load-latest.json.
71
+
72
+ ## Required before pre-release
73
+ See verification.yaml pre-release-hardening phase, load-test step.
74
74
  `;
75
75
  /**
76
76
  * Render the bootstrap README for docs/adrs/.
@@ -118,7 +118,15 @@ export function renderGitignore(language) {
118
118
  const universal = [".env", ".env.*", "coverage/", "*.log", ".DS_Store"];
119
119
  const byLanguage = {
120
120
  typescript: ["node_modules/", "dist/", "build/", ".tsbuildinfo"],
121
- python: ["__pycache__/", "*.pyc", ".venv/", "venv/", "dist/", "*.egg-info/", ".mypy_cache/"],
121
+ python: [
122
+ "__pycache__/",
123
+ "*.pyc",
124
+ ".venv/",
125
+ "venv/",
126
+ "dist/",
127
+ "*.egg-info/",
128
+ ".mypy_cache/",
129
+ ],
122
130
  };
123
131
  return [...(byLanguage[language] ?? []), ...universal].join("\n") + "\n";
124
132
  }
@@ -168,7 +176,8 @@ export function renderGsDisclosure() {
168
176
  * @returns README content string
169
177
  */
170
178
  export function renderSmokeTestsReadme(deployment) {
171
- const smokeTool = deployment.testing?.smokeTool ?? "[TODO: set smokeTool in forgecraft.yaml deployment.testing]";
179
+ const smokeTool = deployment.testing?.smokeTool ??
180
+ "[TODO: set smokeTool in forgecraft.yaml deployment.testing]";
172
181
  return SMOKE_TESTS_README.replace("deployment.testing.smokeTool (or default to HTTP assertions)", `deployment.testing.smokeTool: ${smokeTool}`);
173
182
  }
174
183
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold-templates.js","sourceRoot":"","sources":["../../src/tools/scaffold-templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;CAcxC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAC9B,IAAI,CAAC,SAAS,CACZ;IACE,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,iLAAiL;IAC3L,UAAU,EAAE,EAAE;CACf,EACD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;CAMrC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBjC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBhC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,OAAO;QACL,qCAAqC,WAAW,EAAE;QAClD,EAAE;QACF,oEAAoE,WAAW,GAAG;QAClF,EAAE;QACF,WAAW;QACX,EAAE;QACF,+DAA+D;QAC/D,EAAE;QACF,kGAAkG;QAClG,2DAA2D;QAC3D,EAAE;QACF,kBAAkB;QAClB,EAAE;QACF,mCAAmC;QACnC,gEAAgE;QAChE,6DAA6D;QAC7D,uCAAuC;QACvC,EAAE;QACF,cAAc;QACd,EAAE;QACF,oFAAoF;QACpF,mFAAmF;QACnF,+EAA+E;QAC/E,EAAE;QACF,KAAK;QACL,qFAAqF;KACtF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,QAAiC;IAC/D,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACxE,MAAM,UAAU,GAA6B;QAC3C,UAAU,EAAE,CAAC,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC;QAChE,MAAM,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,CAAC;KAC7F,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAiC;IACjE,MAAM,KAAK,GAA2B;QACpC,UAAU,EAAE,0DAA0D;QACtE,MAAM,EAAE,qGAAqG;KAC9G,CAAC;IACF,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,8BAA8B,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,EAAE;QACF,EAAE;QACF,wBAAwB;QACxB,EAAE;QACF,4FAA4F;QAC5F,mFAAmF;QACnF,EAAE;QACF,oEAAoE;QACpE,mBAAmB;QACnB,iRAAiR;QACjR,uQAAuQ;QACvQ,wQAAwQ;QACxQ,iLAAiL;QACjL,EAAE;QACF,uFAAuF;QACvF,kFAAkF;QAClF,wFAAwF;KACzF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAmC;IACxE,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,EAAE,SAAS,IAAI,6DAA6D,CAAC;IACjH,OAAO,kBAAkB,CAAC,OAAO,CAC/B,8DAA8D,EAC9D,iCAAiC,SAAS,EAAE,CAC7C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAmC;IACvE,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;IACtC,IAAI,MAAM,GAAG,iBAAiB,CAAC;IAC/B,IAAI,IAAI,EAAE,eAAe,KAAK,SAAS;QAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,8CAA8C,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC/I,IAAI,IAAI,EAAE,SAAS,KAAK,SAAS;QAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,wCAAwC,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7H,IAAI,IAAI,EAAE,YAAY,KAAK,SAAS;QAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,yBAAyB,EAAE,GAAG,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;IACnH,IAAI,IAAI,EAAE,eAAe,KAAK,SAAS;QAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,yCAAyC,EAAE,GAAG,IAAI,CAAC,eAAe,UAAU,CAAC,CAAC;IAC/I,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,6DAA6D,CAAC;IACzF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,4DAA4D,EAAE,iCAAiC,IAAI,EAAE,CAAC,CAAC;IAC/H,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"scaffold-templates.js","sourceRoot":"","sources":["../../src/tools/scaffold-templates.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,7 @@ export interface Phase2ResponseParams {
31
31
  readonly adrIndexWritten: boolean;
32
32
  readonly gatesIndexWritten: boolean;
33
33
  readonly gitInitStatus?: string;
34
+ readonly isBrownfield?: boolean;
34
35
  }
35
36
  /**
36
37
  * Build the phase 2 completion response.
@@ -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,CAwBnB;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;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CA8CxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,eAAe,EACzB,GAAG,EAAE,OAAO,EACZ,aAAa,EAAE,OAAO,EACtB,YAAY,EAAE,OAAO,GACpB,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAa3F"}
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"}
@@ -40,7 +40,13 @@ export function deriveCascadeDecisions(tags, projectName, mvp, scopeComplete, ha
40
40
  required = true;
41
41
  rationale = `Existing consumers detected: behavioral contracts (docs/use-cases.md) are required for breaking-change detection.`;
42
42
  }
43
- return { ...decision, required, rationale, decidedAt, decidedBy: "scaffold" };
43
+ return {
44
+ ...decision,
45
+ required,
46
+ rationale,
47
+ decidedAt,
48
+ decidedBy: "scaffold",
49
+ };
44
50
  });
45
51
  }
46
52
  /**
@@ -50,7 +56,7 @@ export function deriveCascadeDecisions(tags, projectName, mvp, scopeComplete, ha
50
56
  * @returns Formatted markdown completion message
51
57
  */
52
58
  export function buildPhase2Response(params) {
53
- const { decisions, tags, mvp, scopeComplete, hasConsumers, prdWritten, useCasesWritten, yamlWritten, indexMdWritten, coreMdWritten, adrIndexWritten, gatesIndexWritten } = params;
59
+ const { decisions, tags, mvp, scopeComplete, hasConsumers, prdWritten, useCasesWritten, yamlWritten, indexMdWritten, coreMdWritten, adrIndexWritten, gatesIndexWritten, } = params;
54
60
  const stageLabel = mvp ? "MVP" : "Production";
55
61
  const tagLabel = tags.filter((t) => t !== "UNIVERSAL").join(", ") || "UNIVERSAL";
56
62
  let text = `## Project Setup Complete\n\n`;
@@ -95,7 +101,12 @@ export function buildPhase2Response(params) {
95
101
  text += `\n### Git\n ${params.gitInitStatus}\n`;
96
102
  text += `\n### Next step — call this now:\n`;
97
103
  text += `\`\`\`\naction: "check_cascade"\nproject_dir: "${params.projectDir ?? ""}"\n\`\`\`\n`;
98
- text += `Do not ask the user — run check_cascade immediately. If it passes, run generate_session_prompt for the first roadmap item.`;
104
+ if (params.isBrownfield) {
105
+ text += `Do not ask the user — run check_cascade immediately. When it passes, run audit_project to surface any existing violations in this brownfield codebase before writing new code.`;
106
+ }
107
+ else {
108
+ text += `Do not ask the user — run check_cascade immediately. If it passes, run generate_session_prompt for the first roadmap item.`;
109
+ }
99
110
  return text;
100
111
  }
101
112
  /**
@@ -106,7 +117,9 @@ export function buildDecisionNote(decision, mvp, scopeComplete, hasConsumers) {
106
117
  return " (MVP stage, revisit at production)";
107
118
  if (decision.step === "adrs" && !decision.required)
108
119
  return scopeComplete ? " (MVP stage)" : " (scope still evolving)";
109
- if (decision.step === "behavioral_contracts" && decision.required && hasConsumers)
120
+ if (decision.step === "behavioral_contracts" &&
121
+ decision.required &&
122
+ hasConsumers)
110
123
  return " (existing consumers detected)";
111
124
  return "";
112
125
  }
@@ -119,7 +132,9 @@ export function renderCascadeDecisionsSection(decisions) {
119
132
  for (const decision of decisions) {
120
133
  const icon = decision.required ? "✓" : "○";
121
134
  const artifact = STEP_ARTIFACT_DISPLAY[decision.step] ?? decision.step;
122
- const label = decision.required ? `required (${artifact})` : `optional — ${decision.rationale.split(".")[0]}`;
135
+ const label = decision.required
136
+ ? `required (${artifact})`
137
+ : `optional — ${decision.rationale.split(".")[0]}`;
123
138
  text += ` ${icon} ${decision.step} — ${label}\n`;
124
139
  }
125
140
  text += `\nReview these decisions. To revise: use \`set_cascade_requirement\` or edit\n`;
@@ -134,6 +149,9 @@ function extractScaffoldFiles(scaffoldText) {
134
149
  const matches = scaffoldText.match(/^\s{2}([^\n]+\.(md|yaml|json|ts|js|sh))/gm);
135
150
  if (!matches)
136
151
  return [];
137
- return matches.map((m) => m.trim()).filter((m) => m.length > 0).slice(0, 12);
152
+ return matches
153
+ .map((m) => m.trim())
154
+ .filter((m) => m.length > 0)
155
+ .slice(0, 12);
138
156
  }
139
157
  //# sourceMappingURL=setup-phase2.js.map
@@ -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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"}
@@ -1,4 +1,5 @@
1
1
  import type { ToolResult } from "../shared/types.js";
2
+ export { detectProjectMode } from "./setup-detector.js";
2
3
  export interface SetupProjectArgs {
3
4
  readonly project_dir: string;
4
5
  readonly spec_path?: string;
@@ -34,6 +35,11 @@ export interface SetupProjectArgs {
34
35
  * Comma-separated list of measurable outcomes or goals.
35
36
  */
36
37
  readonly success_criteria?: string;
38
+ /**
39
+ * Phase 2: LLM-corrected tags based on reading the spec.
40
+ * When provided, these override the directory-inferred tags.
41
+ */
42
+ readonly tags?: string[];
37
43
  }
38
44
  /**
39
45
  * 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;AAwB1D,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;CACpC;AAOD;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,UAAU,CAAC,CAkBrB;AAsGD;;;;;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,CAUzE;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;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"}