forge-cc 0.1.4 → 0.1.6

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 (52) hide show
  1. package/README.md +96 -10
  2. package/dist/cli.js +225 -7
  3. package/dist/cli.js.map +1 -1
  4. package/dist/go/auto-chain.d.ts +37 -5
  5. package/dist/go/auto-chain.js +220 -81
  6. package/dist/go/auto-chain.js.map +1 -1
  7. package/dist/go/executor.d.ts +2 -0
  8. package/dist/go/executor.js.map +1 -1
  9. package/dist/hooks/pre-commit.js +9 -3
  10. package/dist/hooks/pre-commit.js.map +1 -1
  11. package/dist/reporter/human.d.ts +5 -0
  12. package/dist/reporter/human.js +30 -0
  13. package/dist/reporter/human.js.map +1 -1
  14. package/dist/setup/templates.js +97 -122
  15. package/dist/setup/templates.js.map +1 -1
  16. package/dist/spec/generator.d.ts +20 -0
  17. package/dist/spec/generator.js +23 -2
  18. package/dist/spec/generator.js.map +1 -1
  19. package/dist/spec/interview.d.ts +20 -2
  20. package/dist/spec/interview.js +8 -0
  21. package/dist/spec/interview.js.map +1 -1
  22. package/dist/spec/scanner.d.ts +34 -0
  23. package/dist/spec/scanner.js +93 -0
  24. package/dist/spec/scanner.js.map +1 -1
  25. package/dist/spec/templates.d.ts +22 -0
  26. package/dist/spec/templates.js +8 -0
  27. package/dist/spec/templates.js.map +1 -1
  28. package/dist/utils/platform.d.ts +29 -0
  29. package/dist/utils/platform.js +90 -0
  30. package/dist/utils/platform.js.map +1 -0
  31. package/dist/worktree/identity.d.ts +9 -0
  32. package/dist/worktree/identity.js +32 -0
  33. package/dist/worktree/identity.js.map +1 -0
  34. package/dist/worktree/manager.d.ts +70 -0
  35. package/dist/worktree/manager.js +217 -0
  36. package/dist/worktree/manager.js.map +1 -0
  37. package/dist/worktree/parallel.d.ts +87 -0
  38. package/dist/worktree/parallel.js +328 -0
  39. package/dist/worktree/parallel.js.map +1 -0
  40. package/dist/worktree/session.d.ts +64 -0
  41. package/dist/worktree/session.js +193 -0
  42. package/dist/worktree/session.js.map +1 -0
  43. package/dist/worktree/state-merge.d.ts +43 -0
  44. package/dist/worktree/state-merge.js +162 -0
  45. package/dist/worktree/state-merge.js.map +1 -0
  46. package/hooks/pre-commit-verify.js +9 -3
  47. package/hooks/version-check.js +78 -78
  48. package/package.json +1 -1
  49. package/skills/forge-go.md +39 -0
  50. package/skills/forge-setup.md +183 -157
  51. package/skills/forge-spec.md +50 -12
  52. package/skills/forge-update.md +92 -72
@@ -11,148 +11,123 @@ export function forgeConfigTemplate(ctx) {
11
11
  // ── Project CLAUDE.md ───────────────────────────────────────────────
12
12
  export function claudeMdTemplate(ctx) {
13
13
  const gatesList = ctx.gates.map((g) => `\`${g}\``).join(", ");
14
- return `# ${ctx.projectName} — Claude Code Instructions
15
-
16
- ## What This Is
17
- ${ctx.description}
18
-
19
- **Tech:** ${ctx.techStack}
20
-
21
- ## Quick Reference
22
-
23
- | Action | Command |
24
- |--------|---------|
25
- | Run verification | \`npx forge verify\` |
26
- | Run specific gates | \`npx forge verify --gate ${ctx.gates.join(",")}\` |
27
- | Check status | \`npx forge status\` |
28
- | Build | \`npm run build\` |
29
- | Test | \`npm test\` |
30
-
31
- ## Code Map
32
-
33
- \`\`\`
34
- src/
35
- (add your project structure here)
36
- \`\`\`
37
-
38
- ## Key Docs
39
-
40
- | File | Purpose |
41
- |------|---------|
42
- | \`.planning/STATE.md\` | Current session state (<80 lines) |
43
- | \`.planning/ROADMAP.md\` | Milestone progress tracker |
44
- | \`tasks/lessons.md\` | Lessons learned (max 10 active) |
45
-
46
- ## Session Protocol END (Mandatory)
47
- 1. \`.planning/STATE.md\` replace, don't append
48
- 2. \`.planning/ROADMAP.md\` check off completed milestones
49
- 3. \`tasks/lessons.md\` — add/refine lessons (max 10, promote when full)
50
- 4. Commit doc updates to the feature branch
51
-
52
- ## Execution Rules
53
- - **Plan before building.** Read the PRD before touching code.
54
- - **Delegate immediately.** 3+ files or 3+ steps → spawn agent team.
55
- - **Verify everything.** Run \`npx forge verify\` after changes land.
56
- - **All changes via PR.** Never commit directly to main.
57
- - **Branch naming:** \`feat/short-description\` or \`fix/short-description\`
58
-
59
- ## Verification Gates
60
- Active gates: ${gatesList}
61
-
62
- ## Learned Rules
63
- (none yet)
14
+ return `# ${ctx.projectName} — Claude Code Instructions
15
+
16
+ ## What This Is
17
+ ${ctx.description}
18
+
19
+ **Tech:** ${ctx.techStack}
20
+
21
+ ## Quick Reference
22
+
23
+ | Action | Command |
24
+ |--------|---------|
25
+ | Run verification | \`npx forge verify\` |
26
+ | Run specific gates | \`npx forge verify --gate ${ctx.gates.join(",")}\` |
27
+ | Check status | \`npx forge status\` |
28
+ | Build | \`npm run build\` |
29
+ | Test | \`npm test\` |
30
+
31
+ ## Code Map
32
+
33
+ \`\`\`
34
+ src/
35
+ (add your project structure here)
36
+ \`\`\`
37
+
38
+ ## Key Docs
39
+
40
+ | File | Purpose |
41
+ |------|---------|
42
+ | \`.planning/STATE.md\` | Current session state (<80 lines) |
43
+ | \`.planning/ROADMAP.md\` | Milestone progress tracker |
44
+ | \`tasks/lessons.md\` | Lessons learned (max 10 active) |
45
+
46
+ ## Session Protocol
47
+ - **On start:** Read CLAUDE.md → .planning/STATE.md .planning/ROADMAP.md tasks/lessons.md
48
+ - **When lost:** Re-read planning docs, don't guess from stale context
49
+
50
+ ## Session Protocol END (Mandatory)
51
+ 1. \`.planning/STATE.md\` — replace, don't append
52
+ 2. \`.planning/ROADMAP.md\` — check off completed milestones
53
+ 3. \`tasks/lessons.md\` add/refine lessons (max 10, promote when full)
54
+ 4. Commit doc updates to the feature branch
55
+
56
+ ## Execution Rules
57
+ - **Plan before building.** Read the PRD before touching code.
58
+ - **Verify everything.** Run \`npx forge verify\` after changes land.
59
+ - **All changes via PR.** Never commit directly to main.
60
+ - **Branch naming:** \`feat/short-description\` or \`fix/short-description\`
61
+
62
+ ## Verification Gates
63
+ Active gates: ${gatesList}
64
+
65
+ ## Learned Rules
66
+ (none yet)
64
67
  `;
65
68
  }
66
69
  // ── .planning/STATE.md ──────────────────────────────────────────────
67
70
  export function stateMdTemplate(ctx) {
68
- return `# State — ${ctx.projectName}
69
-
70
- ## Current Status
71
- - **Phase:** Setup complete
72
- - **Active project:** None
73
- - **Branch:** main
74
-
75
- ## What Was Done
76
- - Initialized forge-cc scaffolding (${ctx.date})
77
- - Created .forge.json, CLAUDE.md, planning docs
78
-
79
- ## Next Actions
80
- - Run \`/forge:spec\` to create a PRD for the first feature
71
+ return `# State — ${ctx.projectName}
72
+
73
+ ## Current Status
74
+ - **Phase:** Setup complete
75
+ - **Active project:** None
76
+ - **Branch:** main
77
+
78
+ ## What Was Done
79
+ - Initialized forge-cc scaffolding (${ctx.date})
80
+ - Created .forge.json, CLAUDE.md, planning docs
81
+
82
+ ## Next Actions
83
+ - Run \`/forge:spec\` to create a PRD for the first feature
81
84
  `;
82
85
  }
83
86
  // ── .planning/ROADMAP.md ────────────────────────────────────────────
84
87
  export function roadmapMdTemplate(ctx) {
85
- return `# Roadmap — ${ctx.projectName}
86
-
87
- ## Projects
88
-
89
- | Project | Status | PRD | Milestones |
90
- |---------|--------|-----|------------|
91
- | (none yet) | — | — | — |
92
-
93
- ## Completed
94
- (none yet)
88
+ return `# Roadmap — ${ctx.projectName}
89
+
90
+ ## Projects
91
+
92
+ | Project | Status | PRD | Milestones |
93
+ |---------|--------|-----|------------|
94
+ | (none yet) | — | — | — |
95
+
96
+ ## Completed
97
+ (none yet)
95
98
  `;
96
99
  }
97
100
  // ── tasks/lessons.md ────────────────────────────────────────────────
98
101
  export function lessonsMdTemplate(ctx) {
99
- return `# Lessons Learned — ${ctx.projectName}
100
-
101
- <!-- Max 10 active one-liners. Format: - **[topic]** The rule -->
102
- <!-- When full, promote the most battle-tested to CLAUDE.md ## Learned Rules -->
103
-
104
- (none yet)
102
+ return `# Lessons Learned — ${ctx.projectName}
103
+
104
+ <!-- Max 10 active one-liners. Format: - **[topic]** The rule -->
105
+ <!-- When full, promote the most battle-tested to CLAUDE.md ## Learned Rules -->
106
+
107
+ (none yet)
105
108
  `;
106
109
  }
107
110
  // ── ~/.claude/CLAUDE.md (global, for fresh installs) ────────────────
108
111
  export function globalClaudeMdTemplate() {
109
- return `# Global Claude Code Instructions
110
-
111
- ## Autonomous Execution Mode
112
-
113
- - **Default to action.** Plan internally, execute immediately, verify results.
114
- - **Use agent teams** for non-trivial work (3+ files or 3+ steps).
115
- - **Don't ask questions** unless truly blocked on: missing credentials, ambiguous business logic, or destructive actions on shared infrastructure. **Exception:** Always honor AskUserQuestion prompts defined in skills — those are workflow inputs, not questions.
116
- - **Make mistakes and iterate.** If something breaks, fix it.
117
- - **Summarize after completion**, not during.
118
-
119
- ## Session Protocol
120
-
121
- Fresh context per phase. Memory lives in the repo, not the conversation.
122
-
123
- - **On start:** Read CLAUDE.md → STATE.md → ROADMAP.md → lessons files
124
- - **On finish (MANDATORY — work is not done without these):**
125
- 1. Update \`.planning/STATE.md\` — replace, don't append, <80 lines
126
- 2. Update \`.planning/ROADMAP.md\` — check off completed items
127
- 3. Update \`tasks/lessons.md\` — max 10 one-liners, promote to CLAUDE.md Learned Rules when full (max 15)
128
- 4. Commit and push doc updates on the feature branch
129
- 5. Write handoff summary
130
- - **Fresh sessions preferred** over long sessions with context bloat
131
- - **When lost:** Re-read planning docs rather than guessing from stale context
132
-
133
- ## Verification (Mandatory)
134
-
135
- - Never mark a task complete without proving it works
136
- - Build must pass. Tests must pass. No exceptions.
137
- - Run tests, check logs, demonstrate correctness
138
- - If verification fails, fix it and re-verify
139
-
140
- ## Lessons System
141
-
142
- - **\`tasks/lessons.md\`**: max 10 active one-liners
143
- - **\`CLAUDE.md ## Learned Rules\`**: max 15 permanent one-liners (promoted from lessons.md)
144
- - **When to write:** After any correction, and when agents hit issues
145
-
146
- ## Core Principles
147
-
148
- - **Simplicity First:** Make every change as simple as possible.
149
- - **No Laziness:** Find root causes. No temporary fixes.
150
- - **Minimal Impact:** Changes should only touch what's necessary.
112
+ return `# Global Claude Code Instructions
113
+
114
+ ## How to Work
115
+ - **Follow instructions exactly.** Skills, CLAUDE.md rules, and workflow steps are tested — execute every step as written, including all AskUserQuestion prompts.
116
+ - **Default to action.** Don't ask for confirmation. Plan internally, execute, verify.
117
+ - **Iterate on failure.** Fix what breaks. Only stop to ask when truly blocked on missing credentials, ambiguous business requirements, or destructive actions on shared infrastructure.
118
+ - **Use agent teams** for non-trivial work (3+ files or 3+ steps).
119
+
120
+ ## Verification
121
+ - Never mark complete without proving it works.
122
+ - Build and tests must pass. Run them.
123
+
124
+ ## Principles
125
+ - Simple changes only. Find root causes. Touch only what's necessary.
151
126
  `;
152
127
  }
153
128
  // ── .gitignore lines ────────────────────────────────────────────────
154
129
  export function gitignoreForgeLines() {
155
- return `.forge/
130
+ return `.forge/
156
131
  `;
157
132
  }
158
133
  //# sourceMappingURL=templates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/setup/templates.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,4EAA4E;AAU5E,uEAAuE;AAEvE,MAAM,UAAU,mBAAmB,CAAC,GAAiB;IACnD,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,aAAa,EAAE,CAAC;KACjB,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AAChD,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,gBAAgB,CAAC,GAAiB;IAChD,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE9D,OAAO,KAAK,GAAG,CAAC,WAAW;;;EAG3B,GAAG,CAAC,WAAW;;YAEL,GAAG,CAAC,SAAS;;;;;;;mDAO0B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAkCtD,SAAS;;;;CAIxB,CAAC;AACF,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,eAAe,CAAC,GAAiB;IAC/C,OAAO,aAAa,GAAG,CAAC,WAAW;;;;;;;;sCAQC,GAAG,CAAC,IAAI;;;;;CAK7C,CAAC;AACF,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,iBAAiB,CAAC,GAAiB;IACjD,OAAO,eAAe,GAAG,CAAC,WAAW;;;;;;;;;;CAUtC,CAAC;AACF,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,iBAAiB,CAAC,GAAiB;IACjD,OAAO,uBAAuB,GAAG,CAAC,WAAW;;;;;;CAM9C,CAAC;AACF,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CR,CAAC;AACF,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,mBAAmB;IACjC,OAAO;CACR,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/setup/templates.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,4EAA4E;AAU5E,uEAAuE;AAEvE,MAAM,UAAU,mBAAmB,CAAC,GAAiB;IACnD,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,aAAa,EAAE,CAAC;KACjB,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AAChD,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,gBAAgB,CAAC,GAAiB;IAChD,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE9D,OAAO,KAAK,GAAG,CAAC,WAAW;;;EAG3B,GAAG,CAAC,WAAW;;YAEL,GAAG,CAAC,SAAS;;;;;;;mDAO0B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAqCtD,SAAS;;;;CAIxB,CAAC;AACF,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,eAAe,CAAC,GAAiB;IAC/C,OAAO,aAAa,GAAG,CAAC,WAAW;;;;;;;;sCAQC,GAAG,CAAC,IAAI;;;;;CAK7C,CAAC;AACF,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,iBAAiB,CAAC,GAAiB;IACjD,OAAO,eAAe,GAAG,CAAC,WAAW;;;;;;;;;;CAUtC,CAAC;AACF,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,iBAAiB,CAAC,GAAiB;IACjD,OAAO,uBAAuB,GAAG,CAAC,WAAW;;;;;;CAM9C,CAAC;AACF,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;;;;;;;;;;;CAcR,CAAC;AACF,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,mBAAmB;IACjC,OAAO;CACR,CAAC;AACF,CAAC"}
@@ -12,3 +12,23 @@ export declare function generateDraftPRD(data: Partial<PRDData>): string;
12
12
  * Validates PRD data, generates markdown, and writes to disk.
13
13
  */
14
14
  export declare function writePRDToFile(data: PRDData, outputPath: string): void;
15
+ export interface WorktreePRDResult {
16
+ /** Absolute path where the PRD was written in the worktree. */
17
+ prdPath: string;
18
+ /** Relative path from the worktree root (used for merging back). */
19
+ relativePath: string;
20
+ }
21
+ /**
22
+ * Write a PRD to a worktree directory.
23
+ *
24
+ * Validates and generates the PRD markdown, then writes it to
25
+ * `<worktreePath>/<relativePrdPath>`. Returns both the absolute path
26
+ * and the relative path so callers can locate the file or merge it
27
+ * back to the main working tree.
28
+ *
29
+ * @param data - The PRD data to generate and write.
30
+ * @param worktreePath - Absolute path to the worktree root.
31
+ * @param relativePrdPath - Path relative to the worktree root where
32
+ * the PRD should be written (e.g. "tasks/prd.md").
33
+ */
34
+ export declare function writePRDToWorktree(data: PRDData, worktreePath: string, relativePrdPath: string): WorktreePRDResult;
@@ -1,5 +1,5 @@
1
1
  import { writeFileSync, mkdirSync } from "node:fs";
2
- import { dirname } from "node:path";
2
+ import { dirname, join } from "node:path";
3
3
  import { validatePRD } from "./templates.js";
4
4
  // ── Section Generators ───────────────────────────────────────────────
5
5
  function renderHeader(data) {
@@ -82,8 +82,11 @@ function renderMilestone(milestone) {
82
82
  `### Milestone ${milestone.number}: ${milestone.name}`,
83
83
  `**Assigned To:** ${milestone.assignedTo}`,
84
84
  `**Goal:** ${milestone.goal}`,
85
- "",
86
85
  ];
86
+ if (milestone.dependsOn && milestone.dependsOn.length > 0) {
87
+ lines.push(`**dependsOn:** ${milestone.dependsOn.join(", ")}`);
88
+ }
89
+ lines.push("");
87
90
  for (const wave of milestone.waves) {
88
91
  const agentCount = wave.agents.length;
89
92
  lines.push(`**Wave ${wave.waveNumber} (${agentCount} agent${agentCount !== 1 ? "s" : ""} parallel):**`);
@@ -203,4 +206,22 @@ export function writePRDToFile(data, outputPath) {
203
206
  mkdirSync(dirname(outputPath), { recursive: true });
204
207
  writeFileSync(outputPath, markdown, "utf-8");
205
208
  }
209
+ /**
210
+ * Write a PRD to a worktree directory.
211
+ *
212
+ * Validates and generates the PRD markdown, then writes it to
213
+ * `<worktreePath>/<relativePrdPath>`. Returns both the absolute path
214
+ * and the relative path so callers can locate the file or merge it
215
+ * back to the main working tree.
216
+ *
217
+ * @param data - The PRD data to generate and write.
218
+ * @param worktreePath - Absolute path to the worktree root.
219
+ * @param relativePrdPath - Path relative to the worktree root where
220
+ * the PRD should be written (e.g. "tasks/prd.md").
221
+ */
222
+ export function writePRDToWorktree(data, worktreePath, relativePrdPath) {
223
+ const prdPath = join(worktreePath, relativePrdPath);
224
+ writePRDToFile(data, prdPath);
225
+ return { prdPath, relativePath: relativePrdPath };
226
+ }
206
227
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/spec/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/spec/generator.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,14 @@
5
5
  * The interview leads with recommendations derived from codebase scan results,
6
6
  * follows interesting threads based on user responses, and determines when
7
7
  * enough info has been gathered for each PRD section.
8
+ *
9
+ * **Rendering contract:** {@link InterviewQuestion} objects are designed to be
10
+ * rendered via Claude Code's **AskUserQuestion** tool with structured
11
+ * multiple-choice options — they must NEVER be printed as numbered text in
12
+ * chat. The caller (the /forge:spec skill) is responsible for converting each
13
+ * question's `text` and `context` fields into an AskUserQuestion call with
14
+ * 2-4 predefined options derived from scan context, plus an "Other" escape
15
+ * hatch for free-text input.
8
16
  */
9
17
  import type { ScanAllResult } from "./scanner.js";
10
18
  /** PRD sections in priority order */
@@ -12,12 +20,22 @@ export declare const PRD_SECTIONS: readonly ["problem_and_goals", "user_stories"
12
20
  export type PRDSection = (typeof PRD_SECTIONS)[number];
13
21
  /** Human-readable labels for each section */
14
22
  export declare const SECTION_LABELS: Record<PRDSection, string>;
15
- /** A single interview question */
23
+ /**
24
+ * A single interview question.
25
+ *
26
+ * **Rendering:** Must be presented to the user via Claude Code's
27
+ * AskUserQuestion tool with 2-4 multiple-choice options — NEVER as numbered
28
+ * text in chat output. The `text` field becomes the AskUserQuestion question
29
+ * string, and the `context` field provides scan-derived framing that informs
30
+ * option generation.
31
+ */
16
32
  export interface InterviewQuestion {
17
33
  id: string;
18
34
  section: PRDSection;
35
+ /** The question to present via AskUserQuestion */
19
36
  text: string;
20
- /** Recommendation or observation that motivates the question */
37
+ /** Recommendation or observation from the codebase scan that motivates
38
+ * this question and informs the multiple-choice options */
21
39
  context: string;
22
40
  /** Follow-up depth — 0 = top-level, 1+ = follow-up */
23
41
  depth: number;
@@ -5,6 +5,14 @@
5
5
  * The interview leads with recommendations derived from codebase scan results,
6
6
  * follows interesting threads based on user responses, and determines when
7
7
  * enough info has been gathered for each PRD section.
8
+ *
9
+ * **Rendering contract:** {@link InterviewQuestion} objects are designed to be
10
+ * rendered via Claude Code's **AskUserQuestion** tool with structured
11
+ * multiple-choice options — they must NEVER be printed as numbered text in
12
+ * chat. The caller (the /forge:spec skill) is responsible for converting each
13
+ * question's `text` and `context` fields into an AskUserQuestion call with
14
+ * 2-4 predefined options derived from scan context, plus an "Other" escape
15
+ * hatch for free-text input.
8
16
  */
9
17
  // ---------------------------------------------------------------------------
10
18
  // Types
@@ -1 +1 @@
1
- {"version":3,"file":"interview.js","sourceRoot":"","sources":["../../src/spec/interview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interview.js","sourceRoot":"","sources":["../../src/spec/interview.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,qCAAqC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,mBAAmB;IACnB,cAAc;IACd,oBAAoB;IACpB,OAAO;IACP,YAAY;CACJ,CAAC;AAGX,6CAA6C;AAC7C,MAAM,CAAC,MAAM,cAAc,GAA+B;IACxD,iBAAiB,EAAE,iBAAiB;IACpC,YAAY,EAAE,cAAc;IAC5B,kBAAkB,EAAE,oBAAoB;IACxC,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,YAAY;CACzB,CAAC;AAoEF,8EAA8E;AAC9E,wCAAwC;AACxC,8EAA8E;AAE9E,MAAM,WAAW,GAA+B;IAC9C,iBAAiB,EAAE,CAAC;IACpB,YAAY,EAAE,CAAC;IACf,kBAAkB,EAAE,CAAC;IACrB,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,CAAC;CACd,CAAC;AAEF,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,WAAmB,EACnB,WAA0B;IAE1B,OAAO;QACL,WAAW;QACX,WAAW;QACX,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,EAAE;QACX,cAAc,EAAE,CAAC;QACjB,aAAa,EAAE,EAAE;QACjB,qBAAqB,EAAE,CAAC;KACzB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAqB;IAIzD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,eAAe,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAwB,EAAE,CAAC;IAC7C,IAAI,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC;IAElC,2EAA2E;IAC3E,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QACpC,YAAY,CAAC,IAAI,CAAC;YAChB,EAAE,EAAE,IAAI,MAAM,EAAE,EAAE;YAClB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,8DAA8D;IAC9D,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC;YAAE,MAAM;QAEpC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QAC3D,IAAI,MAAM,EAAE,UAAU;YAAE,SAAS;QAEjC,oEAAoE;QACpE,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC;YAAE,SAAS;QAE9D,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACjE,IAAI,QAAQ,EAAE,CAAC;YACb,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,YAAY,GAAmB;QACnC,GAAG,KAAK;QACR,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,YAAY,CAAC;QAChD,cAAc,EAAE,MAAM;QACtB,aAAa,EAAE;YACb,GAAG,IAAI,GAAG,CAAC;gBACT,GAAG,KAAK,CAAC,aAAa;gBACtB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aACtC,CAAC;SACH;KACF,CAAC;IAEF,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;AAC1D,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAqB,EACrB,UAAkB,EAClB,MAAc;IAEd,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;IAClE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,SAAS,GAAoB;QACjC,UAAU;QACV,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM;QACN,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC;IAEF,OAAO;QACL,GAAG,KAAK;QACR,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;QACtC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,GAAG,CAAC;KACvD,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAqB;IACrD,OAAO,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAqB;IACpD,OAAO;QACL,GAAG,KAAK;QACR,qBAAqB,EAAE,CAAC;KACzB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAqB;IAC9C,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AAC9D,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAqB;IACtD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAClC,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAC7B,CAAC,MAAM,CAAC;QACT,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO;YACL,OAAO;YACP,aAAa;YACb,WAAW;YACX,UAAU,EAAE,aAAa,IAAI,WAAW;SACzC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAqB;IACvD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAE3C,MAAM,QAAQ,GAAG,EAAkC,CAAC;IACpD,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAE,CAAC;QAE5D,QAAQ,CAAC,OAAO,CAAC,GAAG;YAClB,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC;YAC9B,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;gBACpE,OAAO;oBACL,QAAQ,EAAE,QAAQ,EAAE,IAAI,IAAI,oBAAoB;oBAChD,MAAM,EAAE,CAAC,CAAC,MAAM;iBACjB,CAAC;YACJ,CAAC,CAAC;YACF,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ;QACR,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,uBAAuB,CAC9B,KAAqB,EACrB,OAAmB,EACnB,MAAc;IAEd,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAC7B,CAAC,MAAM,CAAC;IACT,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC;IAE/B,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,OAAe,EAAqB,EAAE,CAAC,CAAC;QAC/D,EAAE,EAAE,IAAI,MAAM,EAAE;QAChB,OAAO;QACP,IAAI;QACJ,OAAO;QACP,KAAK,EAAE,CAAC;KACT,CAAC,CAAC;IAEH,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC9F,OAAO,CAAC,CACN,kFAAkF,EAClF,aAAa,IAAI,CAAC,SAAS,CAAC,QAAQ,WAAW,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,oDAAoD,CAC5H,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,CACN,2EAA2E,EAC3E,sDAAsD,CACvD,CAAC;QACJ,CAAC;QAED,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;gBACvE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;gBACrE,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;gBACxC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;gBACpC,MAAM,YAAY,GAAG,SAAS;oBAC5B,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,gBAAgB,SAAS,CAAC,MAAM,gBAAgB;oBAC5E,CAAC,CAAC,MAAM;wBACN,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,6BAA6B;wBACxD,CAAC,CAAC,kCAAkC,CAAC;gBACzC,OAAO,CAAC,CACN,6EAA6E,EAC7E,GAAG,YAAY,mFAAmF,CACnG,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,CACN,2DAA2D,EAC3D,4DAA4D,CAC7D,CAAC;QACJ,CAAC;QAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YACrC,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,KAAK;gBACnB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClD,CAAC,CAAC,EAAE,CAAC;YAEP,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,CACN,8GAA8G,EAC9G,kBAAkB,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,mBAAmB,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,gEAAgE,CACtL,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC,CAAC,uDAAuD;QACtE,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;YAC/C,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,CACN,iHAAiH,EACjH,WAAW,CAAC,MAAM,GAAG,CAAC;oBACpB,CAAC,CAAC,6BAA6B,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8DAA8D;oBAC/H,CAAC,CAAC,iDAAiD,CACtD,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,CACN,2GAA2G,EAC3G,yGAAyG,CAC1G,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB,CAChC,KAAqB;IAOrB,MAAM,aAAa,GAKd,EAAE,CAAC;IAER,kDAAkD;IAClD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9C,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,+CAA+C;QAC/C,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC;YAAE,SAAS;QAElC,uEAAuE;QACvE,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;YACxB,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO;YAC9B,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CACjE,CAAC;QACF,IAAI,WAAW;YAAE,SAAS;QAE1B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAE1C,qEAAqE;QACrE,IACE,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACxD,QAAQ,CAAC,OAAO,KAAK,OAAO,EAC5B,CAAC;YACD,aAAa,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,qIAAqI;gBAC3I,OAAO,EAAE,8BAA8B,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG;gBAC1E,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC;aAC1B,CAAC,CAAC;QACL,CAAC;QAED,wEAAwE;QACxE,IACE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YACtB,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAChC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC1B,MAAM,CAAC,OAAO,KAAK,cAAc,EACjC,CAAC;YACD,aAAa,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,cAAc;gBACvB,IAAI,EAAE,mGAAmG;gBACzG,OAAO,EAAE,6DAA6D;gBACtE,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC;aAC1B,CAAC,CAAC;QACL,CAAC;QAED,4EAA4E;QAC5E,IACE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;YACpB,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC7B,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC1B,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAChC,MAAM,CAAC,OAAO,KAAK,oBAAoB,EACvC,CAAC;YACD,aAAa,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,oBAAoB;gBAC7B,IAAI,EAAE,0HAA0H;gBAChI,OAAO,EAAE,uDAAuD;gBAChE,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC;aAC1B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -43,3 +43,37 @@ export declare function scanStructure(projectDir: string): Promise<StructureScan
43
43
  export declare function scanRoutes(projectDir: string): Promise<RoutesScanResult>;
44
44
  export declare function scanDataAPIs(projectDir: string): Promise<DataAPIsScanResult>;
45
45
  export declare function scanAll(projectDir: string): Promise<ScanAllResult>;
46
+ export interface SpecSessionOptions {
47
+ /** Main project directory to scan. */
48
+ projectDir: string;
49
+ /** Git repo root (defaults to detected from projectDir). */
50
+ repoRoot?: string;
51
+ /** User name for worktree branch naming (defaults to git config). */
52
+ userName?: string;
53
+ /** Project slug for worktree naming (e.g. "my-feature"). */
54
+ slug?: string;
55
+ }
56
+ export interface SpecSession {
57
+ sessionId: string;
58
+ worktreePath: string;
59
+ worktreeBranch: string;
60
+ scanResult: ScanAllResult;
61
+ }
62
+ /**
63
+ * Start a spec session: create worktree, register session, scan project.
64
+ *
65
+ * The caller should use `worktreePath` to write PRD files (via
66
+ * `writePRDToWorktree`), then call `completeSpecSession` when done.
67
+ * The scan runs against `projectDir` (the real codebase), not the worktree.
68
+ */
69
+ export declare function startSpecSession(options: SpecSessionOptions): Promise<SpecSession>;
70
+ /**
71
+ * Complete a spec session: commit PRD files in the worktree, merge the
72
+ * worktree branch into `targetBranch`, deregister session, and remove
73
+ * the worktree.
74
+ *
75
+ * @param repoRoot - The main repo root directory.
76
+ * @param session - The spec session returned by `startSpecSession`.
77
+ * @param targetBranch - The branch to merge the PRD files into.
78
+ */
79
+ export declare function completeSpecSession(repoRoot: string, session: SpecSession, targetBranch: string): void;
@@ -1,5 +1,9 @@
1
1
  import { readdir, readFile, stat } from "node:fs/promises";
2
+ import { execSync } from "node:child_process";
2
3
  import { join, relative, extname, basename } from "node:path";
4
+ import { createWorktree, removeWorktree, getRepoRoot } from "../worktree/manager.js";
5
+ import { registerSession, deregisterSession, updateSessionStatus } from "../worktree/session.js";
6
+ import { getCurrentUser } from "../worktree/identity.js";
3
7
  // ── Helpers ────────────────────────────────────────────────────────────────
4
8
  const IGNORE_DIRS = new Set([
5
9
  "node_modules", ".git", "dist", "build", ".next", ".nuxt",
@@ -470,4 +474,93 @@ export async function scanAll(projectDir) {
470
474
  ]);
471
475
  return { structure, routes, dataAPIs };
472
476
  }
477
+ /**
478
+ * Start a spec session: create worktree, register session, scan project.
479
+ *
480
+ * The caller should use `worktreePath` to write PRD files (via
481
+ * `writePRDToWorktree`), then call `completeSpecSession` when done.
482
+ * The scan runs against `projectDir` (the real codebase), not the worktree.
483
+ */
484
+ export async function startSpecSession(options) {
485
+ const repoRoot = options.repoRoot ?? getRepoRoot(options.projectDir);
486
+ const user = getCurrentUser(repoRoot);
487
+ const userName = options.userName ?? user.name;
488
+ const slug = options.slug ?? "spec";
489
+ const branchName = `forge/${userName}/spec-${slug}`;
490
+ // 1. Create a worktree for isolation
491
+ const wt = createWorktree(repoRoot, `spec-${slug}`, userName, {
492
+ branchName,
493
+ });
494
+ // 2. Register the session
495
+ const session = registerSession(repoRoot, {
496
+ user,
497
+ skill: "spec",
498
+ branch: wt.branch,
499
+ worktreePath: wt.worktreePath,
500
+ });
501
+ // 3. Scan the main project directory (not the worktree)
502
+ let scanResult;
503
+ try {
504
+ scanResult = await scanAll(options.projectDir);
505
+ }
506
+ catch (err) {
507
+ // Cleanup on scan failure
508
+ deregisterSession(repoRoot, session.id);
509
+ removeWorktree(repoRoot, wt.worktreePath);
510
+ throw err;
511
+ }
512
+ return {
513
+ sessionId: session.id,
514
+ worktreePath: wt.worktreePath,
515
+ worktreeBranch: wt.branch,
516
+ scanResult,
517
+ };
518
+ }
519
+ /**
520
+ * Complete a spec session: commit PRD files in the worktree, merge the
521
+ * worktree branch into `targetBranch`, deregister session, and remove
522
+ * the worktree.
523
+ *
524
+ * @param repoRoot - The main repo root directory.
525
+ * @param session - The spec session returned by `startSpecSession`.
526
+ * @param targetBranch - The branch to merge the PRD files into.
527
+ */
528
+ export function completeSpecSession(repoRoot, session, targetBranch) {
529
+ try {
530
+ // Mark session as completing
531
+ updateSessionStatus(repoRoot, session.sessionId, "completing");
532
+ // 1. Stage and commit all new/changed files in the worktree
533
+ try {
534
+ execSync("git add -A", {
535
+ cwd: session.worktreePath,
536
+ encoding: "utf-8",
537
+ stdio: "pipe",
538
+ });
539
+ execSync('git commit -m "spec: add PRD from spec session"', {
540
+ cwd: session.worktreePath,
541
+ encoding: "utf-8",
542
+ stdio: "pipe",
543
+ });
544
+ }
545
+ catch {
546
+ // No changes to commit — that's fine, the worktree may be empty
547
+ }
548
+ // 2. Checkout the target branch, then merge the worktree branch into it
549
+ execSync(`git checkout ${targetBranch}`, {
550
+ cwd: repoRoot,
551
+ encoding: "utf-8",
552
+ stdio: "pipe",
553
+ });
554
+ execSync(`git merge --no-edit ${session.worktreeBranch}`, {
555
+ cwd: repoRoot,
556
+ encoding: "utf-8",
557
+ stdio: "pipe",
558
+ });
559
+ }
560
+ finally {
561
+ // 3. Always clean up: deregister + remove worktree
562
+ deregisterSession(repoRoot, session.sessionId);
563
+ removeWorktree(repoRoot, session.worktreePath);
564
+ }
565
+ }
473
566
  //# sourceMappingURL=scanner.js.map