@slowcook-ai/cli 0.19.0-alpha.17 → 0.19.0-alpha.40

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 (106) hide show
  1. package/AGENTS.md +2 -1
  2. package/dist/cli.js +37 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/brand/index.d.ts +58 -0
  5. package/dist/commands/brand/index.d.ts.map +1 -0
  6. package/dist/commands/brand/index.js +257 -0
  7. package/dist/commands/brand/index.js.map +1 -0
  8. package/dist/commands/budget/index.d.ts +2 -0
  9. package/dist/commands/budget/index.d.ts.map +1 -0
  10. package/dist/commands/budget/index.js +252 -0
  11. package/dist/commands/budget/index.js.map +1 -0
  12. package/dist/commands/dev-env/config.d.ts +136 -0
  13. package/dist/commands/dev-env/config.d.ts.map +1 -0
  14. package/dist/commands/dev-env/config.js +96 -0
  15. package/dist/commands/dev-env/config.js.map +1 -0
  16. package/dist/commands/dev-env/index.d.ts +27 -0
  17. package/dist/commands/dev-env/index.d.ts.map +1 -0
  18. package/dist/commands/dev-env/index.js +226 -0
  19. package/dist/commands/dev-env/index.js.map +1 -0
  20. package/dist/commands/dev-env/init.d.ts +28 -0
  21. package/dist/commands/dev-env/init.d.ts.map +1 -0
  22. package/dist/commands/dev-env/init.js +135 -0
  23. package/dist/commands/dev-env/init.js.map +1 -0
  24. package/dist/commands/eval/index.d.ts +54 -0
  25. package/dist/commands/eval/index.d.ts.map +1 -0
  26. package/dist/commands/eval/index.js +283 -0
  27. package/dist/commands/eval/index.js.map +1 -0
  28. package/dist/commands/init/mock-vite.d.ts +54 -0
  29. package/dist/commands/init/mock-vite.d.ts.map +1 -0
  30. package/dist/commands/init/mock-vite.js +611 -0
  31. package/dist/commands/init/mock-vite.js.map +1 -0
  32. package/dist/commands/init/mock.d.ts +6 -0
  33. package/dist/commands/init/mock.d.ts.map +1 -1
  34. package/dist/commands/init/mock.js +20 -4
  35. package/dist/commands/init/mock.js.map +1 -1
  36. package/dist/commands/init/plan.d.ts +26 -1
  37. package/dist/commands/init/plan.d.ts.map +1 -1
  38. package/dist/commands/init/plan.js +41 -3
  39. package/dist/commands/init/plan.js.map +1 -1
  40. package/dist/commands/plate/agent.d.ts +7 -0
  41. package/dist/commands/plate/agent.d.ts.map +1 -1
  42. package/dist/commands/plate/agent.js +1 -1
  43. package/dist/commands/plate/agent.js.map +1 -1
  44. package/dist/commands/plate/index.d.ts.map +1 -1
  45. package/dist/commands/plate/index.js +6 -0
  46. package/dist/commands/plate/index.js.map +1 -1
  47. package/dist/commands/recon/index.d.ts +1 -1
  48. package/dist/commands/recon/index.d.ts.map +1 -1
  49. package/dist/commands/recon/index.js +26 -0
  50. package/dist/commands/recon/index.js.map +1 -1
  51. package/dist/commands/recon/migration-gate.d.ts +59 -0
  52. package/dist/commands/recon/migration-gate.d.ts.map +1 -0
  53. package/dist/commands/recon/migration-gate.js +131 -0
  54. package/dist/commands/recon/migration-gate.js.map +1 -0
  55. package/dist/commands/refine/agent.d.ts +12 -0
  56. package/dist/commands/refine/agent.d.ts.map +1 -1
  57. package/dist/commands/refine/agent.js +173 -13
  58. package/dist/commands/refine/agent.js.map +1 -1
  59. package/dist/commands/refine/brownfield-answer.d.ts +81 -0
  60. package/dist/commands/refine/brownfield-answer.d.ts.map +1 -0
  61. package/dist/commands/refine/brownfield-answer.js +231 -0
  62. package/dist/commands/refine/brownfield-answer.js.map +1 -0
  63. package/dist/commands/refine/context.d.ts.map +1 -1
  64. package/dist/commands/refine/context.js +18 -0
  65. package/dist/commands/refine/context.js.map +1 -1
  66. package/dist/commands/refine/history-index.d.ts +59 -0
  67. package/dist/commands/refine/history-index.d.ts.map +1 -1
  68. package/dist/commands/refine/history-index.js +195 -8
  69. package/dist/commands/refine/history-index.js.map +1 -1
  70. package/dist/commands/refine/index.d.ts.map +1 -1
  71. package/dist/commands/refine/index.js +32 -1
  72. package/dist/commands/refine/index.js.map +1 -1
  73. package/dist/commands/refine/proposals-synth.d.ts +50 -1
  74. package/dist/commands/refine/proposals-synth.d.ts.map +1 -1
  75. package/dist/commands/refine/proposals-synth.js +199 -35
  76. package/dist/commands/refine/proposals-synth.js.map +1 -1
  77. package/dist/commands/refine/spec-yaml.d.ts +274 -250
  78. package/dist/commands/refine/spec-yaml.d.ts.map +1 -1
  79. package/dist/commands/refine/spec-yaml.js +10 -0
  80. package/dist/commands/refine/spec-yaml.js.map +1 -1
  81. package/dist/commands/run-mock/index.d.ts.map +1 -1
  82. package/dist/commands/run-mock/index.js +7 -1
  83. package/dist/commands/run-mock/index.js.map +1 -1
  84. package/dist/commands/testgen/agent.d.ts.map +1 -1
  85. package/dist/commands/testgen/agent.js +34 -9
  86. package/dist/commands/testgen/agent.js.map +1 -1
  87. package/dist/commands/vibe/agent.d.ts +7 -0
  88. package/dist/commands/vibe/agent.d.ts.map +1 -1
  89. package/dist/commands/vibe/agent.js +2 -2
  90. package/dist/commands/vibe/agent.js.map +1 -1
  91. package/dist/commands/vibe/index.d.ts.map +1 -1
  92. package/dist/commands/vibe/index.js +7 -1
  93. package/dist/commands/vibe/index.js.map +1 -1
  94. package/dist/cost-store.d.ts +52 -0
  95. package/dist/cost-store.d.ts.map +1 -0
  96. package/dist/cost-store.js +108 -0
  97. package/dist/cost-store.js.map +1 -0
  98. package/dist/lib/budget.d.ts +123 -0
  99. package/dist/lib/budget.d.ts.map +1 -0
  100. package/dist/lib/budget.js +225 -0
  101. package/dist/lib/budget.js.map +1 -0
  102. package/dist/lib/mock-shape.d.ts +44 -0
  103. package/dist/lib/mock-shape.d.ts.map +1 -0
  104. package/dist/lib/mock-shape.js +77 -0
  105. package/dist/lib/mock-shape.js.map +1 -0
  106. package/package.json +4 -4
@@ -0,0 +1,81 @@
1
+ import type { LlmClient } from "@slowcook-ai/core";
2
+ export interface AnsweredQ {
3
+ question: string;
4
+ answer: string;
5
+ source: string;
6
+ }
7
+ export interface UnansweredQ {
8
+ question: string;
9
+ why_unanswered: string;
10
+ }
11
+ export interface BrownfieldAnswerResult {
12
+ answered: AnsweredQ[];
13
+ unanswered: UnansweredQ[];
14
+ costUsd: number;
15
+ usage: {
16
+ inputTokens: number;
17
+ outputTokens: number;
18
+ cacheReadTokens: number;
19
+ cacheCreateTokens: number;
20
+ };
21
+ }
22
+ /**
23
+ * Detect whether the consumer's repo has ANY brownfield signal that
24
+ * Pass B could draw from. Greenfield = none of these present:
25
+ *
26
+ * - `.brewing/context.md` with non-empty content
27
+ * - `src/lib/entities/*.ts` (at least one entity file)
28
+ * - `specs/_index.yaml` (at least one active story)
29
+ * - `.brewing/diagrams/entities.md` or `.brewing/diagrams/schema.mmd`
30
+ *
31
+ * Cheap check (filesystem stat + small reads). No LLM. Used to gate
32
+ * Pass B so greenfield projects don't pay for an empty-answer call.
33
+ */
34
+ export declare function hasBrownfield(repoRoot: string): boolean;
35
+ export interface BrownfieldAnswerInputs {
36
+ draftQuestionsMarkdown: string;
37
+ projectContext: string;
38
+ mockExcerpt?: string;
39
+ }
40
+ /**
41
+ * Run Pass B. Returns structured answered/unanswered split + cost.
42
+ * Throws on JSON parse failure — caller decides whether to fall back
43
+ * (today: caller catches + posts the original Pass A markdown unchanged).
44
+ */
45
+ export declare function answerQuestionsFromBrownfield(inputs: BrownfieldAnswerInputs, opts: {
46
+ llm: LlmClient;
47
+ model: string;
48
+ }): Promise<BrownfieldAnswerResult>;
49
+ /**
50
+ * Parse Pass B's JSON output. Tolerant of stray code fences / leading
51
+ * prose (the model occasionally adds "Here is the JSON:" despite the
52
+ * prompt). Falls back to JSON.parse of the largest brace-balanced
53
+ * substring.
54
+ */
55
+ export declare function parseAnswerJson(text: string): {
56
+ answered: AnsweredQ[];
57
+ unanswered: UnansweredQ[];
58
+ };
59
+ /**
60
+ * Render the `<details>` audit-trail block listing brownfield-answered
61
+ * questions. Returns empty string when there are no answered Qs (no
62
+ * point spamming the comment with an empty disclosure).
63
+ */
64
+ export declare function formatAnsweredDetails(answered: AnsweredQ[]): string;
65
+ /**
66
+ * Render the visible PM-facing question list from `unanswered`. Each
67
+ * question text is preserved verbatim (Pass A's labeled-options format
68
+ * survives). Numbered list, blank-line separated. Empty when there are
69
+ * no unanswered Qs (caller decides what to do — probably emit a spec
70
+ * directly next round, or post a "nothing more to ask" note).
71
+ */
72
+ export declare function formatUnansweredQuestions(unanswered: UnansweredQ[]): string;
73
+ /**
74
+ * Compose the final question-comment markdown body, replacing Pass A's
75
+ * raw questions output with the Pass B filtered view + audit details.
76
+ * Leading "I checked first..." note appears only when at least one
77
+ * answer was found, so greenfield-like cases (Pass B ran but found
78
+ * nothing) don't show a misleading "I checked first" banner.
79
+ */
80
+ export declare function composePassBComment(result: BrownfieldAnswerResult, fallbackMarkdown: string): string;
81
+ //# sourceMappingURL=brownfield-answer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brownfield-answer.d.ts","sourceRoot":"","sources":["../../../src/commands/refine/brownfield-answer.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CA4CvD;AAED,MAAM,WAAW,sBAAsB;IACrC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,sBAAsB,EAC9B,IAAI,EAAE;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC,OAAO,CAAC,sBAAsB,CAAC,CAgBjC;AA0BD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAC7C,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,UAAU,EAAE,WAAW,EAAE,CAAC;CAC3B,CAkBA;AAkBD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAqBnE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,CAK3E;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,sBAAsB,EAC9B,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAsBR"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * 0.19.0-α.36 — refine Pass B: reflexive brownfield-answer pass.
3
+ *
4
+ * After Pass A drafts clarifying questions, this second LLM call checks
5
+ * each question against the same brownfield context Pass A saw and
6
+ * decides whether the context already answers it. The PM only sees the
7
+ * unanswered questions in the main comment body; the answered ones go
8
+ * into a `<details>` audit-trail block so a technical PM can verify.
9
+ *
10
+ * Skipped entirely on greenfield projects (no `.brewing/context.md`,
11
+ * no `src/lib/entities/`, no `specs/_index.yaml` entries) — there's no
12
+ * context to draw from, so Pass B would always emit zero answers
13
+ * and just burn an LLM call.
14
+ *
15
+ * The pattern mirrors `side-effects-audit.ts`: structured JSON output,
16
+ * deterministic markdown rendering on slowcook's side.
17
+ */
18
+ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
19
+ import { join } from "node:path";
20
+ import { BROWNFIELD_ANSWER_SYSTEM } from "@slowcook-ai/llm-anthropic";
21
+ /**
22
+ * Detect whether the consumer's repo has ANY brownfield signal that
23
+ * Pass B could draw from. Greenfield = none of these present:
24
+ *
25
+ * - `.brewing/context.md` with non-empty content
26
+ * - `src/lib/entities/*.ts` (at least one entity file)
27
+ * - `specs/_index.yaml` (at least one active story)
28
+ * - `.brewing/diagrams/entities.md` or `.brewing/diagrams/schema.mmd`
29
+ *
30
+ * Cheap check (filesystem stat + small reads). No LLM. Used to gate
31
+ * Pass B so greenfield projects don't pay for an empty-answer call.
32
+ */
33
+ export function hasBrownfield(repoRoot) {
34
+ // 1. context.md with body
35
+ try {
36
+ const p = join(repoRoot, ".brewing", "context.md");
37
+ if (existsSync(p) && statSync(p).size > 20)
38
+ return true;
39
+ }
40
+ catch {
41
+ /* fall through */
42
+ }
43
+ // 2. entities/
44
+ try {
45
+ const dir = join(repoRoot, "src", "lib", "entities");
46
+ if (existsSync(dir) &&
47
+ readdirSync(dir).some((f) => f.endsWith(".ts") && f !== "index.ts")) {
48
+ return true;
49
+ }
50
+ }
51
+ catch {
52
+ /* fall through */
53
+ }
54
+ // 3. specs index with stories
55
+ try {
56
+ const p = join(repoRoot, "specs", "_index.yaml");
57
+ if (existsSync(p)) {
58
+ const body = readFileSync(p, "utf8");
59
+ // crude: look for any `story_id:` or 1+ keyed entry under stories:.
60
+ if (/\bstory_id:|\n\s{2,}\w[\w-]*:/.test(body))
61
+ return true;
62
+ }
63
+ }
64
+ catch {
65
+ /* fall through */
66
+ }
67
+ // 4. brownfield extracts
68
+ for (const rel of [
69
+ ".brewing/diagrams/entities.md",
70
+ ".brewing/diagrams/schema.mmd",
71
+ ".brewing/tokens.md",
72
+ ]) {
73
+ try {
74
+ if (existsSync(join(repoRoot, rel)))
75
+ return true;
76
+ }
77
+ catch {
78
+ /* fall through */
79
+ }
80
+ }
81
+ return false;
82
+ }
83
+ /**
84
+ * Run Pass B. Returns structured answered/unanswered split + cost.
85
+ * Throws on JSON parse failure — caller decides whether to fall back
86
+ * (today: caller catches + posts the original Pass A markdown unchanged).
87
+ */
88
+ export async function answerQuestionsFromBrownfield(inputs, opts) {
89
+ const userMessage = buildUserMessage(inputs);
90
+ const response = await opts.llm.complete({
91
+ system: BROWNFIELD_ANSWER_SYSTEM,
92
+ cacheSystem: false,
93
+ model: opts.model,
94
+ messages: [{ role: "user", content: userMessage }],
95
+ maxTokens: 4096,
96
+ });
97
+ const { answered, unanswered } = parseAnswerJson(response.text);
98
+ return {
99
+ answered,
100
+ unanswered,
101
+ costUsd: response.costUsd,
102
+ usage: response.usage,
103
+ };
104
+ }
105
+ function buildUserMessage(inputs) {
106
+ const sections = [];
107
+ sections.push("## Brownfield context (what Pass A saw)");
108
+ sections.push("");
109
+ sections.push(inputs.projectContext);
110
+ if (inputs.mockExcerpt && inputs.mockExcerpt.trim()) {
111
+ sections.push("");
112
+ sections.push("## Mock excerpt (design source-of-truth for this story)");
113
+ sections.push("");
114
+ sections.push("```tsx");
115
+ sections.push(inputs.mockExcerpt);
116
+ sections.push("```");
117
+ }
118
+ sections.push("");
119
+ sections.push("## Pass A's draft questions (markdown)");
120
+ sections.push("");
121
+ sections.push(inputs.draftQuestionsMarkdown);
122
+ sections.push("");
123
+ sections.push("Emit the JSON object only — no prose, no fences. Copy questions verbatim including any (a)/(b)/(c) options.");
124
+ return sections.join("\n");
125
+ }
126
+ /**
127
+ * Parse Pass B's JSON output. Tolerant of stray code fences / leading
128
+ * prose (the model occasionally adds "Here is the JSON:" despite the
129
+ * prompt). Falls back to JSON.parse of the largest brace-balanced
130
+ * substring.
131
+ */
132
+ export function parseAnswerJson(text) {
133
+ let raw = text.trim();
134
+ // Strip markdown code-fence wrappers if the model added them.
135
+ raw = raw.replace(/^```(?:json)?\s*\n?/i, "").replace(/\n?```\s*$/i, "");
136
+ // If the model prefixed prose, find the first { and matching close.
137
+ const firstBrace = raw.indexOf("{");
138
+ const lastBrace = raw.lastIndexOf("}");
139
+ if (firstBrace > 0 && lastBrace > firstBrace) {
140
+ raw = raw.slice(firstBrace, lastBrace + 1);
141
+ }
142
+ const parsed = JSON.parse(raw);
143
+ const answered = Array.isArray(parsed.answered)
144
+ ? parsed.answered.filter(isAnsweredQ)
145
+ : [];
146
+ const unanswered = Array.isArray(parsed.unanswered)
147
+ ? parsed.unanswered.filter(isUnansweredQ)
148
+ : [];
149
+ return { answered, unanswered };
150
+ }
151
+ function isAnsweredQ(x) {
152
+ if (!x || typeof x !== "object")
153
+ return false;
154
+ const r = x;
155
+ return (typeof r.question === "string" &&
156
+ typeof r.answer === "string" &&
157
+ typeof r.source === "string");
158
+ }
159
+ function isUnansweredQ(x) {
160
+ if (!x || typeof x !== "object")
161
+ return false;
162
+ const r = x;
163
+ return typeof r.question === "string" && typeof r.why_unanswered === "string";
164
+ }
165
+ /**
166
+ * Render the `<details>` audit-trail block listing brownfield-answered
167
+ * questions. Returns empty string when there are no answered Qs (no
168
+ * point spamming the comment with an empty disclosure).
169
+ */
170
+ export function formatAnsweredDetails(answered) {
171
+ if (answered.length === 0)
172
+ return "";
173
+ const lines = [];
174
+ lines.push("");
175
+ lines.push(`<details>\n<summary>🔍 <strong>${answered.length} question${answered.length === 1 ? "" : "s"} answered from brownfield context (audit trail)</strong></summary>\n`);
176
+ lines.push("");
177
+ lines.push(`_I checked the entities digest, active specs, brownfield extracts, and mock before asking the PM. These would have been questions, but the answer was already in the codebase:_\n`);
178
+ answered.forEach((a, i) => {
179
+ lines.push(`**${i + 1}. ${a.question.trim()}**`);
180
+ lines.push("");
181
+ lines.push(`Answer: ${a.answer.trim()}`);
182
+ lines.push("");
183
+ lines.push(`Source: \`${a.source.trim()}\``);
184
+ lines.push("");
185
+ });
186
+ lines.push("</details>");
187
+ return lines.join("\n");
188
+ }
189
+ /**
190
+ * Render the visible PM-facing question list from `unanswered`. Each
191
+ * question text is preserved verbatim (Pass A's labeled-options format
192
+ * survives). Numbered list, blank-line separated. Empty when there are
193
+ * no unanswered Qs (caller decides what to do — probably emit a spec
194
+ * directly next round, or post a "nothing more to ask" note).
195
+ */
196
+ export function formatUnansweredQuestions(unanswered) {
197
+ if (unanswered.length === 0)
198
+ return "";
199
+ return unanswered
200
+ .map((u, i) => `**${i + 1}.** ${u.question.trim()}`)
201
+ .join("\n\n");
202
+ }
203
+ /**
204
+ * Compose the final question-comment markdown body, replacing Pass A's
205
+ * raw questions output with the Pass B filtered view + audit details.
206
+ * Leading "I checked first..." note appears only when at least one
207
+ * answer was found, so greenfield-like cases (Pass B ran but found
208
+ * nothing) don't show a misleading "I checked first" banner.
209
+ */
210
+ export function composePassBComment(result, fallbackMarkdown) {
211
+ const totalQs = result.answered.length + result.unanswered.length;
212
+ // If Pass B parsed zero questions altogether — most likely a parse
213
+ // glitch where the model didn't return either array. Fall back to
214
+ // Pass A's original markdown so we never lose the questions entirely.
215
+ if (totalQs === 0)
216
+ return fallbackMarkdown;
217
+ const lines = [];
218
+ if (result.answered.length > 0) {
219
+ lines.push(`_🔍 Checked brownfield first: **${result.answered.length} of ${totalQs}** question${totalQs === 1 ? "" : "s"} already answered in your codebase (see audit trail below). **${result.unanswered.length}** still need${result.unanswered.length === 1 ? "s" : ""} your input:_`);
220
+ lines.push("");
221
+ }
222
+ if (result.unanswered.length > 0) {
223
+ lines.push(formatUnansweredQuestions(result.unanswered));
224
+ }
225
+ else {
226
+ lines.push(`_✅ All ${result.answered.length} draft questions were answered from brownfield context. I'll proceed to emit the spec on the next pass — re-trigger this agent (remove + re-add the \`needs-refinement\` label) when you've confirmed the audit trail below._`);
227
+ }
228
+ lines.push(formatAnsweredDetails(result.answered));
229
+ return lines.join("\n");
230
+ }
231
+ //# sourceMappingURL=brownfield-answer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brownfield-answer.js","sourceRoot":"","sources":["../../../src/commands/refine/brownfield-answer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/commands/refine/context.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA6B5D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA+ClE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8EtE;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmCtE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ7D"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/commands/refine/context.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA6B5D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA+ClE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoGtE;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmCtE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ7D"}
@@ -155,6 +155,24 @@ export function readHistoryIndexDigest(repoRoot) {
155
155
  lines.push("Column-level detail is in `.brewing/history-index.json`.");
156
156
  lines.push("");
157
157
  }
158
+ // 0.19.0-α.23 — mock surface is the consumer's hand-authored
159
+ // design source-of-truth. When the PM says "match the mock" or
160
+ // gestures at an existing flow, refine reads the actual mock JSX
161
+ // here instead of asking the PM for paths.
162
+ if (idx.mock_surface && idx.mock_surface.length > 0) {
163
+ lines.push("### Mock surface (design source-of-truth)");
164
+ lines.push("These are the consumer's hand-authored mock pages/components. When the PM says \"match the mock\" or references an existing flow without citing a file, treat these as the canonical design. Mirror layout, role toggles, copy, and behavior in your spec; only deviate when the PM explicitly asks.");
165
+ lines.push("");
166
+ for (const m of idx.mock_surface) {
167
+ const routeLabel = m.route ? `route \`${m.route}\`` : "component";
168
+ lines.push(`<details><summary><strong>${m.name}</strong> — ${routeLabel} (\`${m.file}\`)</summary>\n`);
169
+ lines.push("```tsx");
170
+ lines.push(m.excerpt);
171
+ lines.push("```");
172
+ lines.push("</details>\n");
173
+ }
174
+ lines.push("");
175
+ }
158
176
  if (idx.test_helpers && idx.test_helpers.length > 0) {
159
177
  lines.push("### Existing test helpers (use these idioms; don't invent new mocking patterns)");
160
178
  for (const h of idx.test_helpers.slice(0, 30)) {
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/commands/refine/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/commands/refine/context.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,30 @@ export interface TestFileEntry {
59
59
  /** describe / it titles found in the file (best-effort regex). */
60
60
  test_names: string[];
61
61
  }
62
+ /**
63
+ * A mock page or component, captured so refine can answer
64
+ * "match the mock" without making the PM cite paths.
65
+ *
66
+ * 0.19.0-α.23 — added because real PM issues describe user pain
67
+ * ("registration should look like the mock"), and the indexer
68
+ * previously only saw production `src/`. Refine then either
69
+ * hallucinated a design or had to ask. Surfacing mock files in
70
+ * context closes the loop: PM says "as mock" → refine reads the
71
+ * actual mock excerpt → spec mirrors it.
72
+ *
73
+ * The excerpt is bounded to the first ~1.5KB so refine's prompt
74
+ * doesn't blow up on a 5KB mock file.
75
+ */
76
+ export interface MockEntry {
77
+ /** repo-relative path. */
78
+ file: string;
79
+ /** Route inferred from app/router-shape file location, or null for components. */
80
+ route: string | null;
81
+ /** Component or page name (best-effort extraction, falls back to file basename). */
82
+ name: string;
83
+ /** First ~1500 chars of the file (after trimming whitespace) so refine sees the actual JSX/markup. */
84
+ excerpt: string;
85
+ }
62
86
  export interface HistoryIndex {
63
87
  generated_at: string;
64
88
  generator: "slowcook-refine-history-index@0.17.0";
@@ -67,6 +91,8 @@ export interface HistoryIndex {
67
91
  migrations: MigrationEntry[];
68
92
  test_helpers: TestHelperEntry[];
69
93
  test_files: TestFileEntry[];
94
+ /** 0.19.0-α.23 — mock surface (design source-of-truth). */
95
+ mock_surface: MockEntry[];
70
96
  }
71
97
  interface BuildOptions {
72
98
  repoRoot: string;
@@ -77,8 +103,41 @@ interface BuildOptions {
77
103
  migrations?: string;
78
104
  tests?: string;
79
105
  helpers?: string;
106
+ /** Default: `mock/src` (matches slowcook init scaffold). */
107
+ mockRoot?: string;
80
108
  };
81
109
  }
82
110
  export declare function buildHistoryIndex(opts: BuildOptions): HistoryIndex;
111
+ export declare const TYPEORM_MIGRATION_FALLBACK_DIRS: string[];
112
+ /**
113
+ * The columns `DatabaseCreateTable` (delgoosh's helper) adds implicitly on
114
+ * EVERY table. Knowing these prevents the migration gate from raising a
115
+ * false-positive "missing column" verdict when the spec references e.g.
116
+ * `created_at` and the migration uses the helper.
117
+ *
118
+ * Kept conservative: only columns added by the helper at delgoosh-monorepo's
119
+ * version (id, created_at, updated_at, deleted_at). Future TypeORM helpers
120
+ * with different defaults need their own entry — or, longer-term, slowcook
121
+ * should infer this from the helper's source.
122
+ */
123
+ export declare const TYPEORM_HELPER_IMPLICIT_COLUMNS: string[];
124
+ export declare function scanMigrations(repoRoot: string, dir: string): MigrationEntry[];
125
+ /**
126
+ * Parse a single TypeORM migration TS file into the same MigrationEntry shape
127
+ * the SQL parser produces. Sees two patterns:
128
+ *
129
+ * 1. `await queryRunner.query(\`CREATE TABLE x ...\`)` — extract the SQL
130
+ * template body and run it through the existing SQL parsers.
131
+ * 2. `await DatabaseCreateTable(queryRunner, 'tbl', [{name:'a'},{name:'b'}])`
132
+ * — extract `tbl` + each column's name + the implicit-columns helpers
133
+ * add (id, created_at, updated_at, deleted_at).
134
+ *
135
+ * Pattern 2 is delgoosh-monorepo-specific; pattern 1 covers raw SQL writers.
136
+ * EXPORTED for unit testing.
137
+ */
138
+ export declare function parseTypeOrmMigration(name: string, body: string): MigrationEntry;
139
+ export declare function extractCreateTables(sql: string): string[];
140
+ export declare function extractColumnsAdded(sql: string): Record<string, string[]>;
141
+ export declare function scanMockSurface(repoRoot: string, mockRoot: string): MockEntry[];
83
142
  export {};
84
143
  //# sourceMappingURL=history-index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"history-index.d.ts","sourceRoot":"","sources":["../../../src/commands/refine/history-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kEAAkE;IAClE,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,sCAAsC,CAAC;IAClD,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,UAAU,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,SAAS,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAoClE"}
1
+ {"version":3,"file":"history-index.d.ts","sourceRoot":"","sources":["../../../src/commands/refine/history-index.ts"],"names":[],"mappings":"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"}