@slowcook-ai/cli 0.19.0-alpha.41 → 0.19.0
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.
- package/AGENTS.md +2 -2
- package/dist/cli.js +19 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/brand/index.d.ts +3 -35
- package/dist/commands/brand/index.d.ts.map +1 -1
- package/dist/commands/brew/agent.d.ts +7 -2
- package/dist/commands/brew/agent.d.ts.map +1 -1
- package/dist/commands/brew/agent.js +9 -0
- package/dist/commands/brew/agent.js.map +1 -1
- package/dist/commands/brew/halt.d.ts +26 -0
- package/dist/commands/brew/halt.d.ts.map +1 -1
- package/dist/commands/brew/halt.js.map +1 -1
- package/dist/commands/brew/index.d.ts.map +1 -1
- package/dist/commands/brew/index.js +81 -29
- package/dist/commands/brew/index.js.map +1 -1
- package/dist/commands/brew/pair-navigator.d.ts +7 -0
- package/dist/commands/brew/pair-navigator.d.ts.map +1 -1
- package/dist/commands/brew/pair-navigator.js +4 -0
- package/dist/commands/brew/pair-navigator.js.map +1 -1
- package/dist/commands/chef/drift-fix.d.ts +32 -3
- package/dist/commands/chef/drift-fix.d.ts.map +1 -1
- package/dist/commands/chef/drift-fix.js +381 -14
- package/dist/commands/chef/drift-fix.js.map +1 -1
- package/dist/commands/dev-env/config.d.ts +18 -97
- package/dist/commands/dev-env/config.d.ts.map +1 -1
- package/dist/commands/eval/index.d.ts.map +1 -1
- package/dist/commands/eval/index.js +13 -2
- package/dist/commands/eval/index.js.map +1 -1
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +33 -0
- package/dist/commands/init/index.js.map +1 -1
- package/dist/commands/init/mock-vite.d.ts.map +1 -1
- package/dist/commands/init/mock-vite.js +2 -0
- package/dist/commands/init/mock-vite.js.map +1 -1
- package/dist/commands/knowledge-add.d.ts +52 -0
- package/dist/commands/knowledge-add.d.ts.map +1 -0
- package/dist/commands/knowledge-add.js +232 -0
- package/dist/commands/knowledge-add.js.map +1 -0
- package/dist/commands/recon/index.d.ts +14 -1
- package/dist/commands/recon/index.d.ts.map +1 -1
- package/dist/commands/recon/index.js +43 -2
- package/dist/commands/recon/index.js.map +1 -1
- package/dist/commands/refine/agent.d.ts +11 -0
- package/dist/commands/refine/agent.d.ts.map +1 -1
- package/dist/commands/refine/agent.js +72 -2
- package/dist/commands/refine/agent.js.map +1 -1
- package/dist/commands/refine/context.d.ts +27 -1
- package/dist/commands/refine/context.d.ts.map +1 -1
- package/dist/commands/refine/context.js +425 -11
- package/dist/commands/refine/context.js.map +1 -1
- package/dist/commands/refine/git-attention.d.ts +123 -0
- package/dist/commands/refine/git-attention.d.ts.map +1 -0
- package/dist/commands/refine/git-attention.js +378 -0
- package/dist/commands/refine/git-attention.js.map +1 -0
- package/dist/commands/refine/history-index.d.ts +7 -0
- package/dist/commands/refine/history-index.d.ts.map +1 -1
- package/dist/commands/refine/history-index.js.map +1 -1
- package/dist/commands/refine/index.d.ts.map +1 -1
- package/dist/commands/refine/index.js +76 -20
- package/dist/commands/refine/index.js.map +1 -1
- package/dist/commands/refine/multifurcate.d.ts +129 -0
- package/dist/commands/refine/multifurcate.d.ts.map +1 -0
- package/dist/commands/refine/multifurcate.js +247 -0
- package/dist/commands/refine/multifurcate.js.map +1 -0
- package/dist/commands/refine/spec-yaml.d.ts +211 -1231
- package/dist/commands/refine/spec-yaml.d.ts.map +1 -1
- package/dist/commands/refresh-knowledge.d.ts +126 -0
- package/dist/commands/refresh-knowledge.d.ts.map +1 -0
- package/dist/commands/refresh-knowledge.js +1010 -0
- package/dist/commands/refresh-knowledge.js.map +1 -0
- package/dist/commands/testgen/agent.d.ts +13 -0
- package/dist/commands/testgen/agent.d.ts.map +1 -1
- package/dist/commands/testgen/agent.js +103 -2
- package/dist/commands/testgen/agent.js.map +1 -1
- package/dist/commands/upsert-agent-docs.d.ts +48 -0
- package/dist/commands/upsert-agent-docs.d.ts.map +1 -0
- package/dist/commands/upsert-agent-docs.js +298 -0
- package/dist/commands/upsert-agent-docs.js.map +1 -0
- package/dist/lib/budget.d.ts +2 -52
- package/dist/lib/budget.d.ts.map +1 -1
- package/dist/lib/mock-shape.d.ts +5 -20
- package/dist/lib/mock-shape.d.ts.map +1 -1
- package/package.json +9 -6
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readFileSync, existsSync, readdirSync } from "node:fs";
|
|
1
|
+
import { readFileSync, existsSync, readdirSync, statSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import YAML from "yaml";
|
|
4
4
|
/**
|
|
@@ -35,14 +35,129 @@ export function buildProjectContext(repoRoot) {
|
|
|
35
35
|
const brownfield = readBrownfieldExtracts(repoRoot);
|
|
36
36
|
if (brownfield)
|
|
37
37
|
sections.push("\n" + brownfield);
|
|
38
|
-
|
|
38
|
+
// α.66 — pass skipOverlapWithAuto so history-index doesn't double up
|
|
39
|
+
// when the auto/ digests are present (they cover components +
|
|
40
|
+
// api_routes + migrations + mock_surface byte-identically).
|
|
41
|
+
const autoPresent = existsSync(join(repoRoot, ".brewing/repo-knowledge/auto"));
|
|
42
|
+
const historyDigest = readHistoryIndexDigest(repoRoot, { skipOverlapWithAuto: autoPresent });
|
|
39
43
|
if (historyDigest)
|
|
40
44
|
sections.push("\n" + historyDigest);
|
|
41
45
|
const entitiesDigest = readEntitiesDigest(repoRoot);
|
|
42
46
|
if (entitiesDigest)
|
|
43
47
|
sections.push("\n" + entitiesDigest);
|
|
48
|
+
// α.62 — prefer the disk-cached `.brewing/repo-knowledge/auto/*.md`
|
|
49
|
+
// digests (emitted by `slowcook refresh-knowledge`) over re-scanning
|
|
50
|
+
// in-process. The on-disk versions are also seen by other agents
|
|
51
|
+
// (chef, vibe, etc.) so the team shares one reading. Falls back to
|
|
52
|
+
// the in-memory α.61 scan if the dir doesn't exist (first run on a
|
|
53
|
+
// repo where refresh-knowledge hasn't run yet).
|
|
54
|
+
const knowledgeAuto = readKnowledgeAutoBlock(repoRoot);
|
|
55
|
+
if (knowledgeAuto) {
|
|
56
|
+
sections.push("\n" + knowledgeAuto);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// α.61 fallback — in-memory NestJS scan.
|
|
60
|
+
const nestjsDigest = readNestJsBackendDigest(repoRoot);
|
|
61
|
+
if (nestjsDigest)
|
|
62
|
+
sections.push("\n" + nestjsDigest);
|
|
63
|
+
}
|
|
64
|
+
// α.63 — also surface the curated/ block (git-history mining +
|
|
65
|
+
// future agent-written insights). Tracked in git; carries
|
|
66
|
+
// commit-conventions, co-changes, ownership, fix-recipe seeds,
|
|
67
|
+
// issue traceability.
|
|
68
|
+
const knowledgeCurated = readKnowledgeCuratedBlock(repoRoot);
|
|
69
|
+
if (knowledgeCurated)
|
|
70
|
+
sections.push("\n" + knowledgeCurated);
|
|
44
71
|
return sections.join("\n");
|
|
45
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* α.63 — assemble the `.brewing/repo-knowledge/curated/*.md` files
|
|
75
|
+
* into one block. These are mined from git history (and in later
|
|
76
|
+
* alphas, written-back by chef / vibe / testgen). Tracked in git so
|
|
77
|
+
* fresh clones get the organizational memory immediately.
|
|
78
|
+
*/
|
|
79
|
+
function readKnowledgeCuratedBlock(repoRoot) {
|
|
80
|
+
const curatedDir = join(repoRoot, ".brewing/repo-knowledge/curated");
|
|
81
|
+
if (!existsSync(curatedDir))
|
|
82
|
+
return null;
|
|
83
|
+
const order = [
|
|
84
|
+
"commit-conventions.md",
|
|
85
|
+
"ownership.md",
|
|
86
|
+
"co-changes.md",
|
|
87
|
+
"fix-recipe-seeds.md",
|
|
88
|
+
"chef-known-fixes.md", // populated later when chef writes
|
|
89
|
+
"test-patterns.md", // populated later when testgen writes
|
|
90
|
+
"design-conventions.md", // populated later when vibe writes
|
|
91
|
+
"issue-traceability.md",
|
|
92
|
+
];
|
|
93
|
+
const parts = [];
|
|
94
|
+
parts.push("## Repo knowledge — curated (`.brewing/repo-knowledge/curated/`)\n");
|
|
95
|
+
parts.push("Durable organizational memory: conventions + coupling + insights either mined from git history (α.63) or appended by agents over time (α.65+). Treat as soft signal — entries carry evidence trails but staleness is for review, not auto-invalidation.\n");
|
|
96
|
+
let found = 0;
|
|
97
|
+
for (const fname of order) {
|
|
98
|
+
const path = join(curatedDir, fname);
|
|
99
|
+
if (!existsSync(path))
|
|
100
|
+
continue;
|
|
101
|
+
try {
|
|
102
|
+
const body = readFileSync(path, "utf8");
|
|
103
|
+
if (body.trim().length === 0)
|
|
104
|
+
continue;
|
|
105
|
+
parts.push(body.trim());
|
|
106
|
+
parts.push("");
|
|
107
|
+
found++;
|
|
108
|
+
}
|
|
109
|
+
catch { /* ignore */ }
|
|
110
|
+
}
|
|
111
|
+
if (found === 0)
|
|
112
|
+
return null;
|
|
113
|
+
return parts.join("\n");
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* α.62 — assemble the `.brewing/repo-knowledge/auto/*.md` digests
|
|
117
|
+
* into one block. Reads in a stable order so the byte sequence is
|
|
118
|
+
* deterministic across runs (helps Anthropic prompt cache stay warm).
|
|
119
|
+
* Returns null if the dir doesn't exist (consumer hasn't run
|
|
120
|
+
* `slowcook refresh-knowledge` yet).
|
|
121
|
+
*/
|
|
122
|
+
function readKnowledgeAutoBlock(repoRoot) {
|
|
123
|
+
const autoDir = join(repoRoot, ".brewing/repo-knowledge/auto");
|
|
124
|
+
if (!existsSync(autoDir))
|
|
125
|
+
return null;
|
|
126
|
+
const order = [
|
|
127
|
+
"config.md",
|
|
128
|
+
"backend-entities.md",
|
|
129
|
+
"backend-enums.md",
|
|
130
|
+
"backend-routes.md",
|
|
131
|
+
"frontend-types.md",
|
|
132
|
+
"frontend-contexts.md",
|
|
133
|
+
"frontend-components.md",
|
|
134
|
+
"routes-inventory.md",
|
|
135
|
+
"tokens.md",
|
|
136
|
+
"migrations.md",
|
|
137
|
+
];
|
|
138
|
+
const parts = [];
|
|
139
|
+
parts.push("## Repo knowledge (auto-generated digests, from `.brewing/repo-knowledge/auto/`)\n");
|
|
140
|
+
parts.push("These are deterministic extractions of the consumer's actual code shape. Agents MUST reference names/paths/values from here verbatim — do not invent routes, field aliases, or enum values not listed.\n");
|
|
141
|
+
let found = 0;
|
|
142
|
+
for (const fname of order) {
|
|
143
|
+
const path = join(autoDir, fname);
|
|
144
|
+
if (!existsSync(path))
|
|
145
|
+
continue;
|
|
146
|
+
try {
|
|
147
|
+
const body = readFileSync(path, "utf8")
|
|
148
|
+
.replace(/^<!--[^>]*-->\n?/gm, ""); // strip metadata header
|
|
149
|
+
if (body.trim().length === 0)
|
|
150
|
+
continue;
|
|
151
|
+
parts.push(body.trim());
|
|
152
|
+
parts.push("");
|
|
153
|
+
found++;
|
|
154
|
+
}
|
|
155
|
+
catch { /* ignore */ }
|
|
156
|
+
}
|
|
157
|
+
if (found === 0)
|
|
158
|
+
return null;
|
|
159
|
+
return parts.join("\n");
|
|
160
|
+
}
|
|
46
161
|
/**
|
|
47
162
|
* 0.18.0-α.6 — surface a digest of `src/lib/entities/*.ts` (emitted by
|
|
48
163
|
* `slowcook init entities` from the consumer's database migrations).
|
|
@@ -117,7 +232,7 @@ export function readEntitiesDigest(repoRoot) {
|
|
|
117
232
|
* field, only the names + signatures. Full file is on disk for vibe +
|
|
118
233
|
* testgen to consume in detail.
|
|
119
234
|
*/
|
|
120
|
-
export function readHistoryIndexDigest(repoRoot) {
|
|
235
|
+
export function readHistoryIndexDigest(repoRoot, opts = {}) {
|
|
121
236
|
const path = join(repoRoot, ".brewing/history-index.json");
|
|
122
237
|
if (!existsSync(path))
|
|
123
238
|
return null;
|
|
@@ -127,7 +242,13 @@ export function readHistoryIndexDigest(repoRoot) {
|
|
|
127
242
|
lines.push("## Code history index (auto-generated; treat as authoritative)\n");
|
|
128
243
|
lines.push("Refine MUST consult this index when deciding whether the new spec extends, supersedes, or duplicates existing surface area. Reference entries by name in your Q&A so the PM sees you've grounded against current code.");
|
|
129
244
|
lines.push("");
|
|
130
|
-
|
|
245
|
+
// α.66 — when auto/ digests exist they cover components / api_routes
|
|
246
|
+
// / migrations / mock_surface byte-identically. Skip those sections
|
|
247
|
+
// here to avoid ~20-30KB of duplicate context (Anthropic prompt
|
|
248
|
+
// cache + per-token cost both benefit). Keep test_helpers +
|
|
249
|
+
// git_attention below — they're NOT in auto/.
|
|
250
|
+
const skipOverlap = opts.skipOverlapWithAuto ?? false;
|
|
251
|
+
if (!skipOverlap && idx.components && idx.components.length > 0) {
|
|
131
252
|
lines.push("### Existing components (with prop shape + test coverage)");
|
|
132
253
|
for (const c of idx.components) {
|
|
133
254
|
const propsStr = c.props.length > 0 ? ` props={${c.props.join(", ")}}` : " (no Props interface found)";
|
|
@@ -136,14 +257,14 @@ export function readHistoryIndexDigest(repoRoot) {
|
|
|
136
257
|
}
|
|
137
258
|
lines.push("");
|
|
138
259
|
}
|
|
139
|
-
if (idx.api_routes && idx.api_routes.length > 0) {
|
|
260
|
+
if (!skipOverlap && idx.api_routes && idx.api_routes.length > 0) {
|
|
140
261
|
lines.push("### Existing API routes");
|
|
141
262
|
for (const r of idx.api_routes) {
|
|
142
263
|
lines.push(`- ${r.method} ${r.path} \`${r.file}\``);
|
|
143
264
|
}
|
|
144
265
|
lines.push("");
|
|
145
266
|
}
|
|
146
|
-
if (idx.migrations && idx.migrations.length > 0) {
|
|
267
|
+
if (!skipOverlap && idx.migrations && idx.migrations.length > 0) {
|
|
147
268
|
lines.push("### Existing migrations (tables + columns)");
|
|
148
269
|
for (const m of idx.migrations) {
|
|
149
270
|
const tablesStr = m.tables_created.length > 0
|
|
@@ -155,11 +276,7 @@ export function readHistoryIndexDigest(repoRoot) {
|
|
|
155
276
|
lines.push("Column-level detail is in `.brewing/history-index.json`.");
|
|
156
277
|
lines.push("");
|
|
157
278
|
}
|
|
158
|
-
|
|
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) {
|
|
279
|
+
if (!skipOverlap && idx.mock_surface && idx.mock_surface.length > 0) {
|
|
163
280
|
lines.push("### Mock surface (design source-of-truth)");
|
|
164
281
|
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
282
|
lines.push("");
|
|
@@ -173,6 +290,10 @@ export function readHistoryIndexDigest(repoRoot) {
|
|
|
173
290
|
}
|
|
174
291
|
lines.push("");
|
|
175
292
|
}
|
|
293
|
+
if (skipOverlap) {
|
|
294
|
+
lines.push("_(components / api_routes / migrations / mock_surface sections omitted — auto/ digests cover them.)_");
|
|
295
|
+
lines.push("");
|
|
296
|
+
}
|
|
176
297
|
if (idx.test_helpers && idx.test_helpers.length > 0) {
|
|
177
298
|
lines.push("### Existing test helpers (use these idioms; don't invent new mocking patterns)");
|
|
178
299
|
for (const h of idx.test_helpers.slice(0, 30)) {
|
|
@@ -181,6 +302,59 @@ export function readHistoryIndexDigest(repoRoot) {
|
|
|
181
302
|
}
|
|
182
303
|
lines.push("");
|
|
183
304
|
}
|
|
305
|
+
// 0.19.0-α.43 — git-history attention layer. Surface the four
|
|
306
|
+
// signals (renames, co-changes, recent PRs per file, PR+spec
|
|
307
|
+
// corpus) so refine grounds new specs in actual project history,
|
|
308
|
+
// not just snapshot structure. Cap each list aggressively so the
|
|
309
|
+
// digest stays prompt-sized; full data is in the json on disk.
|
|
310
|
+
const ga = idx.git_attention;
|
|
311
|
+
if (ga) {
|
|
312
|
+
const renameEntries = Object.entries(ga.rename_chains ?? {});
|
|
313
|
+
const coChangeEntries = Object.entries(ga.co_changes ?? {});
|
|
314
|
+
const prEntries = Object.entries(ga.recent_prs_by_file ?? {});
|
|
315
|
+
const corpus = ga.pr_spec_corpus ?? [];
|
|
316
|
+
const anyContent = renameEntries.length > 0 ||
|
|
317
|
+
coChangeEntries.length > 0 ||
|
|
318
|
+
prEntries.length > 0 ||
|
|
319
|
+
corpus.length > 0;
|
|
320
|
+
if (anyContent) {
|
|
321
|
+
lines.push("### Git-history attention (renames, couplings, recent PRs, corpus)");
|
|
322
|
+
lines.push("Brownfield repos are sequential. These four signals come from `git log` + `gh pr list` and tell refine which surface area carries prior intent — DON'T propose a rename or new file when the history shows the existing name is what reviewers and the PM use.");
|
|
323
|
+
lines.push("");
|
|
324
|
+
if (renameEntries.length > 0) {
|
|
325
|
+
lines.push("**Files that were renamed** (use the CURRENT path; older names are just for grep continuity):");
|
|
326
|
+
for (const [current, previous] of renameEntries.slice(0, 20)) {
|
|
327
|
+
lines.push(`- \`${current}\` ← was \`${previous.join("\`, \`")}\``);
|
|
328
|
+
}
|
|
329
|
+
lines.push("");
|
|
330
|
+
}
|
|
331
|
+
if (coChangeEntries.length > 0) {
|
|
332
|
+
lines.push("**Change-coupling** (files that historically change together — if your spec touches one, expect to touch the others):");
|
|
333
|
+
for (const [file, partners] of coChangeEntries.slice(0, 15)) {
|
|
334
|
+
const partnerStr = partners
|
|
335
|
+
.map((p) => `\`${p.file}\` (${Math.round(p.strength * 100)}%)`)
|
|
336
|
+
.join(", ");
|
|
337
|
+
lines.push(`- \`${file}\` → ${partnerStr}`);
|
|
338
|
+
}
|
|
339
|
+
lines.push("");
|
|
340
|
+
}
|
|
341
|
+
if (prEntries.length > 0) {
|
|
342
|
+
lines.push("**Recent PRs per file** (intent-shaped Keys: PR titles describe WHY, not WHAT — read these before proposing changes near the listed files):");
|
|
343
|
+
for (const [file, prs] of prEntries.slice(0, 15)) {
|
|
344
|
+
const prStr = prs
|
|
345
|
+
.slice(0, 3)
|
|
346
|
+
.map((p) => `#${p.number} ${p.title}${p.merged_at ? "" : " (open)"}`)
|
|
347
|
+
.join(" · ");
|
|
348
|
+
lines.push(`- \`${file}\` — ${prStr}`);
|
|
349
|
+
}
|
|
350
|
+
lines.push("");
|
|
351
|
+
}
|
|
352
|
+
if (corpus.length > 0) {
|
|
353
|
+
lines.push(`**Searchable PR + spec corpus** (${corpus.length} entries in \`pr_spec_corpus\` on disk). Each entry has tokens for cheap keyword retrieval — when the PM's issue mentions a concept, find the corpus entries whose tokens overlap before assuming the concept is new.`);
|
|
354
|
+
lines.push("");
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
184
358
|
lines.push("### Brownfield-conflict Q&A discipline");
|
|
185
359
|
lines.push("Before emitting the spec, scan the new requirements against this index. If ANY of these conflicts exist, ask the PM in your Q&A round:");
|
|
186
360
|
lines.push("- A required component name matches an existing component but with INCOMPATIBLE prop shape → ask: \"Component X exists with props {Y}; new spec implies props {Z}. Extend (back-compat) or replace (breaks tests covering it)?\"");
|
|
@@ -267,4 +441,244 @@ function readActiveSpecsSummary(repoRoot) {
|
|
|
267
441
|
return [];
|
|
268
442
|
}
|
|
269
443
|
}
|
|
444
|
+
/**
|
|
445
|
+
* α.61 — surface a digest of NestJS/TypeORM backend shape so refine
|
|
446
|
+
* doesn't hallucinate routes, DTO field names, and enum values on
|
|
447
|
+
* monorepo consumers that use this stack.
|
|
448
|
+
*
|
|
449
|
+
* Scans (best-effort, all paths optional):
|
|
450
|
+
* - packages/(any)/entities/X.entity.ts for TypeORM entity classes
|
|
451
|
+
* (extracts class name + each Column/OneToMany/ManyToOne field)
|
|
452
|
+
* - apps/(any)/src/modules/(any)/X.controller.ts for HTTP controllers
|
|
453
|
+
* (extracts class + each Get/Post/Put/Delete/Patch handler)
|
|
454
|
+
* - packages/enums/src/X.enum.ts for enum values
|
|
455
|
+
*
|
|
456
|
+
* Returns null when none of these directories exist (greenfield or
|
|
457
|
+
* non-NestJS repo) so the function stays a no-op for other stacks.
|
|
458
|
+
*
|
|
459
|
+
* Truncation: per-entity column list capped at 20; per-controller
|
|
460
|
+
* route list capped at 15; enum values capped at 20. The full files
|
|
461
|
+
* are on disk for testgen / brew if more detail needed.
|
|
462
|
+
*
|
|
463
|
+
* NOT a replacement for `readEntitiesDigest` (which targets the
|
|
464
|
+
* supabase-style structure `slowcook init entities` emits) — both
|
|
465
|
+
* fire side-by-side; one is null on stacks that aren't its target.
|
|
466
|
+
*/
|
|
467
|
+
export function readNestJsBackendDigest(repoRoot) {
|
|
468
|
+
const lines = [];
|
|
469
|
+
const entityFiles = findFilesByGlob(repoRoot, /\/entities\/[^/]+\.entity\.ts$/);
|
|
470
|
+
const controllerFiles = findFilesByGlob(repoRoot, /\/(modules|controllers)\/[^/]+\/[^/]+\.controller\.ts$/);
|
|
471
|
+
const enumFiles = existsSync(join(repoRoot, "packages/enums/src"))
|
|
472
|
+
? readdirSync(join(repoRoot, "packages/enums/src")).filter((f) => f.endsWith(".enum.ts")).map((f) => `packages/enums/src/${f}`)
|
|
473
|
+
: [];
|
|
474
|
+
if (entityFiles.length === 0 && controllerFiles.length === 0 && enumFiles.length === 0)
|
|
475
|
+
return null;
|
|
476
|
+
lines.push("## Backend shape (NestJS/TypeORM — α.61)");
|
|
477
|
+
lines.push("");
|
|
478
|
+
lines.push("These are the **actual** entity columns, controller routes, and enum values present in the consumer's backend. " +
|
|
479
|
+
"When the spec references a backend route or field name, it MUST use names from this list — do NOT invent paths " +
|
|
480
|
+
"like `/api/v1/...` or field aliases like `topic` when the entity column is `title`. If a needed field is absent, " +
|
|
481
|
+
"explicitly emit a `database_migrations:` section in the spec listing the SQL DDL changes required.");
|
|
482
|
+
lines.push("");
|
|
483
|
+
if (entityFiles.length > 0) {
|
|
484
|
+
lines.push("### TypeORM entities");
|
|
485
|
+
for (const rel of entityFiles.slice(0, 25)) {
|
|
486
|
+
const body = safeRead(repoRoot, rel);
|
|
487
|
+
if (!body)
|
|
488
|
+
continue;
|
|
489
|
+
const classMatch = body.match(/export class (\w+) extends BaseEntity/) ?? body.match(/export class (\w+)/);
|
|
490
|
+
if (!classMatch)
|
|
491
|
+
continue;
|
|
492
|
+
const className = classMatch[1];
|
|
493
|
+
const cols = extractTypeOrmColumns(body).slice(0, 20);
|
|
494
|
+
lines.push(`- **${className}** (\`${rel}\`)`);
|
|
495
|
+
for (const col of cols)
|
|
496
|
+
lines.push(` - ${col}`);
|
|
497
|
+
}
|
|
498
|
+
if (entityFiles.length > 25)
|
|
499
|
+
lines.push(`- … ${entityFiles.length - 25} more entity files`);
|
|
500
|
+
lines.push("");
|
|
501
|
+
}
|
|
502
|
+
if (controllerFiles.length > 0) {
|
|
503
|
+
lines.push("### HTTP controllers + routes");
|
|
504
|
+
for (const rel of controllerFiles.slice(0, 25)) {
|
|
505
|
+
const body = safeRead(repoRoot, rel);
|
|
506
|
+
if (!body)
|
|
507
|
+
continue;
|
|
508
|
+
const controllerMatch = body.match(/@Controller\(['"]([^'"]*)['"]\)/);
|
|
509
|
+
const base = controllerMatch ? controllerMatch[1] : "";
|
|
510
|
+
const allRoutes = extractNestRoutes(body);
|
|
511
|
+
const routes = allRoutes.slice(0, 40);
|
|
512
|
+
if (routes.length === 0)
|
|
513
|
+
continue;
|
|
514
|
+
lines.push(`- \`${rel}\` (base: \`/${base}\`)`);
|
|
515
|
+
for (const r of routes)
|
|
516
|
+
lines.push(` - \`${r.method} /${joinPath(base, r.path)}\` → \`${r.handler}\``);
|
|
517
|
+
if (allRoutes.length > 40)
|
|
518
|
+
lines.push(` - … ${allRoutes.length - 40} more routes in this file`);
|
|
519
|
+
}
|
|
520
|
+
if (controllerFiles.length > 25)
|
|
521
|
+
lines.push(`- … ${controllerFiles.length - 25} more controller files`);
|
|
522
|
+
lines.push("");
|
|
523
|
+
}
|
|
524
|
+
if (enumFiles.length > 0) {
|
|
525
|
+
lines.push("### Enums (`packages/enums/src/`)");
|
|
526
|
+
for (const rel of enumFiles.slice(0, 30)) {
|
|
527
|
+
const body = safeRead(repoRoot, rel);
|
|
528
|
+
if (!body)
|
|
529
|
+
continue;
|
|
530
|
+
const enumMatch = body.match(/export enum (\w+) \{([\s\S]*?)\}/);
|
|
531
|
+
if (!enumMatch)
|
|
532
|
+
continue;
|
|
533
|
+
const enumName = enumMatch[1];
|
|
534
|
+
const values = (enumMatch[2] ?? "")
|
|
535
|
+
.split(",")
|
|
536
|
+
.map((v) => v.trim().split("=")[0].trim().replace(/['"\s/*]/g, ""))
|
|
537
|
+
.filter((v) => v && /^[A-Z_]+$/.test(v))
|
|
538
|
+
.slice(0, 20);
|
|
539
|
+
if (values.length === 0)
|
|
540
|
+
continue;
|
|
541
|
+
lines.push(`- **${enumName}**: ${values.join(" · ")}`);
|
|
542
|
+
}
|
|
543
|
+
if (enumFiles.length > 30)
|
|
544
|
+
lines.push(`- … ${enumFiles.length - 30} more enum files`);
|
|
545
|
+
lines.push("");
|
|
546
|
+
}
|
|
547
|
+
return lines.join("\n");
|
|
548
|
+
}
|
|
549
|
+
function findFilesByGlob(repoRoot, pattern) {
|
|
550
|
+
const out = [];
|
|
551
|
+
const skipDirs = new Set(["node_modules", ".git", ".next", "dist", "build", ".turbo", "coverage"]);
|
|
552
|
+
const walk = (dir, depthRemaining) => {
|
|
553
|
+
if (depthRemaining < 0)
|
|
554
|
+
return;
|
|
555
|
+
let entries = [];
|
|
556
|
+
try {
|
|
557
|
+
entries = readdirSync(dir);
|
|
558
|
+
}
|
|
559
|
+
catch {
|
|
560
|
+
return;
|
|
561
|
+
}
|
|
562
|
+
for (const name of entries) {
|
|
563
|
+
if (skipDirs.has(name))
|
|
564
|
+
continue;
|
|
565
|
+
const abs = join(dir, name);
|
|
566
|
+
let st;
|
|
567
|
+
try {
|
|
568
|
+
st = statSync(abs);
|
|
569
|
+
}
|
|
570
|
+
catch {
|
|
571
|
+
continue;
|
|
572
|
+
}
|
|
573
|
+
if (st.isDirectory())
|
|
574
|
+
walk(abs, depthRemaining - 1);
|
|
575
|
+
else {
|
|
576
|
+
const rel = abs.slice(repoRoot.length + 1);
|
|
577
|
+
if (pattern.test(rel))
|
|
578
|
+
out.push(rel);
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
};
|
|
582
|
+
walk(repoRoot, 6); // depth 6 covers most monorepo layouts (packages/X/src/entities/foo.entity.ts)
|
|
583
|
+
return out;
|
|
584
|
+
}
|
|
585
|
+
function safeRead(repoRoot, rel) {
|
|
586
|
+
try {
|
|
587
|
+
return readFileSync(join(repoRoot, rel), "utf8");
|
|
588
|
+
}
|
|
589
|
+
catch {
|
|
590
|
+
return null;
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
function extractTypeOrmColumns(body) {
|
|
594
|
+
// Pull `public foo: Type` lines (the actual field declarations, NOT the
|
|
595
|
+
// decorator-config object lines that also look like `type: 'uuid'`).
|
|
596
|
+
// Strategy: regex for ANY line starting with optional whitespace + access
|
|
597
|
+
// modifier (public|private|readonly) + identifier + `:` + type expression
|
|
598
|
+
// ending at `;`. Skip plain `key: value` lines (those are decorator config).
|
|
599
|
+
const lines = body.split("\n");
|
|
600
|
+
const out = [];
|
|
601
|
+
const fieldRe = /^\s*(?:public|private|readonly|protected)\s+(\w+)(\?)?\s*:\s*([^;]+);/;
|
|
602
|
+
for (const l of lines) {
|
|
603
|
+
const m = l.match(fieldRe);
|
|
604
|
+
if (!m)
|
|
605
|
+
continue;
|
|
606
|
+
const name = m[1];
|
|
607
|
+
const optional = m[2] ? "?" : "";
|
|
608
|
+
const type = (m[3] ?? "").trim().replace(/\s+/g, " ");
|
|
609
|
+
out.push(`${name}${optional}: ${type}`);
|
|
610
|
+
}
|
|
611
|
+
return [...new Set(out)];
|
|
612
|
+
}
|
|
613
|
+
function extractNestRoutes(body) {
|
|
614
|
+
// Find each HTTP-verb decorator and walk forward through intervening
|
|
615
|
+
// decorators (which may span multiple lines, e.g. @ApiOperation({…})
|
|
616
|
+
// with the body on lines 2..N) until we find the actual method
|
|
617
|
+
// signature `(public|private|async)? handler(...)`.
|
|
618
|
+
//
|
|
619
|
+
// Strategy: from the @Verb line, scan up to 60 lines forward, trying
|
|
620
|
+
// the handler regex on each. Skip lines that are inside an unclosed
|
|
621
|
+
// decorator parenthesis. Stop early on next @Get/Post/Put/Delete/Patch
|
|
622
|
+
// (we missed the handler somehow).
|
|
623
|
+
const lines = body.split("\n");
|
|
624
|
+
const out = [];
|
|
625
|
+
const httpVerbRe = /^\s*@(Get|Post|Put|Delete|Patch)\(([^)]*)\)/;
|
|
626
|
+
const nextHttpVerbRe = /^\s*@(Get|Post|Put|Delete|Patch)\(/;
|
|
627
|
+
const handlerRe = /^\s*(?:public|private|protected)?\s*(?:async\s+)?(\w+)\s*\(/;
|
|
628
|
+
for (let i = 0; i < lines.length; i++) {
|
|
629
|
+
const m = (lines[i] ?? "").match(httpVerbRe);
|
|
630
|
+
if (!m)
|
|
631
|
+
continue;
|
|
632
|
+
const method = m[1].toUpperCase();
|
|
633
|
+
const rawPath = (m[2] ?? "").trim().replace(/^['"`]|['"`]$/g, "");
|
|
634
|
+
let parenDepth = 0;
|
|
635
|
+
let handler = "?";
|
|
636
|
+
for (let j = i + 1; j < Math.min(i + 60, lines.length); j++) {
|
|
637
|
+
const ln = lines[j] ?? "";
|
|
638
|
+
// Hard stop: another HTTP verb at the same indent level — we've
|
|
639
|
+
// passed our handler without finding it; this happens on malformed
|
|
640
|
+
// controllers.
|
|
641
|
+
if (parenDepth === 0 && nextHttpVerbRe.test(ln))
|
|
642
|
+
break;
|
|
643
|
+
// Track paren depth so multi-line decorator bodies don't get
|
|
644
|
+
// accidentally treated as the handler signature.
|
|
645
|
+
for (const ch of ln) {
|
|
646
|
+
if (ch === "(")
|
|
647
|
+
parenDepth++;
|
|
648
|
+
else if (ch === ")")
|
|
649
|
+
parenDepth = Math.max(0, parenDepth - 1);
|
|
650
|
+
}
|
|
651
|
+
// Skip lines that are starting a new decorator (handler is below)
|
|
652
|
+
if (/^\s*@\w+/.test(ln))
|
|
653
|
+
continue;
|
|
654
|
+
// Skip blank lines
|
|
655
|
+
if (/^\s*$/.test(ln))
|
|
656
|
+
continue;
|
|
657
|
+
// Only consider potential handler line when we're not inside an
|
|
658
|
+
// unclosed decorator paren (parenDepth being 0 at line start means
|
|
659
|
+
// any prior decorator closed last line).
|
|
660
|
+
const handlerMatch = ln.match(handlerRe);
|
|
661
|
+
if (handlerMatch) {
|
|
662
|
+
const word = handlerMatch[1];
|
|
663
|
+
// Filter out anything starting with an uppercase (likely a type
|
|
664
|
+
// ref) or one of a known reserved-word set.
|
|
665
|
+
if (word === "if" || word === "switch" || word === "while" || word === "for" || /^[A-Z]/.test(word))
|
|
666
|
+
continue;
|
|
667
|
+
handler = word;
|
|
668
|
+
break;
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
out.push({ method, path: rawPath, handler });
|
|
672
|
+
}
|
|
673
|
+
return out;
|
|
674
|
+
}
|
|
675
|
+
function joinPath(base, sub) {
|
|
676
|
+
const b = base.replace(/^\/|\/$/g, "");
|
|
677
|
+
const s = sub.replace(/^\/|\/$/g, "");
|
|
678
|
+
if (!b)
|
|
679
|
+
return s;
|
|
680
|
+
if (!s)
|
|
681
|
+
return b;
|
|
682
|
+
return `${b}/${s}`;
|
|
683
|
+
}
|
|
270
684
|
//# sourceMappingURL=context.js.map
|
|
@@ -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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"}
|