@slowcook-ai/cli 0.19.0-alpha.16 → 0.19.0-alpha.18

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 (38) hide show
  1. package/AGENTS.md +2 -1
  2. package/dist/cli.js +9 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/eval/index.d.ts +54 -0
  5. package/dist/commands/eval/index.d.ts.map +1 -0
  6. package/dist/commands/eval/index.js +269 -0
  7. package/dist/commands/eval/index.js.map +1 -0
  8. package/dist/commands/extract/index.d.ts.map +1 -1
  9. package/dist/commands/extract/index.js +23 -1
  10. package/dist/commands/extract/index.js.map +1 -1
  11. package/dist/commands/init/plan.d.ts +26 -1
  12. package/dist/commands/init/plan.d.ts.map +1 -1
  13. package/dist/commands/init/plan.js +41 -3
  14. package/dist/commands/init/plan.js.map +1 -1
  15. package/dist/commands/init/templates.d.ts.map +1 -1
  16. package/dist/commands/init/templates.js +12 -4
  17. package/dist/commands/init/templates.js.map +1 -1
  18. package/dist/commands/map/emit-typeorm.d.ts +117 -0
  19. package/dist/commands/map/emit-typeorm.d.ts.map +1 -0
  20. package/dist/commands/map/emit-typeorm.js +341 -0
  21. package/dist/commands/map/emit-typeorm.js.map +1 -0
  22. package/dist/commands/map/index.d.ts +18 -0
  23. package/dist/commands/map/index.d.ts.map +1 -1
  24. package/dist/commands/map/index.js +28 -0
  25. package/dist/commands/map/index.js.map +1 -1
  26. package/dist/commands/recon/index.d.ts +1 -1
  27. package/dist/commands/recon/index.d.ts.map +1 -1
  28. package/dist/commands/recon/index.js +26 -0
  29. package/dist/commands/recon/index.js.map +1 -1
  30. package/dist/commands/recon/migration-gate.d.ts +59 -0
  31. package/dist/commands/recon/migration-gate.d.ts.map +1 -0
  32. package/dist/commands/recon/migration-gate.js +131 -0
  33. package/dist/commands/recon/migration-gate.js.map +1 -0
  34. package/dist/commands/refine/history-index.d.ts +30 -0
  35. package/dist/commands/refine/history-index.d.ts.map +1 -1
  36. package/dist/commands/refine/history-index.js +132 -8
  37. package/dist/commands/refine/history-index.js.map +1 -1
  38. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/commands/init/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/commands/init/plan.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/commands/init/templates.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,yBAAyB,UAAU,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,kCAAkC,CAAC;AAEzE,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEjE;AAaD,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,gCAAgC,0CAA0C,CAAC;AACxF,eAAO,MAAM,8BAA8B,wCAAwC,CAAC;AAMpF,eAAO,MAAM,+BAA+B,2CAA2C,CAAC;AACxF,eAAO,MAAM,6BAA6B,yCAAyC,CAAC;AAEpF,wBAAgB,eAAe,IAAI,MAAM,CAoCxC;AAGD,wBAAgB,iBAAiB,IAAI,MAAM,CAmD1C;AAED,wBAAgB,aAAa,IAAI,MAAM,CA0CtC;AAGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAehE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAQjE;AAED,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,IAAI,MAAM,CA2CtC;AAED;;;;;;GAMG;AACH;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAsDvC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAgBzC"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/commands/init/templates.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,yBAAyB,UAAU,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,kCAAkC,CAAC;AAEzE,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEjE;AAaD,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,gCAAgC,0CAA0C,CAAC;AACxF,eAAO,MAAM,8BAA8B,wCAAwC,CAAC;AAMpF,eAAO,MAAM,+BAA+B,2CAA2C,CAAC;AACxF,eAAO,MAAM,6BAA6B,yCAAyC,CAAC;AAEpF,wBAAgB,eAAe,IAAI,MAAM,CAoCxC;AAGD,wBAAgB,iBAAiB,IAAI,MAAM,CAmD1C;AAED,wBAAgB,aAAa,IAAI,MAAM,CA0CtC;AAGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAehE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAQjE;AAED,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,IAAI,MAAM,CA2CtC;AAED;;;;;;GAMG;AACH;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAsDvC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAwBzC"}
@@ -320,10 +320,18 @@ export function gitignoreSection() {
320
320
  .brewing/code-map.json
321
321
  .brewing/code-map.md
322
322
  .brewing/code-map.target.md
323
- # 0.13.5+ — brownfield extracts (schema.mmd, tokens.md). Same
324
- # rationale: regenerated each refine/investigate workflow run via
325
- # \`slowcook extract\`. Live as derived state, not in source control.
326
- .brewing/diagrams/
323
+ # 0.13.5+ — brownfield extracts under .brewing/diagrams/. Ephemeral
324
+ # files (schema.mmd, tokens.md) are regenerated each refine/investigate
325
+ # workflow run via \`slowcook extract\` and SHOULD NOT be committed.
326
+ # Hand-curated artifacts (entities.md, architecture.md, etc.) are
327
+ # source-of-truth and SHOULD be tracked — \`!\` exceptions below
328
+ # whitelist them. The \`/*\` form (vs trailing slash) is required for
329
+ # the !-overrides to take effect.
330
+ .brewing/diagrams/*
331
+ !.brewing/diagrams/entities.md
332
+ !.brewing/diagrams/architecture.md
333
+ !.brewing/diagrams/sequence-*.md
334
+ !.brewing/diagrams/.gitkeep
327
335
  ${SLOWCOOK_GITIGNORE_MARKER_END}
328
336
  `;
329
337
  }
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/commands/init/templates.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sDAAsD;AAEtD,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAAC;AAEjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,+BAA+B,CAAC;AAEzE,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,OAAO,UAAU,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG;;;0HAGiG,CAAC;AAS3H,MAAM,CAAC,MAAM,gCAAgC,GAAG,uCAAuC,CAAC;AACxF,MAAM,CAAC,MAAM,8BAA8B,GAAG,qCAAqC,CAAC;AAEpF,sEAAsE;AACtE,oEAAoE;AACpE,mEAAmE;AACnE,0CAA0C;AAC1C,MAAM,CAAC,MAAM,+BAA+B,GAAG,wCAAwC,CAAC;AACxF,MAAM,CAAC,MAAM,6BAA6B,GAAG,sCAAsC,CAAC;AAEpF,MAAM,UAAU,eAAe;IAC7B,OAAO,CACL,IAAI,CAAC,SAAS,CACZ;QACE,OAAO,EAAE,4BAA4B;QACrC,IAAI,EACF,qFAAqF;YACrF,6FAA6F;YAC7F,iEAAiE;QACnE,WAAW,EAAE;YACX,QAAQ;YACR,iBAAiB;YACjB,gBAAgB;YAChB,qBAAqB;SACtB;QACD,KAAK,EAAE;YACL,kBAAkB;YAClB,mBAAmB;YACnB,kBAAkB;YAClB,4BAA4B;YAC5B,qBAAqB;YACrB,qBAAqB;YACrB,gCAAgC;YAChC,4CAA4C;YAC5C,wCAAwC;SACzC;QACD,OAAO,EAAE;YACP,cAAc,EAAE;gBACd,gBAAgB,EAAE,CAAC,cAAc,EAAE,oBAAoB,CAAC;aACzD;SACF;KACF,EACD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI,CACT,CAAC;AACJ,CAAC;AAGD,MAAM,UAAU,iBAAiB;IAC/B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCR,CAAC;AACF,CAAC;AAGD,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACtD,OAAO,GAAG,gCAAgC;;;;kCAIV,MAAM,CAAC,KAAK;kCACZ,MAAM,CAAC,KAAK;kCACZ,MAAM,CAAC,KAAK;kCACZ,MAAM,CAAC,KAAK;8CACA,MAAM,CAAC,KAAK;8CACZ,MAAM,CAAC,KAAK;8CACZ,MAAM,CAAC,KAAK;8CACZ,MAAM,CAAC,KAAK;EACxD,8BAA8B;CAC/B,CAAC;AACF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,qEAAqE;IACrE,OAAO;;;;;EAKP,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCR,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACH;;;;;;GAMG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,GAAG,+BAA+B;;;;;;;;;;;;;EAazC,6BAA6B;CAC9B,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/commands/init/templates.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sDAAsD;AAEtD,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAAC;AAEjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,+BAA+B,CAAC;AAEzE,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,OAAO,UAAU,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG;;;0HAGiG,CAAC;AAS3H,MAAM,CAAC,MAAM,gCAAgC,GAAG,uCAAuC,CAAC;AACxF,MAAM,CAAC,MAAM,8BAA8B,GAAG,qCAAqC,CAAC;AAEpF,sEAAsE;AACtE,oEAAoE;AACpE,mEAAmE;AACnE,0CAA0C;AAC1C,MAAM,CAAC,MAAM,+BAA+B,GAAG,wCAAwC,CAAC;AACxF,MAAM,CAAC,MAAM,6BAA6B,GAAG,sCAAsC,CAAC;AAEpF,MAAM,UAAU,eAAe;IAC7B,OAAO,CACL,IAAI,CAAC,SAAS,CACZ;QACE,OAAO,EAAE,4BAA4B;QACrC,IAAI,EACF,qFAAqF;YACrF,6FAA6F;YAC7F,iEAAiE;QACnE,WAAW,EAAE;YACX,QAAQ;YACR,iBAAiB;YACjB,gBAAgB;YAChB,qBAAqB;SACtB;QACD,KAAK,EAAE;YACL,kBAAkB;YAClB,mBAAmB;YACnB,kBAAkB;YAClB,4BAA4B;YAC5B,qBAAqB;YACrB,qBAAqB;YACrB,gCAAgC;YAChC,4CAA4C;YAC5C,wCAAwC;SACzC;QACD,OAAO,EAAE;YACP,cAAc,EAAE;gBACd,gBAAgB,EAAE,CAAC,cAAc,EAAE,oBAAoB,CAAC;aACzD;SACF;KACF,EACD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI,CACT,CAAC;AACJ,CAAC;AAGD,MAAM,UAAU,iBAAiB;IAC/B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCR,CAAC;AACF,CAAC;AAGD,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACtD,OAAO,GAAG,gCAAgC;;;;kCAIV,MAAM,CAAC,KAAK;kCACZ,MAAM,CAAC,KAAK;kCACZ,MAAM,CAAC,KAAK;kCACZ,MAAM,CAAC,KAAK;8CACA,MAAM,CAAC,KAAK;8CACZ,MAAM,CAAC,KAAK;8CACZ,MAAM,CAAC,KAAK;8CACZ,MAAM,CAAC,KAAK;EACxD,8BAA8B;CAC/B,CAAC;AACF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,qEAAqE;IACrE,OAAO;;;;;EAKP,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCR,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACH;;;;;;GAMG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,GAAG,+BAA+B;;;;;;;;;;;;;;;;;;;;;EAqBzC,6BAA6B;CAC9B,CAAC;AACF,CAAC"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * 0.19.0+ (slowcook#36) — TypeORM entity-graph extractor. Walks all
3
+ * `**\/*.entity.ts` files containing `@Entity(...)` decorators and emits
4
+ * a Mermaid ERD + per-entity summary table to
5
+ * `.brewing/diagrams/entities.md`.
6
+ *
7
+ * Why: slowcook's existing `emitSchemaDiagram` only knows about
8
+ * `supabase/migrations/*.sql`. Consumers on TypeORM (delgoosh, plus
9
+ * any NestJS monorepo) get nothing from the brownfield-extract step,
10
+ * leaving their slowcook agents (vibe / recipe / brew / chef /
11
+ * investigate) without entity grounding. Hand-curated entities.md
12
+ * is the workaround — this module replaces it with auto-extraction.
13
+ *
14
+ * Detection signal: any `*.entity.ts` file with `@Entity(` decorator.
15
+ * (Skips `node_modules`, `dist`, `.next`, `coverage`.)
16
+ *
17
+ * Parser is regex-based — TypeORM decorators have a strict shape
18
+ * across the ecosystem. Same approach as `ddlToMermaidErd` in
19
+ * refine/mermaid.ts; no AST tooling needed.
20
+ */
21
+ export interface TypeOrmColumn {
22
+ /** TS property name (camelCase). */
23
+ property: string;
24
+ /** SQL column name (snake_case, from `@Column({ name: 'snake_case' })`). */
25
+ columnName?: string;
26
+ /** TypeORM column type ('uuid', 'text', 'enum', 'jsonb', etc.). */
27
+ columnType?: string;
28
+ /** Whether the column is nullable. */
29
+ nullable?: boolean;
30
+ /** TS type from the property declaration (for context). */
31
+ tsType?: string;
32
+ /** JSDoc COLUMN-DESCRIPTION text, if present. */
33
+ description?: string;
34
+ }
35
+ export interface TypeOrmRelation {
36
+ /** TS property name on the entity. */
37
+ property: string;
38
+ /** Relation kind. */
39
+ kind: "ManyToOne" | "OneToOne" | "OneToMany" | "ManyToMany";
40
+ /** Target entity class name (the `() => User` part). */
41
+ target: string;
42
+ /** Optional foreign-key column name from @JoinColumn. */
43
+ joinColumn?: string;
44
+ }
45
+ export interface TypeOrmEntity {
46
+ /** Class name (PascalCase). */
47
+ className: string;
48
+ /** SQL table name from `@Entity('table_name')`. Falls back to class name in snake_case if missing. */
49
+ tableName: string;
50
+ /** Whether the class `extends BaseEntity`. */
51
+ extendsBaseEntity: boolean;
52
+ /** Repo-relative path to the source file. */
53
+ sourcePath: string;
54
+ /** JSDoc TABLE-DESCRIPTION text, if present. */
55
+ description?: string;
56
+ columns: TypeOrmColumn[];
57
+ relations: TypeOrmRelation[];
58
+ }
59
+ /**
60
+ * Recursive walk under `root` collecting absolute file paths matching
61
+ * the predicate. Skips EXCLUDED_DIRS at any depth.
62
+ */
63
+ declare function walk(root: string, predicate: (path: string) => boolean): string[];
64
+ /**
65
+ * Find all `*.entity.ts` files under `repoRoot` whose content contains
66
+ * an `@Entity(` decorator. Returns paths sorted alphabetically for
67
+ * deterministic output.
68
+ */
69
+ export declare function findEntityFiles(repoRoot: string): string[];
70
+ /**
71
+ * Parse one TypeORM entity source file. Returns null if no `@Entity`
72
+ * decorator is found (defense-in-depth — findEntityFiles already
73
+ * filtered).
74
+ */
75
+ export declare function parseEntityFile(source: string, sourcePath: string): TypeOrmEntity | null;
76
+ /**
77
+ * Render one Mermaid `erDiagram` covering all entities + their
78
+ * relations. For very large graphs (>40 entities) the diagram is hard
79
+ * to read — but splitting by domain requires semantic knowledge we
80
+ * don't have. We render one big ERD; consumers can grep for entities
81
+ * they care about + use the per-entity table below for details.
82
+ */
83
+ export declare function entitiesToMermaidErd(entities: TypeOrmEntity[]): string;
84
+ /**
85
+ * Render the per-entity summary table for the entities.md artifact.
86
+ * Pairs with the Mermaid ERD above to give agents structured access
87
+ * to the entity vocabulary.
88
+ */
89
+ export declare function entitiesToSummaryTable(entities: TypeOrmEntity[]): string;
90
+ /**
91
+ * Full entities.md document body. Static header + conventions section
92
+ * (drawn from delgoosh dogfood — these are the same conventions every
93
+ * NestJS+TypeORM consumer follows) + the ERD + summary table.
94
+ */
95
+ export declare function renderEntitiesMarkdown(entities: TypeOrmEntity[]): string;
96
+ /**
97
+ * Public entry — walks the repo, parses entities, returns the rendered
98
+ * markdown body PLUS counts for the caller (which writes the file).
99
+ * Skipped silently if no .entity.ts files with @Entity are found —
100
+ * consumer probably uses Prisma / Drizzle / Supabase / raw SQL.
101
+ */
102
+ export declare function buildEntitiesArtifact(repoRoot: string): {
103
+ written: boolean;
104
+ body?: string;
105
+ entityCount?: number;
106
+ relationCount?: number;
107
+ fileCount?: number;
108
+ skippedReason?: string;
109
+ };
110
+ export declare const __testOnly__: {
111
+ parseEntityFile: typeof parseEntityFile;
112
+ walk: typeof walk;
113
+ entitiesToMermaidErd: typeof entitiesToMermaidErd;
114
+ entitiesToSummaryTable: typeof entitiesToSummaryTable;
115
+ };
116
+ export {};
117
+ //# sourceMappingURL=emit-typeorm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-typeorm.d.ts","sourceRoot":"","sources":["../../../src/commands/map/emit-typeorm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAgBH,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC;IAC5D,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,sGAAsG;IACtG,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED;;;GAGG;AACH,iBAAS,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,EAAE,CA4B1E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAY1D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,aAAa,GAAG,IAAI,CA4EtB;AAgBD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,CAuCtE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,CAwBxE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,CAwCxE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAmCA;AAGD,eAAO,MAAM,YAAY;;;;;CAKxB,CAAC"}
@@ -0,0 +1,341 @@
1
+ /**
2
+ * 0.19.0+ (slowcook#36) — TypeORM entity-graph extractor. Walks all
3
+ * `**\/*.entity.ts` files containing `@Entity(...)` decorators and emits
4
+ * a Mermaid ERD + per-entity summary table to
5
+ * `.brewing/diagrams/entities.md`.
6
+ *
7
+ * Why: slowcook's existing `emitSchemaDiagram` only knows about
8
+ * `supabase/migrations/*.sql`. Consumers on TypeORM (delgoosh, plus
9
+ * any NestJS monorepo) get nothing from the brownfield-extract step,
10
+ * leaving their slowcook agents (vibe / recipe / brew / chef /
11
+ * investigate) without entity grounding. Hand-curated entities.md
12
+ * is the workaround — this module replaces it with auto-extraction.
13
+ *
14
+ * Detection signal: any `*.entity.ts` file with `@Entity(` decorator.
15
+ * (Skips `node_modules`, `dist`, `.next`, `coverage`.)
16
+ *
17
+ * Parser is regex-based — TypeORM decorators have a strict shape
18
+ * across the ecosystem. Same approach as `ddlToMermaidErd` in
19
+ * refine/mermaid.ts; no AST tooling needed.
20
+ */
21
+ import { readdirSync, readFileSync, statSync } from "node:fs";
22
+ import { join, basename } from "node:path";
23
+ /** Skip these directories on the recursive walk. */
24
+ const EXCLUDED_DIRS = new Set([
25
+ "node_modules",
26
+ "dist",
27
+ ".next",
28
+ ".turbo",
29
+ "coverage",
30
+ ".git",
31
+ "build",
32
+ ]);
33
+ /**
34
+ * Recursive walk under `root` collecting absolute file paths matching
35
+ * the predicate. Skips EXCLUDED_DIRS at any depth.
36
+ */
37
+ function walk(root, predicate) {
38
+ const out = [];
39
+ const stack = [root];
40
+ while (stack.length > 0) {
41
+ const dir = stack.pop();
42
+ let entries;
43
+ try {
44
+ entries = readdirSync(dir);
45
+ }
46
+ catch {
47
+ continue;
48
+ }
49
+ for (const entry of entries) {
50
+ if (EXCLUDED_DIRS.has(entry))
51
+ continue;
52
+ const path = join(dir, entry);
53
+ let st;
54
+ try {
55
+ st = statSync(path);
56
+ }
57
+ catch {
58
+ continue;
59
+ }
60
+ if (st.isDirectory()) {
61
+ stack.push(path);
62
+ }
63
+ else if (st.isFile() && predicate(path)) {
64
+ out.push(path);
65
+ }
66
+ }
67
+ }
68
+ return out;
69
+ }
70
+ /**
71
+ * Find all `*.entity.ts` files under `repoRoot` whose content contains
72
+ * an `@Entity(` decorator. Returns paths sorted alphabetically for
73
+ * deterministic output.
74
+ */
75
+ export function findEntityFiles(repoRoot) {
76
+ const candidates = walk(repoRoot, (p) => p.endsWith(".entity.ts"));
77
+ const real = candidates.filter((p) => {
78
+ try {
79
+ const src = readFileSync(p, "utf8");
80
+ return /@Entity\s*\(/.test(src);
81
+ }
82
+ catch {
83
+ return false;
84
+ }
85
+ });
86
+ real.sort();
87
+ return real;
88
+ }
89
+ /**
90
+ * Parse one TypeORM entity source file. Returns null if no `@Entity`
91
+ * decorator is found (defense-in-depth — findEntityFiles already
92
+ * filtered).
93
+ */
94
+ export function parseEntityFile(source, sourcePath) {
95
+ // Class name + extends BaseEntity check.
96
+ const classMatch = source.match(/export\s+class\s+(\w+)(?:\s+extends\s+(\w+))?/);
97
+ if (!classMatch)
98
+ return null;
99
+ const className = classMatch[1];
100
+ const extendsBaseEntity = classMatch[2] === "BaseEntity";
101
+ // Table name from @Entity('snake_case_plural'). Fallback to className.
102
+ const entityMatch = source.match(/@Entity\s*\(\s*['"]([^'"]+)['"]\s*\)/);
103
+ const tableName = entityMatch?.[1] ??
104
+ className
105
+ .replace(/([a-z0-9])([A-Z])/g, "$1_$2")
106
+ .toLowerCase();
107
+ // JSDoc above the class (TABLE-DESCRIPTION: ...).
108
+ const tableDescMatch = source.match(/TABLE-DESCRIPTION:\s*([^\n*]+?)(?:\s*\*\/|\s*\n\s*\*\s*TABLE-)/);
109
+ const description = tableDescMatch?.[1]?.trim();
110
+ // Columns: @Column(...) followed by `[public ]<property>: <type>`.
111
+ // The decorator may span multiple lines; we capture the args block in
112
+ // a balanced way using a permissive `[^@]*?` lookahead — fine because
113
+ // the next `@` always opens the next decorator or the property.
114
+ const columns = [];
115
+ const columnRe = /@Column\s*\(\s*(\{[\s\S]*?\})\s*\)\s*(?:public\s+|readonly\s+)?(\w+)\s*[?!]?\s*:\s*([^;]+);/g;
116
+ let cm;
117
+ while ((cm = columnRe.exec(source)) !== null) {
118
+ const [, args, property, tsType] = cm;
119
+ columns.push({
120
+ property: property,
121
+ columnName: args.match(/name:\s*['"]([^'"]+)['"]/)?.[1],
122
+ columnType: args.match(/type:\s*['"]([^'"]+)['"]/)?.[1],
123
+ nullable: /nullable:\s*true/.test(args),
124
+ tsType: tsType.trim(),
125
+ });
126
+ }
127
+ // Also catch bare `@Column()` (no args) — TypeORM allows this.
128
+ const bareColumnRe = /@Column\s*\(\s*\)\s*(?:public\s+|readonly\s+)?(\w+)\s*[?!]?\s*:\s*([^;]+);/g;
129
+ while ((cm = bareColumnRe.exec(source)) !== null) {
130
+ const [, property, tsType] = cm;
131
+ columns.push({
132
+ property: property,
133
+ tsType: tsType.trim(),
134
+ });
135
+ }
136
+ // Relations: @ManyToOne / @OneToOne / @OneToMany / @ManyToMany.
137
+ const relations = [];
138
+ const relRe = /@(ManyToOne|OneToOne|OneToMany|ManyToMany)\s*\(\s*\(\)\s*=>\s*(\w+)[\s\S]*?\)\s*(?:@JoinColumn\s*\(\s*\{?\s*(?:name:\s*['"]([^'"]+)['"])?[^}]*\}?\s*\)\s*)?(?:public\s+|readonly\s+)?(\w+)/g;
139
+ let rm;
140
+ while ((rm = relRe.exec(source)) !== null) {
141
+ const [, kind, target, joinColumn, property] = rm;
142
+ relations.push({
143
+ property: property,
144
+ kind: kind,
145
+ target: target,
146
+ joinColumn,
147
+ });
148
+ }
149
+ return {
150
+ className,
151
+ tableName,
152
+ extendsBaseEntity,
153
+ sourcePath,
154
+ description,
155
+ columns,
156
+ relations,
157
+ };
158
+ }
159
+ /**
160
+ * Mermaid relation shape per TypeORM kind.
161
+ * ManyToOne N owners → 1 target → `}o--||`
162
+ * OneToOne 1 owner → 1 target → `||--o|`
163
+ * OneToMany 1 owner → 0..N targets → `||--o{`
164
+ * ManyToMany N owners → N targets → `}o--o{`
165
+ */
166
+ const RELATION_SHAPES = {
167
+ ManyToOne: "}o--||",
168
+ OneToOne: "||--o|",
169
+ OneToMany: "||--o{",
170
+ ManyToMany: "}o--o{",
171
+ };
172
+ /**
173
+ * Render one Mermaid `erDiagram` covering all entities + their
174
+ * relations. For very large graphs (>40 entities) the diagram is hard
175
+ * to read — but splitting by domain requires semantic knowledge we
176
+ * don't have. We render one big ERD; consumers can grep for entities
177
+ * they care about + use the per-entity table below for details.
178
+ */
179
+ export function entitiesToMermaidErd(entities) {
180
+ if (entities.length === 0) {
181
+ return "```mermaid\nerDiagram\n %% No @Entity decorators found.\n```";
182
+ }
183
+ const lines = ["```mermaid", "erDiagram"];
184
+ const known = new Set(entities.map((e) => e.className));
185
+ for (const e of entities) {
186
+ for (const r of e.relations) {
187
+ // Skip relations whose target isn't a known entity (e.g. enum types).
188
+ if (!known.has(r.target))
189
+ continue;
190
+ const label = r.property.replace(/"/g, "");
191
+ lines.push(` ${e.className} ${RELATION_SHAPES[r.kind]} ${r.target} : "${label}"`);
192
+ }
193
+ }
194
+ // Always render entity boxes even with no columns (helps when a
195
+ // class only has relations, e.g. junction tables).
196
+ for (const e of entities) {
197
+ lines.push(` ${e.className} {`);
198
+ // Show only NOTABLE columns: anything that looks like an FK or
199
+ // status enum or has a tableName (the rest belong in the per-
200
+ // entity table below). Cap at 6 to keep diagram readable.
201
+ const notable = e.columns
202
+ .filter((c) => c.columnName?.endsWith("_id") || c.columnType === "enum")
203
+ .slice(0, 6);
204
+ if (notable.length === 0) {
205
+ // Show the first ~3 columns so the box isn't empty.
206
+ for (const c of e.columns.slice(0, 3)) {
207
+ lines.push(` ${c.columnType ?? "any"} ${c.columnName ?? c.property}`);
208
+ }
209
+ }
210
+ else {
211
+ for (const c of notable) {
212
+ const t = c.columnType ?? "any";
213
+ lines.push(` ${t} ${c.columnName ?? c.property}`);
214
+ }
215
+ }
216
+ lines.push(` }`);
217
+ }
218
+ lines.push("```");
219
+ return lines.join("\n");
220
+ }
221
+ /**
222
+ * Render the per-entity summary table for the entities.md artifact.
223
+ * Pairs with the Mermaid ERD above to give agents structured access
224
+ * to the entity vocabulary.
225
+ */
226
+ export function entitiesToSummaryTable(entities) {
227
+ const lines = [];
228
+ lines.push("| Entity | Table | Purpose | Key relations | Notable columns |");
229
+ lines.push("|---|---|---|---|---|");
230
+ for (const e of entities) {
231
+ const purpose = (e.description ?? "—").replace(/\|/g, "\\|");
232
+ const relations = e.relations
233
+ .slice(0, 4)
234
+ .map((r) => `${r.kind} ${r.target}`)
235
+ .join("; ") || "—";
236
+ const notableCols = e.columns
237
+ .filter((c) => c.columnName?.endsWith("_id") || c.columnType === "enum")
238
+ .slice(0, 5)
239
+ .map((c) => c.columnName ?? c.property)
240
+ .join(", ") || "—";
241
+ lines.push(`| ${e.className} | \`${e.tableName}\` | ${purpose} | ${relations} | ${notableCols} |`);
242
+ }
243
+ return lines.join("\n");
244
+ }
245
+ /**
246
+ * Full entities.md document body. Static header + conventions section
247
+ * (drawn from delgoosh dogfood — these are the same conventions every
248
+ * NestJS+TypeORM consumer follows) + the ERD + summary table.
249
+ */
250
+ export function renderEntitiesMarkdown(entities) {
251
+ const baseEntityHits = entities.filter((e) => e.extendsBaseEntity).length;
252
+ const baseEntityHint = baseEntityHits > 0
253
+ ? `${baseEntityHits} of ${entities.length} entities \`extend BaseEntity\` — assume the same UUID-id + soft-delete pattern when adding new entities.`
254
+ : "No `BaseEntity` parent class detected — entities define their own primary keys.";
255
+ return `# Entity graph (auto-generated by \`slowcook extract --entities\`)
256
+
257
+ > **Auto-generated; do not hand-edit.** Regenerate by running \`slowcook extract --entities\`.
258
+ > Source: \`*.entity.ts\` files containing an \`@Entity(\` decorator.
259
+
260
+ This artifact is consumed by slowcook agents (vibe / recipe / brew / chef / investigate) to ground their work in the existing entity vocabulary. Without it agents hallucinate table shapes and column names.
261
+
262
+ ## Quick stats
263
+
264
+ - **${entities.length} entities** discovered
265
+ - **${entities.reduce((n, e) => n + e.relations.length, 0)} relations** declared
266
+ - ${baseEntityHint}
267
+
268
+ ## Conventions (inferred from the codebase)
269
+
270
+ - Tables follow snake_case_plural (e.g. \`@Entity('patients')\`).
271
+ - TS properties are camelCase; SQL columns are snake_case via \`@Column({ name: 'snake_case' })\`.
272
+ - Foreign keys follow the \`<foreign_table_singular>_id\` pattern.
273
+ - Enum columns reference \`@Column({ type: 'enum', enum: <EnumFromRepoEnums> })\`.
274
+ - Relations are declared via \`@ManyToOne\` / \`@OneToOne\` / \`@OneToMany\` / \`@ManyToMany\` + \`@JoinColumn\`.
275
+
276
+ ## Entity-relationship diagram
277
+
278
+ ${entitiesToMermaidErd(entities)}
279
+
280
+ ## Per-entity summary
281
+
282
+ ${entitiesToSummaryTable(entities)}
283
+
284
+ ## Source paths
285
+
286
+ ${entities.map((e) => `- \`${e.sourcePath}\` — \`${e.className}\``).join("\n")}
287
+ `;
288
+ }
289
+ /**
290
+ * Public entry — walks the repo, parses entities, returns the rendered
291
+ * markdown body PLUS counts for the caller (which writes the file).
292
+ * Skipped silently if no .entity.ts files with @Entity are found —
293
+ * consumer probably uses Prisma / Drizzle / Supabase / raw SQL.
294
+ */
295
+ export function buildEntitiesArtifact(repoRoot) {
296
+ const files = findEntityFiles(repoRoot);
297
+ if (files.length === 0) {
298
+ return {
299
+ written: false,
300
+ skippedReason: "no `*.entity.ts` files with `@Entity(...)` decorator found (TypeORM signal absent)",
301
+ };
302
+ }
303
+ const entities = [];
304
+ for (const f of files) {
305
+ try {
306
+ const src = readFileSync(f, "utf8");
307
+ const repoRelative = f.startsWith(repoRoot)
308
+ ? f.slice(repoRoot.length + 1)
309
+ : f;
310
+ const e = parseEntityFile(src, repoRelative);
311
+ if (e)
312
+ entities.push(e);
313
+ }
314
+ catch {
315
+ // Skip unreadable files silently.
316
+ }
317
+ }
318
+ if (entities.length === 0) {
319
+ return {
320
+ written: false,
321
+ skippedReason: `${files.length} candidate file(s) found but none parsed cleanly`,
322
+ };
323
+ }
324
+ return {
325
+ written: true,
326
+ body: renderEntitiesMarkdown(entities),
327
+ entityCount: entities.length,
328
+ relationCount: entities.reduce((n, e) => n + e.relations.length, 0),
329
+ fileCount: files.length,
330
+ };
331
+ }
332
+ // Test-only helper. Avoids exporting internals to the public surface.
333
+ export const __testOnly__ = {
334
+ parseEntityFile,
335
+ walk,
336
+ entitiesToMermaidErd,
337
+ entitiesToSummaryTable,
338
+ };
339
+ // Avoid unused-import warning on `basename` if not used above.
340
+ void basename;
341
+ //# sourceMappingURL=emit-typeorm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-typeorm.js","sourceRoot":"","sources":["../../../src/commands/map/emit-typeorm.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,23 @@
1
1
  import type { CodeMap } from "./scan.js";
2
2
  export { emitTokensCatalog } from "./emit-tokens.js";
3
+ export { buildEntitiesArtifact } from "./emit-typeorm.js";
4
+ /**
5
+ * 0.19.0+ (slowcook#36) — TypeORM entity-graph emitter. Mirrors
6
+ * `emitSchemaDiagram`'s shape for the (different) Supabase-migration
7
+ * source. Skipped silently when no `*.entity.ts` files with `@Entity(`
8
+ * decorators are found — not every consumer uses TypeORM.
9
+ *
10
+ * Output: `.brewing/diagrams/entities.md` (Mermaid ERD + per-entity
11
+ * summary + agent-facing conventions header). Tracked in git by
12
+ * default per the updated init gitignore template (slowcook#38).
13
+ */
14
+ export declare function emitEntitiesDiagram(repoRoot: string): {
15
+ written: boolean;
16
+ entityCount?: number;
17
+ relationCount?: number;
18
+ fileCount?: number;
19
+ skippedReason?: string;
20
+ };
3
21
  export declare function map(argv: string[], cliVersion: string): Promise<void>;
4
22
  export declare function writeFreshMap(repoRoot: string, outJson: string, outMd: string, fresh: CodeMap): void;
5
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/map/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAuFrD,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6E3E;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,GACb,IAAI,CAMN;AAWD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACnD,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAuBA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/map/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAeA;AAuFD,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6E3E;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,GACb,IAAI,CAMN;AAWD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACnD,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAuBA"}
@@ -4,7 +4,35 @@ import { generateMap } from "./scan.js";
4
4
  import { renderJson, renderMarkdown, mapsEqual, CODE_MAP_JSON_PATH, CODE_MAP_MD_PATH, } from "./render.js";
5
5
  import { ddlToMermaidErd } from "../refine/mermaid.js";
6
6
  import { emitTokensCatalog } from "./emit-tokens.js";
7
+ import { buildEntitiesArtifact } from "./emit-typeorm.js";
7
8
  export { emitTokensCatalog } from "./emit-tokens.js";
9
+ export { buildEntitiesArtifact } from "./emit-typeorm.js";
10
+ /**
11
+ * 0.19.0+ (slowcook#36) — TypeORM entity-graph emitter. Mirrors
12
+ * `emitSchemaDiagram`'s shape for the (different) Supabase-migration
13
+ * source. Skipped silently when no `*.entity.ts` files with `@Entity(`
14
+ * decorators are found — not every consumer uses TypeORM.
15
+ *
16
+ * Output: `.brewing/diagrams/entities.md` (Mermaid ERD + per-entity
17
+ * summary + agent-facing conventions header). Tracked in git by
18
+ * default per the updated init gitignore template (slowcook#38).
19
+ */
20
+ export function emitEntitiesDiagram(repoRoot) {
21
+ const r = buildEntitiesArtifact(repoRoot);
22
+ if (!r.written || !r.body) {
23
+ return { written: false, skippedReason: r.skippedReason };
24
+ }
25
+ const outDir = join(repoRoot, ".brewing/diagrams");
26
+ mkdirSync(outDir, { recursive: true });
27
+ const outPath = join(outDir, "entities.md");
28
+ writeFileSync(outPath, r.body, "utf8");
29
+ return {
30
+ written: true,
31
+ entityCount: r.entityCount,
32
+ relationCount: r.relationCount,
33
+ fileCount: r.fileCount,
34
+ };
35
+ }
8
36
  function parseArgs(argv) {
9
37
  const args = {
10
38
  subcommand: "generate",